You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
fix(guard): le perimeter organ lit toute prose descriptive « N fichiers » comme une assertion de perimetre #20086
Sans parent : l'organe perimeter est ne de #11268 (CLOSED) et vit dans .github/workflows/always-on-guards.yml (step perimeter) ; aucun tracker ouvert ne le porte aujourd'hui.
Constat mesure
scripts/check_pr_perimeter.py selectionne \b(\d+)\s*(?:fichiers?|files?)\b (COUNT_CLAIM, l.107) dans le body et confronte le nombre a la liste effective des fichiers de la PR.
Toute phrase descriptive qui compte des fichiers lus ou attestes -- forme frequente dans les PR de carnets -- est donc lue comme une revendication de perimetre.
Reproducteur (mesure, 2026-10-09)
PR #20076, body avant correction, python scripts/check_pr_perimeter.py 20076 --scan-thread :
VERDICT: FAIL
!! [PR body / jsboige] l'assertion pretend 4 fichier(s), la liste effective en compte 7 : ...
!! [PR body / jsboige] l'assertion pretend 80 fichier(s), la liste effective en compte 7 : ...
Les deux phrases en cause ne revendiquent rien sur le perimetre de la PR (7 fichiers) :
« life-lean-stats (exec 12) atteste 4 fichiers (Life.lean 253, …) » -- les sources que la cellule lit ;
Manque la prose descriptive chiffree : un compte precede d'un verbe de constat.
Pistes
Exemption de forme -- le compte dont le verbe de la meme ligne est descriptif (atteste, lit, compte, enumere, recense) n'est pas une revendication de perimetre.
Les deux demandent un test : le controle positif (une vraie assertion N fichiers : a, b, c) doit continuer de rougir -- c'est ce qui separe l'exemption du blanc-seing.
Contournement applique en attendant
Sur #20076, les deux phrases ont ete reformulees (« sources » / « modules »), l'organe rend rc=0. C'est un contournement par le vocabulaire, pas un correctif de l'organe : la classe reste ouverte pour les PRs suivantes.
[DELIVERED] lane myia-po-2024:CoursIA-2 -- paths: scripts/check_pr_perimeter.py, scripts/tests/test_check_pr_perimeter.py -- PR #20125.
Forme 7 des exemptions par-compte : un compte ouvert, sur la meme ligne et dans les 80 caracteres qui precedent, par un verbe de constatation (liste fermee : atteste, constate, lit, enumere, recense, denombre, couvre + equivalents EN) n'est pas une revendication de perimetre.
L'exemption est au niveau du COMPTE, pas de la selection -- conformement a #12201 : la ligne reste extraite, confrontee et imprimee en SIGNAL ; seul le blocage tombe (propriete Candidate.blocking). C'est la ou #20076 rougissait, et c'est la que les tests le mesurent.
Garde anti-blanc-seing : le deux-points immediat apres le compte est la forme canonique de declaration (N fichiers : a, b, c) et l'emporte sur le verbe -- « j'atteste 7 fichiers : a.py, b.py » reste bloquant. C'est le controle positif que le cadrage de l'issue demandait.
Tests : six ajoutes, dont le controle positif bout en bout. Suite du fichier : 238 passed, 1 skipped.
Perimetre : deux fichiers, +111 lignes, 0 suppression.
Sans parent : l'organe
perimeterest ne de #11268 (CLOSED) et vit dans.github/workflows/always-on-guards.yml(stepperimeter) ; aucun tracker ouvert ne le porte aujourd'hui.Constat mesure
scripts/check_pr_perimeter.pyselectionne\b(\d+)\s*(?:fichiers?|files?)\b(COUNT_CLAIM, l.107) dans le body et confronte le nombre a la liste effective des fichiers de la PR.Toute phrase descriptive qui compte des fichiers lus ou attestes -- forme frequente dans les PR de carnets -- est donc lue comme une revendication de perimetre.
Reproducteur (mesure, 2026-10-09)
PR #20076, body avant correction,
python scripts/check_pr_perimeter.py 20076 --scan-thread:Les deux phrases en cause ne revendiquent rien sur le perimetre de la PR (7 fichiers) :
life-lean-stats(exec 12) atteste 4 fichiers (Life.lean253, …) » -- les sources que la cellule lit ;phase1-files-list(exec 18) atteste ~80 fichiers.lean» -- idem.Ce que l'organe exempte deja, et ce qui manque
…inline)a.png-b.png)(hors scope PR),previsionnels,tranche ulterieure)Manque la prose descriptive chiffree : un compte precede d'un verbe de constat.
Pistes
atteste,lit,compte,enumere,recense) n'est pas une revendication de perimetre.Les deux demandent un test : le controle positif (une vraie assertion
N fichiers : a, b, c) doit continuer de rougir -- c'est ce qui separe l'exemption du blanc-seing.Contournement applique en attendant
Sur #20076, les deux phrases ont ete reformulees (« sources » / « modules »), l'organe rend
rc=0. C'est un contournement par le vocabulaire, pas un correctif de l'organe : la classe reste ouverte pour les PRs suivantes.