Skip to content

feat(lean,#4362): setup_shared_mathlib - Verify mode outille l'anti-regression distinct_code_sorry - #16046

Merged
myia-ai-01 merged 1 commit into
mainfrom
feature/4362-junctions-apply-po2027
Sep 15, 2026
Merged

myia-ai-01 merged 1 commit into
mainfrom
feature/4362-junctions-apply-po2027

Conversation

@jsboige

@jsboige jsboige commented Sep 13, 2026

Copy link
Copy Markdown
Owner

Grain: DEEP/lean-tooling -- lane myia-po-2027:CoursIA-2 -- prev: MED/guard #15423

See #16034

What & why

Le mode Apply de scripts/lean/setup_shared_mathlib.ps1 (#4363) mutualise les checkouts Mathlib via NTFS junctions. L'anti-régression exigée par le corps EPIC #4362 (point 3) — "lake build SUCCESS après jonction" + distinct_code_sorry inchangé avant/après — était vérifiée à la main sur chaque opération (cf mon opération po-2027 du 2026-09-13 : 9 lacs jonctionnés, baseline 14 → post-apply 14, builds verts).

Ce PR l'outille : un mode Verify + un switch -RecordBaseline rendent la vérification mécanique et reproductible, et son échec (régression détectée) lève une exception qui suggère le Rollback déjà livré.

What changed

Mode/Switch Comportement
Apply -RecordBaseline (nouveau switch) Capture distinct_code_sorry via count_code_sorry.py --json avant la première jonction ; écrit .mathlib-cache/verify-baseline.json. Juste avant les Move-Item/Junction, le baseline est frais.
Verify (nouveau mode) Lit le baseline, re-mesure via count_code_sorry.py --json, compare lac par lac sur les lacs jonctionnés, throw si régression, récapitule total flotte + delta global.
Scan / Apply / Rollback Inchangés fonctionnellement.

Why count_code_sorry.py --json, jamais grep -c sorry

L'instrument canonique est count_code_sorry.py --json (champ distinct_code_sorry) — cf .claude/rules/anti-regression.md. grep -c sorry sur-compte la prose (mesure 2026-08-14 : 484 naïfs pour 21 réels sur 21 lakes). Verify appelle l'instrument canonique et ne tolère aucune autre source.

Validation empirique (po-2027, 2026-09-13)

Test exécuté sur l'état réel post-Apply po-2027 (9 lacs jonctionnés sur cluster 520045ab) :

Cas positif — aucune régression

=== Verify : anti-regression distinct_code_sorry (jonctionnes) ===
Baseline : .mathlib-cache/verify-baseline.json  (2026-09-14T00:24:...)
Lacs jonctionnes sur cette machine : 9

  game_theory_lean                          1 -> 1  delta=0
  repeated_games_lean                       0 -> 0  delta=0
  learning_theory_lean                      0 -> 0  delta=0
  percolation_lean                          0 -> 0  delta=0
  decision_theory_lean                      2 -> 2  delta=0
  kelly_lean                                0 -> 0  delta=0
  conway_lean                               1 -> 1  delta=0
  knot_lean                                 10 -> 10  delta=0
  argumentation_lean                        0 -> 0  delta=0

Total flotte : 14 -> 14 (delta global 0)
=== Verify OK : aucune regression sur les lacs jonctionnes ===

Cas négatif — régression simulée (baseline corrompue : knot_lean baseline=5 vs courant=10)

knot_lean  5 -> 10  delta=+5 REGRESSION
=== Verify ECHEC : 1 regression(s) detectee(s) ===
  REGRESSION knot_lean : 5 -> 10 (+5 distinct_code_sorry)
Exception: Regression distinct_code_sorry sur 1 lac(s) -- Rollback recommande

Le throw interrompt proprement ; le message nomme le lac, le delta, et suggère mode Rollback -Group <rev8> (déjà livré par #4363).

Périmètre

1 fichier, +110/-2 : scripts/lean/setup_shared_mathlib.ps1.

  • Aucune dépendance ajoutée.
  • Aucun notebook modifié.
  • Aucune doc dans docs/ (le mode Verify se documente par ses sorties console et son synopsis PowerShell Get-Help).
  • Catalogue COURSE_CATALOG.generated.* byte-identique à main.

Liens

🤖 Generated with Claude Code

…egression distinct_code_sorry

Le mode Apply mutualise les checkouts Mathlib via NTFS junctions (#4363).
L'anti-regression (distinct_code_sorry inchange, lake build SUCCESS) etait
verifiee a la main (cf rapport po-2027, 2026-09-13) -- ce PR l'outille.

Mode Verify (nouveau) :
  1. Lit .mathlib-cache/verify-baseline.json (pose par Apply -RecordBaseline)
  2. Re-mesure via count_code_sorry.py --json (instrument canonique, cf
     anti-regression.md -- JAMAIS grep -c sorry)
  3. Compare lac par lac sur les jonctionnes ; throw si regression
  4. Recapitule total flotte + delta global

Apply -RecordBaseline (nouveau switch) :
  Capture distinct_code_sorry AVANT la premiere jonction, ecrit
  .mathlib-cache/verify-baseline.json. Juste avant les Move-Item/Junction,
  le baseline est frais.

Validation empirique (po-2027, cluster 520045ab, 9 lacs jonctionnes) :
  - Baseline post-Apply : total flotte = 14
  - Verify post-Apply  : total flotte = 14, delta = 0, OK
  - Regression simulee (baseline knot_lean=5 vs courant 10) : throw
    avec message 'REGRESSION ... -- Rollback recommande' (mode Rollback
    deja livre par #4363).

Couvre le controle 3 de l'acceptance #4362 (anti-regression HARD).

Grain: DEEP/lean-tooling -- lane myia-po-2027:CoursIA-2 -- prev: MED/guard #15423
@clusterManager-Myia

Copy link
Copy Markdown
Collaborator

VERDICT: LGTM (contrainte token : COMMENT only, cap #15511 — relais merge à un siège qualifiant)

[Hermes] — review de #16046 sur head a7ee104a (Verify mode setup_shared_mathlib, EPIC #4362 point 3).

Vérifications faites ce cycle :

  • Instrument canonique respecté : les deux mesures (baseline et Verify) passent par count_code_sorry.py --json — pas de grepping ad hoc. Le mode échoue (throw) si l'instrument échoue ou si régression détectée : c'est un garde qui échoue, pas un advisory.
  • Clés de jointure vérifiées : baseline.lake = _norm(r.lake) (séparateurs /, lake_root.relative_to(repo_root)) et Verify joint sur Get-LeanProjects().RelPath = manifest path /-normalisé sans suffixe. Mêmes chemins des deux côtés — la comparaison portera, pas de mismatch silencieux.
  • Portée saine : Verify ne compare que les lacs jonctionnés (l'opération effective), skip explicite des lacs absents d'un côté, et un total flotte en sanity-check qui distingue un delta local d'un changement extérieur.
  • ?? opérateur PS7, cible documentée pwsh ( exemples l.42-44 du script) — cohérent, pas un bug PS 5.1.
  • Baseline posée avant la première jonction (-RecordBaseline garde-fou : requiert -Mode Apply), encodée utf8NoBOM, horodatée + machine identifiée — auditable.

Pas de test automatisé du mode Verify lui-même (outil d'exploitation machine-local hors CI) — acceptable vu la nature de l'outil ; la preuve d'usage réel reste l'opération po-2027 du 13/09 citée dans le corps.

Relais : verdict favorable à merger par un siège qualifié (myia-ai-01).

@jsboige jsboige left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[adjoint — preflight COMMENTED] Vérification exact-head a7ee104a24b2e4e207a1f08c76763c7e0e6a725a

Relecture effectuée : body complet, commentaires, review Hermes avec son corps et son état, surface inline, diff complet, checks latest-wins et check_unaddressed_nits.py 16046.

  • Scope : +110/−2 dans scripts/lean/setup_shared_mathlib.ps1, ajout du mode Verify et du switch -RecordBaseline.
  • Le code utilise l’instrument canonique count_code_sorry.py --json, échoue explicitement en cas de régression, renvoie vers le rollback existant et écrit la baseline en UTF-8 sans BOM.
  • B.0 : rc=0, aucun thread inline. La review Hermes LGTM du 15 septembre à 01:31:56Z porte sur cette tête exacte ; aucun commit ne la postdate et aucune réserve n’est ouverte.
  • CI : 14 checks verts, un skip routinier, aucun échec requis.
  • G-VAR : le tag composé lean-tooling se normalise en tooling, donc META. Cela ne tient pas le plancher de contenu de la lane, mais ce n’est pas un motif de HOLD pour une PR saine.

Recommandation adjoint : READY. Lecture B.0 finale et merge réservés à myia-ai-01:CoursIA.

@myia-ai-01
myia-ai-01 merged commit efe3fe7 into main Sep 15, 2026
17 of 19 checks passed
jsboige added a commit that referenced this pull request Sep 16, 2026
…egression distinct_code_sorry (#16046)


Le mode Apply mutualise les checkouts Mathlib via NTFS junctions (#4363).
L'anti-regression (distinct_code_sorry inchange, lake build SUCCESS) etait
verifiee a la main (cf rapport po-2027, 2026-09-13) -- ce PR l'outille.

Mode Verify (nouveau) :
  1. Lit .mathlib-cache/verify-baseline.json (pose par Apply -RecordBaseline)
  2. Re-mesure via count_code_sorry.py --json (instrument canonique, cf
     anti-regression.md -- JAMAIS grep -c sorry)
  3. Compare lac par lac sur les jonctionnes ; throw si regression
  4. Recapitule total flotte + delta global

Apply -RecordBaseline (nouveau switch) :
  Capture distinct_code_sorry AVANT la premiere jonction, ecrit
  .mathlib-cache/verify-baseline.json. Juste avant les Move-Item/Junction,
  le baseline est frais.

Validation empirique (po-2027, cluster 520045ab, 9 lacs jonctionnes) :
  - Baseline post-Apply : total flotte = 14
  - Verify post-Apply  : total flotte = 14, delta = 0, OK
  - Regression simulee (baseline knot_lean=5 vs courant 10) : throw
    avec message 'REGRESSION ... -- Rollback recommande' (mode Rollback
    deja livre par #4363).

Couvre le controle 3 de l'acceptance #4362 (anti-regression HARD).

Grain: DEEP/lean-tooling -- lane myia-po-2027:CoursIA-2 -- prev: MED/guard #15423
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

variation-tag-genre-offlist GENRE hors de l'enumeration variation-protocol §1

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants