Skip to content

feat(lean): migrer les 27 lakes first-party vers Lean/Mathlib 4.33 #14773

Description

@jsboige

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é

  1. 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.
  2. 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.
  3. 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.
  4. Phase 3 — pilotes utiles à FLT
  5. 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.
  6. 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

  • 27/27 lakes first-party migrés, ou exception amont explicitement documentée et trackée séparément ;
  • 27/27 builds locaux réussis sur leur cible réelle ;
  • dette formelle globale distinct_code_sorry ≤ 15 ;
  • tous les jobs CI Lean/proof-integrity/i18n pertinents verts ;
  • matrice finale lake → toolchain → pin Mathlib → build → proof-integrity postée dans cette issue ;
  • research(lean): cartographier le dépôt Anthropic FLT pour CoursIA #14771 mis à jour pour que les probes et ports FLT ciblent 4.33, sans shim 4.32 par défaut.

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions