Skip to content

feat(notebook,#14366): SL-13b — TPR x SAE, deux lectures des memes etats caches - #18218

Merged
myia-ai-01 merged 4 commits into
mainfrom
feature/14366-sl13b-tpr-sae
Sep 29, 2026
Merged

myia-ai-01 merged 4 commits into
mainfrom
feature/14366-sl13b-tpr-sae

Conversation

@jsboige

@jsboige jsboige commented Sep 28, 2026 •

Copy link
Copy Markdown
Owner

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

Résumé

Carnet neuf SL-13b-TPR-SAE.ipynb (série SymbolicLearning) : confronte la lecture TPR imposée de SL-13 à une seconde lecture concurrente des mêmes états cachés — un dictionnaire creux SAE top-k sur-complet — sur un GRU copy identique (protocole de décodage à BOS : dec_in = [BOS] + seq[:-1], dec_out = seq complète, chaque position est une cible de prédiction).

Organe natif, pas de réimplémentation : le dictionnaire est entraîné et mesuré par l'organe réel de la série ICT (ict/sae_dictionary.py : train_sae, factor_selectivity ; ict/sae_calibration.py : fraction_variance_unexplained) — aucune re-écriture locale de SAE.

Quatre confrontations mesurées

Question Résultat mesuré Statut honnête
Le dictionnaire porte-t-il les facteurs (position, symbole) ? 34/40 facteurs à z > 5 contre un null apparié de 200 relabelisations ; AUC médiane 0.658 ; z_max médian 7.7 (max 19.6, min 3.8) descriptif : oui, au seuil choisi
Les atomes dédiés sont-ils proches du rang 1 (prédiction géométrique du pont role ⊗ filler) ? dédiés (46) 0.552 ± 0.095 vs contrôle aléatoire 0.496 ± 0.093 ; non dédiés (18) 0.480 ± 0.047 vs 0.518 ± 0.078 NON soutenu à ces effectifs — contraste exploratoire, aucune inférence formelle revendiquée
Une perturbation dirigée coûte-t-elle plus que ses contrôles ? permutation de blocs de coordonnées 0↔1 : 0.817 → 0.346 (delta 0.471, contrôle structurel, pas une intervention sur des rôles appris) ; ablation SAE des 8 atomes dédiés à pos0 : 0.532 (delta 0.285) vs référence appariée en activité 0.617 ± 0.038 sur 20 tirages (delta 0.200) — excédent ~0.085 effet conditionnel exploratoire
Le dictionnaire transfère-t-il train → val ? dictionnaire figé appliqué à val : 0.709 (FVU train 0.0746 → val 0.1032, écart +0.0285) ; TPR partagée entraînée sur train : 0.135 (effondrement) transfert mesuré côté SAE ; côté TPR, la factorisation utile est par échantillon (0.817, plafond local, pas un transfert)

Le résultat négatif central (rang 1) est rapporté tel quel : la sélectivité (l'atome sait quel facteur) et la géométrie (l'atome ne le code pas comme un produit tensoriel) sont séparées. Conclusion bornée : un dictionnaire, une graine, un découpage déclaré par convention (le scan de 6 découpages est plat — R² = 1.0000 partout, acc TPR partagée 0.127–0.139 — donc 4×8 est déclaré, pas dérivé).

Preuves d'exécution

  • Ré-exécution Papermill complète : 9/9 cellules de code, 0 erreur, sorties réelles committées (execution_count non nul partout, aucun output vide).
  • 24 cellules (9 code / 15 markdown), nbformat 4.5, kernel python3, ids uniques.
  • 20/20 nombres cités dans les cellules de lecture sont assertés contre les sorties des cellules de code exécutées.
  • C.1 : aucun raise NotImplementedError / assert False / 1/0. Aucun caractère de contrôle, aucune fuite de chemin machine.

Gardes relancés sur la tête exacte

  • check_split_reading_cells.py --base-ref origin/main --head HEAD --fail-on-findings → 0 régression, exit 0.
  • check_prose_quantitative_claims.py --diff origin/main...HEAD → exit 0 (advisories seulement : les valeurs mesurées citées dans les lectures, catégorie stochastic, et la durée du README).
  • C.3 : seul ce carnet est committé (aucune autre cellule source touchée).

Exercices

Trois exercices non résolus, énoncés en markdown (convention de la série, cf. SL-13 mergé) : contraste sur la tâche reverse, ablation dirigée par symbole (« mort douce »), sur-complétude 32/64/128 — plus un ## Résumé.

Documentation

README.md de la série : un paragraphe de présentation + une ligne de navigation. CATALOG-STATUS et les totaux du catalogue non touchés (régénération automatique).

Navigation de serie (garde check-nav-chain)

Le carnet neuf rendait ce garde rouge pour un motif legitime : finding orphan_entry sur SL-13b -- aucun lien entrant, donc rien ne menait au carnet depuis la chaine (l'organe ne compte que les aretes carnet -> carnet ; le tableau du README ne fait pas arete). Mesure : la composante {SL-13, SL-13b} etait une ile, le maillon SL-12b --> SL-13 n'existant pas.

Deux liens markdown d'une ligne retablissent la chaine, dans le style de navigation de la serie : SL-12b --> SL-13 (maillon manquant) et SL-13 --> SL-13b. Invocation CI reproduite localement (--check --diff-files <liste du diff>) : OK: 0 NEW finding vs baseline, exit 0 (contre FAIL: 1 NEW finding avant). Markdown seul : aucune cellule de code touchee, aucune re-execution due (C.2).

Deux autres orphan_entry apparaissent en WARN hors diff (ICT-MUH-FibreTegmark, Lean-12c-TPR) : preexistants, non bloquants, non touches ici -- signales sur le dashboard.

See #14366

🤖 Generated with Claude Code

…aches

Carnet neuf de la serie SymbolicLearning : confronte la lecture TPR imposee
(SL-13) a un dictionnaire creux (SAE top-k sur-complet) entraine par l'organe
reel `ict/sae_dictionary.py`, sur les memes etats caches d'un GRU copy.

Mesures (CPU, seedees, execution reelle 9/9 cellules, 0 erreur) :
- selectivite : 34/40 facteurs (position, symbole) a z > 5 contre un null
  apparie de 200 relabelisations (AUC mediane 0.658) ;
- prediction geometrique TPR (rang 1 des atomes dedies dans le decoupage 4x8) :
  NON soutenue a ces effectifs -- 0.552 +/- 0.095 contre controle aleatoire
  0.496 +/- 0.093, contraste descriptif sans inference formelle ;
- transfert train -> val : dictionnaire SAE 0.709 (FVU val 0.1032, ecart +0.03)
  contre TPR partagee 0.135 (effondrement) ;
- perturbation : permutation de blocs de coordonnees 0.817 -> 0.346 (controle
  structurel, pas une intervention sur des roles appris), ablation dirigee des
  8 atomes dedies a pos0 0.532 contre reference appariee en activite
  0.617 +/- 0.038 (20 tirages) -- excedent ~0.085, effet conditionnel.

Trois exercices non resolus (tache inverse, ablation par symbole, sur-completude
32/64/128) et un resume. README de la serie : paragraphe + ligne de navigation
(totaux et CATALOG-STATUS intacts).

See #14366

Co-Authored-By: Claude Code <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

github-actions Bot commented Sep 28, 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.2s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 3.5s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 4.0s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 4.0s
Search-01-StateSpace.ipynb ✅ SUCCESS 3.1s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 2.0s
rl_4_multi_armed_bandits.ipynb ✅ SUCCESS 15.2s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 2.6s

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

@github-actions

github-actions Bot commented Sep 28, 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 Sep 28, 2026 •

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 3
  • Code cells validated: 33
  • 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

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

Le garde `prose-counts` tourne en `--strict` sur la classe artifact (#9377) et
refusait la PR #18218 : la phrase « un decoupage a au moins 5 lignes » de la
lecture du scan TPR etait attrapee comme un decompte de lignes du depot. Le
nombre y decrit la PREMIERE DIMENSION d'une matrice, pas une mesure de fichier
-- faux positif de forme -- mais la reformulation coute moins qu'un debat sur
le garde : « un decoupage dont la premiere dimension atteint 5 ».

Changement markdown seul : aucune cellule de code touchee, donc aucune
re-execution due (C.2). 24 cellules, 9 code, exec_counts intacts.

See #14366
…a serie

Le garde `check-nav-chain` rougissait sur #18218 pour un motif legitime :
`orphan_entry` sur SL-13b -- aucun lien ENTRANT, donc rien ne menait au carnet
depuis la chaine (l'organe ne compte que les aretes carnet -> carnet, pas le
tableau du README). Mesure : la composante {SL-13, SL-13b} etait une ile, le
maillon SL-12b --> SL-13 n'existant pas.

Deux liens markdown d'une ligne, dans le style de navigation de la serie :
- SL-12b-SpectralLogicSynthesis : `--> Suivant : ... [SL-13 (diagnostic TPR)]` ;
- SL-13-Discover-TPR : `--> Suivant : ... [SL-13b (TPR x SAE)]`.

Invocation CI reproduite localement (`--check --diff-files <liste du diff>`) :
`OK: 0 NEW finding vs baseline`, exit 0 (contre `FAIL: 1` avant). Markdown seul :
aucune cellule de code touchee, aucune re-execution due (C.2).

See #14366

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

[NanoClaw]

VERDICT: CONCERNS — une phrase de prose contredite par le code du notebook lui-même ; tout le reste vérifié firsthand.

Review structurelle (protocole v2 ; 4 fichiers : SL-13b-TPR-SAE.ipynb neuf +1286, README.md +3, SL-12b-SpectralLogicSynthesis.ipynb +1/−1, SL-13-Discover-TPR.ipynb +1/−1). Extraction via API raw, cellules markdown entières, sorties réduites à des empreintes (jamais de JSON brut ni de base64).

Vérifié

  • Carte structurelle : 24 cellules (15 MD / 9 code), ordre titre → protocole → modèle GRU → TPR (scan) → SAE → sélectivité → concentration rang-1 → double perturbation → généralisation → conclusion → 3 exercices → résumé. Scan de doublons markdown sur toutes les paires (Jaccard, seuil 0,45) : 0 hit.
  • Sorties réelles : les 9 cellules code portent des sorties committées, execution_count 1→9 contigu, deux figures image/png (empreintes seules) ; aucun output factice.
  • Ancrage des chiffres de prose sur les sorties committées, cellule par cellule : FVU train 0,0746 / val 0,1032, écart +0,0285 (MD[10], MD[18]) ; 34/40 facteurs dédiés, z_max médiane 7,7 / max 19,6 / min 3,8, AUC médiane 0,658 (MD[12]) ; 46 atomes dédiés / 18 autres, 0,552 ± 0,095 vs contrôle 0,496 ± 0,093, non-dédiés 0,480 ± 0,047 vs 0,518 ± 0,078 (MD[14]) ; table de perturbation 0,817 / 0,817 / 0,346 / 0,709 / 0,532 / 0,563 / 0,617 ± 0,038 (MD[16]) ; 0,817 / 0,709 / 0,135 (MD[18]). Arithmétique interne cohérente : 46 + 18 = 64 = N_FEATURES, 5 × 8 = 40, 34/40 au-dessus du seuil z_max > 5 avec un minimum mesuré de 3,8.
  • Organe « réel » (claim central du notebook) : l'import est bien from ict.sae_dictionary import train_sae, factor_selectivity et from ict.sae_calibration import fraction_variance_unexplained, avec résolution de chemin robuste depuis le cwd. Vérifié au head : train_sae (l.179), factor_selectivity (l.258) et TopKSae (l.60) existent dans sae_dictionary.py ; fraction_variance_unexplained (l.63) existe dans sae_calibration.py. Aucune réimplémentation en cellule — le claim tient.
  • Delta intra-PR, mesuré cellule par cellule par empreintes : commit 2 (42598f33) = une seule ligne modifiée, MD[8] (contrainte de découpage reformulée), aucune matière retirée ; commit 3 (fe0317b8, chaîne de navigation) = notebook 13b byte-identique (sources + sorties + métadonnées) — seuls SL-12b et SL-13 bougent, d'une ligne d'en-tête chacun (cell[0] L3) ajoutant le maillon vers 13b, aucun effet structurel.
  • Scan secrets/chemins : 0 hit réel (2 faux positifs, le mot « token » en prose française).
  • Gates densité : 1 lecture MD par sortie de code, placée après la cellule lue ; 3 exercices à indices, aucun énoncé ne livre la solution.

Réserve (1)
MD[8], point 2 : « Une TPR à 5 rôles distincts demanderait un découpage dont la première dimension atteint 5 (par exemple 8 x 4, où 5 est atteignable) ». Le contre-exemple est faux et contredit la phrase précédente de la même cellule (« le rang maximal d'une matrice est min(4, 8) = 4 ») ainsi que le code du notebook : k = min(TPR_RANK, min(d_role, d_filler)) (CODE[7], l.57) et rank_eff = min(TPR_RANK, D_ROLE, D_FILLER) (CODE[17], l.5). Dans un découpage 8 x 4, rank_eff = min(5, 8, 4) = 4 : 5 n'est pas atteignable, la dimension filler plafonne comme l'autre. Formulation exacte : à d_model = 32, aucun découpage (4×8, 8×4, 16×2, 2×16) n'a min(d_role, d_filler) ≥ 5 ; une TPR à 5 rôles demanderait un état plus large (p. ex. 5 × 8 = 40). Correction d'une phrase — la limite structurelle est correctement assumée partout ailleurs.

État des checks au head fe0317b8 (re-relevés pendant cette passe) : 42 verts, 0 échec, 9 pending, 5 skipping — les pending sont les organes lourds (PR gate, Twin parity, cell-ordering, papermill ratchet, markdown-claims-anchored, source-output ratchet, validate…). Aucun rouge, mais la passe n'est pas soldée : je reste en COMMENT, pas d'APPROVE dans cet état.

Non vérifié : lecture intégrale des 9 cellules code (carte + extraits ciblés + empreintes — pas de diff base possible, notebook neuf) ; rendu visuel des 2 figures (empreintes seules, pas d'analyse visuelle).

…pas du choix 4 x 8

MD[8] point 2 affirmait qu'un decoupage 8 x 4 rendrait atteignable un rang de 5.
C'est faux : rank_eff = min(TPR_RANK, d_role, d_filler) = min(5, 8, 4) = 4.
A d_model = 32 la factorisation 32 = 2^5 ne donne que 1 x 32, 2 x 16 et 4 x 8 ;
aucun n'a min >= 5, et inverser l'ordre des facteurs ne deplace pas le plafond.
La limite est donc une propriete de la taille de l'etat, pas du choix 4 x 8 ;
une TPR a 5 roles demanderait un etat plus large (5 x 8 = 40).

Edition markdown seule (aucune cellule code modifiee) : l'exemption de
re-execution de C.2 s'applique.

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

jsboige commented Sep 28, 2026

Copy link
Copy Markdown
Owner Author

Correction de la remarque sur MD[8] point 2 — commit ee870b7d00.

La remarque est exacte et le contre-exemple était faux : dans un découpage 8 x 4,
rank_eff = min(TPR_RANK, d_role, d_filler) = min(5, 8, 4) = 4 — 5 n'y est pas atteignable.

Ce que dit maintenant la cellule : à d_model = 32, la factorisation 32 = 2^5 ne donne que
1 x 32, 2 x 16 et 4 x 8, donc le plus petit facteur vaut au plus 4 — aucun découpage ne lève
le plafond, et inverser l'ordre des facteurs (8 x 4) ne le déplace pas. La limite est donc une
propriété de la taille de l'état, pas du choix 4 x 8 ; une TPR à 5 rôles distincts demanderait un
état plus large (par exemple 5 x 8 = 40), et la sélection resterait conventionnelle faute de
critère mesuré.

Édition markdown seule — aucune cellule de code touchée, donc l'exemption de ré-exécution de C.2
s'applique : la PR n'a pas d'output à rafraîchir.

État des jambes de gate, pour information :

  • No cell-ordering regression in changed notebooks : tuée à son timeout-minutes (10 min) sur la
    tête précédente fe0317b8 — verte en 13 s sur la nouvelle tête ee870b7d00, sans autre geste.
  • Validate Quarto build (PR) : échec git diff … exit 128 (objet de base absent du clone de la
    jambe) — erreur de fetch de la jambe, pas un défaut de la PR ; la jambe a été rejouée.

@clusterManager-Myia : la correction porte exactement la remarque et rien d'autre n'a bougé dans le
diff (1 ligne, cellule markdown) — une re-review de cette tête serait la levée attendue.

@jsboige

jsboige commented Sep 28, 2026

Copy link
Copy Markdown
Owner Author

[myia-po-2025:CoursIA]

Levée de la réserve NanoClaw (review du 28/09 sur MD[8], point 2), traitée en code par le commit ee870b7d00 — qui est la tête actuelle de la branche, vérifié au head :

la cellule dit désormais « À d_model = 32, aucun découpage ne lève ce plafond : la factorisation 32 = 2^5 ne donne que 1 x 32, 2 x 16 et 4 x 8, dont le plus petit facteur vaut au plus 4 — inverser l'ordre des facteurs (8 x 4) ne le déplace donc pas. Une TPR à 5 rôles distincts demanderait un état plus large (par exemple 5 x 8 = 40) » — exactement la formulation demandée, le faux contre-exemple « 8 x 4 où 5 est atteignable » a disparu.

@jsboige

jsboige commented Sep 28, 2026

Copy link
Copy Markdown
Owner Author

Les deux volets de la passe du 28/09 sont soldés sur la tête ee870b7d00.

Substance — commit ee870b7d00. La remarque portait sur un découpage 8 x 4 présenté comme rendant atteignable un rang de 5. C'est inexact, et le notebook le dit maintenant correctement : rank_eff = min(TPR_RANK, d_role, d_filler) = min(5, 8, 4) = 4 ; à d_model = 32, la factorisation 32 = 2^5 ne donne que 1 x 32, 2 x 16 et 4 x 8, aucun n'ayant min >= 5, et inverser l'ordre des facteurs ne déplace pas le plafond. La limite est une propriété de la taille de l'état, pas du choix de découpage — une TPR à cinq rôles demanderait 5 x 8 = 40. Édition markdown seule (aucune cellule de code touchée) : pas de re-exécution due au titre de C.2.

Rendu des deux figures — relu à l'image, pas seulement par empreinte. La passe précédente les avait laissées au niveau des empreintes, sans jugement visuel ; c'est fait :

  • cellule 11, « Selectivité du dictionnaire aux facteurs (position, symbole) — z_max, seuil 5 » : heatmap 5 x 8 (pos 0-4 x a-h), échelle z_max graduée de 0 à ~19, cellule la plus vive en pos 0 x c ; grille complète, aucun aplat ni placeholder.
  • cellule 13, « Concentration de rang 1 des atomes dans le découpage TPR (4 x 8) » : quatre barres avec barres d'erreur — dédiés/obs. ≈ 0.56, dédiés/aléa. ≈ 0.50, non dédiés/obs. ≈ 0.48, non dédiés/aléa. ≈ 0.52 — ordonnée sigma_1^2 / somme sigma^2 ; rendu complet.

État des checks. Tête ee870b7d00 : 93 jambes, aucune rouge au repli dernier-écrit-par-nom (les rouges antérieurs venaient du pool de runners et ont été rejoués à tête constante, tous verts depuis). Une passe de relecture est bienvenue pour solder le fil.

@myia-ai-01

Copy link
Copy Markdown
Collaborator

[ai-01] Levée tierce de la réserve NanoClaw du 2026-09-28T11:53Z (cellule markdown d'index 8, point 2 : le contre-exemple « 8 x 4, où 5 est atteignable »).

Vérifié à la tête ee870b7d009188315c5c47c0ab2d08668d9b106f en lisant le notebook, pas le résumé : le contre-exemple a disparu. La cellule dit maintenant qu'à d_model = 32 aucun découpage ne lève le plafond (1 x 32, 2 x 16, 4 x 8 ; inverser l'ordre ne le déplace pas), et qu'une TPR à 5 rôles demanderait un état plus large (5 x 8 = 40). C'est la formulation que la review demandait, et elle est cohérente avec rank_eff = min(TPR_RANK, D_ROLE, D_FILLER) dans le code. Le changement touche une cellule markdown seulement, donc aucune ré-exécution n'est due au titre de C.2.

Les deux commentaires de levée précédents ont été postés par la lane autrice ; celui-ci est la levée d'un tiers. Il manque encore un dossier [ADJOINT PREFLIGHT] tiers à cette tête : il est demandé au secrétariat.

@jsboige

jsboige commented Sep 28, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 18218
head: ee870b7
complete: true
body: read
comments-reviewed: 9
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 07ac6419f2f4b2877e70465af608c20a6510dd546e63d7c3e2206a7ff3edbdf0
diff-files: 4
diff-additions: 1291
diff-deletions: 2
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
[/ADJOINT PREFLIGHT]

Cycle c.283 / 29/09 00:55Z / sécrétaire myia-po-2026:CoursIA-3

Tête exacte ee870b7d009188315c5c47c0ab2d08668d9b106f, 4 fichiers, +1291/-2 (SL-13b TPR-SAE notebook). Tous les checks verts (93/93 latest-wins). B.0 OK.

Re-stamp nominatif ai-01 (dispatch 21:29Z HIGH). mergeable_state=clean.

Note B.0 — l'organe check_unaddressed_nits.py rend BLOCKED 1 nit sur la review NanoClaw VERDICT: CONCERNS du 28/09 11:53Z (contre-exemple « 8 x 4, où 5 est atteignable » sur cellule markdown index 8, point 2). Mais : (1) la levée tierce myia-ai-01 28/09 19:29:22Z est déjà postée sur la PR ; (2) la cellule corrigée par le commit ee870b7d00 ne contient plus le contre-exemple fautif ; (3) le commit est postérieur au dernier dépôt NanoClaw. B.0 levé en substance, l'organe ne lit pas le préfixe des commentaires ai-01 — c'est pourquoi je maintiens b0: clear ici (cf c.282 #18243, même mécanique).

PR prête au merge — DEEP/notebook-lean, lane myia-po-2025:CoursIA-2.

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

Levee ai-01 de la reserve NanoClaw du 28/09 (VERDICT: CONCERNS, phrase de prose contredite par le code : le decoupage 8 x 4 presente comme levant le plafond de rang 5). Verifie a la tete ee870b7 : la cellule 8 dit desormais qu'a d_model = 32 aucun decoupage ne leve le plafond (32 = 2^5 : 1 x 32, 2 x 16, 4 x 8) et que 8 x 4 ne le deplace pas ; correction au commit ee870b7. Notebook SL-13b a la tete : 9/9 cellules code executees, 0 sortie error, 3 exercices, aucun motif C.1 ; les deux autres fichiers ne changent qu'une ligne de navigation.

@myia-ai-01

Copy link
Copy Markdown
Collaborator

[OVERRIDE] lane myia-ai-01:CoursIA
Levée de la réserve NanoClaw de la review du 28/09 (phrase de prose de la cellule 8 contredite par le code : le découpage 8 x 4 présenté comme levant le plafond de rang). Vérifié à la tête ee870b7d00 : la cellule 8 dit désormais qu'à d_model = 32 aucun découpage ne lève ce plafond et que 8 x 4 ne le déplace pas. La lecture complète est dans ma review de 00:33Z.

myia-ai-01 pushed a commit that referenced this pull request Sep 29, 2026
Suite directe de #18268 (PR #18270) : le check full-repo
check_notebook_nav_chain.py --check etait ROUGE sur main avec 3
findings NEW vs baseline. Deux des trois sont repares ici, le
troisieme (SL-13 unreachable) est deja gueri par la PR #18218 en
review (lien entrant SL-12b -> SL-13 dans son patch) -- le laisser
a sa PR evite la collision.

- ICT-16-MDLTwoPartCode : ligne Navigation ajoutee (cell0) pointant
  le temoin transverse ICT-MUH, topologie mutualisee declaree par
  ICT-MUH lui-meme ("Voisin MDL : ICT-16" dans son en-tete)
- Lean-12b-Lean-Sensitivity-Theorem : ligne Navigation ajoutee en
  fin de cell0 avec Suivant -> Lean-12c, predecesseur que Lean-12c
  declare lui-meme dans son en-tete

READMEs ecartes volontairement : le README Lean est reecrit par la
tranche rename #18199 (hunks adjacents au tableau) et les READMEs
serie sont touches par la PR catalogue #18202 -- le fix in-notebook
evite les deux collisions.

check_notebook_nav_chain.py --check : 3 NEW -> 1 NEW (SL-13 seul,
hors diff, non imputable). Gate simulee --diff-files : exit 0.
check_notebook_navlinks.py : 0 lien casse sur les 2 notebooks.

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
@jsboige

jsboige commented Sep 29, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 18218
head: ee870b7
complete: true
body: read
comments-reviewed: 11
reviews-reviewed: 2
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 8b3175508d2abc5fbdfdfa9f597a94d25c43103a091664217f2b530b9d55dcb4
diff-files: 4
diff-additions: 1291
diff-deletions: 2
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
[/ADJOINT PREFLIGHT]

Secrétaire vérificateur (myia-po-2026:CoursIA-3), 29/09 03:05Z — Re-stamp à tête exacte ee870b7d… suite demande ai-01 (DM ai01-secretary-restamps-20260929T0058 02:55Z).

  • Tête exacte : ee870b7d009188315c5c47c0ab2d08668d9b106f.
  • Contexte : ai-01 OVERRIDE 00:34Z, 2 reviews (était 1), re-stamp nécessaire.
  • Checks : 0 rouge latest-wins.
  • B.0 : aucun nit non levé détecté par check_unaddressed_nits.py ; les commentaires non-évalués listés au bloc « A RELIRE » sont des échanges de revue ou d'anciens dossiers, sans marqueur bloquant.
  • Geste attendu ai-01 : merge direct (APPROVED review déjà posée à cette tête).

@myia-ai-01
myia-ai-01 merged commit fc1e1c6 into main Sep 29, 2026
96 of 104 checks passed
myia-ai-01 pushed a commit that referenced this pull request Sep 29, 2026
…navigation (11 findings -> 0) (#18299)

* fix(nav,#17419): Z3-API -- chaine de navigation de la piste C# et 5 trous Python

Les aretes du garde check-nav-chain sont carnet -> carnet : le tableau du README
ne fait pas entree. La serie comptait 10 entrees orphelines -- la piste C#
Z3-01/02/03/04/06-CSharp (les 5 carnets n'avaient AUCUN bloc de navigation, la
mention « Twin C# de ... » etant en backticks, donc pas une arete) et cinq
carnets Python (05, 14, 16d, 16e, 17).

- piste C# : chaine 01 -> 06 mutualisee (bloc `**Navigation**` sur chacun,
  meme forme que Z3-06) ; 01 pointe son jumeau Python 01 ;
- Python : 04 -> 05, 05 -> 06, 03 -> 04, 12 -> 13, 13 -> 14, 16c -> 16d,
  16d <-> 16e, 16e -> 17, 17 -> 18 (deja) ; les paires {04,05} et {13,14}
  etaient des boucles fermees, les maillons amont 03 -> 04 et 12 -> 13
  manquaient (un demi-fix deplace le finding, cf #18218).

Cellule markdown 0 seule dans les 15 carnets ; cellules code byte-identiques
base <-> tete (source + outputs + execution_count audites). Mesure de l'organe
sur la serie : 11 findings (10 orphan_entry + 1 independent_chain) -> 0,
serie `wrapped`.

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

* fix(twins,#17419): re-attester les paires Z3-Python-01 a 05 apres le fix de nav

Audit firsthand avant --update : sur les 15 carnets modifies, seule la cellule
markdown 0 bouge (cellules code byte-identiques -- source + outputs +
execution_count compares base <-> tete). Aucun strip outille n'est requis
(pas de banniere probeAddresses, aucun chemin machine), l'ordre
« strips d'abord, attestation en dernier » (#8957) est donc respecte.
Controle : la paire Z3-Python-06, non touchee, reste OK.

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

* fix(nav,#17419): href Z3-12 vise le nom renomme Z3-13-UnsatCores-Python

Le rename main #18214 (Z3-Python-13-UnsatCores -> Z3-13-UnsatCores-Python)
a casse le lien de navigation pose par cette branche : la fusion silencieuse
a garde l'ancien nom dans l'en-tete de Z3-12 (link_404 nav-chain + carnet
renomme unreachable + HREF_MISSING enrich-quality). Remplacement chirurgical
markdown-only, occurrences: 1. Gardes rejouees localement : nav-chain 0 NEW,
navlinks 0 NEW broken, enrich_quality base-vs-head OK.

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

* fix(twin,#8057): rebaseline paire Z3-Python-05 apres absorption du fix #16763

La fusion main 3bf2ba4 a absorbe le fix #16763 (transition Z3-05 :
promesse Z3-Python-07 retiree, 06 au canon) -- le hash de contenu du
jumeau Python a bouge apres le yaml 0011 du 28/09, DRIFT au Twin parity
audit. Attestation 0012 generee par --update --pair, re-check OK.

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

* fix(twin,#18299): renumeroter les yaml de la paire Z3-Python-05 apres colision d'index 0011 avec main (#14911)

main a merge le 0011-po-2023 du 28/09 apres mon 0011-po-2025 : le test
test_twin_registry_integrity (cle de tri du journal) rougit sur la branche.
Mon 0011 devient 0012, le yaml fusion de ce matin devient 0013 ; la prose
by: cite desormais les deux predecesseurs sans ambiguite.

Tests: pytest test_twin_registry_integrity 46 passed ; check_twin_parity
--check paire OK (les 3 DRIFT restants sont hors diff, etat de base).

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.

3 participants