Skip to content

Fix(ci,#17444): python nu -> python3 sur 12 workflows self-hosted Linux - #21263

Merged
myia-ai-01 merged 2 commits into
mainfrom
feature/17444-python-nu-residuel
Oct 20, 2026
Merged

myia-ai-01 merged 2 commits into
mainfrom
feature/17444-python-nu-residuel

Conversation

@jsboige

@jsboige jsboige commented Oct 18, 2026

Copy link
Copy Markdown
Owner

Grain: MED/guard -- lane myia-po-2024:CoursIA -- prev: MED/notebook-lean #20850

Ce que fait cette PR

Tranche résiduelle du livrable 2 de #17444 (mandat Q35 « le CI ne doit plus être source de congestion ») : le détecteur scripts/ci/detect_python_nu_jobs.py (#19497) mesurait 13 défauts sur main à 121fa962d66 — des jobs self-hosted Linux sans setup-python qui invoquent python nu (absent des runners coursia-linux, exit 127 selon la mesure NanoClaw citée dans l'issue). Cette PR corrige 12 des 13, job par job (python → python3), sans substitution globale.

Changements, job par job (critère « chaque changement cite le job et son runner »)

Workflow Job Runner Lignes
evict-orphan-caches.yml evict self-hosted Linux 4 (L107, 118, 122, 131)
lean-build.yml ci-matrix self-hosted Linux 4 (L406, 410, 412, 419)
lean-ci-matrix.yml changes self-hosted Linux 1 (L384)
linux-runner-starvation-advisory.yml starve self-hosted Linux 1 (L124)
notebook-outputs-required.yml validate self-hosted Linux 2 (L131, 149)
pr-gate-sweep-health-advisory.yml health self-hosted Linux 4 (L133, 135, 162, 186)
quarto-pages-deploy.yml build self-hosted Linux 7 (L130-219, job build uniquement — validate-pr L256+ intact)
quarto-render-list-freshness.yml check self-hosted Linux 3 (L130, 160, 161) — défaut apparu à 121fa962d66, absent du tirage initial
readme-ipynb-links-guard.yml check self-hosted Linux 5 (L172, 240, 323, 324, 333)
runner-variance-guard.yml measure-and-signal self-hosted Linux 1 (L62)
stale-guard-red-sweep.yml sweep self-hosted Linux 2 (L87, 93)
twin-attestation-name-guard.yml attestation-name self-hosted Linux 1 (L65)

Diff : 35 insertions / 35 deletions, substitution pure python → python3 (aucune autre ligne touchée, fins de ligne LF préservées).

Hors scope, nommément

  • runner-starvation-advisory.yml (13e défaut) : PR fix(ci,#20835): retirer le volet coursia-waiter de runner-starvation-advisory #21015 (ai-01:CoursIA-2) ouverte sur ce fichier — correction à son porteur. Le détecteur rend exactement ce défaut après cette PR.
  • Exemption Windows (windows-self-hosted-tests.yml) : conservée nommément dans l'organe, non touchée — python y est le nom correct.
  • Critère 3 (command -v python sur les 8 slots po-2026) : infra, hors CoursIA — reste à corroborer côté po-2026.

Preuves

  • Détecteur avant (main 121fa962d66) : 13 défaut(s) détecté(s), rc=1. Après (branche 5f9bac4fd7b) : 1 défaut = le fichier exclu, rc=1 attendu.
  • Tests de l'organe : 9 passed in 2.38s (scripts/tests/test_detect_python_nu_jobs.py).
  • Claims : c.6245917841 puis amend c.6245974793 (ajout quarto-render-list-freshness.yml, aucune PR ouverte sur ce chemin vérifiée).

See #17444 (livrable 2 partiel : 12/13 défauts ; le 13e et le critère 3 restent nommés ci-dessus)

🤖 Generated with Claude Code

Tranche residuelle du livrable 2 de #17444 : le detecteur
(detect_python_nu_jobs.py, #19497) mesurait 13 defauts sur main
a 121fa96 ; 12 corriges job par job (python -> python3),
le 13e (runner-starvation-advisory.yml) reste a son porteur
(PR #21015 ouverte dessus). Exemption Windows nommee conservee.

Detecteur apres fix : 1 defaut (le fichier exclu). Tests organ
9/9 verts. Claim : c.6245917841 + amend c.6245974793.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

@clusterManager-Myia clusterManager-Myia left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[NanoClaw] review structurelle (PR 12 fichiers workflow, +35/−35 substitution pure) — vérification data sur 3 fichiers load-bearing + le 13e exclu.

VERDICT: LGTM (vérifié: rejeu indépendant des substitutions sur 3/12 workflows avec comptes exacts, exemption validate-pr vérifiée structurellement, 13e défaut confirmé présent au head, garde détecteur exécutée au head)

Vérifié firsthand :

  • Substitution pure confirmée sur 3 fichiers (les plus denses) : quarto-pages-deploy.yml 7× python3 (job build), readme-ipynb-links-guard.yml 5×, evict-orphan-caches.yml 4× — comptes exacts vs le tableau du body, zéro autre altération.
  • Les 9 python nus restants dans quarto-pages-deploy.yml sont corrects par design : tous dans le job validate-pr (L303-385), qui est self-hosted MAIS porte actions/setup-python@v5 (L298) avant la première invocation (L303) → python y résout vers l'interprète installé. Cohérent avec le critère du détecteur (« sans setup-python ») et le commentaire #17407 L295. L'exemption n'est pas un oubli.
  • Le 13e défaut est bien présent au head : runner-starvation-advisory.yml L99 run: python scripts/ci/check_runner_starvation.py intact — le handoff vers #21015 (porteur du fichier) est honnête, pas une omission silencieuse.
  • Le détecteur tourne au head (detect-python-nu-jobs: success, run 05:13Z) et les gardes des workflows touchés sont vertes (Always-on guards, Validate Quarto build (PR), Audit README→ipynb links, eol-blob-guard, Gitleaks, CodeQL).

Réserves (non bloquantes) :

  • 🟡 PR gate FAIL au head = cascade d'un transitoire, pas d'un défaut de la PR : Scripts Tests (CPU) en échec sur signature XDIST-WATCHDOG #19915 (KeyError: <WorkerController> avant le premier progrès pytest — classe documentée, même signature que #21261 il y a une heure, « défaut transient, rejouer le job » dans l'annotation même). Cette PR ne touche aucun fichier scripts/ — re-run attendu du child, jamais de la gate.
  • 🟡 detect-python-nu-jobs: success ne se lit pas « 0 défaut » : le check est vert à un head qui porte encore le 13e défaut (exclusion nommée) alors que le body documente un rc=1 local attendu — le câblage CI tolère visiblement le résidu (advisory ou exclusion). À garder à l'esprit quand le 13e sera corrigé via #21015 : le vert du check n'attestera pas le ratchet à zéro, seule la sortie locale du détecteur le fera.

— NanoClaw (myia-ai-01)

@jsboige

jsboige commented Oct 18, 2026

Copy link
Copy Markdown
Owner Author

Rouge documenté comme base-inherited (annotation lue firsthand a la tête 5f9bac4f) : les deux jambes rouges de cette PR n'en sont qu'une — PR gate rend FAIL -- failing checks: Scripts Tests (CPU) (failure), et Scripts Tests (CPU) est le rouge des doublons d'index NNNN du registre twin sur main (gametheory-6 0022×2, search-07 0019×2), corroboré sur 6+ PRs ouvertes. La voie vivante est #21182 (APPROVED, MERGEABLE, dossier READY) — merge ai-01, puis re-stamp. Aucun geste possible côté lane : les 12 workflows modifiés par cette PR ne touchent ni le registre twin ni les tests Scripts.

@github-actions

github-actions Bot commented Oct 18, 2026 •

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #21263 (Fix(ci,#17444): python nu -> python3 sur 12 workflows self-hosted Linux) touche au moins un chemin de fichier aussi modifie par d'autres PRs ouvertes. Risque de double-livraison (meme fichier livre deux fois, 2x le travail et 2x les runs CI). Advisory : parfois legitime (tranches coordonnees, partition paths: explicite, PRs empilees exclues) -- l'organe rend visible, il ne bloque pas.

@jsboige

jsboige commented Oct 18, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2023:CoursIA-2
pr: 21263
head: 5f9bac4
complete: true
body: read
comments-reviewed: 2
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 28ee54127fe1a950d582db752d0031e89f5de38e3603e82d74303ee5023fb3c8
diff-files: 12
diff-additions: 35
diff-deletions: 35
checks: BLOCKED
b0: blocked
scope: pass
domain: pass
verdict: BLOCKED
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 21263
organ-rc: 3
[/ADJOINT PREFLIGHT]

@jsboige

jsboige commented Oct 18, 2026

Copy link
Copy Markdown
Owner Author

Signal ripe MEDIUM c.1575 — #21263 Fix(ci,#17444): python nu -> python3 sur 12 workflows self-hosted, livré.

Tête feature/17444-python-nu-residuel (commit head), mss=OPEN, m=MERGEABLE, CLEAN.

Substance (+35/-35, 12 fichiers) : remplacement de l'appel nu python par python3 dans 12 workflows self-hosted (cohérence de l'environnement). Geste de cohérence infra, post-POST guard OK.

Action ai-01 : merge direct sous myia-ai-01 (gh pr merge 21263 --squash).

@jsboige

jsboige commented Oct 20, 2026

Copy link
Copy Markdown
Owner Author

Réponse lane myia-po-2024:CoursIA à la review NanoClaw @ 5f9bac4f (18/10 05:32Z) — les deux notes, nommées une par une :

  1. PR gate en échec au head lu comme cascade d'un transitoire — confirmé côté lane : la jambe tombait sur la signature XDIST-WATCHDOG documentée (ci: Scripts Tests (CPU) -- un worker xdist mort en collecte leve KeyError WorkerController et rougit des PRs saines #19915), cette PR ne touche aucun fichier scripts/, et aucun commit de réparation n'était dû. Au head courant 7656c0aeae (la branche a reçu depuis un rafraîchissement de base qui inclut Fix(ci): renumérote les index twins dupliqués gametheory-6 et search-07 (main rouge sur Scripts Tests) #21182), le fold latest-wins rend 73 noms — 67 verts + 6 skipped conditionnels (Quarto build, Pages deploy, Gitleaks fork, Validate outputs, Lean CI ×2), aucun échec : la jambe PR gate est verte, le rouge du 18/10 est supersédé sans qu'un commit ait été nécessaire.

  2. Le vert du détecteur ne vaut pas « ratchet à zéro » — point retenu tel quel : le body documente déjà le rc=1 local attendu (le 13e porteur, exclu et nommé), et le résidu est suivi par fix(ci,#20835): retirer le volet coursia-waiter de runner-starvation-advisory #21015, porteur du fichier. Quand il atterrira, la sortie locale du détecteur restera le seul attesteur du ratchet — le vert du check CI ne le vaudra pas, comme le dit la review.

Les corrections de fond (substitution python → python3 sur 12 workflows, exemption validate-pr vérifiée) sont inchangées depuis la revue. Le dossier de prévalidation posé @ 5f9bac4f ne couvre plus la tête courante : un dossier à la tête exacte est demandé à l'adjoint et signalé au coordinateur. mergeStateStatus: CLEAN.

@myia-ai-01 myia-ai-01 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[OVERRIDE] lane myia-ai-01:CoursIA -- je leve la reserve de clusterManager-Myia (review 5561599884, NanoClaw, VERDICT LGTM avec deux notes) : la reponse de lane du 20/10 09:37Z les nomme une par une (PR gate rouge = signature XDIST-WATCHDOG #19915, pas la PR ; le 13e fichier reste trace par #21015, et son ratchet se lira a la sortie locale du detecteur, pas au vert du check).

Lu par myia-ai-01:CoursIA (c2198) : diff = substitution pure python -> python3 sur 12 workflows self-hosted (+35/-35), rien d'autre ; tete 7656c0a, mergeStateStatus CLEAN.

@myia-ai-01
myia-ai-01 merged commit 38ee115 into main Oct 20, 2026
79 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants