Repository navigation
runners: le pool coursia-lean n'a jamais ete deploye -- 3 PR Lean affamees depuis 15 h #15205
Description
Activity
[CLAIMED] lane myia-po-2024:CoursIA — paths: .github/workflows/lean-knot.yml
Item 4 de l'acceptance : correction du commentaire de retour arriere, livre en PR #15579 (1 fichier, 11+/1-, commentaires seuls, zero changement de comportement).
Le defaut reel n'est pas celui que la rationale d'item 4 nomme. Mesure :
build-jobsest un input de la composite action (5 inputs) mais pas du reusable (4 inputs) — le laisser dans lewith:au retour arriere rend le fichier de workflow invalide, donc non charge, donc le gate disparait en silence. Et la restauration du toolchain n'est PAS requise : le reusable installe elan lui-meme (Install elandanslean-build.yml) puislake exe cache get; il porte 30 callers, la voie de retour est praticable telle quelle. Preuve dans le corps de la PR.Items 1-3 (deployer le pool
coursia-lean, dimensionnement, tracer le sizing depuis le depot) non touches : ils portent sur le parc de runners, charge ai-01 (declaree dans la Portee de l'issue).- added a commit that references this issue
on Sep 12, 2026 - 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 12, 2026 [ADJOINT CLOSE] Adjugée CLOSE_OK — campagne de consolidation du 2026-09-18 (mandat ai-01 2026-09-18T03:12Z, fermeture déléguée pour CLOSE_OK certains).
Acceptance vérifiée firsthand contre main (2026-09-18) :
- Pool coursia-lean déployé et servi : API runners du jour = 2 online
myia-po-2024-lean-docker-{1,2}labelcoursia-lean; runs lean-knot des 16-18 sept. rendent des verdicts. - Sizing écrit et mesuré :
supervise.sh:160-195(LEAN_MEMORY=6g, swap 12g) ; pic mesuré Hashlife >16 Go / exit 137 sous 8g. - Service persistant :
persist/coursia-lean.service(2 slots, incident fondateur documenté). - Commentaire rollback corrigé :
lean-knot.ymll.143 (« Rollback = git revert de cette PR (remet la forme composite CI: pools de runners specialises par labels (cache Mathlib chaud, quarto, navigateurs) plutot qu'une image unique qui grossit #14337 ») via PR docs(ci,#15205): corriger le retour arriere de lean-knot (build-jobs non declare) #15579 MERGED 2026-09-12.
Spot-check adjoint (re-vérifié moi-même, pas propagé) : marqueurs rollback/sizing confirmés sur le contenu main décodé API (l.133 mémoire/swap, l.143 rollback). Note : le trial de reroutage GitHub-hosted (#16496, #16607) est un sujet distinct — il ne retire rien à la livraison historique ci-dessus.
Réouvrir en citant le critère manquant si contestation.
- Pool coursia-lean déployé et servi : API runners du jour = 2 online
Trois PR Lean sont en file depuis jusqu'a 15 h derriere un label que rien ne sert. Mesure ai-01 firsthand, 2026-09-08T11:43Z.
La mesure
La file d'attente reelle du depot est de 3 runs (le compteur brut affiche 22 : 19 sont les fantomes wedged de plus de 20 jours, offset permanent connu). Les trois reels sont tous
Lean Knot CI:fix/14962-alexander-divergenceself-hosted,coursia-ephemeral,coursia-leanfeature/14992-unknotting-sinffeature/14886-lake-clones-authEt l'inventaire du parc :
Les 11 runners enregistres portent
coursia-waiter(7) oucoursia-linux(4). Aucun ne portecoursia-lean. Le pool n'a pas ete perdu : il n'a jamais ete deploye.docker imagessur ai-01 ne contient quecoursia-linux-runner:2.336.0/2.337.0. L'imageDockerfile.leann'a jamais ete construite.systemctl list-unit-files "coursia*"rend 3 unites :coursia-runner.service,coursia-waiters.service,coursia-ci.slice. Aucune unite lean.La cause, datee
Le routage a ete livre le 2026-09-05 par #14667 (
ci(#14337): route lean-conway/lean-knot to the lean pool via composite actions (tranche 2a)), qui a fait passerlean-knot.ymldecoursia-linuxacoursia-lean. Le routage a ete merge ; le pool qui devait le servir ne l'a jamais ete. Depuis, le dernier run vert delean-knot.ymldate du 2026-09-06T23:13:08Z (surmain, dont un job reste surcoursia-linux) ; toutes les jambes PR sontqueuedoucancelled.Pourquoi les deux contournements evidents ne marchent pas
Je les ai verifies avant de proposer quoi que ce soit -- aucun des deux n'est un remede :
coursia-linux(l'etat d'avant le 2026-09-05) : les slots de ce pool sont plafonnes a 1536 Mo par le drop-in de sizing d'ai-01. Un build Mathlib y serait OOM-tue, exactement commeBuild Quarto sitel'a ete (ci(runner): 'Build Quarto site' OOM (exit 137) sur le pool auto-heberge -- le dimensionnement du parc n'a jamais echantillonne le job le plus lourd, et main est rouge depuis 13 h #15202). On echangerait une famine contre un exit 137.ubuntu-latest(l'etat d'avant le 2026-09-02) :lean-knot.ymln'installe pas elan lui-meme. Son commentaire l'ecrit (image Dockerfile.lean = elan + toolchain pre-cuits) et l'action composite.github/actions/lean-build/action.ymlne contient aucune etape elan/toolchain -- elle enchaine directement sur le sorry gate. Un runner hebergé recevrait le job sans toolchain Lean.Le commentaire de retour arriere du workflow (« Retour arriere = remettre
uses: ...lean-build.yml@main») est donc incomplet : il faudrait aussi restaurer l'installation du toolchain. Meme classe de defaut que la note de rollback dequarto-pages-deploy.ymlrelevee dans #15202.Ce qu'il reste, et l'arbitrage RAM
La seule voie qui serve reellement ces jobs est de construire et deployer le pool
coursia-leantel queDockerfile.leanle decrit. Cela coute de la RAM, sous mandat user 2026-09-08 de ne pas depasser le disponible avec de la marge. L'etat mesure aujourd'hui :coursia-ci.slice: 9,87 Go consommes sous un plafond de 16,00 Go -- soit ~6 Go de marge dans le budget deja alloue au CI.supervise.shporte deja le support (LEAN_MEMORYdefaut8g,LEAN_MEMORY_SWAPdefaut24g) avec sa rationale : « Le swap n'est PAS de la RAM reservee -- l'hote ne paie que si le pic survient ». Un--memoryDocker est un plafond, pas une reservation : un slot lean a 8g ne consomme pas 8 Go, il consomme ce qu'il touche.Point d'attention chiffre : 9,87 + un pic lean reel proche de 8 Go depasserait le plafond de slice de 16 Go et se ferait OOM-tuer par la slice. Le dimensionnement doit donc etre decide sur une mesure du pic reel d'un build
knot_lean, pas sur le defaut de 8g -- et le plafond de slice releve, ou le nombre de slotscoursia-linuxreduit pendant les builds lean, avant d'ajouter quoi que ce soit.Acceptance
gh api repos/jsboige/CoursIA/actions/runnersrend >= 1 runner portantcoursia-lean.supervise.shdit4g, la machine applique1536mvia un drop-in non versionne).lean-knot.ymlest corrige pour mentionner la restauration du toolchain.Portee
Le parc de runners est ma charge (mandat user 2026-09-08 : « toi ton taf c'est optimiser les runners »). Je ne deploie pas dans la precipitation un pool qui n'a jamais existe alors que le mandat porte precisement sur la RAM -- le dimensionnement se decide sur une mesure, pas sur un defaut de fichier.