Filed by the domain:services PM seat (#6021) from a measured stand-down on PR #16996. ⛔ This is not a defect in that PR — it is a repo-wide condition that PR happened to be the first to observe. The domain label is where it was found; relabel if a lane owns dependency policy.
What is failing
The Audit dependencies for known vulnerabilities (OSV-Scanner) step of Validate Package Dependencies. Every other step of that job passes, including pnpm install --frozen-lockfile.
Total 7 packages affected by 15 known vulnerabilities (2 Critical, 2 High, 11 Medium)
Every one has a fix version available.
Why this is nobody's PR — measured, not argued
Two independent readings, both taken because "it's probably pre-existing" is exactly the assumption that should not be trusted here:
- The lockfile's registry contents did not move. Extracting every registry package tuple from
pnpm-lock.yaml at three heads — 1ea349f0e (main's last scheduled validate-deps run, which SUCCEEDED, 2026-09-08 03:03), fe2b7554a (the observing PR's merge base) and c7f481346 (its head) — gives 2748 tuples, byte-identical at all three, diff exit 0 both ways. OSV-Scanner resolves registry packages from the lockfile, so its input is provably the same input that scanned green.
- All seven flagged packages sit at identical versions at all three heads —
next 16.3.1, sharp 0.35.3, nodemailer 9.0.5, hono 4.12.34 + 4.13.2, vitest 4.1.10, @vitest/mocker 4.1.10.
⇒ The same package set scanned green ~22 hours ago and red now, with no lockfile movement in between. The advisory database moved, not the repository.
⚠️ One reading that could not be taken, stated rather than hidden: a direct query to api.osv.dev to date the advisory publications was denied by the egress proxy (CONNECT 403). That is NOT MEASURED — not a pass. The advisory IDs and severities above are quoted from the CI job log, and the "database moved" conclusion rests on the lockfile identity above, ⛔ not on anything retrieved from OSV.
Why it needs a card rather than a note
Because nothing in the lockfile moved, this does not stay contained:
- main's next scheduled
validate-deps run will go red on its own.
- Every PR opened from now on inherits this red. The observing PR is currently the only failure purely because it is the first
validate-deps run since the advisories landed — the 12 runs before it are all green and all predate them.
- Two of the advisories are Critical (
next, 9.5 and 9.0).
So the choice is not "fix it or leave it" — it is "bump, or decide the gate tolerates these and say so explicitly". Leaving it unaddressed means every future PR carries a red whose meaning decays to noise, which is how a real advisory gets missed later.
Scope note for whoever takes it
next, sharp and nodemailer are runtime/product dependencies; vitest and @vitest/mocker are test tooling; hono appears at two versions and both are flagged, so a bump there needs the duplicate resolved or both moved. ⛔ Do not fold this into an unrelated card — it was explicitly kept out of #16829's p1 audit-timestamp fix on the grounds that widening a bug fix into a dependency-security sweep is a different act needing its own review.
Filed by the
domain:servicesPM seat (#6021) from a measured stand-down on PR #16996. ⛔ This is not a defect in that PR — it is a repo-wide condition that PR happened to be the first to observe. The domain label is where it was found; relabel if a lane owns dependency policy.What is failing
The
Audit dependencies for known vulnerabilities (OSV-Scanner)step ofValidate Package Dependencies. Every other step of that job passes, includingpnpm install --frozen-lockfile.nextsharpnodemailerhonovitest@vitest/mockerEvery one has a fix version available.
Why this is nobody's PR — measured, not argued
Two independent readings, both taken because "it's probably pre-existing" is exactly the assumption that should not be trusted here:
pnpm-lock.yamlat three heads —1ea349f0e(main's last scheduledvalidate-depsrun, which SUCCEEDED, 2026-09-08 03:03),fe2b7554a(the observing PR's merge base) andc7f481346(its head) — gives 2748 tuples, byte-identical at all three,diffexit 0 both ways. OSV-Scanner resolves registry packages from the lockfile, so its input is provably the same input that scanned green.next 16.3.1,sharp 0.35.3,nodemailer 9.0.5,hono 4.12.34 + 4.13.2,vitest 4.1.10,@vitest/mocker 4.1.10.⇒ The same package set scanned green ~22 hours ago and red now, with no lockfile movement in between. The advisory database moved, not the repository.
api.osv.devto date the advisory publications was denied by the egress proxy (CONNECT 403). That is NOT MEASURED — not a pass. The advisory IDs and severities above are quoted from the CI job log, and the "database moved" conclusion rests on the lockfile identity above, ⛔ not on anything retrieved from OSV.Why it needs a card rather than a note
Because nothing in the lockfile moved, this does not stay contained:
validate-depsrun will go red on its own.validate-depsrun since the advisories landed — the 12 runs before it are all green and all predate them.next, 9.5 and 9.0).So the choice is not "fix it or leave it" — it is "bump, or decide the gate tolerates these and say so explicitly". Leaving it unaddressed means every future PR carries a red whose meaning decays to noise, which is how a real advisory gets missed later.
Scope note for whoever takes it
next,sharpandnodemailerare runtime/product dependencies;vitestand@vitest/mockerare test tooling;honoappears at two versions and both are flagged, so a bump there needs the duplicate resolved or both moved. ⛔ Do not fold this into an unrelated card — it was explicitly kept out of #16829's p1 audit-timestamp fix on the grounds that widening a bug fix into a dependency-security sweep is a different act needing its own review.