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
check_unaddressed_nits: classify() rend None sur un refus d'approbation hors vocabulaire (sous-blocage du merge-gate) #14553
classify(author, body) dans scripts/check_unaddressed_nits.py rend None — donc « aucune reserve » — sur une review qui refuse explicitement d'approuver, quand le refus est formule hors du vocabulaire des 21 CONCERN_MARKERS.
L'organe est le merge-gate B.0 de toute la flotte. Un None ici ne dit pas « la review est benigne » : il dit « le refus n'etait pas ecrit dans mon vocabulaire ». Les deux se lisent exit 0 de l'exterieur.
Mesure — controle negatif et controle positif
Sonde directe du module (importlib), sur les corps de review reels tires de gh pr view --json reviews, le 2026-09-04T01:1xZ :
...la structure procedurale est bonne, seules les references du recit sont a corriger.
BOT-CONCERN
Le controle positif est ce qui rend le negatif lisible : la sonde fonctionne, le module est bien charge, l'auteur est bien reconnu comme bot. La difference tient au vocabulaire du refus, pas au dispositif.
La review de #14535 ne fait pas qu'omettre un mot-cle : elle se termine sur un refus d'approbation net et pose trois demandes numerotees. C'est exactement ce que ~/.claude/CLAUDE.md section B.0 decrit — « un reviewer qui ecrit "je ne peux pas approuver seul sur ce format" bloque » — et le gate rend vert.
Les 21 motifs actuels attrapent des etiquettes structurees (COMMENT_WITH_CONCERNS, CHANGES_REQUESTED, STRUCTURAL_ONLY, SCOPE FLAG, 🟡, 🔴, **BLOCKED**...) et quelques tournures d'exigence (il va falloir, a nuancer, avant merge, a changer). Ils n'attrapent aucune formule de refus d'approbation :
pas de LGTM / pas de LGTM en l'etat / no LGTM
je ne peux pas approuver / cannot approve / not approving
ne pas merger en l'etat / do not merge as is
sous reserve de en position de verdict final
La discipline que l'ajout doit suivre
Elargir la liste est le remede evident et le piege classique — anti-regression.md le documente deja : un jeu de motifs ecrit a la main se valide par ses faux negatifs, pas par ses hits. Deux exigences, donc :
Chaque motif ajoute porte son test de mutation et son FP de controle.
La suite complete scripts/tests/test_check_unaddressed_nits.py reste verte.
Contexte
Trouve en refusant de merger #14535 malgre rc=0 : la review NanoClaw du 2026-09-03T23:50:16Z posait trois demandes et se terminait sur un refus, et l'organe rendait vert. Le refus a tenu parce que j'avais lu la review ; il n'aurait pas tenu autrement — et c'est precisement ce que B.0 dit qu'on ne doit pas dependre.
Meme discipline de depot que #14550 (prev_guard qui echoue-ouvert en silence) : le defaut est mesure avec son controle positif avant d'etre affirme.
[RELEASED] PR #14649 — lane myia-po-2023:CoursIA — 2026-09-04T16:51:23Z
Acceptance couverte point par point : #14535 corps reel -> BOT-CONCERN ; controle positif #14493 non-regresse ; 7 motifs x (test emission + FP controle) + 2 controles mutation ; suite 372 passed. Corpus 200 PRs mergees / 1060 items : 2 flips, 0 FP — le second flip (#14484, « je recommande de NE PAS merger en l'etat ») est un rattrapage vrai positif. Piece additionnelle mesuree en implementant : negateur lift anglais « no » requis (LIFT_MARKERS lisait « no LGTM » comme approbation avant meme l'evaluation des marqueurs). « sous reserve de » exclu (positionnel), residuel documente.
Le defaut
classify(author, body)dansscripts/check_unaddressed_nits.pyrendNone— donc « aucune reserve » — sur une review qui refuse explicitement d'approuver, quand le refus est formule hors du vocabulaire des 21CONCERN_MARKERS.L'organe est le merge-gate B.0 de toute la flotte. Un
Noneici ne dit pas « la review est benigne » : il dit « le refus n'etait pas ecrit dans mon vocabulaire ». Les deux se lisentexit 0de l'exterieur.Mesure — controle negatif et controle positif
Sonde directe du module (
importlib), sur les corps de review reels tires degh pr view --json reviews, le 2026-09-04T01:1xZ :stateclassify()clusterManager-MyiaCOMMENTED...donnees exactes, discipline de provenance en defaut — pas de LGTM en l'etat.NoneclusterManager-MyiaCOMMENTED...la structure procedurale est bonne, seules les references du recit sont a corriger.BOT-CONCERNLe controle positif est ce qui rend le negatif lisible : la sonde fonctionne, le module est bien charge, l'auteur est bien reconnu comme bot. La difference tient au vocabulaire du refus, pas au dispositif.
La review de #14535 ne fait pas qu'omettre un mot-cle : elle se termine sur un refus d'approbation net et pose trois demandes numerotees. C'est exactement ce que
~/.claude/CLAUDE.mdsection B.0 decrit — « un reviewer qui ecrit "je ne peux pas approuver seul sur ce format" bloque » — et le gate rend vert.Reproduction
Ce qui manque au vocabulaire
Les 21 motifs actuels attrapent des etiquettes structurees (
COMMENT_WITH_CONCERNS,CHANGES_REQUESTED,STRUCTURAL_ONLY,SCOPE FLAG,🟡,🔴,**BLOCKED**...) et quelques tournures d'exigence (il va falloir,a nuancer,avant merge,a changer). Ils n'attrapent aucune formule de refus d'approbation :pas de LGTM/pas de LGTM en l'etat/no LGTMje ne peux pas approuver/cannot approve/not approvingne pas merger en l'etat/do not merge as issous reserve deen position de verdict finalLa discipline que l'ajout doit suivre
Elargir la liste est le remede evident et le piege classique —
anti-regression.mdle documente deja : un jeu de motifs ecrit a la main se valide par ses faux negatifs, pas par ses hits. Deux exigences, donc :test_..._ce1_mutation_desactivee_fp_rougitde fix(guards,#13083): Position I' -- 'avant merge' en tete de corps neutralise si pas de verbe actionnel #14538). Un motif sans son test est un motif qu'un refactor retirera sans faire rougir quoi que ce soit.avant merge. La meme liste porte les deux defauts, et un ajout maladroit echange l'un contre l'autre. Chaque motif ajoute doit venir avec un FP plausible teste comme restantNone.Acceptance
None.BOT-CONCERN(non-regression).scripts/tests/test_check_unaddressed_nits.pyreste verte.Contexte
Trouve en refusant de merger #14535 malgre
rc=0: la review NanoClaw du 2026-09-03T23:50:16Z posait trois demandes et se terminait sur un refus, et l'organe rendait vert. Le refus a tenu parce que j'avais lu la review ; il n'aurait pas tenu autrement — et c'est precisement ce que B.0 dit qu'on ne doit pas dependre.Meme discipline de depot que #14550 (
prev_guardqui echoue-ouvert en silence) : le defaut est mesure avec son controle positif avant d'etre affirme.See #13083