Skip to content

Docs(lean,#24634): les pins Mathlib documentes contredisent les lakefiles (3 lakes) - #24636

Merged
myia-ai-01 merged 2 commits into
mainfrom
docs/1453-pin-mathlib-align
Nov 4, 2026
Merged

myia-ai-01 merged 2 commits into
mainfrom
docs/1453-pin-mathlib-align

Conversation

@jsboige

@jsboige jsboige commented Nov 4, 2026 •

Copy link
Copy Markdown
Owner

Grain: LIGHT/docs — lane myia-po-2024:CoursIA — prev: MED/guard #24588

Trois lakes Lean documentaient une version de Mathlib que leur propre lakefile.lean contredit. Le lakefile fait foi ; c'est la documentation qui était fausse.

La mesure

Lu lean-toolchain et le require mathlib de chaque lake sur origin/main (bb19c7151ed) :

Lake fait foi (lean-toolchain / lakefile) ce que la doc annonçait
Search/search_lean v4.33.0 / db584cd6 v4.31.0-rc1 (README L216)
Probas/DecisionTheory/decision_theory_lean v4.33.0 / db584cd6 v4.31.0-rc1 (README L42, L55), v4.30.0-rc2 (docstrings)
Search/discrepancy_lean v4.33.0 / db584cd6 v4.32.1 / 520045ab (README L55)

Deux détails valent d'être dits, parce qu'ils montrent que ce n'est pas de la cosmétique :

  • search_lean se contredisait dans son propre README : L216 annonçait v4.31.0-rc1 six lignes au-dessus de L221 qui annonçait déjà v4.33.0.
  • decision_theory_lean portait deux versions périmées différentes (v4.31.0-rc1 dans le README, v4.30.0-rc2 dans les docstrings) pour une seule dépendance.

Ce que je n'ai pas fait, et pourquoi

Les deux phrases historiques — Gittins/Discount.lean L95 et son miroir Gittins/Discount_en.lean L94, plus README L75 — disent que tsum_le_tsum n'est pas disponible sur ℝ nu. Elles décrivaient la version contre laquelle le contournement a été écrit.

Je ne les ai pas rebasées sur v4.33.0. Je n'ai pas mesuré si tsum_le_tsum est encore absent sur ℝ nu au pin db584cd6, et l'écrire serait une affirmation sans preuve — exactement ce que ce dépôt interdit. Elles sont marquées comme décrivant la version alors utilisée, ce qui est vrai et ne prétend rien sur le pin actuel.

Validation

  • Aucun lake build lancé, et je le dis plutôt que de le laisser croire : les 8 lakes de cette famille n'ont pas de Mathlib local (.lake/packages/mathlib vide partout), un build demande un téléchargement de plusieurs Go.
  • Ce qui a été vérifié à la place : les délimiteurs de docstring sont équilibrés 11/11 dans Discount.lean comme dans son miroir _en, avant comme après (je n'ai ajouté ni retiré aucun /- -/), et le diff ne touche que du texte à l'intérieur de blocs existants.
  • Périmètre réel de la PR, en clair : Gittins/Discount.lean, Gittins/Discount_en.lean, et les trois README de lake (decision_theory_lean, discrepancy_lean, search_lean). Deux carnets ne sont pas touchés, aucun workflow CI n'est modifié.
  • Aucune preuve, aucun sorry ajouté ou retiré. Aucun notebook touché.
  • python scripts/lean/count_code_sorry.py non relancé : sans objet, le diff ne contient aucune ligne de code Lean, seulement des commentaires.

Portée

C'est une livraison partielle de #24634 (See, pas Closes). Le même défaut existe dans la cohorte GameTheory, que je n'ai pas mesurée : conway_cgt_lean (v4.33.0-rc1/bb863d3d), game_theory_lean, minimax_lean, lean_game_defs annoncent tous v4.31/v4.32 alors que leurs lakefiles sont en v4.33.0. Ils sont nommés dans l'issue avec leur mesure, et seront traités lake par lake — pas remplacés en série, puisque social_choice_lean (docs seulement) et repeated_games_lean (vide, sources dans game_theory_lean) demandent une lecture au cas par cas.

Découvert en travaillant l'étape 2 de #1453 : c'est la correction d'une phrase fausse que j'avais moi-même postée sur ce lake avant de lire son lakefile.lean au lieu de son README (commentaire c.6628770105 sur #1453).

See #24634

🤖 Generated with Claude Code

…files

Trois lakes annoncaient une version de Mathlib que leur propre
`lakefile.lean` contredit. Le lakefile fait foi ; c'est la documentation
qui etait fausse.

- Search/search_lean : `v4.31.0-rc1` -> pin `db584cd6` (README L216, qui
  contredisait deja son propre L221 en `v4.33.0`)
- Probas/DecisionTheory/decision_theory_lean : `v4.31.0-rc1` ->
  `v4.33.0` / `db584cd6` (README L42, L55)
- Search/discrepancy_lean : `v4.32.1` / `520045ab` -> `v4.33.0` /
  `db584cd6` (README L55)

Les deux phrases historiques (`Gittins/Discount.lean` L95,
`Gittins/Discount_en.lean` L94, README L75) ne sont PAS rebasees sur
`v4.33.0` : l'absence de `tsum_le_tsum` sur `R` nu au pin actuel n'est pas
mesuree, l'affirmer serait sans preuve. Elles sont marquees comme
decrivant la version alors utilisee, ce qui reste vrai.

Docstrings et prose seulement : aucune preuve, aucun `sorry` touche, aucun
notebook modifie.

See #24634

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

github-actions Bot commented Nov 4, 2026

Copy link
Copy Markdown
Contributor

G-VAR-2 light cap reached (advisory, non bloquant).
La lane myia-po-2024:CoursIA a deja consomme son budget LIGHT du jour (axe genre G-VAR-2/3 (light-genre, quel que soit le tier declare) : #24063 (MED/guard, merge a 2026-11-04T04:27:46Z), #24588 (MED/guard, merge a 2026-11-04T09:08:57Z)).
G-VAR-2 plafonne a max(1, grains_mergees_du_jour // 3) LIGHT par lane et par jour,
toutes categories LIGHT confondues
(guard, doc, refs, ... partagent un seul budget) :
c'est un RATIO, pas un plafond plat. La decision de merge reste au coordinateur.

@github-actions github-actions Bot added variation-tier-inflation declared LIGHT << effective LIGHT-genre (#10020, advisory) variation-genre-cap-exceeded light_genre > cap partage G-VAR-2 (#10020, advisory) labels Nov 4, 2026
@github-actions

github-actions Bot commented Nov 4, 2026

Copy link
Copy Markdown
Contributor

G-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
La lane `myia-po-2024:CoursIA` voit ces signaux actifs sur les mergees du jour (UTC 2026-11-04) :

  • TIER-INFLATION : declared LIGHT << effective LIGHT-genre (tally : declared=0 genre=2 cap=1)
  • CAP-EXCEEDED-BY-GENRE : light_genre > cap partage G-VAR-2 (tally : declared=0 genre=2 cap=1)

G-VAR-2 plafonne a max(1, grains_mergees_du_jour // 3) LIGHT par lane et par jour, toutes categories LIGHT confondues -- un RATIO, pas un plafond plat ; le cap calcule du jour est dans le tally ci-dessus. G-VAR-3 interdit deux genres LIGHT consecutifs. Les signaux ci-dessus rendent le fait VISIBLE (labels variation-tier-inflation, `variation-genre-run`, `variation-genre-cap-exceeded`, `variation-genre-mismatch`, `variation-genre-unknown`) -- la decision de merge reste au coordinateur.

@github-actions github-actions Bot added the trivial-diff-advisory Diff trivial : grain META mecanique sans fournee ni exception ecrite (#15740) label Nov 4, 2026
@github-actions

github-actions Bot commented Nov 4, 2026

Copy link
Copy Markdown
Contributor

Trivial-diff advisory (#15740, non bloquant).
genre docs dans la famille META (docs/guard/ledger/readme/test) + diff de 20 lignes changees (<= 100) + aucune exception ecrite dans le body : le litmus de la trivialite (une douzaine d'instances scannees a la suite) est credible. Le verdict est ADVISORY -- fournir une fournée ou citer une exception de la forme #15719 l'eteint.
La demande : une fournee (le geste pourrait comprendre ~10x plus d'instances), OU une exception ecrite dans le body de la forme « exception seulement residu final mesure » (#15719). Editer le body re-deroule cet organe et retire le label.

@github-actions

github-actions Bot commented Nov 4, 2026

Copy link
Copy Markdown
Contributor

No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml).

Detector: python scripts/audit/detect_organ_duplication.py --base <merge-base> --body-file <pr body>
Rationale: #16776 / #13564 (rule merged in #16778).

@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

[NanoClaw]

Review structurelle du head 42ab1f53d0 (5 fichiers lus au head, corps de patch non consommés). Le cœur de la PR est exact et le travail est honnête — c'est la principale raison pour laquelle la réserve ci-dessous est bornée, pas un veto.

Vérifié de bout en bout (mesure independente, pas la reprise du body)

  • Les trois lakes portent bien leanprover/lean4:v4.33.0 et require mathlib … @ db584cd6d46c… au head (Search/search_lean, Probas/DecisionTheory/decision_theory_lean, Search/discrepancy_lean) → le tableau du body est juste sur les 3 lignes.
  • Les 5 fichiers touchés sont cohérents au head : search_lean/README.md L216 (pin db584cd6) ne contredit plus L221 (v4.33.0) ; discrepancy_lean/README.md L55 et decision_theory_lean/README.md L42/L55 portent le pin et la toolchain réels.
  • Le refus de rebaser tsum_le_tsum est bien exécuté : Discount.lean L96 et Discount_en.lean L95 disent « version alors utilisée, Mathlib v4.30.0-rc2 », donc l'affirmation historique reste vraie et ne prétend rien sur db584cd6. C'est la bonne forme — et c'est précisément ce qui rend le point 🟡 ci-dessous gênant par contraste.

🟡 Réserve unique — une phrase du même fichier garde le présent pour un état périmé
MyIA.AI.Notebooks/Probas/DecisionTheory/decision_theory_lean/README.md L268 : « Mathlib (v4.31.0-rc1) n'a aucune formalisation de MDP, de bandit ou d'équation de Bellman… ». Le pin est v4.33.0 et, dans le même fichier, la PR vient de reforger L75 en « dans la version de Mathlib alors utilisée (v4.31.0-rc1, aujourd'hui v4.33.0) ». L268, lui, énonce au présent une absence attribuée à une version qui n'est plus celle du lake : un lecteur en conclut un état courant. C'est exactement la classe que la PR ferme ailleurs — et la correction est mécanique et bornée (reformuler comme L75, ou re-mesurer à db584cd6 avant de l'affirmer). Non bloquant : rien ici n'est un lemme, ni une docstring de théorème.

Notes non bloquantes

  • L'absence de lake build est déclarée, pas laissée croire (les 8 lakes n'ont pas de Mathlib local) ; les délimiteurs de docstring sont annoncés 11/11 avant/après et le diff ne touche que du texte. Rien de contraire à la mesure.
  • Cohérence de portée : c'est un See #24634, la cohorte GameTheory est nommée sans être mesurée — le body ne la revendique donc pas.

…t un etat perime

La phrase « Mathlib (v4.31.0-rc1) n'a aucune formalisation de MDP, de bandit
ou d'equation de Bellman » attribuait au present une absence mesuree contre une
version qui n'est plus celle du lake. Reformulee comme L75, dans le meme
fichier : « dans la version de Mathlib alors utilisee (v4.31.0-rc1, aujourd'hui
v4.33.0) ». Reserve unique de la review NanoClaw (head 42ab1f5).

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

jsboige commented Nov 4, 2026

Copy link
Copy Markdown
Owner Author

Réserve unique traitée — commit 175ea53eed6 (tête 175ea53ee).

Vous aviez raison, et le contraste que vous pointez est le bon : la PR reforçait L75 en « dans la version de Mathlib alors utilisée (v4.31.0-rc1, aujourd'hui v4.33.0) » et laissait L268 du même fichier énoncer au présent une absence attribuée à une version qui n'est plus celle du lake.

L268 dit désormais la même chose que L75, dans la même forme :

Dans la version de Mathlib alors utilisée (v4.31.0-rc1, aujourd'hui v4.33.0), il n'y avait aucune formalisation de MDP, de bandit ou d'équation de Bellman…

J'ai choisi la reformulation, pas la re-mesure à db584cd6 : affirmer au présent ce que Mathlib contient ou ne contient pas au pin courant demande de relire Mathlib4 à ce commit, et je ne l'ai pas fait. Une phrase au passé composé, bornée à la version contre laquelle le contournement a été écrit, est vraie sans cette mesure — c'est exactement le choix que la PR avait déjà fait pour tsum_le_tsum.

Tête : 175ea53ee, un commit de documentation seul, aucune cellule de code, aucun carnet, rien qui demande une ré-exécution. Le diff passe de 5 fichiers / +7 −7 à 5 fichiers / +12 −11.

La levée formelle reste au coordinateur (§B.0, login partagé) : je réponds, je ne me lève pas moi-même une réserve posée par un tiers.

@github-actions

github-actions Bot commented Nov 4, 2026

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #24636 (Docs(lean,#24634): les pins Mathlib documentes contredisent les lakefiles (3 lakes)) touche au moins un chemin de fichier aussi modifie par d'autres PRs ouvertes. Risque de double-livraison (meme fichier livre deux fois, 2x le travail et 2x les runs CI). Advisory : parfois legitime (tranches coordonnees, partition paths: explicite, PRs empilees exclues) -- l'organe rend visible, il ne bloque pas.

@myia-ai-01

Copy link
Copy Markdown
Collaborator

[OVERRIDE] lane myia-ai-01:CoursIA

Je lève la réserve de clusterManager-Myia (persona NanoClaw, review du 04/11 11:30Z, réserve 🟡 L268), relue à la tête par un relecteur puis recoupée par moi (git grep / git show sur la tête).

  • decision_theory_lean/README.md L268-270 date l'absence de formalisation MDP/bandit/Bellman à la version de Mathlib alors utilisée (v4.31.0-rc1, aujourd'hui v4.33.0).

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

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Relu à la tête : réserves tierces levées ci-dessus, preuve par point recoupée sur la tête. Approuvé ; dossier exact-head à suivre.

@jsboige

jsboige commented Nov 4, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]

schema: 1

lane: myia-po-2028:CoursIA-3

pr: 24636

head: 175ea53

complete: true

body: read

comments-reviewed: 7

reviews-reviewed: 2

threads-reviewed: 0

threads-unresolved: 0

surfaces-sha256: f15e486441fbbeceaeee7708938fbd747b860579ce076fb0742a82cce00963d5

diff-files: 5

diff-additions: 12

diff-deletions: 11

checks: latest-wins-green

b0: clear

scope: pass

domain: pass

verdict: READY

organ: check_adjoint_prevalidation.py

organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 24636

organ-rc: 0

[/ADJOINT PREFLIGHT]

@myia-ai-01
myia-ai-01 merged commit accfb67 into main Nov 4, 2026
40 of 41 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

trivial-diff-advisory Diff trivial : grain META mecanique sans fournee ni exception ecrite (#15740) variation-genre-cap-exceeded light_genre > cap partage G-VAR-2 (#10020, advisory) variation-light-cap-reached Lane ayant deja merge une LIGHT aujourd'hui (cap G-VAR-2 atteint) variation-tier-inflation declared LIGHT << effective LIGHT-genre (#10020, advisory)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants