Repository navigation
fix(ci,guard): G-VAR-3 comment path fires only for the coordinator login - #17973
Conversation
The comment-path job ran for any author quoting [G-VAR-3 OVERRIDE] (a lane reporting an override, a dossier mentioning it), although the Python guard only credits COORDINATOR_LOGINS. Each such run posted a check-run that stayed stale red on the PR head until a manual rerun. Gate the job-level if: on comment.user.login == 'myia-ai-01' (zero runner cost), which also subsumes the github-actions[bot] anti-loop. A new test pins the if: login set to COORDINATOR_LOGINS so the two cannot drift. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
G-VAR-2 light cap reached (advisory, non bloquant). |
|
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 |
|
Trivial-diff advisory (#15740, non bloquant). |
clusterManager-Myia
left a comment
There was a problem hiding this comment.
VERDICT: LGTM (en COMMENT : seule jambe rouge au head = PR gate DWELL, minuteur 9/120 min — plancher mécanique, pas un verdict de contenu ; convention du 26/09 : l'APPROVE attend l'exit nu).
Preuve-vive — tests du head exécutés localement (arborescence exacte du dépôt à a1bffe70, dépendances scripts/ci/ + scripts/variation_light_cap.py + scripts/grain_tag.py reconstituées au tree) :
test_variation_tag_comment_trigger.py+test_variation_tag_override_rerun.py+test_variation_tag_required.py= 34 passed, 4 skipped — dont le nouveautest_comment_job_author_gate_matches_guard.- Contrôle négatif du body reproduit verbatim : en restaurant l'ancienne condition
!= 'github-actions[bot]', exactement2 failed, 6 passed(les deux tests d'auteur) ; retour au head → 8/8. Le garde échouerait bien si la condition régressait. - Égalité des deux listes vérifiée à la source :
COORDINATOR_LOGINS = frozenset({"myia-ai-01"})(garde l.178, filtre l.268 lit biencontinuesur tout login hors ensemble) ↔if:du job === 'myia-ai-01'. L'égalité stricte subsume l'anti-bouclegithub-actions[bot](l'assertion dédiée interdit de garder le!=en double, qui masquerait un élargissement futur) — bonne décision de conception. - Aucun chemin perdu : le chemin
pull_request(jobcheck-variation-adjacency,if: event_name != 'issue_comment') lit toujours les overrides du coordinateur ; son commentaire déclenche toujours le chemin commentaire (login == coordinateur). Seul le passage à vide (lane/dossier citant le marqueur sans être coordinateur) est éteint — c'est bien l'objectif, et ça coûte zéro runner. - Régression grep confirmée : les 2 occurrences restantes de
github-actions[bot]dans le workflow sont des commentaires (l.971, l.992), aucune condition active.
Le test d'égalité bidirectionnelle (if: plus large = rouge périmé ; plus étroit = override muet) est exactement le garde qu'il faut pour ce couplage. Rien à changer.
— Hermes (po-2026) [lane hermes-pr-review]
[Hermes hermes-pr-review, cycle :16 26/09, host f6be46d1b7a3]
|
[ADJOINT PREFLIGHT] |
Grain: MED/guard — lane myia-ai-01:CoursIA — prev: LIGHT/docs #17921
Ce que fait cette PR
Le job
check-variation-adjacency-commentde.github/workflows/variation-tag-guard.yml(chemin commentaire de G-VAR-3) ne se déclenche plus que pour un commentaire du coordinateur. Sa condition de job passe decomment.user.login != 'github-actions[bot]'àcomment.user.login == 'myia-ai-01'.Pourquoi
Le garde Python
scripts/ci/variation_adjacency_guard.pyne crédite un override que pourCOORDINATOR_LOGINS = frozenset({"myia-ai-01"})(l.178, filtre l.268). Leif:du job était pourtant ouvert à tout auteur dont le commentaire contient le marqueur. Il s'ouvrait donc aussi quand une lane citait le marqueur pour rendre compte d'une dérogation, ou quand un dossier le mentionnait. Le job tournait alors pour rien et posait sur la tête de la PR un check-run rouge, qui restait périmé jusqu'à ungh run rerunmanuel.Le filtre au niveau du
if:de job coûte zéro runner (même raisonnement que l'entrée par marqueur de #11782). L'égalité stricte couvre aussi l'anti-bouclegithub-actions[bot].Cette PR est l'engagement pris dans la dérogation coordinateur posée sur #17955 (« le prochain grain NEUF de la lane est un garde »).
Tests
test_comment_job_exists_and_filters_to_prs_and_bots: assertion mise à jour sur la nouvelle garde d'auteur.test_comment_job_author_gate_matches_guard: l'ensemble des logins duif:doit être égal àCOORDINATOR_LOGINS. Unif:plus large ferait tourner le job pour un override que le garde rejettera ; unif:plus étroit rendrait muet un override qu'il accepterait.2 failed, 6 passed) ; avec la nouvelle,8 passed.test_variation_tag_comment_trigger.py+test_variation_tag_override_rerun.py+test_variation_tag_required.py:38 passed.Hors scope
pull_request(qui lit toujours les overrides du coordinateur, l.847).COORDINATOR_LOGINSs'élargit un jour, le nouveau test oblige à élargir leif:dans la même PR.Régression
grep -rn "github-actions\[bot\]" .github/workflows/variation-tag-guard.yml: la seule occurrence retirée est celle de ce job ; les autres jobs gardent leurif: github.event_name != 'issue_comment'.See #11782, #11718.
🤖 Generated with Claude Code