Skip to content

docs(runners,#16654): contrôles A2/A3 du cache d'actions mesurés sur jobs réels — enrichissement réfuté - #18942

Merged
myia-ai-01 merged 1 commit into
mainfrom
docs/16654-seed-a23-preuves
Oct 3, 2026
Merged

myia-ai-01 merged 1 commit into
mainfrom
docs/16654-seed-a23-preuves

Conversation

@jsboige

@jsboige jsboige commented Oct 3, 2026

Copy link
Copy Markdown
Owner

Grain: MED/tooling — lane myia-po-2023:CoursIA — prev: MED/docs #18935

Ce que cette PR apporte

Les contrôles A2/A3 de #16654 (fille de #14853, laissés ouverts par #15990) : la validation du cache d'archives d'actions embarqué sur des jobs réels, pas seulement sur le contenu de l'image. Une section factuelle entre dans docs/ci/self-hosted-runners.md ; les preuves brutes sont citées dedans (diags runner + run/job IDs GitHub, consultables).

Méthode — image linux-runner reconstruite localement (seed 11 archives, setup-python à a26af69b…, le SHA même de la preuve A1 de #15990) ; deux jobs réels exécutés dessus via un slot éphémère à label unique seed-a23 (enregistrement ACTIONS_RUNNER_INPUT_*, désenregistrement natif après un job ; aucun job de flotte peut atterrir sur ce label, la flotte po-2024 n'est pas touchée). Run 37093241932, jobs 111117851523 (a2-hit) et 111117939237 (a3-miss), tous deux succès.

Résultats mesurés :

contrôle preuve (diag runner /opt/runner/_diag/Worker_*.log, INFO) cache après job
A2 hit (setup-python@<SHA seedé>) Found action archive '…/actions_setup-python/a26af69….tar.gz' in cache directory — zéro requête codeload, zéro « Save archive » byte-identique à la baseline
A3 miss (setup-java@v4, absent du seed) cache consulté, non trouvé → Save archive 'https://codeload.github.com/actions/setup-java/tar.gz/cf277c60…' → HTTP OK ~1 s inchangé

Finding structurel — le « cache enrichi » attendu par l'issue est réfuté : sur miss, l'archive atterrit dans _work/_actions/_temp_<guid>/, jamais dans le cache. ACTIONS_RUNNER_ACTION_ARCHIVE_CACHE est read-only au runtime ; seule l'image y écrit (au build). Conséquence : une action absente du seed se télécharge à chaque job — le garde zéro-trou n'a pas de complément runtime possible, il est l'unique barrière.

Pièges rencontrés et refermés dans la section : (1) le libellé « Download action repository » du journal de job apparaît même sur hit — la preuve se lit dans le diag runner, pas dans le job log ; (2) --volumes-from sur un conteneur mort ne voit pas sa couche RW (le cache n'est pas un volume) — la mesure juste passe par docker cp.

Les cinq points de review

  1. Scope réel — un fichier (docs/ci/self-hosted-runners.md), une section additive après le « Résiduel honnête » qu'elle referme explicitement. Le workflow de contrôle vit sur branche jetable (supprimée après capture) : le garde seed interdit setup-java sur main par design — c'est le contrôle négatif lui-même.
  2. Validation — les nombres cités (SHA, run/job IDs, timestamps, taille 11 archives) viennent des diags runner et des API GitHub citées, reproduibles par quiconque relit Worker_*.log du run.
  3. Cohérence — la section s'insère dans la continuité directe de fix(ci,#14853): cache d'archives d'actions embarque au build de l'image runner #15990 (même SHA de preuve, même convention de cache, lien garde zéro-trou).
  4. Exécution réelle — pas de notebook ; les « exécutions » sont les jobs réels du run 37093241932 (2/2 succès).
  5. Regression check — aucune boule de code touchée ; prose de doc uniquement.

See #16654 — l'acceptance « cache enrichi » y est réfutée par la mesure (le mécanisme n'existe pas au runtime) ; la décision de fermeture revient au coordinateur. Commentaires de preuves postés sur #16654 et #14853.

🤖 Generated with Claude Code

…jobs reels

Hit prouve par le diag runner (Found action archive + zero requete
codeload) ; miss confirme (codeload HTTP OK) ; l'enrichissement attendu
par l'issue est REFUTE : ACTION_ARCHIVE_CACHE est read-only au runtime,
l'archive atterrit dans _work/_actions/_temp, seul le build ecrit le
cache -- renfort de fait du garde zero-trou.

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

github-actions Bot commented Oct 3, 2026

Copy link
Copy Markdown
Contributor

G-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
La lane `myia-po-2023:CoursIA` voit ces signaux actifs sur les mergees du jour (UTC 2026-10-03) :

  • GENRE-MISMATCH : declared genre != genre infere depuis les chemins du diff

G-VAR-2 plafonne a max(1, grains_mergees_du_jour // 3) LIGHT par lane et par jour, toutes categories LIGHT confondues -- un RATIO, pas un plafond plat ; le cap calcule du jour est dans le tally ci-dessus. G-VAR-3 interdit deux genres LIGHT consecutifs. Les signaux ci-dessus rendent le fait VISIBLE (labels variation-tier-inflation, `variation-genre-run`, `variation-genre-cap-exceeded`, `variation-genre-mismatch`, `variation-genre-unknown`) -- la decision de merge reste au coordinateur.

@jsboige

jsboige commented Oct 3, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 18942
head: 9e8e171
complete: true
body: read
comments-reviewed: 1
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: c115e24463eba50081637344eb3305bdd73232503398dbbd122e69d2eee03d9d
diff-files: 1
diff-additions: 15
diff-deletions: 0
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
[/ADJOINT PREFLIGHT]

note: Dossier c388 sur PR #18942 (docs(runners,#16654): contrôles A2/A3 du cache d'actions mesurés sur jobs reels -- enrichissement refute). Lane porteuse myia-po-2023:CoursIA (tierce attestation). MED/tooling, 1 fichier docs/ci/self-hosted-runners.md +15/-0. PR gate SUCCESS (PASS -- no failing checks, tete 9e8e171). B.0 clear (0 nit non leve). Scope pass (1 fichier docs/ci/, pas sous .claude/ ni .github/). domain: pass (substance controle A2/A3 docs runners). 0 review formelle -- eligible merge direct ou APPROVED.

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

Labels

variation-genre-mismatch declared genre != genre infere depuis les chemins du diff (#10020, advisory)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants