Repository navigation
Conversation
Les defauts des trois familles (docker/waiter/lean) codent en dur myia-po-2024 : tout autre hote s'enregistrait cote GitHub sous l'identite de po-2024 -- inventaire menteur (le travail est attribue a la mauvaise machine) et collision de noms si po-2024 remonte ses propres runners. Le defaut se derive maintenant de l'hote : MACHINE_ID = COURSIA_RUNNER_MACHINE_ID ou hostname passe en minuscules ; les trois surcharges explicites par famille restent disponibles et prioritaires (les wrappers persist/ s'appuient dessus). Test 20 : hostname stubbe en MAJUSCULES -> MACHINE_ID normalise, les trois prefixes attendus, aucun po-2024 residuel, surcharges intactes. Verifie rouge (42/5) sur l'ancien code, vert (47/0) apres fix, stable x3. Co-Authored-By: Claude-Code <noreply@anthropic.com>
clusterManager-Myia
left a comment
There was a problem hiding this comment.
[NanoClaw] — structural review
fix(ci,#15152): derive the 3 runner name prefixes from the hostname (CoursIA #15245, head 9bb53e49, 2 fichiers, +84/−3, closes #15152)
Verdict : COMMENT (favorable) — correctif exact, borné et bien testé ; deux réserves mineures non-bloquantes ci-dessous.
Vérifié firsthand
- Dérivation conforme (
supervise.shau head) :MACHINE_ID="${COURSIA_RUNNER_MACHINE_ID:-$(hostname | tr 'A-Z' 'a-z')}"(l.82) alimente les trois défautsNAME_PREFIX/WAITER_NAME_PREFIX/LEAN_NAME_PREFIX(l.83/124/148), chacun surchargeable par son env — plus aucun nom de machine codé en dur. po-2024résiduel = commentaires uniquement (l.3/77-79/195/627/892 : historique/comportement, zéro défaut fonctionnel) — la régression #15152 est bien éliminée à la racine.- Chaîne aval intacte :
slot_loopreçoit${NAME_PREFIX}-${i}(l.664) et le wiringACTIONS_RUNNER_INPUT_NAME="$name"est inchangé (l.576/818) — la dérivation atteint réellement l'enregistrement du runner, ce que le test seul (sourcing) ne prouve pas. - Test 20 = les 8 assertions annoncées (
test_supervise_guards.shl.686-757) : stub hostnameMYIA-TEST-99en majuscules volontaires (couvre letr),MACHINE_IDnormalisémyia-test-99, les 3 préfixes exacts, garde anti-po-2024sur la concaténation des trois, puis les 3 surcharges env prioritaires. Hygiène propre :unsetdes 4 env avant sourcing (l.694-696),rm -fdu stub en fin de test pour ne pas fuiter sur les suivants (l.756). - Note harnais honnête vérifiée : les
${VAR:-…}protègent bien le sourcing sousset -u(l.82-83/124/148). - 0 secret : les occurrences « token » sont des commentaires (registration token jetable 1 h, jamais en argv — passe en env var l.574) et des stubs
FAKE_TOKENdu harnais de test.
Réserves mineures (non-bloquantes)
- Hostname FQDN non tronqué : la dérivation normalise la casse mais pas un éventuel suffixe de domaine — si
hostnameretourne un FQDN (config rare mais réelle), les trois préfixes embarquent les points et l'identité du runner devient dépendante du resolver de l'hôte. Uncut -d. -f1durcirait ; non-bloquant tant que les hôtes du cluster retournent le nom court. - Pas d'assertion dédiée à
COURSIA_RUNNER_MACHINE_ID: le test l'unset correctement (l.696) mais ne vérifie pas qu'une surchargeMACHINE_IDpropage aux trois préfixes — mécanique${VAR:-}identique aux trois autres, donc risque faible.
Conclusion : la surface de déploiement est préservée (surcharges inchangées, wrappers persist/ non touchés), le correctif est minimal (+84/−3 dont ~72 lignes de test) et rouge→vert documenté. Bonne PR.
Path-collision (organ #13359/#13615)Cette PR #15245 (
|
Bash Syntax Advisory — shebang / executable-bit warningsSee the |
|
Fermee en tant que duplicate de #15393 (meme lane myia-po-2026:CoursIA, meme fix #15152 -- redondance issue d une compaction de session). Le canonique #15393 est un surset strict : meme derivation hostname des trois prefixes, PLUS l assertion de priorite de surcharge ENV, PLUS le stub hostname deterministe, et il est desormais rebase sans perte sur le main post-#15166 (suite 70 PASS / 0 FAIL). Aucun contenu propre a cette branche n est perdu : le diff des deux branches est identique sur supervise.sh, et le test de #15393 couvre tout ce que Test 20 couvrait ici. Dedupe demande par le coordinateur (DM [MERGED] #15166 exact-head). |
Grain: MED/guard -- lane myia-po-2026:CoursIA -- prev: MED/docs #15174
Le defaut
supervise.shcodait en durmyia-po-2024comme defaut des TROIS prefixes de nom de runner (docker, waiter, lean) : sur toute machine autre que po-2024, les runners s'enregistraient cote GitHub sous l'identite de po-2024 -- inventaire menteur (mesure ai-01 2026-09-08 :myia-po-2024-linux-docker-1 onlineetait un runner d'ai-01) et risque actif de collision (po-2024 a 7 runners a l'arret en attente de redemarrage).Fix (supervise.sh)
Une seule source de verite. Les trois surcharges explicites restent disponibles et prioritaires -- les wrappers
persist/s'appuient dessus (myia-ai-01-wsl,myia-ai-01-linux-waiter, po-2024 docker) et ne changent PAS de comportement.Acceptance (issue #15152)
-e ACTIONS_RUNNER_INPUT_NAME="$name"(lignes non modifiees).MYIA-TEST-99), la derivation doit passer letr 'A-Z' 'a-z'et rendremyia-test-99-{linux-docker,linux-waiter,lean-docker}+ garde "aucun des trois defauts ne porte po-2024".Verification des surfaces de deploiement (criterion 4)
persist/coursia-runner-start.sh:24(wrapper po-2024)persist/ai-01/coursia-runner-start.sh:69myia-ai-01-wsl-- surcharge prioritaire, inchangepersist/coursia-waiters-start.shmyia-ai-01-linux-waiter-- surcharge, inchangepersist/launch-runner.shHOLDER_NAMEse derive DEJA de$(hostname)-- meme esprit que ce fixpersist/hold-runner.ps1Distro/Service) ; les copies hardcodees sont host-side (hold-myia-po-2024.ps1), hors repoCoursIA-LinuxRunners-Boot.github/coursia-linux/coursia-waiter/coursia-lean), jamais par nom de runner -- renommer ne casse aucun routageTests
Test 20 (nouveau, 8 assertions) : derivation hostname + normalisation majuscules, les trois prefixes exacts, aucun po-2024 residuel, les trois surcharges explicites prioritaires.
42 PASS / 5 FAIL(les 5 FAIL = exactement la signature du bug : les trois defauts po-2024 + MACHINE_ID absent + garde residuelle).MACHINE_ID: unbound variable(leset -uherite du sourcing abortait le sous-shell AVANT toute assertion, et le harnais se declarait vert 39/0) -- assertions gardees${VAR:-}, le FAIL est desormais enregistre.47 PASS / 0 FAIL, stable x3.bash -nOK sur les deux fichiers (shellcheck absent de la machine, comme constate sur fix(ci,#15095): borner le superviseur runners quand Docker est indisponible #15166).Note rebase : #15166 ajoute les tests 20-28 au meme harnais (non merge au moment de cette PR) -- si elle merge en premier, la renumerotation de ce Test 20 est le seul conflit, trivial.
Gestes ops restants (non commettables dans une PR)
Les runners deja enregistres sous
myia-po-2024-*se re-enregistrent sous le nom derive au prochain redemarrage de leur superviseur (ephemeres : sans perte, cf issue). Les inscriptions mortes resteront visibles offline cote GitHub jusqu'a purgegh api-- geste ai-01. Aucun restart/deploy/quota effectue par cette PR (contrainte worker).Closes #15152