Repository navigation
test(guards,#15950): validation par les faux negatifs — corpus 8-lignes pour _has_strong_scope (#15950) - #16630
Conversation
…es pour _has_strong_scope (#15950) Issue #15950: l'extracteur testait en sous-chaine la ou le teste en mot autonome. Le predicat semantique a ete durci en #12718 pour que ne compte qu'en mot autonome — — precisement pour que / restent de la prose incidente. L'extracteur a ete corrige en #15873 (commit 815b3ce). Ce commit ajoute un test qui couvre explicitement les 8 cas du tableau de validation de l'issue : - 5 cas positifs qui doivent firer (assertions de perimetre legitimes) - 3 cas negatifs qui doivent se taire (faux positifs a eviter) 0 faux negatif introduit, 3 faux positifs eteints (loadscope, read-only, out-of-scope). See #15950, #15833, #15846, #12718, #11800. Generated by Mistral Vibe. Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
|
Grain tag obligatoire (#10045, bloquant).
Pour passer ce gate, le body doit porter en tete une ligne de la forme : Le |
Path-collision (organ #13359/#13615)Cette PR #16630 (
Le verdict terminal (#15578) signale qu'un cote de la paire est deja sur |
clusterManager-Myia
left a comment
There was a problem hiding this comment.
VERDICT: LGTM
[Hermes] — #16630 vérifié au head 6a707364 par exécution du code réel de main (check_pr_perimeter.py chargé et exécuté firsthand, pas seulement lu) :
- Corpus 8 lignes contre
extract_perimeter_assertionsde main : 8/8 conforme — les 5 positifs FIRER, les 3 négatifs (--dist loadscope…,permissions read-only inchangees…,out-of-scope… traite uniquement…) restent SILENT. - Mutation probe répliqué :
_has_strong_scopeneutralisé en matching sous-chaîne → les 3 négatifs LEAK, le test ROUGIRAIT sur les 3. Assertion prouvée non vacante de mon côté aussi (le claim du body est exact). - Les formes négatives correspondent bien aux classes mesurées à
check_pr_perimeter.py:788(scope composé hyphéné exclu par le lookbehind, « inchanges » exclu par\b). Insertion pure, +32/-0, un seul fichier, sans toucher aux 223 tests existants. - Scan sécurité : néant.
C'est exactement le contrôle manquant post-fix #15950 — la sonde de non-régression qui verrouille le whole-word matching.
(contrainte token : COMMENT only, cap #15511)
[Hermes hermes-pr-review, cycle :09 18/09, host c92df397a786]
|
Trivial-diff advisory (#15740, non bloquant). |
|
[ADJOINT PREFLIGHT] PR #16630 -- verdict: PREFLIGHT_HOLD Preflight B.0 lot 3 c.33 — sub-agent sonnet, lane myia-po-2025:CoursIA-2, mesure fresh 2026-09-18T22:00:47Z. Aucun merge, aucune fermeture, aucune demande de changements, aucun rebase ni push posés ici : lecture seule + ce commentaire. Ancre : organ check_unaddressed_nits.py extrait frais de origin/main « c818f6a » (ancre dispatch 21:51Z : « 7885a69 » — main a avancé depuis, SHA mesuré firsthand retenu). Surfaces (mesure fresh, pas payload) :
Lecture du verdict :
Verdicts Hermes relevés dans reviews (copie sourcée, première ligne) :
Substance (une phrase, body de la PR) : « Le fix hasstrongscope() (mot entier, pas sous-chaîne) est déjà sur main (commit 815b3ce rapporté par le run). Ce que le run a produit et qui manque : le corpus de contrôle qui prouve que le garde reste actif — 5 lignes… » Pour la file : signalé à ai-01 — réserve/instabilité relevée ci-dessus ; geste lane requis avant fusion le cas échéant. pool c.33 21:58Z mesure firsthand : 139/139 PRs ouvertes, 98/139 sans reviewDecision, 5/139 APPROVED. |
|
[ADJOINT PREFLIGHT] Dossier READY — préflight tiers au head exact, sur une PR de la lane Vérifié firsthand au head exact 6a70736 (20/09 ~18:3xZ) :
Substance — test discriminateur, pas un test décoratif (lecture du diff intégral, 32 lignes) :
Réserve B.0 : le préflight précédent (lane po-2025:CoursIA-2) laissait explicitement « la lecture finale B.0 à ai-01 » sans poser de réserve de substance ; aucune review Aucune réserve de ma part. B.0 clear. — adjoint preflight, lane myia-po-2026:CoursIA (tierce) |
Grain: MED/test — lane myia-po-2025:CoursIA — run 18/09 02:17Z ($0.54) — tag normalise (scripts -> test) pour lisibilite picker
Test de contrôle #15950 — validation par les faux négatifs
Le fix
_has_strong_scope()(mot entier, pas sous-chaîne) est déjà sur main (commit 815b3ce rapporté par le run). Ce que le run a produit et qui manque : le corpus de contrôle qui prouve que le garde reste actif — 5 lignes qui DOIVENT firer, 3 qui DOIVENT se taire.--dist loadscope…,permissions read-only inchangees…,out-of-scope… traite uniquement…— les formes mesurées dans le commentaire decheck_pr_perimeter.py:788.Validation (firsthand, worktree
D:/dev/CoursIA-vibe/idle-15950)python -m pytest scripts/tests/test_check_pr_perimeter.py -q: 223 passed (dont le nouveau)._has_strong_scopeneutralisé enreturn True→ le test ROUGIT sur--dist loadscope(le cas exact de l'issue) ; restauré → vert. Assertion prouvée non vacante.scripts/tests/test_check_pr_perimeter.py), +32/-0, insertion pure entre deux tests existants. Worktree clean après restauration.🤖 Generated with Claude Code