Skip to content

fix(ict,#17211): ICT-08-AttractorLandscapesEWS — 2 stale-claims (refs cellule 0-based, marge AR1 confondue avec variation) - #17352

Merged
myia-ai-01 merged 3 commits into
mainfrom
fix/ict08-ew-audit-17211
Sep 23, 2026
Merged

myia-ai-01 merged 3 commits into
mainfrom
fix/ict08-ew-audit-17211

Conversation

@jsboige

@jsboige jsboige commented Sep 22, 2026 •

Copy link
Copy Markdown
Owner

Grain: MED/notebook-python -- lane myia-po-2026:CoursIA -- prev: CONTENU/notebook-python #17349

ICT-08-AttractorLandscapesEWS — 2 stale-claims réparés (#17211, audit clusterManager 20:41Z)

F1 — stale-claim (citation-de-cellule) (cell 21 0c32a5ac, lecture §6 « La rampe réelle ») : « presque au pli localisé à la cellule 0 » et « la cellule 6 avait montré l'AR1 brute saturée » — compteur de code 0-based invisible pour l'apprenant : sous exec_count (le seul compteur visible, 1–12), « cellule 6 » pointe sur le stub de l'Exercice 2, pas sur la démonstration AR1. Fix par ancres visibles, vérifiées firsthand : le pli (c_fold ≈ 2.604) est imprimé par la cellule de configuration en tête de carnet (ec=1, vérifié) → « en tête de carnet par la configuration du modèle » ; l'AR1 brute (0.9987 / 0.9386 après amincissement) est imprimée en §5 (ec=7, vérifié) → « la section 5 ("Sans complaisance") ». Les valeurs citées étaient exactes — seule la référence était incassable.

F2 — stale-claim (valeur dérivée fausse) (cell 13 401a78dd, « Lecture chiffrée — la montée des deux précurseurs ») : « l'AR1 de 0,7370 à 0,9315 (une marge de 0,19 avant saturation) » — 0,19 est la variation de l'AR1 sur la table (0,9315 − 0,7370 = 0,1945, vérifié contre la sortie de la cellule 12) ; la marge avant saturation au sens que la §5 définit et utilise (1 − AR1 : « sa marge avant saturation n'est que de 0,0013 » pour 0,9987) est 1 − 0,9315 ≈ 0,07. L'apprenant qui recalculait la marge avec la définition de la section suivante trouvait un chiffre ~3× plus petit. Fix : « l'AR1 gagne 0,19 sur la table, et il lui reste une marge de 0,07 avant saturation (1 − AR1, la définition reprise en section 5) » — les deux chiffres nommés pour ce qu'ils sont.

Validation

Preuve Résultat
Diff 2 cellules markdown (13, 21) ; markdown-only → exception C.2
Sources code byte-identiques à origin/main vérifié par script
Outputs + execution_count sémantiquement identiques vérifié par comparaison JSON sort_keys (le diff texte ne montre que le réordonnancement des clés id/outputs par nbformat — aucune valeur touchée)
detect_markdown_rendering.py 0 violation
check_split_reading_cells.py clean
restore_accents_canonical.py --check 8 cures = base (stable, aucune cure nouvelle)
enrich_quality_ci.py (base blob main) RC=0
H.3 check_null_exec.py Passed

Volets non couverts : ICT-03 (3 findings : navigation-misplaced, paraphrase-stack, output-uninterpreted) laissés libres sur la partition.

See #17211 (contribution partielle : volet ICT-08).

🤖 Generated with Claude Code

… cellule 0-based, marge AR1 confondue avec variation)

- F1 (cell 21 0c32a5ac): « pli localise a la cellule 0 » / « la cellule 6 avait
  montre l'AR1 brute » — compteur CODE 0-based invisible sous exec_count (le seul
  compteur visible ; « cellule 6 » y pointe sur le stub de l'Exercice 2, pas sur
  la demo AR1). Ancres visibles : « en tete de carnet par la configuration du
  modele » (ec=1, verifie : c_fold 2.604 y est imprime) et « section 5 (Sans
  complaisance) » (ec=7, verifie : 0.9987/0.9386 y sont imprimes)
- F2 (cell 13 401a78dd): « marge de 0,19 avant saturation » a AR1 0,9315 — 0,19
  est la VARIATION sur la table (0,9315-0,7370, verifie contre la sortie cell 12) ;
  la marge au sens de la section 5 (1 - AR1) est 0,07. Les deux chiffres sont
  maintenant nommes pour ce qu'ils sont
- markdown-only : sources code et outputs semantiquement identiques a origin/main
  (verifie par comparaison JSON sort_keys ; le diff ne montre que le
  reordonnancement des cles id/outputs par nbformat), exception C.2

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@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

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

@github-actions github-actions Bot added variation-tag-malformed Tag Grain present mais TIER != DEEP|MED|LIGHT variation-adjacency-deep-med Adjacence DEEP/MED hors LIGHT : §2 l'autorise si substance distincte (coordinateur) labels Sep 22, 2026
@github-actions

github-actions Bot commented Sep 22, 2026 •

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #17352 (fix(ict,#17211): ICT-08-AttractorLandscapesEWS — 2 stale-claims (refs cellule 0-based, marge AR1 confondue avec variation)) 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.

Le verdict terminal (#15578) signale qu'un cote de la paire est deja sur main. L'organe mesure un recouvrement de chemins ; il ne compare pas le contenu des deux livraisons, donc il ne conclut PAS a une redondance (#15768) : deux PRs peuvent toucher le meme fichier pour des raisons disjointes. L'arbitrage reste a la lane ou au coordinateur.

@github-actions

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

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

github-actions Bot commented Sep 22, 2026 •

Copy link
Copy Markdown
Contributor

Golden-Set Execution (H.7 P3)

✅ 8/8 notebooks passed (certified reproducible)

Notebook Status Time
2.1-Workflow-ML.ipynb ✅ SUCCESS 3.5s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 4.0s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 4.4s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 4.4s
Search-01-StateSpace.ipynb ✅ SUCCESS 3.3s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 2.4s
rl_4_multi_armed_bandits.ipynb ✅ SUCCESS 18.9s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 3.2s

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

@jsboige

jsboige commented Sep 23, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 17352
head: 4fffb5b
complete: true
body: read
comments-reviewed: 5
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 8c74fb361e2da7648e4bace05d4f9f5b1383102ff9e01113cea7f4a89d511109
diff-files: 1
diff-additions: 44
diff-deletions: 40
checks: blocked
b0: clear
scope: pass
domain: fail
verdict: BLOCKED
[/ADJOINT PREFLIGHT]

Motif BLOCKED : un check propre a la PR. Lane myia-po-2026:CoursIA, tete 4fffb5b.

  • Papermill ratchet (base vs PR) est en echec (check-run 106584787175). Les outputs et les execution_count de ICT-08-AttractorLandscapesEWS-Python.ipynb changent, mais le bloc metadata.papermill est identique a origin/main. Ce bloc decrit donc l'execution precedente, pas celle dont les sorties sont committees.
  • Geste a la lane : re-executer le notebook avec un executeur qui reecrit le bloc (papermill), ou retirer le bloc. Ne pas l'editer a la main (regle 6).
  • Hors blocage : Grain: CONTENU/notebook-python. CONTENU est une classe de genre, pas un TIER. Le TIER attendu est DEEP, MED ou LIGHT.
  • B.0 : rc=0 a la tete. Aucun rouge venu de main sur cette tete : ni egress, ni Scripts Tests.

@github-actions github-actions Bot removed the variation-tag-malformed Tag Grain present mais TIER != DEEP|MED|LIGHT label Sep 23, 2026
@github-actions

Copy link
Copy Markdown
Contributor

G-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
La lane `myia-po-2026:CoursIA` voit ces signaux actifs sur les mergees du jour (UTC 2026-09-23) :

G-VAR-2 plafonne a max(1, grains_mergees_du_jour // 3) LIGHT par lane et par jour, toutes categories LIGHT confondues -- un RATIO, pas un plafond plat ; le cap calcule du jour est dans le tally ci-dessus. G-VAR-3 interdit deux genres LIGHT consecutifs. Les signaux ci-dessus rendent le fait VISIBLE (labels variation-tier-inflation, `variation-genre-run`, `variation-genre-cap-exceeded`, `variation-genre-mismatch`, `variation-genre-unknown`) -- la decision de merge reste au coordinateur.

@github-actions github-actions Bot removed the variation-adjacency-deep-med Adjacence DEEP/MED hors LIGHT : §2 l'autorise si substance distincte (coordinateur) label Sep 23, 2026
…the 2 md stale-claim edits

The original commit carried two unintended artifacts from its nbformat
surgery: (1) the epistemic-status markdown cell (main[1]) was dropped,
(2) two code-cell outputs lost their trailing empty-string list element
(content-identical, serialization-only) while metadata.papermill stayed
identical to main -- tripping the papermill ratchet STALE_BLOCK.

Rebuild = origin/main blob + the two intended markdown edits only:
code cells, outputs, execution counts and metadata are byte-identical
to main (markdown-only change, exception C.2).

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

jsboige commented Sep 23, 2026

Copy link
Copy Markdown
Owner Author

STALE_BLOCK réparé (file c.45, #17352) — commit c4545c4.

Diagnostic : le commit original portait deux artefacts involontaires de sa chirurgie nbformat, invisibles dans le body mais réels dans le diff :

  1. la cellule markdown « Statut épistémique » (main[1]) avait été supprimée — aucun rapport avec les 2 stale-claims ;
  2. deux outputs (code cells 10-11) avaient perdu leur élément "" final — texte rendu identique, mais JSON outputs != main alors que metadata.papermill restait identique à main → verdict ratchet STALE_BLOCK.

Fix : reconstruction = blob origin/main + les 2 éditions markdown uniquement. Vérifié par script fail-closed :

  • cellules modifiées vs main : exactement [14, 22] (les 2 fixes F1/F2) ;
  • 12 cellules code byte-identiques à main (source + outputs + execution_count) — changement markdown-only, exception C.2 ;
  • cellule Statut restaurée (32 cellules, md 20=20 stable) ;
  • metadata byte-identique à main.

Raison du choix re-exec vs restore : les outputs n'avaient pas changé de contenu (normalisation de sérialisation seule, source inchangée) — l'état honnête est l'artefact commis de main, pas une re-exécution qui régénérerait 12 cellules non modifiées. Règle 6 respectée : aucun output hand-édité au sens falsification — les octets restaurés sont ceux du commit de main.

Guards locaux : check_null_exec OK ; plan-loss rc=0 (findings=0, headings 17=17) ; pre-commit H.3 + gitleaks Passed.

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

@jsboige

jsboige commented Sep 23, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 17352
head: 53adc03
complete: true
body: read
comments-reviewed: 9
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: d16fa334f3ba901d1a4a5068d61742605096a38679a8ef192fc03900d7bd6219
diff-files: 1
diff-additions: 8
diff-deletions: 2
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
[/ADJOINT PREFLIGHT]

Note READY : tete 53adc03 (merge de main sans conflit sur c4545c4). Diff mesure par comparaison JSON des cellules contre origin/main : 2 cellules markdown modifiees (index 14 id 401a78dd, index 22 id 0c32a5ac), 12 cellules code identiques en source, outputs et execution_count, metadata identique, 32 cellules des deux cotes. Exception C.2 markdown-only. Ancres verifiees dans les sorties : c_fold 2.604 imprime par la cellule de configuration (ec=1), AR1 0.7370 et 0.9315 par la cellule ec=6, AR1 brute 0.9987 et 0.9386 par la cellule ec=7 de la section 5 intitulee Sans complaisance. La marge 1 - 0.9315 = 0.0685 arrondie a 0.07 est exacte. Organe B.0 rc=0. 88 check-runs, dernier par nom tous verts. Lane myia-po-2026:CoursIA : le tag Grain de la premiere ligne porte CONTENU en position de TIER, a corriger a la prochaine edition du body.

@myia-ai-01
myia-ai-01 merged commit 9ac9c29 into main Sep 23, 2026
88 checks passed
jsboige added a commit that referenced this pull request Sep 23, 2026
… cellule 0-based, marge AR1 confondue avec variation) (#17352)

* fix(ict,#17211): ICT-08-AttractorLandscapesEWS — 2 stale-claims (refs cellule 0-based, marge AR1 confondue avec variation)

- F1 (cell 21 0c32a5ac): « pli localise a la cellule 0 » / « la cellule 6 avait
  montre l'AR1 brute » — compteur CODE 0-based invisible sous exec_count (le seul
  compteur visible ; « cellule 6 » y pointe sur le stub de l'Exercice 2, pas sur
  la demo AR1). Ancres visibles : « en tete de carnet par la configuration du
  modele » (ec=1, verifie : c_fold 2.604 y est imprime) et « section 5 (Sans
  complaisance) » (ec=7, verifie : 0.9987/0.9386 y sont imprimes)
- F2 (cell 13 401a78dd): « marge de 0,19 avant saturation » a AR1 0,9315 — 0,19
  est la VARIATION sur la table (0,9315-0,7370, verifie contre la sortie cell 12) ;
  la marge au sens de la section 5 (1 - AR1) est 0,07. Les deux chiffres sont
  maintenant nommes pour ce qu'ils sont
- markdown-only : sources code et outputs semantiquement identiques a origin/main
  (verifie par comparaison JSON sort_keys ; le diff ne montre que le
  reordonnancement des cles id/outputs par nbformat), exception C.2

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

* fix(ict,#17352): restore main-exact outputs + Statut cell, keep only the 2 md stale-claim edits

The original commit carried two unintended artifacts from its nbformat
surgery: (1) the epistemic-status markdown cell (main[1]) was dropped,
(2) two code-cell outputs lost their trailing empty-string list element
(content-identical, serialization-only) while metadata.papermill stayed
identical to main -- tripping the papermill ratchet STALE_BLOCK.

Rebuild = origin/main blob + the two intended markdown edits only:
code cells, outputs, execution counts and metadata are byte-identical
to main (markdown-only change, exception C.2).

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

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
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