ci: bump actions off node20 + stop the weekly empty arena-config PR - #172
Merged
Conversation
2 tasks
GitHub is deprecating the node20 action runtime, so every run of every workflow emitted "Node 20 is being deprecated" annotations even though the jobs succeeded. Bumps the actions that still shipped a node20 entrypoint: - actions/checkout v4 -> v7 (all 5 workflows; deploy-pages was already v7) - actions/setup-node v4 -> v7 (the four validate-* workflows) - peter-evans/create-pull-request v5 -> v8 (sync-arena-configs) setup-node in sync-arena-configs is deliberately left alone here; #170 bumps that line (v4 -> v7, node 20 -> 24) and applies cleanly on top. None of the breaking changes in the skipped majors affect this repo: - setup-node v5 auto-caches only when package.json has a packageManager field; this repo has no package.json (pixi-managed, no npm). - create-pull-request v7 renamed git-token -> branch-token and dropped the PULL_REQUEST_NUMBER output; neither is used here. v8 is the node24 bump. - setup-node v5+ and create-pull-request v8 need runner >= 2.327.1, which GitHub-hosted ubuntu-latest satisfies. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
scripts/generate-arena-configs.js stamped `Last updated: <new Date()>` into the generated header, so js/arena-configs.js changed on every run regardless of whether any arena YAML had changed. The sync-arena-configs workflow's "Check for changes" step was therefore always true, and the workflow opened a PR every Sunday whose entire diff was that one timestamp line (#169, and the merged #158/#147/#122/#117 before it). Drops the timestamp so the output is a pure function of the input YAML. The generator is now byte-idempotent (verified: three consecutive runs produce an identical file), which makes "Check for changes" mean an actual config change. Git history already records when the file last changed. js/arena-configs.js is regenerated here; it is prettier-ignored by design (LAB-111 follow-up) and the diff is the removed header line only. Regenerated from configs fetched the same way the workflow fetches them (GitHub contents API against reiserlab/maDisplayTools), so the next CI run reproduces this file byte-for-byte and reports no changes. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
mbreiser
force-pushed
the
ci/node24-action-bumps
branch
from
July 27, 2026 04:16
cae08af to
08bc942
Compare
Contributor
Author
|
@floesche — tagging you since this builds directly on your #170 (now merged) and touches the same workflow. Rebased onto merged What this adds on top of yours:
Validation of the combined state — sync workflow dispatched on this branch after the rebase (run 30236633047):
Two spots worth your eye specifically:
|
floesche
approved these changes
Jul 27, 2026
floesche
left a comment
Member
There was a problem hiding this comment.
This makes sense. Thanks for cleaning this up. My previous PR only focused on fixing a recurring problem, this solution is forward looking.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Follow-up to #170. Two independent fixes to the CI/sync plumbing, both validated by real workflow runs on this branch before opening this PR (evidence below).
1. Bump actions off the deprecated node20 runtime
Runs were already succeeding, but every one emitted
Node 20 is being deprecatedannotations — and when GitHub removes node20 from the runners, those steps break for real.actions/checkoutdeploy-pageswas already v7)actions/setup-nodevalidate-*workflowspeter-evans/create-pull-requestsync-arena-configssetup-nodeinsync-arena-configsis deliberately not touched here — that is #170's line. Verified the two branches merge cleanly (git merge-treeexit 0), leavingcheckout@v7+setup-node@v7+node-version: 24+create-pull-request@v8.Breaking changes in the skipped majors, checked against this repo:
package.jsonhas apackageManagerfield — this repo has nopackage.json(pixi-managed, no npm), so it is inert. v6 narrowed it to npm only.git-token→branch-tokenand dropped thePULL_REQUEST_NUMBERoutput; neither is used. v8 is the node24 bump. All inputs in use (token,commit-message,title,body,branch,delete-branch,labels) are unchanged.ubuntu-latest.2. Stop the sync workflow opening an empty PR every week
scripts/generate-arena-configs.jsstampedLast updated: ${new Date().toISOString()}into the generated header, sojs/arena-configs.jschanged on every run whether or not any arena YAML had.Check for changeswas therefore always true and the workflow opened a PR every Sunday whose entire diff was that one line — #169 is the currently-open example, preceded by #158, #147, #122, #117.Removing the timestamp makes the output a pure function of the input YAML. Git history already records when the file last changed; a comment in the generator explains why no
Datebelongs there.js/arena-configs.jsis regenerated here (diff = the removed header line only). It is prettier-ignored by design (LAB-111 follow-up). It was regenerated from configs fetched the same way the workflow fetches them (GitHub contents API againstreiserlab/maDisplayTools), so CI reproduces it byte-for-byte.Validation (all on this branch, before opening this PR)
Sync Arena Configs(dispatched on this branch)Create Pull Requeststep skippedsetup-node@v4(main + post) — the line #170 fixes;checkout@v7no longer warnsValidate Arena CalculationsValidate G6 EncodingValidate Pattern Generation(auto on push)Validate Protocol YAML Roundtrip(auto on push)pixi run testNotes
pixi run format-checkfails on 4 real files (dashboard/data-browser/*.js,tests/test-g6-tall-rigs.js) plus stale.claude/worktrees/copies. No CI runs Prettier, so this is not a gate — worth a separate cleanup.🤖 Generated with Claude Code