Constat
Le secretaire (myia-po-2026:CoursIA-3) ne peut emettre aucun dossier : sa lane
est absente de QUALIFYING_LANES, set explicite qui echoue ferme.
Summary
QUALIFYING_LANES (scripts/check_adjoint_prevalidation.py) ignore deux lanes
vivantes du cluster. Le set echoue ferme sur toute lane inconnue, donc la lane
du secretaire — myia-po-2026:CoursIA-3, dont le role est d'emettre des
dossiers — voit chacun de ses depots refuse comme « lane inconnue ».
Mesures firsthand (2026-09-21 UTC)
| Mesure |
Valeur |
Instrument |
myia-po-2026:CoursIA-3 dans QUALIFYING_LANES |
absente |
lecture de scripts/check_adjoint_prevalidation.py l.102-113 |
myia-po-2023:CoursIA-2 dans le set |
absente, alors qu'elle porte #16259 |
idem |
| Comportement du set sur lane inconnue |
echoue ferme (lane must ...) |
commentaire du set + test_disqualifying_lane |
CoursIA-3 dans scripts/ + .claude/ |
0 fichier |
git grep -l 'CoursIA-3' -- scripts/ .claude/ |
Dashboard workspace-CoursIA-3 |
vivant, ecrit 12:21:17Z par myia-po-2026:CoursIA-3 |
roosync_dashboard action:"list" |
| PRs portees par cette lane |
0 / 60 dernieres |
gh pr list --state all --limit 60 |
Correction d'une mesure que j'avais publiee ici et qui etait FAUSSE
La premiere version de cette PR affirmait « 0 dossier [ADJOINT PREFLIGHT]
dans la flotte » et en tirait que les 14 plus vieilles PRs CLEAN etaient
bloquees faute de dossier. Les deux sont faux.
- Mon instrument (
gh api .../issues/comments + head -30) fermait le flux
avant que --paginate n'avance : il couvrait 10:45:35Z → 12:31:18Z, une
fenetre d'1 h 45, presentee comme une propriete de la flotte.
- Recompte par lecture des commentaires de chaque PR : 28 des 28 plus
vieilles PRs portent un dossier, dont 14 emis par
myia-po-2025:CoursIA-2. La production de dossiers n'est pas a zero.
- Et ces PRs ne sont pas bloquees : 9 d'entre elles rendent
gate=0 nits=0,
c'est-a-dire mergeables en l'etat.
Ce que le defaut corrige ici coute donc n'est pas un blocage de la file.
C'est une lane emettrice mute : elle depose, le gate refuse, et le refus
n'apparait nulle part comme un refus. Le cout reel est le travail du
secretaire, pas le debit du depot — c'est plus petit que ce que j'ai ecrit,
et c'est ce que la mesure soutient.
Changement
+2 entrees dans QUALIFYING_LANES, avec le motif ecrit en commentaire.
Aucune autre surface touchee : check_pr_path_collisions.py et
check_self_hosted_runner_policy.py ne citent ces lanes qu'en docstring, pas
en allowlist (verifie par git grep).
Temoins negatifs
Deux tests ajoutes (48 -> 50) :
test_secretary_lane_can_attest_although_it_carries_nothing — echoue si
l'une des deux lanes retombe hors du set. Sa docstring nomme l'asymetrie
qui a cache le defaut : une lane PORTEUSE absente du set se voit (son auteur
stagne), une lane EMETTRICE PURE absente du set ne produit rien, et on lit
ce silence comme « aucun dossier prepare ».
test_every_qualifying_lane_is_accepted_end_to_end — aucune entree du set
ne peut etre acceptee par son nom et refusee en pratique. La lane porteuse
du fixture est exclue et asserted refusee pour le bon motif : sans cette
precaution le test passerait a tort (premiere version rouge sur exactement
ce point — le garde d'auto-attestation faisait son travail).
Validation
python -m pytest scripts/tests/test_check_adjoint_prevalidation.py -q
-> 50 passed
python -m pytest scripts/tests/test_check_lane_claim.py scripts/tests/test_grain_tag.py -q
-> 419 passed, 1 skipped
Le test disqualifiant existant (test_blocked_dossier_still_requires_full_structural_integrity)
nomme myia-po-9999:CoursIA — hors du set avant comme apres, il continue de
tester ce qu'il teste.
Ce que cette PR ne fait pas
Elle ne prouve pas qu'un travail du secretaire a ete perdu : elle retire un
refus lu dans le code, pas mesure sur ses depots. Combien de dossiers il a
deposes reste une question ouverte, posee a la lane concernee.
See #17205
🤖 Generated with Claude Code
Constat
Le secretaire (
myia-po-2026:CoursIA-3) ne peut emettre aucun dossier : sa laneest absente de
QUALIFYING_LANES, set explicite qui echoue ferme.Summary
QUALIFYING_LANES(scripts/check_adjoint_prevalidation.py) ignore deux lanesvivantes du cluster. Le set echoue ferme sur toute lane inconnue, donc la lane
du secretaire —
myia-po-2026:CoursIA-3, dont le role est d'emettre desdossiers — voit chacun de ses depots refuse comme « lane inconnue ».
Mesures firsthand (2026-09-21 UTC)
myia-po-2026:CoursIA-3dansQUALIFYING_LANESscripts/check_adjoint_prevalidation.pyl.102-113myia-po-2023:CoursIA-2dans le setlane must ...)test_disqualifying_laneCoursIA-3dansscripts/+.claude/git grep -l 'CoursIA-3' -- scripts/ .claude/workspace-CoursIA-312:21:17Zparmyia-po-2026:CoursIA-3roosync_dashboard action:"list"gh pr list --state all --limit 60Correction d'une mesure que j'avais publiee ici et qui etait FAUSSE
La premiere version de cette PR affirmait « 0 dossier
[ADJOINT PREFLIGHT]dans la flotte » et en tirait que les 14 plus vieilles PRs
CLEANetaientbloquees faute de dossier. Les deux sont faux.
gh api .../issues/comments+head -30) fermait le fluxavant que
--paginaten'avance : il couvrait10:45:35Z → 12:31:18Z, unefenetre d'1 h 45, presentee comme une propriete de la flotte.
vieilles PRs portent un dossier, dont 14 emis par
myia-po-2025:CoursIA-2. La production de dossiers n'est pas a zero.gate=0 nits=0,c'est-a-dire mergeables en l'etat.
Ce que le defaut corrige ici coute donc n'est pas un blocage de la file.
C'est une lane emettrice mute : elle depose, le gate refuse, et le refus
n'apparait nulle part comme un refus. Le cout reel est le travail du
secretaire, pas le debit du depot — c'est plus petit que ce que j'ai ecrit,
et c'est ce que la mesure soutient.
Changement
+2 entrees dans
QUALIFYING_LANES, avec le motif ecrit en commentaire.Aucune autre surface touchee :
check_pr_path_collisions.pyetcheck_self_hosted_runner_policy.pyne citent ces lanes qu'en docstring, pasen allowlist (verifie par
git grep).Temoins negatifs
Deux tests ajoutes (48 -> 50) :
test_secretary_lane_can_attest_although_it_carries_nothing— echoue sil'une des deux lanes retombe hors du set. Sa docstring nomme l'asymetrie
qui a cache le defaut : une lane PORTEUSE absente du set se voit (son auteur
stagne), une lane EMETTRICE PURE absente du set ne produit rien, et on lit
ce silence comme « aucun dossier prepare ».
test_every_qualifying_lane_is_accepted_end_to_end— aucune entree du setne peut etre acceptee par son nom et refusee en pratique. La lane porteuse
du fixture est exclue et asserted refusee pour le bon motif : sans cette
precaution le test passerait a tort (premiere version rouge sur exactement
ce point — le garde d'auto-attestation faisait son travail).
Validation
Le test disqualifiant existant (
test_blocked_dossier_still_requires_full_structural_integrity)nomme
myia-po-9999:CoursIA— hors du set avant comme apres, il continue detester ce qu'il teste.
Ce que cette PR ne fait pas
Elle ne prouve pas qu'un travail du secretaire a ete perdu : elle retire un
refus lu dans le code, pas mesure sur ses depots. Combien de dossiers il a
deposes reste une question ouverte, posee a la lane concernee.
See #17205
🤖 Generated with Claude Code