Repository navigation
Fix(ci,#22965): le geste heal-worktree sur les 8 derniers jobs sparse du pool a _work persistant (tranche 2/2) - #24606
Conversation
Fix(ci,#22965): le geste heal-worktree sur 8 jobs sparse du pool a _work persistant (tranche 2/2) Suite de #24604 (tranche 1/2). Meme bloc de reference, meme forme canonique : sha256 = 80dd6f5b82a732c7099d6225a13017b576b9b3036935b472177440b3a80a25ae (1905 caracteres, 28 lignes). Fichiers : slides-composition-pr-relay, stale-base-warning, svg-broken-geometry-gate, svg-decimal-comma-gate, svg-empty-display-gate, svg-offscreen-flat-gate, translation-guard, unique-check-run-names-guard. Le dernier (unique-check-run-names-guard) portait DEJA le step `heal-worktree`, byte-identique, mais sans le bloc de commentaire qui explique le mode de defaillance : seul ce commentaire a ete ajoute (+12 lignes). Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
|
G-VAR-2 light cap reached (advisory, non bloquant). |
myia-ai-01
left a comment
There was a problem hiding this comment.
Lu (harnais .github/, mon perimetre). Les 8 insertions du step « Restore the warm work tree before the sparse checkout » sont identiques, ligne a ligne, au bloc canonique de harness-coauthor-guard.yml sur main (16 lignes). Chacune precede l'unique actions/checkout de son job, et aucun checkout ne la devance. Les 8 fichiers se chargent en YAML. unique-check-run-names-guard.yml portait deja le step : seul le commentaire s'ajoute. Le geste est inerte tant que CI_OVERFLOW_LOCAL vaut false, comme le body le dit. Approuve.
Path-collision (organ #13359/#13615)Cette PR #24606 (
|
…erstice du bloc heal Le garde `scripts/tests/test_heal_worktree_action.py` extrait le corps du soin (de la ligne `- name: Restore the warm work tree ...` jusqu'a l'etape suivante) et l'exige byte-identique au corps du script. Tout ce qui se trouve ENTRE le bloc `run: |` et l'etape suivante est avale par l'extraction : les blocs de commentaires qui documentaient l'etape `Checkout` rendaient le corps non conforme, et la garde rouge (le script "a diverge"). Les commentaires sont deplaces DANS l'etape qu'ils documentent, juste apres sa ligne d'en-tete -- l'information est conservee, l'interstice est vide. Garde : `python -m pytest scripts/tests/test_heal_worktree_action.py` -> 7 passed. Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
|
[ADJOINT PREFLIGHT] schema: 1 lane: myia-po-2028:CoursIA-3 pr: 24606 head: 01887d0 complete: true body: read comments-reviewed: 2 reviews-reviewed: 1 threads-reviewed: 0 threads-unresolved: 0 surfaces-sha256: dac43c256e00c76548a78628a340b78134fdf37facfbe47654fc71545da947d2 diff-files: 8 diff-additions: 215 diff-deletions: 7 checks: latest-wins-green b0: clear scope: pass domain: pass verdict: READY organ: check_adjoint_prevalidation.py organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 24606 organ-rc: 0 [/ADJOINT PREFLIGHT] |
myia-ai-01
left a comment
There was a problem hiding this comment.
Delta depuis mon APPROVE de 08:54Z relu : un seul commit, qui deplace la ligne name/uses du checkout au-dessus du bloc de commentaires (commentaires YAML, semantique inchangee). B.0 rc=0, dossier READY du secretaire a cette tete. Approbation a la tete exacte 01887d0.
Grain: MED/guard — lane myia-ai-01:CoursIA-2 — prev: MED/guard #24604
Tranche 2/2 de #22965 : le geste
heal-worktreeest repris verbatim, avant leactions/checkoutsparse, dans les 8 workflows restants du périmètre.1. Les 8 jobs de cette tranche
runs-onslides-composition-pr-relay.ymlslides-composition-pr-relayvars.CI_OVERFLOW_LOCAL == 'true')false), nécessaire quand elle repasse àtruestale-base-warning.ymlcheck-base-agecoursia-linuxsvg-broken-geometry-gate.ymlsvg-broken-geometrycoursia-linuxsvg-decimal-comma-gate.ymlsvg-decimal-commacoursia-linuxsvg-empty-display-gate.ymlsvg-empty-displaycoursia-linuxsvg-offscreen-flat-gate.ymlsvg-offscreen-flatcoursia-linuxtranslation-guard.ymlguardcoursia-linuxunique-check-run-names-guard.ymlcheck-unique-names-requiredvars.CI_OVERFLOW_LOCAL == 'true')trueÉtat mesuré de
CI_OVERFLOW_LOCAL:false(created_at2026-10-27T11:04:32Z,updated_at2026-11-04T04:08:51Z — la variable a été basculée àfalseaujourd'hui). Les deux jobs hybrides aboutissent donc aujourd'hui surubuntu-latest(hébergé, VM neuve) : le geste y est inerte en l'état, et devient nécessaire dès que la variable repasse àtrue. Il est posé quand même — c'est le même cas que les trois hybrides de #22931.Le critère de couverture reste celui du corps de l'issue : (a)
runs-onpouvant aboutir sur un pool au volume_workpersistant (coursia-linux;scripts/ci/docker/linux-runner/persist/po-2024/create-persist-slots.sh:67,WORK_MOUNT="/home/runner/_work", volumecoursia-runner-work-<slot>;.../po-2026/pool.sh,keep_work/restore_work) et (b) unactions/checkoutavecsparse-checkout. Sans le volume, chaque job repart d'un_workvide et le mode de défaillance de #14385 est structurellement impossible.2.
unique-check-run-names-guard.yml: le step y était déjàCe fichier portait déjà le step
heal-worktree, byte-identique à la référence (traitement duprobe git statusmuet inclus) — mais sans le bloc de commentaire de 12 lignes qui documente le mode de défaillance (git checkout --force -Bqui refuse un carnet « not uptodate »,apply_sparse_checkout,WARNING_SPARSE_NOT_UPTODATE_FILE, git 2.43.0). Seule cette partie commentaire a été ajoutée (+12 lignes) : le step, lui, n'est pas touché.Ce qui compte pour la finalisation du périmètre de #22965 : les 15 jobs du critère (16 dans le corps de l'issue, moins
harness-coauthor-guardqui portait déjà le bloc surmain) portent désormais le bloc complet — step et commentaire.3. Le bloc : forme canonique et sha256
80dd6f5b82a732c7099d6225a13017b576b9b3036935b472177440b3a80a25aeContrôle appliqué aux 8 fichiers : recherche verbatim du bloc de référence réindenté, occurrence unique, position antérieure au
uses: actions/checkout— 8/8 OK.Le bloc est inséré juste avant le step
Checkout, et le bloc de commentaires qui décrit lesparse-checkoutest déplacé à l'intérieur de ce step (juste après sa ligne d'en-tête).Pourquoi ce déplacement : le garde d'anti-divergence
scripts/tests/test_heal_worktree_action.pyextrait le corps du soin — de la ligne- name: Restore the warm work tree ...jusqu'à l'étape suivante — et exige qu'il soit byte-identique au corps du script. Tout ce qui se trouve entre lerun: |du soin et l'étape suivante est avolé par l'extraction : le bloc de commentaires resté dans cet interstice rendait le corps non conforme (5 puis 19 lignes surnuméraires) et la garde rouge. L'information n'est pas perdue : elle est attachée à l'étape qu'elle décrit.4. Acceptation
actions/checkout, bloc byte-identique à celui de Fix(ci,#22722): restaurer l'arbre du work dir chaud avant le checkout sparse #22931 (sha256 publié ci-dessus) ;python scripts/ci/check_self_hosted_runner_policy.py --check --workflows-dir .github/workflows→ rc=0 ;python scripts/ci/check_unique_check_run_names.py→ rc=0 ;yaml.safe_load) ;python -m pytest scripts/tests/test_heal_worktree_action.py→ 7 passed (le corps extrait de chacune des copies du geste est byte-identique au corps du script) ;CI_OVERFLOW_LOCAL) ;slides-composition-pr-relay.yml,stale-base-warning.yml,svg-broken-geometry-gate.yml,svg-decimal-comma-gate.yml,svg-empty-display-gate.yml,svg-offscreen-flat-gate.yml,translation-guard.yml,unique-check-run-names-guard.yml(claim[CLAIMED] lane myia-ai-01:CoursIA-2 -- paths: .github/workflows/**posé sur Fix(ci,#22722): etendre le heal-worktree aux 16 jobs sparse du pool a _work persistant #22965 au dispatch ; la tranche 1/2 est Fix(ci,#22965): le geste heal-worktree sur 7 jobs sparse du pool a _work persistant (tranche 1/2) #24604, fichiers disjoints).5. Tier
MED/guard: le critère a été re-vérifié job par job (forme duruns-on, présence effective dusparse-checkout, couverture déjà posée) et la vérification a changé le périmètre (16 → 15 jobs ;unique-check-run-names-guarddéjà couvert pour le step). La classe est bornée et mesurée — c'est sa dernière tranche.Closes #22965
🤖 Generated with Claude Code