Skip to content

Fix(GameTheory,#23384): GT-14 DifferentialGames -- convergence kernel canon 3.13.14 - #23536

Merged
jsboige merged 2 commits into
mainfrom
feat/gt14-canon313
Oct 31, 2026
Merged

jsboige merged 2 commits into
mainfrom
feat/gt14-canon313

Conversation

@jsboige

@jsboige jsboige commented Oct 30, 2026

Copy link
Copy Markdown
Owner

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

Convergence kernel canon 3.13.14 pour la paire GameTheory-14 DifferentialGames — See #23384 (census, arc GameTheory). Carnet existant (veto carnets du 30/10 respecté, [DECISION] ai-01 12:19Z) : aucune création, aucun contenu pédagogique ajouté.

Ce que fait la PR

Re-exécution complète de MyIA.AI.Notebooks/GameTheory/GameTheory-14-DifferentialGames-Python.ipynb (52 cellules, 19 code) sur le kernel canon local Python 3.13.14 (numpy 2.4.2, scipy 1.18.1, matplotlib 3.10.8), en remplacement des sorties committées sous 3.11.9. Aucune source de cellule modifiée, aucun contenu pédagogique touché : git diff --stat = 256 insertions / 253 suppressions sur le seul carnet (sorties ré-encodées), +1 ligne de registre de paire jumelle, +1 attestation.

Rectification de diagnostic (G.1) — la prémisse « 4 cellules RNG non seedées » était FAUSSE

Le cycle précédent ([DONE] 12:26Z du 30/10) avait inscrit GT-14 comme « 4 cellules RNG non seedées + paire jumelle ». Re-vérification firsthand avant toute action :

  • les 4 cellules stochastiques (cells code 7-10) utilisent toutes np.random.default_rng(seed) avec graine explicite (0, 0, 1, 2024) — déterministes ;
  • grep -n "np\.random\.(rand|uniform|normal|choice|randn|randint|shuffle|seed)" sur le carnet : 0 occurrence — aucun appel legacy non seedé.

La moitié RNG du diagnostic n'existait pas ; le grain livré est la convergence kernel canon seule. Le carnet était déjà déterministe — et le reste.

Preuves d'exécution

  • Papermill end-to-end sur le worktree feat/gt14-canon313 : 52/52 cellules, 1 min 44 s, rc 0, kernel python3 → 3.13.14.
  • execution_count 1→19 contigus, aucun null, 0 output error (mesuré avant/après).
  • Sorties texte concaténées : 18/19 cellules identiques. Seul écart de fond — cellule 31 : SLSQP : success=True, nit=57 → nit=58 (compteur d'itérations SLSQP sous scipy 1.18.1) ; optimum et valeurs identiques : myope 4771.7 / saut agressif 1993.1 / dynamique-optimal 5144.4, ramp u_L* 30.99 → 44.26 (std 3.67), t90 = 7.00, success=True des deux côtés.
  • Cellule 36 : flux stdout découpé en 3 éléments au lieu de 4 (frontière de buffer) — contenu concaténé identique, les 5 lignes du sweep de dépréciation (0.00 → 8008.68/13.67 ; 0.10 → 7890.65/51.64 ; 0.30 → 7315.57/117.70 ; 0.50 → 6462.39/164.25) sont identiques au bit près, ainsi que les deux lignes d'interprétation.
  • Figures : 8 PNG régénérés (zlib 3.13 contre 3.11 → octets différents, rendu identique) — mesuré au pixel via PIL : 6/8 à 0 octet différent (pixel-identiques), 2/8 à 0,03 % et 0,28 % des octets (antialiasing ; même matplotlib 3.10.8 des deux côtés, Software identique). Aucun écart de tracé, aucun placeholder, aucune sortie dégradée.

Paire jumelle (GameTheory/.NET-Parity)

Conformité

  • C.2 : sorties committées = re-exécution fraîche sur le kernel canon (pas de sortie hand-éditée). C.3 : seul le carnet de cet arc est committé.
  • H.3 : pre-commit execution_count non-nul — passé.
  • Veto carnets 30/10 : carnet existant, aucune création.

🤖 Generated with Claude Code

jsboige and others added 2 commits October 30, 2026 15:19
… canon 3.13.14

GT-14 : 3.11.9 -> 3.13.14 (kernelspec python3, kernel canon local). Carnet deterministe : les 4 cellules stochastiques sont deja seedees (np.random.default_rng(0|0|1|2024)), 0 appel legacy non seede -- la mention contraire du cycle 12:26Z etait une erreur de scan, refutee firsthand avant action.

Sorties texte concatenees : 18/19 identiques ; seul delta de fond = cellule 31 (compteur d iterations SLSQP nit=57 -> nit=58 sous scipy 1.18.1, optimum et valeurs identiques). Cellule 36 : flux stdout decoupe en 3 elements au lieu de 4 (frontiere de buffer), contenu concatene identique. Figures : 8 PNG regeneres (zlib 3.13 contre 3.11), 6/8 pixel-identiques, 2/8 a 0,03 % et 0,28 % des octets (antialiasing).

Paire jumelle : entree known_differences ajoutee (content_sha bouge -> attestation 0011 due, unlike les tranches ou seul le metadata de version bougeait). 19/19 cellules code, 0 erreur, execution_count complet 1->19.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…nce kernel)

Le content_sha python bouge (texte ET images : nit 57->58, PNG re-encodes) -- le garde #8057 demande une attestation sur derive de contenu, pas seulement sur version de kernel. Attestation 0011 ecrite EN DERNIER, apres les hooks de normalisation (cf #8957).

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

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

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

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

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

Copy link
Copy Markdown
Contributor

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

@github-actions

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 6.2s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 4.8s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 5.4s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 5.1s
Search-01-StateSpace.ipynb ✅ SUCCESS 4.3s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 2.7s
RL-04-Bandits-Manchots-Python.ipynb ✅ SUCCESS 26.0s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 3.4s
GameTheory-13d-Optimistic-CFR-Python.ipynb ✅ SUCCESS 17.5s

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

@github-actions

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

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

@github-actions

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #23536 (Fix(GameTheory,#23384): GT-14 DifferentialGames -- convergence kernel canon 3.13.14) 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 31, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2028:CoursIA-3
pr: 23536
head: bfab440
complete: true
body: read
comments-reviewed: 8
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 597bc4657c8da44125358e4eda05d7a68170eacd1a9fe68fbd91952628ab2204
diff-files: 3
diff-additions: 262
diff-deletions: 253
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 23536
organ-rc: 0
[/ADJOINT PREFLIGHT]

Preuve d'execution et crible de fond

  • Tete attestee bfab440c5f5d21e04e47825acb5e257c8cf47852. 3 fichiers, +262/-253 :
    • MyIA.AI.Notebooks/GameTheory/GameTheory-14-DifferentialGames-Python.ipynb
    • scripts/notebook_tools/twin_pairs.d/gametheory-14-differentialgames.yaml
    • scripts/notebook_tools/twin_pairs.d/gametheory-14-differentialgames/0011-2026-10-30-myia-po-2024-CoursIA.yaml
  • Re-execution declaree dans le body : Papermill end-to-end : 52/52 cellules, rc 0, kernel python3 vers 3.13.14 ; execution_count 1 a 19 contigus, aucun nul, 0 sortie d'erreur. Le body annonce aussi une attestation de paire jumelle ecrite apres les hooks de normalisation.
  • Crible mecanique local sur les blobs telecharges a la tete :
    • GameTheory-14-DifferentialGames-Python.ipynb : 19 cellules de code, 19 executees, 19 porteuses de sorties, 0 sortie d'erreur, 0 cellule de code sans execution_count, 0 caractere de remplacement U+FFFD, 0 occurrence de raise NotImplementedError, assert False ou 1/0
  • Checks au pli latest-wins sur cette tete : 95 check-runs, aucune jambe non verte ; les statuts skipped et neutral ne sont pas des echecs.
  • B.0 : rc=0, aucun nit non leve.
  • Portee : un carnet de la serie GameTheory et deux fichiers d attestation de paire sous scripts/notebook_tools/twin_pairs.d/, aucun fichier sous .claude/, .github/ ou CLAUDE.md.

@jsboige
jsboige merged commit f504828 into main Oct 31, 2026
95 of 96 checks passed
@jsboige
jsboige deleted the feat/gt14-canon313 branch November 7, 2026 17:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant