Skip to content

fix(ci): remove the per-runner RUNNER_TOOL_CACHE env — it is a no-op#19

Open
ywatanabe1989 wants to merge 1 commit into
mainfrom
fix/toolcache-workflow-env-is-noop
Open

fix(ci): remove the per-runner RUNNER_TOOL_CACHE env — it is a no-op#19
ywatanabe1989 wants to merge 1 commit into
mainfrom
fix/toolcache-workflow-env-is-noop

Conversation

@ywatanabe1989

Copy link
Copy Markdown
Contributor

Reverting a no-op I merged an hour ago

PR #18 added a step-level env: RUNNER_TOOL_CACHE: /tmp/.../${{ runner.name }} to scope the uv tool cache per runner. It does not work. RUNNER_TOOL_CACHE is a runner-reserved default variable, and a workflow-level env: does not override it.

Measured, not assumed

scitex-hpc ci run 30028631599 — dispatched 17:15:24Z, after #18 merged (17:06:52Z); the caller pins pytest-matrix.yml@main, so it ran the #18 version. Resolved toolcache path per job:

pytest-matrix / py3.11   /home/ywatanabe/.runner-toolcache/uv/0.11.31/x86_64
pytest-matrix / py3.12   /home/ywatanabe/.runner-toolcache/uv/0.11.31/x86_64
pytest-matrix / py3.13   /home/ywatanabe/.runner-toolcache/uv/0.11.31/x86_64
import-smoke / py3.12     /home/ywatanabe/.runner-toolcache/uv/0.11.31/x86_64   (unpatched)
quality-audit / audit     /home/ywatanabe/.runner-toolcache/uv/0.11.31/x86_64   (unpatched)
rtd-sphinx-build / docs   /home/ywatanabe/.runner-toolcache/uv/0.11.31/x86_64   (unpatched)

pytest-matrix resolved the runner default, identical to the jobs I never touched. Note it is not /tmp/scitex-ci-runner-work/toolcache//uv/... either — an empty runner.name would have produced my hardcoded prefix. The override was ignored entirely, which is the signature of a reserved variable, not a bad interpolation.

Why remove rather than leave it

A no-op that looks like a fix is the "gate that cannot fail" antipattern — the next reader believes the cache is scoped when it isn't. Replaced with a comment recording the measurement and pointing at the only layer that can fix it.

The real fix

The shared-toolcache flake (setup-uv concurrent-populate mutual destruction across ~80 runners) can only be scoped where the runner exports RUNNER_TOOL_CACHE — the launcher relaunch-scitex-hpc-runner.sh, per-runner + node-local. Tracked in scitex-hpc card ci-runner-toolcache-per-runner-launcher-ssot-20260723; it needs a listener-relaunch window (bundled with the supervisor cutover).

@figrecipe — flagging since you reviewed #18. Your review wasn't wrong; the mechanism was, and only a real run surfaced it.

🤖 Generated with Claude Code

The step-level env added in the previous change does NOT take effect:
RUNNER_TOOL_CACHE is a runner-reserved default variable, and a workflow-level
env does not override it. Measured on scitex-hpc ci run 30028631599
(2026-07-23, after the previous merge): all pytest-matrix legs still resolved
the runner's ~/.runner-toolcache, not the intended per-runner /tmp path,
identical to the unpatched jobs.

Leaving a no-op that looks like a fix is worse than no fix. Replaced with a
comment recording the finding and pointing at the only layer that can fix the
shared-toolcache flake: the runner launcher (relaunch-scitex-hpc-runner.sh),
which is where RUNNER_TOOL_CACHE is exported. Tracked in scitex-hpc card
ci-runner-toolcache-per-runner-launcher-ssot-20260723.
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.

1 participant