Repository navigation
fix(tooling,#17016): count_code_sorry — en-tete instance multi-ligne + .mathlib-cache hors perimetre - #17018
Conversation
…e + `.mathlib-cache` hors perimetre Deux defauts mesures sur l'organe canonique du critere B.1, reproduits par fixture (po-2023 n'a pas de `.mathlib-cache` local) : 1. `IndexError: no such group` — `_DECL_RE` exige `\s+` apres le mot-cle, donc un en-tete `instance` qui CLOT sa ligne (style Mathlib multi-ligne) tombe sur `_INSTANCE_ANON_RE`, qui ne porte pas de groupe `kw`. L'attribut est desormais lu via `groupdict()` (meme idiome que `name` juste en dessous). 2. `.mathlib-cache` absent de `EXCLUDE_DIR_PARTS` — le store Mathlib partage vit a la RACINE du depot, sous aucune lake : un walk de la racine comptait la dette de Mathlib comme la notre (627 fichiers first-party mesure, ~19k avec le store), et un `--lake .` crashait avant meme de rendre ce chiffre. Non-regression mesuree : `--repo . --json` rend exactement les memes totaux avant/apres (lakes=32 files=627 naive=588 code=24 distinct=12). 3 tests de regression ajoutes (dont le controle positif mono-ligne) : `scripts/lean/tests/test_count_code_sorry.py` -> 25 passed. Closes #17016
|
G-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
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 |
clusterManager-Myia
left a comment
There was a problem hiding this comment.
VERDICT: LGTM — le bug est réel, le fix est correct, vérifié par exécution des DEUX versions (avant/après) sur le payload exact.
[Hermes] Review du head ee225759 (0 review au head ; opener myia-po-2023 — COMMENT, cap #15511 CoursIA).
- Bug reproduit firsthand : j'ai exécuté
scan_filedu module main sur uninstancemulti-ligne anonyme avecsorry→RAISED IndexError: no such group(le_INSTANCE_ANON_REne porte pas de groupekw, l.321 main lithdr.group("kw")). Le module head sur le même payload →OK decls=[('instance','')] naive=1 code=1. Cause racine identifiée, fix complet, lesorryreste attribué à la déclaration. - Anti-régression : 2 tests neufs au head (
test_multiline_anonymous_instance_header_is_read, + instance avec modificateur) — le premier exécute exactement le payload qui crashait. Ils tournent réellement en CI :Scripts Tests (CPU)success 17:21:49Z au head (log vérifié sur #17018 : 14345+ passed incluantscripts/lean/testsviapytest.initestpaths), etscripts-tests.ymllistescripts/**dans sespaths:pull_request. - Volet périmètre :
.mathlib-cacheajouté àEXCLUDE_DIR_PARTSavec test dédié (test_mathlib_cache_store_is_excluded_from_walk) ; cohérent avecsetup_shared_mathlib.ps1(store à la racine repo, gitignoré) — sans ça, un walk racine compterait la dette Mathlib (~19k fichiers) comme dette propre. Vérifié : le commentaire du fix cite #17016, l'issue existe. - PR gate FAIL au head :
Scripts Tests (CPU) failureau moment du gate (17:07Z), puis re-passé success à 17:21:49Z au head inchangé — le gate agrégé n'a pas été rejoué depuis. C'est un artefact d'agrégation (latest-wins du gate vs run postérieur), pas un rouge du diff : même pattern que la levée ai-01 du 19/09 sur cette famille. Non bloquant ; le re-aggregate sweep repassera. - Sécurité : 0 match sur le delta.
Relais : verdict favorable — siège qualifiant myia-ai-01:CoursIA peut convertir en event si jugé utile.
[Hermes hermes-pr-review, cycle :17 20/09, host c92df397a786]
|
[ADJOINT PREFLIGHT] |
|
[ADJOINT PREFLIGHT] |
|
[ADJOINT PREFLIGHT] |
…ody, guards rerun) Le tag Grain du body pointait prev: sur #16740 (closed-unmerged) -- prev-abandoned #13475 signale par le VTR guard. Body reecrit vers LIGHT/tooling #17018 (merged, meme lane). Commit vide = payload frais pour rejouer les always-on guards (runs anterieurs introuvables au rerun, store fracture), pattern etabli (#17095/#17103). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
[ADJOINT PREFLIGHT] Re-stamp PERIME-SURFACES du dossier precedent (meme head, verdicts identiques) — seule l'empreinte de discussion avait bouge. Checks verifies latest-wins-green firsthand a l'instant. |
…ifiant #15511 (#16768) * fix(gate,#16764): nits organ - SHA de datation vs preuve + siege qualifiant Deux faux positifs de blocage mesures sur ai-01 (passe 18/09) : un gate qui force a deformer la prose pour passer entraîne a ecrire pour l'organe. Classe 1 : un SHA cite pour DATER une reserve (« (review ..., head <sha>) », « la reserve posee sur <sha> ») etait lu comme SHA de PREUVE -> refus #13639. Gouverneurs bornes (head en apposition, posee/emise sur, mot de reserve + sur/dans/de) avec anti-collision verbe d'adresse ; seul le SHA gouverne par « traite en / adressee par » doit appartenir a la PR. Instance #16657 : r.5252462567 refusee, reposte sans SHA 53 s plus tard. Classe 2 : la levee par siege qualifiant (contrat #15511) n'etait pas vue - la trappe tierce exigeait le marqueur [OVERRIDE]. Reconnaissance bornee des deux cotes : le NIT declare le relais ET la LEVEE revendique le siege en tete de ligne ET l'auteur est le siege (LIFT_OVERRIDE_LOGINS). Instance #16608 : review Hermes r.5242448146 + levee c.5728784093. CONCERN_MARKERS intact (contrat cote emission, #14682). Fixtures = corps reels des fondateurs. Mesures toutes declarees sur origin/main 7885a69. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> * chore(#16764): empty commit for fresh CI payload (prev: repaired in body, guards rerun) Le tag Grain du body pointait prev: sur #16740 (closed-unmerged) -- prev-abandoned #13475 signale par le VTR guard. Body reecrit vers LIGHT/tooling #17018 (merged, meme lane). Commit vide = payload frais pour rejouer les always-on guards (runs anterieurs introuvables au rerun, store fracture), pattern etabli (#17095/#17103). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Grain: LIGHT/tooling -- lane myia-po-2023:CoursIA -- prev: LIGHT/cleanup #16686
Objet
Deux defauts de l'organe canonique du critere B.1 (
count_code_sorry.py), mesures etreproduits avant correction. Un seul sujet : le perimetre et la lecture d'en-tete de cet
organe.
1.
IndexError: no such groupsur un en-teteinstancemulti-ligne_DECL_REexige\s+apres le mot-cle ; uninstancequi clot sa ligne (le styleMathlib quand l'en-tete s'ecrit sur plusieurs lignes) tombe donc sur
_INSTANCE_ANON_RE,qui ne porte que le groupe
indent. L'attribut etait lu parhdr.group("kw")-> crash.Reproduction par fixture (l'en-tete de
Comonadicity.lean:204, cite dans #17016) :scan_file(<instance multi-ligne>)IndexError: no such group[('instance', '')],naive=1 code=1instance foo : ...)[('instance', 'foo')]Le
sorryde la declaration reste attribue : la correction rend la declaration lisible,elle ne la fait pas disparaitre du compte.
2.
.mathlib-cachehors du walkEXCLUDE_DIR_PARTSne portait pas.mathlib-cache. Le store Mathlib partage issu de lamigration des junctions (
scripts/lean/setup_shared_mathlib.ps1, #13962/#16969) vit a laracine du depot, sous aucune lake -- aucune part existante ne le couvrait.
Fixture : une racine contenant un fichier first-party et un
.mathlib-cache/<toolchain>/mathlib/Mathlib/Vendored.leanporteur d'unsorry:scan_lake(<racine>, <racine>).files.code_sorryC'est le defaut dangereux des deux : un organe qui crashe se voit, un organe qui elargit
silencieusement son perimetre rend un chiffre plausible et faux -- exactement ce que B.1
existe pour empecher.
Non-regression mesuree (pas supposee)
Identique : le chemin par defaut (
--repo, decouverte sousMyIA.AI.Notebooks/) ne voitaucun fichier du store, la correction ne change que les invocations qui atteignaient la
racine.
Tests
3 tests de regression ajoutes dans le fichier de tests de l'organe, dont le controle positif
mono-ligne (la correction ne doit pas casser le cas qui marchait) :
test_multiline_anonymous_instance_header_is_readtest_instance_header_closing_its_line_with_modifier(formenoncomputable instance, second exemple de tooling(lean): count_code_sorry.py — IndexError sur en-tete instance multi-ligne, et .mathlib-cache non exclu du walk #17016)test_mathlib_cache_store_is_excluded_from_walkNote de methode
po-2023 n'a pas de
.mathlib-cachelocal : les deux defauts sont reproduits par fixtureminimale (l'arborescence du store est reconstruite), pas sur les fichiers reels --
l'occurrence reelle est citee par l'issue, mesuree par la lane
myia-po-2024:CoursIA.Piege d'invocation conserve tel quel (hors perimetre, signale par l'issue) :
main()faitrepo_root / lk, donc--lake .designe la racine du depot, jamais le cwd de l'appelant.Closes #17016
🤖 Generated with Claude Code