fix(deps): patch 6 build-dependency CVEs (astro/vite/js-yaml/devalue)#364
Conversation
…toolchain Trivy flagged 6 fixable CVEs in pre-existing build-tooling deps. A full lockfile re-resolve cleared them but broke the frontend build (vite/rolldown bumps). Instead, bump only the docs/astro subtree and the v4 js-yaml, leaving the frontend's vite@8 / rolldown@1.0.3 and changesets' read-yaml-file js-yaml@3 untouched: - astro 6.4.2 -> 6.4.8 (docs devDep range; CVE-2026-54298, CVE-2026-54299) - vite 7.3.2 -> 7.3.6 (docs-scoped devDep; CVE-2026-53632, CVE-2026-53571) - devalue 5.8.0 -> 5.8.1 (transitive via astro; CVE-2026-42570) - js-yaml 4.1.1 -> 4.2.0 (root devDep pins the v4 instance, deduping the nested @astrojs/@changesets/@eslint copies; CVE-2026-53550) The frontend vite@8.0.16 and rolldown@1.0.3 are unchanged (separate workspace), so the app build is unaffected. Verified locally: frozen lockfile, frontend + docs builds, typecheck, lint, and the scripts test suite all pass. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011v4Nr8YnMGMRziVhgqTc1z
|
❌ PR Checks Failed
❌ Dependency Alignment ErrorsHow to fix: The same external dependency is declared at divergent ranges across workspace @enyineer The above code quality issues were found in this PR. Please fix them before merging. |
The explicit `vite` devDependency added to docs/package.json tripped syncpack's unified-external-dependencies group, which forces `vite` to the repo's highest range (the frontend's ^8.0.16). The pin was redundant: astro 6.4.8 depends on `vite: ^7.3.2`, which already resolves to the patched 7.3.6 transitively. Removing the explicit pin keeps the CVE fix (vite@7.3.6, devalue@5.8.1, js-yaml@4.2.0, astro@6.4.8) while leaving the frontend's vite@8.0.16 untouched and satisfying `bun run deps:check`. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011v4Nr8YnMGMRziVhgqTc1z
✅ All PR Checks Passed
@enyineer All quality checks have passed. This PR is ready for your review. |
Follow-up to #362 (merged): clears the 6 pre-existing Security (Trivy) CVEs in build-tooling deps, without the full-re-resolve breakage an earlier attempt hit.
What
astro(docs)vite(docs-scoped)devalue(via astro)js-yaml(v4)How (and why it's safe)
A full
rm bun.lock && bun installfixes the CVEs but bumps the frontend'svite@8.0.16→8.1.0androlldown@1.0.3→1.1.3, which breaks the frontend build (and pinning them back didn't help — a third transitive dep regressed). So this is a targeted bump:docs/package.json:astro ^6.4.6+ a docs-scopedvite ^7.3.5devDep → only the docs tree gets the fixes; the frontend workspace'svite@8is a separate resolution, untouched.package.json: ajs-yaml ^4.2.0devDep pins the v4 instance, and the 5 nested@astrojs/*/@changesets/parse/@eslint/eslintrcjs-yaml@4.1.1lockfile entries are removed so they dedupe to4.2.0.read-yaml-file'sjs-yaml@3.14.2(uses the removedsafeLoad, and Trivy did not flag it) stays on v3.Net: a 3-file diff; the frontend's
vite@8.0.16+rolldown@1.0.3are byte-for-byte unchanged.Verification (local)
bun install --frozen-lockfile— consistent.bun run typecheck✓,bun run lint✓,bun test core/scripts(incl. docs-index drift guard) ✓.vite@7.3.2/js-yaml@4.1.1/astro@6.4.2/devalue@5.8.0/rolldown@1.1.3remain innode_modules.🤖 Generated with Claude Code
https://claude.ai/code/session_011v4Nr8YnMGMRziVhgqTc1z