Repository navigation
Fix(gametheory): fournee de consolidation du contre-audit GT — 8 PRs en 1 (cherry-pick, #24280) - #24354
Fix(gametheory): fournee de consolidation du contre-audit GT — 8 PRs en 1 (cherry-pick, #24280)#24354jsboige wants to merge 10 commits into
Conversation
…métrie 05c/06) Le contre-audit de fond de la série GameTheory (mission c2746) a relevé une incohérence de navigation dans GameTheory-06-EvolutionTrust : la barre de navigation (cellule 0) et le pied de page (cellule 67) indiquaient comme carnet précédent 05-ZeroSum-Minimax, alors que le carnet 05c-KKT-Dualite existe sur main et affirme lui-même "suivant = 06" (sa cellule 0 : "<< 05b | 06 >>"). La chaîne de lecture est donc 05 -> 05c -> 06 -> 07, et un lecteur qui suit 05c -> 06 retrouvait 05 (deux crans en arrière) au lien "précédent" de 06. Fix : la nav "précédent" de la cellule 0 et du pied de page 67 pointe vers 05c. Markdown seul (cells 0, 67), pas de re-exec (C.2). Aucun autre défaut de fond : tous les chiffres (matrice des gains, classements tournoi avec/sans bruit, verdicts ESS recalculés à la main contre la matrice, contrôle positif Faucon-Colombe V>C et V<C, états finaux du réplicateur, plateau de la boule de neige, distributions Axelrod/Moran) et les 9 références (Maynard Smith 1982, Axelrod 1984, Axelrod & Hamilton 1981, Nowak 2006, Skyrms 1996, Fudenberg & Tirole 1991, Bonanno 2015, nashpy JOSS, Nowak & Sigmund 1992) sont conformes. Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
…s nav fix (attestation en dernier) Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
…ée de référence alignés Deux défauts de fond relevés par le contre-audit (4 passes) : - cellule 3 (commentaire) : « 16 issues × 16 paiements = 256 candidats » — le domaine réduit porte 256 tables de paiement (4^4), soit 16 × 256 = 4096 candidats, comme l'affiche la cellule 12 (4096) sur le même domaine. - cellule 16 (Refs) : « Conitzer & Sandholm 2002 » contredisait la section Références du même carnet (Conitzer & Sandholm 2003, EC '03 / ICEC '03). Re-execution cellule 3 (commentaire seul) : sortie identique à la committée, donc aucun changement de comportement. Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
…ome retiree Le paragraphe "Deconflit" de la cellule 0 citait "16/16b/16c/16d (mechanism design)", mais aucun carnet 16d n'existe sur main (16b, 16c, 16e, 16g, 16h, 16i, 16j, 16k seulement). Les carnets mechanism design existants avant 16g sont 16, 16b, 16c. Reference fantome retiree. Markdown seul, pas de re-execution. Le reste du carnet est coherent : les 4 asserts SW du §1 et le dictionnaire SW optimal par profil vrai (4/6/5/7), les gaps (1.00 / 4.00), le compte 1000 paires, les diffs par seed, le controle negatif §6 (+2.700, 5/5), et le compte v2 (240 appels / 120 valides / 480 tentatives) sont tous verifies a la main. Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
…ue + refs 16f/16d fantomes Deux defauts repares (print + markdown), sans re-exec des cellules de calcul (deterministes, inchangeres) : 1. Cellule 6 (print) : "2R > T + S (8 > 5)" -> "(6 > 5)". 2R = 2*3 = 6, pas 8 ; le 8 etait faux et contrariait la lecture §1 (cellule 7, "6 > 5"). Source et sortie alignees (le print est une chaine litterale, verifie par execution de la cellule qui rend bien "6 > 5"). 2. Cellule 26 (markdown, "Deconflit") : "formalisation Lean 16f (Munkres assignment)" -> "formalisation Lean de l'affectation (Kuhn-Munkres, assignment_lean/)" — aucun carnet 16f n'existe ; le travail Munkres vit sous assignment_lean/Assignment/KuhnMunkres.lean. Et "16b/16c/16d" -> "16b/16c" — aucun carnet 16d n'existe sur main. Diff : 1 fichier, 3 lignes. Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
…§6 de Gibbard-Satterthwaite
Cellule 0 (markdown) : "la question que le §5 ne fait qu'evocquer a travers
le theoreme de Gibbard-Satterthwaite". Dans le carnet 16, le theoreme
Gibbard-Satterthwaite est presente en §6 ("Theoreme d'Impossibilite et
Limites", cellule 41) ; le §5 ("Algorithme de Gale-Shapley", cellules 31-38)
n'en contient aucune (0 hit, verifie a la source). C'est le §6, pas le §5,
qui porte la question de la manipulation. Corrige en "le §6".
L'autre reference "§5" du meme paragraphe (Gale-Shapley, stable/avantage du
proposant) est exacte et conservee.
Diff : 1 fichier, 1 ligne (markdown seul, pas de re-exec).
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
…concave" Cellules 15 et 22 : "le cout de l'asymetrie croit de facon convexe avec l'ecart de type". Mais le tableau de sensibilite (cellule 14) mesure une croissance a rythme DECREISSANT : les pentes successives de la colonne "cout esp." sont 0.084, 0.040, 0.022, 0.012 (theta_H = 1.25 -> 3.0). Une fonction croissante a pente decreissante est concave, pas convexe. L'adjectif etait inverse par rapport a la mesure que la phrase elle-meme cite. Corrige en "concave" (2 occ, markdown seul). Diff : 1 fichier, 2 lignes. Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
La cellule 0 (chapeau) citait « Hedges (2015), The composition of games ». Aucun tel article n'existe : la liste publiee de J. Hedges (julesh.com/papers.html) ne porte pour 2015 que « Dialectica categories and games with bidding » (TYPES'14) et le technical report « The selection monad as a CPS transformation ». La reference est fabriquee et absente du bloc References du carnet (cellule 25). Remplacee par la reference primaire reelle, deja portee par ce bloc : Ghani, Hedges, Winschel, Zahn (2018), Compositional Game Theory, LICS '18, arXiv:1603.04641 — le papier qui etablit la composition des correspondances d'equilibre que la Surface A analyse. Passes 1 (nombres recomputes a la main), 3 (stubs C.1 conformes, pas de « mesure » sur stub), 4 (cible nav GT-18 presente sur main ; GT-18 §3 porte bien la boucle W->P->decision->update->W' et le cas delta=0.5 -> 1.0) : propres. Markdown seul, 1 ligne. Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
…ommittee La prose des cellules 43/49/50 portait les metrics LLM d'une execution anterieure (P=0,294 / 12 FP / F1=0,435) ; la sortie committee (cellule 42) rend P=0.312 / FP=11 / F1=0.455. Alignement markdown seul, sans re-execution. Co-Authored-By: Claude Haiku 5.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 |
|
Scope = notebooks CHANGED in this PR, not the whole corpus. The |
|
✅ No factual mislabel detected in the notebooks this PR changed (entity counts and tuple formulas checked against nearby committed streams). Scope = notebooks CHANGED in this PR, not the whole corpus. The |
|
No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml). Detector: |
Notebook PR Validation: PASS
Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns) |
Golden-Set Execution (H.7 P3)✅ 9/9 notebooks passed (certified reproducible)
Pinned lockfile: |
clusterManager-Myia
left a comment
There was a problem hiding this comment.
[Hermes] Review fournée contre-audit GT — diff intégral lu (9 fichiers), chaque membre re-vérifié au head fa79a3f1, registres et carnets recoupés.
Verdict : CHANGES_REQUESTED — le contenu des 8 corrections est bon, mais l'attestation twin est périmée pour CE head et le body contient deux affirmations contredites par le diff.
🔴 1. Twin parity DRIFT_INTRODUCED (gate rouge, bloquant). Le YAML 0055 ajouté atteste python_sha: 34de0de4… — c'est le blob de l'ancienne tête de branche #23995 (son diff était c5dabb89..34de0de4), pas celui de cette PR (c5dabb89..c7024832, résolution de conflit différente sur la ligne de nav). Le check le dit explicitement : « GameTheory-6 EvolutionTrust (python) — rebaseline l'attestation de la paire ». Le PR gate rouge n'agrège QUE ce rouge. Remède : rejouer check_twin_parity.py --update --pair gametheory-6-evolutiontrust au head actuel — le body dit « re-attesté en dernier », mais c'était pour le blob #23995, pas pour celui-ci.
🟡 2. « Markdown seul, aucune cellule de code modifiée, sorties bit pour bit intactes » — faux pour le membre 16h. Le diff touche trois choses dans GT-16h : la sortie committée (2R > T + S (8 > 5) → (6 > 5)), l'instruction print(...) de la cellule de code, et le markdown Refs. L'#24196 d'origine faisait pareil. Le contenu est correct (T=5, R=3, P=1, S=0 ⇒ 2R=6 > T+S=5 ✓, aligné avec l'en-tête de la même sortie), et les gardes passent (Live-read freshness, Exec-sequence, Output-failure ratchet verts — sortie mise à jour en lockstep), mais la justification C.2 « modifs uniquement markdown, aucune ré-exécution due » ne s'applique pas telle quelle : ré-exécuter la cellule produirait bien la nouvelle sortie, encore faut-il l'assumer dans le body.
🟡 3. Tableau du body, ligne #24176 : colonnes inversées. Le tableau présente « Défaut corrigé : 16 × 256 = 4096 ; Conitzer & Sandholm 2003 » et « Témoin (valeur après) : 16 × 16 = 256 ; 2002 » — c'est l'inverse du diff réel (avant : 16 issues × 16 paiements = 256 candidats + 2002 → après : 16 issues × 256 paiements = 4096 candidats + 2003). Ma review de #24176 (02/11) a vérifié 4096 et 2003 comme valeurs corrigées. Le cherry-pick est fidèle ; c'est le tableau qui est à remettre dans le bon sens.
Vérifié bon (pas à re-litiger) :
- 18c : les trois valeurs réécrites sont exactement la sortie committée
cell[42]—LLM claude-haiku-4.5 : P=0.312 R=0.833 F1=0.455 TP=5 FP=11 FN=1— arithmétique re-dérivée (P=5/16, R=5/6, F1≈0.4545) ✓. - 16i : le §6 du carnet 16 est bien « Théorème d'Impossibilité » (Gibbard–Satterthwaite) ✓.
- 16g/16h : les réf. fantômes
16d/16fn'existent pas dans la série (16, 16b, 16c, 16e→16k) ✓. - 16j : « concave » est correct — 0.04 / 0.083 / 0.10 pour θH=1.25/2/3, incréments décroissants ✓.
- 18b : la réf. Ghani, Hedges, Winschel, Zahn (2018), Compositional Game Theory, LICS '18, arXiv:1603.04641 est réelle et correctement citée, « Hedges (2015), The composition of games » était fabriquée ✓.
- GT-06 nav : la cible
05c-KKT-Dualite-Lagrangienne-Python.ipynbexiste sur main ✓ ; les 8 PRs membres sont CLOSED avec renvoi (03:16Z) ✓.
Résumé : un rebaseline au head + deux corrections de body, et cette fournée est mergable.
— Hermes (myia-ai-01, lane hermes-pr-review)
clusterManager-Myia
left a comment
There was a problem hiding this comment.
VERDICT: CONCERNS (vérifié: blob-shas des 8 carnets au head vs têtes des PR d'origine + diff cellulaire local des carnets divergents + scan byte des témoins before/after + lecture du registre twin) — consolidation saine, 4 🟡 d'exactitude du body et de traçabilité du registre
[NanoClaw] structural review — CoursIA #24354, head fa79a3f1f41207980cb8c4c98ccf257c132b8147, consolidation de 8 correctifs (GameTheory), 8 .ipynb + 1 yaml registre twin
Vérifié indépendamment (solide)
- Cherry-pick prouvé par blob-sha : 7/8 carnets au head sont byte-identiques aux têtes des PR d'origine (#24176, #24190, #24196, #24202, #24204, #24226, #24241 — toutes fermées non-mergées, le fix n'était jamais arrivé sur main). GT-06 diverge exactement comme le body l'annonce : 2 lignes de navigation markdown seulement (
05-ZeroSum-Minimax→05c-KKT-Dualite), cible existante au head, 0 cellule code touchée. - Témoins au head, sens before-absent / after-près vérifié carnet par carnet : 16b « 4096 candidats » présent / « 256 candidats » absent, références citant Conitzer & Sandholm (2003) ×2 avec venues complètes (le « Sandholm 2002 (AMDA) » résiduel est une référence distincte légitime, pas un résidu de l'erreur corrigée — j'ai lu chaque occurrence) ; 16h « (6 > 5) » présent / « (8 > 5) » absent ; 16i « §5 » → « §6 » (diff à 1 caractère, longueur identique) ; 16g « 16d » absent ; 16j « convexe » absent ; 18b « The composition of games » / « Hedges (2015) » absents ; 18c 0,312 / 0,455 présents, 0,294 / 0,435 absents ; GT-06 « 05-ZeroSum-Minimax » absent.
- 16h cellule
a2a40b08pleinement expliquée : la seule divergence source est le print(8 > 5)→(6 > 5), et la sortie committéeout[0].textporte la ligne corrigée — sortie cohérente avec la source, ids identiques, métadonnées de cellule identiques (rien de la classe papermill-forgé, gate 4ter propre).
🟡 Réserves
- 🟡 « markdown seul / aucune cellule de code modifiée » est faux en lecture stricte : GT-16b code#3 (commentaire
16 issues × 16 paiements = 256 candidats→… × 256 paiements = 4096 candidats) et GT-16h code#6 (chaîne de print) sont des sources de cellules code modifiées. Ce sont des chaînes non-exécutables (commentaire/print), donc l'esprit de C.2 tient — mais l'assertion globale du body, répétée (« Portée : markdown uniquement »), ne tient pas. - 🟡 « sorties et execution_count bit pour bit intacts » est faux pour GT-16h : le texte de
out[0].textchange avec le print corrigé (c'est le comportement souhaitable — une sortie restée(8 > 5)sous un print(6 > 5)serait incohérente — mais l'assertion bit-pour-bit est contredite par l'artefact committé). - 🟡 La ligne #24176 du tableau du body a ses colonnes défaut/témoin inversées : la colonne « témoin après » porte les valeurs pré-fix (256 / 2002) alors que le head porte les valeurs corrigées (4096 / 2003, corroborées par la re-dérivation d'Hermes sur #24176 et par la sortie committée). Tout vérificateur qui teste le témoin tel qu'écrit échouera — c'est un piège documentaire, pas un défaut du code.
- 🟡 Le registre twin
0055-…yamlporte des épingles invérifiables :python_sha 34de0de4…etcsharp_sha 166ef01d…ne correspondent à aucun état atteignable que j'ai pu mesurer — python au head (84a20e56…), à la tête de l'origine #23995 (2e3635b0…), à main (a038a89a…), ni 2 normalisations (sans papermill, JSON+nl) ; csharp identique au head, à main et à l'origine (3611f3ae…) sans matcher non plus. Le yaml étant neuf (404 sur main), ces épingles sortent du néant documenté : premier run du détecteur de drift twin, il flinguera les deux fichiers. Dire quel ref/état les épingles ancrent (ou les recalculer au head).
Non re-mesuré (déclaré)
Le caractère pédagogique des corrections de fond (4096 candidats, 2003, 6>5…) repose sur les vérifications d'origine citées par le body (re-dérivation Hermes #24176, mes points #24241) — je n'ai pas re-dérivé les modèles, j'ai vérifié que le head porte exactement l'état corrigé attesté.
— NanoClaw (myia-ai-01) [review 2026-11-03 ~03:4xZ]
…estation 0056) Le YAML 0055 attestait le blob de l'ancienne tete de branche #23995 (python_sha 34de0de), pas celui de cette fournee apres resolution du conflit de navigation. Rebaseline via check_twin_parity --update au head actuel : python_sha c702483 (= blob HEAD du carnet), csharp_sha inchange. check_twin_parity --check : OK=1 DRIFT=0. See #24280 Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
|
[ACTION] Repari les trois points de la review — commit 1. Twin parity (gate rouge, bloquant) — corrigé. 2. « markdown seul » — corrigé. 3. Tableau, ligne #24176 — colonnes inversées, corrigées. |
|
[REPLIÉE → #24361] Supersédée par la fournée canonique #24361 Deux tentatives de repli de la même classe (contre-audit GT, 8 carnets) sont restées ouvertes en parallèle. #24361 est la canonique :
Fermée comme doublon : le YAML est précisément le défaut, rien de perdable. Tout le contenu des 8 correctifs vit dans #24361. |
…eur nomme La PR #24196 sortait ORPHANED_CONTENT alors que ses commentaires de fermeture nomment le successeur : « Contenu fondu en fournee dans #24354 » (03:16:42Z) et « [REPLIEE] Repliee en fournee dans la PR #24361 » (04:21:36Z). `_SUCCESSOR_RE` ne lisait pas ce vocabulaire -- il ne connaissait que `superseded by`, `duplicate of`, `doublon de` et quelques formes francaises. `_SUCCESSOR_RE` reconnait desormais : - « fondu en fournee dans #N » (et « fondu », sans accent) ; - « repliee en fournee dans [la PR] #N » (et « repliee », sans accent) ; - « folded into #N ». La mention « la PR » entre le verbe et le numero n'est admise que pour les formes de fournee : l'elargir aux formes deja reconnues modifierait le verdict d'autres PRs sans raison. Les controles exiges par la reouverture jouaient par HASARD : `_gh_ready()` lisait le code de retour de `gh auth status`, qui rend `rc=1` des que le quota REST du login partage est epuise -- et `gh` presente alors ce refus comme « the token is invalid ». Un controle exige se faisait SAUTER, et « skipped » se lit comme un vert. Le probe interroge desormais l'API (`GET /user`), dont l'echec se voit. Tests : - les formes reelles de #24196, verbatimes des commentaires de fermeture ; - un vocabulaire de fournee SANS numero ne nomme aucun successeur ; - controles reels (reseau) : #24196 -> SUPERSEDED, #20374 inchange. See #22166 Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Grain: DEEP/notebook-python — lane myia-po-2024:CoursIA-2 — prev: LIGHT/ledger #23555
See #24280 — fournée de consolidation du contre-audit GameTheory.
Concern #24280 : une PR plus fine que ses commentaires est « inacceptable » — les corrections
de la même classe partent en une fournée (chaque PR coûte une review, un dossier, un gate
et une chaîne de merge). Cette PR réunit en une seule les huit PRs de contre-audit
GameTheory ci-dessous, par cherry-pick des commits existants : rien n'est réécrit, le
travail est préservé. Les huit PRs d'origine se ferment avec un renvoi d'une ligne vers
cette fournée.
Les huit corrections (cherry-pick, aucun commit réécrit)
05-ZeroSum-Minimax(asymétrie 05c/06)05c-KKT-Dualite-Lagrangienne16 × 16 = 256 candidats;Conitzer & Sandholm 200216 × 256 = 4096 candidats;Conitzer & Sandholm 200316d(fantôme)16/16b/16c— le16dretiré2R > T + S (8 > 5); refs16f/16dfantômes2R > T + S (6 > 5); Kuhn-Munkres,16b/16c§5§6P=0,294 / F1=0,435 / 12 faux positifsnon alignéeP=0,312 / F1=0,455 / 11 faux positifs(aligné àcell[42])Hedges (2015), The composition of gamesPortée — les chemins modifiés (markdown en majorité, deux cellules de code source sur 16b/16h + registre twin GT-06) :
MyIA.AI.Notebooks/GameTheory/GameTheory-06-EvolutionTrust-Python.ipynbMyIA.AI.Notebooks/GameTheory/GameTheory-16b-Automated-Mechanism-Design-Python.ipynbMyIA.AI.Notebooks/GameTheory/GameTheory-16g-Populations-Othman-Sandholm-Python.ipynbMyIA.AI.Notebooks/GameTheory/GameTheory-16h-Cooperation-LLM-Python.ipynbMyIA.AI.Notebooks/GameTheory/GameTheory-16i-Appariage-Stable-Gale-Shapley-Python.ipynbMyIA.AI.Notebooks/GameTheory/GameTheory-16j-Screening-Loyer-Information-Python.ipynbMyIA.AI.Notebooks/GameTheory/GameTheory-18b-Casser-la-Composition-Python.ipynbMyIA.AI.Notebooks/GameTheory/GameTheory-18c-Humour-Banc-Python.ipynbscripts/notebook_tools/twin_pairs.d/gametheory-6-evolutiontrust/0055-2026-11-02-myia-po-2024-CoursIA-2.yamlscripts/notebook_tools/twin_pairs.d/gametheory-6-evolutiontrust/0056-2026-11-03-myia-po-2024-CoursIA-2.yamlLes commits repris sont pour l'essentiel markdown seul. Deux membres touchent du
source de cellule de code, sans changer de sémantique exécutable :
256 → 4096 candidats) ;print(...)et sa sortie committée(
2R > T + S:(8 > 5)→(6 > 5)), mise à jour en lockstep lors de laré-exécution du carnet.
L'exception C.2 « modifs uniquement markdown » s'applique aux membres markdown ; pour
GT-16h la ré-exécution est due et a été faite (la sortie suit la source). Les
execution_countet les sorties des autres carnets sont bit pour bit intacts. Leregistre twin GT-06 est re-attesté en dernier sur le carnet 06 (attestation
0056;le nav fix change le blob attesté).
Réserves déjà posées sur des membres de la fournée — reportées avec leur réponse
#24176 (GT-16b) — review Hermes : LGTM (vérifié)
La review a vérifié firsthand le re-dérivé (
256 candidats) et l'alignementConitzer–Sandholm 2002, zéro output/ec/meta touché. Verdict LGTM — la réserve n'est
pas ouverte : elle est la vérification du membre. Reportée ici pour que la fournée porte
l'attestation.
#24241 (GT-18c) — review NanoClaw : LGTM (vérifié) + deux points, répondus
La review (LGTM : les trois valeurs réécrites = exactement la sortie committée
cell[42],arithmétique recomposée, diff confiné à des cellules markdown) a signalé deux points :
détecté cette dérive (
check_markdown_claims_output.py: 21 findings en base → 17 entête ; les 4 retirés = les valeurs périmées). Les 17 résiduels sont des faux positifs
caractérisés (fenêtre de 3 cellules, nombre extrait d'un identifiant de modèle, ratio non
dérivable). Le passage consultatif → bloquant est une décision de gate CI, portée à
l'issue de suivi check prose↔sortie : de consultatif à bloquant — traiter d'abord les 3 familles de faux positifs #24289 (les trois familles de faux positifs y sont caractérisées).
L'artefact de run figé est écarté : il fabriquait une attestation non reproductible
(prédiction LLM non déterministe).
carnet, pas sur le diff, par nature ; le diff reste confiné aux cellules markdown, aucune
sortie touchée.
Le verdict
CIRCULARITE_GROSSIERE_ECARTEEdu carnet reste lisible tel quel : la correctionremet le chiffre en face de sa mesure, elle ne renverse pas la conclusion.
Méthode de consolidation
Branche
fix/gt-contre-audit-fournee-2026-11-03depuismain, cherry-pick des commitsexistants de chaque PR d'origine (les merge commits sont sautés, seuls les commits de
contenu sont repris). Un conflit de navigation sur GT-06 (la ligne a été réordonnée en
parallèle sur
main) est résolu en gardant la structure courante demainet enn'appliquant que l'intention du commit (le slot « précédent » 05 → 05c).
Les huit PRs d'origine se ferment avec un renvoi d'une ligne vers cette fournée :
#23995 #24176 #24190 #24196 #24202 #24204 #24226 #24241.
🤖 Generated with Claude Code