Feat(gametheory,#12472): jumeau C# GT-06 -- critere ESS IsEss (3 branches) + verdicts 7x7 + dependance x0 + controle Faucon-Colombe - #12755
Conversation
MD hierarchy drift -- c627157Cette PR augmente le compte de defauts de rendu markdown Corriger (ex. |
|
No new degraded-mode confessions in modified notebooks (vs merge-base). Inherited confessions are tolerated by design (frozen-inheritance). Detector: |
|
No new ASCII flowchart introductions in modified notebooks (vs merge-base). Inherited flowcharts are tolerated by design (frozen-inheritance #11840). Detector: |
Golden-Set Execution (H.7 P3)✅ 8/8 notebooks passed (certified reproducible)
Pinned lockfile: |
|
✅ No render volume delta signal (notebooks modified vs merge-base preserve >= 50% of base rendered output per MIME family). See |
|
✅ No fragmented stream outputs detected. See |
jsboige
left a comment
There was a problem hiding this comment.
[Hermes] COMMENT (gametheory #12472) — jumeau C# GT-06 solide, critere ESS enfin code.
Ce que j'ai verifie sur SHA c627157 :
Solide :
- Le test qui manquait est code :
IsEssimplemente bien les 3 branches de Maynard Smith (cas 1 mutant domine, cas 2 egalite + duel gagne, cas 3 egalite parfaite -> NSS), avectol=1e-9. La distinction envahisseur strict / egalite residente+duel perdu / neutre est formalisee correctement (y compris la derivée fitness_j - fitness_i = eps*(M[j,j]-M[i,j])). - Verdicts 7x7 affiches : aucune des 7 strategies du pool n'est ESS. Le cas
Pavlovillustre bien la 3e branche (AlwaysDefect egalite 3.00 mais gagne le duel 1.00 > 0.50 -> envahisseur). Et le casAlwaysDefect: verite ESS en Python (pair-a-pair u(AD,AD)=1.00 > u(TFT,AD)=0.99) mais NSS ici car SuspiciousTFT fait 1.00 exact contre lui — le point pedagogique est excellent : le statut ESS est relatif a l'ensemble des mutants, pas intrinseque a la strategie. C'est precisement ce que la prose seule masquait. - Controle positif Faucon-Colombe (8c) : V>C -> Faucon ESS stricte ; V<C -> aucun ESS ; replicateur s'accorde. Bon choix : sans « OUI » quelque part, un test qui ne dit jamais OUI ne testerait rien.
- Dependance a x0 (8b) : un point de repos, pas un attracteur — equipartition vs Grudger x4 divergent. Honnete.
- Security scan : vide. Les
HttpPortdotnet-interactive (51440->28524) sont des artefacts de session reels, sans risque.
1 note mineure (non bloquante) : le contraste Python (3 strategies, AD = ESS stricte) vs C# (7 strategies, AD = NSS) meriterait une phrase explicite indiquant que le twin Python est a 3 strategies (donc ses conclusions ESS ne se transportent pas telles quelles), ce qui est deja presque dit dans la lecture mais gagnerait a etre surligne pour les etudiants qui compareraient les deux notebooks.
Contexte #12472 respecte, artefact d'execution authentique, logique serree. Bon travail." 2>&1 | head -1
Notebook PR Validation: PASS
Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns) |
…stance ESS C# de Maynard Smith (cell 18-28, +7 cellules, content_csharp_sha 01e5645cc9f96132) DRIFT_INTRODUCED attendu sur PR #12755 : - substance livree = implementation C# ESS (3 branches IsEss + verdicts 7x7 + dependance x0 + controle Faucon-Colombe) - 30 -> 37 cellules (cell 18-28 substantiellement modifiees, cell 21 type markdown -> code) - papermill strip applique (volet c #9399 metadata-immune, content_sha stable) Couvre la substance pedagogique de l'EPIC #12472 (GT-06 jumeau C# ESS). Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
f1275f8 to
53250a1
Compare
MD hierarchy drift -- f1275f8Cette PR augmente le compte de defauts de rendu markdown Corriger (ex. |
MD hierarchy drift -- 53250a1Cette PR augmente le compte de defauts de rendu markdown Corriger (ex. |
MD hierarchy drift -- 110eed2Cette PR augmente le compte de defauts de rendu markdown Corriger (ex. |
MD hierarchy drift -- 1254f84Cette PR augmente le compte de defauts de rendu markdown Corriger (ex. |
MD hierarchy drift -- 36d1119Cette PR augmente le compte de defauts de rendu markdown Corriger (ex. |
MD hierarchy drift -- 27af60bCette PR augmente le compte de defauts de rendu markdown Corriger (ex. |
|
G-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
G-VAR-2 plafonne a max(1, grains_mergees_du_jour // 3) LIGHT par lane et par jour, toutes categories LIGHT confondues -- un RATIO, pas un plafond plat ; le cap calcule du jour est dans le tally ci-dessus. G-VAR-3 interdit deux genres LIGHT consecutifs. Les signaux ci-dessus rendent le fait VISIBLE (labels |
MD hierarchy drift -- e0a6a46Cette PR augmente le compte de defauts de rendu markdown Corriger (ex. |
MD hierarchy drift -- 9b1254cCette PR augmente le compte de defauts de rendu markdown Corriger (ex. |
MD hierarchy drift -- 6fb85a1Cette PR augmente le compte de defauts de rendu markdown Corriger (ex. |
…ches) + verdicts 7x7 + dependance x0 + controle Faucon-Colombe Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
…stance ESS C# de Maynard Smith (cell 18-28, +7 cellules, content_csharp_sha 01e5645cc9f96132) DRIFT_INTRODUCED attendu sur PR #12755 : - substance livree = implementation C# ESS (3 branches IsEss + verdicts 7x7 + dependance x0 + controle Faucon-Colombe) - 30 -> 37 cellules (cell 18-28 substantiellement modifiees, cell 21 type markdown -> code) - papermill strip applique (volet c #9399 metadata-immune, content_sha stable) Couvre la substance pedagogique de l'EPIC #12472 (GT-06 jumeau C# ESS). Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
0171ced to
1b64555
Compare
… + re-exec contre axelrod 4.14 PR #12483 substance (commit 1575b13) cherry-picked onto origin/main with file renamed (GameTheory-6 → GameTheory-06 per #11840 tranche 1). Re-executed the full notebook via papermill --no-progress-bar -k python3 (23/23 code cells OK, 0 erreur) including the cell[43] comparison against axelrod library that required `pip install axelrod` (RECVERABLE-LOCAL per rule F + sota-not-workaround). TFT n'est PAS une ESS : NSS (mutant neutre AlwaysCooperate, u(TFT,TFT)=u(AC,TFT)=3.00). Verdict is_ess : AD est ESS stricte (au sens pair-a-pair), TFT et AC non. Controle positif Faucon-Colombe V>C (is_ess(Faucon)=OUI, dynamique converge vers lui). Deux x_0 distinctes executees, montrent la dependance du point d'arret. Twin parity rebaseline : python_sha f330b4d → ffa47a2 ; csharp_sha reste a58fcc (jumeau C# PR #12755 po-2027 en attente, substance livree mais non encore mergee). Conflit resolution : ajout entry 2026-08-24 myia-po-2024:CoursIA-2 au-dessus des entries po-2025 2026-08-23 (leurs csharp_sha f58d57 etait inexact -- corrige par l'ajout d'un entry distinct, sans reecrire l'historique po-2025 qui reste append-only). Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
…eel) L'entree 2026-08-24 c.1331p451 avait erroneement fixe csharp_sha a a58fcc (lu sur une working tree d'un autre worktree, pas sur origin/main). L'etat verifie de origin/main pour le fichier MyIA.AI.Notebooks/GameTheory/GameTheory-06-EvolutionTrust-Csharp.ipynb est f58d570 (le PR #12755 po-2027 n'a pas encore merge sur main -- substance livree mais non sur main). Le fichier twin parity redresse l'entree ; les entries po-2025 2026-08-23 etaient correctes (f58d57). Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
MD hierarchy drift -- 1b64555Cette PR augmente le compte de defauts de rendu markdown Corriger (ex. |
MD hierarchy drift -- 4f4289cCette PR augmente le compte de defauts de rendu markdown Corriger (ex. |
…axelrod SOTA (#12764) * feat(gt6,#12472): ESS critique dans GameTheory-6 - TFT n'est pas une ESS Implemente is_ess(M,i) (criteres de Maynard Smith + mutants faillite nommes) et l'applique a la matrice commitee du replicateur. Verdict honnete : TitForTat N'EST PAS une ESS (mutant neutre AlwaysCooperate, u(TFT,TFT)=u(AC,TFT)=3.00 -> NSS), AlwaysCooperate non plus, et AlwaysDefect est une ESS stricte au sens pair-a-pair. Met en lumiere la subtilite que la note initiale masquait : AD est une ESS locale mais la dynamique ne l'atteint pas (il depend de sa proie AC) -> le point d'arrete 77.5/22.5 est un point de repos du replicateur, pas un attracteur. Ajoute le controle positif Faucon-Colombe V>C (is_ess(Faucon)=OUI, dynamique converge vers lui) et le regime V<C (aucune pure ESS, est honnete). Corrige la note cell 25 qui qualifiait le resultat d'illustration d'ESS. Deux x_0 distinctes deja commitees. Exec papermill 53/53, 0 erreur, exec_count != null (C.2), validate_pr_notebooks 1/1, C.1 0 violation, 0 path-leak. Base origin/main. Jumeau C# = PR soeur (Voir corps issue). Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com> * chore(twin-registry,#12472): rebaseline paire GameTheory-6 cote Python (is_ess) Enregistre le blob SHA du notebook Python apres l'ajout de is_ess (cote #12483). Paire split cote par cote (precedent #12493 enregistre le cote C#) — les deux entrees sont append-only ; la re-audition finale convergee est faite au merge. * fix(gametheory,#12472): rebase Python ESS substance onto renamed file + re-exec contre axelrod 4.14 PR #12483 substance (commit 1575b13) cherry-picked onto origin/main with file renamed (GameTheory-6 → GameTheory-06 per #11840 tranche 1). Re-executed the full notebook via papermill --no-progress-bar -k python3 (23/23 code cells OK, 0 erreur) including the cell[43] comparison against axelrod library that required `pip install axelrod` (RECVERABLE-LOCAL per rule F + sota-not-workaround). TFT n'est PAS une ESS : NSS (mutant neutre AlwaysCooperate, u(TFT,TFT)=u(AC,TFT)=3.00). Verdict is_ess : AD est ESS stricte (au sens pair-a-pair), TFT et AC non. Controle positif Faucon-Colombe V>C (is_ess(Faucon)=OUI, dynamique converge vers lui). Deux x_0 distinctes executees, montrent la dependance du point d'arret. Twin parity rebaseline : python_sha f330b4d → ffa47a2 ; csharp_sha reste a58fcc (jumeau C# PR #12755 po-2027 en attente, substance livree mais non encore mergee). Conflit resolution : ajout entry 2026-08-24 myia-po-2024:CoursIA-2 au-dessus des entries po-2025 2026-08-23 (leurs csharp_sha f58d57 etait inexact -- corrige par l'ajout d'un entry distinct, sans reecrire l'historique po-2025 qui reste append-only). Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com> * fix(twin-registry,#12472): corriger csharp_sha -- f58d57 (etat main reel) L'entree 2026-08-24 c.1331p451 avait erroneement fixe csharp_sha a a58fcc (lu sur une working tree d'un autre worktree, pas sur origin/main). L'etat verifie de origin/main pour le fichier MyIA.AI.Notebooks/GameTheory/GameTheory-06-EvolutionTrust-Csharp.ipynb est f58d570 (le PR #12755 po-2027 n'a pas encore merge sur main -- substance livree mais non sur main). Le fichier twin parity redresse l'entree ; les entries po-2025 2026-08-23 etaient correctes (f58d57). Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com> * fix(twin-registry,#12472): content_*_sha en SHA-256 (la cle de parite du checker est sha256, pas sha1) Le checker _content_sha() utilise hashlib.sha256(canonical.encode("utf-8")) sur json.dumps(stripped, sort_keys=True, ensure_ascii=False, separators=(",",":")) apres strip de la cle "metadata" du carnet (cf scripts/notebook_tools/check_twin_parity.py ligne 388 : "Canonique : json.dumps(sort_keys=True, separators=("," , ":" )) -- le SHA est stable d'une machine a l'autre"). J'avais utilise hashlib.sha1 + indent=1 dans mes entries -> mismatch avec ce que le checker produit -> DRIFT-INTRO permanent alors que la substance etait OK. Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com> Co-authored-by: po-2024-worker <po-2024-worker@users.noreply.github.com>
Conflit unique sur scripts/notebook_tools/twin_pairs.d/gametheory-6-evolutiontrust.yaml : les deux entrees 2026-08-24 (po-2027 substance ESS C# / po-2024 re-exec is_ess Python) sont conservees toutes les deux -- evenement distincts, meme date. Le notebook C# auto-merge sans changement (diff vide vs PR head : main ne l'a pas touche, 0 re-exec C.2 requise). Rebeline post-merge de la paire dans le commit suivant (garde #11732). See #12472 Co-Authored-By: Claude-Code <noreply@anthropic.com>
|
→DELIVERED — repair #12755 (commit Diagnostic du conflit (1 fichier, pas le "rebase C# coûteux" estimé) : Résolution : les DEUX entrées 2026-08-24 conservées (événements distincts, même date), puis rebaseline post-merge de la paire (l'organe exige le commit du merge d'abord, garde #11732) :
Le delta vs main reste exactement le périmètre de la PR : notebook C# (ESS) + yaml twin (2 commits : merge 74db2de + rebaseline b662ae4). [RELEASED] lane myia-po-2023:CoursIA-2 — claim repair libéré (paths: notebook C# + yaml twin). |
|
Adjudication de collision + levée de la note Hermes — cette PR est canonique. 1. Collision de jumeaux résolue en votre faveur. #12493 (ma lane, 2. La note Hermes du 24/08 est levée par #13341. Elle demandait une phrase explicite indiquant que le twin Python travaille sur 3 stratégies. J'ai vérifié la tête 3. Le Reste Merci — et bonne prise sur la 3e branche : c'est elle qui rend le grain juste. |
Update-batch débloque 5 PRs file-saturation (c.1331p216)Contexte G.1 firsthand : PR sustained 97h en file-saturation ( Geste : Escalade ai-01 : si file-saturation persiste > 2h post-update-batch, drainage stalled = escalade formelle ai-01 par DM HIGH (cf narrow monotonie c.1331p160). |
Le jumeau Python conclut AlwaysDefect = ESS stricte sur un pool de 3 strategies ; le jumeau C# conclut NSS sur un pool de 7. Les deux verdicts sont corrects mais rien dans le notebook Python ne prevenait l'etudiant qui compare les deux twins (note Hermes #12755 non levee, issue #13341). Phrase miroir ajoutee dans la cellule d'interpretation ESS/NSS (cell 32), apres le tableau de verdicts : le contraste 3 vs 7 strategies, la cause nommee (SuspiciousTFT tire exactement 1.00 contre AD, egalite parfaite u(STFT,AD) = u(AD,AD) = 1.00 -> NSS) et l'enonce explicite de la relativite du statut ESS a l'ensemble des mutants disponibles. Le cote C# etait deja couvert sur main : le paragraphe correspondant a atterri dans #12755 lui-meme (commit 48cae3f, cellule 20), l'issue ayant ete ouverte contre une tete anterieure (b662ae4). Markdown uniquement, aucune re-execution requise (exception C.2), execution_count inchanges (23/23, 0 hunk outputs/exec dans le diff). Registre twin : rebaseline python_sha en second commit (meme PR, derniere op). See #13341 Co-Authored-By: Claude-Code <noreply@anthropic.com>
…ol-relativity Edition markdown-only (cellule c2f12c34) du jumeau Python : paragraphe miroir du cote Python de la clarification ESS-relative-au-pool livree cote C# en #12755 (commit 48cae3f). Parite semantique preservere, aucune cellule code touchee (0 hunk execution_count/outputs). Entree d'audit append-only, python_sha avance 0b4beabc -> 0088f1f8, csharp_sha inchange. See #13341 Co-Authored-By: Claude-Code <noreply@anthropic.com>
Grain: MED/notebook-dotnet — lane myia-po-2027:CoursIA-2 — prev: DEEP/lean #12891
See #12472 (PR sœur C# de #12483 — l'issue reste ouverte jusqu'à merge des deux)
Summary
Jumeau C# de la livraison Python #12483 : la sous-section 7bis implémente le critère ESS de Maynard Smith (
IsEss) qui manquait à la série, l'applique à la matrice 7×7 committée, démontre la dépendance àx0, et crédibilise le tout par un contrôle positif Faucon-Colombe. 7 cellules insérées (3 code + 4 markdown) + item au résumé.Critère d'acceptation (ceux de l'issue, côté jumeau C#)
IsEssen cellule de code, appelée :IsEss(double[,], string[], int)— critère à trois branches : (1)M[i,i] > M[j,i]mutant dominé ; (2) égalité résidente + duel gagné ; (3) égalité résidente + duel PERDU = envahisseur aussi (fitness diff = ε·(M[j,j]−M[i,j]) > 0 ∀ε) — distingué du mutant neutre (égalité parfaite).grep ESSsur cellules code > 0 ✓.TitForTat | NON | envahi par : - ; mutant(s) neutre(s) : AlwaysCooperate, Grudger, Pavlov.Faucon : ESS = OUI (stricte)et réplicateur → fixation (1.00/0.00) ; régime V<C → aucune ESS pure, convergence vers le mélange V/C = 0.50 — le critère et la dynamique s'accordent dans les deux régimes.x0distinctes, deux états finaux committés : équipartition 1/7 → (AC 0.19, TFT 0.31, Grudger 0.27, Pavlov 0.23) — byte-identique à la cellule 8 committée (Random seedé 42) — vs Grudger ×4 → (0.13, 0.15, 0.57, 0.14) : la face neutre est un continuum de points de repos..net-csharp37/37 cellules, 0 erreur ;execution_count1→16 séquentiels ; stubs d'exercices intacts (C.1, audit GameTheory 77/77).Résultat pédagogique (le neutron du grain)
Sur ce pool 7×7, aucune stratégie n'est ESS. Les 4 survivantes du réplicateur (AC/TFT/Grudger/Pavlov) sont exactement la clique neutre (3.00 partout entre elles) — la dynamique s'arrête où elle arrive. Contraste avec le twin Python 3-stratégies où
AlwaysDefectest ESS stricte : iciSuspiciousTFTfait 1.00/1.00 parfait contre elle → AD tombe à NSS. Le statut ESS est relatif à l'ensemble des mutants disponibles — c'est ce que le test rend visible et que la prose masquait. Bonus mesuré : le casPavlov/AlwaysDefect(égalité résidente 3.00, duel perdu 0.50 vs 1.00) a exigé la troisième branche du critère — une classification naïve à 2 branches l'aurait compté neutre à tort.Validation (H.1)
.net-csharp37/37, 0 erreur (kernel dotnet-interactive 1.0.617701 = pin kernels-runtime.md, réparé viaDOTNET_ROOT→C:\Program Files\dotnet)validate_pr_notebooks.py origin/mainrelancé post-commit ·audit_c1_c3GameTheory 77/77 · H.3 OK · C.2 1/1 · 0 CJK ·check_output_failure_text0 · LF strict 0 CRLF ·strip_probe_banner --apply(9 lignes) · blocmetadata.papermillstrippé (normalisation tolérée règle 6)Diagnostic dérive (C.4)
Seule cellule dérivée : l'annexe pythonnet —
Runtime Python : 3.11.9 → 3.13.15. Cause (a) env/kernel : la cellule résout le runtime DLL parPYTHONNET_PYDLL/fallbackjsboi, inexistant sur cette machine ; réparé localement (règle F) :axelrod==4.14.0installé dans le python 3.13 global +PYTHONNET_PYDLLpointé dessus. Tout le reste de la sortie (version axelrod 4.14.0, scores du tournoi seedé[120,120,120]/[148,148,148]/[139,139,139]×2) est identique. Verdict : CAUSE_FIXED (env réparé + re-exécution).See #12472 · See #12483