From a8f1b3746e388d45339e6e99c12d984461e59f39 Mon Sep 17 00:00:00 2001 From: Michael B Reiser Date: Mon, 27 Jul 2026 00:01:08 -0400 Subject: [PATCH 1/2] ci: bump actions off the deprecated node20 runtime 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 --- .github/workflows/sync-arena-configs.yml | 4 ++-- .github/workflows/validate-calculations.yml | 4 ++-- .github/workflows/validate-g6-encoding.yml | 4 ++-- .github/workflows/validate-pattern-generation.yml | 4 ++-- .github/workflows/validate-protocol-roundtrip.yml | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/sync-arena-configs.yml b/.github/workflows/sync-arena-configs.yml index 35a4710..f7e0d23 100644 --- a/.github/workflows/sync-arena-configs.yml +++ b/.github/workflows/sync-arena-configs.yml @@ -23,7 +23,7 @@ jobs: steps: - name: Checkout webDisplayTools - uses: actions/checkout@v4 + uses: actions/checkout@v7 - name: Setup Node.js uses: actions/setup-node@v7 @@ -91,7 +91,7 @@ jobs: - name: Create Pull Request if: steps.changes.outputs.changed == 'true' - uses: peter-evans/create-pull-request@v5 + uses: peter-evans/create-pull-request@v8 with: token: ${{ secrets.GITHUB_TOKEN }} commit-message: "chore: sync arena configs from maDisplayTools" diff --git a/.github/workflows/validate-calculations.yml b/.github/workflows/validate-calculations.yml index 9ecb2d4..0924be5 100644 --- a/.github/workflows/validate-calculations.yml +++ b/.github/workflows/validate-calculations.yml @@ -24,10 +24,10 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@v7 - name: Setup Node.js - uses: actions/setup-node@v4 + uses: actions/setup-node@v7 with: node-version: '24' diff --git a/.github/workflows/validate-g6-encoding.yml b/.github/workflows/validate-g6-encoding.yml index 6f87525..f54178c 100644 --- a/.github/workflows/validate-g6-encoding.yml +++ b/.github/workflows/validate-g6-encoding.yml @@ -24,10 +24,10 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@v7 - name: Setup Node.js - uses: actions/setup-node@v4 + uses: actions/setup-node@v7 with: node-version: '24' diff --git a/.github/workflows/validate-pattern-generation.yml b/.github/workflows/validate-pattern-generation.yml index 47175b2..47e6215 100644 --- a/.github/workflows/validate-pattern-generation.yml +++ b/.github/workflows/validate-pattern-generation.yml @@ -29,10 +29,10 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@v7 - name: Set up Node.js - uses: actions/setup-node@v4 + uses: actions/setup-node@v7 with: node-version: '24' diff --git a/.github/workflows/validate-protocol-roundtrip.yml b/.github/workflows/validate-protocol-roundtrip.yml index 1fce94a..74ea091 100644 --- a/.github/workflows/validate-protocol-roundtrip.yml +++ b/.github/workflows/validate-protocol-roundtrip.yml @@ -50,10 +50,10 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@v7 - name: Set up Node.js - uses: actions/setup-node@v4 + uses: actions/setup-node@v7 with: node-version: '24' From 08bc942365c62221648fe1a0fb17d8e5fa603708 Mon Sep 17 00:00:00 2001 From: Michael B Reiser Date: Mon, 27 Jul 2026 00:01:17 -0400 Subject: [PATCH 2/2] fix: stop the arena-config sync from opening an empty PR every week scripts/generate-arena-configs.js stamped `Last updated: ` 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 --- js/arena-configs.js | 1 - scripts/generate-arena-configs.js | 7 +++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/js/arena-configs.js b/js/arena-configs.js index acdc8c2..e3d3ddf 100644 --- a/js/arena-configs.js +++ b/js/arena-configs.js @@ -1,7 +1,6 @@ /** * Arena Configurations * Auto-generated from maDisplayTools/configs/arenas/ and arena_registry/ - * Last updated: 2026-07-19T01:25:01.029Z * * DO NOT EDIT MANUALLY - regenerate with: node scripts/generate-arena-configs.js */ diff --git a/scripts/generate-arena-configs.js b/scripts/generate-arena-configs.js index 5091f24..3940475 100644 --- a/scripts/generate-arena-configs.js +++ b/scripts/generate-arena-configs.js @@ -256,11 +256,14 @@ function main() { } const registryStr = registryLines.join(',\n'); - // Generate output + // Generate output. Deliberately NO generation timestamp in the header: it made + // every run of the sync-arena-configs workflow a "change" and opened a weekly PR + // whose entire diff was that one line (e.g. #169). Output must stay a pure function + // of the input YAML so "Check for changes" means a real config change. Git history + // records when the file last changed; don't re-add a Date here. const output = `/** * Arena Configurations * Auto-generated from maDisplayTools/configs/arenas/ and arena_registry/ - * Last updated: ${new Date().toISOString()} * * DO NOT EDIT MANUALLY - regenerate with: node scripts/generate-arena-configs.js */