Skip to content

ci: unpin e2e npm CLI from npm@11 to npm@12 (closes #440) - #535

Merged
thekevinbot merged 1 commit into
mainfrom
cc/tender-galileo-eixl8p
Jul 16, 2026
Merged

thekevinbot merged 1 commit into
mainfrom
cc/tender-galileo-eixl8p

Conversation

@thekevinbot

Copy link
Copy Markdown
Collaborator

Closes #440. Follow-up to #438 / #439.

What & why

The e2e fixture publish job pinned npm install -g npm@11 because npm 12.0.0's published bundle omitted libnpmpublish's unscoped sigstore dependency, so every npm publish --provenance died at module load with MODULE_NOT_FOUND (upstream npm/cli#9722). #440 was the dated tripwire (2026-08-09) to unpin once the upstream fix shipped, so npm@11 wouldn't quietly become load-bearing.

The fix has landed ahead of schedule:

This bumps the pin npm@11 → npm@12 and rewrites the step comment to record the fix. It stays an explicit major (never floating npm@latest) per the #438/#439 contract, so an upstream release can only change CI's npm via a reviewed bump.

Verification

Ran the exact check #440 prescribes, against a fresh npm install -g npm@latest (→ 12.0.1) in an isolated prefix — the check that failed on 12.0.0:

require.resolve('sigstore', { paths: [ …/npm/node_modules/libnpmpublish/lib ] })
→ RESOLVED  …/npm/node_modules/sigstore/dist/index.js

The end-to-end proof is the e2e fixture suite going green on this PR against real-registry OIDC provenance publishes on npm 12.

Notes

  • CI toolchain/dependency pin → single reviewed commit citing the upstream breakage, no red/green test cycle (per AGENTS.md "When the workflow does not apply").
  • No consumer surface (e2e-fixture-job.yml is CI-internal), so no CHANGELOG.md/MIGRATIONS.md entry; commit carries skip-changelog:.
  • No workflow-contract test asserts the npm version today, so nothing to update — consistent with "Workflow-contract tests are earned" (a version pin is visible in any diff).

🤖 Generated with Claude Code

https://claude.ai/code/session_0131HkmhYCFEQCJ4wZcGWABJ


Generated by Claude Code

npm 12.0.0's published bundle omitted libnpmpublish's unscoped
`sigstore` dependency, so every `npm publish --provenance` in the e2e
fixture job died at module load (npm/cli#9722). #438/#439 pinned
`npm install -g npm@11` as a workaround, with #440 tracking the unpin.

npm/cli#9740 fixed the packing bug and shipped in npm 12.0.1
(2026-07-10); the packed tarball again contains
`node_modules/sigstore`. `latest` now resolves to 12.0.1. Verified
locally with a fresh `npm install -g npm@latest` (→ 12.0.1) that
`require.resolve('sigstore', { paths: [libnpmpublish/lib] })` resolves
— the exact check that failed on 12.0.0.

Kept as an explicit major (npm@12), never floating `npm@latest`, per
the #438/#439 contract. The e2e fixture suite going green on this PR
is the end-to-end verification.

skip-changelog: CI-internal harness pin; no consumer surface

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0131HkmhYCFEQCJ4wZcGWABJ
@thekevinbot
thekevinbot enabled auto-merge (squash) July 16, 2026 13:42
@thekevinbot
thekevinbot disabled auto-merge July 16, 2026 13:42
@thekevinbot
thekevinbot enabled auto-merge (squash) July 16, 2026 13:42
@thekevinbot
thekevinbot merged commit 80d3200 into main Jul 16, 2026
146 checks passed
@thekevinbot
thekevinbot deleted the cc/tender-galileo-eixl8p branch July 16, 2026 13:54
github-actions Bot added a commit that referenced this pull request Jul 16, 2026
ci: unpin e2e npm CLI from npm@11 to npm@12 (closes #440) (#535)

npm 12.0.0's published bundle omitted libnpmpublish's unscoped
`sigstore` dependency, so every `npm publish --provenance` in the e2e
fixture job died at module load (npm/cli#9722). #438/#439 pinned
`npm install -g npm@11` as a workaround, with #440 tracking the unpin.

npm/cli#9740 fixed the packing bug and shipped in npm 12.0.1
(2026-07-10); the packed tarball again contains
`node_modules/sigstore`. `latest` now resolves to 12.0.1. Verified
locally with a fresh `npm install -g npm@latest` (→ 12.0.1) that
`require.resolve('sigstore', { paths: [libnpmpublish/lib] })` resolves
— the exact check that failed on 12.0.0.

Kept as an explicit major (npm@12), never floating `npm@latest`, per
the #438/#439 contract. The e2e fixture suite going green on this PR
is the end-to-end verification.

skip-changelog: CI-internal harness pin; no consumer surface

Claude-Session: https://claude.ai/code/session_0131HkmhYCFEQCJ4wZcGWABJ

Co-authored-by: Claude <noreply@anthropic.com>

This branch was previously deployed

1 inactive deployment
e2e — 5257f293 Deployed Jul 16, 2026 by thekevinbot via TestPyPI publish + verify #537
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.

Unpin the e2e npm CLI (npm@11 → latest/12.x) once npm/cli#9722 ships fixed — revisit 2026-08-09

2 participants