Summary
The release integration matrix selects Node.js 23 for npm 12.1.0 even though that runtime is outside npm's declared supported engines. This causes multiple failures in two jobs. They belong in one issue because they share the same unsupported-runtime selection, not in separate issues for each assertion.
Affected run
Branch: latest, commit c039090578a5b21a1aa3aba9c96e199feaf1823a, npm 12.1.0.
Workflow: https://github.com/npm/cli/actions/runs/35779328486
| Job |
Evidence |
| Node 23: test nodejs |
parallel/test-release-npm rejects npm's unsupported-engine warning. |
| Node 23: test npm |
Engine-dependent coverage and smoke assertions fail; self-install rejects the unsupported runtime. |
Root cause
The release integration matrix contains 22, 23, and nightly. The Node 23 leg resolves to v23.11.1, while npm 12.1.0 declares:
^22.22.2 || ^24.15.0 || >=26.0.0
The failure is a mismatch between the integration matrix and the supported runtime contract. It is not evidence that npm must support Node 23. The corresponding v11 jobs passed, consistent with that branch's different engine range.
Failures explained by this cause
- Node's
test-release-npm asserts that invoking bundled npm must not print warnings. It fails on npm v12.1.0 does not support Node.js v23.11.1.
- The npm smoke test
basic / npm (no args) expects empty stderr but receives that same warning.
publish and replace global self fails with EBADENGINE, explicitly showing required versus actual engines.
- The subsequently unsatisfied mock-registry requests are consequences of the self-install stopping early, not evidence of another registry failure.
- npm's root tests report 99.97% branch coverage instead of 100%, with the uncovered branch at
lib/cli/entry.js:29, the supported-engine conditional. The suite's normal runtime is unsupported in this job.
The expected lockfile-mismatch error printed by the npm ci negative test is not another failure.
Proposed resolution
Align the stable release integration targets with each release branch's supported engines, while preserving nightly as an intentional forward-compatibility target. Update the source template as well as generated workflows. Do not suppress engine warnings or broaden npm's supported engines merely to make this stale matrix green.
Acceptance criteria
- Stable integration targets satisfy the npm release's declared engines on both branches.
- Node and npm integration jobs pass on the intended supported targets without weakening their assertions.
- Supported Node 24 and 26 coverage is considered when replacing the stale Node 23 leg for npm 12.
Scope boundary
This is separate from #10016 and #10020. The CITGM EALLOWGIT and EUNKNOWNCONFIG failures also occur on supported Node 22, so correcting this matrix will not resolve them.
Summary
The release integration matrix selects Node.js 23 for npm 12.1.0 even though that runtime is outside npm's declared supported engines. This causes multiple failures in two jobs. They belong in one issue because they share the same unsupported-runtime selection, not in separate issues for each assertion.
Affected run
Branch:
latest, commitc039090578a5b21a1aa3aba9c96e199feaf1823a, npm12.1.0.Workflow: https://github.com/npm/cli/actions/runs/35779328486
parallel/test-release-npmrejects npm's unsupported-engine warning.Root cause
The release integration matrix contains
22,23, andnightly. The Node 23 leg resolves tov23.11.1, while npm 12.1.0 declares:The failure is a mismatch between the integration matrix and the supported runtime contract. It is not evidence that npm must support Node 23. The corresponding v11 jobs passed, consistent with that branch's different engine range.
Failures explained by this cause
test-release-npmasserts that invoking bundled npm must not print warnings. It fails onnpm v12.1.0 does not support Node.js v23.11.1.basic / npm (no args)expects empty stderr but receives that same warning.publish and replace global selffails withEBADENGINE, explicitly showing required versus actual engines.lib/cli/entry.js:29, the supported-engine conditional. The suite's normal runtime is unsupported in this job.The expected lockfile-mismatch error printed by the
npm cinegative test is not another failure.Proposed resolution
Align the stable release integration targets with each release branch's supported engines, while preserving nightly as an intentional forward-compatibility target. Update the source template as well as generated workflows. Do not suppress engine warnings or broaden npm's supported engines merely to make this stale matrix green.
Acceptance criteria
Scope boundary
This is separate from #10016 and #10020. The CITGM
EALLOWGITandEUNKNOWNCONFIGfailures also occur on supported Node 22, so correcting this matrix will not resolve them.