Repository navigation
fix(deps): unstick the fast-uri override from a version that is itself vulnerable - #347
Conversation
…f vulnerable The `fast-uri` override was added in tt-a1i#209 to escape a vulnerable release, but it pins an exact version, so it froze at 3.1.5 — which four later advisories cover (GHSA-5jgf-p345-68v8, GHSA-f65p-4m7j-42xc, GHSA-fph4-wmhf-6fwf, GHSA-jqff-g426-hqxp, all affecting 3.0.0 - 3.1.5). `npm audit` on current main reports 2 high-severity findings through `ajv > fast-uri`. An exact pin is the reason this recurred: it stops the resolver from taking the next patch, so each new advisory in the pinned line needs another manual bump. `^3.1.7` keeps the floor the override exists to provide while letting patches through. It stays inside ajv's own `^3.0.1` range, so nothing is forced out-of-range and the resolution is no longer an override in practice. `npm audit`: 0 vulnerabilities.
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Advanced Run ID: ⛔ Files ignored due to path filters (2)
📒 Files selected for processing (1)
Included review availability: Your plan provides up to 10 included reviews per hour; 9 remain after this review. 📝 SummaryReviewed base WalkthroughThe Priority: ➖ Normal Estimated code review effort: 1 (Trivial) | ~2 minutes Merge Risk: ⚪ Minimal · up to The dependency override and lockfile are aligned, with no established merge-blocking issue. 🚥 Pre-merge checks | ❌ 2❌ Failed checks (2 warnings)
Full details: Contribution ScopeExplanation The change is otherwise a focused dependency-security delivery slice, and the description covers the user problem, compatibility impact, and rollback. However, the latest description incorrectly states that Resolution Update the PR description to list Full details: Validation EvidenceExplanation The dependency evidence is mostly consistent, but the latest PR body contains material inaccurate claims. The evaluated head is Resolution Update the PR body to list Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Problem and value
npm auditon currentmainreports 2 high-severity vulnerabilities throughajv > fast-uri:The override added in #209 did the right thing at the time, but it pins an exact version. That froze the tree at
3.1.5, and four advisories published since cover3.0.0 - 3.1.5— so the mechanism that was meant to keepfast-uripatched is now the reason it is not. Every future advisory in that line needs another manual bump.This supersedes the stale #141, which is conflicting, has an unfilled description, and also touches
archify.zip,bin/archify.mjs, andtest/cli.test.mjs.Scope
archify/package.jsonoverride"fast-uri": "3.1.5"→"fast-uri": "^3.1.7", and the resultingarchify/package-lock.json. Two files, 18 insertions, 18 deletions.ajvitself stays at8.20.0.git diff --statis exactly the two dependency files.Deliberately
^3.1.7rather than an exact3.1.7: a caret keeps the security floor the override exists to provide while letting the resolver take future patches on its own. It also sits insideajv's own declared^3.0.1, so nothing is forced out of range —npm ls fast-urino longer reports the dependency asoverridden.4.xwas not used; it would force a major outside that range for no security benefit.Stability impact
fast-uriis reached only throughajv, adevDependencyused byscripts/generate-validators.mjs; it is not in any published runtime path.3.1.5 → 3.1.7is a patch bump within the same major.npm run check:validators(part ofnpm test) passes, so the checked-in output is unchanged.npm cirestores3.1.5. Nothing is written outsidenode_modulesand the lockfile.Tests run
Node.js v26.8.1, macOS. Run from
archify/.The same suite was run on unmodified
main(920543b) in a separate clean clone as a baseline: 1051 / 1020 pass / 0 fail / 31 skipped, identical. No test changed state.All 31 skips are environmental and identical on both sides — 25 gated on
ARCHIFY_CHROME, 5 oncanonical ZIP builds require Node 22, 1 onARCHIFY_MCO_REPO_ROOT. Per CONTRIBUTING, those are reported as skipped, not passed; none of them exercises dependency resolution.Visual evidence
Not applicable — no rendering, layout, or viewer behavior is touched.
Generated artifacts
None regenerated.
check:brand-marks,check:validators, andcheck:release-identityall pass against the checked-in artifacts, which is the evidence that their inputs did not change.archify.zipis deliberately untouched: no host-visible plugin or Skill bytes change here, and CONTRIBUTING asks that release identity stay out of an ordinary PR.Checklist
npm testinarchify/.npm auditis the check that fails before this change and passes after.Maintainer integration update
Candidate
f110d0dae85f08d3477e133d81255850e04b9967includes main3d972342c52127b0fd81e9c4d8f4237d2e9f848b. Local official Node 22.23.2: npm ci succeeds, check:validators passes, and npm audit reports 0 vulnerabilities.Correction to the original artifact assessment: the package stager retains package.json overrides, so the canonical ZIP must also change. Rebuilt it with official Node 22; the archive entry list is identical and its only changed entry is archify/package.json, whose only changed field is the fast-uri override. Renderer and Viewer bytes are unchanged. The initial integration CI caught the stale ZIP; the corrected final-head CI is required before merge.