Repository navigation
fix(lean,#16642): remove derived quantitative counts from Lean companion notebook prose - #16656
Conversation
…rose Strip repo-derived quantitative figures (module/declaration/sorry/jobs/ #check/#print/LOC counts, i18n pair counts, verified X/Y) from the prose of 11 Lean companion notebooks so prose stops duplicating checker output. Markdown cells only (C.2 exception): no code-cell source or output touched, no checker modified. Kept: math facts (periods, C(23,4), 2^18, Lean standard axioms), narrative/exposition structure counts, section/ phase numbers, exercise instructions, historic incident stats. Validated: check_grothendieck_readme.py (no drift), validate_pr_notebooks (11/11 PASS), pytest baseline 5 failures pre-existing (byte-identical inputs; no checker/lake README touched). ~190 single-point markdown replacements. Pre-commit hook fix-hr-separator additionally converted 5 decorative '---' openers to '***' in Lean-16b/Lean-15-Tribute (re-added). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit |
Notebook PR Validation: PASS
Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns) |
Notebook outputs-required (H.4 schema): PASS (every code cell carries an
|
Golden-Set Execution (H.7 P3)✅ 8/8 notebooks passed (certified reproducible)
Pinned lockfile: |
clusterManager-Myia
left a comment
There was a problem hiding this comment.
VERDICT: LGTM — retrait systématique des comptes dérivés, méthode conforme à l'issue #16642, zéro contenu factuel perdu
[Hermes] Review du head 0930750a07 (MED, 11 notebooks Lean, +177/−177 symétrique). Dédup : zéro review préexistante sur ce SHA.
Vérifié firsthand :
- Diff = la méthode documentée, exactement : chaque −/+ retire les nombres dérivés et garde le narratif — « les 5 noix » → « les noix », « 0 sorry » → « sans sorry », « 17 théorèmes » → « tous les théorèmes prouves », « 3331 jobs » supprimé, etc. Spot-check complet du plus gros fichier (16b Conway, 54/54) : aucune affirmation qualitative retirée, seules les valeurs que les checkers mesurent déjà disparaissent de la prose. C'est le critère de sortie de #16642 (« aucun chiffre dérivé dans la prose, les checkers gardent la vérité ») — pas la variante « shortcode dynamique », l'alternative bas coût était explicitement acceptable.
- Aucun code cell touché (exception C.2 respectée : markdown uniquement) ; Notebook PR Validation 145 cellules PASS, H.4 PASS, Golden-Set 8/8, 30/30 checks verts.
- Champ
prev:correct (#16599, PR mergée de la lane) — pas le défaut vtr qui bloque les jumelles probas #16639/#16640.
Un point de vigilance (informatif, pas bloquant) : les cellules markdown réécrites gardent des références aux PRs et phases (« PR #1975 », « Phases 6-8 ») qui restent stables — rien à faire.
Relais merge : myia-ai-01.
[Hermes hermes-pr-review, cycle :05 18/09, host c92df397a786]
|
OK pour moi, et je ne vais pas mettre un concern, plutôt une remarque amusante sur un excès de zèle qui n'a pas besoin d'être corrigé, mais s'il y avait un chiffre qu'on aurait pu laisser car c'est celui, canonique, qui normalement ne devrait jamais avoir besoin d'une MAJ, c'est bien "0 sorry" |
Path-collision (organ #13359/#13615)Cette PR #16656 (
|
Levee — la remarque de 09:17:50Z se disclaime elle-meme, et elle a raison sur le fondL'organe B.0 rend Sur le fond de la remarque, elle est juste et je l'inscris. « 0 sorry » n'est pas un compte du La remarque dit explicitement « n'a pas besoin d'etre corrige » et je ne corrige pas cette PR : elle Levee posee par moi, tiers a cette PR, avant merge. |
classify() returns None for a body whose OPENING is a lift announcement (heading/bold tolerated), any author. Founding case #16381 c.5730922323 (jsboige, 2026-09-18T13:47:46Z): the lift opened on a heading but carried a cited glyphe and a minor residual, the full-body lift stage skipped it, and the CRLF-less prose fell to BOT-CONCERN - the unblocking gesture created a nit of its own (absorbing regime, LIFT_OVERRIDE_LOGINS could not catch it). Double healing: explicit_lifts requires classify() is None, so the comment also becomes eligible to lift the reserve it announces. Discriminant is POSITION, vocabulary deliberately narrow (the word RESERVE is part of it). Placed after _block_emitted (fail-closed on coordinator blocks). Measurement, audit 25 merged PRs (2026-09-18 window) before/after with shipped code: 4 flagged before, same 4 after, nits identical - 0 VP / 0 FP; #16619 "Je leve ma propre reserve ... et je retiens celle d'Hermes" correctly stays a nit (self-declared retained hold). Positive controls: real user nit CRLF stays HUMAN (gate #16656 rc=1), VERDICT: CONCERNS stays BOT-CONCERN. 9 new tests pin the verbatim founding body, variants, negatives, mixed case, and BLOCK precedence. Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
…16704) Cellule markdown de LECTURE ajoutee par une PR, ancoree sur du code sans sortie reelle : ANCRE_SANS_OUTPUT et ANCRE_STUB (spoiler d'exercice). Exemptions mesurees : clotures/transitions (#16619 c32, le FP fondateur du prototype) et zone d'ouverture avant tout code (#16656, 4 ouvertures Lean companion -- la classe LECTURE_SANS_ANCRE est retiree, 0 vrai positif). Mesure 18 PRs reelles : 0 finding, 0 FP. Advisory non bloquant (precedent #15327) ; promotion seulement si le FP reste nul en vol. Self-test 6/6 (controles positifs + contre-exemple fondateur), pytest 10/10 detector + 73/73 fast_lane. Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Grain: MED/notebook-lean -- lane myia-po-2026:CoursIA -- prev: DEEP/notebook-python #16599
Summary
Suite au commentaire de jsboige sur #16588 : les comptes quantitatifs dérivés (modules, déclarations, théorèmes, lemmas, sorries, témoins, paires i18n, LOC/jobs,
#check/#print axioms, « X/Y vérifiés ») qui doublaient la sortie des instruments de mesure ne doivent plus vivre dans la prose des notebooks compagnons Lean — la prose n'est pas la source de vérité, le checker l'est.Cette PR retire ces figures dérivées de la prose (cellules markdown uniquement, exception C.2) de 11 notebooks compagnons/natifs/tribute de la famille Lean :
Classification appliquée (removals)
RETIRE = toute figure mesurée sur l'état du repo/lake :
N modules,N sous-modules,N déclarations,N théorèmes/lemmasdu lake,N sorries/0 sorry/sorry = 0,N témoins, paires i18n7/7, LOC (Lignes106/79/84/90/80/88,~8 100 lignes),3331 jobs, comptes#check/#print axioms(48 #check + 6 #print,#check × 6,17 sur 74,62 de ces modules,71 modules,en compte 15 sur 17,1/8,6/6...).GARDE = faits mathématiques non-dérivés (périodes,
C(23,4) = 8855/35 = 253,2^18, degré 23, cellules/gens), les 3 axiomes standards de Lean (propext,Classical.choice,Quot.sound), comptes de structure d'exposition (« en trois actes », « en quatre briques », « les trois piliers », « 4 sous-sections »), numéros de section/phase/partie/P, consignes d'exercice (« Combien de lignes ? », « les 2 premières lignes »), estimations de temps d'exécution, stats d'incidents historiques (484 naïfs pour 21 réels, corridor5 PRs), faits externes (dates EGA/SGA, scores IMO, #PR, #issue).Quand le nombre partait, la phrase a été conservée ou reformulée vers « voir le checker / l'instrument » sans la figure.
Proofs
git diff --name-only HEAD= 11 notebooks, exactement. Diffs = 177 insertions/177 deletions, lignes uniques, uniquement des cellules markdown (aucunexecution_count/outputs/code cell touché).occurrences == 1au niveau élément ET au niveau texte brut (encodagejson.dumps), re-parsing JSON après chaque fichier, re-scan « aucun old_sub restant » + double scanner résiduel (chiffres, nombres épelés français,× N,X/Y,N sur M, jobs/lignes/prérequis) sur les 11 notebooks.python scripts/lean/check_grothendieck_readme.py→OK — no drift detected(exit 0). Le checker valide les README du lake (inchangés), pas la prose des notebooks — aucune interaction.python scripts/notebook_tools/validate_pr_notebooks.py --json origin/main <11 fichiers>→ 11/11passed=true(6EXEC_PROVED+ 5ADVISORY_NON_EXEC= advisory Lean-kernel inhérente, inchangée).test_check_grothendieck_readme.py→ 5 échecs pré-existants (baseline) : seul 11 fichiers notebooks diffèrent de HEAD ; checker, fixtures et README de lakes byte-identiques au commit de base → les tests tournent sur des entrées identiques et échoueraient à l'identique avant cette PR.twin_pairs.d/) : 0 entrée.fix-hr-separator(repo-owned) a converti 5 séparateurs décoratifs---→***dans Lean-16b (2) et Lean-15-Tribute (3) — fichiers re-stagés et disclosed.Test plan
python scripts/lean/check_grothendieck_readme.py→ no drift (exécuté, OK)python scripts/notebook_tools/validate_pr_notebooks.py --json origin/main <11 fichiers>→ 11/11 passed (exécuté)Closes #16642
Résiduels assumés (hors scope « compagnons ») : Lean-20-PFR (« 72 fichiers / ~20 modules » du lake externe
teorth/pfr, notebook visiteur) ; mentions « 0 sorry » stables post-preuve dans les notebooks visiteurs Lean-13/16a/16e/16f (assertions d'état, non des comptes entretenus) ; README des lakes intouchés par design (leur vérité = le checker).