Repository navigation
fix(gametheory,#12797): prose intermediaire runs CFR (13, 13d) — tranche 2 - #15961
Conversation
Markdown-only : 2 cellules intermediaires par notebook pour couper les runs >= 3 cellules code (13 : run [40..42] briques -> verif produit -> verif hull ; 13d : run [4..6] OFTRL -> DCFR -> benchmark Kuhn). Aucune cellule code touchee (source/execution_count/outputs identiques). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Audit du deplacement markdown-only du cote Python (#12797 tranche 2) : verify --check --per-pair --base origin/main -> INTRO=0, exit 0. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit |
Notebook PR Validation: PASS
Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns) |
Notebook outputs-required (H.4 schema): PASS (every code cell carries an
|
Golden-Set Execution (H.7 P3)✅ 8/8 notebooks passed (certified reproducible)
Pinned lockfile: |
clusterManager-Myia
left a comment
There was a problem hiding this comment.
VERDICT: LGTM (vérifié: empreinte sha1 par cellule head↔base — 0 cellule code touchée)
[NanoClaw] — structural review
Vérification du claim central « Markdown-only »
Méthode : extraction des deux notebooks à 3a4ccee8 (head) et bb97e7ba (base), empreinte sha1 du source de chaque cellule, comparaison des ensembles :
GameTheory-13-ImperfectInfo-CFR.ipynb: 26 cellules code des deux côtés, ensembles d'empreintes identiques → aucune cellule code ajoutée, retirée ni modifiée (source ET outputs donc inchangés).GameTheory-13d-Optimistic-CFR.ipynb: 7/7, empreintes identiques → idem.- Côté markdown : 0 cellule retirée ou modifiée, 4 insertions pures (cellules head 41/43 dans le 13, 5/7 dans le 13d) — cohérent avec +31/+26 lignes.
La revendication du body tient exactement. Les 4 insertions tombent bien dans les runs ≥3 cellules code consécutifs visés par #12797.
Contenu des 4 cellules ajoutées (lues intégralement)
- 13, cell 41 (Théorème 4.1 produit) : contraste pédagogique juste entre identité exacte (R^X + R^Y = regret produit en calcul direct, écart attendu ~1e-12 sur T=3000) et borne — « vérifier une identité ≠ tenir une borne ». L'exactitude tient mathématiquement : le couplage 0.05(x−y) entre comme décalages additifs de chaque côté, la somme reste séparable, la minimisation se distribue.
- 13, cell 43 (Équation 4, enveloppe convexe) : décrit correctement la borne R^co ≤ R^Δ² + max{R^X, R^Y} et les deux subtilités d'implémentation réelles (stratégie enveloppe capturée avant
observe, regret du mixeur sur les pertes réelles des experts) — les symbolesMiniRegret/ConvexHullMixer/verify_hull_boundexistent dans les cellules code inchangées (grep 8/3/2 occurrences). - 13d, cell 5 (DCFR) : description fidèle de Brown & Sandholm (2019) — discount des regrets t/(t+α), discount de somme de stratégies (t/(t+β))² désactivé par défaut (β=0, c'est la config recommandée du papier), clipping CFR+. « Meilleure garantie théorique à l'optimiste, première place empirique au DCFR » est cohérent avec la littérature.
- 13d, cell 7 (instrument de mesure) : même budget d'itérations + graine commune (
np.random.seed, 3 occurrences dans le code),perf_counterpour le temps, proxy d'exploitabilité annoncé comme proxy en démo — honnêteté méthodologique correcte, l'attente §1.3 est explicitement suspendue aux chiffres de la section 2.
Audit twin YAML
0012-2026-09-13-myia-po-2024-CoursIA.yaml : shas Python/C# tracés, csharp_sha = HEAD (côté C# intact), motifs et précédents (2026-08-05, 2026-07-25) cités — la discipline de re-baseline des tranches précédentes est maintenue.
Divers
Scan sécurité (tokens/clés) sur le contenu intégral des deux notebooks : 0 hit. Rien à signaler.
Tranche 2 conforme à l'objectif #12797 : la prose insérée raconte le code existant sans le toucher, et ce qu'elle raconte est juste.
…14911/#15345) Le re-baseline de la tranche 2 a pose 0012 alors que la paire portait deja 0012-2026-09-01 (po-2023-CoursIA-2) -- l'index NNNN est la cle de tri du journal et doit etre unique par paire. Renomme en 0013 (premier index libre). test_twin_registry_integrity : 46 passed. See #15961 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
Diagnostic des 2 rouges du run précédent (head b4e07a2), tous deux non-substantiels :
|
|
DWELL mecanique — justification ecrite (aucun geste de cette lane). Verdict du
Les autres checks de cette tete sont tous verts (0 non-vert hors Cette ligne est ecrite ici parce que le P0 « reparer son propre rouge » du picker lit le verdict du |
|
DWELL — plancher mecanique, rien a reparer.
Aucune action de lane n'est disponible sur cette PR : ni re-push (il remettrait le plancher a zero depuis la nouvelle tete), ni Justification ecrite exigee par le picker pour l'echappatoire — lane |
Grain: MED/notebook-python — lane myia-po-2024:CoursIA — prev: LIGHT/tooling #15588
Tranche 2 GameTheory/Python de #12797 : les 2 notebooks CFR portant encore un run >= 3 cellules code consecutives (mesure au claim, c.5652712327), + l'audit twin de re-baseline = 3 fichiers. Markdown-only — aucune cellule code touchée. Suite directe de #15957 (tranche 1, 5 notebooks).
Défauts éliminés (Classe B — étapes distinctes à sorties réelles sans prose intermédiaire)
GameTheory-13-ImperfectInfo-CFRverify_product_decomposition->verify_hull_boundobserve)GameTheory-13d-Optimistic-CFROFTRLSolver->DCFRDiscountedSolver-> benchmark KuhnConventions locales respectées : 13 est non-accentué (comme sa prose existante), 13d accentué ; niveaux de titres continuent la structure (
####sous 8.1 pour 13,### 1.4/### 1.5pour 13d, entre §1.3 et## 2. Verdict honnête).Vérification (post-dernier-commit)
detect_consecutive_code_cells.py(organe advisory: detecter les cellules code consecutives dans les notebooks (opportunite markdown intermediaire / fusion) #12797) sur les 2 notebooks concernés : plus aucun run >= 3 ;max_run= 2 sur 13 (1 run de 2 préexistant ailleurs, autorisé), 1 sur 13d.origin/main:source+execution_count+outputscomparés cellule par cellule (assertion d'égalité stricte dans le splice) -> exception C.2 markdown-only.detect_markdown_rendering.py --check: OK sur les 2 (aucune nouvelle violation ERROR).twin_pairs.d/gametheory-13-imperfectinfo-cfr.yaml, twin C#GameTheory-13-ImperfectInfo-CFR-Csharp.ipynb) -> re-baseline--pair "GameTheory-13 ImperfectInfo-CFR" --update --by myia-po-2024:CoursIAdans cette PR (audit0012-2026-09-13-myia-po-2024-CoursIA.yaml,reason:renseignée, côté C# intact). Vérif--check --per-pair --base origin/main: voir commentaire de push.13dn'est pas une paire enregistrée.Périmètre (See #12797)
Livré cumulé tranches 1+2 : 7 notebooks Python GameTheory. Résiduel nommé (tranche 3) :
06-EvolutionTrust(run [29..31]),06f-Bounded-Agents-Python(run [13..15]), + les jumeaux C#/Lean de la série.🤖 Generated with Claude Code