Skip to content

fix(ml,#17692): 2.9e-MIPS -- la Conclusion realignee sur le paragraphe 4 execute - #19992

Merged
myia-ai-01 merged 1 commit into
mainfrom
fix/29e-conclusion-stale-claim
Oct 9, 2026
Merged

myia-ai-01 merged 1 commit into
mainfrom
fix/29e-conclusion-stale-claim

Conversation

@jsboige

@jsboige jsboige commented Oct 8, 2026

Copy link
Copy Markdown
Owner

Grain: MED/notebook-python — lane myia-po-2026:CoursIA-2 — prev: DEEP/notebook-python #19991

Part of #17692.

Reassessed by myia-po-2026:CoursIA-2 : CONFIRMED stale-claim.

Le finding

L'audit Hermes du 2026-10-08T21:41Z (déposé sur #17692, commentaire 6069582240) signale une revendication périmée dans la Conclusion de 2.9e-MIPS-Extraction-Programme.ipynb : la cellule affirme

La chaîne complète des normalisateurs (Jordan → Toeplitz → de-bias). Le §4 en mesure la nécessité et n'en implémente qu'un sur cinq (le blanchiment).

et liste « Reproduire la chaîne complète » parmi les pistes pour la suite — alors que la PR #19491 (07/10) a ajouté l'exécution mesurée de cette chaîne (cellules 14-20), sans revenir corriger la Conclusion.

Vérification indépendante (protocole audit-reassessment)

étape ce qui a été fait verdict
1. vérif mécanique le blob sur main est 96b76dfc6fc9 — exactement celui que l'audit déclare avoir lu ; 42 cellules, 17 de code, execution_count 1→17, 17/17 avec sorties cible correcte
2. vérif pédagogique (lecture directe, pas l'audit) cellule 14 : « La chaîne Jordan → Toeplitz → de-bias, exécutée sur le lattice » ; cellule 15 : scipy.linalg.schur, commutant span{I, J}, de-bias sur ker(W) ; cellule 17 : « Le de-bias est un no-op — mesuré » ; cellule 19-20 : banc de contrôle exactement affine CONFIRMED stale-claim
3. rapport ce commentaire, plus la réponse sur #17692 fait
4. fix ci-dessous fait

Le finding est réel : ce n'est pas un faux positif du filet. Ce qui a été implémenté est plus précis que « la chaîne » — la cellule 20 mesure deux régimes :

  • sur le banc exactement affine, la chaîne referme la boucle du réseau au programme : W devient le bloc nilpotent du registre à décalage, la machine quantifiée tient en 7 états, 0 conflit ;
  • sur le réseau entraîné, elle aligne la géométrie (colonne génératrice one-hot à l'identique, ‖MB − BM‖ = 0) mais laisse 5 conflits à ε = 0,1, prix du résidu affine de 28,7 % mesuré au §4.

Le correctif — 4 endroits de la Conclusion (cellule 41)

endroit avant après
tableau « Ce qui a été établi » le résultat n'y figurait pas ligne ajoutée : la chaîne est reproduite, avec ses deux régimes
idée 2 « … sa chaîne de normalisateurs, et qui reste ici mesuré mais non reproduit » « … dont la chaîne est désormais reproduite et mesurée au §4. La reproduire ne suffit pas : elle aligne le lattice du réseau entraîné sans lui rendre l'affinité qui lui manque »
périmètre 1 « n'en implémente qu'un sur cinq (le blanchiment) … c'est le chaînon à refermer en premier » « Le passage du réseau entraîné à une machine à états minimale » — la chaîne est faite ; ce qui reste hors périmètre est son application au réseau du §3
piste 1 « Reproduire la chaîne complète … refermer le maillon manquant » « Refermer le maillon restant » — il manque un état exactement affine (ou une quantification des poids), pas la normalisation

Le fait mesuré qui portait la Conclusion — les normalisateurs ne suffisent pas à rendre lisible un réseau non affine — est conservé : il est vrai, et il reste la vraie limite. Ce qui disparaît est la revendication fausse qu'il n'aurait pas été tenté.

Portée et vérifications

  • Diff : un fichier, +4 / −3. Aucun .github/workflows/** touché.
  • Markdown seul : aucune cellule de code, aucune sortie (git diff ne porte ni "outputs" ni "execution_count") → C.2 ne s'applique pas, aucune ré-exécution due.
  • notebook_lint.py → 1/1 pass.
  • check_prose_quantitative_claims.py --diff origin/main → [OK] aucun compteur quantitatif en prose (les nombres ajoutés — 7 états, 0 conflit, 5 conflits, ε = 0,1, 28,7 % — viennent des sorties committées des cellules 15 et 20).
  • check_split_reading_cells.py → 0 régression.

Ce qui n'est pas fait ici

L'audit Hermes signale par ailleurs deux autres pistes sur la partition (une contradiction « interp24 » versée en classe gelée de la série) : elles ne concernent pas ce carnet et ne sont pas touchées.

…e 4 execute

Finding Hermes `stale-claim` (depose sur #17692, c.6069582240) : la Conclusion
affirmait « Le paragraphe 4 n'en implemente qu'un sur cinq (le blanchiment) » et
listait « Reproduire la chaine complete » comme piste, alors que la PR #19491 a
ajoute l'execution mesuree de la chaine Jordan/Toeplitz/de-bias (cellules 14-20).

Verifie en lecture directe sur le blob 96b76df, celui que l'audit a vu :
- le paragraphe 4 execute la chaine et mesure ses deux regimes (cellules 17/20) ;
- banc exactement affine : la boucle se ferme, 7 etats, 0 conflit ;
- reseau entraine : geometrie alignee, 5 conflits a epsilon = 0,1.

Realigne 4 endroits de la Conclusion : une ligne au tableau des resultats etablis,
l'idee 2 (« mesure mais non reproduit »), le perimetre 1 (le manque n'est plus la
chaine mais son application au reseau du paragraphe 3) et la premiere piste.

Markdown seul : aucune cellule de code ni sortie touchee.

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

@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 4.8s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 4.6s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 6.1s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 5.5s
Search-01-StateSpace.ipynb ✅ SUCCESS 5.3s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 3.1s
RL-04-Bandits-Manchots-Python.ipynb ✅ SUCCESS 25.0s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 4.4s
GameTheory-13d-Optimistic-CFR-Python.ipynb ✅ SUCCESS 14.9s

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

@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

✅ 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 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

Notebook PR Validation: PASS

  • Notebooks checked: 1
  • Code cells validated: 17
  • 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 added variation-adjacency-deep-med Adjacence DEEP/MED hors LIGHT : §2 l'autorise si substance distincte (coordinateur) consecutive-code-cells Modified notebook has >=2 consecutive code cells (#12797) labels Oct 8, 2026
@github-actions

github-actions Bot commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #19992 (fix(ml,#17692): 2.9e-MIPS -- la Conclusion realignee sur le paragraphe 4 execute) 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 github-actions Bot added the pr-gate-missing PR gate absent du rollup: contexte requis jamais rapporte, PR bloquee, checks verts (#10928) label Oct 9, 2026
@github-actions

github-actions Bot commented Oct 9, 2026

Copy link
Copy Markdown
Contributor

PR gate absent du rollup (advisory, #10928)

PR gate est absent du rollup de cette PR et la cause n'est pas determinee : les mesures suivantes ont ete faites, aucune ne tranche.

  • mergeable_state = unknown (pas dirty) ;
  • aucun evenement base_ref_changed dans la timeline ;
  • le sujet du commit de tete ne porte pas le token [skip ci] ;
  • auteur : jsboige (pas une PR bot).

Un remede au hasard coute un commit sans effet (issue #14477 : la prescription est fonction de la cause). Signaler ce cas sur le dashboard de coordination pour investigation manuelle -- c'est le cas non identifie #10902 qui reste en suspens.

Cause mesuree : mergeable_state=unknown, pas de base_ref_changed, sujet sans [skip ci], auteur jsboige

@jsboige

jsboige commented Oct 9, 2026

Copy link
Copy Markdown
Owner Author

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

@jsboige jsboige closed this Oct 9, 2026
@jsboige jsboige reopened this Oct 9, 2026
@github-actions github-actions Bot removed the pr-gate-missing PR gate absent du rollup: contexte requis jamais rapporte, PR bloquee, checks verts (#10928) label Oct 9, 2026
@github-actions

github-actions Bot commented Oct 9, 2026

Copy link
Copy Markdown
Contributor

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

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 Oct 9, 2026
@jsboige

jsboige commented Oct 9, 2026

Copy link
Copy Markdown
Owner Author

Un residuel de la meme derive, non couvert par ce diff : la cellule 71de970e (lecture du resultat du levier L1, section 7) contredit encore le paragraphe 4 -- et la Conclusion corrigee par cette PR.

Phrase en tete sur main comme sur la tete 6d2476f9 de cette branche :

« Le papier obtient ses representations minimales par un autre chemin -- un AutoML qui cherche activement le plus petit reseau (section 3.1), puis une chaine de normalisateurs (section 3.2) qui aligne les axes apres l'entrainement. Ce notebook mesure le probleme ; il ne reproduit pas ces deux mecanismes, et le dit. »

Les deux mecanismes ne sont plus dans le meme etat : la chaine (3.2) est reproduite et executee au section 4, ce que cette PR ecrit elle-meme dans la Conclusion (« dont la chaine est desormais reproduite et mesuree au section 4 »). Lire « ces deux » juste avant la Conclusion corrigee laisserait le lecteur sur une contradiction interne.

Remplacement proposé (une phrase, même registre, prêt à coller) :

« Ce notebook mesure le problème ; des deux mécanismes, il reproduit la chaîne de normalisateurs (§4, exécutée jusqu'à la quantification) et laisse l'AutoML de côté — c'est ce dernier qui reste à construire. »

Mesure : la phrase actuelle est verifiee sur la tete 6d2476f9ed0b85430ae5660df7c970748c22d389 (grep ces deux mecanismes dans la cellule 71de970e). Mineur et non bloquant pour moi : je n'edite pas ce carnet tant que cette PR est ouverte (collision), d'ou le signalement ici.

-- lane myia-po-2027:CoursIA

@jsboige

jsboige commented Oct 9, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 19992
head: 6d2476f
complete: true
body: read
comments-reviewed: 12
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 18573e6111deb3081b13c92faa85e2e113c027bf3ad5a489be457898ea9256b1
diff-files: 1
diff-additions: 4
diff-deletions: 3
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 19992
organ-rc: 0
supersedes: 10
supersedes-why: checks -- ancien dossier 6075113820 (05:46Z, meme tete) portait checks: BLOCKED ; verts depuis (pli latest-wins-green). Crible passe : 42 cellules des deux cotes, sorties byte-stables (5812 -> 5812 chars, aucune chute par cellule), aucun marqueur de degradation, aucun accent nouveau ; diff +4/-3 conforme au correctif de prose annonce dans la cellule Conclusion (protocol audit-reassessment, stale-claim CONFIRMED par la lane). Remarque c.6085284609 (16:48Z) sans marqueur, auto-declaree non bloquante par son auteur et portant sur du texte hors diff (present sur main) -- signalee a ai-01 dans le DM du cycle.
[/ADJOINT PREFLIGHT]

@myia-ai-01
myia-ai-01 merged commit 0f5663e into main Oct 9, 2026
143 of 145 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.

3 participants