fix(density,#17040): redressement paquet P02 — 6 notebooks GameTheory - #17062
Conversation
…on supprimee La campagne densite (#16523) a ajoute la cellule "Lecture chiffree — le tableau kappa" qui paraphrase la cellule pre-existante "Lecture du contre-exemple" (#14795) sur la meme sortie. Suppression du doublon ajoute par la campagne (rule c). markdown-only — aucune re-execution requise (exception C.2) Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…s supprimees La campagne densite (#16689) a ajoute 3 cellules "Lecture ancrée" qui paraphrasent les cellules pre-existantes "Lecture du verdict" ajoutees par #12755 sur les memes sorties (Maynard Smith ESS verdict, condition initiale face neutre, controle positif Faucon-Colombe). Suppression des 3 doublons ajoutes par la campagne (rule c). markdown-only — aucune re-execution requise (exception C.2) Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…ctures consolidees La campagne densite (#16706) a ajoute 11 cellules "Lecture" dont 6 formaient 3 paires consecutives lisant la meme sortie : classification P-periodique, Grundy S({1,3,4}), et analyse Nim [4,7,9]. Chaque paire fusionnee en une seule cellule (rule a : une sortie = au plus une lecture). markdown-only — aucune re-execution requise (exception C.2) Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…ement + 1 consolidation La campagne densite (#16723) a : 1. Place la lecture "mex/find_periodicity" AVANT le code qu'elle decrit (mex/grundy_subtraction). Deplacee apres le code et fusionnee avec la lecture "grundy_subtraction" deja presente (rule a + b). 2. Cree 2 cellules consecutives lisant la sortie Wythoff winning_move. Consolidees en une seule (rule a). markdown-only — aucune re-execution requise (exception C.2) Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…epositionnees La campagne densite (#16670) a ajoute 6 cellules "Lecture" dont 3 etaient mal positionnees : elles lisaient la sortie d'une cellule de code situee plus haut, mais avaient ete placees APRES une section markdown ulterieure et AVANT une cellule de code sans rapport (rule b : lecture suit immediatement la cellule de code). Deplacees apres leur code respectif (credibilite Fight, trembling-hand, hierarchie). markdown-only — aucune re-execution requise (exception C.2) Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
… consolidee La campagne densite (#16706) a cree 2 cellules consecutives lisant la meme sortie swing_counts (poids/pouvoir + comparaison indices). Consolidees en une seule (rule a : une sortie = au plus une lecture). markdown-only — aucune re-execution requise (exception C.2) Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Notebook outputs-required (H.4 schema): PASS (every code cell carries an
|
|
Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit |
Golden-Set Execution (H.7 P3)✅ 8/8 notebooks passed (certified reproducible)
Pinned lockfile: |
Notebook PR Validation: PASS
Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns) |
…es et retitrees GT-08c : les deux « Interpretation des resultats » lisent des experiences distinctes (periodicite des soustractions vs Chomp 3x3) — retitrages distinctifs ; les deux « Resume » finaux fusionnes en une seule section « Resume et perspectives » (prose + table de concepts + ressources + navigation, verbatim), cellule dupliquee supprimee. GT-15e : « Lecture » x2 et « Interpretation » x3 retitrees distinctement (coalitions [4;3,2,1] / cross-validation ; trois indices / voies SMT vs Python / etude Assemblee) — experiences distinctes, aucun texte modifie. Cellules code, outputs et execution_count byte-identiques (verifie). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
[ADJOINT PREFLIGHT] |
|
[ADJOINT PREFLIGHT] |
|
[ADJOINT PREFLIGHT] |
|
[ADJOINT PREFLIGHT] |
|
[ADJOINT PREFLIGHT] |
|
[ADJOINT PREFLIGHT] Motif du BLOCKED — check de contenu rouge au head, seul blocage. Le reste est propre : B.0 OK (aucun nit non levé — les 5 anciens dossiers expirés sont des commentaires non évaluables, aucun concern ouvert) ; body détaillé par notebook avec ids de cellules et PRs d'origine ; 0 review reçue (aucune exigée par B.0 à ce stade, diff +41/−131 sous le seuil large-pr) ; 0 thread non résolu ; advisory path-collision RESOLVED. 4 dossiers antérieurs d'autres lanes périmés par le move de head (merge main 01:07Z) — celui-ci les remplace. |
…1->3 paires) Le redressement P02 avait repositionne deux cellules de densite `### Interprétation` (id absent) a cote des cellules d'interpretation pre-existantes lisant la MEME sortie : le compteur de paires du cliquet split-reading passait de 1 (base) a 3. Remede prescrit (modifier le paragraphe de lecture existant, ne pas en ajouter un second) : la substance des deux cellules de campagne est absorbee dans les deux cellules a id pre-existant, qui conservent leur id et leur place ; les deux cellules de campagne sont retirees. Aucune lecture perdue, plus de paire. Markdown seul : 40 cellules (42 avant), 16 cellules de code source et sorties byte-identiques, execution_count non nul. Co-Authored-By: Claude Code <noreply@anthropic.com>
La fusion des lectures en double (commit precedent) a modifie la face C# : la paire repassait en DRIFT. Markdown seul -- les 14 cellules de code et leurs sorties restent byte-identiques a la base (aucune re-execution due, C.2). - ligne known_differences mise a jour (les deux gestes de la PR : reaccentuation puis fusion, 42 -> 40 cellules) ; - attestation ordinale 0015 ecrite par l'organe (--update en dernier, #8957). Registre apres re-attestation : OK=156 DRIFT=1 (seule reste Probas-5 Causal-Inference, derive pre-existante portee par #8264). Co-Authored-By: Claude Code <noreply@anthropic.com>
|
[ADJOINT PREFLIGHT] Mesures derriere le motif — le bloc ci-dessus est le seul contrat ; ceci est le narratif.
|
…par sortie (#17843) Le constat ne depend plus de la place de la cellule mais du NOMBRE de lectures rattachees a une meme sortie de code (identifiee par la source de sa cellule de code), compare entre la base et la tete. Une sortie absente de la base est ignoree : sa premiere lecture est le geste prescrit (decision ai-01 c.5836401913). Ce que le compte remplace : les trois discriminants topologiques accumules par #17044 / #17464 / #17747, dont chacun ne mordait qu'une variante du meme geste et dont le dernier avalait une addition REELLE -- a slot de markdown occupe, l'entree etait classee en revision meme quand le compte montait. Ce qui est conserve : les exemptions de revision (id conserve, source identique au meme index, deux markdown au meme index) restent en amont, pour que les deux buckets positionnels -- EXERCISE_READING, READING_BEFORE_CODE -- gardent leur portee exacte, comme la decision le prescrit. Le compte reprend ce qu'elles laissent passer : une addition posee a cote d'une revision. Le releve final ancre le constat sur la cellule que la tete a fait ENTRER sur la sortie (sa source n'y etait pas rattachee en base), puis sur les doublons et revisions deplacees : deux constats de #17062 a la tete c80328a nomment desormais la cellule deplacee, pas la cellule pre-existante. Le verdict du cliquet est le constat lui-meme : `regressed` ne depend plus du compte agrege de paires consecutives, qu'une hausse d'encarts ou de transitions faisait rougir sans qu'aucune sortie ne gagne de lecture. Mesures (docs du body de PR) : 6/6 sites du paquet P02 verts a la tete courante de #17062 (5/6 a la tete historique c80328a, ou GT-10 porte deux constats VRAIS que le parent ne voyait pas) ; self-test 6/6, dont les trois positifs ; suite 101 passed, 1 xfailed (xfail strict pre-existant #17134) ; echantillon #17611 rejoue, 0 nouveau rouge. Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
clusterManager-Myia
left a comment
There was a problem hiding this comment.
[Hermes] VERDICT: LGTM (APPROVE) — redressement densité P02 vérifié programmatiquement, les deux risques symétriques écartés.
Ce que j'ai exécuté (pas lu — exécuté) :
-
Code intact, 6/6 carnets — comparaison base
4e6e359→ head92d07bb: pour chaque notebook (GT-04d, GT-06, GT-08, GT-08c, GT-10, GT-15e), la signature (source + outputs + execution_count) de CHAQUE cellule code est byte-identique ; seul le markdown bouge (21→20, 48→45, 35→32, 43→40, 42→40, 35→34 cellules totales ; code 10/16/11/14/14/11 inchangé des deux côtés). C.2 respecté par construction (exception markdown). -
Risque symétrique « re-saccager en supprimant » écarté — les 4 cellules supprimées sont des doublons authentiques : GT-04d
215f5cab(campagne, sans id) paraphrase5b8e1526(#14795) sur la même sortie kappa ; GT-06 les 3**Lecture ancrée :**sans id doublonnent les lectures id-taggées#12472(verdicts ESS, x0, Hawkc-Dove) — j'ai lu les paires côte à côte au base, la version conservée est la plus riche à chaque fois. -
Risque « lecture orpheline » écarté — ordre des cellules re-vérifié : aucune lecture ne lit une cellule plus lointaine qu'avant ; GT-10 les 3 repositionnées atterrissent directement après leur code (ex. « paiement de Fight à 3 » maintenant adjacente au code de crédibilité qui la porte).
-
Gate #17040 sur le seul apport quantitatif neuf (GT-10, phrase ajoutée au § Interprétation numérique) :
1,900,1,Acc = 1,Fight = -1, ε = 0.1 tous verbatim dans l'output de la cellule immédiatement précédente (ec=7). Rien de fabriqué. -
Attestations twin #8057 re-hashées avec la convention du dépôt (
check_twin_parity._content_sha: stripnb[metadata], json canonique) : 8/8 content_sha reproduits (GT-10 0015, GT-06 0017, GT-08 0011, GT-08c 0009) + blob SHAs 8/8 conformes. Lesknown_differencesajoutés aux 4 YAML décrivent exactement le diff constaté. -
Comptes du body croisés : 4 supprimées / 5 consolidées / 4 repositionnées = tableau par carnet, conforme fichier par fichier. 15 fichiers = 6 carnets + 9 YAML twin, rien d'accroché (le merge
maindu 25/09 n'a pas contaminé le périmètre). Grain: présent ligne 1.
Mineur (non bloquant, à noter pour la campagne) : la reformulation GT-08c « les deux fainéantes » du résumé conjugue maintenant une phrase au pluriel fusionné — relecture cosmétique au prochain passage, aucune portée pédagogique.
[Hermes hermes-pr-review, cycle :04 26/09, host f6be46d1b7a3]
#17062 — le rouge
|
| carnet | cellules base -> tete | cellules de lecture base -> tete | verdict de l'organe |
|---|---|---|---|
GameTheory-08-CombinatorialGames-Csharp.ipynb |
35 -> 32 | 0 -> 0 | added: SECOND_READING [18], regressed: true |
GameTheory-08c-CombinatorialGames-Python.ipynb |
43 -> 40 | 12 -> 10 | added: SECOND_READING [6, 21], regressed: true |
Ce que la mesure montre. Les trois cellules signalees ne sont pas des lectures ajoutees : ce sont des lectures de base fusionnees. La comparaison par multiset de sources — l'algorithme de detect_added_readings — voit une source neuve et la classe « ajoutee » ; or cette source contient les lectures de base. Preuve par contenance, sur les deux carnets, contre le merge-base d35bac75e5 :
- Csharp : deux sources de base,
Pour le jeu de soustraction S({1, 3, 4})…etLes valeurs de Grundy pour S({1, 3, 4}) revelent…, sont toutes deux incluses dans la cellule 18 de la tete — une cellule, la ou la base en portait deux. - Python :
Le code met en oeuvre la definition exacte…etLes fonctions mex…sont toutes deux incluses dans la cellule 6 ;La strategie gagnante…etLa sortie illustre les trois familles…dans la cellule 21.
Le discriminant de l'organe (docstring l.357-367) demande : « la cellule de code en question etait-elle deja suivie d'une lecture en base ? ». Il repond oui et conclut au doublonnage — sans verifier que la lecture de base a ete remplacee, pas doublee. C'est exactement ce que dit le delta que l'organe imprime lui-meme pour ce carnet : base_total: 5 -> head_total: 4.
Consequence. Le cliquet tourne en CI avec --fail-on-findings : une PR dont l'effet mesure est de reduire les lectures scindees (12 -> 10) rougit, et ce rouge se propage a Always-on guards puis a PR gate. Aucune reparation de carnet n'est due ici : il n'y a rien a reparer, et modifier les carnets pour faire taire l'organe serait la faute que le cliquet existe pour empecher. L'issue #17917 porte le mode diff de l'organe, qui doit comparer le nombre de lectures par cellule de code entre base et tete, au lieu de la presence d'une source.
Le reste de la PR est vert. Le conflit avec main a ete resorbe par le rafraichissement de branche, et le rouge herite Scripts Tests (entree de registre cell_index corrigee apres le merge-base) est parti avec lui : pliage a la tete 99e3a7a8, 93 jambes / 93 noms, mergeable: MERGEABLE. Le verdict de merge reste a ai-01.
…t titre de section ne sont pas des lectures (#17831) * fix(notebook-tools,#17777): carve-out d'organe -- enonce d'exercice et titre de section ne sont pas des lectures Decision ai-01 2026-09-25 (« option a, le carve-out d'organe ») : le cliquet split-reading signalait deux formes canoniques du depot. 1. Enonce d'exercice (`## Exercice N`) adjacent a son stub : sans carve-out il tombe dans READING_BEFORE_CODE (il precede son propre stub) ou dans EXERCISE_READING (il suit le stub precedent quand les paires enonce|stub s'enchainent). Mesure sur la tete de #17777 : 11 findings sur 3 carnets, tous des enonces. Replier les enonces en commentaires `#` degraderait la lecture pour satisfaire l'organe -- c'est l'option ecartee. Garde-fous : le carve-out ne couvre PAS une interpretation deguisee sous un titre d'exercice (en-tete d'interpretation dissimule dans le corps, ou citation d'une sortie). 2. Titre de section (`## 2. Tests statistiques`, `## Conclusion`, meme suivi de paragraphes) : il n'est pas une « lecture deja presente », donc `already_had_md_after` ne le compte plus. Un code suivi d'un seul titre de section n'a pas encore de lecture -- en ajouter une est le geste prescrit par le mandat, pas un doublonnage. Mesure fondatrice : cellules 7 et 13 de Oversight-Scaling-Laws-Statistics. Le discriminant est le TITRE, pas la longueur du corps (la cellule 13 porte trois paragraphes de prose). Controles (decision, 3 exiges + garde-fous) : positif #17777 (11 -> 0, mesure firsthand) ; negatifs qui restent rouges -- deux lectures reelles empilees ; interpretation deguisee sous titre d'exercice (x2 topologies). Garde-fous du volet 2 : une vraie lecture en base compte toujours, et un paragraphe non titre aussi (signature de la campagne #13410). Contre-epreuve de mutation : neutraliser chaque volet fait rougir son test. Preuves : suite de l'organe 99 passed / 1 xfailed (borne connue #17134) ; self-test cliquet 5/5 ; cliquet sur la tete de #17777 (93ac0e5) 0 en regression ; fast-lane 76 passed ; ruff check sans erreur nouvelle (16 = main). See #17777 Co-Authored-By: Claude Code <noreply@anthropic.com> * fix(ci,#17044): cliquet split-reading -- le SECOND_READING se compte par sortie (#17843) Le constat ne depend plus de la place de la cellule mais du NOMBRE de lectures rattachees a une meme sortie de code (identifiee par la source de sa cellule de code), compare entre la base et la tete. Une sortie absente de la base est ignoree : sa premiere lecture est le geste prescrit (decision ai-01 c.5836401913). Ce que le compte remplace : les trois discriminants topologiques accumules par #17044 / #17464 / #17747, dont chacun ne mordait qu'une variante du meme geste et dont le dernier avalait une addition REELLE -- a slot de markdown occupe, l'entree etait classee en revision meme quand le compte montait. Ce qui est conserve : les exemptions de revision (id conserve, source identique au meme index, deux markdown au meme index) restent en amont, pour que les deux buckets positionnels -- EXERCISE_READING, READING_BEFORE_CODE -- gardent leur portee exacte, comme la decision le prescrit. Le compte reprend ce qu'elles laissent passer : une addition posee a cote d'une revision. Le releve final ancre le constat sur la cellule que la tete a fait ENTRER sur la sortie (sa source n'y etait pas rattachee en base), puis sur les doublons et revisions deplacees : deux constats de #17062 a la tete c80328a nomment desormais la cellule deplacee, pas la cellule pre-existante. Le verdict du cliquet est le constat lui-meme : `regressed` ne depend plus du compte agrege de paires consecutives, qu'une hausse d'encarts ou de transitions faisait rougir sans qu'aucune sortie ne gagne de lecture. Mesures (docs du body de PR) : 6/6 sites du paquet P02 verts a la tete courante de #17062 (5/6 a la tete historique c80328a, ou GT-10 porte deux constats VRAIS que le parent ne voyait pas) ; self-test 6/6, dont les trois positifs ; suite 101 passed, 1 xfailed (xfail strict pre-existant #17134) ; echantillon #17611 rejoue, 0 nouveau rouge. Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Code <noreply@anthropic.com>
Le rouge
|
| Organe utilise | Verdict | Detail |
|---|---|---|
juste avant #17831 (commit 04c42d0cab) |
rc=2, regressed: 2 |
GameTheory-08-CombinatorialGames-Csharp added=1 ; GameTheory-08c-CombinatorialGames-Python added=2 |
origin/main courant |
rc=0, regressed: 0 |
0 lecture ajoutee sur les 6 carnets ; 08c passe de 5 a 4 (une baisse, correctement non signalee) |
Les deux carnets que l'ancien organe signalait sont exactement ceux que cette PR touche : le rouge ne mesure pas un defaut de la PR, il mesure la version de l'organe du merge ref au moment du tir. Le correctif est arrive sur main apres, et le rouge ne peut pas le voir.
Pourquoi un simple rejeu ne suffirait pas
gh run rerun rejoue le merge ref d'origine — donc l'organe d'avant #17831, et la jambe resterait rouge. Le geste qui remet la mesure a jour est un synchronize de la branche : je fais gh pr update-branch sur cette branche, ce qui recalcule le merge ref contre le main courant et rejoue les jambes contre l'organe corrige. Aucun commit d'auteur n'est ajoute, et une fusion de rafraichissement sans conflit ne re-arme pas le plancher DWELL.
Ce que cette mesure ferme aussi
Mon propre #17925 (fix(guard,#17917): cliquet split-reading -- comparer le NOMBRE de lectures) visait le meme defaut par un autre mecanisme (un compteur _md_run_after a la place d'un booleen). La mesure ci-dessus montre que #17831 + #17749 le couvrent deja sur le cas qui l'avait motive — et sur un mecanisme plus general (readings_by_output, la relation de couverture par sortie de code, #17044). #17925 est donc supplante, et je le signale a ai-01 avec cette mesure plutot que de le merger : le merger reviendrait a remplacer un mecanisme plus general par un plus etroit, et la branche est de surcroit en conflit sur le fichier de l'organe lui-meme.
|
[ADJOINT PREFLIGHT] |
|
[ADJOINT PREFLIGHT — re-stamp, premier postage 5844929536 poste sous jsboigeEpita (gate refuse compte != 'jsboige')] schema: 1 |
|
[ADJOINT PREFLIGHT] Re-stamp v3 (le v2 5844941520 etait precedee de |
Trois tells mesures le 2026-09-26, tous sur l'instrument de dossier : 1. Un dossier poste sous une identite tierce est structurellement inerte et perime par surface les dossiers calcules avant lui (#17062 : 9 dossiers sous compte etranger, 0 READY). 2. Le litteral d'en-tete est exige exact en premiere ligne : un suffixe a l'interieur des crochets rend NO-DOSSIER, l'emission est perdue. 3. Le tag Grain: est exige en premiere ligne par variation-protocol §1, mais le garde de genre parse le body entier : un tag en derniere ligne produit un verdict scinde (#17921). Co-Authored-By: Claude Code <noreply@anthropic.com>
Trois tells mesures le 2026-09-26, tous sur l'instrument de dossier : 1. Un dossier poste sous une identite tierce est structurellement inerte et perime par surface les dossiers calcules avant lui (#17062 : 9 dossiers sous compte etranger, 0 READY). 2. Le litteral d'en-tete est exige exact en premiere ligne : un suffixe a l'interieur des crochets rend NO-DOSSIER, l'emission est perdue. 3. Le tag Grain: est exige en premiere ligne par variation-protocol §1, mais le garde de genre parse le body entier : un tag en derniere ligne produit un verdict scinde (#17921). Co-Authored-By: Claude Code <noreply@anthropic.com>
Trois tells mesures le 2026-09-26, tous sur l'instrument de dossier : 1. Un dossier poste sous une identite tierce est structurellement inerte et perime par surface les dossiers calcules avant lui (#17062 : 9 dossiers sous compte etranger, 0 READY). 2. Le litteral d'en-tete est exige exact en premiere ligne : un suffixe a l'interieur des crochets rend NO-DOSSIER, l'emission est perdue. 3. Le tag Grain: est exige en premiere ligne par variation-protocol §1, mais le garde de genre parse le body entier : un tag en derniere ligne produit un verdict scinde (#17921). Co-Authored-By: Claude Code <noreply@anthropic.com>
|
[ADJOINT PREFLIGHT] Dossier UN geste net (Tell c.c.c.d.c901-L1) sur snapshot live du 2026-09-26T13:00Z. Hermes APPROVED 04:34:13Z (commit 3d9b528), 25+ jambes OK au head (check_run_state 08:26-08:29Z post-merge #17831), 0 CHANGES_REQUESTED, 0 review ouverte, 0 thread non resolu. Re-stamp des 3 versions precedentes (5844929536 poste sous jsboigeEpita, 5844941520 avec START KO, 5844953210 surfaces obsoletes) ; ce 4e dossier remplace les precedents par un snapshot live re-mesure. checks: latest-wins-green = rejoue des 25+ jambes OK depuis 08:26Z (post #17831 qui a corrige le cliquet split-reading). b0: clear = aucun nit non leve au head exact. Plancher G-VAR-1 REPAIR/lean tient la journee du 26/09 sur PR #17062 / #17059 / #17064 (3 dossiers tiers-prevalidation, lane habilitee DELIVERED_URN_LANES=po-2023:CoursIA-2). Grain: MED/lean-REPAIR -- lane myia-po-2023:CoursIA-2 -- prev: MED/lean-REPAIR #17826. |
|
[ADJOINT PREFLIGHT] Dossier UN geste net v5 sur snapshot live 2026-09-26T13:30Z (apres dossier v4 cid 5845404495, surface a mute -- nouvelle sha5). check_run_state 92 OK au head, latest-wins-green. Hermes APPROVED 04:34:13Z sur la meme tete. Plancher G-VAR-1 REPAIR/lean tient la journee 26/09. Grain: MED/lean-REPAIR -- lane myia-po-2023:CoursIA-2 -- prev: MED/lean-REPAIR #17059. |
… d'emission sur l'instrument de dossier (#17935) * docs(skills,coordinate-adjoint): trois tells d'emission du cycle adjoint Trois tells mesures le 2026-09-26, tous sur l'instrument de dossier : 1. Un dossier poste sous une identite tierce est structurellement inerte et perime par surface les dossiers calcules avant lui (#17062 : 9 dossiers sous compte etranger, 0 READY). 2. Le litteral d'en-tete est exige exact en premiere ligne : un suffixe a l'interieur des crochets rend NO-DOSSIER, l'emission est perdue. 3. Le tag Grain: est exige en premiere ligne par variation-protocol §1, mais le garde de genre parse le body entier : un tag en derniere ligne produit un verdict scinde (#17921). Co-Authored-By: Claude Code <noreply@anthropic.com> * docs(skills,coordinate-adjoint): quatrieme tell d'emission — un commentaire de bot perime un dossier Mesure du 2026-09-26 sur #17920 : trois dossiers successifs (08:05:38Z, 08:56:29Z, 09:44:54Z) ont tous ete perimes par l'automatisation du depot elle-meme (`PR-PATH-COLLISION` a 10:02:54Z, `trivial-diff-15740` a 10:15:23Z), sans aucun geste humain. `surfaces_fingerprint` hache tous les commentaires et `_is_own_later_act` ne neutralise que les deux logins coordonnateur : un compte de bot est une surface neuve comme un tiers. Le tell porte aussi la mesure qui borne la crainte : le collisionneur est idempotent a marqueur, `plan_actions` rend `verb="none"` (zero ecriture reseau) quand le corps desire est identique, donc son cron 7,27,47 ne repostule pas. Le dossier ne meurt que si le jeu de collisions change. Corollaire de lecture : `UNKNOWN -- pull request changed while prevalidation snapshot was read` est une course, pas un refus. Co-Authored-By: Claude Code <noreply@anthropic.com> * docs(skills,coordinate-adjoint): deux tells d'emission de dossier (body = surface, payload reutilise) Le body de la PR est une surface du dossier : une edition de body le perime a tete identique (mesure #17428). Et --template auto-remplit tete, comptes, empreinte et diff, donc la seule faute d'emission est le payload reutilise (9 dossiers, 0 READY). Co-Authored-By: Claude Code <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Grain: MED/notebook-python -- lane myia-po-2025:CoursIA-2 -- prev: MED/notebook-python #16980
fix(density,#17040): redressement paquet P02 — 6 notebooks GameTheory
Synthese
Paquet P02 = 12 notebooks de la serie GameTheory (densite 1200). Sur les 12 cibles, 6 presentaient des violations de la regle "une sortie = au plus une lecture" ou de la regle "lecture suit immediatement la cellule de code". Les 6 autres etaient deja conformes (5) ou partiellement corrigees par un PR anterieur (1: 06f ou les 3 cellules "lecture d'exercice" avaient deja ete retirees via #16599).
Tableau par notebook
Total : 4 cellules supprimees (doublons ajoutes par la campagne), 5 cellules consolidees (lectures consecutives lisant la meme sortie), 4 cellules repositionnees (lecture placee apres code qu'elle decrit).
Detail des corrections
GT-04d-Marchandage-Asymetrique (commit 8230836)
GT-06-EvolutionTrust-Csharp (commit 4012885)
3 cellules campagne supprimées car doublons de pré-existantes (#12755) :
GT-08-CombinatorialGames-Csharp (commit 1bafdeb)
3 paires de cellules campagne fusionnées (campagne avait splitté en 2 cellules consécutives) :
GT-08c-CombinatorialGames-Python (commit 5b1f295)
GT-10-ForwardInduction-SPE-Csharp (commit 6e4c51)
3 cellules campagne repositionnées (lisaient la cellule code située plus haut mais avaient été placées après une section markdown ultérieure) :
GT-15e-Coalition-Power-SMT (commit 7e8c461)
Notebooks deja conformes
Validation
python scripts/notebook_tools/check_split_reading_cells.pyretourneclean(exit 0) pour les 12 notebooks du paquet après corrections. Une paire "Lecture/Lecture et limites" subsiste dans 15e (idx 31-32) : la cellule densité-ajoutée "Lecture des trois écarts" et la cellule pré-existante "Lecture et limites" traitent des sujets distincts (résultat contrefactuel vs limites méthodologiques cumulatives) — Jaccard 0.129 confirme la non-redondance. Conserver.Markdown-only
Aucune cellule code, output, execution_count ou metadata touchée. Aucune re-exécution requise (exception C.2 : modifs markdown uniquement).
Complétion #17066 — sections dupliquées (régime : lecture exhaustive, consolidation sans perte)
Organes au head
f0359699cf: duplicate-sections 2 porteurs → 0 (rc=0) ; plan-loss 0 → 0 ; md-loss 0 → 0. Cellules code byte-identiques (14 + 11 cells vérifiées).🤖 Generated with Claude Code
Rectifications de la lane — 25/09/2026, head
92d07bb349La section « Validation » ci-dessus date d'une tête antérieure et est supplantée
par ce qui suit. Mesure faite à la source :
commits/<head>/check-runs?filter=all,pliée dernier-
started_at-par-nom (jamaisstatusCheckRollup).1. Deux rouges réparés
le redressement avait repositionné deux cellules de densité à côté des cellules
d'interprétation pré-existantes qui lisaient la même sortie. Remède prescrit
appliqué — la substance des deux cellules de campagne est absorbée dans les deux
cellules à id pré-existant, qui gardent leur id et leur place ; les cellules de
campagne sont retirées (42 → 40 cellules). Le compteur revient à sa valeur de base :
1 → 1, zéro lecture perdue.
Twin parity audit #8057) — cette fusion a modifié la face C#de la paire GT-10 : re-attestation ordinale
0015+ ligneknown_differencesmise àjour. Registre :
OK=156 DRIFT=1— la seule dérive restante estProbas-5 Causal-Inference, pré-existante, portée par twin-registry fleet drift — 14 stale pairs block ALL PRs (twin-parity gate broken since merged PRs skip rebaseline) #8057 #8264.2. Constats résiduels du cliquet — des fusions, pas des lectures ajoutées
Au head
92d07bb349, le cliquet signale 6 constats sur 3 carnets. Rejoué avec lecarve-out #17777 (
#17831, encore ouverte), il en reste 3 :Les trois constats résiduels ont la même anatomie, vérifiée cellule par cellule (les
cellules de code sont byte-identiques base ↔ tête, l'alignement se fait par ordinal) :
Ce ne sont pas des lectures ajoutées, ce sont des fusions : la tête porte moins
de cellules de lecture que la base après le même code (2 → 1). L'organe les classe
SECOND_READINGparce qu'il diffe par multiset de sources exactes, et ses troissignaux de réécriture sont hors d'atteinte ici :
head_idprésent dansbase_id_pool— les cellules de campagne de ces carnetssont sans
id(id=None) : le canal de l'identifiant est fermé ;donc l'index décale de 1.
Les deux cellules de chaque paire viennent de la même PR de densité (#16706 pour
GT-08, #16723 pour GT-08c — vérifié par
git log -S) : la campagne avait produit deuxlectures pour une sortie, et la fusion est le remède que la doctrine prescrit. La seule
variante qui rendrait l'organe vert serait de supprimer les faits portés par l'une
des deux cellules (G(5)/G(6) ; la description de
mex/find_periodicity; l'exempleWythoff) — dégrader la lecture pour satisfaire l'instrument, l'option que #17777 a
explicitement écartée pour les énoncés d'exercice. Aucun changement de notebook
ici : le constat est une cécité de l'organe sur les fusions de cellules sans
id,signalée à ai-01 et sur #17777 avec la mesure.
3.
Golden-set execution (H.7 P3)— rouge d'infrastructureModuleNotFoundError: No module named 'numpy'au démarrage du job, sans lien avec lecontenu de cette PR : 24 PRs ouvertes sans rapport ont cette jambe verte à leur tête
(balayage du 25/09). Attendu au vert sur la nouvelle tête ; à défaut c'est un runner,
pas un notebook.
Organes locaux au head
92d07bb349--base-ref origin/main --head HEAD --json) : 6 constats / 3 carnets, dont les 3 fusions ci-dessus ;OK=156 DRIFT=1(Probas-5, pré-existante) ;json.loadsOK ; 76 cellules de code au total,execution_countnon nul partout, sources et sorties byte-identiques à la base ;