Skip to content

fix(cli): pin fast-uri to the patched Ajv-compatible v3 range - #830

Draft
BlandineRdl wants to merge 1 commit into
ai-driven-dev:nextfrom
BlandineRdl:BlandineRdl/463
Draft

fix(cli): pin fast-uri to the patched Ajv-compatible v3 range#830
BlandineRdl wants to merge 1 commit into
ai-driven-dev:nextfrom
BlandineRdl:BlandineRdl/463

Conversation

@BlandineRdl

@BlandineRdl BlandineRdl commented Sep 10, 2026

Copy link
Copy Markdown

🎯 What & why

cli/pnpm-workspace.yaml floors fast-uri at >=3.1.2 with no upper bound, so the lockfile resolved fast-uri@4.0.0 on the production Ajv path — outside the ^3.0.1 range ajv@8 actually declares. This constrains the override to >=3.1.6 <4: the smallest range that keeps Ajv 8 compatibility and excludes every vulnerable v3 release reported in #463, without pulling in a major the CLI was never tested against.

🛠️ How it works

  • cli/pnpm-workspace.yaml: fast-uri: '>=3.1.2' => '>=3.1.6 <4'
  • cli/pnpm-lock.yaml: fast-uri@4.0.0 => fast-uri@3.1.7 for ajv@8.20.0 and ajv@8.18.0

Seven lines across two files. Dependency resolution only, no CLI or context change.

🧪 How to verify

  • cd cli && pnpm why fast-uri --prod => Found 1 version of fast-uri, fast-uri@3.1.7 under ajv@8.20.0
  • cd cli && pnpm audit --prod --json => {'info': 0, 'low': 0, 'moderate': 0, 'high': 0, 'critical': 0}
  • cd cli && pnpm test:unit => 274 files, 3710 tests passed
  • cd cli && pnpm test:integration => 104 files, 1309 tests passed
  • cd cli && pnpm install --lockfile-only leaves the lockfile untouched, and its supply-chain policy check passes (527 entries)

⚠️ Heads-up

📋 Against the acceptance criteria of #463

Two criteria are met in intent but not to the letter — stated here so nobody ticks a box that does not match what landed.

  1. cli/package.json constrains fast-uriin intent only. On next the override lives in cli/pnpm-workspace.yaml; pnpm 12 no longer reads package.json's pnpm field, and the file itself says so (cli/pnpm-workspace.yaml:9-13). The ticket predates that move.
  2. Regenerated cli/pnpm-lock.yamloutcome yes, method no. The four fast-uri entries were edited directly, then validated by the pinned pnpm 12.3.4: it rewrites nothing, the supply-chain policy passes (527 entries), and --frozen-lockfile installs 3.1.7. A full regeneration also passes, but adds ~230 lines of unrelated churn (libc: fields, supports-color peer annotations) — outside the "one small security commit" boundary the ticket sets.
  3. No fast-uri advisory — met, and pnpm audit --prod reports zero at every severity.
  4. Manifest-validation tests pass — met: schema-validator.unit, codex-plugin-manifest.unit, claude-marketplace-manifest.unit, manifest-repository-adapter.integration => 4 files, 32 tests. schema-validator.ts:8 is the actual require("ajv") consumer.
  5. Lands on next before feat(cli): one shared framework source per machine, user scope and session telemetry #795 merges — not achievable. feat(cli): one shared framework source per machine, user scope and session telemetry #795 was merged on 2026-09-09; this branch is based on next (42f572ca), which contains it.

🔗 Linked issue

Closes #463

✅ I certify

  • I DO CERTIFY I READ EACH LINE OF THE PULL REQUEST BECAUSE I AM A SOFTWARE ENGINEER, NOT A AI PUPPY.

🤖 Generated with Claude Code

https://claude.ai/code/session_01BZF7CTRvfq3FWDqaCWhkCJ

The >=3.1.2 floor is open-ended, so the lockfile resolved fast-uri@4.0.0
on the production Ajv path - outside the ^3.0.1 range ajv@8 declares.
Constrain it to >=3.1.6 <4: the smallest range that keeps Ajv 8
compatibility and excludes every reported vulnerable v3 release.

Closes ai-driven-dev#463

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BZF7CTRvfq3FWDqaCWhkCJ
@BlandineRdl
BlandineRdl changed the base branch from main to next September 10, 2026 15:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

fix(cli): patch vulnerable fast-uri on the production Ajv path

1 participant