Every job in this repo emits "Node.js 20 is deprecated ... being forced to run
on Node.js 24". That forced run is a TEMPORARY GitHub fallback; when it is
withdrawn, every job using these actions fails.
MEASURED from each tag's own action.yml, not from release prose:
checkout v4.x node20 v5.1.0 / v6.1.0 / v7.0.1 node24
setup-python v5.x node20 v6.0.0 / v6.3.0 / v7.0.0 node24
checkout needs v5+, setup-python v6+. v4.4.0 was published the same day as
v5.1.0/v6.1.0/v7.0.1 - the v4 line is maintained but stays on node20, so
waiting does not fix it.
WHY LATEST, NOT THE MINIMAL v5/v6 HOP: cli already ran exactly these two SHAs
before this sweep, so latest is proven in the org, and the fleet converges on
ONE pin per action instead of gaining a third variant. Neither v7 breaking
change applies - verified per repo, not assumed:
* setup-python v7 drops the `pip-install` input - unused anywhere in the org.
* checkout v7 blocks fork-PR checkout under pull_request_target/workflow_run
- every workflow's resolved triggers were parsed as YAML (not grepped, so a
comment naming a trigger cannot be mistaken for using one). No workflow in
this repo pairs those triggers with a checkout.
This also normalises the pin comments: some lines carried a bare `# v4`, which
is a mutable major alias in comment form and not the full-semver convention.
Scope here: 26 checkout + 0 setup-python lines across 9 file(s). Verified
with `git diff -U0` that no other line changed, and all workflows still parse.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Part of the fleet-wide sweep tracked in tracebloc/backend#2004. Sibling of tracebloc/backend#2005, which is green.
Why
Every job in this repo emits:
The forced run is a temporary GitHub fallback. When it is withdrawn, every job using these two actions fails. Same defect class as tracebloc/backend#1816, which moved
add-to-projectoffusing: node20.Measured, from each tag's own
action.ymlRead
runs.usingat the tag rather than trusting release prose:using:node20node24node20node24checkout needs v5+, setup-python needs v6+. Note v4.4.0 was published 2026-07-20 alongside v5.1.0/v6.1.0/v7.0.1 — the v4 line is still maintained but stays on node20, so waiting does not fix this.
Why latest rather than the minimal v5/v6 hop
clialready ran exactly these two SHAs before this sweep, so latest is proven in the org, and the fleet converges on one pin per action instead of gaining a third variant.pip-installinput → unused anywhere in the org.pull_request_target/workflow_run→ every workflow's resolved triggers were parsed as YAML, not grepped, so a comment naming a trigger cannot be mistaken for using one. No workflow in this repo pairs those triggers with a checkout.This also normalises the pin comments: some lines carried a bare
# v4, which is a mutable major alias in comment form rather than the full-semver convention.Verification
git diff -U0inspected: onlyuses:lines changed, in either direction.github/workflows/checkoutandsetup-pythonno longer appear in the run's Node 20 deprecation annotation, with no other behavioural change.action.ymldeclaresusing: node20(azure/setup-helm×5,actions/upload-artifact×2,softprops/action-gh-release×2,actions/download-artifact×1,actions/stale×1) — out of scope here, measured the same way (readruns.usingat the pinned SHA).quality / *jobs come fromcode-quality.yml@main, so their annotation also keeps naming the oldcheckoutpin until.githubpromotes develop → main. That is a sequencing artefact of the reusable, not a defect in this PR.Ordering
No sequencing constraint.
caller-drift.pybyte-compares only the entries markedcopies:inrepo-inventory.yml, and there are none fleet-wide — so these PRs may merge in any order, including.github.Two repo-specific notes
1. Self-hosted runner.
windows-e2e.yamlrunsruns-on: [self-hosted, windows, nested-virt], and checkout v5+ requires runner ≥ v2.327.1. The API reportstotal_count: 0registered runners at both repo and org level, so nothing is live to break today — but confirm the agent version if that runner is ever re-registered. Flagging rather than assuming. (installer-tests.yamlonly mentions self-hosted in a comment; every job in it isubuntu-latest.)2. Duplicate pins collapsed. This repo carried two different pins of checkout — v4.4.0 and v4.3.1 — which is drift in its own right. Both now point at one SHA.
Note
Low Risk
Pin-only workflow edits with no application or release logic changes; main caveat is self-hosted Windows runners needing a recent actions runner version for checkout v7.
Overview
Fleet-wide pin update: every
actions/checkoutstep under.github/workflows/now uses the same SHA (3d3c42e5…, v7.0.1) instead of mixed v4 / v4.4.0 pins.This is part of the org sweep to move off Node 20 actions before GitHub drops the forced Node 24 fallback. Checkout v4 runs on
node20; v7 runs onnode24. Onlyuses:lines change — no job logic, triggers, or step inputs were touched.Workflows touched include helm CI, installer tests, release chart, drift/digest guards, k3s-cuda build, standard checks, and the self-hosted windows-e2e job (note: checkout v5+ needs runner ≥ v2.327.1 if that runner is re-enabled).
Reviewed by Cursor Bugbot for commit 12abf5d. Bugbot is set up for automated code reviews on this repo. Configure here.