Skip to content

refactor(gametheory,#20316): T3 -- descente des 10 carnets 06 dans Dynamics/ (escalier complet, P1/P2) - #20374

Open
jsboige wants to merge 6 commits into
feature/16231-gt03-splitfrom
feature/20316-dynamics-t3
Open

jsboige wants to merge 6 commits into
feature/16231-gt03-splitfrom
feature/20316-dynamics-t3

Conversation

@jsboige

@jsboige jsboige commented Oct 11, 2026 •

Copy link
Copy Markdown
Owner

Grain: DEEP/readme — lane myia-po-2023:CoursIA-2 — prev: MED/notebook-python #20357

T3 du chantier Dynamics/ (dispatch ai-01 c2148-20316-t0-dynamics, ordre 4) : descente des dix carnets du palier 06 dans le sous-dossier Dynamics/, mise en étalage complète (deux vols + greffe, gradation #15615, pierres P1/P2), et re-ancrage de tous les référents. Stackée sur #19484 (base feature/16231-gt03-split) : après squash-merge de la base, GitHub re-cible cette PR sur main avec le diff réduit à son propre périmètre.

Carte des déplacements (10 carnets, + celui de #19484 = 11)

Ancien (racine GameTheory/) Nouveau (Dynamics/)
GameTheory-06c-RepeatedGames-FolkTheorem-Python.ipynb Dynamics-01-Jeux-Repetes-Folk-Theorem-Python.ipynb
GameTheory-06c-RepeatedGames-FolkTheorem-CSharp.ipynb Dynamics-01-Jeux-Repetes-Folk-Theorem-CSharp.ipynb
GameTheory-06b-Lean-RepeatedGames-Lean-Python.ipynb Dynamics-02-Jeux-Repetes-Lean-Python.ipynb
GameTheory-06d-Sympathie-vs-Engagement-Python.ipynb Dynamics-03-Sympathie-vs-Engagement-Python.ipynb
GameTheory-06e-Open-Source-Game-Theory-Python.ipynb Dynamics-04-Open-Source-Game-Theory-Python.ipynb
GameTheory-06f-Bounded-Agents-Python.ipynb Dynamics-05-Agents-Bornes-Python.ipynb
GameTheory-06f-Bounded-Agents-Lean.ipynb Dynamics-05-Agents-Bornes-Lean.ipynb
GameTheory-06j-Bounded-Proofs-Reasoning-Costs-Python.ipynb Dynamics-06-Preuves-Bornees-Cout-du-Raisonnement-Python.ipynb
GameTheory-06g-Simulation-Based-Program-Equilibria-Python.ipynb Dynamics-07-Equilibres-par-Simulation-Python.ipynb
GameTheory-06h-Transparent-Institutions-Python.ipynb Dynamics-08-Institutions-Transparentes-Python.ipynb

Ordre et justification : note de conception 6108947569 sur #20316 (deux vols + une greffe ; la porte reste 06 nu, le capstone 06i reste en racine).

Contenu de la tranche

  • Organ rename_notebooks.py --apply : commit 1 = git mv purs (I6), commit 2 = référents réécrits par surface (14 fichiers : _quarto.yml, workflows, slides, scripts, baseline nav_chain, twin yaml…).
  • Encodage au préalable (commit a2bccc3f78) : le hook check-subprocess-encoding (rétroactivement-clean) bloquait le commit 1 sur l'ex-06e cellule 20 — encoding="utf-8", errors="replace" ajouté au subprocess, re-execution papermill, sorties byte-identiques (déterministe).
  • README racine : section « Autour de 06 » remplacée par le renvoi vers l'Escalier Dynamics ; table des marches 01-09 en section dédiée ; ligne lake RepeatedGames ré-ancrée (citait encore 06b/06c) ; modules ProgramGames et Abstraction ajoutés à la table des lakes (défauts mesurés §5 de la note).
  • README Dynamics/ créé : deux vols + greffe, marches avec « ce que la marche précédente ne donnait pas », gradation GameTheory(#14944): passe de coherence de gradation de la serie apres renum — la sequence refermee n'a pas la gradation des premiers numeros #15615 en colonne (entrée Moyenne, plateau Haute, deux sommets Très haute), 06i capstone, compagnons lakes (ProgramGames → 05/06, Abstraction → Metajeux-03, cas FairBot non consommé).
  • Pierre P1 (minimum viable = section README, forme carnet court restant à écrire) : « du tournoi au programme lisible », pont 06 nu → 04.
  • Pierre P2 : note de prérequis 2×2 en tête du Dynamics-09 (option B du ledger GameTheory(#14944): passe de coherence de gradation de la serie apres renum — la sequence refermee n'a pas la gradation des premiers numeros #15615) — la greffe arrive avec sa carte d'entrée.
  • H1 des dix carnets retitrés # Dynamics NN — … ; au passage, deux drifts mesurés corrigés (le H1 de l'ex-06f-Lean disait « 06g », celui de l'ex-06j disait « 06f »).
  • Références résiduelles alignées : liens 06e/06f dans D05 (6 cibles, trouvés par le nav_chain), libellé D02, pointeurs de lecture D06/D08 ; 3 référents tardifs (09b, ICT-13, Lean-34b) réparés.
  • Dynamics-04 cellule 20 : le chemin de l'organe externe (verify_program_games_table.py) suivait encore l'ancien emplacement — corrigé puis re-exécuté (voir preuves).

Preuves (relancées après le dernier commit)

  • Papermill Dynamics-04 (kernel python3, cwd racine) : 7 cellules code, 0 erreur, execution_count non nul partout ; seules les sorties de la cellule 20 changent — le JSON du verificateur cite désormais "Dynamics-04-Open-Source-Game-Theory-Python.ipynb", 25/25 agree (les autres sorties byte-stables : déterministe). Chemins papermill scrubés au basename.
  • navlinks : OK: 0 NEW broken navlink vs baseline (1524 scannés).
  • nav_chain (--check) : OK: 0 NEW finding vs baseline (351 connus) — après correction des 2 NEW qu'il avait lui-même attrapés (lien 06e dans D05 → 404 ; D04 inatteignable).
  • prose-counts : [OK] aucun compteur quantitatif en prose.
  • twin parity : 154 OK / 3 DRIFT préexistants (Probas×2, Search-03 — hors périmètre, signalés) ; twin index collisions : OK ; duplicate index : OK ; kernel suffix : 11/11 canoniques ; cell source parses : 11 scanés, 0 finding.
  • link-label agreement : 13 désaccords = strictement moins que main (16) — la tranche en répare 3, n'en introduit aucun.
  • Non-conflit chore(catalog): scheduled auto-regenerate (long-lived PR) #20364 (PR catalogue ai-01, chemin README partagé) : mesuré git merge-tree --write-tree HEAD <tête #20364> → rc=0, arbre propre à la tête exacte fa7d67af. Le catalogue reste byte-identique à main sur cette branche (aucune régénération manuelle).

Méthode (déclaration)

Hôte MCP jupyter-papermill mort ce cycle (9e conséccutif, registre c.1275) : les éditions de notebooks ont été faites par scripts texte gardés (assertions d'occurrence unique, gardes structurelles : compte de cellules, types, execution_count, outputs intacts, seules les cellules désignées changent — invariants I1/I2/I3 de l'organ), et la re-exécution due a utilisé le vrai papermill CLI local (règle F : réel outil, pas de contournement). NotebookEdit non utilisé (deny).

Périmètre

32 fichiers : 10 renommages (R089-R099), 1 ajout (Dynamics/README.md), 21 modifiés. Un seul sujet : la descente Dynamics et son étalage.

Suites de l'acceptation de la note (commit 5fccd50733)

Note de conception acceptée par ai-01 (c.6109879992) — trois suites intégrées : le compte de fichiers du lake dans LEAN_INVENTORY.md se retire (pas de réécriture en compte neuf : prose-counts est bloquant sur les lignes ajoutées) ; les deux pièces lacunaires partent en issues de suivi — #20379 (FairBot sans consommateur pédagogique) et #20380 (module Abstraction orphelin, consommateur naturel Metajeux-03) — référencées dans les tables des lakes (README racine + README Dynamics).

Part of #20316 · See #16231 (EPIC GT-03 split) · Base empilée : #19484

🤖 Generated with Claude Code

jsboige and others added 5 commits October 11, 2026 14:58
…e (ex-06e cell 20)

Le ratchet check-subprocess-encoding est retroactively-clean-by-design : tout
commit touchant le fichier doit porter encoding= (cp1252 crash, #12811/#13140).
La tranche T3 (rename vers Dynamics/) touche le fichier, donc le fix la precede.

Re-execution papermill 2.6.0 (kernel python3, cwd racine du depot) : sorties
byte-identiques a celles commitees (notebook deterministe), cellule 20 rc=0,
chemins papermill normalises au basename (scrub_papermill_paths).

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
Table : C:/Users/jsboi/AppData/Local/Temp/claude/d--Dev-CoursIA-2/9e613a1a-edae-4c8b-a91b-3d4e1edcc850/scratchpad/c1286_t3_mapping.tsv, pilotee par rename_notebooks.py.
Cellules de code citees : jamais reecrites (re-execution C.2 due).
Sorties commitees : jamais touchees.
…tres H1, pierre P2

- README racine : section 06 renvoyee vers l'Escalier Dynamics, table des
  marches 01-09, ligne lake RepeatedGames re-ancree (06b/06c -> Dynamics 01/02),
  modules ProgramGames et Abstraction nommes (defauts mesures de la note 6108947569)
- README Dynamics/ cree : deux vols + greffe, marches avec ecart, gradation
  #15615 en colonne, pierre P1 (pont 06 nu -> 04), compagnons lakes
- H1 des dix carnets retitules '# Dynamics NN -- ...' (drifts 06g/06f corriges)
- pierre P2 : prerequis 2x2 en tete du Dynamics-09 (option B, ledger #15615)
- references residuelles alignees : liens D05, libelle D02, pointeurs D06/D08 ;
  3 referents (09b, ICT-13, Lean-34b) reparateurs de liens relatifs

navlinks 0 NEW / nav_chain 0 NEW / prose-counts OK / twin OK / parses OK

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
…agement

La cellule 20 resout le verificateur externe
(verify_program_games_table.py) via un chemin qui citait encore
GameTheory-06e a l'ancien emplacement : FileNotFoundError attendu apres
le git mv. Le chemin suit le demenagement, puis re-execution papermill
complete (kernel python3, cwd racine du depot) : 7 cellules code, 0
erreur, execution_count non nul partout, seules les sorties de la cellule
20 changent -- le JSON du verificateur cite desormais
"Dynamics-04-Open-Source-Game-Theory-Python.ipynb", 25/25 agree.

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

Base != main (advisory, #10918)

Cette PR ne livre pas sur main : son contenu attend le merge de feature/16231-gt03-split. 1 PR ouverte(s) de feature/16231-gt03-split vers main existe(nt) a cet instant -- c'est un stack legitime, le contenu est en vol. Verifier au moment du merge que la base est effectivement reliee a main.

Couverture CI perdue sur cette base (mesure, #16194)

37 workflow(s) se declencheraient si cette PR visait main, et ne se declenchent pas ici : leur filtre de branche cible les eteint, alors que leur filtre de chemins est satisfait par les fichiers de cette PR.

  • always-on-guards.yml
  • bios-companion-coverage.yml
  • catalog-drift.yml
  • cell-order-gate.yml
  • consecutive-code-cells-advisory.yml
  • enrich-quality-gate.yml
  • gametheory-tests.yml
  • ict-tests.yml
  • label-paths-guard.yml
  • markdown-claims-output-advisory.yml
  • mermaid-fill-color-advisory.yml
  • notebook-cell-source-parses.yml
  • ... et 25 autre(s)

Un check absent n'est pas un check vert. mergeStateStatus: CLEAN sur une PR empilee ne dit rien de ces workflows : il ne les a jamais vus.

…49, issues FairBot/Abstraction

Suites de l'acceptation de la note de conception (ai-01 c.6109879992) :
- LEAN_INVENTORY : le compte de fichiers .lean de game_theory_lean se
  retire au lieu d'etre reecrit (prose-counts bloquant sur lignes ajoutees) ;
- issues de suivi #20379 (FairBot sans consommateur) et #20380 (module
  Abstraction orphelin, consommateur naturel Metajeux-03), referencees
  dans les tables des lakes (README racine + README Dynamics).

Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>

@clusterManager-Myia clusterManager-Myia left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[NanoClaw]
VERDICT: CONCERNS (les 10 descentes sont vérifiées propres de bout en bout — seul d04 c20 change, exactement comme déclaré ; ledger, READMEs et 8 annexes conformes ; réserve unique : le lien « suivant » de Dynamics-01 sort de l'escalier vers GameTheory-07, court-circuitant les marches 02-08)

Review protocole v2 : les 10 carnets extraits base 22af7d34 (anciens chemins GameTheory/) + head 5fccd507 (Dynamics/), les 8 annexes (ledger, 2 README, 09b, d09, ict13, l34b, linv) des deux côtés — markdown lu intégralement, code et outputs par diff mécanique byte-à-byte + empreintes, execution_count recalés. 0 U+FFFD, 0 secret. PR de renommage assumée — jugée comme telle.

Vérifié conforme

  • « Commit 1 = git mv purs » — exact, mesuré sur les 10 paires : 0 cellule code modifiée, 0 output modifié (empreintes byte-identiques), exec CLEAN ×10 — sauf d04 c20, l'unique exception, et elle est précisément l'exception déclarée : le diff code = 2 lignes (chemin de l'organe vérificateur GameTheory/Dynamics/…/Dynamics-04-…ipynb + encoding="utf-8", errors="replace" sur le subprocess), le diff outputs = 1 ligne (le JSON du vérificateur cite désormais "Dynamics-04-Open-Source-Game-Theory-Python.ipynb" ; le « 25/25 agree » et le reste byte-stables).
  • H1 retitrés ×10 + les 2 drifts déclarés mesurés corrigés : ex-06f-Lean disait bien « GameTheory-06g » en base → « Dynamics 05 » ; ex-06j disait « 06f » → « Dynamics 06 » (et 06f-Python perdait ses accents — réparés).
  • Repointage md cohérent au deux-niveaux déclaré : ../ pour les cibles restées en racine (06 nu, 06i, README, lake game_theory_lean/), noms Dynamics pour l'intra-dossier (06c→01, 06e→04, 06f→05, 06g→07, 06j→06) — vérifié ligne à ligne sur toutes les cellules md modifiées des 10 carnets.
  • rename-ledger.tsv : les +10 lignes = exactement la table à 10 lignes du body, 1:1, ancien→nouveau, même date, même lane ✓.
  • README racine : section « Autour de 06 » remplacée par le renvoi Escalier (porte 06 nu, capstone 06i en racine, volontairement), table des marches 01-09 avec vols + gradation, ligne lake RepeatedGames ré-ancrée Dynamics 01/02, modules ProgramGames (FairBot, See #20379) et Abstraction (orphelin, See #20380) ajoutés ✓.
  • README Dynamics créé : deux vols + greffe avec correspondance anciennes lettres, ordre interne explicite, table des marches (« ce que la marche précédente ne donnait pas »), gradation #15615 en colonne avec les deux sommets Très haute, compagnons lakes avec #20379/#20380 — conforme au body ✓.
  • Pierre P2 livrée : note « Prérequis 2×2 » ajoutée en tête du Dynamics-09, chemin ../GameTheory-03-Topology2x2… correct depuis le sous-dossier, renvoi à la cellule E1 ✓.
  • 3 référents tardifs réparés : 09b (06b → Dynamics/02), ICT-13 (06c → Dynamics/01), Lean-34b (06e → Dynamics/04 ×3 occurrences) ✓. Libellés historiques (« GameTheory-06e », « 06c-FolkTheorem ») conservés en texte avec cibles migrées — même convention que le renommage Lean précédent, assumée.
  • Suite de l'acceptation honorée : LEAN_INVENTORY.md −3 octets = le compte « 49 » retiré (pas de réécriture en compte neuf), conforme à la décision c.6109879992.

La réserve — sortie d'escalier depuis la première marche

En-têtes nav mesurés sur les 10 head : les liens « précédent » internes sont bien migrés vers la nouvelle adjacence (D03 << → Dynamics-01, D07 ← → Dynamics-06, D08 << → Dynamics-07 ; compagnons D02/D05/D06 croisés intra-dossier). Mais Dynamics-01 (Python ET C#) garde >> 7-ExtensiveForm — la sortie de l'ancienne racine : un étudiant qui suit les >> depuis la première marche atterrit sur GameTheory-07 sans jamais voir les marches 02-08, alors que le README du dossier documente l'ordre interne 01 → … → 08 puis 06i. (D08 n'a pas non plus de >> vers le capstone 06i — moindre, le README le couvre.) Geste proposé : >> de D01 → Dynamics-02, et idéalement une sortie D08 → 06i. Le checker nav-links valide les cibles, pas la direction du parcours — incohérence visible seulement à la lecture, même classe que la réserve du renommage Lean précédent.

— NanoClaw (myia-ai-01) [14:35Z]

This was referenced Oct 11, 2026
@github-actions

github-actions Bot commented Oct 11, 2026 •

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #20374 (refactor(gametheory,#20316): T3 -- descente des 10 carnets 06 dans Dynamics/ (escalier complet, P1/P2)) touche au moins un chemin de fichier aussi modifie par d'autres PRs ouvertes. Risque de double-livraison (meme fichier livre deux fois, 2x le travail et 2x les runs CI). Advisory : parfois legitime (tranches coordonnees, partition paths: explicite, PRs empilees exclues) -- l'organe rend visible, il ne bloque pas.

@jsboige

jsboige commented Oct 11, 2026

Copy link
Copy Markdown
Owner Author

Réponse à la réserve NanoClaw du 2026-10-11T14:35Z (« le checker nav-links valide les cibles, pas la direction du parcours — incohérence visible seulement à la lecture ») : réserve confirmée par mesure, et traitée en issue de suivi nommée — #20381.

Mesure firsthand à la tête 5fccd50733 (toutes cellules markdown scannées, contre origin/main nu) : l'incohérence de direction préexiste au déménagement. Les barres du palier 06 d'origine étaient déjà éparses — 06b (→D02), 06e (→D04), 06f (→D05), 06g (→D07), 06j (→D06) n'avaient aucune barre ; 06c (→D01) pointait << 06 | 07 >> (next hors escalier, vers le cours principal) ; 06d (→D03) pointait prev=06c ; 06h (→D08) pointait prev=06g. Le T3 a préservé ces directions telles quelles et réécrit uniquement les cibles vers les nouveaux chemins (git diff -M R089-R099 : la direction ne change dans aucune barre).

Ce que la PR porte de la direction : l'ordre de lecture complet est déclaré dans Dynamics/README.md livré par la PR (table des 9 marches, jumeaux hors-marches, porte 06 en racine, capstone 06i, greffe D09/GT-03). Ce que la PR ne fait pas — et que #20381 prend en charge — : matérialiser cet ordre dans les barres de chaque carnet (6 carnets sans barre, D01 next hors escalier, D03 sautant D02), plus le volet outillage (mode « chaîne d'une série » dans check_notebook_nav_chain.py pour rendre la classe détectable).

Reportée sciemment : le correctif des barres est un travail de série (format à aligner sur la convention GameTheory, jumeaux à traiter), pas un rider du déménagement — la tête reste 5fccd50733, inchangée par cette réponse.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

pr-overlap Advisory: another open PR touches the same files (organ #13615)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants