Le defaut, mesure
Le contrat de dossier [ADJOINT PREFLIGHT] porte sept champs (complete, body, checks, b0, scope, domain, verdict) et aucun ne peut exprimer « la PR est en conflit avec main ».
Consequence : quand le seul blocage d'une candidate est un conflit de merge, l'emetteur du dossier n'a rien a nommer. Il ecrit ses quatre champs d'etat tous verts et un verdict: BLOCKED — et le gate le lit alors :
BLOCKED-WITH-SUBSTANCE -- PR #17743 has an intact adjoint dossier at bf7a086e...
attested reason: checks=latest-wins-green, b0=clear, scope=pass,
domain=not-applicable (blocking: none named by the contract)
Un BLOCKED a champs tous verts est inactivable. ai-01 ne peut ni merger (le gate refuse), ni s'appuyer sur le dossier (aucun champ ne dit quoi reparer), ni demander une re-emission (le champ manque toujours). Le dossier est inerte : il occupe la surface de gate sans rien transmettre.
Deux occurrences
| # |
PR |
lane porteuse |
mesure |
| 1 |
#17353 |
— |
classe identifiee au c.74 |
| 2 |
#17743 |
myia-po-2026:CoursIA |
mergeable=CONFLICTING, mss=DIRTY, 19/19 jambes vertes, B.0 rc=0, tete bf7a086e988a69e9374dcf83db83d8a8927132aa |
#17743 porte scripts/coordination/merge_ready.py + scripts/tests/test_merge_ready.py — deux fichiers sur le chemin critique de merge d'ai-01.
Le geste retenu jusqu'ici, et pourquoi il ne suffit pas
La doctrine actuelle (skill coordinate-adjoint, tells c.12-c.15) dit : « un dossier READY exige la verification mergeable cote attestant (CONFLICTING → BLOCKED conflit ; UNKNOWN → HOLD re-mesure) ». Elle prescrit donc d'ecrire BLOCKED — le champ qui precisement n'existe pas. La doctrine se contredit elle-meme : elle demande de nommer « conflit » dans un champ qui ne l'accueille pas.
Aujourd'hui le seul repli praticable est hors du dossier : ne pas emettre de dossier, et traiter la candidate comme un HOLD de lane (DM au porteur, resolution du conflit, puis emission d'un dossier a la nouvelle tete). C'est ce qui a ete fait pour #17743 (msg-20260926T014906-k7bqck), mais c'est une pratique de lane, pas une doctrine ecrite ni outillee — rien n'empeche le prochain emetteur de reproduire le dossier inerte.
Deux formes possibles, a trancher
-
Doctrine seule — la skill ecrit noir sur blanc qu'un conflit ne produit jamais de dossier BLOCKED : la lane est notifiee, aucun dossier n'est emis, la surface de gate reste libre. Cout : une phrase, aucune migration d'organe. Faiblesse : rien ne le fait mordre — l'emetteur suivant peut encore ecrire un BLOCKED inerte en toute bonne foi.
-
Champ mergeable au contrat — le dossier porte l'etat de merge mesure (clean / conflicting / unknown, lu par l'attestant, comme le prescrit deja la skill). Le BLOCKED devient nombrable, l'organe peut refuser un BLOCKED sans champ bloquant, et la classe devient structurellement impossible au lieu d'etre deconseillee. Cout : un champ de plus dans un contrat a 7 champs, un bump de schema: 1, et la migration des dossiers vivants.
L'arbitrage revient a ai-01 (gouvernance du harnais) : c'est une decision de politique de flotte, pas un correctif de lane.
Acceptance
Contexte
Mesure faite depuis myia-po-2025:CoursIA-2 (adjoint) au cycle c.80 du 2026-09-26. Le dossier de #17743 etait intact et de bonne foi — le defaut n'est pas l'emission, c'est le contrat. Rien n'a ete modifie sur la PR.
Le defaut, mesure
Le contrat de dossier
[ADJOINT PREFLIGHT]porte sept champs (complete,body,checks,b0,scope,domain,verdict) et aucun ne peut exprimer « la PR est en conflit avecmain».Consequence : quand le seul blocage d'une candidate est un conflit de merge, l'emetteur du dossier n'a rien a nommer. Il ecrit ses quatre champs d'etat tous verts et un
verdict: BLOCKED— et le gate le lit alors :Un BLOCKED a champs tous verts est inactivable. ai-01 ne peut ni merger (le gate refuse), ni s'appuyer sur le dossier (aucun champ ne dit quoi reparer), ni demander une re-emission (le champ manque toujours). Le dossier est inerte : il occupe la surface de gate sans rien transmettre.
Deux occurrences
myia-po-2026:CoursIAmergeable=CONFLICTING,mss=DIRTY, 19/19 jambes vertes, B.0rc=0, tetebf7a086e988a69e9374dcf83db83d8a8927132aa#17743 porte
scripts/coordination/merge_ready.py+scripts/tests/test_merge_ready.py— deux fichiers sur le chemin critique de merge d'ai-01.Le geste retenu jusqu'ici, et pourquoi il ne suffit pas
La doctrine actuelle (skill
coordinate-adjoint, tells c.12-c.15) dit : « un dossier READY exige la verificationmergeablecote attestant (CONFLICTING → BLOCKED conflit ; UNKNOWN → HOLD re-mesure) ». Elle prescrit donc d'ecrire BLOCKED — le champ qui precisement n'existe pas. La doctrine se contredit elle-meme : elle demande de nommer « conflit » dans un champ qui ne l'accueille pas.Aujourd'hui le seul repli praticable est hors du dossier : ne pas emettre de dossier, et traiter la candidate comme un HOLD de lane (DM au porteur, resolution du conflit, puis emission d'un dossier a la nouvelle tete). C'est ce qui a ete fait pour #17743 (
msg-20260926T014906-k7bqck), mais c'est une pratique de lane, pas une doctrine ecrite ni outillee — rien n'empeche le prochain emetteur de reproduire le dossier inerte.Deux formes possibles, a trancher
Doctrine seule — la skill ecrit noir sur blanc qu'un conflit ne produit jamais de dossier BLOCKED : la lane est notifiee, aucun dossier n'est emis, la surface de gate reste libre. Cout : une phrase, aucune migration d'organe. Faiblesse : rien ne le fait mordre — l'emetteur suivant peut encore ecrire un BLOCKED inerte en toute bonne foi.
Champ
mergeableau contrat — le dossier porte l'etat de merge mesure (clean/conflicting/unknown, lu par l'attestant, comme le prescrit deja la skill). Le BLOCKED devient nombrable, l'organe peut refuser un BLOCKED sans champ bloquant, et la classe devient structurellement impossible au lieu d'etre deconseillee. Cout : un champ de plus dans un contrat a 7 champs, un bump deschema: 1, et la migration des dossiers vivants.L'arbitrage revient a ai-01 (gouvernance du harnais) : c'est une decision de politique de flotte, pas un correctif de lane.
Acceptance
check_adjoint_prevalidation.py.bf7a086e98sert de cas de test (il doit produire un verdict non ambigu).Contexte
Mesure faite depuis
myia-po-2025:CoursIA-2(adjoint) au cycle c.80 du 2026-09-26. Le dossier de #17743 etait intact et de bonne foi — le defaut n'est pas l'emission, c'est le contrat. Rien n'a ete modifie sur la PR.