Repository navigation
fix(deps): override vulnerable transitive packages and move the pipeline to zod 4 - #184
Merged
Merged
Conversation
…ine to zod 4 Dependabot's security updates have failed on every run since 2026-10-06 because the fixed versions sit outside the ranges the parents declare. Pin them through pnpm.overrides, each scoped to its major so no package jumps a major version: proxy-addr 2.0.8 (the critical alert), compression 1.8.2, body-parser 1.20.9, qs 6.17.1, js-yaml 3.15.2 and 4.3.2, fast-uri 3.1.9, ip-address 10.7.5, brace-expansion 1.1.21, 2.1.7 and 5.0.12, and zod 4.6.7 under eslint-plugin-react-hooks, whose "^3 || ^4" range needs the parent-scoped form. The pipeline package's own zod moves from 3.25.76 to 4.6.6+; zod 4 still accepts the single-argument z.record() its IR schema uses, and its 133 tests pass. Left alone on purpose: zod 3.23.8 under chromium-bidi (an exact pin; the fixed chain is @lhci/cli 0.16 with Lighthouse 13, which changes the performance gates) and minimatch below 11.0.1 (fixed only by forcing a major onto glob 7 and eslint). extract-zip has no fixed release and is dev-only, reached through @lhci/cli. pnpm audit: 39 findings before, 8 after (extract-zip x2, zod, minimatch, basic-ftp). GUI lint, typecheck and tests, the pipeline and claude suites, and the GUI smoke on macOS all pass. Refs #169 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Dependabot's security updates have failed on every run since 2026-10-06. The original blocker (source-map-js) cleared with the vite bump; the runs now fail on minimatch, whose newest advisory is fixed only in 11.0.1 (
security_update_not_possible, latest resolvable 3.1.5). 26 alerts were open when this started: 1 critical, 13 high, 10 medium, 2 low.This pins every fix that is reachable without a major jump through
pnpm.overridesin the rootpackage.json, each scoped to its major (thejs-yaml@3form only applies where the parent's declared range is inside that major), and moves the pipeline package's own zod to 4.6.6+. The lockfile diff is exactly these version moves; nothing else re-resolved.~2.0.7)^1.7.4)^3.13.1); cosmiconfig, builder-util, @eslint/eslintrc (^4.x)^3.0.1)^10.1.1)~6.15.1)~1.20.5)^3.25.0 || ^4.0.0, so this one uses the parent-scopedeslint-plugin-react-hooks>zodformpackages/pipeline/package.json; zod 4.6.7 still accepts the single-argumentz.record()the IR schema uses, and the 133 pipeline tests passRelated Issue
Refs #169. It stays open: two alerts remain that this PR deliberately does not force (see below), and the Dependabot run will stay red until they are fixed or dismissed.
Type of Change
Decisions left to you
zod 3.23.8 under chromium-bidi 0.6.3 (alert chore(deps-dev): bump electron from 39.8.5 to 39.8.10 #160, high, the lockfile copy). chromium-bidi pins
zod: 3.23.8exactly, under puppeteer-core 22, lighthouse 12, @lhci/cli 0.14. The parent path is @lhci/cli 0.16.0 (lighthouse 13.6, puppeteer-core 25, chromium-bidi 157 on zod^4.6.5): a Lighthouse major that will move the scores the Lighthouse CI gates assert, so it wants its own PR with an e2e run on the isolated stack. The alternative is dismissing chore(deps-dev): bump electron from 39.8.5 to 39.8.10 #160 as tolerable risk: dev-only, and Lighthouse drives Chrome over CDP, so the BiDi module that imports zod is never loaded.minimatch below 11.0.1 (alert deps: Dependabot security updates fail on every run (source-map-js); 1 critical alert open #169, medium, "potential denial of service via globparts amplification", published 2026-10-30, no backports). The only fix forces minimatch 11 onto glob 7 (electron-builder's asar packaging), eslint 9 and typescript-eslint, which is the major jump the issue's brace-expansion rule avoids. This is the alert the Dependabot run currently fails on. Dismissing it as tolerable risk (dev tooling; patterns come from our own config) keeps the run green until the parents move.
extract-zip (alerts Packaging, distribution & documentation #106, ci: enforce WordPress Coding Standards (PHPCS) on pull requests #113, high, no fixed release). Reached only through @lhci/cli, lighthouse, puppeteer-core, @puppeteer/browsers, where it unpacks browser downloads; nothing ships to production from it (the GUI bundle carries only
out/**and react). The issue says to dismiss these with a note. I tried from the session and the permission classifier blocked the API write, so:sprintf-js no longer has an open alert. basic-ftp (pnpm audit only) is fixed in 6.2.1 while get-uri declares
^5; left alone for the same reason as 2.After merging, trigger Dependabot from Insights, Dependency graph, Dependabot, "Check for updates", rather than waiting for the schedule.
Verification
pnpm audit: 39 findings before (1 critical, 18 high, 18 moderate, 2 low), 8 after: extract-zip x2 (no fix), zod 3.23.8, minimatch, basic-ftp. No critical or high with a reachable fix remains../scripts/security-audit/scan-dependencies.sh .(what the Security Audit workflow gates on) exits 0.pnpm --filter @flavian/gui lint,typecheck,test(55),pnpm test:pipeline(133),pnpm test:claude(88),pnpm lint:commits.pnpm --filter @flavian/gui build && pnpm --filter @flavian/gui smokeon macOS: "GUI launched and reached the setup view". Note for anyone running it from a VS Code terminal: the extension host exportsELECTRON_RUN_AS_NODE=1, which makes the Electron binary run as plain Node and Playwright report "Process failed to launch"; unset it first.pnpm test:init: 69 of 71, the same two Canva export failures as onmainon macOS (scripts/canva-fse, untouched here, green in CI on Ubuntu).Checklist
fix(deps), so release-please cuts a patch release with a changelog entry)This branch is stacked on #182 (the two lockfile changes touch adjacent js-yaml lines); merge either first, the other rebases cleanly.
🤖 Generated with Claude Code