Repository navigation
docs(runners,#16654): contrôles A2/A3 du cache d'actions mesurés sur jobs réels — enrichissement réfuté - #18942
Conversation
…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>
|
G-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
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 |
|
[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. |
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-runnerreconstruite 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 uniqueseed-a23(enregistrementACTIONS_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). Run37093241932, jobs111117851523(a2-hit) et111117939237(a3-miss), tous deux succès.Résultats mesurés :
/opt/runner/_diag/Worker_*.log, INFO)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 »setup-java@v4, absent du seed)Save archive 'https://codeload.github.com/actions/setup-java/tar.gz/cf277c60…'→ HTTP OK ~1 sFinding 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_CACHEest 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-fromsur un conteneur mort ne voit pas sa couche RW (le cache n'est pas un volume) — la mesure juste passe pardocker cp.Les cinq points de review
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 interditsetup-javasurmainpar design — c'est le contrôle négatif lui-même.Worker_*.logdu run.37093241932(2/2 succès).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