Context
Operator @tobiu surfaced 2026-05-13 ~07:35Z: .github/workflows/test.yml still pins node-version: '22' while Node 24 is fully stable in 2026. V-B-A authorized the coordinated bump.
Authored by Claude Opus 4.7 (Claude Code 1M context). Session c2d47e91-625f-4ebf-b066-49442f465830.
V-B-A — verified substrate state
| Workflow |
File:Line |
Current Pin |
| Tests |
.github/workflows/test.yml:36 |
'22' |
| Publish |
.github/workflows/npm-publish.yml:16 |
'22.x' |
| Data sync |
.github/workflows/data-sync-pipeline.yml:28 |
'22' |
| Skill manifest lint |
.github/workflows/skill-manifest-lint.yml:39 |
'22' |
No project-level pins: package.json has no engines field; no .nvmrc; no .node-version. The 4 workflows are the only node-version source-of-truth.
Empirical forward-compatibility anchor: local dev runs node v25.9.0 successfully — strong signal v24 works with the codebase. No engines pin means no breaking-change blocker at the project level.
Node 24 official release calendar (corrected post-Cycle-1 V-B-A by @neo-gpt)
- Initial release: 2025-05-06
- Active LTS since: 2025-10-28 (already LTS for 6+ months as of 2026-05-13)
- Maintenance LTS starts: 2026-10-20 (5 months from now)
- End-of-Life: 2028-04-30
Correction history: my original ticket body stated "Released April 2026 — Active release line; becomes Active LTS October 2026 (~5 months away)" — this was training-data temporal anchor drift per memory anchor feedback_training_data_anchor_drift. The substrate-decision (bump v22 → v24) remains substrate-correct on technical merits; the framing was wrong but the bump direction is right. Corrected per @neo-gpt's PR #11293 Cycle 1 V-B-A.
Related historical substrate
- #9598 (CLOSED COMPLETED 2026-03-30): forced JS-actions runner to Node 24 via
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true env var — addresses the actions infrastructure runtime (different from node-version: '22' in setup-node which is the user-project script runtime). Not a duplicate.
- #9600 (CLOSED COMPLETED 2026-03-30): upgraded
actions/setup-node@v4 → v6 for native Node 24 support. Also addresses actions infrastructure, not user-project script pinning. Not a duplicate.
The Problem
Workflows pin v22, lagging Node release cycle. Project local dev empirically validates v24+. Consistency-of-runtime across dev + CI is substrate-correct.
The Architectural Reality
.github/workflows/test.yml line 36
.github/workflows/npm-publish.yml line 16
.github/workflows/data-sync-pipeline.yml line 28
.github/workflows/skill-manifest-lint.yml line 39
The Fix
Single coordinated PR replacing '22' (and '22.x') with '24' across all 4 workflow files. Bounded scope, 4 single-line edits.
Acceptance Criteria
Out of Scope
- Adding
package.json engines pin (separate substrate-evolution; defer to follow-up if needed)
- Adding
.nvmrc / .node-version (separate substrate; defer)
- Bumping
actions/setup-node action version (already at @v6 per #9600)
- Any action infrastructure changes (#9598 + #9600 substrate)
Avoided Traps
- Bumping to
'24.x' vs '24': drop the .x variant for consistency; 3 of 4 workflows already use bare-major form. '24' is the canonical setup-node syntax.
- Bumping to v25 (current): Node 25 is Current (Oct 2025 release), not LTS-track. Operator framing was "v24 is fully stable" which is the safer Active-LTS-track choice. v25 deferred.
- Adding engines pin in same PR: scope-creep; separate substrate-evolution if needed.
Related
- #9598 (closed, completed) — actions infrastructure runtime fix; substrate-adjacent but distinct
- #9600 (closed, completed) — actions/setup-node@v6 upgrade for native Node 24 support; substrate-adjacent
- Local dev empirical anchor: node v25.9.0 in active worktree development (forward-compat confirmation)
Origin Session ID
c2d47e91-625f-4ebf-b066-49442f465830
Handoff Retrieval Hints
git log --oneline -- .github/workflows/test.yml for prior node-version churn history
grep -rn "node-version" .github/workflows/ for the canonical 4-file substrate
Context
Operator @tobiu surfaced 2026-05-13 ~07:35Z:
.github/workflows/test.ymlstill pinsnode-version: '22'while Node 24 is fully stable in 2026. V-B-A authorized the coordinated bump.Authored by Claude Opus 4.7 (Claude Code 1M context). Session
c2d47e91-625f-4ebf-b066-49442f465830.V-B-A — verified substrate state
.github/workflows/test.yml:36'22'.github/workflows/npm-publish.yml:16'22.x'.github/workflows/data-sync-pipeline.yml:28'22'.github/workflows/skill-manifest-lint.yml:39'22'No project-level pins:
package.jsonhas noenginesfield; no.nvmrc; no.node-version. The 4 workflows are the only node-version source-of-truth.Empirical forward-compatibility anchor: local dev runs node v25.9.0 successfully — strong signal v24 works with the codebase. No engines pin means no breaking-change blocker at the project level.
Node 24 official release calendar (corrected post-Cycle-1 V-B-A by @neo-gpt)
Related historical substrate
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=trueenv var — addresses the actions infrastructure runtime (different fromnode-version: '22'in setup-node which is the user-project script runtime). Not a duplicate.actions/setup-node@v4→v6for native Node 24 support. Also addresses actions infrastructure, not user-project script pinning. Not a duplicate.The Problem
Workflows pin v22, lagging Node release cycle. Project local dev empirically validates v24+. Consistency-of-runtime across dev + CI is substrate-correct.
The Architectural Reality
.github/workflows/test.ymlline 36.github/workflows/npm-publish.ymlline 16.github/workflows/data-sync-pipeline.ymlline 28.github/workflows/skill-manifest-lint.ymlline 39The Fix
Single coordinated PR replacing
'22'(and'22.x') with'24'across all 4 workflow files. Bounded scope, 4 single-line edits.Acceptance Criteria
node-version: '24'(consistent format — drop the.xsuffix variant in npm-publish.yml)package.jsonengines field added in this PR (scope-discipline; can be added in follow-up if substrate-evolution warrants)Out of Scope
package.jsonengines pin (separate substrate-evolution; defer to follow-up if needed).nvmrc/.node-version(separate substrate; defer)actions/setup-nodeaction version (already at@v6per #9600)Avoided Traps
'24.x'vs'24': drop the.xvariant for consistency; 3 of 4 workflows already use bare-major form.'24'is the canonical setup-node syntax.Related
Origin Session ID
c2d47e91-625f-4ebf-b066-49442f465830Handoff Retrieval Hints
git log --oneline -- .github/workflows/test.ymlfor prior node-version churn historygrep -rn "node-version" .github/workflows/for the canonical 4-file substrate