Skip to content

node24: GitHub is already force-running the action on Node 24 (+ the @actions/* majors that clear the last advisories) #89

Description

@mmcky

action.yml declares using: 'node20', but GitHub is already ignoring that and running the action on Node 24 — in production, today. Every workflow run in the 2026-07-15 harness carries:

##[warning]Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: ./action, actions/checkout@v4, actions/setup-node@v4

This reframes PLAN 5.8. It is not "Node 20 reached EOL, we should migrate sometime" — we are already getting the Node 24 runtime without having declared, tested, or built for it. The declared runtime and the actual runtime have diverged, and the divergence is invisible unless you read a warning in the log.

Scope

PLAN 5.8 and PLAN 1.4 are coupled: both force a dist-action/ rebuild, so they should land together as one release.

  • action.yml:93using: 'node20''node24'
  • .github/workflows/ci.yml:25node-version: 2024
  • build-action.mjs:23 — esbuild target: 'node20''node24'
  • @types/node^20^24
  • package.json engines.node>=20>=24 (added in High-severity fixes from the 2026-07-15 deep review #83)
  • CONTRIBUTING.md — Node 20 prerequisite
  • @actions/core 1.11.1 → 3.x and @actions/github 6.0.1 → 9.x — the reason to do this now: these are the last open prod advisories. npm audit --omit=dev reports 1 high / 2 moderate, all undici reaching us through these two, and all of it inlined into the committed dist-action/index.js. npm audit fix cannot clear them without the majors.
  • Rebuild dist-action/, confirm the freshness gate passes
  • Consider @anthropic-ai/sdk 0.78 → 0.111 in the same release (also bundle-affecting; re-run translator-retry.test.ts)

Risk

The @actions/* majors are the real work — v1→v3 and v6→v9 are several majors each, and the action uses core.getInput/setOutput/setFailed/info/error plus github.context and getOctokit throughout. Worth reading their changelogs rather than assuming a drop-in.

Everything else is a one-line change per site.

Verification

src/index.ts is at 0% coverage (PLAN 5.2), so the test suite will not catch an @actions/* API break — it would surface as a runtime failure in a real sync. The e2e harness (tool-test-action-on-github/) is the check that would: 26 scenarios × 2 languages against real GitHub. Pin its templates to the candidate build first (they now carry an explicit ref: after #86).

Refs: PLAN 5.8, PLAN 1.4, REVIEW-FABLE5-2026-07-15.md §5

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    infrastructureSubstantial CI / build / deploy / tooling / automation work

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions