Skip to content

ci: move every action onto a Node 24 runtime, and let the eval gate see its own edits - #4

Merged
timcopelandnz merged 1 commit into
mainfrom
claude/actions-node24
Aug 26, 2026
Merged

timcopelandnz merged 1 commit into
mainfrom
claude/actions-node24

Conversation

@timcopelandnz

Copy link
Copy Markdown
Contributor

Every run in all three workflows carried this annotation:

Node.js 20 is deprecated. The following actions target Node.js 20 but are being
forced to run on Node.js 24: actions/checkout@v4, actions/github-script@v7,
actions/setup-node@v4, pnpm/action-setup@v4

The runner is already executing them on 24 — the forcing is a grace period, not a fix. 14 references move to current majors, each checked against how this repo actually uses the action rather than bumped on faith:

action v4 → breaking change why it does not bite here
actions/checkout v7 blocks fork-PR checkout for pull_request_target / workflow_run neither event is used
actions/setup-node v7 v5 auto-caches on packageManager; v6 narrows that to npm; v7 drops the dummy NODE_AUTH_TOKEN cache: pnpm is explicit in all four steps, so auto-cache never applies
actions/github-script v9 require('@actions/github') gone; getOctokit now an injected parameter scripts require only fs and path, and never name getOctokit
pnpm/action-setup v6 none — input surface byte-identical to v4 no inputs are passed

The one that needed real checking

release.yml publishes to npm via Trusted Publishing over OIDC, and setup-node v7 removes a NODE_AUTH_TOKEN export. That reads like a publish-breaking change, so I checked it rather than assuming: there is no NODE_AUTH_TOKEN anywhere in the repo, and actions/setup-node#1558 removed the dummy value precisely because it "could corrupt the user's .npmrc ... causing confusing behavior during OIDC publish". For this repo v7 is an improvement, not a risk.

Letting the gate see its own edits

evals-pr.yml now lists itself in both paths filters. Editing the gate did not run the gate — a reordered step, a bumped action or a new trigger shipped without the workflow it edits ever executing. Same shape as the vacuous passes in 7033f57 and dbf0bd6.

Not hypothetical: without it, this commit would put github-script@v9 into the eval workflow with nothing exercising it, since .github/** matches none of the detector / scoring / language / CLI / evals paths. With it, this PR runs that workflow and its comment step.

What this PR does and does not verify

  • Exercised here: ci.yml (build, typecheck, test, publish smoke) and evals-pr.yml (replay, diff, and the github-script comment step) on all four new action versions.
  • Not exercised here: release.yml triggers on release: published and cannot run until the next release is cut. Its four actions are the same versions the other two workflows exercise on this PR.

pnpm verify (2407 tests) green locally. No product code touched — no findings, no scores, no version bump.

🤖 Generated with Claude Code

…ee its own edits

Every run in all three workflows carried:

    Node.js 20 is deprecated. The following actions target Node.js 20 but
    are being forced to run on Node.js 24: actions/checkout@v4,
    actions/github-script@v7, actions/setup-node@v4, pnpm/action-setup@v4

The runner is already executing them on 24; the forcing is a grace
period, not a fix. 14 references across ci.yml, evals-pr.yml and
release.yml move to the current majors, each checked against how this
repo actually uses the action rather than bumped on faith:

| action | v4 → | breaking change | why it does not bite here |
|---|---|---|---|
| checkout | v7 | blocks fork-PR checkout for `pull_request_target` / `workflow_run` | neither event is used |
| setup-node | v7 | v5 auto-caches on `packageManager`, v6 narrows that to npm, v7 drops the dummy `NODE_AUTH_TOKEN` | `cache: pnpm` is explicit in all four steps, so auto-cache never applies |
| github-script | v9 | `require('@actions/github')` gone, `getOctokit` now an injected parameter | scripts `require` only `fs` and `path`, and never name `getOctokit` |
| pnpm/action-setup | v6 | none — input surface identical to v4 | no inputs are passed |

setup-node v7 is an improvement rather than a risk for `release.yml`.
Publishing there is npm Trusted Publishing over OIDC with no
`NODE_AUTH_TOKEN` anywhere in the repo, and the dummy value v4 exported
is what actions/setup-node#1558 removed precisely because it "could
corrupt the user's .npmrc ... causing confusing behavior during OIDC
publish".

Also: `evals-pr.yml` now lists itself in both paths filters. Editing
the gate did not run the gate, so a reordered step, a bumped action or
a new trigger shipped without the workflow it edits ever executing —
the same shape as the three vacuous passes 7033f57 and dbf0bd6 fixed.
That is not a hypothetical here: without it this very commit would put
`github-script@v9` into the eval workflow with nothing exercising it,
since `.github/**` matches none of the detector, scoring, language, CLI
or evals paths.

`release.yml` stays unexercised — it triggers on `release: published`
and cannot run until the next release is cut. Its four actions are the
same versions the other two workflows exercise on this PR.

`pnpm verify` (2407 tests) green. No product code touched.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@vercel

vercel Bot commented Aug 26, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
crimes Ready Ready Preview Aug 26, 2026 9:55am

Request Review

@github-actions

Copy link
Copy Markdown

Eval replay diff

Replayed at: 2026-08-26T09:56:23.369Z
Pinned version: 0.25.1

agent pinned pass rate replay pass rate Δ verdict
claude 0.84 0.84 +0.00 stable
codex 0.61 0.61 +0.00 stable

No regressions outside ±10% tolerance — eval signal is stable.

@timcopelandnz
timcopelandnz merged commit e7f0168 into main Aug 26, 2026
5 checks passed
@timcopelandnz
timcopelandnz deleted the claude/actions-node24 branch August 26, 2026 10:56

This branch was successfully deployed

1 active deployment
Preview — bb6754be Deployed Aug 26, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant