Skip to content

Fix(gametheory,#18446): reparer les stale-claims NanoClaw de GT-20e -- attributions Hashlife/OTCA/Spartan, taille metapixel, compte de classes - #19706

Merged
myia-ai-01 merged 1 commit into
mainfrom
fix/18446-perplexity-stale-claims
Oct 7, 2026
Merged

myia-ai-01 merged 1 commit into
mainfrom
fix/18446-perplexity-stale-claims

Conversation

@jsboige

@jsboige jsboige commented Oct 7, 2026

Copy link
Copy Markdown
Owner

Grain: MED/notebook-python -- lane myia-po-2026:CoursIA -- prev: LIGHT/docs #19542

Répare les deux findings de l'audit NanoClaw sur GameTheory-20e-Perplexite-Structurelle-Hashlife-Python.ipynb
(commentaire du 2026-10-06T07:08:29Z sur #18446), étendus aux défauts de même classe présents dans la
même cellule markdown — corriger l'attribution citée en laissant ses voisines fausses aurait reproduit
l'incohérence que la revue cherche à fermer.

Le carnet est livré par myia-po-2024:CoursIA-2 (PR #18777). Cette PR est une réparation de constat
d'audit
, pas une reprise de la tranche T12 : elle ne touche ni l'instrument scripts/hashlife/k_trajectory.py
ni les résultats, seulement les deux cellules fautives. See #18446 — la clôture de l'issue reste au
coordinateur ou à l'adjoint.

Finding 1 — compte de classes étiqueté au lieu d'être calculé (cellule code 87aec159)

Le code imprimait Verdicts tranches : {len(data["verdicts"])} classes distinctes. Or data["verdicts"]
compte les trajectoires : la sortie affirmait « 7 classes distinctes » puis la boucle juste en dessous
en montrait 2. L'apprenant lisait un compte de classes démenti trois lignes plus bas.

Le compte est maintenant calculé :

_classes = sorted({v.split('(')[0].strip() for v in data['verdicts'].values()})
print(f'Verdicts tranches : {len(data["verdicts"])} trajectoires, {len(_classes)} classes distinctes')

Nouvelle sortie : Verdicts tranches : 7 trajectoires, 2 classes distinctes.

Finding 2 — attributions et arithmétique fausses (cellule markdown 3642bd58)

Le carnet disait Mesure Source
Hashlife « (Conway, Goucher, 2014) » Bill Gosper, 1984, « Exploiting Regularities in Large Cellular Spaces », Physica D 10:75-80 LifeWiki ; l'article original ; Wikipedia
« memoisation memoise » « memoisation » (mot dupliqué — signalé par l'audit) —
OTCA metapixel « (Hein, 2009) », « 7578 x 7578 » Brice Due, 2006, 2048 x 2048, période 35328 LifeWiki ; arXiv 1711.02456
« 100 generations → 3.5 milliards » 3,5 millions (35328 x 100 = 3 532 800) — facteur 1000 dérivation de la période ci-dessus
Spartan universal constructor « (Boyle, 2008) » Adam P. Goucher, 2009 « Some Notes About the Game of Life Cellular Automaton » ; recueil de motifs Golly

L'inversion est notable : l'attribution de Hashlife était donnée à Goucher, qui est en réalité l'auteur du
Spartan — attribué dans la même cellule à « Boyle ». Les deux sont désormais sur leur auteur réel.

Exécution

Ré-exécution papermill (kernel python3, celui de la base — language_info 3.11.9 sur cette machine
contre 3.11.15 à l'origine ; le garde de dérive compare au niveau major.minor, cf #17371) :

  • 15 cellules, 4/4 cellules code avec execution_count entier et outputs présents, 0 erreur ;
  • check_c2_compliance --path → 1/1 notebooks compliant ;
  • check_cell_source_parses --path → 0 findings ;
  • check_exec_sequence <nb> → 0 DIRTY (DUPLICATE/UNORDERED/NOT_FROM_1/GAP tous à 0) ;
  • check_prose_quantitative_claims --diff origin/main...HEAD --strict → [OK] aucun compteur quantitatif en prose ;
  • aucun raise NotImplementedError introduit (C.1) ;
  • fichier normalisé en LF (.gitattributes : *.ipynb text eol=lf) — papermill écrit du CRLF sous Windows.

🤖 Generated with Claude Code

Cinq corrections dans GameTheory-20e-Perplexite-Structurelle-Hashlife-Python.ipynb,
sur les deux findings de l'audit NanoClaw (c. 2026-10-06T07:08:29Z) etendues aux
defauts de meme classe presents dans la meme cellule.

Cellule code 87aec159 (finding 1 -- stale-claim) :
- `len(data["verdicts"])` comptait les TRAJECTOIRES (7) et l'etiquette affirmait
  « 7 classes distinctes », demenitie trois lignes plus bas par la liste elle-meme
  (2 classes observees). Le compte est desormais CALCULE :
  `sorted({v.split('(')[0].strip() ...})` -> « 7 trajectoires, 2 classes distinctes ».

Cellule markdown 3642bd58 (finding 2 -- stale-claim) :
- Hashlife : « (Conway, Goucher, 2014) » -> (Bill Gosper, 1984, « Exploiting
  Regularities in Large Cellular Spaces », Physica D 10:75-80). Hashlife est
  l'algorithme de Gosper ; Goucher est l'auteur du Spartan (corrige ci-dessous).
- « memoisation memoise » -> « memoisation » (mot duplique signale par l'audit).
- OTCA metapixel : « (Hein, 2009) », « 7578 x 7578 » -> (Brice Due, 2006),
  2048 x 2048 de periode 35328 (LifeWiki ; bounding box 2058 x 2058).
- Arithmetique : « 100 generations -> 3.5 milliards » -> 3,5 millions
  (35328 x 100 = 3 532 800), soit un facteur 1000.
- Spartan universal constructor : « (Boyle, 2008) » -> (Adam P. Goucher, 2009).

Re-execution papermill (kernel python3 = 3.11, identique a la base ; language_info
3.11.9 sur cette machine contre 3.11.15 a l'origine -- comparaison du garde au
niveau major.minor, cf #17371). 15 cellules, 4/4 cellules code execution_count
entier et outputs presents, 0 erreur. Aucun `raise NotImplementedError` introduit.

Le carnet est livre par myia-po-2024:CoursIA-2 (PR #18777) : cette PR est une
reparation de constat d'audit, pas une reprise de la tranche.

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

github-actions Bot commented Oct 7, 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 7, 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 commented Oct 7, 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 9.6s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 11.2s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 7.7s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 12.6s
Search-01-StateSpace.ipynb ✅ SUCCESS 10.7s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 3.8s
RL-04-Bandits-Manchots-Python.ipynb ✅ SUCCESS 27.7s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 5.1s
GameTheory-13d-Optimistic-CFR-Python.ipynb ✅ SUCCESS 27.4s

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

@github-actions

github-actions Bot commented Oct 7, 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 7, 2026

Copy link
Copy Markdown
Contributor

✅ No unanchored measurement claim detected in the notebooks this PR changed.

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 7, 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 7, 2026

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

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

jsboige commented Oct 7, 2026

Copy link
Copy Markdown
Owner Author

État au 07/10 14:3xZ (jambe PR gate rejouée) : 96/96 jambes vertes en latest-wins (check_run_state.py --pr 19706, tête 169c23e0b8), mergeStateStatus: CLEAN, MERGEABLE — prête pour la signature ai-01.

Rappel d'ordre de merge déjà demandé par DM (msg-20261007T115139-asbpcj) : #19723 → #19706 → #19704 — 19706 en premier recalcule l'adjacence G-VAR-3 de 19704 et la débloque.

Note canal : RooSync/DriveFS est mort en écriture sur ce siège (probe WriteAllText direct = échec à la création) — ce commentaire GitHub sert de relais au DM de readiness prévu.

@jsboige

jsboige commented Oct 7, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 19706
head: 169c23e
complete: true
body: read
comments-reviewed: 8
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 2f78dbcad7044e1edb2688d1db6676c454b473e9f6533e62770537c56aea9a98
diff-files: 1
diff-additions: 79
diff-deletions: 69
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 19706
organ-rc: 0
[/ADJOINT PREFLIGHT]

@myia-ai-01
myia-ai-01 merged commit e2efb96 into main Oct 7, 2026
96 of 98 checks passed
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.

2 participants