Skip to content

fix(#445): upgrade Windows checkout v4→v5.0.1 + audit other @v4 floats (silence Node 20 deprecation warnings)#446

Merged
trek-e merged 1 commit into
nextfrom
fix/445-node20-deprecation-warnings
May 28, 2026
Merged

fix(#445): upgrade Windows checkout v4→v5.0.1 + audit other @v4 floats (silence Node 20 deprecation warnings)#446
trek-e merged 1 commit into
nextfrom
fix/445-node20-deprecation-warnings

Conversation

@trek-e
Copy link
Copy Markdown
Collaborator

@trek-e trek-e commented May 28, 2026

Fix PR

Using the wrong template?
— Enhancement: use enhancement.md
— Feature: use feature.md


Linked Issue

Required. This PR will be auto-closed if no valid issue link is found.

Fixes #445

The linked issue must have the confirmed-bug label. If it doesn't, ask a maintainer to confirm the bug before continuing.


What was broken

GitHub Actions emitted Node 20 deprecation warnings on every CI run despite PR #350 setting FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true in test.yml. Per actions/runner src/Runner.Worker/JobExtension.cs, that env var doesn't silence the warning — it changes which warning fires (from 'running on Node.js 20' to 'target Node.js 20 but being forced to run on Node.js 24'). Both call context.Warning(). The only mechanism that fully silences is the action's own action.yml declaring using: node24.

What this fix does

  • test.yml Windows checkout: SHA 11bd71901bbe5b1630ceea73d27597364c9af683 (v4.2.2) → 93cb6efe18208431cddfb8368fd83d5badbf9bfd (v5.0.1). Per v5 action.yml, v5 declares using: node24. Per upstream PR #2425, v5 does NOT use includeIf — auth-bug-free.
  • test.yml comment lines 135-137 updated to reflect the v5 rationale.
  • changeset-required.yml + docs-required.yml: @v4 → SHA-pinned v5.0.1 (checkout) and v5.0.0 (setup-node SHA a0853c24544627f65ddf259abe73b1d18a591444).
  • Note: FORCE_JAVASCRIPT_ACTIONS_TO_NODE24 was already absent from origin/next's test.yml (only existed on main), so no env var removal was needed. Worth investigating why fix: opt test workflow JS actions into Node 24 #350 didn't land cleanly — surfaced as separate concern.

Root cause

Three workflow files referenced @v4 actions whose action.yml declares using: node20:

Testing

How I verified the fix

Regression test added?

  • Yes — added a test that would have caught this bug
  • No — explain why: CI workflow YAML changes; the actionlint + policy linter pass is the automated gate; a unit test cannot simulate GitHub Actions runner Node version selection.

Platforms tested

  • macOS — gsd-test-summary --both -base next against commit cbbd9fe: Mac: 0 failed
  • Windows (including backslash path handling)
  • Linux — same: Docker: 0 failed
  • N/A (not platform-specific)

Runtimes tested

  • Claude Code
  • Gemini CLI
  • OpenCode
  • Other: ___
  • N/A (not runtime-specific)

Checklist

  • Issue linked above with Fixes #NNNPR will be auto-closed if missing
  • Linked issue has the confirmed-bug label
  • Fix is scoped to the reported bug — no unrelated changes included
  • Regression test added (or explained why not)
  • All existing tests pass (npm test)
  • .changeset/ fragment added if this is a user-facing fix (npm run changeset -- --type Fixed --pr <NNN> --body "...") — or no-changelog label applied
  • No unnecessary dependencies added

Breaking changes

None


References


View with Codesmith Autofix with Codesmith
Need help on this PR? Tag @codesmith with what you need. Autofix is disabled.

…PT_ACTIONS_TO_NODE24 (node20 EOL)

Problem: Node 20 deprecation warnings fired on every CI run. Despite
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true in test.yml (added in PR #350),
the warning is not silenced — the env var only changes which warning fires
(both paths call context.Warning()). The only silent path is for the action
itself to declare `using: node24`.
Ref: https://github.com/actions/runner/blob/main/src/Runner.Common/Util/NodeUtil.cs
Ref: https://github.com/actions/runner/blob/main/src/Runner.Worker/JobExtension.cs

Three locations used @v4 actions (node20 runtime):

1. test.yml — Windows lanes (test + test-full jobs) pinned to
   actions/checkout@11bd719 (v4.2.2).
   Original pin rationale (PR #162 / issue #161): v6 uses includeIf.gitdir:
   for auth injection, which is unreliable on Windows git 2.54.
   v5 never used includeIf, so it is safe for Windows.
   Upstream confirmation: actions/checkout#2425
   v5 action.yml declares `using: node24`: https://raw.githubusercontent.com/actions/checkout/v5/action.yml

2. changeset-required.yml — floating actions/checkout@v4 + actions/setup-node@v4

3. docs-required.yml — same floating @v4 pattern

Changes:
- test.yml: both Windows checkout steps v4.2.2 → v5.0.1
  (SHA 11bd71901bbe5b1630ceea73d27597364c9af683 → 93cb6efe18208431cddfb8368fd83d5badbf9bfd)
- test.yml: update comment on Windows checkout to reflect v5 rationale
- test.yml: no FORCE_JAVASCRIPT_ACTIONS_TO_NODE24 was present on origin/next
  (already absent; the env block was on the main-branch version only)
- changeset-required.yml: actions/checkout@v4 → @93cb6efe18208431cddfb8368fd83d5badbf9bfd (v5.0.1)
- changeset-required.yml: actions/setup-node@v4 → @a0853c24544627f65ddf259abe73b1d18a591444 (v5.0.0)
- docs-required.yml: same as changeset-required.yml

SHAs resolved from upstream tags:
- checkout v5.0.1: gh api repos/actions/checkout/git/ref/tags/v5.0.1 → 93cb6efe18208431cddfb8368fd83d5badbf9bfd
- setup-node v5.0.0: gh api repos/actions/setup-node/git/ref/tags/v5.0.0 → a0853c24544627f65ddf259abe73b1d18a591444

Closes #445
@trek-e trek-e merged commit 381be43 into next May 28, 2026
20 of 23 checks passed
@github-actions github-actions Bot deleted the fix/445-node20-deprecation-warnings branch May 28, 2026 22:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

1 participant