Split out of #386 so a framework major bump is not bundled into a CI repair.
Why this is separate
Dependency audit runs npm audit --audit-level=high for three packages: explorer, sdk/typescript, sdk/react. #386 fixes the nanoid advisory in the two SDK lockfiles. explorer is the remaining blocker and it needs a breaking change.
Worth noting: explorer runs first in that step list, so it fails the job before the SDK steps are reached. The job has never passed on dev — every recorded Security Scan run is failure.
Current state
explorer/package.json pins astro: ^4.16.18. A non-breaking npm audit fix takes it from 13 advisories to 5 (2 moderate, 3 high). The 3 that remain all require astro@5.18.2:
| Advisory |
Severity |
Fix |
sharp <0.35.0 — libvips CVE-2026-33327, -33328, -35590, -35591 (GHSA-f88m-g3jw-g9cj) |
HIGH |
astro 5.18.2 (semver-major) |
vite |
HIGH |
astro 5.18.2 (semver-major) |
astro (direct) |
HIGH |
5.18.2 (semver-major) |
The four that do fix cleanly (fast-uri, js-yaml, nanoid, postcss) are transitive and resolve with a plain npm audit fix.
What makes this risky
explorer has no CI job — nothing builds or type-checks it (also flagged as a P3 item in #371). security-scan.yml audits it, but an astro 4→5 upgrade would land with no automated signal that the site still builds. Recommend pairing the upgrade with an explorer build/check job so the regression surface is covered.
Suggested scope
- Add an
explorer CI job running astro build and astro check.
- Upgrade astro 4.16.18 → 5.x, working through the 4→5 migration guide.
- Confirm
npm audit --audit-level=high exits 0.
Note for whoever picks this up: regenerate explorer/package-lock.json on Linux, not Windows. Windows npm prunes optional transitive packages the ubuntu runner requires, which produces a lockfile where local npm ci passes and CI fails with Missing: @emnapi/core@... from lock file. That happened in #386 (commit d50d796, reverted in 53c8c84).
Split out of #386 so a framework major bump is not bundled into a CI repair.
Why this is separate
Dependency auditrunsnpm audit --audit-level=highfor three packages:explorer,sdk/typescript,sdk/react. #386 fixes the nanoid advisory in the two SDK lockfiles.exploreris the remaining blocker and it needs a breaking change.Worth noting:
explorerruns first in that step list, so it fails the job before the SDK steps are reached. The job has never passed ondev— every recorded Security Scan run isfailure.Current state
explorer/package.jsonpinsastro: ^4.16.18. A non-breakingnpm audit fixtakes it from 13 advisories to 5 (2 moderate, 3 high). The 3 that remain all requireastro@5.18.2:sharp<0.35.0 — libvips CVE-2026-33327, -33328, -35590, -35591 (GHSA-f88m-g3jw-g9cj)viteastro(direct)The four that do fix cleanly (
fast-uri,js-yaml,nanoid,postcss) are transitive and resolve with a plainnpm audit fix.What makes this risky
explorerhas no CI job — nothing builds or type-checks it (also flagged as a P3 item in #371).security-scan.ymlaudits it, but an astro 4→5 upgrade would land with no automated signal that the site still builds. Recommend pairing the upgrade with anexplorerbuild/check job so the regression surface is covered.Suggested scope
explorerCI job runningastro buildandastro check.npm audit --audit-level=highexits 0.Note for whoever picks this up: regenerate
explorer/package-lock.jsonon Linux, not Windows. Windows npm prunes optional transitive packages the ubuntu runner requires, which produces a lockfile where localnpm cipasses and CI fails withMissing: @emnapi/core@... from lock file. That happened in #386 (commit d50d796, reverted in 53c8c84).