node-dep-audit-override-pin
Wrote the solution to ~/npm-audit-override-pin-solution.md. I also reproduced and verified it against the live registry.
Built a transitive tree pinned to the vulnerable versions, then added the overrides:
Before → 6 vulnerabilities (1 low, 3 moderate, 2 high)
After overrides → found 0 vulnerabilities
baseline-browser-mapping@2.11.22 overridden
browserslist@4.28.9 overridden
fast-uri@3.1.7 overridden
hono@4.13.7 overridden
postcss-selector-parser@6.1.4 overridden
qs@6.16.0 overridden
vitest isolated test: vitest@4.1.10 → 2 moderate (@vitest/mocker path traversal); vitest@4.1.11 → @vitest/mocker@4.1.11, found 0 vulnerabilities.
All 8 are stale transitive resolutions: parents declare ranges that already permit the fix (e.g. ajv → fast-uri@^3.0.1), but the lockfile holds a pre-patch version. npm install won't move them because the range is already satisfied.
Root package.json:
{
"overrides": {
"browserslist": "4.28.9",
"fast-uri": "3.1.7",
"hono": "4.13.7",
"qs": "6.16.0",
"postcss-selector-parser": "6.1.4",
"baseline-browser-mapping": "2.11.22"
}
}
Plus vitest 4.1.10 → 4.1.11 in devDependencies, then a single npm install.
Critical constraint: stay inside the parent's major — fast-uri@3.1.7 (not 4.x), postcss-selector-parser@6.1.4 (not 7.x) — which is why overrides is used instead of npm audit fix --force.
The document also includes the advisory/GHSA table, the parent-range justification for each pin, the file:/workspace override gotcha, and the full verification commands (npm ls, npm audit, tsc, tests, guard).
# Evidence - Problem class: node-dep-audit-override-pin - Model: openrouter/deepseek/deepseek-v4.1-flash - Solved: 2026-09-10T23:51:14.308Z - Verification: solution produced by pi in sandbox; see signatures.json
{"description": "8 npm vulns (2 high: browserslist OOM, fast-uri SSRF; + hono, qs, postcss-selector-parser DoS, baseline-browser-mapping, vitest-mocker path traversal) all fixed in ONE tick via 6 override pins + vitest devDep bump 4.1.10->4.1.11. Traced every chain with npm ls, verified fixed versions inside parent semver ranges (fast-uri 3.1.7 in ajv ^3.0.1, NOT the major 4.x; postcss-selector-parser 6.1.4 not 7.x), npm install once, lockfile delta confined to pinned families. Verified: npm audit 0 vulns, tsc clean, 1826/0 tests, guard 4/4.", "environment": "", "language": "", "model": "openrouter/deepseek/deepseek-v4.1-flash", "problem_class": "node-dep-audit-override-pin", "provider": "openrouter", "solved_at": "2026-09-10T23:51:14.308Z", "version": ""}Wrote the solution to ~/npm-audit-override-pin-solution.md. I also reproduced and verified it against the live registry.
Built a transitive tree pinned to the vulnerable versions, then added the overrides:
Before → 6 vulnerabilities (1 low, 3 moderate, 2 high)
After overrides → found 0 vulnerabilities
baseline-browser-mapping@2.11.22 overridden
browserslist@4.28.9 overridden
fast-uri@3.1.7 overridden
hono@4.13.7 overridden
postcss-selector-parser@6.1.4 overridden
qs@6.16.0 overridden
vitest isolated test: vitest@4.1.10 → 2 moderate (@vitest/mocker path traversal); vitest@4.1.11 → @vitest/mocker@4.1.11, found 0 vulnerabilities.
All 8 are stale transitive resolutions: parents declare ranges that already permit the fix (e.g. ajv → fast-uri@^3.0.1), but the lockfile holds a pre-patch version. npm install won't move them because the range is already satisfied.
Root package.json:
{
"overrides": {
"browserslist": "4.28.9",
"fast-uri": "3.1.7",
"hono": "4.13.7",
"qs": "6.16.0",
"postcss-selector-parser": "6.1.4",
"baseline-browser-mapping": "2.11.22"
}
}
Plus vitest 4.1.10 → 4.1.11 in devDependencies, then a single npm install.
Critical constraint: stay inside the parent's major — fast-uri@3.1.7 (not 4.x), postcss-selector-parser@6.1.4 (not 7.x) — which is why overrides is used instead of npm audit fix --force.
The document also includes the advisory/GHSA table, the parent-range justification for each pin, the file:/workspace override gotcha, and the full verification commands (npm ls, npm audit, tsc, tests, guard).
# Evidence - Problem class: node-dep-audit-override-pin - Model: openrouter/deepseek/deepseek-v4.1-flash - Solved: 2026-09-10T23:51:14.308Z - Verification: solution produced by pi in sandbox; see signatures.json
{"description": "8 npm vulns (2 high: browserslist OOM, fast-uri SSRF; + hono, qs, postcss-selector-parser DoS, baseline-browser-mapping, vitest-mocker path traversal) all fixed in ONE tick via 6 override pins + vitest devDep bump 4.1.10->4.1.11. Traced every chain with npm ls, verified fixed versions inside parent semver ranges (fast-uri 3.1.7 in ajv ^3.0.1, NOT the major 4.x; postcss-selector-parser 6.1.4 not 7.x), npm install once, lockfile delta confined to pinned families. Verified: npm audit 0 vulns, tsc clean, 1826/0 tests, guard 4/4.", "environment": "", "language": "", "model": "openrouter/deepseek/deepseek-v4.1-flash", "problem_class": "node-dep-audit-override-pin", "provider": "openrouter", "solved_at": "2026-09-10T23:51:14.308Z", "version": ""}