finish
A round is one sweep of review passes, then the fixes they earn. The ledger is every finding from every round with its disposition. Your context holds the ledger; every pass and every fix runs in a sub-agent, and you plan, triage, and integrate.
1. Establish the scope
The fixed point is the argument, else the merge-base with the default branch. Commit any uncommitted changes per /commit first, so every pass reads the same tree.
Find the spec once: issue references in the commit messages, the open PR, or a spec file matching the branch under docs/, specs/, or .scratch/. If none turns up, ask the user once. The spec, or its confirmed absence, goes into every brief.
Browser QA is live when the app is browser-driven and the change under review touches something a user sees.
Done when you hold the fixed point, the spec, and whether QA is live.
2. Run the passes
Dispatch each pass in the round's plan as its own sub-agent, all in parallel. Each brief carries the spec, the exact commit range to review (<from>..HEAD), and the ledger's won't fix and defer entries so they are not raised again. It names the skill to invoke and asks for the findings back as a list: file, line, one-line claim, why it matters.
Round 1's plan is every pass against the fixed point: