Files
ruvnet__ruflo/v3/@claude-flow/browser/package.json
ruv f08318f2c7 fix(ci): green up the 3 audit jobs newly visible after the YAML fix
With #2267's YAML break gone and the pnpm-lock refreshed, the 25 newly-
visible failures collapsed to 3 genuinely-independent audit failures.
Fixing all three.

#2046 — Supply-chain audit (1 unaccepted critical CVE)
  Vitest <4.1.0 UI server arbitrary-file-read/exec (GHSA-5xrq-8626-4rwp,
  CVSS 9.8) was unaccepted in v3/@claude-flow/browser.
  • Bumped `vitest` spec from ^4.0.16 → ^4.1.0 in browser package.json.
  • Refreshed the workspace pnpm-lock.
  • Standalone-publish package-lock.json carries workspace:* refs that
    `npm install` can't resolve in isolation, so I added a time-boxed
    (expires 2026-09-02) accepted-findings entry citing the limited
    exposure (devDependency + UI-server-only attack vector) and pinning
    the next workspace-coordinated lockfile rebuild as the trigger to
    remove it. Tracking: ruflo#2270.

ADR-112 — Tool description discoverability (2 missing "Use when …")
  • hooks_task-completed: added "Use when native TaskUpdate is wrong
    because the runtime also needs to record the outcome as a learning
    signal and emit the standard pipeline event".
  • hooks_intelligence_unified-stats: added "Use when calling the four
    narrow aggregators one at a time is wrong because cross-store drift
    goes silent — this tool surfaces it in the `consistency` block".
  327/327 tools now pass; baseline stays at 0.

#1921 — Hook-command install safety (4 missing invariants)
  Both #1951 and #1989 fixes were silently retired by #2196's statusline
  delegation refactor. Updated scripts/audit-fix-invariants.mjs to track
  the new reality without dropping coverage:
  • #1951 (marketplaces/ruflo) — substring became `path.join(home,
    '.claude', 'plugins', 'marketplaces', 'ruflo', …)` which the literal
    substring check couldn't see. Switched to a regex form that matches
    the path.join breakup.
  • #1989 (SQLite magic-bytes + page-count clamp) — superseded entirely
    by #2196's delegation pattern: statusline-generator no longer reads
    raw memory.db bytes; it shells out to `hooks-statusline --json`
    which queries AgentDB via the typed SDK. The regression vector is
    closed by ARCHITECTURE. Replaced the two #1989 invariants with one
    #2196 invariant that locks in the delegation pattern, so a future
    refactor that reintroduces raw-bytes reading is caught BEFORE the
    SQLite magic check would be relevant. Audit-script convention says
    "do NOT delete without confirming the regression is impossible by
    another mechanism" — this is the documented confirmation.
  37 invariants, all present.

Local: all 3 audits + the 2 new regression smokes pass.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-06-02 04:26:05 -04:00

2.5 KiB