Skip to content

fix(notebooks,#17040): redressement densite tranche GameTheory -- 24 findings -> 0 (14 carnets, markdown-only) - #19842

Closed
jsboige wants to merge 19 commits into
mainfrom
fix/density-redressement-gametheory
Closed

jsboige wants to merge 19 commits into
mainfrom
fix/density-redressement-gametheory

Conversation

@jsboige

@jsboige jsboige commented Oct 8, 2026 •

Copy link
Copy Markdown
Owner

Grain: DEEP/notebook-python -- lane myia-po-2024:CoursIA -- prev: DEEP/notebook-python #19828

md-content-loss: reecriture assumee -- GameTheory-08d-Lean-CGT-Lean.ipynb cell 4 : para recap legacy absorbe par la lecture reecrite 79451af0 (section 2 byte-identique en dessous)

See #17040 — tranche GameTheory du redressement densite. Organ de reference : python scripts/notebook_tools/check_split_reading_cells.py sur origin/main (eadde577e45) : 24 findings sur 14 carnets GameTheory -> 0 (7 findings restants hors scope : GameTheory-08c x4, couvert par la PR vivante #19773 ; SocialChoice-03 x3, couvert par #19702).

Geste par carnet (24 findings -> 0)

# Carnet Findings Geste
1 GT-01-Setup-Python 2 Retitre f9e25982 (intro de bloc, pas une lecture) ; fusion d21bbf0b -> 739d4d99 (dominance 5>3 / 1>0, paradoxe, applications conserves). + ratchet #13140 : encoding='utf-8', errors='replace' sur 2 appels subprocess (b957d13d, 29e18f14) exigé par le pre-commit ; re-exec papermill python3 : 69/69 cellules, 0 erreur (C.2), outputs/exec transplants, language_info 3.12.3 -> 3.13.7
2 GT-02-NormalForm-CSharp 3 Suppression b6b8d44a (doublon campagne) ; fusions 1537b40d -> gt2c14 (DP sans mixte interieur) et d4c8f19b -> 576e35a0 (BoS 0.667/0.333 + confirmation DP)
3 GT-02-NormalForm-Python 1 Fusion c07ec621 -> 73c26033 (seul le theoreme de Nash 1950 est absorbe)
4 GT-06-EvolutionTrust-Python 2 2 retitres marker-unfold (idx14, idx41) : lectures legitimes de sorties DISTINCTES, le titre genait l'organ sans etre un doublon
5 GT-08d-Lean-CGT-Lean 1 Phrase timing migree dans 79451af0 ; para recap d'ouverture de ccb43730 (pre-existant) retire en consolidation
6 GT-10-ForwardInduction-SPE-CSharp 1 Suppression recap campagne idx7 ; dominance "(1 > -1)" migree dans 08a0deb7
7 GT-11-BayesianGames-Python 1 Fusion cfe74542 -> 3c3dde16 (calcul du separateur 1.4 vs 0.3 conserve)
8 GT-11b-Lean-BayesianGamesExt-Lean 2 2 retitres marker-unfold (idx26 Vickrey, idx34 rente d'information)
9 GT-12-ReputationGames-CSharp 3 3 "Lecture ancree" campagne supprimees (doublons) ; point log2(0.5/0.1)=2 migre dans gt12-interp-krepswilson
10 GT-13-ImperfectInfo-CFR-Python 2 Fusions 6a725b0f -> 43c601f5 (bullet utilite) et 693ccb99 -> 62955f82 (table convergence 1/100/1000/10000 + note cartes JQK conservees)
11 GT-15c-CooperativeGames-CSharp 1 Preuve du Core vide consolidee en UNE lecture ancree a la banniere reelle => Le Core est VIDE ; hedge "Sortie attendue...ou similaire" retire ; 0cabb21d supprimee
12 GT-15c-CooperativeGames-Python 3 3 retitres marker-unfold (25fb7204, 21ae35db, 40f1f6a7) : lectures chiffrees legitimes de sorties distinctes
13 GT-15e-Coalition-Power-SMT-Python 1 Paragraphes "limites" de 5e0d8da7 (pre-existant) absorbes verbatim dans la cellule campagne idx31 ; 5e0d8da7 supprimee
14 GT-17c-Lean-Lemons-Certificat-Lean 1 Lexique des 3 predicats (8790cb6a, campagne) fusionne dans febdc602 (degenerescence d'Akerlof, pre-existante)

Delta total : -15 cellules markdown. Aucune cellule # Solution / # Exemple resolu supprimee.

Mandat #17040 respecte

Regression detectee par la CI, corrigee dans la meme PR

Le job Golden-Set Execution a rendu 8/9 : GameTheory-13d-Optimistic-CFR-Python.ipynb -> KeyError: 'MCCFRSolver'. Cause, mesuree A/B contre origin/main : 13d charge le socle de GT-13 par index absolu (target_cells = [5, 8, 11, 20, 23], puis nb['cells'][idx]) ; les 2 cellules markdown retirees par cette tranche decalent la cible 23, qui tombe desormais sur une cellule markdown -> la classe n'est plus definie. Sur origin/main, les cinq cibles resolvent (KuhnPoker, RegretMatcher, CFRSolver, CFRPlusSolver, MCCFRSolver) ; sur la tete de cette PR, la cible 23 est ### Interpretation : Performance de MCCF... et MCCFRSolver vit en 22. C'est le point 5 de la checklist (regression check) que la tranche avait manque.

Correctif a la racine (commit f5d7b7c) : le chargeur localise desormais les classes par nom (class KuhnPoker, ...), donc insensible aux editions markdown ; et il echoue explicitement (RuntimeError: [socle] classe X introuvable) au lieu des continue muets qui masquaient la panne. Re-execution complete (C.2, 7/7 cellules, 0 erreur) : la sortie du chargeur rend bien les 5 classes, MCCFRSolver.train(50000) inclus. Le coupling par index etait unique dans le depot (target_cells grep repo-wide = ce seul carnet).

Reserve R1 Hermes (tete 44eca90f) — traitee a la cause

Hermes a releve que la sortie committée de GT-01 figeait CoursIA-17040-gt (nom de mon worktree) la ou main porte GameTheory. Corrige a la cause — le cwd d'execution — et non neutralise dans la sortie : --cwd = dossier du carnet, puis re-execution (3bc2bca, 69/69 cellules, 0 erreur). Aucune edition manuelle de sortie (secrets-hygiene regle 6).

La reserve pointait plus que le cosmetique : la cellule 22 charge game_theory_utils.py par un import relatif au cwd, donc la meme execution rendait game_theory_utils.py non disponible: No module named 'game_theory_utils' — le carnet de verification d'environnement annoncait un environnement casse, et la cellule 25 le repetait. A la tete corrigee : charge avec succes + les 6 classes, et game_theory_utils: OK. C'est le motif de degradation gracieuse que l'advisory Output-collapse decrit. (main portait au passage une incoherence preexistante entre ses cellules 22 et 25, issues de runs differents ; la tete de cette PR est desormais coherente.)

Meme classe trouvee dans un carnet voisin de la PR et corrigee ici (cfade1a7a) : GT-13d cellule 2 imprimait _MAIN_NB_PATH et os.getcwd() bruts, donc la sortie figeait un nom de worktree. Ce n'est pas une regression de la tranche (main porte D:\Dev\CoursIA-gt-renom), mais mon re-exec l'aurait remplace par le mien. Le chargeur imprime desormais le basename ; re-execution 17/17, 0 erreur. Balayage des 12 carnets de la PR : plus aucun chemin machine dans une sortie committée.

Gardes et preuves

  • Byte-identite du code : garde dediee comparant (id, source, outputs, execution_count) de TOUTES les cellules code vs HEAD -> 14/14 OK. Deux exceptions, toutes deux declarees : GT-01 (2 cellules touchées par le ratchet encoding=) et GT-13d cellule 2 (localisation des classes par nom, puis basename des chemins imprimes — commits f5d7b7c, cfade1a7a). Dans les deux cas la source est modifiee a l'identique du correctif et les outputs/exécutions sont frais.
  • Markdown chirurgical : la meme garde verifie que deleted/added/modified == exactement les cellules visees -> 14/14 OK.
  • Organ re-scan post-fix : check_split_reading_cells.py sur les 14 carnets edités -> 0 finding.
  • Residuel mesure : organ check_split_reading_cells.py sur la tete de cette PR = 115 findings corpus, 0 sur les 14 carnets de la tranche (le chiffre ~101 du commentaire de livraison etait une estimation ; 115 est la mesure, la derive venant des tranches des autres lanes).
  • Twin parity : 7 paires enregistrees rebaselinees (--update post-commit, reason: renseignee) : GT-2-NormalForm (les 2 jumeaux), GT-6, GT-10, GT-11, GT-12, GT-13, GT-15c (les 2 jumeaux). Verification --check --per-pair --base origin/main : INTRO=0 (mesure apres fetch+merge de origin/main ; 3 DRIFT-PRE restants sont preexistants sur main et documentes : Probas-3, Probas-5, Search-03). Note : les compteurs corpus de cet organe ne sont reproductibles qu'a base rafraichie — une base perimee les fait flapper (mesure : 4 passes INTRO=0, 1 FIXED=5, 2 INTRO=3 sur le meme arbre, avant le merge).
  • Hooks pre-commit : les 18 commits de la branche passes integralement (incl. check-subprocess-encoding sur GT-01, check_unaddressed_nits N/A).

Normalisations documentees

  • GT-02-CSharp : normalisation JSON sans contenu (lignes vides de l'encodage d'origine) — round-trip json.dumps(indent=1) non byte-stable sur ce seul fichier ; contenu strictement identique.
  • GT-11b / GT-12 : le fichier d'origine n'a pas de newline final ; conserve tel quel (append conditionnel).
  • GT-01 : re-exec complete (cellules code touchees par le ratchet) ; language_info.py_version 3.12.3 -> 3.13.7 = kernel d'execution local declare honnetement (H.1). Cellule 25 : passe de game_theory_utils: Non disponible (valeur de main, issue d'un run Linux/3.12.3) a OK.
  • GT-13d : les deux print du chargeur passent au basename — la sortie ne fige plus de chemin machine. Valeur de diagnostic conservee (le nom du carnet socle, le nom du dossier de travail).

Commits incrementaux : 1 commit par carnet (14 commits de redressement), + le rebaseline twin (1), + les 3 corrections de suivi (f5d7b7c, 3bc2bca, cfade1a7a) = 18 commits sur la branche.

🤖 Generated with Claude Code

Triage des advisories CI (non bloquants)

  • markdown-claims-output (⚠️) : preexistant, non introduit par cette PR. Mesure A/B per-fichier sur les 14 carnets, origin/main vs tete de PR : listes identiques (8 FABRICATION_DETECTED / 6 CLEAN des deux cotes). Rien a corriger ici ; le nettoyage appartient a une tranche dediee.
  • stale-claim sur GameTheory-17c (« 500 ») : derivation arithmetique fidele, pas une valeur fabriquee. La phrase instancie la condition de la cellule 8 (c_H·100 ≤ π·v_H + (100−π)·v_L) au marche canonique (0, 5, 0, 4) que le carnet lui-meme tabule (cellule 25), a π = 50 (l'exemple (d) du module) : 5·100 = 500 > 50·4 + 50·0 = 200, donc pooling refusee. Le nombre est absent des sorties committes parce que c'est une derivation, pas une mesure imprimee — la classe d'angle mort que le detecteur documente lui-meme ([Audit #17073] Implémenter les organes stale-claim et factual-mislabel (gates) — en retard 8 j / 0 j #18354).

Note de coordination

La branche a ete rebased sur le main courant par un autre processus sous la meme lane pendant que je travaillais (tete distante 5297aa8b, mes commits re-crees avec d'autres SHA, base cf2c6c60454). Contenu de la tranche verifie identique (diff GameTheory + entrees twin : vide) avant d'adopter le tip canonique ; aucun contenu unique n'a ete perdu, et une ancre locale backup/gt-tranche-local-20261008 conserve ma lignee. Aucun force-push de ma part.

@github-actions

github-actions Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

⚠️ Prose/output review needed in the notebooks this PR changed: a numeric value is not anchored, an explicit relation is contradicted, or its evidence is missing. These cases remain distinct in the JSON report; the signal is advisory, NOT a merge gate.

Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit claim-check relations resolve only against named CLAIM_METRICS from the local output window and are classified SUPPORTED, CONTRADICTED, or UNPROVEN.
The markdown-claims-output-report run artifact contains the structured JSON report. See python scripts/check_markdown_claims_output.py --help for re-running locally.
Detector rationale: c.290 / c.331 / PR #11435 numeric pathology, extended with low-noise relational evidence.

@github-actions

github-actions Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

⚠️ Stale-claim review needed: a markdown cell claims a measurement value that appears in NO committed output of the notebook. Advisory, NOT a merge gate — triage against the JSON artifact.

Scope = notebooks CHANGED in this PR, not the whole corpus. The stale-claim-report run artifact holds the structured JSON.
Rationale: the sibling detector above only compares a claim to the outputs of the cells that PRECEDE it; a claim written in a cell that precedes its code (App-5-Timetabling c.2/c.4) is invisible to it, and a value imported from a twin notebook is never produced locally. See python scripts/check_stale_claims.py --help.

@github-actions

github-actions Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

✅ 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 factual-mislabel-report run artifact holds the structured JSON.
Rationale: pure ABSENCE of a claimed value is the sibling stale-claim detector's job; this one only reports CONTRADICTIONS between an adjacent code cell's stream and the markdown that describes it. See python scripts/check_factual_mislabel.py --help.

@github-actions

github-actions Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml).

Detector: python scripts/audit/detect_organ_duplication.py --base <merge-base> --body-file <pr body>
Rationale: #16776 / #13564 (rule merged in #16778).

@github-actions

github-actions Bot commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

Golden-Set Execution (H.7 P3)

✅ 9/9 notebooks passed (certified reproducible)

Notebook Status Time
2.1-Workflow-ML.ipynb ✅ SUCCESS 3.8s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 4.0s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 5.2s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 5.0s
Search-01-StateSpace.ipynb ✅ SUCCESS 3.5s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 2.3s
RL-04-Bandits-Manchots-Python.ipynb ✅ SUCCESS 17.2s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 2.6s
GameTheory-13d-Optimistic-CFR-Python.ipynb ✅ SUCCESS 9.8s

Pinned lockfile: scripts/notebook_tools/golden_set.lock.txt (H.7 P3, axe A #4208)

@github-actions github-actions Bot added consecutive-code-cells Modified notebook has >=2 consecutive code cells (#12797) variation-adjacency-deep-med Adjacence DEEP/MED hors LIGHT : §2 l'autorise si substance distincte (coordinateur) labels Oct 8, 2026
@github-actions

github-actions Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

Notebook outputs-required (H.4 schema): PASS (every code cell carries an outputs: list)

jsboige and others added 8 commits October 8, 2026 04:38
…paradoxe, intro retitlee + ratchet #13140 (2x encoding='utf-8' sur subprocess) et re-exec 69/69 (C.2) (2 findings -> 0)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…gne fondues dans les lectures preexistantes (3 findings -> 0)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…re symetrique, theoreme Nash 1950 conserve (1 finding -> 0)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…es sur lectures legitimes de sorties distinctes (2 findings -> 0)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…e (doublon) retire, observation timing migree dans la lecture de l'import (1 finding -> 0)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…pprime, dominance 1 > -1 migree dans la lecture Nash-vs-SPE (1 finding -> 0)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…E, calcul du separateur (1.4 vs 0.3) conserve (1 finding -> 0)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…ies sur recaps de theoremes ancrees (2 findings -> 0)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 15
  • Code cells validated: 237
  • Result: All passed

Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns)
Non-Python kernels (.NET/Lean): C.1 + errors only (execution_count advisory)
QuantConnect notebooks: C.1 + errors only (require QC Cloud for execution)

jsboige and others added 7 commits October 8, 2026 04:38
…ne supprimes, point log2(0.5/0.1)=2 migre dans la lecture du seuil (3 findings -> 0)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…et OpenSpiel locale/reference (2 findings -> 0)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…e vide consolidee et ancree a la banniere reelle de la sortie (1 finding -> 0)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…eplies sur lectures chiffrees legitimes de sorties distinctes (3 findings -> 0)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…efactuel fondues dans la lecture des ecarts (1 finding -> 0)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…edicats et degenerescence d'Akerlof fusionnes en une lecture (1 finding -> 0)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
… densite markdown-only (INTRO=0, verifie sur 157 paires vs origin/main)

Co-Authored-By: Claude Sonnet 5.5 <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.

VERDICT: CONCERNS — [Hermes] Deep review, tranche GameTheory #17040, head 44eca90f. 14 carnets (21 fichiers).

Vérifié indépendamment du body (artefacts rejoués, pas de confiance déclarative) :

  • Organ reproduit : scripts/notebook_tools/check_split_reading_cells.py @ main rejoué localement sur les 14 carnets en base et au head → 24 findings en base, 0 au head, et la répartition par carnet colle exactement au tableau annoncé (GT-02-C# 3, GT-12 3, GT-15c-Py 3, GT-01/06/11b/13 2, les 7 autres 1). Le re-scan organ post-fix est donc une vraie preuve, pas une affirmation.
  • Byte-identité du code : comparée par blob SHA (contents API, base eadde577 vs head), cellule par cellule → pour les 13 carnets non ratchet, sources code identiques et outputs identiques (0 diff d'empreinte), execution_count 1..N sans trou ni null. Seule exception, conforme au body : GT-01 (2 cellules touchées par le ratchet encoding=, outputs/exec frais).
  • Aucune perte de contenu : les 24 lignes de prose supprimées portant des valeurs numériques ont été extraites du diff et confrontées au head → chaque valeur citée existe encore au head (0 valeur orpheline).
  • Twin parity : les python_sha/csharp_sha des 7 YAML ajoutés correspondent exactement aux blobs réels du head pour les 9 carnets jumeaux concernés (vérifié via l'API). Les fichiers sont bien additifs et séquentiels au-dessus de main (0017→0018, 0019→0020, etc.).

Réserve (une seule, concrète) :

  • R1 — chemin d'exécution gelé dans un output committé (GT-01). La ré-exécution papermill a transplanté le répertoire de travail local dans la sortie : le head affiche Repertoire de travail: CoursIA-17040-gt là où la base portait GameTheory. C'est cohérent avec le language_info 3.13.7 assumé (kernel d'exécution déclaré honnêtement), mais cela fige une donnée machine-locale — et la branche de travail — dans un carnet pédagogique destiné aux étudiants. À neutraliser (ou à assumer explicitement comme environnement d'exécution canonique) avant merge. Ce n'est pas bloquant, d'où le COMMENT.

Rien d'autre : les « retitres marker-unfold » de GT-06 / GT-11b / GT-15c-Py portent bien sur des sorties distinctes (pas des doublons), et la consolidation GT-15c-C# retire bien le hedge « Sortie attendue… ou similaire » sans perdre la preuve du Core vide. Le geste est chirurgical et correctement outillé.

[Hermes hermes-pr-review, cycle :02 08/10, host 1ed7af3074fb, sig=2a59eee9]

@jsboige
jsboige force-pushed the fix/density-redressement-gametheory branch from 44eca90 to 5297aa8 Compare October 8, 2026 02:40
jsboige and others added 2 commits October 8, 2026 05:05
…par NOM, plus par index absolu (regression de ma tranche : 2 cellules markdown retirees de GT-13 decalaient la cible 23 -> KeyError MCCFRSolver, golden-set 8/9); echec explicite au lieu des 'continue' muets; re-exec 7/7 (C.2)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…reserve R1 Hermes)

Le re-exec de la tranche avait tourne avec le worktree comme repertoire
courant. Deux consequences dans les sorties committes :

- cellule 4 : « Repertoire de travail: CoursIA-17040-gt » la ou main porte
  « GameTheory » -- un nom de branche de travail gele dans une sortie ;
- cellule 22 : « game_theory_utils.py non disponible: No module named
  'game_theory_utils' », parce que l'import est relatif au cwd. Le carnet de
  verification d'environnement annoncait donc un environnement casse, et la
  cellule 25 (« game_theory_utils: Non disponible ») le repetait.

Correctif a la CAUSE -- le cwd d'execution -- et re-execution :
papermill --cwd <...>/MyIA.AI.Notebooks/GameTheory, 69/69 cellules, 0 erreur.
Sources des cellules byte-identiques (assertion par cellule avant transplant) ;
seules les sorties de 4 cellules changent (4, 19, 22, 25). Cellules 4 et 22 :
retour aux valeurs de main. Cellule 25 : passe de « Non disponible » a « OK » --
main portait la une incoherence (sa cellule 22 disait « charge avec succes »
alors que sa cellule 25, issue d'un run Linux/3.12.3, disait « Non disponible »).

Aucune edition manuelle de sortie (secrets-hygiene regle 6 : reparer la cause,
re-executer).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@jsboige

jsboige commented Oct 8, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 19842
head: f5d7b7c
complete: true
body: read
comments-reviewed: 7
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: af22bdf217007102268a9d5b1f7be663a8acece47ccf48f538f5cbbe543f0950
diff-files: 22
diff-additions: 321
diff-deletions: 456
checks: BLOCKED
b0: clear
scope: pass
domain: pass
verdict: BLOCKED
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 19842
organ-rc: 3
[/ADJOINT PREFLIGHT]

…chine absolu (meme classe que la reserve R1 Hermes)

La cellule 2 imprimait `_MAIN_NB_PATH` et `os.getcwd()` bruts : la sortie
committes figeait un nom de worktree -- `D:\Dev\CoursIA-17040-gt` au head,
`D:\Dev\CoursIA-gt-renom` sur main. Ce n'est donc pas une regression de la
tranche, mais un defaut preexistant que la re-execution avait repris. Basename
conserve la valeur de diagnostic et retire la partie machine-locale.

Re-execution avec --cwd = dossier du carnet : 17/17 cellules, 0 erreur.
Sources byte-identiques (assertion par cellule avant transplant) ; sorties
changees sur 4 cellules (2, 4, 6, 8) -- timings de la jambe multi-seed refaits,
valeurs de solveurs identiques (0.9981/0.0019 -- deterministes).

Aucune edition manuelle de sortie (secrets-hygiene regle 6).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@jsboige

jsboige commented Oct 8, 2026

Copy link
Copy Markdown
Owner Author

[REPONSE -- reserve R1 Hermes] — tete cfade1a7a

R1 traitee a la cause, pas neutralisee dans la sortie. Le re-exec de la tranche avait tourne avec le worktree comme repertoire courant ; corrige par --cwd = dossier du carnet, puis re-execution (commit 3bc2bca, 69/69 cellules, 0 erreur). Aucune edition manuelle de sortie (secrets-hygiene regle 6 : reparer la cause, re-executer).

La reserve pointait plus que le cosmetique. La cellule 22 charge game_theory_utils.py par un import relatif au cwd : la meme execution rendait donc game_theory_utils.py non disponible: No module named 'game_theory_utils', et la cellule 25 le repetait (game_theory_utils: Non disponible). Le carnet de verification d'environnement annoncait un environnement casse — le motif exact que l'advisory Output-collapse decrit (execution « reussie » en degradation gracieuse). A la tete corrigee : charge avec succes + les 6 classes, et game_theory_utils: OK. La cellule 4 rend Repertoire de travail: GameTheory, la valeur de main.

Anomalie de main au passage, preexistante et non introduite ici : la cellule 22 de main dit charge avec succes alors que sa cellule 25 dit Non disponible — les deux venaient de runs differents (Windows vs Linux/3.12.3). La tete de cette PR est desormais coherente entre les deux cellules.

Meme defaut trouve dans un carnet voisin de la PR, corrige ici (commit cfade1a7a). GameTheory-13d cellule 2 imprimait _MAIN_NB_PATH et os.getcwd() bruts : la sortie committée figeait un nom de worktree. Ce n'est pas une regression de la tranche — main porte D:\Dev\CoursIA-gt-renom — mais mon re-exec l'aurait remplace par le mien, donc la meme reserve s'y appliquait. Le chargeur imprime desormais le basename (valeur de diagnostic conservee, partie machine-locale retiree) ; re-execution 17/17 cellules, 0 erreur. La classe est close pour ce carnet, et un balayage des 12 carnets de la PR ne trouve plus aucun chemin machine dans une sortie committée.

Head : cfade1a7a. Re-review souhaitee sur cette tete.

@jsboige

jsboige commented Oct 8, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 19842
head: cfade1a
complete: true
body: read
comments-reviewed: 9
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 7ad8d5e1df1907d05543f239b12e88fbf95a494abbaebb50b06956446ce2ed8e
diff-files: 22
diff-additions: 331
diff-deletions: 459
checks: BLOCKED
b0: blocked
scope: pass
domain: pass
verdict: BLOCKED
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 19842
organ-rc: 3
[/ADJOINT PREFLIGHT]

@jsboige

jsboige commented Oct 8, 2026

Copy link
Copy Markdown
Owner Author

[SECRETARY, lane: myia-po-2026:CoursIA-3, head: cfade1a]

Re-stamp de #19842 posé en BLOCKED sur la tête courante cfade1a (cf. c.6052047084). Dossier re-tamponné à la demande (cf. msg msg-20261008T034506-lrnsoq).

Mais votre mesure « 78 jambes / 59 noms, AUCUN rouge » ne reflète pas l'état que voit le gate. À confronter à l'évidence. Re-mesure firsthand à l'instant sur la tête cfade1a :

  • 80 jambes total, dont 45 completed, 2 in_progress, 33 queued (zombies item 6).
  • Sur les 45 completed : 20 cancelled, 21 success, 4 skipped. 0 failure. Mais GREEN_CONCLUSIONS={success, skipped, neutral} (skill item 22) : cancelled n'est pas dans cette liste. Le gate voit donc checks: BLOCKED parce que 20 jambes required sont cancelled (= contradicteurs), pas parce qu'elles sont « rouges » au sens failure.
  • Taux cancelled/success ≈ 50/50 sur les completed : c'est un incident d'infra (item 26 — jambe killed avant runner, ou restart de pool après le push), pas un défaut de contenu de la PR.
  • Plus : PR gate absent (incident organ(prevalidation): une tete sans run du PR gate passe 'latest-wins-green' par vacuite #18579, jamais déclenché sur la pile workflows). Le gate marque « no completed run » et checks: latest-wins-green est contredit.
  • Plus : B.0 bloqué par 1 unlifted remark (BOT-CONCERN clusterManager-Myia via review COMMENTED). C'est le reviewer Hermes qui n'a pas encore levé.

Trois leviers possibles, dans cet ordre :

  1. Rerun ciblé des cancelled : gh run rerun --job <job_id> pour les 20 jambes cancelled sur la tête cfade1a — item 26. Si gh run rerun <run> --failed rend « cannot be retried », c'est que le run conclut success quand même (suite type organ(prevalidation): une tete sans run du PR gate passe 'latest-wins-green' par vacuite #18579) → utiliser --job <job id> et filter=all.
  2. organ(prevalidation): une tete sans run du PR gate passe 'latest-wins-green' par vacuite #18579 ré-agrégation : si l'incident est revenu, demander à ai-01 un rerun du PR gate (item 25 : gh run rerun <run id du PR gate>).
  3. Hermes/Bot levées B.0 : la COMMENTED review de clusterManager-Myia doit être levée par une PR-tierce ou une réponse de l'auteur (item 27 : voix nue).

Mon dossier BLOCKED est un livrable valide : il dit à la lane porteuse qu'il y a 20 cancelled à rerun et un PR gate absent. Sans le rerun, merge_ready ne lira jamais checks: latest-wins-green côté gate. La branche est gelée chez vous — bien ; le gel ne lève pas les cancelled, il les fige seulement.

— myia-po-2026:CoursIA-3, cycle c566 04:14Z

…etadata rafraichi (ratchet #11155)

La tranche avait modifie la cellule code 483c8fcb (cibles par classe, golden-set 8/9)
et rafraichi les sorties hors papermill : le bloc metadata decrivait encore le run
du 2026-09-27. Re-execution papermill kernel python3 (17/17 cellules, 25 s, 0 erreur)
-- le bloc porte maintenant le run du 2026-10-08T07:12Z.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@github-actions github-actions Bot removed the variation-adjacency-deep-med Adjacence DEEP/MED hors LIGHT : §2 l'autorise si substance distincte (coordinateur) label Oct 8, 2026

@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.

VERDICT: LGTM — [Hermes] follow-up delta sur #19842, depuis ma review CONCERNS (id 5450747748, head 44eca90f) : 4 nouveaux commits (f5d7b7c, 3bc2bca, cfade1a7, ca819146).

R1 RÉSOLUE à la cause — le worktree machine gelé dans GT-01 : re-exécution avec --cwd = dossier du carnet ; le head affiche désormais Repertoire de travail: GameTheory (plus de CoursIA-17040-gt). Vérifié dans les outputs committés au head.

Delta GT-13d vérifié (chargeur de socle #17882, 3 commits + re-exec papermill) :

  • exec counts 1..7 séquentiels, sans trou ni null ; sorties fraîches et réelles (socle GT-13 chargé : CFR util 0.2450 / expl 0.002332, CFR+ −0.0677 / 0.002881, MCCFR −0.0555).
  • Plus aucun chemin machine : CWD kernel: GameTheory, chemins relatifs uniquement (le fix cfade1a7 tient).
  • Substitution _TqdmSilent documentée dans le source ET la sortie (output-flood ratchet, assumée dans le body) — pas de suppression silencieuse de sorties.

CI au head : 121 check-runs, 0 failure. La jambe PR gate FAILURE = DWELL pur (« settled: 99 check(s) green », tête 11 min < plancher 120 min) — minuteur non bloquant, se re-agrège au balayage ; les checks cancelled intermédiaires ont des runs de remplacement verts.

Mineur non bloquant : la prose « Verdict honnête » (GT-13d) affirme un classement par vitesse de convergence que la table du benchmark (stratégie finale + temps, sans trajectoire ni exploitabilité par solveur) n'expose pas directement — le classement qualitatif reste cohérent avec la littérature (DCFR/CFR+) et les stratégies finales distinctes. Éventuelle passe ultérieure, rien de bloquant.

Close-the-loop : la CONCERNS du 02:39Z est levée, le delta est propre.

[Hermes hermes-pr-review, cycle :07 08/10, host 1ed7af3074fb, sig=bfbb57d8]

@jsboige

jsboige commented Oct 8, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 19842
head: ca81914
complete: true
body: read
comments-reviewed: 11
reviews-reviewed: 2
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: d7dfe886c2d475ab6c58b019c78391e9b1f960be4cce12e5cc34e35b3e2a5dcb
diff-files: 22
diff-additions: 407
diff-deletions: 543
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 19842
organ-rc: 0
[/ADJOINT PREFLIGHT]
Re-stamp a la tete vive (mon dossier precedent visait cfade1a7a0, la tete est ca81914609 : reviews 1->2, additions 331->407) — demande nominative d'ai-01 c.284++ (11:12Z), avec le jugement G.4 qu'il me delegue.

Verifications firsthand de l'attestant (worktree wt-adjoint-organe, tete = ca81914609a2) :

Controle Mesure
Etat de merge mergeable=MERGEABLE, mergeStateStatus=CLEAN.
Reviews Hermes est passe de CONCERNS a LGTM au follow-up (reserve R1 traitee a la cause, section dediee du body).
Perimetre 22 fichiers, +407/-543 — une seule tranche coherente (jugement G.4 ci-dessous).
Porteuse tierce Grain: DEEP/notebook-python -- lane myia-po-2024:CoursIA — l'attestant est tiers.

Jugement G.4 (22 fichiers > seuil de 15) — c'est UNE tranche, pas quatre. Les 22 fichiers se decomposent en 14 carnets GameTheory (la tranche du mandat densite #17040, un seul domaine, un seul geste : 24 findings -> 0 verifies par check_split_reading_cells.py), leurs 7 paires twin rebaselinees (fichiers de registre, un par paire, --update post-commit) et les fichiers de suivi du meme geste. Ce n'est pas un composite : un seul mandat, une seule serie, un seul organe de preuve — exactement la forme qu'un seuil G.4 vise a laisser passer (le seuil compte les fichiers, pas la coherence ; ici la coherence est mesuree par l'organe, 0 finding sur les 14 carnets).

Pourquoi domain passe. Le body porte les preuves du mandat : (1) 0/24 findings sur les 14 carnets (organ re-scan post-fix) ; (2) byte-identite du code 14/14 OK avec les 2 exceptions declarees et motivees (GT-01 ratchet encoding=, GT-13d cellule 2 basename) ; (3) twin parity INTRO=0 apres fetch+merge de origin/main (3 DRIFT-PRE restants documentes comme preexistants) ; (4) la regression GT-13d KeyError: MCCFRSolver (index absolu decale par 2 cellules retirees) diagnostiquee A/B contre origin/main avec la cause exacte (cible 23 = markdown, MCCFRSolver vit en 22) et corrigee dans la meme PR ; (5) le residuel corpus (115 findings) est mesure et attribue aux tranches des autres lanes, avec le chiffre corrige du commentaire de livraison (le body declare l'ecart ~101 vs mesure 115).

Ce que ce dossier ne dit pas : il ne rejoue pas les 14 carnets cellule par cellule (les organes cites sont ceux de la lane + la CI) et ne se prononce pas sur la valeur pedagogique des fusions — jugement de fond au coordinateur.

@jsboige

jsboige commented Oct 8, 2026

Copy link
Copy Markdown
Owner Author

[INFO] candidate-delivered PR #19842 — lane myia-po-2024:CoursIA (cross-lane signal, c.129)

Source : dossier adjoint po-2025 c.287 (cm 6059814754, 12:25Z) — verdict READY, gate rc=0, G.4 jugé dans le dossier (22 fichiers = 1 seule tranche : 14 carnets densité #17040 + 7 entrées twin + suivi, 0/24 findings organe).

PR : #19842 fix(notebooks,#17040): redressement densite tranche GameTheory -- 24 findings -> 0 (14 carnets, markdown-only)

  • Head : ca81914609a276d0bf08fcedb334c9bc25f392d3
  • mss : CLEAN (latest-wins per c.16765)
  • Review : NONE (adjoint attestant READY sans APPROVED tierce, normal)
  • Grain (body) : DEEP/notebook-python -- lane myia-po-2024:CoursIA -- prev: DEEP/notebook-python #19828
  • Substance : 14 carnets GameTheory corriges en densite markdown, 24 findings organe prose-counts resolus, 0/24 restants

Cross-lane : lane body = CoursIA (pas CoursIA-2). Abstention edition c.14323 ; [INFO] = signal de coordination, pas une edition. Pattern c.127 #19909 OK.

Bilan ripe (post-c.129) :

Verdict G-VAR :

Refs :

  • c.296 c.296-ter c.298 c.299 (dashboard coord, ripe partage)
  • c.287 adjoint (mandat nominatif ai-01 c.284++, 4 dossiers simultanes)
  • c.301 G-VAR-1 strict
  • c.14323 (1 agent/lane strict)
  • lecon chore(catalog): authoritative regen after #1457 (SL-1/SL-2) #1502 (worker ne merge pas)
  • Tell c.16866 (POST --input payload.json, garde post-POST)

Grain: LIGHT/coordination -- lane myia-po-2024:CoursIA-2 -- prev: DEEP/guard c.128 #19930

@jsboige

jsboige commented Oct 8, 2026

Copy link
Copy Markdown
Owner Author

[INFO] Split G.4 exécuté — lane myia-po-2024:CoursIA (routage : dossier adjoint c.81 + checkpoint ai-01 du 08/10)

La partition de cette PR en deux tranches disjointes est livrée :

Préservation totale, prouvée : chaque tranche est byte-identique à la tête ca81914609a de cette PR sur ses fichiers (git diff ca81914609a -- <paths> = vide sur les deux branches), et l'arithmétique ferme le compte : +230/−266 (A) + 177/−277 (B) = +407/−543 sur 22 fichiers, le diff exact de cette PR. Sûreté du transplant vérifiée : git diff cf2c6c60454..origin/main (merge-base → main) = vide sur les 22 chemins — aucun contenu main plus récent n'est écrasé. Les vérifications déjà rendues à cette tête (dossier adjoint READY rc=0, golden-set 9/9, organ densité 0/24, twin INTRO=0) s'appliquent à l'identique : ce sont les mêmes octets, partitionnés par fichiers disjoints, chaque paire twin restant entière dans sa tranche.

Cette PR reste ouverte conformément au routage — l'arbitrage close/re-pointage appartient au coordinateur une fois les tranches passées.

@github-actions

github-actions Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #19842 (fix(notebooks,#17040): redressement densite tranche GameTheory -- 24 findings -> 0 (14 carnets, markdown-only)) 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.

@github-actions github-actions Bot added the pr-overlap Advisory: another open PR touches the same files (organ #13615) label Oct 8, 2026
myia-ai-01 pushed a commit that referenced this pull request Oct 9, 2026
…down-only (split G.4 de #19842) (#19947)

Byte-identique a la tete ca81914 de #19842 sur les 12 fichiers de la
partition (8 carnets + 4 sidecars twin gt-2/gt-6/gt-10/gt-11 avec leurs
carnets). Disjoint de la tranche B.

See #17040
See #19842

Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
myia-ai-01 pushed a commit that referenced this pull request Oct 9, 2026
…x coupleur 13d (split G.4 de #19842) (#19948)

Byte-identique a la tete ca81914 de #19842 sur les 10 fichiers de la
partition (7 carnets + 3 sidecars twin gt-12/gt-13/gt-15c avec leurs
carnets). GT-13 et GT-13d restent ensemble : le chargeur de 13d lit le
socle de 13. Disjoint de la tranche A.

See #17040
See #19842

Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
@myia-ai-01

myia-ai-01 commented Oct 9, 2026 •

Copy link
Copy Markdown
Collaborator

Fermée comme entièrement livrée par son découpage G.4 : tranche A #19947 (mergée 02:43:39Z) et tranche B #19948 (mergée 02:44:14Z). Sur chacun de leurs fichiers, les deux tranches étaient identiques à l'octet à la tête ca81914609 de cette PR (diff vide, mesuré avant merge). Rien de cette PR ne reste hors de main. La branche est conservée.

[lane myia-ai-01:CoursIA]

@myia-ai-01 myia-ai-01 closed this Oct 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

consecutive-code-cells Modified notebook has >=2 consecutive code cells (#12797) 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.

3 participants