Skip to content

v4.0.0 — Compound V 4: standalone, asks first, proves before done

Choose a tag to compare

@github-actions github-actions released this 22 Oct 23:24

Compound V is now a standalone plugin, compound-v. Its cycle is brainstorm → build (one builder
researches, plans and codes) → verification with tree-bound receipts, and Claude Code does the orchestration. The
salon experiments on 3.9.1 (docs/v4/salon-report.md) showed the light flow
beating the full v3 pipeline on every blind judgement at a sixth to a third of the cost. The component-by-component
reasoning is in docs/v4/transition.md. v4's own results, against plain Claude Code on two
briefs and on changes to existing code, are in docs/v4/benchmark-summary.md.

Removed — and why (transition table)

  • The orchestration engine (workflow emitter, manifest and validator, integration gate, collect,
    failure policy, fast path, /v:dispatch, /v:orchestrate, /v:resume, /v:collect, /v:status):
    it added nothing at salon size, and Claude Code now orchestrates natively.
  • Engine agents (parallel-dispatcher, partition-reviewer, transport, implementer,
    spec-reviewer): their jobs went with the engine; one reviewer agent replaces the review gate.
  • The lane-guard hook: the most expensive ambient hook; lanes are now checked before merge by
    lane finish.
  • Epics (/v:epic, epic state, arbiter, marathon watcher): two epics in the plugin's life, and
    native /goal and /loop cover the rest.
  • V-memory as an engine (FTS5 index, embeddings, /v:remember, /v:memory-refresh): its benefit
    in runs was never shown; the name now means the docs themselves, searched by a read-only agent.
  • Headless build workers (Codex, opencode, Antigravity, Cursor): Antigravity and Cursor never ran a
    real job; Codex stays as a reviewer, and workers return only with a deterministic result check.
  • /v:adr: decisions now live in the spec's "Decided by the owner" and "My calls" sections.
  • /v:models and model discovery/resolution: replaced by the models map /compound-v:init
    writes and the plan's task → model table.
  • Run observability (liveness probe, transcript watch, dashboard): they watched engine jobs that no
    longer exist.
  • Statistics (scorecard, /v:lessons, triage outcomes, the usage extractor/aggregator): nothing
    decided on their data; run cost now comes from the CLI's own cost record.
  • Triage pre-eval (DIRECT/SCOPED/FULL, the impact taxonomy, the paid request classifier,
    /v:triage): replaced by deterministic light/full tiers plus escalation on the diff's content.
  • The Superpowers dependency: v4 has its own brainstorm and plan skills.
  • evals/: the suite was never scored.
  • v3's docs moved to docs/archive/v3/.

Added

  • Skills brainstorm, plan, build, verify and a shorter init; onboard and pr-review
    carried over. All are /compound-v:<name>.
  • One CLI, scripts/compound-v.py over scripts/cvcore/: canonical tree snapshot, run record
    (docs/compound-v/runs/), HMAC-signed receipts bound to the tree and the acceptance table, scope
    check, diff escalation, lane gate, usage, band data.
  • The verification bar: tests, a real-browser (or main-flow) check, a scope check and, for full
    runs, an executable review in an isolated checkout by Codex or a Claude Opus subagent, at most two
    rounds. Outcomes verified, incomplete or failed; only verified is done.
  • Hooks: prompt engagement, a Stop hook that refuses an unverified run once (never twice), a session
    brief, a guard on run records, and a reviewer-stop recorder. All fail open.
  • The band shows the cycle stage, receipt marks and run cost from the run record.
  • Parallel lanes through native worktree subagents, merged by lane finish only after scope,
    merge and tests pass.
  • Agents builder (Opus), reviewer (Opus) and v-memory (Haiku, read-only: the one exception to never-Haiku).
  • /compound-v:init writes worktree.baseRef: head, derives live_cmd for web projects, and offers
    to disable Superpowers in the project.
  • design sub-skill, loaded only for UI work: the project's DESIGN.md
    (Google's format, linted with @google/design.md@0.4.0) as the one
    source of the look, shared components instead of copies, a craft floor and a screenshot check. The brainstorm asks one
    identity question, only for a new project with a UI. In the same blind sets it added about 13 UX points at no
    measurable cost. plan, build and design are hidden from the slash menu (user-invocable: false).
  • A universal web-app checklist (OWASP ASVS 5.0, WSTG, RFC 9110, WCAG 2.2, GOV.UK) with the benchmark's lessons as
    general rules: the request outranks the spec, one rule in one place, old operations × new data, new routes inherit
    sibling guards, the commit step re-validates, permissions follow current state, per-target login limits never lock
    out the correct login, and fields normalise the same way for storage and lookup.

Changed — the L1 scheme (after the v4 benchmark)

  • Pre-flight agents folded into the builder. code-archaeologist, doc-validator and
    domain-expert are gone. After the spec is approved, one fresh builder does the domain research
    (at most four searches), the code reading and the library check itself, writes the plan with the
    plan skill as its reference, attaches it, and builds. Every fix goes back to that same builder.
    Why: in the benchmark, separate pre-flight agents, a plan written in the main conversation, a
    separate builder and a broad reviewer cost more than the light flow and did not beat it, while one
    agent doing research, plan and build from the same spec matched the best light-flow build (see
    V4-RESULTS in the benchmark kit, and spec §4.2–4.4).
  • A sharp reviewer. The review prompt runs a fixed list of probes that found real defects, in
    yield order, batched into probe script

Full detail in the CHANGELOG.