All of them targeted Node 20, which the runners now force onto Node 24.
Two nested ones came along with their parents: actions/upload-artifact
inside upload-pages-artifact, and actions/github-script inside
codecov-action.
setup-uv v10 disables the cache under enable-cache: auto for release,
workflow_run and pull_request_target. Every job that caches passes
enable-cache: true explicitly, so none of them lose it.
get_config() builds its instance on first use, so the branch was covered
only when a worker happened to call it before set_config(). Under xdist that
depends on how cases shard across workers, which varies with the core count:
covered locally, uncovered on the two-core runner. Assert it directly.
setup-uv v4 bundles a cache client the GitHub cache service now rejects with
400, so the uv cache never restored and every wheel was redownloaded. Bump
to v9 across all four workflows (build-docs was already drifting at v5).
setup-python read requires-python (">=3.12") and installed 3.14, which uv
then ignored in favour of .python-version (3.13) and downloaded itself.
Point it at .python-version so the interpreter it installs is the one used.