Skip to content

ci: run CI and release on Node 26 (stacked on #35) - #37

Merged
imbenrabi merged 2 commits into
claude/project-thread-1w8fkyfrom
claude/project-thread-1w8fky-t2-node
Nov 5, 2026
Merged

imbenrabi merged 2 commits into
claude/project-thread-1w8fkyfrom
claude/project-thread-1w8fky-t2-node

Conversation

@imbenrabi

Copy link
Copy Markdown
Contributor

Requested by Ben · project thread

Stack and merge order

Base: #35 (claude/project-thread-1w8fky, SDK v2 + Zod 4). This PR is T2 and targets that branch. Merge order: #35 first, then this PR (GitHub retargets it to main when #35 merges), independent of T1 and T3 (disjoint files). The 0.9.0 release PR comes after all of them. Nothing is tagged or published.

What changed

  • .github/workflows/ci.yml and .github/workflows/release.yml: setup-node node-version "25.3.0" → "26" (Node 26 LTS). vitest 5 declares node ^22.12 || ^24 || >=26, so the pinned 25.3.0 was outside its supported range (it only worked with an engines warning). The release workflow runs the same typecheck/test/build, so it moves too.
  • package.json engines stays >=25.3.0, so consumers are unaffected (Ben's decision, 2026-11-04).
  • CLAUDE.md: one line saying CI and release run on Node 26 and why.

Tradeoff to know

CI no longer exercises the lowest supported engine (25.3.0). Consumers on Node 25 are covered only by the code not using Node 26-only APIs. The "26" pin follows the latest 26.x; pin an exact version if you want fully reproducible runs.

Verification

Typecheck, tests and build were run locally on Node 26.13.0 (all green on #35's head, which this branch merges). The workflow change itself is proven by this PR's own CI run on Node 26.


Generated by Claude Code

vitest 5 declares node ^22.12 || ^24 || >=26, so the pinned Node 25.3.0 is
outside its supported range. Use Node 26 in ci.yml and release.yml; `engines`
stays >=25.3.0 so consumers are unaffected.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VmUXGSYMuTcM7fquxzRook

Copy link
Copy Markdown
Contributor Author

TS review: pipeline-ts-reviewer (feature-pipeline)

Verdict: APPROVE (round 1). The diff is 3 changed lines: both workflows move setup-node to "26" consistently, engines stays >=25.3.0, the vitest 5 engines claim in CLAUDE.md was verified with npm view vitest@5 engines.node (every 5.x declares ^22.12.0 || ^24.0.0 || >=26.0.0), and no other 25.3.0 pins exist (no .nvmrc, Dockerfile or other setup-node step).

Sev Location Finding Disposition
LOW package.json:36 @types/node ^25.0.0 while CI runs Node 26. Left unchanged: engines floor is Node 25, so typing against 25 is correct for consumers, and the types are out of scope for this PR.
LOW CLAUDE.md:66 Line mixes the consumer floor with the CI rationale; accurate, optional tidy. Left unchanged: it is one line and keeps the reason next to the constraint.
{
  "recommendation": "APPROVE",
  "summary": "The three-line change matches the stated intent: both workflows move to Node 26 consistently, engines stays >=25.3.0, the vitest 5 engines claim in CLAUDE.md is accurate, and no other 25.3.0 pins were missed.",
  "findings": [
    { "severity": "LOW", "file": "package.json", "line": 36, "issue": "@types/node is ^25.0.0 while CI/release now run Node 26; defensible since the engines floor remains 25.3.0." },
    { "severity": "LOW", "file": "CLAUDE.md", "line": 66, "issue": "Line is long and combines the engines floor with the CI-runtime rationale; accurate, optional tidy only." }
  ]
}

Generated by Claude Code

@imbenrabi
imbenrabi merged commit c41921c into claude/project-thread-1w8fky Nov 5, 2026
imbenrabi added a commit that referenced this pull request Nov 5, 2026
…lease-0-9-0

chore(release): 0.9.0 (also lands #36, #37, #38)
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.

2 participants