Constat mesuré (cycle ai-01 du 2026-09-19)
Le gate d'entrée de la Phase 4 (scripts/check_adjoint_prevalidation.py) n'accepte un dossier
de prévalidation que d'une seule lane, codée en dur :
ADJOINT_LANE = "myia-po-2025:CoursIA-2"
Passe mesurée ce soir sur les 14 candidates annoncées READY par leur lane :
| Verdict du gate |
Nombre |
no [ADJOINT PREFLIGHT] dossier comment found |
10 |
discussion surfaces changed (course au SHA) |
2 |
| exit 0 |
2 |
Les lanes postent [READY] et [DELIVERED] ; le gate ne lit que le bloc de l'adjoint. Le débit de
dossiers d'une lane unique EST le débit de merge du dépôt entier, quel que soit le travail de
prévalidation réellement produit ailleurs dans la flotte. Le pool est repassé au-dessus de 200 PRs
ouvertes pendant que 6 lanes produisaient des vérifications que le gate ne sait pas lire.
Ce que le gate protège réellement
La valeur du gate n'est pas le nom d'une lane : c'est que la prévalidation soit tierce —
quelqu'un d'autre que le porteur a lu les trois surfaces B.0 à head exact et l'a attesté dans un
contrat machine-lisible. Un dossier de myia-po-2023:CoursIA sur une PR portée par
myia-po-2027:CoursIA satisfait exactement cette propriété.
Le lane du dossier reste une déclaration fail-closed, pas une preuve cryptographique : le login
GitHub jsboige est partagé par toutes les lanes. Élargir l'ensemble des lanes acceptées ne dégrade
donc pas une garantie d'identité qui n'a jamais existé — mais il faut fermer la porte que cet
élargissement ouvre : l'auto-attestation.
Changement proposé
QUALIFYING_LANES — ensemble explicite des 10 lanes du cluster, en remplacement de
ADJOINT_LANE dans la validation. Une lane hors de l'ensemble échoue toujours fermé.
- Refus de l'auto-prévalidation : le tag
Grain: ... lane <machine:workspace> du body nomme la
lane porteuse. Si elle est identique à la lane du dossier, le gate refuse. Une lane ne se
contresigne pas elle-même.
- Un body sans tag
Grain: lisible n'est pas une autorisation : le contrôle
d'auto-attestation ne peut simplement pas s'y faire, et le contrôle de lane qualifiante
s'applique quand même.
Tout le reste du contrat est inchangé : schema: 1, head exact, surfaces-sha256, trois surfaces
B.0, checks latest-wins, scope, domaine, verdict.
Gouvernance
Changement normatif substantiel du harnais (CLAUDE.md §A) — couvert par le mandat user direct du
2026-09-19 : « si les workers ne corrigent pas assez, il faut sans doute corriger le harnais ou le
picker en ce sens », dans le contexte du P0 débit de merges.
Acceptance
Constat mesuré (cycle ai-01 du 2026-09-19)
Le gate d'entrée de la Phase 4 (
scripts/check_adjoint_prevalidation.py) n'accepte un dossierde prévalidation que d'une seule lane, codée en dur :
Passe mesurée ce soir sur les 14 candidates annoncées READY par leur lane :
no [ADJOINT PREFLIGHT] dossier comment founddiscussion surfaces changed(course au SHA)Les lanes postent
[READY]et[DELIVERED]; le gate ne lit que le bloc de l'adjoint. Le débit dedossiers d'une lane unique EST le débit de merge du dépôt entier, quel que soit le travail de
prévalidation réellement produit ailleurs dans la flotte. Le pool est repassé au-dessus de 200 PRs
ouvertes pendant que 6 lanes produisaient des vérifications que le gate ne sait pas lire.
Ce que le gate protège réellement
La valeur du gate n'est pas le nom d'une lane : c'est que la prévalidation soit tierce —
quelqu'un d'autre que le porteur a lu les trois surfaces B.0 à head exact et l'a attesté dans un
contrat machine-lisible. Un dossier de
myia-po-2023:CoursIAsur une PR portée parmyia-po-2027:CoursIAsatisfait exactement cette propriété.Le
lanedu dossier reste une déclaration fail-closed, pas une preuve cryptographique : le loginGitHub
jsboigeest partagé par toutes les lanes. Élargir l'ensemble des lanes acceptées ne dégradedonc pas une garantie d'identité qui n'a jamais existé — mais il faut fermer la porte que cet
élargissement ouvre : l'auto-attestation.
Changement proposé
QUALIFYING_LANES— ensemble explicite des 10 lanes du cluster, en remplacement deADJOINT_LANEdans la validation. Une lane hors de l'ensemble échoue toujours fermé.Grain: ... lane <machine:workspace>du body nomme lalane porteuse. Si elle est identique à la lane du dossier, le gate refuse. Une lane ne se
contresigne pas elle-même.
Grain:lisible n'est pas une autorisation : le contrôled'auto-attestation ne peut simplement pas s'y faire, et le contrôle de lane qualifiante
s'applique quand même.
Tout le reste du contrat est inchangé :
schema: 1, head exact,surfaces-sha256, trois surfacesB.0, checks latest-wins, scope, domaine, verdict.
Gouvernance
Changement normatif substantiel du harnais (CLAUDE.md §A) — couvert par le mandat user direct du
2026-09-19 : « si les workers ne corrigent pas assez, il faut sans doute corriger le harnais ou le
picker en ce sens », dans le contexte du P0 débit de merges.
Acceptance
QUALIFYING_LANESremplaceADJOINT_LANEdansvalidate_dossierGrain:Grain:absent n'autorise pas