Context
GitHub is removing Node 20 from Actions runners on 2026-09-23. Any JavaScript action still declaring runs.using: node20 stops working then. An org-wide scan found cli is the most affected repo.
A remediation branch was fully prepared and pushed, but the PR was never opened due to a Switchboard repo-resolution bug (tracked in coreplanelabs/switchboard#1034). The work is done — it just needs a PR opened from the existing branch.
The ready branch
- Branch:
ci/node20-runtime-deprecation @ abd9efdd1478a3ace2b1846fc5df3b8e02ae251f
- Open the PR with:
gh pr create --repo coreplanelabs/cli --head ci/node20-runtime-deprecation
What the branch changes
Bumps the three node20-runtime actions to sha-pinned node24 releases (matching the org's sha-pinning convention), across the 4 workflows plus the release pipeline:
| Action |
From |
To |
Notes |
actions/checkout |
v4 |
v7.0.1 |
node24; persist-credentials still defaults to true, so the cut-release and homebrew-tap git pushes keep working |
actions/setup-node |
v4 |
v7.0.0 |
node24; explicit cache: npm kept; the new auto package-manager-cache is inert in install-smoke (no package.json there) |
softprops/action-gh-release |
v2 |
v3.0.3 |
node24; same generate_release_notes/files inputs |
Validation already done on the branch: actionlint passes; every sha verified against its upstream release tag; the two known traps (checkout credential persistence, setup-node auto-cache) explicitly checked.
Deliberately NOT changed
The node-version: 20.x entries in the test matrix and install-smoke are untouched. setup-node keeps installing Node 20 as a test target after the runner deprecation — that's not what breaks. Node 20 is the CLI's documented support floor (engines: >=20, README "Node 20+", the polylane.com installer check), so raising it to 22 is a separate cross-repo product decision (package.json + README + polylanedotcom installer). Worth a follow-up issue if/when the floor is raised — Node 20 has been EOL since April 2026.
Related
Context
GitHub is removing Node 20 from Actions runners on 2026-09-23. Any JavaScript action still declaring
runs.using: node20stops working then. An org-wide scan found cli is the most affected repo.A remediation branch was fully prepared and pushed, but the PR was never opened due to a Switchboard repo-resolution bug (tracked in coreplanelabs/switchboard#1034). The work is done — it just needs a PR opened from the existing branch.
The ready branch
ci/node20-runtime-deprecation@abd9efdd1478a3ace2b1846fc5df3b8e02ae251fgh pr create --repo coreplanelabs/cli --head ci/node20-runtime-deprecationWhat the branch changes
Bumps the three node20-runtime actions to sha-pinned node24 releases (matching the org's sha-pinning convention), across the 4 workflows plus the release pipeline:
actions/checkoutpersist-credentialsstill defaults totrue, so the cut-release and homebrew-tapgit pushes keep workingactions/setup-nodecache: npmkept; the new auto package-manager-cache is inert in install-smoke (no package.json there)softprops/action-gh-releasegenerate_release_notes/filesinputsValidation already done on the branch:
actionlintpasses; every sha verified against its upstream release tag; the two known traps (checkout credential persistence, setup-node auto-cache) explicitly checked.Deliberately NOT changed
The
node-version: 20.xentries in the test matrix and install-smoke are untouched.setup-nodekeeps installing Node 20 as a test target after the runner deprecation — that's not what breaks. Node 20 is the CLI's documented support floor (engines: >=20, README "Node 20+", the polylane.com installer check), so raising it to 22 is a separate cross-repo product decision (package.json + README + polylanedotcom installer). Worth a follow-up issue if/when the floor is raised — Node 20 has been EOL since April 2026.Related