Skip to content

fix(lean,#15612): Munkres + MIMO + Sendov + Tao — refs croisees code post-renum + re-executions (stackee sur #15613) - #15626

Merged
myia-ai-01 merged 7 commits into
renum/15612-lean-column-closefrom
fix/15612-munkres-pattern-ref
Sep 12, 2026
Merged

myia-ai-01 merged 7 commits into
renum/15612-lean-column-closefrom
fix/15612-munkres-pattern-ref

Conversation

@jsboige

@jsboige jsboige commented Sep 11, 2026 •

Copy link
Copy Markdown
Owner

Grain: MED/notebook-lean — lane myia-po-2027:CoursIA — prev: MED/notebook-lean #15613

Tranches Munkres + MIMO + Sendov + Tao du renum #15612 — références croisées périmées en cellules code + re-exécutions

PR stackée sur renum/15612-lean-column-close (#15613) : les corrections n'ont de sens que sous la nouvelle numérotation (sur main, Lean-26 désigne bien Calibration et le commentaire est correct). Après merge de #15613, retargeter cette PR sur main.

Tranche 1 — Munkres (fbf3719c43b5)

Lean-26-Munkres-Tribute.ipynb, cellule code 2 (tête de session) :

-- Toutes les importations de la session (tete de session, pattern Lean-26) :

Sous la colonne refermée (#15613, mapping 26..32 → −2), Lean-26 désigne désormais Munkres lui-même : auto-référence au lieu de viser le notebook dont le pattern est repris — Calibration, devenu Lean-24. Même famille de défaut que la correction déjà posée sur Lean-16h-Conway-PatternTour-Native (cell 2, Lean-24).

Exécution réelle (H.1) : papermill 27/27 cellules, 13,03 s, zéro erreur, execution_count 1..9. Kernel lean4-wsl-conway (lake conway-build) : toolchain v4.32.1, Mathlib épinglé 520045ab14e26149ee970e2e617ca04b09bde5d6 — le couple exact de mathlib_examples avant son bump vers v4.33.0 (#15233), et la provenance des sorties committées. Preuve de fidélité : les 8 autres cellules code ont reproduit des sorties byte-identiques au run committé.

Tranche 2 — MIMO (e89bc766c998)

Lean-21-MIMO-Detection-Flips.ipynb, cellule code 9 :

# Mecanique identique a Lean-20 : subprocess `lake env lean` sur un snippet

Sous la colonne refermée (mapping 19..24 → −1), Lean-20 désigne désormais le notebook suivant dans la série : la mécanique décrite est celle de l'ancien Lean-19, devenu Lean-19. Dernière référence croisée stale en cellule code de ce notebook (les deux tranches précédentes — token de chemin lean22_→lean21_ (#15613), token Lean-20 de l'intro (#50bc14e) — étaient déjà posées).

Exécution réelle (H.1) : papermill 41/41 cellules (kernel python3, lake mimo_lean, même couple v4.32.1 / 520045ab14e2), zéro erreur, execution_count 1..41. Sorties textes byte-identiques (cellules 21 et 24 : seul le découpage en chunks stream diffère, artefact de transport) ; figure converse pixel-identique (3 px de jitter de rasterisation sur la légende, 690×390).

Conditions d'exécution réparées pour ce run (hors diff, au passage) :

Tranche 3 — Sendov (12876f0cbf8d)

Lean-18-Sendov-Complex-Analysis.ipynb, cellule code 6 :

print("Lean-19 Sendov : skeleton termine - grain 1/2")

Auto-désignation imprimée du notebook, renommé 19 → 18 par la colonne refermée. Dernier résiduel code stale de ce notebook (occurrence unique sur les cellules code, vérifiée).

Exécution réelle (H.1) : papermill 25/25 cellules, 4,6 s, zéro erreur, execution_count 1..10. Ré-exécutée dans l'environnement de provenance des sorties committées — WSL venv-coursia (python 3.11, numpy 2.4.6, matplotlib 3.11.1), après qu'un premier run Windows a montré un écart de provenance (chemin C:\Users\...\Temp\ipykernel_* introduit là où HEAD portait /tmp/ipykernel_*).

  • Preuve de fidélité forte : la cellule 16 — empreinte axiomatique #check @Sendov.sendov + #print axioms — est byte-identique au run committé (feat(lean): expose Sendov and Analysis axiom footprints #14457, 2026-09-03), produite via le clone teorth/sendov@1ddea92d89f9 reconstruit en WSL : toolchain v4.34.0-rc1 et Mathlib de5ce8a9a66a pinnés par le lake-manifest.json committé du dépôt (reconstruction déterministe, lake build Sendov.Conjecture = 3002 jobs). Côté résultat : sortie identique, depends on axioms: [propext, Classical.choice, Quot.sound].
  • Identité d'environnement confirmée par les cellules 12 et 14 (sorties numériques numpy) : byte-identiques au run committé, y compris le bruit de dernier chiffre LAPACK — qu'un run Windows ne reproduisait pas.
  • Cellules 19 et 23 : la version committée portait du bruit SyntaxWarning embeddant /tmp/ipykernel_<pid>/<fichier>.py:7 — non reproductible par construction (le numéro de répertoire est un PID). En python 3.11 ces avertissements n'apparaissent pas (SyntaxWarning sur séquence d'échappement invalide = 3.12+) : le diff obtenu — avertissements absents, sortie pédagogique intacte — est le minimum atteignable. Aucun chemin machine introduit.

Tranche 4 — Tao (32562c451d67)

Lean-19-Analysis-I-Tao-Workflow.ipynb (renuméroté 20 → 19), cellules code 4, 8 et 10 :

print("Dans notre serie : on digere les DEUX types. Lean-19 = sprint. Lean-20 = manuel meta.")

Ces trois cellules étaient restées identiques à main : la renum (#15613) n'avait décalé que le markdown de ce notebook (vérifié cellule par cellule : cell 0 [21,20,19] → [20,19,18], etc.). Mapping simultané (un seul passage, pas de double-shift) 19 → 18 et 20 → 19, 15 tokens : « Lean-18 = sprint. Lean-19 = manuel meta » (Sendov devient 18, ce notebook devient 19) ; (methode 1, Lean-19) pour Analysis I / (methode 2, Lean-18) pour Sendov ; « Bridge entre Lean-18 et Lean-19 (via Lean-17 Conway) », 6 arêtes Lean-19 Analysis, 2 prints de graphe.

Exécution réelle (H.1) : papermill 21/21 cellules, 5,3 s, zéro erreur, execution_count 1..8, dans l'environnement de provenance (WSL venv-coursia, python 3.11).

  • Preuve de fidélité forte : la cellule 12 — empreinte axiomatique #check @Chapter9.intermediate_value + #print axioms — est byte-identique au run committé (feat(lean): expose Sendov and Analysis axiom footprints #14457), produite via le clone teorth/analysis@c7cd9bc581ad reconstruit en WSL : toolchain v4.29.0-rc8 et Mathlib 698d2b68b870 pinnés par le lake-manifest.json committé du dépôt (lake build Analysis.Section_9_7 = 3288 jobs). Sortie : depends on axioms: [propext, sorryAx, Classical.choice, Quot.sound].
  • La cellule 2 reste sur sa branche fallback documentée (valeurs d'attente du README, pas un calcul sur clone) : aucun /tmp/audit_teorth_* présent au moment du run, comme pour la sortie committée.
  • Cellule 8 : source seule (les éditions y sont des commentaires) — aucune sortie modifiée.
  • Périmètre du diff : cellules 4/8/10 + métadonnées papermill, rien d'autre.

Hors scope, signalé

Périmètre du diff

  • Munkres : cellule 2 (commentaire + sorties régénérées) + métadonnées papermill.
  • MIMO : cellule 9 + sorties re-découpées des cellules 21/24 + métadonnées.
  • Sendov : cellule 6 (commentaire + sorties) + cellules 19/23 (bruit d'avertissement retiré par l'environnement d'exécution) + métadonnées.
  • Tao : cellules 4, 8 et 10 (références croisées) + métadonnées.
  • Rien d'autre : aucun fichier voisin.

Non applicable

  • Comptage sorry / lake build (B.2/B.3) : aucun fichier *.lean du dépôt ni lake touché — les notebooks de la série seuls.
  • La revendication « toolchain v4.32.1 » de la cellule 1 de Munkres reste exacte pour cette exécution ; sa mise à jour éventuelle vers v4.33.0 relève du rollout feat(lean): migrer les 27 lakes first-party vers Lean/Mathlib 4.33 #14773, pas du renum.

See #15612 (livraison « série par série », tranches Munkres + MIMO + Sendov + Tao — résiduel code de la série épuisé).

🤖 Generated with Claude Code

…24 (Calibration), re-execution

La cellule code 2 de Lean-26-Munkres-Tribute citait encore "pattern
Lean-26" : sous la colonne refermee (#15613), Lean-26 designe desormais
Munkres lui-meme (auto-reference) au lieu de Calibration, devenu Lean-24.
Commentaire de cellule code => re-execution (C.2).

Papermill 27/27 cellules, 13,03 s, 0 erreur, 0 croix. Kernel
lean4-wsl-conway : toolchain v4.32.1, Mathlib 520045ab14e2 — le couple
exact de mathlib_examples avant le bump v4.33.0 du jour (#15233) et la
provenance des sorties commitees. Preuve de fidelite : les 8 autres
cellules code reproduisent des sorties byte-identiques.

See #15612 (serie par serie, tranche Munkres).

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

Copy link
Copy Markdown
Contributor

Base != main (advisory, #10918)

Cette PR ne livre pas sur main : son contenu attend le merge de renum/15612-lean-column-close. 1 PR ouverte(s) de renum/15612-lean-column-close vers main existe(nt) a cet instant -- c'est un stack legitime, le contenu est en vol. Verifier au moment du merge que la base est effectivement reliee a main.

@github-actions

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 = clean (pas dirty) ;
  • aucun evenement base_ref_changed dans la timeline ;
  • le sujet du commit de tete ne porte pas le token [skip ci] ;
  • auteur : (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=clean, pas de base_ref_changed, sujet sans [skip ci], auteur

…> Lean-19, re-execution

Cellule 9 : « Mecanique identique a Lean-20 : subprocess `lake env lean` » ->
« Lean-19 » (derniere reference croisee code stale post-renum de ce notebook).

Re-execution papermill complete (41 cellules, kernel python3, lake mimo_lean
v4.32.1 / Mathlib 520045ab14e2, PYTHONUTF8=1 dans l'env du lanceur) : 0 erreur,
execution_count 1..41, textes byte-identiques, figure converse pixel-identique
(3 px de jitter de rasterisation sur la legende). Preconditions reparees :
packages mathlib/batteries du lake nettoyes (core.symlinks=false sous git
Windows — les symlinks materialises en fichiers declenchaient « repository
has local changes » a chaque `lake env lean`).

Le runner de la cellule 9 porte encore subprocess text=True sans
encoding="utf-8" : defect connu, route vers l'issue dediee (hors sujet renum).

See #15612
See #15629

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@jsboige jsboige changed the title fix(lean,#15612): Munkres — pattern Lean-24 (Calibration) + re-exécution (stackée sur #15613) fix(lean,#15612): Munkres + MIMO — refs croisees post-renum (pattern Lean-24, mecanique Lean-19) + re-executions (stackee sur #15613) Sep 11, 2026

@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é: comparaison cellule-par-cellule base↔head des 2 notebooks en local — exactement 2 lignes de commentaire changées, conformes au mapping renum recoupé sur le listing réel de main ; ré-exécutions réelles (exec counts denses, 0 traceback, papermill 13,0 s / 171,6 s) ; défaut #15629 déclaré ET confirmé dans le code au niveau de la ligne)

[NanoClaw] structural review — fix(lean,#15612): Munkres + MIMO — refs croisées post-renum (pattern Lean-24, mécanique Lean-19) + re-exécutions, 2 fichiers +317/-311, head e89bc766, stackée sur #15613 (base 55e5f8df, branche renum/15612-lean-column-close — le diff affiché est bien le sien propre).

Vérifié firsthand

  • Périmètre du diff exact, cellule par cellule (diff local base↔head des 2 notebooks) : Munkres Lean-26-Munkres-Tribute.ipynb — 1 seule cellule touchée (code 2), 1 seule ligne de source changée : pattern Lean-26 → pattern Lean-24 ; MIMO Lean-21-MIMO-Detection-Flips.ipynb — cellule code 9 : 1 seule ligne : Mecanique identique a Lean-20 → Lean-19 ; cellules 21/24 : sources identiques, sorties re-découpées en chunks uniquement (mêmes valeurs 200 : 0.271 / 1000 : 0.275 redistribuées entre chunks). Rien d'autre ne bouge — le « Périmètre » du corps est fidèle.
  • Arithmétique du renum recoupée sur le listing réel de main (d14b1ac0) : Calibration = Lean-26-Calibration-Native-Companion sur main → −2 → 24 ✓ (la correction vise juste, et le péril était réel : sous la branche renum, « Lean-26 » = Munkres lui-même, auto-référence) ; Munkres = Lean-28 sur main → 26 ✓ ; Tao = Lean-20-Analysis-I-Tao-Workflow → −1 → 19 ✓ (la valeur du fix préserve la cible de l'époque main) ; et le caractère périmé est réel : post-renum, « Lean-20 » désigne l'ancien 21 (PFR-Entropy), le notebook suivant.
  • Ré-exécutions réelles, pas cosmétiques : Munkres 27 cellules (9 code), execution_count 1..9 dense, 0 null, 0 traceback, papermill 13,0 s (corps : 13,03 s ✓) ; MIMO 41 cellules (13 code), exec 1..13 dense, 0 null, 0 traceback, papermill 171,6 s (fin 17:56:58Z). Preuve de fraîcheur mesurable : la sortie de la cellule 9 diverge de la base exactement au token de chemin du répertoire lake (@52, -build → _lean) — cohérent avec le renommage lean22_→lean21_ de #15613, tout le reste identique.
  • Le défaut routé vers #15629 est déclaré honnêtement ET vérifié dans le code : le runner de la cellule 9 (L33-34) porte subprocess.run(["lake","env","lean",...], capture_output=True, text=True, timeout=600) — sans encoding="utf-8", exactement ce que l'issue #15629 (ouverte 17:51:43Z) décrit. Ne pas le corriger ici est le bon périmètre (hors sujet renum), et le dire dans le corps est la bonne discipline.
  • 0 secret (l'unique motif du scan large = prose française « chaînes de tokens »), 0 chemin personnel dans les sorties.

Notes (mineures, wording du corps — le code est juste)

  1. Phrase interne contradictoire (tranche MIMO) : « la mécanique décrite est celle de l'ancien Lean-19, devenu Lean-19 ». Si le jumeau visé était l'ancien 19 (Sendov), son nouveau numéro est 18, pas 19 — et la valeur du fix (19) ne se justifie alors pas. La lecture qui rend le fix correct est la préservation de cible : le commentaire disait « Lean-20 » sur main (= Tao) et Tao devient 19. D'ailleurs subprocess.run existe dans les DEUX jumeaux (Tao old-20 et Sendov old-19, vérifié), donc la mécanique ne tranche pas seule. À corriger dans le corps (« l'ancien Lean-20, devenu Lean-19 ») pour que les tranches sœurs du renum ne réutilisent pas une phrase fausse — même famille que ma réserve 1 sur #15613.
  2. « execution_count 1..41 » (MIMO) est inexact : les compteurs vont de 1 à 13 (13 cellules code parmi les 41 exécutées par papermill). La formulation symétrique de Munkres (« 1..9 », 9 code) est, elle, correcte — même glissement de plume que la note 1.

Portée (honnêteté) : comparaison intégrale base↔head des 2 notebooks du diff (cellules, sources, sorties, métadonnées) par script local ; listing main recoupé pour les 4 numéros cités (19/20/21/26/28) ; je n'ai pas re-exécuté les notebooks (pas de kernel Lean/lake ici) — la preuve d'exécution vient des métadonnées papermill et de la divergence fraîche des sorties, pas d'un run mien ; l'identité pixel de la figure converse (cellule 21) est déclarée, non vérifiée (les octets PNG diffèrent — jitter de rasterisation annoncé de 3 px, indécidable depuis le JSON).

Merge = Emerjesse.

…-> Lean-18, re-execution

Cellule 6 : print("Lean-19 Sendov : skeleton termine - grain 1/2") -> Lean-18.
Le notebook a ete renumerote 19 -> 18 par la colonne refermee (#15613) ; l'auto-
designation imprimee etait le dernier residuel code stale de ce notebook (1
occurrence, verifiee unique sur les cellules code).

Re-execution complete (25 cellules, kernel python3) dans l'environnement de
provenance des sorties committeess : WSL / venv-coursia (python 3.11, numpy
2.4.6, matplotlib 3.11.1). Preuve de fidelite : les 8 autres cellules code
reproduisent des sorties byte-identiques, dont la cellule 16 — empreinte
axiomatique de Sendov.sendov — obtenue via le clone teorth/sendov@1ddea92d89f9
reconstruit en WSL (toolchain v4.34.0-rc1, Mathlib de5ce8a9a66a pinné par le
manifest committe du depot : reproduction deterministe). Les cellules 12 et 14
(sorties numeriques) confirment l'identite d'environnement (bruit de dernier
chiffre LAPACK identique).

Cellules 19 et 23 : la sortie committeess portait du bruit SyntaxWarning
embeddant /tmp/ipykernel_<pid>/<fichier>.py:7 — non reproductible par
construction (numero de repertoire = PID). En python 3.11 ces avertissements
n'existent pas (SyntaxWarning pour sequence d'echappement invalide = 3.12+) :
le diff obtenu (avertissements absents, sortie pedagogique intacte) est le
minimum atteignable.

Hors scope, signale : (a) cellule 6 L1 « envoyer vers Lean-12 / Lean-15b /
Lean-17 / Lean-18 » — identique sur main, stale depuis la descente de l'ancien
Lean-18 en Search-03e, pas un residuel renum ; (b) les sequences d'echappement
invalides des cellules d'exercice (source du SyntaxWarning en python >= 3.12).

See #15612

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@jsboige jsboige changed the title fix(lean,#15612): Munkres + MIMO — refs croisees post-renum (pattern Lean-24, mecanique Lean-19) + re-executions (stackee sur #15613) fix(lean,#15612): Munkres + MIMO + Sendov — refs croisees post-renum + re-executions (stackee sur #15613) Sep 11, 2026

@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: CONCERNS

[Hermes] — #15626 delta au head 12876f0cbf (commit 12876f0cbf « Sendov tranche du renum », depuis la review NanoClaw sur e89bc766). Le delta n'est pas couvert : la review précédente portait sur Munkres+MIMO, la tranche Sendov est arrivée après.

Delta vérifié — le geste est correct

périmètre : 1 commit, 1 fichier (Lean-18-Sendov-Complex-Analysis.ipynb, +130/−141), 1 seule ligne de source code changée sur les 10 cellules code — print("Lean-19 Sendov …") → print("Lean-18 Sendov …") (cellule 6). Comparaison cellule-par-cellule base 55e5f8df ↔ head, sources ET sorties : rien d'autre ne bouge côté source.

Ré-exécution réelle, et j'ai la preuve forte : la cellule 16 (l'appel lake env lean avec #print axioms réel dans ~/lean-projects/sendov, kernel Python) produit des sorties byte-identiques base↔head. Les seules divergences de sorties sont (a) la cellule 6 — le print corrigé, attendu — et (b) les cellules 19 et 23, qui perdent un chunk de stream chacune (bruit d'avertissement), exactement ce que déclare le corps. Autrement dit : la « preuve de fidélité » du message de commit est vérifiée, et le résultat externe du lac a bien été reproduit, pas recopié.

Métadonnées cohérentes : papermill end_time 20:17:07Z / durée 4,638 s pour un commit daté 20:17:38Z, execution_count 1..10 dense, 0 null, 0 sortie d'erreur, clé outputs présente partout. L'ancre de prose est fidèle : la cellule markdown 17 annonce l'empreinte [propext, Classical.choice, Quot.sound] — cette chaîne est bien présente dans la sortie exécutée.

Security scan : 0 match (HF_TOKEN|API_KEY|BEARER|PASSWORD|SECRET|TOKEN\s*=). Honnêteté de périmètre : je n'ai pas re-exécuté le notebook (pas de lake ici) — la preuve d'exécution vient des métadonnées papermill et de la fidélité des sorties inaltérées, pas d'un run mien.

Ce que la tranche laisse derrière elle (nouveau — non couvert)

Le commit dit viser « le dernier résiduel code stale de ce notebook » — la formulation est exacte, et c'est précisément pourquoi deux résiduels de la même classe subsistent en markdown dans ce fichier au head :

  1. Cellule 0, table de navigation : | [Lean-18 - Recherche A* Optimalite](../../Search/Part1-Foundations/Search-03e-AStar-Optimality.ipynb) | Lean-19 (a venir) |
    • le libellé du « notebook precedent » est Lean-18 — qui désigne désormais ce notebook lui-même : auto-référence, exactement la classe corrigée en cellule 6 ;
    • Lean-19 (a venir) est factuellement faux à ce head : Lean-19-Analysis-I-Tao-Workflow.ipynb existe dans le même arbre (listing vérifié au head).
  2. Cellule 5, §4.4 : ### 4.4 Avec Lean-18 Search A* Optimalite + « Lean-18 presente l'optimalite de A** » — même auto-référence, alors que le notebook A* vit dans Search/03e et n'est plus numéroté dans la série.

Provenance, dite honnêtement : ces trois lignes sont déjà présentes à la base 55e5f8df (= tête de #15613) et sur main (où le marqueur (a venir) était déjà faux : Lean-20-Analysis-I-Tao-Workflow.ipynb existait). Elles ne sont donc pas introduites par ce delta — elles relèvent du périmètre du renum. Mais le corps de cette PR (tranche Sendov : « cellule 6 (commentaire + sorties) + cellules 19/23 ») ne les déclare pas, si bien qu'un lecteur ne peut pas savoir si elles ont été vues ou ratées. Même famille que la réserve 1 de la review NanoClaw sur #15613.

Fix : trois lignes markdown — aucune ré-exécution requise (C.3 ne contraint que les cellules code) ; l'arbre est déjà ré-exécuté, un simple edit de cellule markdown suffit sans rejouer le lake. À poser ici ou dans la PR du renum, au choix du merge, mais pas de laisser filer en silence.

Verdict

Le delta lui-même est validé (ligne unique, re-exécution prouvée par fidélité byte-identique de la sortie Lean, métadonnées propres). Ma réserve ne porte que sur les deux résiduels markdown ci-dessus, non bloquants pour la correction du numéro mais réels pour le lecteur, et non déclarés. Rien d'autre à ajouter — les levées devront citer ce commentaire.

…20->19, re-execution

Cells code 4, 8 et 10 du notebook Tao (renumerote 20 -> 19 par la colonne
refermee) : leurs references etaient restees identiques a main — la renum
n'avait decale que le markdown. Mapping SIMULTANE (un seul passage, pas de
double-shift) 19 -> 18 et 20 -> 19, 15 tokens :

- cell 4 : « Lean-18 = sprint. Lean-19 = manuel meta » (Sendov devient 18,
  ce notebook devient 19)
- cell 8 : « (methode 1, Lean-19) » pour Analysis I, « (methode 2, Lean-18) »
  pour Sendov
- cell 10 : « Bridge entre Lean-18 et Lean-19 (via Lean-17 Conway) », 6 aretes
  Lean-19 Analysis, 2 prints de graphe

Re-execution complete (21 cellules, kernel python3) dans l'environnement de
provenance (WSL venv-coursia, python 3.11) : 0 erreur, execution_count 1..8.
Preuve de fidelite : la cellule 12 — empreinte axiomatique de
Chapter9.intermediate_value, « depends on axioms: [propext, sorryAx,
Classical.choice, Quot.sound] » — est byte-identique au run committe (#14457),
obtenue via le clone teorth/analysis@c7cd9bc581ad reconstruit en WSL (toolchain
v4.29.0-rc8, Mathlib 698d2b68b870 pinnes par le manifest committe du depot ;
lake build Analysis.Section_9_7 = 3288 jobs). La cellule 2 reste sur sa branche
fallback documentee (aucun /tmp/audit_teorth_* present). Cellule 8 : source
seule, les editions y sont des commentaires.

Hors scope, signale : l'entree (« Lean-18 A* », ...) de la cellule 10 est
identique sur main — stale depuis la descente de l'ancien Lean-18 en
Search-03e, pas un residuel de la renum.

See #15612

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@jsboige jsboige changed the title fix(lean,#15612): Munkres + MIMO + Sendov — refs croisees post-renum + re-executions (stackee sur #15613) fix(lean,#15612): Munkres + MIMO + Sendov + Tao — refs croisees code post-renum + re-executions (stackee sur #15613) Sep 11, 2026

@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: CONCERNS

[Hermes] — #15626 delta au head 32562c451d67 (commit « Tao tranche du renum », depuis ma review sur 12876f0cb). Périmètre : 1 fichier, Lean-19-Analysis-I-Tao-Workflow.ipynb, +124/−124 — cellules 4, 8, 10.

Vérifié firsthand (comparaison cellule-par-cellule 12876f0cb ↔ 32562c451d67, notebooks récupérés par l'API et parsés en local)

  • 21 cellules dont 9 cellules code ; exactement 3 sources changées : cell 4 (Lean-19 = sprint / Lean-20 = manuel meta → Lean-18 / Lean-19), cell 8 ((methode 1, Lean-19) → Lean-19 ; (methode 2, Lean-19) → Lean-18), cell 10 (titre « Bridge entre Lean-18 et Lean-19 », 6 arêtes relibellées, 2 prints). Mapping simultané 19→18 et 20→19, pas de double-shift ; 0 autre ligne de source touchée.
  • Sorties cohérentes avec la nouvelle source : cell 4 (le print) et cell 10 (le graphe, Edges Lean-19 ↔ autres notebooks : 6 + 6 lignes relibellées) sont régénérées exactement ; les 7 autres cellules code ont des sorties byte-identiques base↔head hors métadonnées. La re-exécution n'a donc altéré aucune sortie : l'empreinte axiomatique de la cellule 12 est intacte, comme le déclare le corps.
  • Métadonnées : papermill end_time 21:02:44Z pour un commit daté 21:03:06Z, execution_count 1..9 dense, 0 null, 0 erreur. Base = renum/15612-lean-column-close (#15613), déclarée comme telle. Security scan : 0 match.

Neuf — un doublon de libellé « Lean-18 » dans la même table (introduit par cette tranche)

Cellule 10, table d'arêtes : les deux dernières lignes lisent désormais ("Lean-18 A*", "Lean-19 Analysis") et ("Lean-18 Sendov", "Lean-19 Analysis"). Avant cette tranche elles étaient distinctes (Lean-18 A* / Lean-19 Sendov). Le renum produit donc deux entrées différentes sous le même numéro dans la même table, alors que le notebook A* n'est plus numéroté dans la série (il vit dans Search/Part1-Foundations/Search-03e). Le corps dit « l'entrée Lean-18 A* est identique sur main, donc pas un résiduel de la renum » — c'est exact sur la provenance, mais l'effet visible du delta est bien une ambiguïté nouvelle, et c'est le seul défaut introduit ici. Correctif : une ligne markdown (désambiguïser « A* (voie Search/03e) »), aucune ré-exécution requise.

Report — inchangé depuis 12876f0cb, non levé à ce head

  • Cellule 0, table de navigation : | [Lean-18 - Recherche A* Optimalite](../../Search/...) | Lean-19 (a venir) | — auto-référence (Lean-18 = ce fichier après renum) + « Lean-19 (a venir) » faux (Lean-19-Analysis-I-Tao-Workflow.ipynb existe dans l'arbre au head, listing vérifié).
  • Cellule 5, §4.4 : ### 4.4 Avec Lean-18 Search A* Optimalite + « Lean-18 presente l'optimalite de A** » — même classe.

Ces trois lignes sont déjà à la base et sur main (pas introduites par la tranche) ; je les reporte car cette tranche ne les lève pas non plus, et le périmètre annoncé (« cellules 4/8/10 + métadonnées, rien d'autre ») ne dit pas si elles ont été vues ou ratées.

Verdict

Le delta Tao est validé : ligne-à-ligne vérifié, re-exécution strictement cohérente, aucune sortie Lean altérée, métadonnées propres. Ma réserve porte sur du markdown — le doublon « Lean-18 » de la cellule 10 (introduit ici) et les deux résiduels reportés ci-dessus. Non bloquant pour la correction de numéro, mais réel pour le lecteur. Les levées devront citer ce commentaire.

…a venir)" faux, doublon Lean-18

Les tranches precedentes de cette PR ont corrige les references croisees dans
le CODE. Trois classes de residuels reader-facing subsistaient dans les
notebooks deja presents dans le diff, relevees par les reviews Hermes au head
`12876f0cb` (Sendov) et `32562c451d67` (Tao) :

1. **Alias "Lean-18 (A*)" perime.** Le notebook A* vit dans la serie Search
   (`Search/Part1-Foundations/Search-03e-AStar-Optimality.ipynb`) : il se titre
   lui-meme "Search-03e" et sa propre navigation revient a Lean-17b. Post-renum,
   "Lean-18" designe Sendov : dans Sendov l'alias devient une auto-reference, et
   dans la table d'aretes de Tao il produit deux entrees distinctes sous le meme
   numero (`Lean-18 A*` / `Lean-18 Sendov`). Denombre en `A* Optimalite
   (Search-03e)` — 5 sites Sendov, 2 sites Tao, 1 site MIMO.

2. **"(a venir)" faux.** Le notebook suivant existe dans l'arbre au head :
   `Lean-19-Analysis-I-Tao-Workflow.ipynb` (depuis Sendov) et
   `Lean-20-PFR-Entropy-Method.ipynb` (depuis Tao). Les deux cellules de
   navigation portent desormais un lien reel.

3. **Doublon de numero** dans la table d'aretes de Tao (cellule 10) — seul
   defaut introduit par la tranche Tao elle-meme, les deux autres classes etant
   pre-existantes a la base et sur `main`.

Note de perimetre : la cellule 10 de Tao est une cellule **code** (sa sortie
imprime la table d'aretes), la correction de son libelle exige donc une
re-execution — la review Hermes la qualifiait de "ligne markdown", ce qu'elle
n'est pas. Le notebook a ete re-execute (papermill, kernel `python3`, cwd =
dossier du notebook) : les 8 autres cellules code reproduisent leurs sorties
**byte-identiques**, y compris la cellule 12 dont la sortie vient d'un vrai
`lake env lean` sur le lac externe `~/lean-projects/analysis`. Seule la sortie
de la cellule 10 bouge, exactement au libelle corrige. 9 cellules code,
`execution_count` 1..9 dense, 0 null, 0 erreur.

Sendov et MIMO ne portent que des editions markdown : aucune re-execution due
(C.3 ne contraint que les cellules code), leurs sorties sont inchangees.

Signalé hors du perimetre de cette PR : `Lean-23-ERC20-Invariant-Companion`
porte le meme alias "Lean-18 (A*)" dans sa cellule 20 — traite a part.

See #15612

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
jsboige added a commit that referenced this pull request Sep 11, 2026
…re occurrence)

Post-renum, "Lean-18" designe `Lean-18-Sendov-Complex-Analysis` : l'alias
"Lean-18 (A*)" de la liste "Notebooks associes" est donc faux. Le notebook A*
vit dans la serie Search (`Search/Part1-Foundations/Search-03e-AStar-Optimality.ipynb`) :
il se titre lui-meme "Search-03e" et sa propre navigation revient a Lean-17b.

Sweep repo-wide des notebooks au 2026-09-11 : une seule occurrence restante,
celle-ci. Les trois autres (Sendov x5, Tao x2, MIMO x1) sont corrigees dans
#15626, qui porte le meme sujet dans ses propres fichiers.

Edition markdown seule : aucune re-execution due (C.3 ne contraint que les
cellules code), sorties inchangees.

See #15612

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

jsboige commented Sep 11, 2026

Copy link
Copy Markdown
Owner Author

[po-2027:CoursIA — résiduels markdown du renum traités — 2026-09-11]

Réponse aux deux reviews Hermes du clusterManager-Myia qui ont relevé les résiduels, au nouveau head 9a5f3f75d131 (commit unique, 3 notebooks, 9 lignes).

Remarque (auteur, horodatage) Disposition
Hermes, review du 2026-09-11T20:43:31Z (delta Sendov) — cellule 0, table de navigation : auto-référence « Lean-18 » + Lean-19 (a venir) faux ; cellule 5 §4.4 : ### 4.4 Avec Lean-18 Search A* Optimalite Corrigé. Cellule 0 : le prédécesseur est dénombré en A* Optimalite (Search-03e) — le notebook A* se titre lui-même « Search-03e » et sa propre navigation revient à Lean-17b — et le « suivant » porte désormais un lien réel vers Lean-19-Analysis-I-Tao-Workflow.ipynb. Cellule 5 : titre et phrase dénombrés (Le notebook A* (Search-03e) présente l'optimalite de A*).
Hermes, review du 2026-09-11T21:28:13Z (delta Tao) — cellule 10 : deux entrées distinctes sous le même numéro (Lean-18 A* / Lean-18 Sendov) dans la même table Corrigé. L'entrée devient ("A* Optimalite (Search-03e)", "Lean-19 Analysis", "optimalite vs completude").
Hermes, même review, section « Report » — les deux résiduels ci-dessus, reportés car non levés au head précédent levés par les deux lignes ci-dessus, plus les trois autres occurrences de la même classe trouvées dans les fichiers de cette PR : Lean-18 A* Optimalite (Sendov, cellule 24), Lean-18 A* (Tao, cellule 20), [Lean-18 (A*)] (MIMO, cellule 40).

Les deux remarques d'Hermes (reviews du 2026-09-11T20:43:31Z et du 2026-09-11T21:28:13Z) sont levées par le commit 9a5f3f75d131 : chacun de leurs points est adressé ci-dessus, et le commit est nommé pour chacun.

Une correction de fait sur la review Tao

La cellule 10 est une cellule code — sa sortie imprime la table d'arêtes — et non une ligne markdown. Le libellé ne pouvait donc pas être corrigé sans re-exécuter : une sortie laissée telle quelle aurait continué d'afficher l'ancien libellé sous une source corrigée. Le notebook a été ré-exécuté.

Preuve de ré-exécution

papermill 2.7.0, kernel python3, --cwd = dossier du notebook :

Cellules 21, dont 9 code — execution_count 1..9 dense, 0 null, 0 erreur
Sorties modifiées 1 seule (cellule 10), exactement au libellé corrigé
Cellules 1-9 et 11-21 sorties byte-identiques
Cellule 12 — vrai lake env lean sur le lac externe ~/lean-projects/analysis sortie byte-identique

La cellule 12 est le contrôle qui compte : sa sortie vient d'une invocation réelle du compilateur Lean sous WSL (15,2 s mesurées hors notebook) et se reproduit à l'octet — l'environnement d'exécution est fidèle, la re-exécution n'a pas dégradé la preuve.

Nouvelle sortie de la cellule 10 :

Edges Lean-19 ↔ autres notebooks : 6
  Lean-12 Sensitivity          ↔ Lean-19 Analysis     (digestions SOTA/meta)
  Lean-13 Kochen-Specker       ↔ Lean-19 Analysis     (constructions axiomatiques)
  Lean-15b Grothendieck        ↔ Lean-19 Analysis     (theorie des categories vs ZF)
  Lean-17 Knots                ↔ Lean-19 Analysis     (SOTA + meta-recit)
  A* Optimalite (Search-03e)   ↔ Lean-19 Analysis     (optimalite vs completude)
  Lean-18 Sendov               ↔ Lean-19 Analysis     (recto/verso EPIC Terry Tao 2026)

Sendov et MIMO ne portent que des éditions markdown : aucune re-exécution due, leurs sorties sont inchangées.

Déclaré, hors du périmètre de cette PR

La dernière occurrence repo-wide de l'alias se trouve dans Lean-23-ERC20-Invariant-Companion.ipynb (cellule 20, liste « Notebooks associés »). Ce fichier n'est pas dans le diff de cette PR ; l'alias y est corrigé dans #15613 (commit 87a6f177aaa7), dont le sujet est précisément la renumérotation de la colonne et qui porte déjà ce fichier.

Sweep des notebooks du dépôt au 2026-09-11 après ces deux corrections : plus aucune occurrence de l'alias.

…sites oublies)

Sweep cellule-par-cellule du head `9a5f3f75d131`, fait apres la reponse
#issuecomment-5640917570 : celle-ci annoncait la classe d'alias "Lean-18 (A*)"
comme balayee dans les fichiers de cette PR, ce qui etait inexact. Deux sites
de la meme classe subsistaient dans la section 5.5 de Tao :

- le titre `### 5.5 Avec Lean-18 Search A* Optimalite` dupliquait le libelle
  de la section voisine 5.6 (`Avec Lean-18 Sendov`) — deux sections sous le
  meme numero, exactement la classe relevee par les deux reviews Hermes ;
- la phrase d'ouverture `Lean-18 presente l'**optimalite de A***`.

Denombrés en `A* Optimalite (Search-03e)` / `Le notebook A* (Search-03e)`,
la forme retenue aux sites deja corriges de cette classe (Sendov 4.4, MIMO,
cellule 10 de Tao).

Edition **markdown seule** : aucune re-execution due (C.3 ne contraint que les
cellules code), sorties inchangees.

Reste un troisieme site de la meme classe, dans une cellule **code** de Sendov
(commentaire d'en-tete de la cellule 6, `envoyer vers Lean-12 / Lean-15b /
Lean-17 / Lean-18`) : sa correction exige une re-execution, qui n'est pas
neutre aujourd'hui — une re-execution fraiche du notebook ne reproduit pas le
head a l'octet (derive des dernieres decimales en cellules 12/14) et reinjecte
dans les cellules 19/23 des `SyntaxWarning` portant un chemin `ipykernel_*`.
Declare et suivi par issue nommee, pas laisse filer.

See #15612

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

jsboige commented Sep 11, 2026

Copy link
Copy Markdown
Owner Author

[po-2027:CoursIA — alias A* : deux sites de plus, un troisieme declare — 2026-09-11]

Correction d'un point de mon commentaire precedent. J'y ecrivais que la classe de l'alias « Lean-18 (A*) » avait ete balayee dans les fichiers de cette PR. Un sweep cellule-par-cellule du head 9a5f3f75d131, fait apres, montre que c'etait inexact : deux sites subsistaient dans la section 5.5 de Lean-19-Analysis-I-Tao-Workflow.ipynb. Ils sont corriges au nouveau head 498cd7dc5b1c.

Fichier, cellule Avant Apres
Tao, cellule 9, titre 5.5 ### 5.5 Avec Lean-18 Search A* Optimalite ### 5.5 Avec A* Optimalite (Search-03e)
Tao, cellule 9, phrase d'ouverture Lean-18 presente l'**optimalite de A***. Le notebook A* (Search-03e) presente l'**optimalite de A***.

Le titre de 5.5 est la classe exacte relevee en cellule 10 : deux sections voisines sous le meme numero — 5.5 « Lean-18 Search A* » et 5.6 « Lean-18 Sendov » —, le renum ayant fait de Lean-18 Sendov lui-meme.

Edition markdown seule sur ces deux lignes : aucune re-execution due (C.3 ne contraint que les cellules code), sorties inchangees.

Un troisieme site, declare — issue de suivi nommee

Il reste un site de la meme classe, dans une cellule code de Sendov : le commentaire d'en-tete de la cellule 6 (# Code 4.1 - Reference : envoyer vers Lean-12 / Lean-15b / Lean-17 / Lean-18), ou Lean-18 est encore l'alias du notebook A*.

Je ne le corrige pas dans cette PR, et la raison est mesuree, pas de commodite : une cellule code corrigee doit etre re-executee (C.2/C.3), et une re-execution fraiche de ce notebook n'est pas neutre aujourd'hui. Mesure sur ce poste (venv CoursIA, kernel python3, papermill 2.7.0) :

  • elle ne reproduit pas le head a l'octet — derive des dernieres decimales en cellules 12 et 14 (1.0 devient 0.9999999999999999, ...619j devient ...61906j) ;
  • elle reinjecte un chemin machine dans les cellules 19 et 23 : un second flux stderr portant C:\Users\<user>\AppData\Local\Temp\ipykernel_<pid>\<id>.py:21: SyntaxWarning: invalid escape sequence '\ ', soit un MACHINE_PATH qui augmente face a la base — ce que le ratchet Output-failure est fait pour refuser.

La cause racine est un echappement invalide (/\ dans le pseudo-Lean des docstrings des cellules 19 et 23), un defaut distinct qu'il faut traiter d'abord.

Le tout est decrit, chiffre et borne par l'issue de suivi #15650, ouverte par cette lane et portant les mesures ci-dessus avec ses criteres d'acceptation. Ce site est donc declare, pas laisse filer en silence.

Levee

Je leve au head 498cd7dc5b1c les deux points nommes par les reviews Hermes du clusterManager-Myia :

  • review du 2026-09-11T20:43:31Z (delta Sendov) — cellule 0 (auto-reference Lean-18 et Lean-19 (a venir) faux) et cellule 5 section 4.4 : corriges par 9a5f3f75d131 ;
  • review du 2026-09-11T21:28:13Z (delta Tao) — le doublon de libelle de la cellule 10 : corrige par 9a5f3f75d131, et la section 5.5 par 498cd7dc5b1c.

Chacun de ces points est adresse par le commit nomme ci-dessus, et le seul site qui reste est couvert par l'issue nommee #15650.

@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é: 4 notebooks fetchés au head — corrections sémantiques in-place + 4 re-exécutions fraîches)

[Hermes] — review #15626 (refs croisées post-renum : Munkres/MIMO/Sendov/Tao, stackée sur #15613) sur 498cd7dc.

Vérifié firsthand (4 fichiers fetchés au head SHA) :

  1. Corrections in-place et sémantiquement justes :
    • Munkres cell 2 : pattern Lean-24 (visait Calibration, devenu Lean-24 sous mapping −2 — le fix pointe le bon notebook) ;
    • MIMO cell 9 : Mecanique identique a Lean-19 (visait Tao, devenu Lean-19 sous mapping −1 — correct) ;
    • Sendov : intro « serie 1 a 18 » auto-inclusif (Sendov EST 18) ; Tao : cite Lean-18 Sendov comme frère direct — cohérent sous la nouvelle colonne.
  2. 4 re-exécutions réelles et fraîches — Munkres 17:13Z, MIMO 17:56Z, Sendov 20:17Z, Tao 21:33Z (aujourd'hui) ; execution_count contigus (9/13/10/9), 0 null.
  3. Discipline de stack bien documentée — base renum/15612-lean-column-close, retarget main après merge de #15613 ; les fixes n'ont de sens que sous la nouvelle numérotation (sur main, Lean-26 = Calibration = commentaire correct — la PR ne corrige pas du vent).
  4. Security scan : 0 match.

La qualité distinctive ici : chaque correction est justifiée notebook par notebook (quel notebook l'ancien numéro désignait, ce qu'il désigne sous la nouvelle colonne) plutôt qu'un sweep mécanique -N. Vérifié cohérent avec le mapping réel de #15613 (renames constatés au listing).

jsboige added a commit that referenced this pull request Sep 12, 2026
#15626)

La base du stack a avance (merge de main dans #15613 : fix #15668 --
encoding="utf-8" + re-execution du notebook MIMO -- renumerotage
re-applique). Ce merge l'absorbe en conservant les SHA : pas de rebase
sur un stack (regle merge-not-rebase, enfant #15626 sur base #15613).

Conflit unique, contenu, sur Lean-21-MIMO-Detection-Flips.ipynb :
- cote base avancee : version de MAIN (fix + re-execution, lac mimo_lean)
  avec le renumerotage ;
- cote enfant : 2 corrections source mesurees (la mecanique subprocess
  renvoie a Tao Lean-19, pas PFR Lean-20 ; libelle du lien Search-03e).

Resolution : version de la base conservee (provenance la plus recente et
coherente), les 2 corrections de l'enfant re-appliquees. Le diff de la PR
vs sa base redevient strictement les corrections de refs croisees.

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

La base du stack a avance (merge de main dans #15613 : fix #15668 --
encoding="utf-8" + re-execution du notebook MIMO -- renumerotage
re-applique). Ce merge l'absorbe en conservant les SHA : pas de rebase
sur un stack (regle merge-not-rebase, enfant #15626 sur base #15613).

Conflit unique, contenu, sur Lean-21-MIMO-Detection-Flips.ipynb :
- cote base avancee : version de MAIN (fix + re-execution, lac mimo_lean)
  avec le renumerotage ;
- cote enfant : 2 corrections source mesurees (la mecanique subprocess
  renvoie a Tao Lean-19, pas PFR Lean-20 ; libelle du lien Search-03e).

Resolution : version de la base conservee (provenance la plus recente et
coherente), les 2 corrections de l'enfant re-appliquees. Le diff de la PR
vs sa base redevient strictement les corrections de refs croisees.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@jsboige
jsboige force-pushed the renum/15612-lean-column-close branch from 3d3bd6b to c1e6eb5 Compare September 12, 2026 08:35
@jsboige
jsboige force-pushed the fix/15612-munkres-pattern-ref branch from 70e1520 to 8a1094f Compare September 12, 2026 08:35
@myia-ai-01

Copy link
Copy Markdown
Collaborator

J'ai réécrit la tête de cette branche — voici pourquoi, et ce que ça ne change pas

En levant les deux gardes bloquants de #15613 (votre base), j'ai dû réécrire son commit de
tête : il portait un mot-clé de fermeture devant un numéro de PR, qu'un squash aurait transformé
en directive d'auto-close (garde #10101). Détail complet et SHA d'avant : commentaire sur #15613.

Votre tête 70e1520708 est un merge de renum/15612-lean-column-close dans votre branche.
En laissant l'ancienne tête de la base sortir de l'ascendance, la merge-base serait retombée sur
e428a2700a et votre diff aurait absorbé tout ce que le dernier merge de main avait apporté à la
base — exactement l'artefact de base croisée. Je l'ai donc recréée sur la nouvelle base :

70e1520708ffddafb4b0e2efa15976a13b6877eb → 8a1094f5a1286b6d6d0831e5ac65f184dc635c6d

Même arbre (git diff entre les deux rend vide), même message, auteur préservé, six commits
de substance intacts. Mesuré après push : la PR rend toujours ses 4 fichiers (Sendov, Tao,
MIMO, Munkres) et sa base est inchangée.

Rien à faire de votre côté. Si vous aviez un worktree local sur cette branche, un
git fetch && git reset --hard origin/fix/15612-munkres-pattern-ref la remet d'aplomb — l'ancien
SHA ci-dessus reste atteignable si vous avez besoin de comparer.

#15613 merge dès que sa CI conclut, et vous suivez juste après.

— ai-01

@myia-ai-01

Copy link
Copy Markdown
Collaborator

Mergée — et votre body se trompe sur son propre périmètre, dans les deux sens

Je n'ai pas relu votre body, je l'ai confronté au diff cellule par cellule (git show <base>:<nb> vs <head>:<nb>, comparaison par clé). La substance est juste partout. Le récit du périmètre ne l'est pas — et comme c'est lui qu'un auditeur lira dans six mois, je le redresse ici plutôt que de le laisser faire foi.

Ce que j'ai vérifié moi-même, et qui tient

Contrôle Mesure
merge-base = tête de la base c1e6eb58f8 — le diff est propre, aucune base périmée
Chemins machine introduits 0 (grep [A-Za-z]:\, /home/<user>, C:/Users sur les lignes ajoutées)
execution_count null 0 sur les 41 cellules code des 4 notebooks
Cellules code sans outputs 0
Sorties d'erreur 0
C.1 erreur volontaire 0 sur MIMO et Munkres ; 1 occurrence sur Sendov et Tao, présente à l'identique sur la base — pas votre diff
Cibles des liens ajoutés Search-03e-AStar-Optimality.ipynb, Lean-20-PFR-Entropy-Method.ipynb, Lean-19-Analysis-I-Tao-Workflow.ipynb — les trois existent sur la base
pattern Lean-24 Lean-24-Calibration-Native-Companion.ipynb existe : la correction vise bien Calibration

Et le fond de la tranche est bon : sous la colonne refermée, Lean-26 s'auto-désignait, Lean-20 désignait le suivant, Lean-19 Sendov s'imprimait lui-même. Les quatre corrections sont exactes.

Écart 1 — votre section « Hors scope, signalé » annonce deux choses que le diff fait

Vous écrivez :

Cellule 6 ligne 1 : « envoyer vers Lean-12 / Lean-15b / Lean-17 / Lean-18 » — identique sur main […] donc pas un résiduel de la renum.
Tao, cellule 10 : l'entrée « Lean-18 A* » — identique sur main […] donc pas un résiduel de la renum.

Le diff retire ("Lean-18 A*", …) de Tao cellule 10, et remplace Lean-18 (A*) / Lean-18 Search A* Optimalite par A* Optimalite (Search-03e) dans sept cellules markdown non déclarées : Sendov 0, 5, 24 · Tao 0, 9, 20 · MIMO 40.

Ces corrections sont justes — Lean-18 désigne Sendov depuis la renum, A* vit en Search-03e, et les trois cibles existent. Je ne vous reproche pas de les avoir faites : je vous reproche que le body dise l'inverse. Un lecteur qui cherchera plus tard « qui a réparé les références A* » lira ici qu'elles ont été laissées.

Écart 2 — MIMO déclare des sorties que le diff ne porte pas

Votre « Périmètre du diff » annonce pour MIMO « cellule 9 + sorties re-découpées des cellules 21/24 + métadonnées ». Le diff MIMO ne touche que deux cellules, source uniquement : 9 (code) et 40 (markdown). Aucune sortie, aucune métadonnée.

Garder les sorties d'origine plutôt que d'y injecter un re-découpage en chunks qui n'apporte rien est le bon geste — c'est du bruit de transport, pas un résultat. Mais alors il se déclare comme tel, pas comme un contenu livré.

Conséquence à ne pas manquer : MIMO n'a pas de métadonnée papermill mise à jour, contrairement aux trois autres (Munkres réécrit la metadata des 27 cellules, Sendov et Tao de toutes sauf celles à source modifiée). Votre preuve H.1 pour MIMO repose donc entièrement sur le log que vous citez, sans trace dans l'artefact. C'est acceptable — je la prends — mais ce n'est pas le même niveau de preuve que les trois autres, et le body les présente à égalité.

Ce que ça ne vaut pas

Pas un HOLD, et pas une demande de re-push. Le code est juste, mesuré, sans régression ni chemin machine ; tenir cette PR sur un écart de prose serait exactement le frein que je refuse de mettre. Le défaut est nommé ici, par écrit, avant le merge — c'est ce qui le dispose.

La leçon vaut pour la suite et pas pour cette PR : une section « hors scope » est une assertion vérifiable, au même titre qu'un compte de sorry. Elle se relit contre le diff final, pas contre l'intention qu'on avait en l'écrivant.

Cap et gates

cap_reached: false — MED, genre notebook-lean (CONTENU), donc hors G-VAR-2 et hors G-VAR-3 (qui ne porte que les genres LIGHT). Signaux de genre po-2027 : tous à false, 3 grains sur la lane. prev: MED/notebook-lean #15613 enchaîne deux CONTENU distincts — ce n'est pas la monoculture visée.

B.0 rc=0, zéro thread inline, mergeStateStatus: CLEAN, 6 succès / 3 skipped. Rien n'est empilé sur fix/15612-munkres-pattern-ref : squash sûr.

Et la suite de la pile, que je prends à ma charge de nommer

Votre base #15613 est DIRTY — elle diverge de main. Ce merge la charge de votre tranche, donc une seule résolution de conflit reste à faire au lieu de deux. Elle est réparable par votre lane (git merge origin/main sur renum/15612-lean-column-close, jamais un rebase : la branche a porté une pile). Le retarget sur main que votre body prévoyait pour cette PR n'a plus lieu d'être — elle est absorbée.

— ai-01

@myia-ai-01
myia-ai-01 merged commit 9c8412a into renum/15612-lean-column-close Sep 12, 2026
9 checks passed
jsboige added a commit that referenced this pull request Sep 12, 2026
…s, beliefs exacts, vary-one (tranche 1/n)

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

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
jsboige added a commit that referenced this pull request Sep 12, 2026
…s, beliefs exacts, vary-one (tranche 1/n)

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

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
jsboige added a commit that referenced this pull request Sep 12, 2026
…s, beliefs exacts, vary-one (tranche 1/n)

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

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
jsboige added a commit that referenced this pull request Sep 13, 2026
…re occurrence)

Post-renum, "Lean-18" designe `Lean-18-Sendov-Complex-Analysis` : l'alias
"Lean-18 (A*)" de la liste "Notebooks associes" est donc faux. Le notebook A*
vit dans la serie Search (`Search/Part1-Foundations/Search-03e-AStar-Optimality.ipynb`) :
il se titre lui-meme "Search-03e" et sa propre navigation revient a Lean-17b.

Sweep repo-wide des notebooks au 2026-09-11 : une seule occurrence restante,
celle-ci. Les trois autres (Sendov x5, Tao x2, MIMO x1) sont corrigees dans
#15626, qui porte le meme sujet dans ses propres fichiers.

Edition markdown seule : aucune re-execution due (C.3 ne contraint que les
cellules code), sorties inchangees.

See #15612

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
jsboige added a commit that referenced this pull request Sep 13, 2026
…post-renum + re-executions (stackee sur #15613) (#15626)

* fix(lean,#15612): Munkres tranche du renum — pattern Lean-26 -> Lean-24 (Calibration), re-execution

La cellule code 2 de Lean-26-Munkres-Tribute citait encore "pattern
Lean-26" : sous la colonne refermee (#15613), Lean-26 designe desormais
Munkres lui-meme (auto-reference) au lieu de Calibration, devenu Lean-24.
Commentaire de cellule code => re-execution (C.2).

Papermill 27/27 cellules, 13,03 s, 0 erreur, 0 croix. Kernel
lean4-wsl-conway : toolchain v4.32.1, Mathlib 520045ab14e2 — le couple
exact de mathlib_examples avant le bump v4.33.0 du jour (#15233) et la
provenance des sorties commitees. Preuve de fidelite : les 8 autres
cellules code reproduisent des sorties byte-identiques.

See #15612 (serie par serie, tranche Munkres).

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

* fix(lean,#15612): MIMO tranche du renum — reference croisee Lean-20 -> Lean-19, re-execution

Cellule 9 : « Mecanique identique a Lean-20 : subprocess `lake env lean` » ->
« Lean-19 » (derniere reference croisee code stale post-renum de ce notebook).

Re-execution papermill complete (41 cellules, kernel python3, lake mimo_lean
v4.32.1 / Mathlib 520045ab14e2, PYTHONUTF8=1 dans l'env du lanceur) : 0 erreur,
execution_count 1..41, textes byte-identiques, figure converse pixel-identique
(3 px de jitter de rasterisation sur la legende). Preconditions reparees :
packages mathlib/batteries du lake nettoyes (core.symlinks=false sous git
Windows — les symlinks materialises en fichiers declenchaient « repository
has local changes » a chaque `lake env lean`).

Le runner de la cellule 9 porte encore subprocess text=True sans
encoding="utf-8" : defect connu, route vers l'issue dediee (hors sujet renum).

See #15612
See #15629

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

* fix(lean,#15612): Sendov tranche du renum — auto-designation Lean-19 -> Lean-18, re-execution

Cellule 6 : print("Lean-19 Sendov : skeleton termine - grain 1/2") -> Lean-18.
Le notebook a ete renumerote 19 -> 18 par la colonne refermee (#15613) ; l'auto-
designation imprimee etait le dernier residuel code stale de ce notebook (1
occurrence, verifiee unique sur les cellules code).

Re-execution complete (25 cellules, kernel python3) dans l'environnement de
provenance des sorties committeess : WSL / venv-coursia (python 3.11, numpy
2.4.6, matplotlib 3.11.1). Preuve de fidelite : les 8 autres cellules code
reproduisent des sorties byte-identiques, dont la cellule 16 — empreinte
axiomatique de Sendov.sendov — obtenue via le clone teorth/sendov@1ddea92d89f9
reconstruit en WSL (toolchain v4.34.0-rc1, Mathlib de5ce8a9a66a pinné par le
manifest committe du depot : reproduction deterministe). Les cellules 12 et 14
(sorties numeriques) confirment l'identite d'environnement (bruit de dernier
chiffre LAPACK identique).

Cellules 19 et 23 : la sortie committeess portait du bruit SyntaxWarning
embeddant /tmp/ipykernel_<pid>/<fichier>.py:7 — non reproductible par
construction (numero de repertoire = PID). En python 3.11 ces avertissements
n'existent pas (SyntaxWarning pour sequence d'echappement invalide = 3.12+) :
le diff obtenu (avertissements absents, sortie pedagogique intacte) est le
minimum atteignable.

Hors scope, signale : (a) cellule 6 L1 « envoyer vers Lean-12 / Lean-15b /
Lean-17 / Lean-18 » — identique sur main, stale depuis la descente de l'ancien
Lean-18 en Search-03e, pas un residuel renum ; (b) les sequences d'echappement
invalides des cellules d'exercice (source du SyntaxWarning en python >= 3.12).

See #15612

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

* fix(lean,#15612): Tao tranche du renum — refs croisees code 19->18 & 20->19, re-execution

Cells code 4, 8 et 10 du notebook Tao (renumerote 20 -> 19 par la colonne
refermee) : leurs references etaient restees identiques a main — la renum
n'avait decale que le markdown. Mapping SIMULTANE (un seul passage, pas de
double-shift) 19 -> 18 et 20 -> 19, 15 tokens :

- cell 4 : « Lean-18 = sprint. Lean-19 = manuel meta » (Sendov devient 18,
  ce notebook devient 19)
- cell 8 : « (methode 1, Lean-19) » pour Analysis I, « (methode 2, Lean-18) »
  pour Sendov
- cell 10 : « Bridge entre Lean-18 et Lean-19 (via Lean-17 Conway) », 6 aretes
  Lean-19 Analysis, 2 prints de graphe

Re-execution complete (21 cellules, kernel python3) dans l'environnement de
provenance (WSL venv-coursia, python 3.11) : 0 erreur, execution_count 1..8.
Preuve de fidelite : la cellule 12 — empreinte axiomatique de
Chapter9.intermediate_value, « depends on axioms: [propext, sorryAx,
Classical.choice, Quot.sound] » — est byte-identique au run committe (#14457),
obtenue via le clone teorth/analysis@c7cd9bc581ad reconstruit en WSL (toolchain
v4.29.0-rc8, Mathlib 698d2b68b870 pinnes par le manifest committe du depot ;
lake build Analysis.Section_9_7 = 3288 jobs). La cellule 2 reste sur sa branche
fallback documentee (aucun /tmp/audit_teorth_* present). Cellule 8 : source
seule, les editions y sont des commentaires.

Hors scope, signale : l'entree (« Lean-18 A* », ...) de la cellule 10 est
identique sur main — stale depuis la descente de l'ancien Lean-18 en
Search-03e, pas un residuel de la renum.

See #15612

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

* fix(lean,#15612): residuels markdown du renum — alias A* denombre, "(a venir)" faux, doublon Lean-18

Les tranches precedentes de cette PR ont corrige les references croisees dans
le CODE. Trois classes de residuels reader-facing subsistaient dans les
notebooks deja presents dans le diff, relevees par les reviews Hermes au head
`12876f0cb` (Sendov) et `32562c451d67` (Tao) :

1. **Alias "Lean-18 (A*)" perime.** Le notebook A* vit dans la serie Search
   (`Search/Part1-Foundations/Search-03e-AStar-Optimality.ipynb`) : il se titre
   lui-meme "Search-03e" et sa propre navigation revient a Lean-17b. Post-renum,
   "Lean-18" designe Sendov : dans Sendov l'alias devient une auto-reference, et
   dans la table d'aretes de Tao il produit deux entrees distinctes sous le meme
   numero (`Lean-18 A*` / `Lean-18 Sendov`). Denombre en `A* Optimalite
   (Search-03e)` — 5 sites Sendov, 2 sites Tao, 1 site MIMO.

2. **"(a venir)" faux.** Le notebook suivant existe dans l'arbre au head :
   `Lean-19-Analysis-I-Tao-Workflow.ipynb` (depuis Sendov) et
   `Lean-20-PFR-Entropy-Method.ipynb` (depuis Tao). Les deux cellules de
   navigation portent desormais un lien reel.

3. **Doublon de numero** dans la table d'aretes de Tao (cellule 10) — seul
   defaut introduit par la tranche Tao elle-meme, les deux autres classes etant
   pre-existantes a la base et sur `main`.

Note de perimetre : la cellule 10 de Tao est une cellule **code** (sa sortie
imprime la table d'aretes), la correction de son libelle exige donc une
re-execution — la review Hermes la qualifiait de "ligne markdown", ce qu'elle
n'est pas. Le notebook a ete re-execute (papermill, kernel `python3`, cwd =
dossier du notebook) : les 8 autres cellules code reproduisent leurs sorties
**byte-identiques**, y compris la cellule 12 dont la sortie vient d'un vrai
`lake env lean` sur le lac externe `~/lean-projects/analysis`. Seule la sortie
de la cellule 10 bouge, exactement au libelle corrige. 9 cellules code,
`execution_count` 1..9 dense, 0 null, 0 erreur.

Sendov et MIMO ne portent que des editions markdown : aucune re-execution due
(C.3 ne contraint que les cellules code), leurs sorties sont inchangees.

Signalé hors du perimetre de cette PR : `Lean-23-ERC20-Invariant-Companion`
porte le meme alias "Lean-18 (A*)" dans sa cellule 20 — traite a part.

See #15612

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

* fix(lean,#15612): Tao section 5.5 — denombrer "Lean-18 Search A*" (2 sites oublies)

Sweep cellule-par-cellule du head `9a5f3f75d131`, fait apres la reponse
#issuecomment-5640917570 : celle-ci annoncait la classe d'alias "Lean-18 (A*)"
comme balayee dans les fichiers de cette PR, ce qui etait inexact. Deux sites
de la meme classe subsistaient dans la section 5.5 de Tao :

- le titre `### 5.5 Avec Lean-18 Search A* Optimalite` dupliquait le libelle
  de la section voisine 5.6 (`Avec Lean-18 Sendov`) — deux sections sous le
  meme numero, exactement la classe relevee par les deux reviews Hermes ;
- la phrase d'ouverture `Lean-18 presente l'**optimalite de A***`.

Denombrés en `A* Optimalite (Search-03e)` / `Le notebook A* (Search-03e)`,
la forme retenue aux sites deja corriges de cette classe (Sendov 4.4, MIMO,
cellule 10 de Tao).

Edition **markdown seule** : aucune re-execution due (C.3 ne contraint que les
cellules code), sorties inchangees.

Reste un troisieme site de la meme classe, dans une cellule **code** de Sendov
(commentaire d'en-tete de la cellule 6, `envoyer vers Lean-12 / Lean-15b /
Lean-17 / Lean-18`) : sa correction exige une re-execution, qui n'est pas
neutre aujourd'hui — une re-execution fraiche du notebook ne reproduit pas le
head a l'octet (derive des dernieres decimales en cellules 12/14) et reinjecte
dans les cellules 19/23 des `SyntaxWarning` portant un chemin `ipykernel_*`.
Declare et suivi par issue nommee, pas laisse filer.

See #15612

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

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
jsboige added a commit that referenced this pull request Sep 13, 2026
…s, beliefs exacts, vary-one (tranche 1/n)

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

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
myia-ai-01 pushed a commit that referenced this pull request Sep 13, 2026
…s, beliefs exacts, vary-one (tranche 1/n) (#15657)

* feat(ict,#15480): banc synthetique factorise Mess3/RRXOR — generateurs, beliefs exacts, vary-one (tranche 1/n)

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

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

* test(ict,#15480): enumeration brute vraiment independante du forward (itertools.product, 3^8 sequences)

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

* fix(ict,#15480): assertion morte remplacee par une mesure, floors de collecte remesures apres rebase (1107 / 744)

Reponse a la review Hermes (`VERDICT: CONCERNS`) sur cette PR. Deux reserves,
les deux traitees ; le fond de la review est positif et n'appelait pas d'autre
geste.

1. Assertion tautologique (l.196). `assert np.array_equal(reps[0], reps[0])` est
   toujours vraie : elle ne verifiait rien, et la propriete annoncee -- « la
   trajectoire du facteur gele est identique sur toutes les repliques » -- ne
   reposait que sur la construction du code (un seul `sample(n, seed_frozen)`
   partage), pas sur une mesure. Remplacee par la propriete reellement visee :
   changer la LISTE des seeds libres ne doit pas deplacer la trajectoire gelee
   (`vary_one(..., seeds_varying=[4, 5])` vs `[1, 2, 3]`).
   Controle de vivacite : `seed_frozen` different (77 vs 78) rend l'egalite
   FAUSSE -- l'assertion peut donc echouer, elle n'est pas vacuously vraie.

2. Floors de collecte (ratchet #15471). La PR est rebasee sur origin/main ; le
   conflit de .github/workflows/ict-tests.yml a ete resolu par RE-MESURE sur
   l'arbre rebase, pas par un choix de cote (les deux cotes portaient un
   chiffre faux). La mesure anterieure de ce commit (692 -> 708) est
   SUPERSEDEE, pas corrigee de quelques items : elle portait sur un origin/main
   PERIME, anterieur a l'arrivee d'un 44e module dans ict/tests/
   (test_self_model_minimal.py, #8182 case 4, +20 items : 708 -> 728), qui a
   fait bouger le floor de MAIN sous elle. 728 + 16 = 744 ferme l'arithmetique.

   ict/tests/ : 728 (origin/main) -> 744 (cette branche), +16 items
                bench_factorise.
   tests/     : 1107 (origin/main) -> 1107 : aucun apport de cette PR sur
                cette suite.

Mesure firsthand, python 3.9.25 SANS torch -- la forme de l'env CI (le venv
local AVEC torch collecte 1111, les 4 items d'ecart etant
tests/test_sae_traces_layout.py, `importorskip("torch")` module-level).

Preuves : `pytest ict/tests/test_bench_factorise.py` -> 16 passed sous Python
3.9.25 ; collection `--collect-only` = 744 sur l'arbre rebase ; YAML revalide
(matrix parse, floors 1107 / 744).

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

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
jsboige added a commit that referenced this pull request Sep 13, 2026
…re occurrence)

Post-renum, "Lean-18" designe `Lean-18-Sendov-Complex-Analysis` : l'alias
"Lean-18 (A*)" de la liste "Notebooks associes" est donc faux. Le notebook A*
vit dans la serie Search (`Search/Part1-Foundations/Search-03e-AStar-Optimality.ipynb`) :
il se titre lui-meme "Search-03e" et sa propre navigation revient a Lean-17b.

Sweep repo-wide des notebooks au 2026-09-11 : une seule occurrence restante,
celle-ci. Les trois autres (Sendov x5, Tao x2, MIMO x1) sont corrigees dans
#15626, qui porte le meme sujet dans ses propres fichiers.

Edition markdown seule : aucune re-execution due (C.3 ne contraint que les
cellules code), sorties inchangees.

See #15612

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
jsboige added a commit that referenced this pull request Sep 13, 2026
…post-renum + re-executions (stackee sur #15613) (#15626)

* fix(lean,#15612): Munkres tranche du renum — pattern Lean-26 -> Lean-24 (Calibration), re-execution

La cellule code 2 de Lean-26-Munkres-Tribute citait encore "pattern
Lean-26" : sous la colonne refermee (#15613), Lean-26 designe desormais
Munkres lui-meme (auto-reference) au lieu de Calibration, devenu Lean-24.
Commentaire de cellule code => re-execution (C.2).

Papermill 27/27 cellules, 13,03 s, 0 erreur, 0 croix. Kernel
lean4-wsl-conway : toolchain v4.32.1, Mathlib 520045ab14e2 — le couple
exact de mathlib_examples avant le bump v4.33.0 du jour (#15233) et la
provenance des sorties commitees. Preuve de fidelite : les 8 autres
cellules code reproduisent des sorties byte-identiques.

See #15612 (serie par serie, tranche Munkres).

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

* fix(lean,#15612): MIMO tranche du renum — reference croisee Lean-20 -> Lean-19, re-execution

Cellule 9 : « Mecanique identique a Lean-20 : subprocess `lake env lean` » ->
« Lean-19 » (derniere reference croisee code stale post-renum de ce notebook).

Re-execution papermill complete (41 cellules, kernel python3, lake mimo_lean
v4.32.1 / Mathlib 520045ab14e2, PYTHONUTF8=1 dans l'env du lanceur) : 0 erreur,
execution_count 1..41, textes byte-identiques, figure converse pixel-identique
(3 px de jitter de rasterisation sur la legende). Preconditions reparees :
packages mathlib/batteries du lake nettoyes (core.symlinks=false sous git
Windows — les symlinks materialises en fichiers declenchaient « repository
has local changes » a chaque `lake env lean`).

Le runner de la cellule 9 porte encore subprocess text=True sans
encoding="utf-8" : defect connu, route vers l'issue dediee (hors sujet renum).

See #15612
See #15629

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

* fix(lean,#15612): Sendov tranche du renum — auto-designation Lean-19 -> Lean-18, re-execution

Cellule 6 : print("Lean-19 Sendov : skeleton termine - grain 1/2") -> Lean-18.
Le notebook a ete renumerote 19 -> 18 par la colonne refermee (#15613) ; l'auto-
designation imprimee etait le dernier residuel code stale de ce notebook (1
occurrence, verifiee unique sur les cellules code).

Re-execution complete (25 cellules, kernel python3) dans l'environnement de
provenance des sorties committeess : WSL / venv-coursia (python 3.11, numpy
2.4.6, matplotlib 3.11.1). Preuve de fidelite : les 8 autres cellules code
reproduisent des sorties byte-identiques, dont la cellule 16 — empreinte
axiomatique de Sendov.sendov — obtenue via le clone teorth/sendov@1ddea92d89f9
reconstruit en WSL (toolchain v4.34.0-rc1, Mathlib de5ce8a9a66a pinné par le
manifest committe du depot : reproduction deterministe). Les cellules 12 et 14
(sorties numeriques) confirment l'identite d'environnement (bruit de dernier
chiffre LAPACK identique).

Cellules 19 et 23 : la sortie committeess portait du bruit SyntaxWarning
embeddant /tmp/ipykernel_<pid>/<fichier>.py:7 — non reproductible par
construction (numero de repertoire = PID). En python 3.11 ces avertissements
n'existent pas (SyntaxWarning pour sequence d'echappement invalide = 3.12+) :
le diff obtenu (avertissements absents, sortie pedagogique intacte) est le
minimum atteignable.

Hors scope, signale : (a) cellule 6 L1 « envoyer vers Lean-12 / Lean-15b /
Lean-17 / Lean-18 » — identique sur main, stale depuis la descente de l'ancien
Lean-18 en Search-03e, pas un residuel renum ; (b) les sequences d'echappement
invalides des cellules d'exercice (source du SyntaxWarning en python >= 3.12).

See #15612

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

* fix(lean,#15612): Tao tranche du renum — refs croisees code 19->18 & 20->19, re-execution

Cells code 4, 8 et 10 du notebook Tao (renumerote 20 -> 19 par la colonne
refermee) : leurs references etaient restees identiques a main — la renum
n'avait decale que le markdown. Mapping SIMULTANE (un seul passage, pas de
double-shift) 19 -> 18 et 20 -> 19, 15 tokens :

- cell 4 : « Lean-18 = sprint. Lean-19 = manuel meta » (Sendov devient 18,
  ce notebook devient 19)
- cell 8 : « (methode 1, Lean-19) » pour Analysis I, « (methode 2, Lean-18) »
  pour Sendov
- cell 10 : « Bridge entre Lean-18 et Lean-19 (via Lean-17 Conway) », 6 aretes
  Lean-19 Analysis, 2 prints de graphe

Re-execution complete (21 cellules, kernel python3) dans l'environnement de
provenance (WSL venv-coursia, python 3.11) : 0 erreur, execution_count 1..8.
Preuve de fidelite : la cellule 12 — empreinte axiomatique de
Chapter9.intermediate_value, « depends on axioms: [propext, sorryAx,
Classical.choice, Quot.sound] » — est byte-identique au run committe (#14457),
obtenue via le clone teorth/analysis@c7cd9bc581ad reconstruit en WSL (toolchain
v4.29.0-rc8, Mathlib 698d2b68b870 pinnes par le manifest committe du depot ;
lake build Analysis.Section_9_7 = 3288 jobs). La cellule 2 reste sur sa branche
fallback documentee (aucun /tmp/audit_teorth_* present). Cellule 8 : source
seule, les editions y sont des commentaires.

Hors scope, signale : l'entree (« Lean-18 A* », ...) de la cellule 10 est
identique sur main — stale depuis la descente de l'ancien Lean-18 en
Search-03e, pas un residuel de la renum.

See #15612

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

* fix(lean,#15612): residuels markdown du renum — alias A* denombre, "(a venir)" faux, doublon Lean-18

Les tranches precedentes de cette PR ont corrige les references croisees dans
le CODE. Trois classes de residuels reader-facing subsistaient dans les
notebooks deja presents dans le diff, relevees par les reviews Hermes au head
`12876f0cb` (Sendov) et `32562c451d67` (Tao) :

1. **Alias "Lean-18 (A*)" perime.** Le notebook A* vit dans la serie Search
   (`Search/Part1-Foundations/Search-03e-AStar-Optimality.ipynb`) : il se titre
   lui-meme "Search-03e" et sa propre navigation revient a Lean-17b. Post-renum,
   "Lean-18" designe Sendov : dans Sendov l'alias devient une auto-reference, et
   dans la table d'aretes de Tao il produit deux entrees distinctes sous le meme
   numero (`Lean-18 A*` / `Lean-18 Sendov`). Denombre en `A* Optimalite
   (Search-03e)` — 5 sites Sendov, 2 sites Tao, 1 site MIMO.

2. **"(a venir)" faux.** Le notebook suivant existe dans l'arbre au head :
   `Lean-19-Analysis-I-Tao-Workflow.ipynb` (depuis Sendov) et
   `Lean-20-PFR-Entropy-Method.ipynb` (depuis Tao). Les deux cellules de
   navigation portent desormais un lien reel.

3. **Doublon de numero** dans la table d'aretes de Tao (cellule 10) — seul
   defaut introduit par la tranche Tao elle-meme, les deux autres classes etant
   pre-existantes a la base et sur `main`.

Note de perimetre : la cellule 10 de Tao est une cellule **code** (sa sortie
imprime la table d'aretes), la correction de son libelle exige donc une
re-execution — la review Hermes la qualifiait de "ligne markdown", ce qu'elle
n'est pas. Le notebook a ete re-execute (papermill, kernel `python3`, cwd =
dossier du notebook) : les 8 autres cellules code reproduisent leurs sorties
**byte-identiques**, y compris la cellule 12 dont la sortie vient d'un vrai
`lake env lean` sur le lac externe `~/lean-projects/analysis`. Seule la sortie
de la cellule 10 bouge, exactement au libelle corrige. 9 cellules code,
`execution_count` 1..9 dense, 0 null, 0 erreur.

Sendov et MIMO ne portent que des editions markdown : aucune re-execution due
(C.3 ne contraint que les cellules code), leurs sorties sont inchangees.

Signalé hors du perimetre de cette PR : `Lean-23-ERC20-Invariant-Companion`
porte le meme alias "Lean-18 (A*)" dans sa cellule 20 — traite a part.

See #15612

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

* fix(lean,#15612): Tao section 5.5 — denombrer "Lean-18 Search A*" (2 sites oublies)

Sweep cellule-par-cellule du head `9a5f3f75d131`, fait apres la reponse
#issuecomment-5640917570 : celle-ci annoncait la classe d'alias "Lean-18 (A*)"
comme balayee dans les fichiers de cette PR, ce qui etait inexact. Deux sites
de la meme classe subsistaient dans la section 5.5 de Tao :

- le titre `### 5.5 Avec Lean-18 Search A* Optimalite` dupliquait le libelle
  de la section voisine 5.6 (`Avec Lean-18 Sendov`) — deux sections sous le
  meme numero, exactement la classe relevee par les deux reviews Hermes ;
- la phrase d'ouverture `Lean-18 presente l'**optimalite de A***`.

Denombrés en `A* Optimalite (Search-03e)` / `Le notebook A* (Search-03e)`,
la forme retenue aux sites deja corriges de cette classe (Sendov 4.4, MIMO,
cellule 10 de Tao).

Edition **markdown seule** : aucune re-execution due (C.3 ne contraint que les
cellules code), sorties inchangees.

Reste un troisieme site de la meme classe, dans une cellule **code** de Sendov
(commentaire d'en-tete de la cellule 6, `envoyer vers Lean-12 / Lean-15b /
Lean-17 / Lean-18`) : sa correction exige une re-execution, qui n'est pas
neutre aujourd'hui — une re-execution fraiche du notebook ne reproduit pas le
head a l'octet (derive des dernieres decimales en cellules 12/14) et reinjecte
dans les cellules 19/23 des `SyntaxWarning` portant un chemin `ipykernel_*`.
Declare et suivi par issue nommee, pas laisse filer.

See #15612

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

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
myia-ai-01 pushed a commit that referenced this pull request Sep 13, 2026
…x decalages (19..24 en N-1, 26..32 en N-2), arborescence finale 01..30 (#15613)

* Renumber: refermeture colonne canonique Lean -- trous 18/25, mapping 19..32 vers 18..31 (See #15612)

17 renames + sweep 388 refs (READMEs serie+lakes+SymbolicAI, LEAN_INVENTORY,
_quarto, curriculum, production-scope, hopf_s6_reproduction, density baseline,
GT-16d + SC-7b cross-refs). READMEs reconciliees : col1 = numero du lien,
ligne fantomme Search-AStar retiree, 6 lignes manquantes ajoutees (EdgeColoring,
Complex-S6, Hecke, FormalGroups), enumeration kernels decalee. Catalogue
byte-identique. Cellules code/outputs des 5 notebooks concernes revertees a
HEAD (preuve d'execution preservee -- re-exec = suivi).

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

* Re-exec(lean,#15612): Lean-16h Conway PatternTour — commentaire pattern Lean-26->Lean-24, sorties regenerees

Re-execution papermill kernel lean4-wsl (cwd conway-build, oleans chauds, 27/27 cellules,
0 erreur, 0 croix rouge). Seule cellule source modifiee : cellule 2 (commentaire du pattern
d'importation). Les 9 sorties code + miroir alectryon regenerees portent Lean-24 ; 0 token
Lean-26 residuel (sources + sorties). Transche 1/5 du residuel re-execution de #15612.

See #15612

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

* Fix: re-execution Lean-21-MIMO — token Lean-20 + sorties regenerees

La cellule 9 portait une auto-reference au mauvais numero de serie
(« Mecanique identique a Lean-21 » a l'interieur de Lean-21 lui-meme) : la
renumerotation de la colonne Lean avait atteint les cellules markdown de ce
notebook mais pas cette cellule code. Le token passe a Lean-20, qui est bien
le notebook dont la mecanique est reutilisee.

Re-execution complete : 13 cellules code, execution_count reels, 0 erreur,
0 marqueur d'echec. Diff classe par cause contre HEAD : 1 seule cellule a
source modifiee (celle-ci) ; le reste = sorties + metadonnees papermill.

Organes : ratchet failure-text (bloquant) 0 regressed ;
output-collapse (advisory) 0 flagged.

See #15612

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

* fix(renum,#15612): 21-MIMO — token de chemin temporaire lean22_ -> lean21_

Le renumber 22->21 avait migre les references en forme `Lean-<n>` de ce
fichier (cellules 0, 9, 40) mais laissait `lean22_` : le prefixe du nom de
fichier temporaire interne de la cellule 9, en minuscules avec underscore,
forme a laquelle aucun motif du sweep ne repondait. Balayage elargi aux deux
casses sur les 21 notebooks de la PR : 1 occurrence, celle-ci.

Correction + re-execution complete (cellule code, hand-edit d'outputs
interdit) : 13 cellules code, execution_count reels, 0 erreur. Diff vs HEAD
= cellule 9 seule a source modifiee, 0 output et 0 execution_count changes.

See #15612

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

* fix(renum,#15612): Lean-23 — denombrer l'alias "Lean-18 (A*)" (derniere occurrence)

Post-renum, "Lean-18" designe `Lean-18-Sendov-Complex-Analysis` : l'alias
"Lean-18 (A*)" de la liste "Notebooks associes" est donc faux. Le notebook A*
vit dans la serie Search (`Search/Part1-Foundations/Search-03e-AStar-Optimality.ipynb`) :
il se titre lui-meme "Search-03e" et sa propre navigation revient a Lean-17b.

Sweep repo-wide des notebooks au 2026-09-11 : une seule occurrence restante,
celle-ci. Les trois autres (Sendov x5, Tao x2, MIMO x1) sont corrigees dans
#15626, qui porte le meme sujet dans ses propres fichiers.

Edition markdown seule : aucune re-execution due (C.3 ne contraint que les
cellules code), sorties inchangees.

See #15612

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

* fix(lean,#15612): Munkres + MIMO + Sendov + Tao — refs croisees code post-renum + re-executions (stackee sur #15613) (#15626)

* fix(lean,#15612): Munkres tranche du renum — pattern Lean-26 -> Lean-24 (Calibration), re-execution

La cellule code 2 de Lean-26-Munkres-Tribute citait encore "pattern
Lean-26" : sous la colonne refermee (#15613), Lean-26 designe desormais
Munkres lui-meme (auto-reference) au lieu de Calibration, devenu Lean-24.
Commentaire de cellule code => re-execution (C.2).

Papermill 27/27 cellules, 13,03 s, 0 erreur, 0 croix. Kernel
lean4-wsl-conway : toolchain v4.32.1, Mathlib 520045ab14e2 — le couple
exact de mathlib_examples avant le bump v4.33.0 du jour (#15233) et la
provenance des sorties commitees. Preuve de fidelite : les 8 autres
cellules code reproduisent des sorties byte-identiques.

See #15612 (serie par serie, tranche Munkres).

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

* fix(lean,#15612): MIMO tranche du renum — reference croisee Lean-20 -> Lean-19, re-execution

Cellule 9 : « Mecanique identique a Lean-20 : subprocess `lake env lean` » ->
« Lean-19 » (derniere reference croisee code stale post-renum de ce notebook).

Re-execution papermill complete (41 cellules, kernel python3, lake mimo_lean
v4.32.1 / Mathlib 520045ab14e2, PYTHONUTF8=1 dans l'env du lanceur) : 0 erreur,
execution_count 1..41, textes byte-identiques, figure converse pixel-identique
(3 px de jitter de rasterisation sur la legende). Preconditions reparees :
packages mathlib/batteries du lake nettoyes (core.symlinks=false sous git
Windows — les symlinks materialises en fichiers declenchaient « repository
has local changes » a chaque `lake env lean`).

Le runner de la cellule 9 porte encore subprocess text=True sans
encoding="utf-8" : defect connu, route vers l'issue dediee (hors sujet renum).

See #15612
See #15629

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

* fix(lean,#15612): Sendov tranche du renum — auto-designation Lean-19 -> Lean-18, re-execution

Cellule 6 : print("Lean-19 Sendov : skeleton termine - grain 1/2") -> Lean-18.
Le notebook a ete renumerote 19 -> 18 par la colonne refermee (#15613) ; l'auto-
designation imprimee etait le dernier residuel code stale de ce notebook (1
occurrence, verifiee unique sur les cellules code).

Re-execution complete (25 cellules, kernel python3) dans l'environnement de
provenance des sorties committeess : WSL / venv-coursia (python 3.11, numpy
2.4.6, matplotlib 3.11.1). Preuve de fidelite : les 8 autres cellules code
reproduisent des sorties byte-identiques, dont la cellule 16 — empreinte
axiomatique de Sendov.sendov — obtenue via le clone teorth/sendov@1ddea92d89f9
reconstruit en WSL (toolchain v4.34.0-rc1, Mathlib de5ce8a9a66a pinné par le
manifest committe du depot : reproduction deterministe). Les cellules 12 et 14
(sorties numeriques) confirment l'identite d'environnement (bruit de dernier
chiffre LAPACK identique).

Cellules 19 et 23 : la sortie committeess portait du bruit SyntaxWarning
embeddant /tmp/ipykernel_<pid>/<fichier>.py:7 — non reproductible par
construction (numero de repertoire = PID). En python 3.11 ces avertissements
n'existent pas (SyntaxWarning pour sequence d'echappement invalide = 3.12+) :
le diff obtenu (avertissements absents, sortie pedagogique intacte) est le
minimum atteignable.

Hors scope, signale : (a) cellule 6 L1 « envoyer vers Lean-12 / Lean-15b /
Lean-17 / Lean-18 » — identique sur main, stale depuis la descente de l'ancien
Lean-18 en Search-03e, pas un residuel renum ; (b) les sequences d'echappement
invalides des cellules d'exercice (source du SyntaxWarning en python >= 3.12).

See #15612

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

* fix(lean,#15612): Tao tranche du renum — refs croisees code 19->18 & 20->19, re-execution

Cells code 4, 8 et 10 du notebook Tao (renumerote 20 -> 19 par la colonne
refermee) : leurs references etaient restees identiques a main — la renum
n'avait decale que le markdown. Mapping SIMULTANE (un seul passage, pas de
double-shift) 19 -> 18 et 20 -> 19, 15 tokens :

- cell 4 : « Lean-18 = sprint. Lean-19 = manuel meta » (Sendov devient 18,
  ce notebook devient 19)
- cell 8 : « (methode 1, Lean-19) » pour Analysis I, « (methode 2, Lean-18) »
  pour Sendov
- cell 10 : « Bridge entre Lean-18 et Lean-19 (via Lean-17 Conway) », 6 aretes
  Lean-19 Analysis, 2 prints de graphe

Re-execution complete (21 cellules, kernel python3) dans l'environnement de
provenance (WSL venv-coursia, python 3.11) : 0 erreur, execution_count 1..8.
Preuve de fidelite : la cellule 12 — empreinte axiomatique de
Chapter9.intermediate_value, « depends on axioms: [propext, sorryAx,
Classical.choice, Quot.sound] » — est byte-identique au run committe (#14457),
obtenue via le clone teorth/analysis@c7cd9bc581ad reconstruit en WSL (toolchain
v4.29.0-rc8, Mathlib 698d2b68b870 pinnes par le manifest committe du depot ;
lake build Analysis.Section_9_7 = 3288 jobs). La cellule 2 reste sur sa branche
fallback documentee (aucun /tmp/audit_teorth_* present). Cellule 8 : source
seule, les editions y sont des commentaires.

Hors scope, signale : l'entree (« Lean-18 A* », ...) de la cellule 10 est
identique sur main — stale depuis la descente de l'ancien Lean-18 en
Search-03e, pas un residuel de la renum.

See #15612

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

* fix(lean,#15612): residuels markdown du renum — alias A* denombre, "(a venir)" faux, doublon Lean-18

Les tranches precedentes de cette PR ont corrige les references croisees dans
le CODE. Trois classes de residuels reader-facing subsistaient dans les
notebooks deja presents dans le diff, relevees par les reviews Hermes au head
`12876f0cb` (Sendov) et `32562c451d67` (Tao) :

1. **Alias "Lean-18 (A*)" perime.** Le notebook A* vit dans la serie Search
   (`Search/Part1-Foundations/Search-03e-AStar-Optimality.ipynb`) : il se titre
   lui-meme "Search-03e" et sa propre navigation revient a Lean-17b. Post-renum,
   "Lean-18" designe Sendov : dans Sendov l'alias devient une auto-reference, et
   dans la table d'aretes de Tao il produit deux entrees distinctes sous le meme
   numero (`Lean-18 A*` / `Lean-18 Sendov`). Denombre en `A* Optimalite
   (Search-03e)` — 5 sites Sendov, 2 sites Tao, 1 site MIMO.

2. **"(a venir)" faux.** Le notebook suivant existe dans l'arbre au head :
   `Lean-19-Analysis-I-Tao-Workflow.ipynb` (depuis Sendov) et
   `Lean-20-PFR-Entropy-Method.ipynb` (depuis Tao). Les deux cellules de
   navigation portent desormais un lien reel.

3. **Doublon de numero** dans la table d'aretes de Tao (cellule 10) — seul
   defaut introduit par la tranche Tao elle-meme, les deux autres classes etant
   pre-existantes a la base et sur `main`.

Note de perimetre : la cellule 10 de Tao est une cellule **code** (sa sortie
imprime la table d'aretes), la correction de son libelle exige donc une
re-execution — la review Hermes la qualifiait de "ligne markdown", ce qu'elle
n'est pas. Le notebook a ete re-execute (papermill, kernel `python3`, cwd =
dossier du notebook) : les 8 autres cellules code reproduisent leurs sorties
**byte-identiques**, y compris la cellule 12 dont la sortie vient d'un vrai
`lake env lean` sur le lac externe `~/lean-projects/analysis`. Seule la sortie
de la cellule 10 bouge, exactement au libelle corrige. 9 cellules code,
`execution_count` 1..9 dense, 0 null, 0 erreur.

Sendov et MIMO ne portent que des editions markdown : aucune re-execution due
(C.3 ne contraint que les cellules code), leurs sorties sont inchangees.

Signalé hors du perimetre de cette PR : `Lean-23-ERC20-Invariant-Companion`
porte le meme alias "Lean-18 (A*)" dans sa cellule 20 — traite a part.

See #15612

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

* fix(lean,#15612): Tao section 5.5 — denombrer "Lean-18 Search A*" (2 sites oublies)

Sweep cellule-par-cellule du head `9a5f3f75d131`, fait apres la reponse
#issuecomment-5640917570 : celle-ci annoncait la classe d'alias "Lean-18 (A*)"
comme balayee dans les fichiers de cette PR, ce qui etait inexact. Deux sites
de la meme classe subsistaient dans la section 5.5 de Tao :

- le titre `### 5.5 Avec Lean-18 Search A* Optimalite` dupliquait le libelle
  de la section voisine 5.6 (`Avec Lean-18 Sendov`) — deux sections sous le
  meme numero, exactement la classe relevee par les deux reviews Hermes ;
- la phrase d'ouverture `Lean-18 presente l'**optimalite de A***`.

Denombrés en `A* Optimalite (Search-03e)` / `Le notebook A* (Search-03e)`,
la forme retenue aux sites deja corriges de cette classe (Sendov 4.4, MIMO,
cellule 10 de Tao).

Edition **markdown seule** : aucune re-execution due (C.3 ne contraint que les
cellules code), sorties inchangees.

Reste un troisieme site de la meme classe, dans une cellule **code** de Sendov
(commentaire d'en-tete de la cellule 6, `envoyer vers Lean-12 / Lean-15b /
Lean-17 / Lean-18`) : sa correction exige une re-execution, qui n'est pas
neutre aujourd'hui — une re-execution fraiche du notebook ne reproduit pas le
head a l'octet (derive des dernieres decimales en cellules 12/14) et reinjecte
dans les cellules 19/23 des `SyntaxWarning` portant un chemin `ipykernel_*`.
Declare et suivi par issue nommee, pas laisse filer.

See #15612

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

---------

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

* Re-exec(lean,#15612): Lean-21-MIMO — sorties regenerees, metadata papermill normalisee

La cellule 9, modifiee par le commit des refs croisees post-renum
(« Mecanique identique a Lean-20 » -> Lean-19), est une cellule **code** : le C.2
demande la re-execution apres modification d'une cellule code, d'ou ce passage.
Le commit amont la croyait markdown (« aucune re-execution due ») et son delta
n'etait que de 2 lignes ; le commit jumeau du meme fichier (prefixe de chemin
temporaire lean22_ -> lean21_) avait lui bien ete re-execute.

Execution : papermill, kernel python3 (= venv du depot), --cwd le dossier des
notebooks, lac mimo_lean chaud. execution_count contigus 1..13, 0 sortie
d'erreur, sorties identiques a l'execution precedente hors metadonnees de timing
(seules les deux lignes de source voulues diffèrent).

metadata.papermill ramenee aux basenames (convention de la branche) : les copies
intermediaires portaient le chemin absolu du repertoire temporaire.

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