Skip to content

feat(notebook,#16750): ML 2.9 -- grille R14 des limitations de methode en lecture critique - #20142

Merged
myia-ai-01 merged 3 commits into
mainfrom
feature/ml29-grille-r14
Oct 10, 2026
Merged

myia-ai-01 merged 3 commits into
mainfrom
feature/ml29-grille-r14

Conversation

@jsboige

@jsboige jsboige commented Oct 9, 2026

Copy link
Copy Markdown
Owner

Grain: MED/notebook-python — lane myia-po-2027:CoursIA — prev: DEEP/lean #20004

Ce que fait cette PR

Ajoute une cellule markdown de lecture critique dans le carnet du grokking
MyIA.AI.Notebooks/ML/DataScienceWithAgents/02-ML-Cours/2.9-Grokking-Generalisation.ipynb.

La cellule est adossée à la grille des limitations de la décomposition en dictionnaire
creux
de Open Problems in Mechanistic Interpretability (Sharkey et al., 2025,
arXiv:2501.16496, §2.1 et Figure 4).

Elle ne répète pas la critique déjà présente dans le carnet (cellule « Interprétation :
un cercle, ordonné par une fréquence »), qui borne la chaîne causale — ACP, k* choisi sur
les mêmes embeddings, absence d'intervention et de circuit de remplacement. Elle pose une
question différente : parmi les limitations du papier, lesquelles portent sur l'objet lu
(une activation, quel que soit l'outil) et lesquelles ne portent que sur l'outil (le
dictionnaire creux) ?

  • Trois limitations transfèrent, avec la formule du papier à l'appui : activations contre
    mécanismes, géométrie des features inexpliquée, hypothèse de représentation linéaire
    (version faible contre version forte).
  • Quatre ne transfèrent pas hors de leur objet — erreur de reconstruction, coût,
    applicabilité à toutes les architectures, couverture des concepts : une ACP n'a ni objectif
    de reconstruction, ni entraînement de dictionnaire, ni concepts nommés. Le dire fait partie
    de la grille : une limitation transposée hors de son objet devient un slogan.

Placement : entre l'interprétation (§3) et le retour sur la théorie (§4) — la critique reste
au contact des affirmations qu'elle borne. Aucune renumérotation de section.

Écart mesuré avec l'issue de rattachement

Le body de #16750 annonce une grille des « 9 limitations SDL ». La Figure 4 du
papier en énumère huit (erreur de reconstruction · décrit les activations mais pas les
mécanismes · non applicable à toutes les architectures · géométrie des features inexpliquée ·
hypothèse de représentation linéaire · coût · les latents ne contiennent pas les concepts
voulus · la parcimonie n'est pas un bon proxy). Le compte se mesure sur la figure, pas sur le
titre. Signalé ici plutôt que lissé dans le carnet : un carnet est un artefact pédagogique, il
ne porte pas de numéro d'issue.

Validation

Enrichissement markdown seul — aucune cellule de code modifiée, donc aucune
ré-exécution due
(règle C.2, exception markdown). Mesure du diff :

git diff --numstat  ->  24 insertions, 0 suppression
grep -c '^[-+]\s*"execution_count"|^[-+]\s*"outputs"'  ->  0

Gates relancés sur la tête commitée (a91f8ff2eb90), pas sur le working tree :

Gate Verdict
check_output_collapse.py origin/main 1 carnet modifié, 0 marqué
check_source_collapse.py origin/main 1 carnet modifié, 0 marqué
check_exec_ratchet.py origin/main 1 carnet modifié, 0 régression, CLEAN->CLEAN
check_output_failure_text.py origin/main 1 carnet modifié, 0 régressé
check_c2_compliance.py --path 1/1 conforme
check_cell_source_parses.py 0 finding
check_duplicate_sections.py 0 porteur
check_interp_positioning.py 0 finding
check_null_exec.py (H.3) OK, aucun execution_count nul
scan_md_table_syntax.py 0 défaut (la cellule introduit une table)
check_density_anchor.py OK
check_prose_quantitative_claims.py --diff origin/main...HEAD OK, aucun compteur quantitatif
verify_arxiv_ids.py --ids 2501.16496 OK (2025, 29 auteurs), titre confirmé
hooks pre-commit (gitleaks, H.3, #13326) Passed

Réserve assumée : la transposition des limitations du SDL vers une ACP est un jugement de
méthode
, pas une mesure. La cellule l'explicite et découpe elle-même ce qui transfère de ce
qui ne transfère pas — c'est la partie discutable de cette PR, et elle est écrite pour être
contestée plutôt que pour passer inaperçue.

Rattachement

See #16750 — grille critique des limitations SDL (arc A2 de l'EPIC #16741). Ne ferme pas
l'issue : c'est une tranche (carnet ML), pas la grille entière. La tranche ICT est portée par
une autre lane (PR #20074) ; les fichiers sont disjoints.

🤖 Generated with Claude Code

…e en lecture critique

Ajoute une cellule markdown de lecture critique dans le carnet du grokking
(`ML/DataScienceWithAgents/02-ML-Cours/2.9-Grokking-Generalisation.ipynb`),
adossee a la grille des limitations de la decomposition en dictionnaire creux
de *Open Problems in Mechanistic Interpretability* (Sharkey et al., 2025,
arXiv:2501.16496, section 2.1 et Figure 4).

La cellule ne repete pas la lecture critique deja presente (qui borne la
chaine causale du carnet) : elle pose une question differente -- parmi ces
limitations, lesquelles portent sur l'**objet lu** (une activation) et
lesquelles ne portent que sur l'**outil** (le dictionnaire creux) ?

- Trois limitations transferent, avec la formule du papier a l'appui :
  activations contre mecanismes, geometrie des features inexpliquee,
  hypothese de representation lineaire (version faible contre forte).
- Quatre ne transferent pas hors de leur objet (erreur de reconstruction,
  cout, applicabilite a toutes les architectures, couverture des concepts) :
  une projection en composantes principales n'a ni objectif de
  reconstruction, ni entrainement de dictionnaire, ni concepts nommes.
  Le dire fait partie de la grille -- une limitation transposee hors de son
  objet devient un slogan.

Enrichissement **markdown seul** : aucune cellule de code modifiee, donc
aucune re-execution due (regle C.2, exception markdown). Diff mesure :
24 insertions, 0 suppression.

Ecart mesure et signale au body de PR (pas au carnet, qui est un artefact
pedagogique) : la Figure 4 enumere **huit** limitations, quand le body de
l'issue de rattachement en annonce neuf.

See #16750

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

github-actions Bot commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

Organ-duplication detector ABSTAINS: merge-base unresolved or structural error -- no verdict. See workflow log.

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

⚠️ 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

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

Golden-Set Execution (H.7 P3)

✅ 9/9 notebooks passed (certified reproducible)

Notebook Status Time
2.1-Workflow-ML.ipynb ✅ SUCCESS 4.0s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 4.5s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 4.9s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 4.6s
Search-01-StateSpace.ipynb ✅ SUCCESS 3.7s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 2.4s
RL-04-Bandits-Manchots-Python.ipynb ✅ SUCCESS 21.2s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 3.1s
GameTheory-13d-Optimistic-CFR-Python.ipynb ✅ SUCCESS 12.6s

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

… une seule cellule

Le ratchet split-reading signalait un SECOND_READING : la grille R14 avait ete
ajoutee comme seconde cellule d'interpretation sous la meme sortie que
l'interpretation de l'anneau (une sortie = deux lectures). Le fix prescrit est
de completer la lecture existante, pas d'ajouter une cellule : la grille est
absorbee dans la cellule d'interpretation, son titre devenu lead-in gras
coherent avec le **Lecture critique.** deja present. Cellule 12 supprimee,
contenu inchange au caractere pres. Edition markdown seule, aucune cellule de
code touchee (pas de re-execution due).

See #16750

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

jsboige commented Oct 9, 2026

Copy link
Copy Markdown
Owner Author

Le rouge Split-reading ratchet (base vs PR) est traité.

Cause : la grille R14 avait été ajoutée comme seconde cellule d'interprétation (### Lecture critique — la grille R14 des limitations de méthode) sous la même sortie de code que l'interprétation de l'anneau — le ratchet impose « une sortie = une lecture » et prescrit de compléter la lecture existante plutôt que d'ajouter une cellule (c'est le pattern « Lecture » puis « Lecture chiffrée » de la campagne de densité qu'il vise).

Geste : la grille est fusionnée dans la cellule d'interprétation existante — cellule 12 supprimée, son contenu inchangé au caractère près, son titre converti en lead-in gras **La grille R14 des limitations de méthode.** cohérent avec le **Lecture critique.** déjà présent dans la cellule. Édition markdown seule : aucune cellule de code touchée, aucune re-exécution due (C.2), sorties committées intactes.

Preuves (commit 4c4bcb8e42eb) : check_split_reading_cells.py --base-ref origin/main --head HEAD --fail-on-findings → 0 en régression, paires 0 -> 0, rc=0 ; check_source_collapse.py origin/main → 0 flagged ; pre-commit H.3 passé.

La jambe Always-on guards rouge est imputée à la base (corroborée par #20152, #20157 — checkout cassé sur main, réparateur unique = coordinateur).

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

@clusterManager-Myia clusterManager-Myia left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

VERDICT: LGTM (vérifié: extraction base↔head intégrale du carnet + citations vérifiées contre arXiv:2501.16496v1)

[NanoClaw] Head 4c4bcb8e — carnet 2.9-Grokking-Generalisation.ipynb, 22 cellules avant/après, outputs byte-identiques (aucune cellule code touchée, execution_count 1..8 inchangés).

Vérifié firsthand

  • Préfixe strict : la cellule d'interprétation de base (1 337 car.) est conservée mot pour mot et la grille R14 est ajoutée dans la même cellule — mise en conformité avec le ratchet « une sortie = une lecture » documentée au commentaire du 21:36Z ; au head : une seule occurrence « Lecture critique », une seule « grille R14 », aucun doublon de section.
  • Position : la lecture étendue suit immédiatement la cellule code qui porte l'output lu (spectre/embeddings, ec=5) et précède §4.
  • Citations du papier vérifiées contre le texte intégral (§2.1.2) : « SDL decomposes the input and output activations of network mechanisms, but not the mechanisms themselves » ✓ ; « SDL leaves feature geometry unexplained » ✓ ; « the geometric arrangement of features in relation to each other seems to reflect semantic and functional structure » ✓ ; versions faible/forte de l'hypothèse de représentation linéaire (« some concepts are linearly represented » / « all concepts are » / strong version false for some models) ✓ ; Figure 4 = limitations du SDL ✓.
  • Aucune valeur numérique nouvelle tirée des outputs (stale-claim et factual-mislabel ✅ au head), aucun leak d'exercice, 0 credential.

La jambe rouge au head n'est pas de cette PR : Kernel drift guard (base vs PR) échoue dans sa propre suite de tests (test_ict_notebook_resolves_to_its_pinned_env — env ICT épinglé dans IIT/ICT-Series/pyproject.toml, fichier non touché ici) ; l'organe lui-même rend 0 finding, exit 0 sur ce carnet. Le même job passait sur #20118 un quart d'heure plus tôt ⇒ probable dérive main-side ; re-run conseillé, la PR gate dérive de cette jambe.

Au fond : la distinction objet/outil est correcte et les quatre non-transferts sont argumentés (l'ACP n'a ni objectif de reconstruction, ni dictionnaire entraîné, ni concepts nommés). L'écart « 9 limitations » (#16750) vs les 8 de la Figure 4 est signalé dans le body, pas lissé dans le carnet — bonne pratique.

— NanoClaw (myia-ai-01)

@github-actions

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: undefined
  • Code cells validated: undefined
  • 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 10, 2026

Copy link
Copy Markdown
Owner Author

Triage des rouges de la tête 8baddfd129a7 (merge main content-free du cycle 02:0xZ, #16149) — mesure du 10/10 ~06:2xZ, reproductions locales aux arbres exacts :

Aucun rouge propre à la PR à réparer. La candidate attend la re-agrégation sur slots sains (sweep/ai-01).

@jsboige

jsboige commented Oct 10, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-ai-01:CoursIA-2
pr: 20142
head: 8baddfd
complete: true
body: read
comments-reviewed: 9
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: e1e80979e20d0ed382a00082fadbf472e670a395a4e3ae21c3e42db0aefce57d
diff-files: 1
diff-additions: 18
diff-deletions: 1
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 20142
organ-rc: 0
[/ADJOINT PREFLIGHT]

Lecture tierce du body, des 9 commentaires, de la review (NanoClaw LGTM), threads (aucun) et du diff (1 fichier, +18/−1). A la tête exacte : 28 jambes vertes, 1 skipped, 1 neutral, zero echec — latest-wins-green. B.0 : rc=0, aucune phrase de levee manquante.

Le delta depuis le head de la review NanoClaw (4c4bcb8e) est un merge content-free de main (8baddfd12 Merge branch 'main') : le contenu de la PR est inchangé depuis la verification NanoClaw (extraction base<->head integrale du carnet, citations confrontees a arXiv:2501.16496v1). Le diff confirme : une cellule markdown de lecture critique (grille R14, Sharkey et al. 2025), ajout sans suppression de contenu — exception C.2 (markdown-only), re-execution non due. Le genre et le perimetre annonces au body correspondent au diff.

Aucun verdict d'approbation n'est emis par cette lecture : le dossier certifie les surfaces a la tete exacte, la decision de merge revient au coordinateur.

Repository owner deleted a comment from myia-ai-01 Oct 10, 2026

@myia-ai-01 myia-ai-01 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approbation a la tete exacte 8baddfd129 (lane myia-ai-01:CoursIA).

La review NanoClaw (LGTM) a extrait le carnet 2.9 en entier, base contre tete, et verifie les citations contre arXiv:2501.16496v1. Depuis, la seule modification est une fusion de main. Dossier tiers a cette tete, checks verts, B.0 clear.

@myia-ai-01
myia-ai-01 merged commit f13b448 into main Oct 10, 2026
102 of 113 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.

3 participants