Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 12 additions & 1 deletion .github/workflows/always-on-guards-body.yml
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,18 @@ jobs:
name: "Always-on guards -- body"
# Meme pool, meme garde anti-fork, meme routage que le job de contenu
# (cf. always-on-guards.yml pour la mesure qui a fixe ce routage).
runs-on: [self-hosted, coursia-ephemeral, coursia-linux]
#
# 2026-10-27 (mesure ai-01) : retour sur `ubuntu-latest`, comme l'ecrit la
# note de rollback du job de contenu et comme le fait la politique
# « Q35 etape 2 » (#17397) portee par
# `scripts/ci/audit_self_hosted_needs.py` : cet organe certifie ce
# workflow comme n'ayant besoin de RIEN qui n'existe que sur le parc local
# (les cinq organes de body sont du bash + python stdlib).
# Motif du deplacement : le parc local est sature PAR SES CHECKOUTS
# (mesure 27/10 00:45Z : 11 des 12 slots occupes dans `actions/checkout`,
# 614 runs en file, 6 runs termines en 20 min). La garde anti-fork est
# CONSERVEE : aucun code de fork ne change de surface.
runs-on: ubuntu-latest
if: github.event.pull_request.head.repo.full_name == null || github.event.pull_request.head.repo.full_name == github.repository
# Les cinq organes de body coutent quelques secondes : le plafond n'est
# qu'un garde-fou contre un blocage de `gh`.
Expand Down
19 changes: 18 additions & 1 deletion .github/workflows/always-on-guards.yml
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,24 @@ jobs:
# fait tourner `actions/setup-python@v5` sur CE pool -- run
# 33691615314, runner myia-ai-01-linux-docker-6, success en 34 s.
# Retour arriere = remettre `runs-on: ubuntu-latest` + retirer le `if:`.
runs-on: [self-hosted, coursia-ephemeral, coursia-linux]
#
# 2026-10-27 (mesure ai-01) : ce job revient sur `ubuntu-latest`, comme
# l'ecrit deja la note de rollback ci-dessus, et comme le fait la
# politique « Q35 etape 2 » du depot (#17397) que porte
# `scripts/ci/audit_self_hosted_needs.py` : cet organe classe
# 58 workflows declenches par `pull_request` comme n'ayant besoin de
# RIEN qui n'existe que sur le parc local.
#
# Pourquoi maintenant : le parc local est sature PAR SES CHECKOUTS.
# Mesure du 27/10 00:45Z : 11 des 12 slots occupes etaient dans une
# etape `actions/checkout` (~29 min pour recloner 220k objets), 614
# runs en file, 6 runs termines en 20 min, et les 16 slots
# `coursia-waiter` (porteurs du PR gate) inoccupes. Ce job n'a aucun
# besoin local : il installe lui-meme ses dependances
# (`pip install pyyaml Pillow pytest`) et n'execute que des organes
# bash/python. La garde anti-fork est CONSERVEE : aucun code de fork
# ne change de surface.
runs-on: ubuntu-latest

if: github.event.pull_request.head.repo.full_name == null || github.event.pull_request.head.repo.full_name == github.repository
timeout-minutes: 25
Expand Down
30 changes: 24 additions & 6 deletions scripts/ci/check_self_hosted_runner_policy.py
Original file line number Diff line number Diff line change
Expand Up @@ -86,12 +86,14 @@
# tranche 3d (#14283) : premier consommateur GitHub-hosted du depot une
# fois secret-scan bascule -- 2650 runs same-repo du 2026-08-28 au
# 2026-09-02, timeout 25 min, aucun filtre `paths:`.
"always-on-guards.yml",
# #22331 : le job de body est la moitie extraite de always-on-guards.yml
# (memes organes, meme pool, meme garde anti-fork, meme routage). Le laisser
# sur GitHub-hosted rendrait la famine de file pire qu'avant, puisque son
# declencheur `edited` est justement celui qui produit les re-declenchements.
"always-on-guards-body.yml",
#
# 2026-10-27 (PR #22820, lane myia-ai-01:CoursIA) : always-on-guards.yml et
# always-on-guards-body.yml MIGRENT vers ubuntu-latest par Q35 etape 2
# (#17397) -- l'organe `scripts/ci/audit_self_hosted_needs.py` les certifie
# sans aucun besoin local, et le parc local etait sature PAR SES CHECKOUTS
# (mesure 00:45Z : 11 des 12 slots occupes dans `actions/checkout`). Sortis
# de SELF_HOSTED_WORKFLOW_ALLOWLIST dans le meme commit. Precedent :
# repeated-prose-advisory.yml (#17443).
"pr-gate-stale-sweep.yml",
"windows-self-hosted-tests.yml",
"linux-self-hosted-tests.yml",
Expand Down Expand Up @@ -337,6 +339,22 @@
# (#17397, PR dediee myia-ai-01:CoursIA-2 c.206, 5 workflows
# agregateurs, 2026-10-06). Sorti de SELF_HOSTED_WORKFLOW_ALLOWLIST
# dans le meme commit. Precedent : #17443 (po-2023, 4 agregateurs).
# scripts-tests.yml : RESTE sur le parc local (PR #22820, lane
# myia-ai-01:CoursIA, 2026-10-27). La migration vers ubuntu-latest a ete
# tentee puis ANNULEE sur une MESURE, pas sur une preference :
# `Scripts Tests (CPU)` y echoue (run 40427418743 -- 4 echecs sur 20950
# tests). Les deux causes sont couplees a la FORME du runner :
# (a) `scripts/lean/tests/test_lean_exec.py` -- `compute_granted` derive
# `jobs_cpu` de `os.cpu_count()` (2 sur ubuntu-latest, >= 4 sur le
# parc local) ; le test exige `granted == 4` ;
# (b) `scripts/tests/test_setup_shared_mathlib_scan.py` -- le script
# `scripts/lean/setup_shared_mathlib.ps1` convertit la racine du
# depot en chemins Windows (`$RepoRoot -replace '/', '\'`), ce qui
# invalide `Test-Path` sur un runner POSIX -> « Aucun projet Lake
# avec mathlib trouve. ».
# Un job dont la suite de tests est couplee a la forme de l'hote a un
# besoin local REEL : l'organe `audit_self_hosted_needs.py` ne le voit pas
# (il classifie le workflow, pas la suite qu'il execute).
"scripts-tests.yml",
"series-naming-gate.yml",
# registre TRANCHE14 (issue #16762, owner myia-po-2023:CoursIA) : meme
Expand Down
Loading