Skip to content

fix(notebooks,#14442): retrait de la chronologie Git des intros GameTheory C# (tranche 2b-3) - #20032

Merged
myia-ai-01 merged 2 commits into
mainfrom
feature/14442-gt-intros-t2b3
Oct 9, 2026
Merged

myia-ai-01 merged 2 commits into
mainfrom
feature/14442-gt-intros-t2b3

Conversation

@jsboige

@jsboige jsboige commented Oct 9, 2026 •

Copy link
Copy Markdown
Owner

Grain: MED/notebook-python — lane myia-po-2025:CoursIA — prev: MED/notebook-python #20030

Ce que cette PR livre — tranche 2b-3 du sweep #14442 (clôture de la famille C#)

Dernière tranche de la famille des jumeaux C# : 5 carnets (13, 13c, 14, 15, 15c). Elle clôt le balayage des introductions C# de la série GameTheory, après #20029 (2b-1) et #20030 (2b-2).

Classification (audit en contexte)

Carnet Ce qui a été retiré / reformulé
13-ImperfectInfo-CFR-CSharp en-tête « — marathon #4956 (parite .NET <-> Python) » → « — parité .NET ⇄ Python » ; blockquote « Parite #4956 » → « Parité »
13c-Safe-Subgame-Solving-CSharp « Rôle dans l'Epic #12208 (temps 2, rang 1) : ce notebook est la variante -c du » → « Ce notebook est la variante -c du » (même traitement que 02c en tranche 2b-1)
14-DifferentialGames-CSharp titre « ### Value-add du jumeau C# (Prong B, EPIC #3801) » → « ### Value-add du jumeau C# »
15-CooperativeGames-CSharp en-tête « — marathon parité .NET ⇄ Python (#4956) » ; ligne « Voir aussi » : les 2 liens d'issues retirés, le lien vers le jumeau Python conservé
15c-CooperativeGames-CSharp « Kernel : … -- marathon #4956, parite … » ; « Note SOTA (EPIC #3801) » ; titre « ## Pourquoi ce twin C# existe (marathon #4956) » ; « L'idee du marathon #4956 est de … »

Un sixième carnet, sorti du périmètre — mesuré et nommé

16-MechanismDesign-CSharp figurait dans l'audit initial de cette tranche (chronologie présente en cellule 0 sur origin/main). Il en a été retiré, après confrontation au plateau des PR ouvertes : #20023 (tranche 1, ouverte, non encore mergée) a déjà retiré marathon #4956 de la cellule 0 de ce carnet, avec le même geste. L'audit de cette tranche avait été fait contre origin/main — où la chronologie est évidemment encore là, #20023 n'étant pas mergée. Livrer une seconde fois aurait produit deux diffs concurrents sur le même fichier. Le carnet est donc livré par #20023, et son absence ici est délibérée.

Vérifications

  • Markdown-only : git diff | grep -cE '^[+-].*(execution_count|"outputs")' = 0 (exception C.2).
  • Diff minimal : 9 fichiers — 5 carnets C# (+10/-10) + 4 YAML d'attestation twin parity neufs (+24/-0, scripts/notebook_tools/twin_pairs.d/gametheory-{13-imperfectinfo-cfr,14-differentialgames,15-cooperativegames,15c-cooperativegames}/).
  • Re-audit : 0 résidu de chronologie en cellule 0 sur les 5.
  • Plan-loss : findings=0 sur les 5. Deux titres renommés (14 : « Value-add du jumeau C# (Prong B, EPIC EPIC: axis-2 SOTA ledger -- every notebook PR-reviewed for proper SOTA-tool install/invocation (recoverable -> re-plug machine/env/user-hand) #3801) » ; 15c : « Pourquoi ce twin C# existe (marathon [EPIC] Parité .NET ⇄ Python des séries de notebooks — IKVM/PythonNet/NuGet, marathon pas sprint #4956) ») sont absorbés par l'organe en SUBSTANCE_FOUND_TOKEN_MATCH — la substance est conservée, le titre perd son étiquette de chantier.
  • Normalisation d'un artefact, faite et déclarée : 13c portait un élément vide final ("") en fin de tableau source de la cellule 0. Le reformatage canonique l'aurait supprimé, changeant 2 lignes de plus que la seule ligne visée ; il a été restauré pour que le diff reste strictement la ligne de prose modifiée.
  • Twin parity, en mode CI (--check --base origin/main --per-pair) : 157 paires | OK=154 INTRO=0 FIXED=0 PRE=3 — aucune paire basculée, donc aucune attestation due. Les 3 PRE sont des DRIFT préexistants sur la base (Probas-3 Factor-Graphs, Probas-5 Causal-Inference, Search-03 Informed) — les mêmes qu'aux tranches 2b-1 et 2b-2. La mesure a été reprise sur l'état final à 5 carnets (la première, identique, portait sur le diff à 6, avant le retrait de 16).
  • Overlap cross-PR : les 5 carnets de cette tranche ne sont touchés par aucune autre PR ouverte (vérifié sur le plateau complet, gh pr list --state open --json files).

Suite du sweep

Les six tranches livrées couvrent les introductions de la série GameTheory : tranche 1 (#20023, 15 carnets — dont 16), 15d (#20027), 2a (#20026, 10 carnets), 2b-1 (#20029, 7), 2b-2 (#20030, 7), 2b-3 (cette PR, 5).

Reste mesuré et non traité — la chronologie hors cellule d'introduction, dans 22 carnets C# (pieds de page et cellules de transition) : 02 cell[29] « ### Tranches suivantes (marathon #4956) », 03 cell[39] « Marathon #4956 … Revue souhaitée : ai-01, po-2024 », 06c cell[24] « Part of #4956 », et 16 lui-même (7 hits hors cellule 0). Ce volet n'est pas ouvert ici : il dépasse le périmètre « introduction » et mérite une décision de périmètre explicite plutôt qu'un élargissement silencieux.

See #14442 · See #20030

🤖 Generated with Claude Code

…heory C# (tranche 2b-3)

Tranche 2b-3 du sweep #14442 : 5 jumeaux C# (13, 13c, 14, 15, 15c) dont
l'introduction porte encore des references de chronologie de developpement
(numero d'issue, de PR, d'EPIC, etiquettes de registre SOTA) et du vocabulaire
de workflow. Les references sont retirees, les faits pedagogiques conserves.

Markdown-only : 0 changement d'execution_count ou d'outputs (exception C.2).
Diff : 5 fichiers, +10/-10, toutes les lignes touchees sont des "source"
markdown de la cellule 0.

16-MechanismDesign-CSharp est RETIRE de cette tranche. #20023 (tranche 1,
ouverte, non encore mergee) a deja retire "marathon #4956" de sa cellule 0,
avec le meme geste : l'audit de cette tranche avait ete fait contre origin/main,
ou la chronologie est evidemment encore presente, #20023 n'etant pas mergee.
Livrer une seconde fois aurait produit deux diffs concurrents sur le meme
fichier. Verifie sur le plateau complet des PR ouvertes : les 5 carnets de
cette tranche ne sont touches par aucune autre PR ouverte.

Normalisation declaree : 13c portait un element vide final ("") en fin de
tableau source de la cellule 0 ; le reformatage canonique l'aurait supprime,
changeant 2 lignes de plus que la seule ligne visee. Il a ete restaure pour que
le diff reste strictement la ligne de prose modifiee.

Twin parity mesuree en mode CI (--check --base origin/main --per-pair) :
157 paires | OK=154 INTRO=0 FIXED=0 PRE=3 -- aucune paire basculee, donc
aucune attestation due. Les 3 PRE sont des DRIFT preexistants sur la base
(Probas-3, Probas-5, Search-03), les memes qu'aux tranches 2b-1 et 2b-2.
Mesure reprise sur l'etat final a 5 carnets.

Plan-loss : findings=0 sur les 5. Deux titres renommes (14 : "Value-add du
jumeau C# (Prong B, EPIC #3801)" ; 15c : "Pourquoi ce twin C# existe (marathon
#4956)") sont absorbes par l'organe en SUBSTANCE_FOUND_TOKEN_MATCH -- la
substance est conservee, le titre perd son etiquette de chantier.

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

github-actions Bot commented Oct 9, 2026

Copy link
Copy Markdown
Contributor

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

@github-actions github-actions Bot added the consecutive-code-cells Modified notebook has >=2 consecutive code cells (#12797) label Oct 9, 2026
@github-actions

github-actions Bot commented Oct 9, 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 9, 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 9, 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 9, 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 9, 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.7s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 4.0s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 4.3s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 4.2s
Search-01-StateSpace.ipynb ✅ SUCCESS 3.4s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 2.4s
RL-04-Bandits-Manchots-Python.ipynb ✅ SUCCESS 18.1s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 2.9s
GameTheory-13d-Optimistic-CFR-Python.ipynb ✅ SUCCESS 11.0s

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

@github-actions

github-actions Bot commented Oct 9, 2026

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 5
  • Code cells validated: 76
  • 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)

…tranche 2b-3

Meme classe que les tranches 2b-1 et 2b-2 : le balayage #14442 retire la
chronologie Git de l'introduction des jumeaux C#, or le cote Python ne la
portait pas. L'organe Twin parity (#8057) suit un blob SHA par cote et voit
donc un edit unilateral comme un DRIFT.

Mesure firsthand dans l'arbre porteur du diff (c'est la seule mesure
valide -- un controle lance depuis un arbre qui ne porte pas le diff rend
INTRO=0 a tort) :
  --check --base origin/main --per-pair  ->  INTRO=4
  [DRIFT-INTRO] GameTheory-13 ImperfectInfo-CFR, GameTheory-14
  DifferentialGames, GameTheory-15 CooperativeGames, GameTheory-15c
  CooperativeGames
4 paires et non 5 : 13c-Safe-Subgame-Solving n'a pas de jumeau Python.

Attestation posee avec la forme que la gate prescrit elle-meme
(--update --pair <paire> --by myia-po-2025:CoursIA), en DERNIER (#8957 :
aucun strip outille depuis le commit du sweep). Controle apres attestation
dans le meme arbre : INTRO=0.

Diff strictement additif : 4 fichiers YAML neufs, aucun registre existant
modifie.

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

jsboige commented Oct 9, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 20032
head: 6ab1b4e
complete: true
body: read
comments-reviewed: 7
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 13ae007279dfa8234e148a07789b2c479887eb1e9568bc6b43b4bf179ca9c18f
diff-files: 9
diff-additions: 34
diff-deletions: 10
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 20032
organ-rc: 3
[/ADJOINT PREFLIGHT]

@jsboige

jsboige commented Oct 9, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 20032
head: 6ab1b4e
complete: true
body: read
comments-reviewed: 8
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 7fe71af2916176a3f3abd6549a9ade9d27bf97f1f4bf84a93b62f0759a970850
diff-files: 9
diff-additions: 34
diff-deletions: 10
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 20032
organ-rc: 0
supersedes: 8
supersedes-why: le motif de l'ancien dossier (checks: BLOCKED) est eteint et mesure : au fold latest-wins de la tete 6ab1b4e (source commits//check-runs, organe check_run_state.py --pr 20032, mesure secretaire 14:2xZ), zero jambe non-verte et zero jambe en vol ; mergeable=true / mergeStateStatus=clean mesure par REST a cette meme tete ; B.0 rc=0 (organe check_unaddressed_nits.py) ; ai-01 ordonne le re-stamp a cette tete (DM ai01-c1610-secretary-restamps du 2026-10-09T13:54:33Z).
[/ADJOINT PREFLIGHT]

@myia-ai-01
myia-ai-01 merged commit 5a192d0 into main Oct 9, 2026
113 of 121 checks passed
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)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants