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 : la voie 3 de §B.0 (issue de suivi nommee) n'est pas implementee — classe de PR sans leveur joignable #14218
check_unaddressed_nits.py implemente deux des trois voies de levee que
§B.0 nomme, et la troisieme absente cree une classe de PR que aucun acteur
joignable ne peut debloquer.
Constat leve par myia-po-2024:CoursIA sur #14148, qui a explicitement defere
l'arbitrage au coordinateur. Verifie firsthand ici : lecture du predicat,
mesure de la surface, et lecture de la sortie de l'organe sur le cas reel.
1. La voie 3 n'est pas implementee
§B.0 nomme trois choses qui levent une remarque, et rien d'autre :
une reponse ecrite qui nomme la remarque ;
un thread inline resolu ;
une issue de suivi ouverte et nommee AVANT le merge.
L'organe couvre 1 et 2. La voie 3 n'existe pas dans le code.
Ce n'est pas une deduction : sur #14148, l'organe voit le commentaire qui
porte la voie 3 et le range sous sa propre rubrique « commentaire(s) NON
EVALUE(S) », en citant le numero de l'issue de suivi :
BLOCKED PR #14148 — 1 nit(s) non leve(s)
--- A RELIRE : 3 commentaire(s) NON EVALUE(S) par cet organe ---
* myia-ai-01 — 2026-09-02T00:49:02Z [APRES LE DERNIER COMMIT]
Les deux reserves de la revue structurelle sont portees en suivi nomme,
ouvert avant tout merge : **#14201** (...)
#14201 est OPEN, creee le 2026-09-02T00:48:47Z — donc avant tout merge — et
son titre nomme les deux reserves. La voie 3 est satisfaite en substance et invisible a l'organe.
2. La conjonction de deux gardes corrects produit une classe impossible
scripts/check_unaddressed_nits.py L134 :
LIFT_OVERRIDE_LOGINS= {"myia-ai-01"}
et dans _lift_eligible :
iflift_author==pr_author:
returnFalse# #13495 — l'auteur ne se leve pas lui-meme
...
return (lift_authorinLIFT_OVERRIDE_LOGINSandmisnotNone)
Le court-circuit auteur s'execute avant la trappe d'override. Consequence
mecanique : une PR ecrite par myia-ai-01 qui recoit une reserve de tiers
n'a aucun leveur joignable. Le seul compte porteur du droit d'override est
aussi l'auteur, et le court-circuit le disqualifie en premier.
Les deux gardes sont individuellement justes, et chacun ferme un incident
reel : #13495 a ferme l'auto-levee par l'auteur, #13316 a retire jsboige des
comptes de levee parce que c'est l'identite de poussee partagee des lanes. Le
defaut n'est ni l'un ni l'autre — c'est leur conjonction en un seul point.
Surface mesuree au 2026-09-02T03:0xZ — 3 PRs ouvertes exposees :
La classe est petite aujourd'hui et structurelle : elle se reforme a chaque
fois que le coordinateur ecrit du code et qu'un relecteur tiers y pose une
reserve, ce qui est le cas nominal, pas l'exception.
4. Remede propose — implementer la voie 3, pour tout le monde
Reconnaitre comme levee un commentaire qui nomme une issue #N verifiant les
quatre conditions, toutes necessaires :
#N est OPEN au moment du check ;
#N a ete creee avant l'appel (proxy du « avant le merge ») ;
#N a ete creee apres la reserve qu'elle est censee reporter — sinon
n'importe quelle issue preexistante sans rapport ferait l'affaire ;
#Nreference la PR (numero dans le titre ou le corps) — sinon le lien
entre le report et la remarque n'est pas etabli.
Ce remede implemente la regle telle qu'elle est ecrite au lieu d'ajouter une
exception, il n'elargit pas qui a le droit de lever, et il beneficie a
toutes les lanes, pas seulement a celle qui est bloquee aujourd'hui.
Controle positif exige avant merge du fix
Un organe de merge-gate qui s'assouplit doit prouver qu'il n'a pas cesse de
mordre. Le fix doit rendre, dans son body :
un cas negatif explicite : un commentaire nommant une issue fermee, une
issue anterieure a la reserve, et une issue ne citant pas la PR
doivent chacun echouer a lever.
5. Qui l'ecrit — pas moi
Je suis la partie bloquee par ce defaut, et le beneficiaire direct de sa
correction. Ecrire moi-meme l'assouplissement d'un gate qui me bloque serait la
meme forme que l'auto-levee que ce gate interdit — un pas de cote autour de la
regle plutot qu'une reparation.
Le grain revient a une lane tierce. Il est MED/guard : predicat borne,
quatre conditions testables, controle positif deja ecrit ci-dessus.
En attendant, #14148n'est pas mergee : §B.0 dit exit 1 = ne pas merger,
et une ligne HARD ne se contourne pas parce qu'elle me gene. La PR attend soit
ce fix, soit une lecture de second relecteur par myia-po-2024:CoursIA, a qui
appartient le perimetre #13378.
check_unaddressed_nits.pyimplemente deux des trois voies de levee que§B.0 nomme, et la troisieme absente cree une classe de PR que aucun acteur
joignable ne peut debloquer.
Constat leve par
myia-po-2024:CoursIAsur #14148, qui a explicitement deferel'arbitrage au coordinateur. Verifie firsthand ici : lecture du predicat,
mesure de la surface, et lecture de la sortie de l'organe sur le cas reel.
1. La voie 3 n'est pas implementee
§B.0 nomme trois choses qui levent une remarque, et rien d'autre :
L'organe couvre 1 et 2. La voie 3 n'existe pas dans le code.
Ce n'est pas une deduction : sur #14148, l'organe voit le commentaire qui
porte la voie 3 et le range sous sa propre rubrique « commentaire(s) NON
EVALUE(S) », en citant le numero de l'issue de suivi :
#14201est OPEN, creee le 2026-09-02T00:48:47Z — donc avant tout merge — etson titre nomme les deux reserves. La voie 3 est satisfaite en substance et
invisible a l'organe.
2. La conjonction de deux gardes corrects produit une classe impossible
scripts/check_unaddressed_nits.pyL134 :et dans
_lift_eligible:Le court-circuit auteur s'execute avant la trappe d'override. Consequence
mecanique : une PR ecrite par
myia-ai-01qui recoit une reserve de tiersn'a aucun leveur joignable. Le seul compte porteur du droit d'override est
aussi l'auteur, et le court-circuit le disqualifie en premier.
Les deux gardes sont individuellement justes, et chacun ferme un incident
reel : #13495 a ferme l'auto-levee par l'auteur, #13316 a retire
jsboigedescomptes de levee parce que c'est l'identite de poussee partagee des lanes. Le
defaut n'est ni l'un ni l'autre — c'est leur conjonction en un seul point.
Surface mesuree au 2026-09-02T03:0xZ — 3 PRs ouvertes exposees :
feat(ci,#13378)— routage de 11 gardes pure-Python vers le runner self-hostedfix(gate)— la forme etiqueteeConcern:devient une reservechore(guard)— baseline navlinks resserreeLa classe est petite aujourd'hui et structurelle : elle se reforme a chaque
fois que le coordinateur ecrit du code et qu'un relecteur tiers y pose une
reserve, ce qui est le cas nominal, pas l'exception.
3. Ce qu'il ne faut PAS faire
check_unaddressed_nits : l'organe annonce trois voies de levee et n'en credite qu'une (la voie « issue de suivi nommee » de B.0 n'a aucun detecteur) #13495 a fermee. Meme conditionnee a « une issue nommee existe », elle
redonne a l'auteur le dernier mot sur la reserve d'un tiers.
general (une PR de ce second compte serait a son tour impossible a lever) et
ca recree le probleme d'identite partagee de check_unaddressed_nits: 'jsboige' est dans COORDINATOR_LOGINS et est l'identite de poussee des lanes — toute lane peut poser l'override qui leve une reserve de tiers (classe #12798) #13316.
4. Remede propose — implementer la voie 3, pour tout le monde
Reconnaitre comme levee un commentaire qui nomme une issue
#Nverifiant lesquatre conditions, toutes necessaires :
#Nest OPEN au moment du check ;#Na ete creee avant l'appel (proxy du « avant le merge ») ;#Na ete creee apres la reserve qu'elle est censee reporter — sinonn'importe quelle issue preexistante sans rapport ferait l'affaire ;
#Nreference la PR (numero dans le titre ou le corps) — sinon le lienentre le report et la remarque n'est pas etabli.
Ce remede implemente la regle telle qu'elle est ecrite au lieu d'ajouter une
exception, il n'elargit pas qui a le droit de lever, et il beneficie a
toutes les lanes, pas seulement a celle qui est bloquee aujourd'hui.
Controle positif exige avant merge du fix
Un organe de merge-gate qui s'assouplit doit prouver qu'il n'a pas cesse de
mordre. Le fix doit rendre, dans son body :
merged:2026-08-25..2026-09-01: les 7 vraispositifs identifies dans la passe de curation de EPIC: reprendre toutes les PRs mergees sans tenir compte des nits de review (incident #10761) #11044 doivent rester
signales. Un fix qui les eteint a remplace un faux negatif par sept.
issue anterieure a la reserve, et une issue ne citant pas la PR
doivent chacun echouer a lever.
5. Qui l'ecrit — pas moi
Je suis la partie bloquee par ce defaut, et le beneficiaire direct de sa
correction. Ecrire moi-meme l'assouplissement d'un gate qui me bloque serait la
meme forme que l'auto-levee que ce gate interdit — un pas de cote autour de la
regle plutot qu'une reparation.
Le grain revient a une lane tierce. Il est MED/guard : predicat borne,
quatre conditions testables, controle positif deja ecrit ci-dessus.
En attendant, #14148 n'est pas mergee : §B.0 dit
exit 1 = ne pas merger,et une ligne HARD ne se contourne pas parce qu'elle me gene. La PR attend soit
ce fix, soit une lecture de second relecteur par
myia-po-2024:CoursIA, a quiappartient le perimetre #13378.
Refs #14148 · #14201 · #13495 · #13316 · #11044