Objectif
Monter l'ensemble des lakes Lean first-party de CoursIA vers Lean/Mathlib 4.33, en prenant comme ancrage initial le pin Mathlib utilisé par anthropics/fermats-last-theorem au commit aa2d8b34692b16c70f699536de0d8e75b9a3e9ef :
- cible cohérente CoursIA :
leanprover/lean4:v4.33.0 ;
- Mathlib :
db584cd6d46c92f209a44c0f1c829460d327499d, dont le lean-toolchain fixé est v4.33.0 ;
- FLT fixe son projet racine à
v4.33.1, mais Lake a vérifié firsthand que ce décalage désactive le cache binaire Mathlib. Nous ne le recopions donc pas sans nécessité.
Cette montée va dans le sens de l'écosystème et doit précéder les ports issus de FLT : nous évitons ainsi d'écrire des shims descendants 4.33 → 4.32 destinés à être jetés.
Précédent
La migration 4.31 → 4.32 a été livrée sans rupture architecturale sous #10986, selon une séquence robuste : pilotes core-only, pilote Mathlib (sensitivity_lean), puis tranches séquentielles. Les adaptations rencontrées étaient bornées (résidus convert/defeq, ambiguïté zero_apply, chemins d'instances), et les caches binaires Mathlib étaient disponibles.
Cette issue reprend cette discipline sans supposer que 4.33 sera automatiquement sans adaptation : chaque lake doit compiler et conserver son intégrité formelle.
Inventaire vérifié au 2026-09-05
git ls-files 'MyIA.AI.Notebooks/**/lean-toolchain', hors .lake/packages et fixture tiers agent_tests/prover/session_state/reference_docs/stable_marriage/upstream :
- 27 lakes first-party ;
- 26 sur
leanprover/lean4:v4.32.1 ;
- 1 sur
leanprover/lean4:v4.31.0-rc2 : GameTheory/conway_cgt_lean.
Le fixture upstream stable_marriage à 4.25.0 est hors scope. Les dépendances vendored ou téléchargées sous .lake/packages/ sont hors scope comme cibles directes.
Dette formelle de référence, mesurée avec python scripts/lean/count_code_sorry.py --json : 15 distinct_code_sorry, répartis knot_lean=11, decision_theory_lean=2, game_theory_lean=1, conway_lean=1. La migration ne doit jamais augmenter ces comptes.
Plan phasé
- Phase 0 — environnement et cache
- installer
leanprover/lean4:v4.33.0 ;
- vérifier la disponibilité du cache Mathlib au pin retenu ;
- documenter les renommages/API cassés réellement rencontrés, sans créer de shim global avant besoin.
- Phase 1 — pilotes core-only
- migrer les lakes sans dépendance Mathlib directe (
lean_game_defs, lean_game_defs_ext, finiteness_lean, sous réserve de vérification des lakefiles) ;
lake build local complet pour chacun.
- Phase 2 — pilote Mathlib
sensitivity_lean, déjà propre (distinct_code_sorry=0) et doté de CI build/proof-integrity/i18n ;
- régénérer le manifest avec Lake, traiter les seules adaptations API nécessaires, puis build complet.
- Phase 3 — pilotes utiles à FLT
- Phase 4 — rollout séquentiel
- migrer les autres lakes par petites tranches cohérentes ;
- ne pas lancer plusieurs builds Mathlib lourds en concurrence sur la même machine.
- Phase 5 — cas externe
conway_cgt_lean
- vérifier d'abord une révision de
vihdzp/combinatorial-games compatible Lean/Mathlib 4.33 ;
- ne pas forcer un bump local créant un version-skate avec sa dépendance amont.
Acceptance par lake
lean-toolchain = leanprover/lean4:v4.33.0 ;
- pin Mathlib direct ou dépendance héritée résolu vers une combinaison 4.33 cohérente ;
lake-manifest.json régénéré par Lake, jamais édité à la main ;
lake build local complet SUCCESS après le dernier changement ;
distinct_code_sorry inchangé ou en baisse avec l'instrument canonique scripts/lean/count_code_sorry.py ;
- aucun
native_decide, sorryAx transitif ou nouvel axiome interdit ;
- proof-integrity ciblée sur les modules modifiés lorsque câblée, sinon B.3 explicitement déclaré non applicable avec vérification manuelle adaptée ;
- parité des siblings FR/EN conservée ;
- une PR atomique par lake ou petite tranche cohérente ; aucun mélange avec les ports de code FLT.
Critères de clôture
Hors scope
- import monolithique du dépôt FLT ;
- copie de ses sources dans la PR de migration ;
- fixture tiers
stable_marriage/upstream ;
- packages sous
.lake/packages/ ;
- réduction de la dette
sorry existante, sauf adaptation nécessaire qui permet honnêtement de la réduire.
Voir #14771 et #10986.
Objectif
Monter l'ensemble des lakes Lean first-party de CoursIA vers Lean/Mathlib 4.33, en prenant comme ancrage initial le pin Mathlib utilisé par
anthropics/fermats-last-theoremau commitaa2d8b34692b16c70f699536de0d8e75b9a3e9ef:leanprover/lean4:v4.33.0;db584cd6d46c92f209a44c0f1c829460d327499d, dont lelean-toolchainfixé estv4.33.0;v4.33.1, mais Lake a vérifié firsthand que ce décalage désactive le cache binaire Mathlib. Nous ne le recopions donc pas sans nécessité.Cette montée va dans le sens de l'écosystème et doit précéder les ports issus de FLT : nous évitons ainsi d'écrire des shims descendants 4.33 → 4.32 destinés à être jetés.
Précédent
La migration 4.31 → 4.32 a été livrée sans rupture architecturale sous #10986, selon une séquence robuste : pilotes core-only, pilote Mathlib (
sensitivity_lean), puis tranches séquentielles. Les adaptations rencontrées étaient bornées (résidusconvert/defeq, ambiguïtézero_apply, chemins d'instances), et les caches binaires Mathlib étaient disponibles.Cette issue reprend cette discipline sans supposer que 4.33 sera automatiquement sans adaptation : chaque lake doit compiler et conserver son intégrité formelle.
Inventaire vérifié au 2026-09-05
git ls-files 'MyIA.AI.Notebooks/**/lean-toolchain', hors.lake/packageset fixture tiersagent_tests/prover/session_state/reference_docs/stable_marriage/upstream:leanprover/lean4:v4.32.1;leanprover/lean4:v4.31.0-rc2:GameTheory/conway_cgt_lean.Le fixture upstream
stable_marriageà 4.25.0 est hors scope. Les dépendances vendored ou téléchargées sous.lake/packages/sont hors scope comme cibles directes.Dette formelle de référence, mesurée avec
python scripts/lean/count_code_sorry.py --json: 15distinct_code_sorry, répartisknot_lean=11,decision_theory_lean=2,game_theory_lean=1,conway_lean=1. La migration ne doit jamais augmenter ces comptes.Plan phasé
leanprover/lean4:v4.33.0;lean_game_defs,lean_game_defs_ext,finiteness_lean, sous réserve de vérification des lakefiles) ;lake buildlocal complet pour chacun.sensitivity_lean, déjà propre (distinct_code_sorry=0) et doté de CI build/proof-integrity/i18n ;galois_leanpuisgrothendieck_lean;conway_cgt_leanvihdzp/combinatorial-gamescompatible Lean/Mathlib 4.33 ;Acceptance par lake
lean-toolchain=leanprover/lean4:v4.33.0;lake-manifest.jsonrégénéré par Lake, jamais édité à la main ;lake buildlocal complet SUCCESS après le dernier changement ;distinct_code_sorryinchangé ou en baisse avec l'instrument canoniquescripts/lean/count_code_sorry.py;native_decide,sorryAxtransitif ou nouvel axiome interdit ;Critères de clôture
distinct_code_sorry ≤ 15;lake → toolchain → pin Mathlib → build → proof-integritypostée dans cette issue ;Hors scope
stable_marriage/upstream;.lake/packages/;sorryexistante, sauf adaptation nécessaire qui permet honnêtement de la réduire.Voir #14771 et #10986.