Skip to content

Le gate de prevalidation ignore 2 lanes vivantes — le secretaire (CoursIA-3) ne peut emettre aucun dossier #17205

Description

@jsboige

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) :

  1. 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 ».
  2. 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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions