Both halves of this bug were the same failure mode: allowScripts is keyed by exact name@version, so an entry stops matching the moment a dependency moves and npm demotes the blocked script to a warning nobody reads. The breakage surfaces much later as a missing native artifact on one platform. Assert the two relationships that make the allowlist meaningful — every versioned pin resolves to a version the lockfile installs, and every package the lockfile marks as having an install script carries a decision. A bare-name key stays exempt from the version check so a standing denial like unicode-animations survives bumps. Lives in tests-js because the CI change classifier does not run the Python suite for a manifest-only diff. |
||
|---|---|---|
| .. | ||
| allow-scripts-sync.test.ts | ||
| assistant-ui-tap-compat.test.ts | ||
| desktop-mac-entitlements.test.ts | ||
| eslint.config.mjs | ||
| package-json-lazy-deps.test.ts | ||
| package.json | ||
| tsconfig.json | ||
| vitest.config.ts | ||