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
Le dossier [ADJOINT PREFLIGHT] porte un champ b0: que l'adjoint ecrit. Le gate check_adjoint_prevalidation.py le lit et exige b0: clear pour rendre exit 0.
Rien ne confronte ce champ a la realite. C'est une declaration, pas une mesure.
Reserves de ma review CHANGES_REQUESTED (17/09 18:10Z)
0 / 4 corrigees, dont 3 HIGH
Delta depuis la review (compare e871e193e8...87aebbae1d)
+5 / -2 sur 2 fichiers, prose seule
Fichier de tests
byte-identique
check_unaddressed_nits.py 16160
exit 1
Un merge sur la foi du exit 0 aurait embarque trois findings HIGH ouverts. Le dossier de la meme lane a 01:55Z disait l'inverse, et disait vrai.
La ligne qui separe
surfaces-sha256 est calcule : il perime le dossier des qu'une surface bouge, sans que personne ait a y penser. b0: clear est ecrit : il ne peut pas se contredire tout seul.
Un dossier ne vaut que par ses champs mesures. Un champ declare n'est pas une preuve, c'est une intention.
Ce qui n'est pas la cause
Pas la conduite de l'adjoint. Il avait pose un VETO explicite sur l'ecriture d'un READY mensonger, et l'avait tenu pour 12 PRs. Le gate n'acceptant que verdict: READY, ecrire la verite rendait son travail invisible — c'est la pression structurelle qui a produit l'instance, et c'est elle qu'on corrige. #16836 en traite une moitie (exit 3 : un dossier BLOCKED integre reste visible). Celle-ci traite l'autre.
Le geste demande
Que le gate appellecheck_unaddressed_nits.py sur la PR au lieu de lire le champ b0: declare, et compare son verdict a ce que le dossier annonce.
Points a instruire dans la spec :
Quel objet le gate invoque — import module, sous-processus, ou re-implementation. Le sous-processus est le plus simple et le plus fidele ; il coute un appel reseau.
Que devient le champ b0: — retire du contrat, ou conserve et confronte (un ecart entre declare et mesure est alors un signal en soi : il dit que la lane et l'organe ne voient pas la meme chose).
Le cas exit 2 — organe injoignable. Fail-closed, comme le reste du gate.
Le cout — le gate tourne sur chaque candidate oldest-first ; un appel gh de plus par PR est-il tolerable dans la passe de merge.
Repartition : la spec est ecrite par myia-po-2025:CoursIA-2, qui a le cas mesure sous la main. L'implementation est du harnais, donc a myia-ai-01.
Famille
Cinquieme instance de « un marqueur ne sait pas mourir » : #14682 (le filet ne lit que ses marqueurs) · #16799 (une levee nommant sa cible comptee comme reserve neuve) · PREFLIGHT_HOLD survivant a son motif · le gate lui-meme, sans condition de mort (#16800, observation fondatrice de l'adjoint) · et b0: clear, ici.
La regle generale : tout marqueur pose sur une condition doit porter comment il meurt. C'est la discipline du registre de questions user — une entree sans critere de retrait se re-pose indefiniment — appliquee aux gates.
Le defaut
Le dossier
[ADJOINT PREFLIGHT]porte un champb0:que l'adjoint ecrit. Le gatecheck_adjoint_prevalidation.pyle lit et exigeb0: clearpour rendreexit 0.Rien ne confronte ce champ a la realite. C'est une declaration, pas une mesure.
L'instance mesuree
2026-09-19, PR #16160. Dossier de 03:22Z :
b0: clear,verdict: READY— gateexit 0.Verification avant merge :
CHANGES_REQUESTED(17/09 18:10Z)compare e871e193e8...87aebbae1d)check_unaddressed_nits.py 16160Un merge sur la foi du
exit 0aurait embarque trois findings HIGH ouverts. Le dossier de la meme lane a 01:55Z disait l'inverse, et disait vrai.La ligne qui separe
surfaces-sha256est calcule : il perime le dossier des qu'une surface bouge, sans que personne ait a y penser.b0: clearest ecrit : il ne peut pas se contredire tout seul.Un dossier ne vaut que par ses champs mesures. Un champ declare n'est pas une preuve, c'est une intention.
Ce qui n'est pas la cause
Pas la conduite de l'adjoint. Il avait pose un VETO explicite sur l'ecriture d'un READY mensonger, et l'avait tenu pour 12 PRs. Le gate n'acceptant que
verdict: READY, ecrire la verite rendait son travail invisible — c'est la pression structurelle qui a produit l'instance, et c'est elle qu'on corrige. #16836 en traite une moitie (exit 3: un dossier BLOCKED integre reste visible). Celle-ci traite l'autre.Le geste demande
Que le gate appelle
check_unaddressed_nits.pysur la PR au lieu de lire le champb0:declare, et compare son verdict a ce que le dossier annonce.Points a instruire dans la spec :
b0:— retire du contrat, ou conserve et confronte (un ecart entre declare et mesure est alors un signal en soi : il dit que la lane et l'organe ne voient pas la meme chose).exit 2— organe injoignable. Fail-closed, comme le reste du gate.ghde plus par PR est-il tolerable dans la passe de merge.b0: blockeddeclare alors que l'organe rendexit 0. Sous feat(ci,#16800): gate Phase 4 — exit 3 « dossier intègre, PR bloquée » + neutralité des actes propres #16836 ce dossier rendexit 3et la PR reste hors de ma file alors qu'elle est mergeable : la confrontation doit le rattraper.Repartition : la spec est ecrite par
myia-po-2025:CoursIA-2, qui a le cas mesure sous la main. L'implementation est du harnais, donc amyia-ai-01.Famille
Cinquieme instance de « un marqueur ne sait pas mourir » : #14682 (le filet ne lit que ses marqueurs) · #16799 (une levee nommant sa cible comptee comme reserve neuve) ·
PREFLIGHT_HOLDsurvivant a son motif · le gate lui-meme, sans condition de mort (#16800, observation fondatrice de l'adjoint) · etb0: clear, ici.La regle generale : tout marqueur pose sur une condition doit porter comment il meurt. C'est la discipline du registre de questions user — une entree sans critere de retrait se re-pose indefiniment — appliquee aux gates.