ci: Build on Node 24 and guard @next/swc libc fields by shahirtaj · Pull Request #28 · shahirtaj/doublecheck · GitHub
Skip to content

ci: Build on Node 24 and guard @next/swc libc fields - #28

Merged
shahirtaj merged 2 commits into
mainfrom
claude/untitled-0ru9lx
Jul 12, 2026
Merged

shahirtaj merged 2 commits into
mainfrom
claude/untitled-0ru9lx

Conversation

@shahirtaj

@shahirtaj shahirtaj commented Jul 12, 2026 •

Copy link
Copy Markdown
Owner

What

Two lockfile-drift hardening changes:

  1. CI moves from Node 22 to Node 24 so npm ci runs an npm >= 11.11.0 toolchain.
  2. The package-lock.test.ts libc guard now covers @next/swc-linux-*-gnu/musl, which started publishing libc metadata with Next 16.2.10 (merged in chore(deps-dev): Fix lockfile sync for the minor-and-patch group bump #27).

Why

The Node bump fixes the recurring dependabot CI failures (#25 before, #26 right now). Dependabot regenerates the lockfile with npm 11.17.0, which writes the npm 11 shape: libc fields preserved (fixed in npm 11.11.0, npm/cli#9025) and unsatisfied optional-peer entries pruned (npm 11.5.0, npm/cli#8431). npm 10 - bundled with Node 22 and never updated past it (Node 20 reached EOL still on npm 10) - rejects that shape, failing every dependabot PR with Missing: conventional-commits-parser@6.4.0 from lock file. Node 24 is Active LTS, bundles npm 11.16.0, and is also what this project's Vercel builds run on (Node 24 has been Vercel's default for new projects since Nov 2025), so CI stops testing a different runtime than production. The hand-added optional-peer entry from #27 becomes unnecessary and will disappear naturally on the next dependabot regeneration - npm 11 accepts the lockfile either way.

The guard extension closes a blind spot: a partial regeneration or bad conflict resolution could drop only the new SWC libc fields while the guarded @rolldown/binding/lightningcss entries survive - CI would stay green while Linux npm ci pulls both the glibc and musl SWC binaries. @unrs, @img/sharp, and @tailwindcss/oxide still publish no libc, so they stay excluded, as does the -gnueabihf build.

Verification

  • npx vitest run package-lock.test.ts - 15 tests passing (was 12; the 4 @next/swc entries are now asserted against the correct glibc/musl values)
  • npm run typecheck, npm run lint, npx prettier --check . - clean
  • This PR's own CI run exercises the Node 24 toolchain end-to-end (npm ci, commitlint, typecheck, lint, format, 453 tests, build)

Follow-up

Once this merges, #26 needs a ·@·d·ependabot r·ebase (or a CI re-run) to go green - its lockfile is already npm-11-shaped and correct; only CI's npm 10 was rejecting it.

🤖 Generated with Claude Code

https://claude.ai/code/session_0161H2KBxRHmcGr3QEckXtF8

Next 16.2.10 started publishing libc metadata on the
@next/swc-linux-*-gnu/musl packages, so a lockfile regeneration with
npm < 11.11.0 can now strip those fields exactly like the
@rolldown/binding and lightningcss ones the guard already covers - and
a partial regeneration could drop only the SWC fields while the guarded
entries survive, letting Linux installs pull both glibc and musl SWC
binaries with CI still green. Extend the entry pattern to the @next/swc
family and move it out of the comment's list of natives that
legitimately lack libc.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0161H2KBxRHmcGr3QEckXtF8
@vercel

vercel Bot commented Jul 12, 2026 •

Copy link
Copy Markdown
Contributor

Dependabot regenerates the lockfile with npm 11.17.0, which writes the
npm 11 shape: libc fields preserved (npm >= 11.11.0) and unsatisfied
optional-peer entries pruned (npm >= 11.5.0). npm 10 - bundled with
Node 22 and never updated past it; Node 20 reached EOL still on npm
10 - rejects that shape, failing npm ci with "Missing:
conventional-commits-parser@6.4.0 from lock file" on every Dependabot
PR (currently #26). Node 24 is Active LTS, bundles npm 11.16.0, and is
also what the Vercel project builds and runs on, so CI stops testing a
different runtime than production.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0161H2KBxRHmcGr3QEckXtF8
@shahirtaj shahirtaj changed the title test: Guard @next/swc libc fields in the lockfile ci: Build on Node 24 and guard @next/swc libc fields Jul 12, 2026
@shahirtaj
shahirtaj marked this pull request as ready for review July 12, 2026 23:40
Copilot AI review requested due to automatic review settings July 12, 2026 23:40
@chatgpt-codex-connector

Copy link
Copy Markdown

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@shahirtaj
shahirtaj merged commit 045f77e into main Jul 12, 2026
6 checks passed
@shahirtaj
shahirtaj deleted the claude/untitled-0ru9lx branch July 12, 2026 23:40

This branch was successfully deployed

1 active deployment
Preview — 91df7d32 Deployed Jul 12, 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.

3 participants