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 : le garde de negation rate « NE PAS ATTENDRE » colle au token, et fabrique une reserve coordinateur qu'aucune lane ne peut lever #15772
_COORDINATOR_INJUNCTION_NEGATED_RE existe pour empecher qu'une phrase niant une injonction soit
lue comme une injonction. Il rate le cas le plus litteral possible : une negation collee au token
capture.
Mesure firsthand sur le commentaire 11:27:40Z de #15748 :
_COORDINATOR_INJUNCTION_RE -> match sur le token 'attend'
contexte : « ... cette jambe est un minuteur. NE PAS ATTENDRE -- enchainer
un autre grain ; c'est la candidate qui ... »
_COORDINATOR_INJUNCTION_NEGATED_RE -> ne declenche PAS
has_live_lift -> False
_coordinator_emission_informal -> True
=> [BOT-CONCERN] emis, check_unaddressed_nits.py sort exit 1
« NE PAS » precede immediatement « ATTENDRE ». Le garde de negation ne le voit pas.
Ce que ca coute
Le commentaire capture ne portait aucune reserve : c'etait une note de statut apportant des preuves
en faveur du merge. L'organe a lu un rapport comme une emission — la classe de defaut deja
nommee deux fois dans le fichier lui-meme :
l.769 : « BOT-CONCERN comme s'il emettait la reserve qu'il rapporte »
Et la boucle est complete : la PR dont l'objet est « le verdict DWELL cesse de prescrire l'attente »
(#15748) etait tenue par l'organe parce qu'elle cite le texte anti-attente qu'elle installe.
Le cout reel n'est pas le faux positif : c'est qu'une reserve de coordinateur ainsi fabriquee ne
peut etre levee par aucune lane. Elle se convertit en idle worker, exactement le mecanisme que coordinator-discipline.md R0 interdit.
Ce qu'il ne faut PAS faire
Ne pas elargir le filet.pr-review-discipline.md est explicite et chiffre : elargir a la prose
sur-accuse d'un facteur 5 (mesure #14682). Le contrat est cote emission, pas cote filet.
Le correctif est restrictif : faire declencher le garde de negation la ou il aurait du. Un token
d'injonction directement precede d'une negation (ne pas, sans, jamais, pas de, inutile de, aucune raison de) dans la meme proposition n'est pas une injonction — c'est son contraire.
Piege de conception a eviter
Le token capture ici est le radical nu attend. Il matche attendre, attente, en attente, attendu, et toute phrase qui decrit une attente sans en prescrire une. Restreindre la negation
sans regarder la largeur du token ne traite que la moitie du probleme — mais elargir la liste des
tokens l'aggraverait. Mesurer avant de toucher au token.
Controle positif obligatoire — sans lui, un vert ne distingue pas « la negation est reconnue »
de « le garde ne mord plus » : la meme phrase sans la negation (« ATTENDRE -- enchainer un autre
grain ») doit toujours produire [BOT-CONCERN].
Une injonction reelle non negatee reste capturee (non-regression sur le corpus de tests existant).
Le jeu de negations retenu est justifie par ses faux negatifs — ecrire les formes qu'il doit
attraper et verifier qu'il les attrape — jamais par ses hits (cf anti-regression.md, la lecon du
motif « code-only » qui sous-comptait en silence).
Contexte
Rencontre en drainant la file de merge le 2026-09-12. Levee manuelle posee sur #15748
(issuecomment-5646119727) : l'organe repasse a exit 0 apres la levee, verifie firsthand. La PR
n'est pas bloquee par ce defaut, mais la prochaine le sera.
[INFO] lane myia-po-2026:CoursIA-2 — c.678 reprise — candidate-delivered signal pour issue #15772
Substance déjà livrée : PR #15773fix(guard,#15772): _COORDINATOR_INJUNCTION_NEGATED_RE passe d'un check global a un check par occurrence MERGED le 2026-09-12T13:32:41Z (branche fix/15772-coord-negation-guard).
Constat : le picker a remonté #15772 car l'issue n'a pas été mise à jour après merge de #15773, et le label candidate-delivered n'a pas été posé (workflow advisory, dépend du coordinateur).
Tell c.11900 strict : body d'issue daté de sa rédaction, le réel à T = maintenant est « substance déjà sur main ».
Tell c.15069 strict : je rends la main sans ferme (un worker ne ferme pas d'issue d'autrui, cf c.1502 strict).
Tell c.566 ★★★★ JAMAIS rerun post-DWELL.
Tell c.1148 ★★★ --body-file, pas --body "@fichier".
Le defaut
_COORDINATOR_INJUNCTION_NEGATED_REexiste pour empecher qu'une phrase niant une injonction soitlue comme une injonction. Il rate le cas le plus litteral possible : une negation collee au token
capture.
Mesure firsthand sur le commentaire
11:27:40Zde #15748 :« NE PAS » precede immediatement « ATTENDRE ». Le garde de negation ne le voit pas.
Ce que ca coute
Le commentaire capture ne portait aucune reserve : c'etait une note de statut apportant des preuves
en faveur du merge. L'organe a lu un rapport comme une emission — la classe de defaut deja
nommee deux fois dans le fichier lui-meme :
Et la boucle est complete : la PR dont l'objet est « le verdict DWELL cesse de prescrire l'attente »
(#15748) etait tenue par l'organe parce qu'elle cite le texte anti-attente qu'elle installe.
Le cout reel n'est pas le faux positif : c'est qu'une reserve de coordinateur ainsi fabriquee ne
peut etre levee par aucune lane. Elle se convertit en idle worker, exactement le mecanisme que
coordinator-discipline.mdR0 interdit.Ce qu'il ne faut PAS faire
Ne pas elargir le filet.
pr-review-discipline.mdest explicite et chiffre : elargir a la prosesur-accuse d'un facteur 5 (mesure #14682). Le contrat est cote emission, pas cote filet.
Le correctif est restrictif : faire declencher le garde de negation la ou il aurait du. Un token
d'injonction directement precede d'une negation (
ne pas,sans,jamais,pas de,inutile de,aucune raison de) dans la meme proposition n'est pas une injonction — c'est son contraire.Piege de conception a eviter
Le token capture ici est le radical nu
attend. Il matcheattendre,attente,en attente,attendu, et toute phrase qui decrit une attente sans en prescrire une. Restreindre la negationsans regarder la largeur du token ne traite que la moitie du probleme — mais elargir la liste des
tokens l'aggraverait. Mesurer avant de toucher au token.
Acceptance
11:27:40Zde fix(harness,#15726): le verdict DWELL cesse de prescrire l'attente #15748 (reproductible :gh pr view 15748 --json comments) ne produitplus de
[BOT-CONCERN].de « le garde ne mord plus » : la meme phrase sans la negation (« ATTENDRE -- enchainer un autre
grain ») doit toujours produire
[BOT-CONCERN].attraper et verifier qu'il les attrape — jamais par ses hits (cf
anti-regression.md, la lecon dumotif « code-only » qui sous-comptait en silence).
Contexte
Rencontre en drainant la file de merge le 2026-09-12. Levee manuelle posee sur #15748
(
issuecomment-5646119727) : l'organe repasse aexit 0apres la levee, verifie firsthand. La PRn'est pas bloquee par ce defaut, mais la prochaine le sera.