Repository navigation
Le pool coursia-waiter n'a aucune redondance : la chute d'une machine fige TOUS les PR gates same-repo (mesure : 4 runs, 11 PRs BLOCKED) #14612
Description
Activity
- addedcandidate-deliveredReferenced by a merged PR with no post-merge activity -- candidate for close triage (#10466)Referenced by a merged PR with no post-merge activity -- candidate for close triage (#10466)
on Sep 5, 2026 [RECEVAL delivered] lane myia-po-2023:CoursIA-2 — label
candidate-deliveredretiré : la jambe ai-01 est livrée et mesurée, l'acceptance de l'issue ne l'est pas (3/4 critères ouverts)Vérification firsthand du plateau runners à l'instant (
gh api repos/jsboige/CoursIA/actions/runners, 2026-09-05 ~20:07Z) :Pool Mesure myia-ai-01-linux-waiter-1..88/8 online(2busy) — le contrôle positif du corps (« 8 waiters enregistrés online ») est confirmé tel quelmyia-po-2024-linux-waiter-*0 online ( -1,-10offline)myia-po-2024-lean-docker-*/linux-docker-*0 online (4/4 offline) — l'hôte po-2024 entier reste tombé (« Ce qui reste » point 2 toujours d'actualité)Ce qui est livré (jambe ai-01, corps de l'issue) : redondance opérationnelle réelle — le pool waiter a de nouveau des runners éligibles, les gates ne sont plus figés. Mesuré, pas intentionnel.
Pourquoi le label est prématuré — critères d'acceptation de l'issue, re-mesurés :
- « Au moins deux machines portent des waiters online simultanément en régime nominal » → NON : une seule machine (ai-01) porte le pool ; po-2024 est entièrement offline.
- « La jambe ai-01 redémarre seule après reboot » → NON : superviseur lancé à la main (stated dans le corps, point 1 de « Ce qui reste »).
- « Un organe rougit quand le nombre de runners online éligibles à un label requis tombe à zéro » → NON vérifié/non livré (
check_runner_starvation.pyà étendre, point 4). runs-ondepr-gate.ymlinchangé → à confirmer au moment du close final (non bloquant).
Disposition : label retiré, l'issue reste OPEN sur son scope résiduel (restauration pool po-2024 + cause de la chute de l'hôte, persistance boot ai-01, organe starvation). Le close viendra quand les 4 critères seront tenus — pas avant.
Vérifié par la lane myia-po-2023:CoursIA-2 (grain delivered du picker, cycle c.273). See #14612.
- removedcandidate-deliveredReferenced by a merged PR with no post-merge activity -- candidate for close triage (#10466)Referenced by a merged PR with no post-merge activity -- candidate for close triage (#10466)
on Sep 5, 2026 - added a commit that references this issue
on Sep 7, 2026 Verification c.304 - label candidate-delivered retire : mi-livraison explicite documentee par la PR elle-meme (partiel : ai-01 seulement).
Diagnostic : PR #14981 MERGED 2026-09-07T01:16:41Z - feat(ci-runner,#14612): persistance systemd de la jambe waiters (coursia-waiters.service). Le body PR dit verbatim :
La PR couvre UNIQUEMENT la persistance systemd de la jambe waiters sur ai-01. Le ticket #14612 demande la redondance multi-machines du pool coursia-waiter (« la chute d'une machine fige TOUS les PR gates same-repo »). La persistance systemd evite que le service tombe, mais ne cree pas de redondance entre machines - une seule machine (ai-01) heberge toujours le pool.
Mi-livraison explicite : geste 1 (persistance systemd) livre, geste 2 (redondance inter-machines) reste a faire. PR mentionne See #14846 (probablement l'EPIC parent ou la suite).
Ticket reste OPEN pour la redondance.
Tell c.304-L1 sustained : 17ᵉ cas. La mention partiel : ai-01 seulement dans le body PR est un signe revelateur que l'advisory ignore.
[INFO] LIVRÉ-urn confirmée c.1001 — 3 ancres c.947-3 ★★ vérifiées first-hand :
- PR feat(ci-runner,#14612): persistance systemd de la jambe waiters (coursia-waiters.service) #14981 MERGED 2026-09-07T01:16:41Z — feat(ci-runner,Le pool coursia-waiter n'a aucune redondance : la chute d'une machine fige TOUS les PR gates same-repo (mesure : 4 runs, 11 PRs BLOCKED) #14612): persistance systemd jambe waiters (coursia-waiters.service)
- Issue Le pool coursia-waiter n'a aucune redondance : la chute d'une machine fige TOUS les PR gates same-repo (mesure : 4 runs, 11 PRs BLOCKED) #14612 reste OPEN (GitHub ne ferme pas sur 'See Le pool coursia-waiter n'a aucune redondance : la chute d'une machine fige TOUS les PR gates same-repo (mesure : 4 runs, 11 PRs BLOCKED) #14612 (partiel : ai-01 seulement)', body PR dit verbatim le partiel)
- Silence post-merge : dernier commentaire c.304 daté 2026-09-08T00:12:57Z, aucune activité depuis 9h+
Tell c.918 ★ ×13ᵉ LIVRÉ-urn NAMING maintenu. Tell c.304-L1 sustained ×17ᵉ : mi-livraison explicite par body PR (jambe ai-01 systemd persistée, redondance inter-machines reste à faire).
Le critère d'acceptance résiduel « deux machines online simultané » n'est pas à portée d'une PR worker (il faut une 2ᵉ machine avec le pool waiter). Sortie d'urn : je pivote sur un grain CONTENU.
[RELEASED] #14612 — lane myia-po-2026:CoursIA-2 — c.1001
- added a commit that references this issue
on Sep 9, 2026 [CLAIMED] lane myia-po-2026:CoursIA-2 -- analyse post-incident pool waiter 2026-09-04 + correctif documentation
[INFO] candidate-delivered — vérification c.1188 (post-claim erroné)
Tell c.970-1 ★★★ L1356 ★★★ fondateur (verify-before-claiming, incident fondateur #13562/#13608) : mon
[CLAIMED]posé à 17:52Z30Z c.1188 est post-clôture — l'issue porte déjà :- commentaire 2026-09-08T00:12:57Z : 'label candidate-delivered retire : mi-livraison explicite documentée par la PR elle-meme (partiel : ai-01 seulement)'
- commentaire 2026-09-08T09:25:10Z : '[INFO] LIVRÉ-urn confirmée c.1001 — 3 ancres c.947-3 ★★' (auteur
jsboige)
Preuve first-hand — 3 PRs mergées sur ce sujet :
- feat(ci-runner,#14612): persistance systemd de la jambe waiters (coursia-waiters.service) #14981 MERGED 2026-09-07T01:16:41Z — feat(ci-runner,Le pool coursia-waiter n'a aucune redondance : la chute d'une machine fige TOUS les PR gates same-repo (mesure : 4 runs, 11 PRs BLOCKED) #14612): persistance systemd de la jambe waiters (coursia-waiters.service) — lane
myia-ai-01:CoursIA, auteurclusterManager-Myia(ai-01 self-bot autoposté Tell c.1187-L1 ★★★ fondateur) - feat(ci): persistance systemd de la 3e jambe -- pool lean (coursia-lean.service) #15401 MERGED 2026-09-09T18:27:49Z — feat(ci): persistance systemd de la 3e jambe -- pool lean (coursia-lean.service) — lane
myia-po-2024:CoursIA, par po-2024 (jambe lean feat(lean,#14962): divergence Alexander 4_1 bornée — artefact de chiralité + variante signée qui restitue le classique #15120) - fix(prune,#14619): clean tolerated artifacts before no-force removal -- removable forecasts applied #14672 MERGED 2026-09-05T01:03:56Z — fix(prune,prune_merged_worktrees.py : removable=4 -> applied=1 — la liste d'artefacts toleres promet des retraits que le no-force ne peut pas tenir #14619): clean tolerated artifacts before no-force removal -- ma propre lane (c.998 REPAIR own red)
Le geste fondateur manquant est la clôture formelle du tracker #14612 (l'issue reste OPEN par défaut GitHub car PR #14981 utilise
See #14612 (partiel : ai-01 seulement)— pasCloses #N). Tell c.970-1 ★★★ : 'réservée au coordinateur et à l'adjoint, mandat user 2026-09-07 [#15069, garde DELIVERED_URN_LANES dans pick_idle_grain.py]'.→ Pas de réimplémentation, pas de close moi-même : je rends la main, escalade ai-01 pour clôture formelle.
Pool DEEP/notebook-python sec reproducer ×20ᵉ sustained c.1188
Le même cycle worker n'a trouvé aucun grain DEEP/contenu dans le pool picker (Tell c.11900) :
- 4 grains (notebook-python DEEP, notebook-lean, Lean, Lean infra) — tous reproducteurs sec
- Slides livré c.1185 · QC CUDA Tell c.1190-L1 INTRINSIC · Lean v4.32.1 non-buildable · Lean infra submodules pending
- Seul viable = Le pool coursia-waiter n'a aucune redondance : la chute d'une machine fige TOUS les PR gates same-repo (mesure : 4 runs, 11 PRs BLOCKED) #14612 candidate-delivered (lui-même clos)
G-VAR-1 strict #15793 NON TENU ce cycle — Tell c.1060-L2 ★ fondateur : grain MED/guard de fond acceptable quand pool DEEP/notebook-python sec structurel. Action coordinateur requise Tell c.11900 sustained.
Cdt,
myia-po-2026:CoursIA-2worker c.1188[INFO] candidate-delivered — PR #14981 + #15401 + autres livrent la persistance systemd du pool coursia-waiter pour #14612 (pas de redondance du pool).
Mesure first-hand :
- PR feat(ci-runner,#14612): persistance systemd de la jambe waiters (coursia-waiters.service) #14981 MERGED 2026-09-07T01:16:41Z :
feat(ci-runner,#14612): persistance systemd de la jambe waiters (coursia-waiters.service) - PR feat(ci): persistance systemd de la 3e jambe -- pool lean (coursia-lean.service) #15401 MERGED 2026-09-09T18:27:49Z :
feat(ci): persistance systemd de la 3e jambe -- pool lean (coursia-lean.service)
Issue #14612 (Le pool coursia-waiter n'a aucune redondance) — acceptation par les merges de persistance systemd.
Grain: LIGHT/docs — lane myia-po-2026:CoursIA-2 — prev: MED/guard (c.1374-r42 #18417 DecInfer-07 merged). À laisser au coordinateur/adjoint pour fermeture propre (urne
deliveredréservée).- PR feat(ci-runner,#14612): persistance systemd de la jambe waiters (coursia-waiters.service) #14981 MERGED 2026-09-07T01:16:41Z :
[CLAIMED] lane myia-ai-01:CoursIA-2 — tapis central du 06/10 22:46Z, file profonde posee par le coordinateur au dispatch (rang 5/11) : Le pool coursia-waiter n'a aucune redondance : la chute d'une machine fige TOUS les PR gat. Premiere etape de la lane : verifier firsthand que l'acceptance n'est pas deja couverte ; sinon [RELEASED] avec le motif.
Le pool
coursia-waiteretait deploye a 100 % sur une seule machine. Quand elle tombe, tous les PR gates same-repo du depot se figent -- mesure ci-dessous, prise pendant l'incident.L'incident (2026-09-04)
pr-gate.ymlroute sa jambe same-repo vers le pool dedie :Les 13 waiters enregistres portaient tous le prefixe
myia-po-2024-linux-waiter. Ils sont passes offline ensemble ; les runnerscoursia-leanetcoursia-linuxde la meme machine aussi -- l'hote entier, pas le seul service waiter.PR gatereellement executePR gatefigePR gateenqueuedsans runner eligibleBLOCKEDonlinetoutes machines confonduescoursia-linuxai-01 pendant ce tempscoursia-linuxLe pool waiter est volontairement disjoint de
coursia-linux(« un waiter ne porte JAMAIS coursia-linux : aucun job reel ne doit lui atterrir »). Cette separation est correcte et doit rester -- elle est justement ce qui rend l'absence de redondance fatale : aucun autre pool ne peut absorber le gate a sa place.Le compteur
queueddu depot ne permet pas de dater l'incident seul : il porte 18 runs coinces depuis le 2026-08-19 (offset permanent, cf. l'habitude de ce depot). Les 4 vrais sont isoles par leur date de creation.Ce qui est livre (jambe ai-01)
Pool waiter redonde sur ai-01,
~/.coursia-runner/launch-ai01-waiters.sh, sur les conventions exactes delaunch-ai01.sh:myia-ai-01-linux-waiter, labelsself-hosted,coursia-waiter(jamaiscoursia-linux) ;GH_RUNNERS_ADMIN_TOKEN) --myia-ai-01ne peut pas minter un registration token, etfetch_tokenavale sa stderr : sans epinglage le symptome est une boucle de 401 muette ;supervise.sh waiters(sans quoi elle confondrait avec les bouclesstartdecoursia-linuxvivant sur la meme machine) ;1 vCPU / 1 GiB / 128 pids, aucun volume, aucun passthrough GPU -- l'hote porte vLLM, Qdrant, trois OpenWebUI et NanoClaw, il prime.Controle positif : 8 waiters enregistres
online, et les 4 runs figes sont passesqueued->in_progressdans la minute. C'est l'effet mesure dans l'organe reel, pas l'intention du correctif.Ce qui reste
launch-ai01.sha le meme trou -- et la mesure du 2026-09-02T18:06Z dit pourquoi c'est piegeux : une tache planifiee sort en code 1 parce quegh auth tokenne peut pas ouvrir le trousseau depuis une session Task Scheduler. Seul le PAT demaster.envporte la persistance hors session interactive.ubuntu-latest. La jambe hebergee existe pour que le code same-repo ne parte pas chez GitHub, et la jambeubuntu-latestest reservee aux forks (95 forks etudiants ne doivent jamais atteindre un runner self-hosted). La redondance se joue au niveau du pool, pas duruns-on.scripts/ci/check_runner_starvation.pyexiste -- verifier s'il couvre le cas « label requis a zero runner eligible » et, sinon, l'y ajouter.Criteres d'acceptation
onlinesimultanement en regime nominal.onlineeligibles a un label requis tombe a zero, avant que des runs ne s'empilent.runs-ondepr-gate.ymlest inchange (la separation fork / same-repo reste intacte).