…iticals
The 4.x dependency set already requires Node 20.19+ at runtime (chokidar@5
declares `engines.node >= 20.19.0`, commander/glob require >=20), but
package.json still advertised `node: >=16.0` — so Node 16-18 users got a clean
install and then broke inside dependencies. Raise the floor to match what CI
actually tests, and sync the documented minimum.
Audit hygiene (npm audit --omit=dev, no --force):
- multer ^2.0.2 -> ^2.1.1 (out of the <=2.1.0 advisory range; only consumer is
a comment in lib/test-server.js)
- uuid 11.1.0 -> 11.1.1 (patch, clears the buffer-bounds advisory)
- tmp override 0.2.5 -> 0.2.6 (advisory wants <0.2.6 gone)
- npm audit fix (within ranges) for the rest
Result: prod npm audit goes from 38 vulnerabilities (2 critical, 16 high) to 3
(0 critical, 1 high). The remaining 3 all route through mocha@11.7.5's pinned
transitive deps (diff@7.0.0 via `^7.0.0`, serialize-javascript@6.0.2 via
`^6.0.2`); the patched versions cross mocha's declared ranges and npm's only
offered fix is `--force` to mocha@11.3.0 (a breaking change), deferred as a
deliberate major-bump decision. They are DoS-class issues in a test runner's
diff/serialization, low exploitability in normal use.
Docs: state Node 20.19+ in migration-4.md and mcp.md.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
What
Two pre-GA dependency-hygiene fixes for 4.x.
1. Correct the Node engines floor
package.json advertised node: >=16.0, but the 4.x dependency set already requires Node 20.19+ at runtime:
A user on Node 16–18 got a clean npm install (warning only) and then broke inside dependencies at runtime — the worst version error, during an RC when early adopters are exactly who's installing. >=20.19.0 matches what CI already tests (Node 26.x / 20.x).
Docs updated to state Node 20.19+ (docs/migration-4.md, docs/mcp.md).
2. Clear high/critical production audit findings (no --force)
npm audit --omit=dev:
Changes (all within-range / patch / override — no --force, no direct-dep major bump):
Remaining 3 findings — justified (no non-breaking fix)
All route through mocha@11.7.5's pinned transitive deps:
mocha@11.7.5 is already the latest mocha; npm's only offered fix is --force to mocha@11.3.0 (a breaking change), which is a deliberate major-bump decision deferred per the plan. These are DoS-class issues in a test runner's diff/serialization of test output — low exploitability in CodeceptJS's usage.
Verification
Notes for reviewers
🤖 Generated with Claude Code