Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 21 additions & 21 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -99,27 +99,27 @@ deliberate.
The state diagram lives in [README.md](README.md#pipeline-state-machine). The
transition functions:

| Subcommand | Transition it effects |
| ------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--queue` | surfaces the presentable review queue (`ai:ready` + green + mergeable + vetted-at-head) |
| `--record-verdict <owner/repo> <n> <verdict> … --covered-file <p>` | the vetter's write: apply the `ai:*` label + post the `🤖 ai:vetter` comment, bound to the head sha and stamped with the vet protocol (+ cost). Refused unless the coverage claim accounts for every changed file |
| `--trusted-comments <owner/repo> <n> [--marker] [--issue]` | author-verified comment read — the only trusted way to read a comment |
| `--commit-closes <owner/repo> <n>` | closing-keyword vs. `closingIssuesReferences` drift check |
| `--backfill-comments` | one-time completion of the ledger→GitHub migration (replays each ledger verdict as its missing comment) |
| `gc-clones <work-dir>...` | reclaim merged/closed work-clones across one or more clone roots (state cleanup) |
| `unvetted [--json] [--include-skipped] [--limit n]` | the VETTER's state-load: which open PRs need a verdict this run, vet-first, with each one's signals (MCP always pages; the CLI is unbounded unless `--limit`) |
| `unvetted_close_candidates` (MCP) | the vetter's second state-load: which producer close-candidate flags need judging this run |
| `record_close_candidate_verdict` (MCP) | the vetter's issue write: uphold (queued for the human) or reject (strips the flag → producer's queue) |
| `human-rule <owner/repo> <n> <ruling> "<note>"` | the HUMAN's PR ruling: `human:<ruling>` + a head-sha-pinned `👤 human` comment (supersedes any prior human ruling) |
| `human-rule-issue <owner/repo> <n> <ruling> "<note>"` | the HUMAN's issue ruling: adds `keep-open`; pinned to the live close-candidate flag, or to the issue as filed |
| `human-close <owner/repo> <n> "<note>"` | the HUMAN's TERMINAL edge on either subject: rule `close-candidate`, retire the pending `ai:close-candidate`, close — ONE transition (#94) |
| `record-close-candidate-verdict <owner/repo> <n> <v> …` | the vetter's flag verdict, also as a subcommand — `human-rule-issue`'s stranded-flag refusal names it, and a terminal has no MCP |
| `require-qa-block` | the QA-GUIDE §8 gate on PR-open: refuses a `gh pr create` whose body lacks the evidence block. Wired as a PreToolUse `Bash` hook, so it binds every session |
| `repair-qa-block <owner/repo> <n> --block-file <path>` | the RETROFIT of the same rule on an ALREADY-open PR: appends the §8 block to the body, every other byte identical, validated with `require-qa-block`'s predicate |
| `weaken-closes <owner/repo> <n> <issue>` | the LINKAGE repair a linkage `reject` names: `Closes #issue` → `Refs #issue`, every other byte identical, `## QA` untouched, DIRECTION-LOCKED so it can only ever remove a closing reference |
| `mcp [--profile vetter\|producer\|human]` | serve a role's transitions over MCP (stdio) — the FSM as a tool surface, not as prose |
| `plugin-version-lockstep [--root <dir>]` | CI gate: every plugin `.claude-plugin/marketplace.json` lists resolves to a manifest of the same name carrying the same version |
| `migrate-reject [--apply]` | the #133 one-shot: every open PR still carrying the RETIRED `human:reject` → `ai:reject`. A REPORT unless `--apply` — an org-wide relabel is not one forgotten flag away |
| Subcommand | Transition it effects |
| ------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--queue` | surfaces the presentable review queue (`ai:ready` + green + mergeable + vetted-at-head) |
| `--record-verdict <owner/repo> <n> <verdict> … --covered-file <p>` | the vetter's write: apply the `ai:*` label + post the `🤖 ai:vetter` comment, bound to the head sha and stamped with the vet protocol (+ cost). Refused unless the coverage claim accounts for every changed file |
| `--trusted-comments <owner/repo> <n> [--marker] [--issue]` | author-verified comment read — the only trusted way to read a comment |
| `--commit-closes <owner/repo> <n>` | closing-keyword vs. `closingIssuesReferences` drift check |
| `--backfill-comments` | one-time completion of the ledger→GitHub migration (replays each ledger verdict as its missing comment) |
| `gc-clones <work-dir>...` | reclaim merged/closed work-clones across one or more clone roots (state cleanup) |
| `unvetted [--json] [--include-skipped] [--limit n]` | the VETTER's state-load: which open PRs need a verdict this run, vet-first, with each one's signals (MCP always pages; the CLI is unbounded unless `--limit`). Also runs the `ai:blocked-on` CLEARANCE (#161): all typed deps merged/closed ⇒ clear + fresh re-vet; held and manual-review flags are reported, never vetted |
| `unvetted_close_candidates` (MCP) | the vetter's second state-load: which producer close-candidate flags need judging this run |
| `record_close_candidate_verdict` (MCP) | the vetter's issue write: uphold (queued for the human) or reject (strips the flag → producer's queue) |
| `human-rule <owner/repo> <n> <ruling> "<note>"` | the HUMAN's PR ruling: `human:<ruling>` + a head-sha-pinned `👤 human` comment (supersedes any prior human ruling) |
| `human-rule-issue <owner/repo> <n> <ruling> "<note>"` | the HUMAN's issue ruling: adds `keep-open`; pinned to the live close-candidate flag, or to the issue as filed |
| `human-close <owner/repo> <n> "<note>"` | the HUMAN's TERMINAL edge on either subject: rule `close-candidate`, retire the pending `ai:close-candidate`, close — ONE transition (#94) |
| `record-close-candidate-verdict <owner/repo> <n> <v> …` | the vetter's flag verdict, also as a subcommand — `human-rule-issue`'s stranded-flag refusal names it, and a terminal has no MCP |
| `require-qa-block` | the QA-GUIDE §8 gate on PR-open: refuses a `gh pr create` whose body lacks the evidence block. Wired as a PreToolUse `Bash` hook, so it binds every session |
| `repair-qa-block <owner/repo> <n> --block-file <path>` | the RETROFIT of the same rule on an ALREADY-open PR: appends the §8 block to the body, every other byte identical, validated with `require-qa-block`'s predicate |
| `weaken-closes <owner/repo> <n> <issue>` | the LINKAGE repair a linkage `reject` names: `Closes #issue` → `Refs #issue`, every other byte identical, `## QA` untouched, DIRECTION-LOCKED so it can only ever remove a closing reference |
| `mcp [--profile vetter\|producer\|human]` | serve a role's transitions over MCP (stdio) — the FSM as a tool surface, not as prose |
| `plugin-version-lockstep [--root <dir>]` | CI gate: every plugin `.claude-plugin/marketplace.json` lists resolves to a manifest of the same name carrying the same version |
| `migrate-reject [--apply]` | the #133 one-shot: every open PR still carrying the RETIRED `human:reject` → `ai:reject`. A REPORT unless `--apply` — an org-wide relabel is not one forgotten flag away |

## The layer a human types: slash commands as a plugin

Expand Down
Loading
Loading