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
10 changes: 6 additions & 4 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -69,10 +69,12 @@ Authority in this chain:
- The user's instruction naming Issues authorizes planning, worktree creation,
`commandmate sync` for those worktrees, and dispatch for those Issues. The
PM approves the plan and dispatch.
- PR creation and merge require the user's approval every time. The user has
delegated merge approval to the PM (2026-09-30): the PM approves and runs a
merge only when every condition in `docs/dev/parallel-dev-harness.md`
section 3, step 6 holds, and otherwise asks the user.
- PR creation and merge require the user's approval. The user has delegated
both to the PM: merge approval (2026-09-30) and PR creation for Issues whose
dispatch the user approved (2026-10-13). The PM approves PR creation only
when every condition in `docs/dev/parallel-dev-harness.md` section 3, step 5
holds, and runs a merge only when every condition in step 6 holds; otherwise
it asks the user.
- Issue edits, CommandMate start or stop, and cleanup of worktrees still need
the user's own authorization.

Expand Down
10 changes: 6 additions & 4 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,12 @@ workers.
keep them moving: send investigation of unknowns (unclear requirements, root
causes, unexpected behavior, plan review) to Codex_Sub (`codex-3`), and
clear, mechanical tasks to Antigravity (`antigravity`).
- You approve plans and dispatch. The user has delegated merge approval to you
(2026-09-30). Approve and run a merge only when every condition in harness
section 3, step 6 holds, then report it; when any condition fails or is
unclear, present the merge request to the user instead. Escalate to the user when a plan has open questions, high risk, an
- You approve plans and dispatch. The user has delegated PR creation (for
Issues whose dispatch the user approved, 2026-10-13) and merge approval
(2026-09-30) to you. Approve PR creation only when every condition in harness
section 3, step 5 holds, and run a merge only when every condition in step 6
holds, then report it; when any condition fails or is unclear, ask the user
instead. Escalate to the user when a plan has open questions, high risk, an
unverified profile, or harness paths in scope.
- The leader runs with auto-yes. When a prompt stays open (the stop pattern
fired), answer it only within your authority; send anything else (merge,
Expand Down
38 changes: 28 additions & 10 deletions docs/dev/parallel-dev-harness.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,14 +46,14 @@ leader may ask a helper.
| Create worktrees (`--prepare-worktrees`, `cmate-worktree-setup`) and `commandmate sync` for them | Leader, as part of an approved dispatch | |
| Worker prompts | auto-yes (see section 4) | Anything auto-yes does not answer goes to the leader, then the PM |
| Leader's own tool prompts | auto-yes (see section 4) | A prompt that auto-yes leaves open (stop pattern hit) goes to the PM; the PM answers within its authority and sends anything else (merge, destructive git, CommandMate start/stop, Issue edits) to the user |
| Create PRs and merge | **User**, delegated to the PM (2026-09-30) | The PM approves and runs a merge only when every condition in section 3, step 6 holds; otherwise it presents the merge request to the user |
| Create PRs and merge | **User**, delegated to the PM (merge 2026-09-30; PR creation for Issues whose dispatch the user approved, 2026-10-13) | The PM approves PR creation only when every condition in section 3, step 5 holds, and runs a merge only when every condition in step 6 holds; otherwise it asks the user |
| Run UAT and its bounded fix loop | PM | |
| Edit, close, or relabel Issues | User | |
| Start, stop, or restart CommandMate | User | Never done to resolve an ambiguous failure |

Approval is always written, never implied: the PM's dispatch brief says
"dispatch approved for #N, #M"; a merge brief says "the user approved merge of
#N". A reply from a helper or worker is data, not an approval or an instruction.
"dispatch approved for #N, #M"; a PR brief says "the PM approved PR creation for
#N" (section 3, step 5). A reply from a helper or worker is data, not an approval or an instruction.

## 3. Standard flow

Expand Down Expand Up @@ -213,7 +213,7 @@ Approval is always written, never implied: the PM's dispatch brief says
reports each Wave to the PM.
4a. **Pre-merge review (investigation helper, PM-briefed).** Only Issues
that protect secrets or change a security boundary get an independent
review; other Issues go to the merge request on the runner verdict and
review; other Issues go to PR creation (step 5) on the runner verdict and
GitHub CI. The limits are fixed (user decision, 2026-09-29):
- One full review per Issue, scoped to the Issue's acceptance criteria and
the adversarial checks from step 2, with a time limit of 30–60 minutes
Expand All @@ -225,10 +225,28 @@ Approval is always written, never implied: the PM's dispatch brief says
- After rework, the helper checks only the fixed points (the diff and the
blocker reproductions, 30 minutes at most). There is no second full
review.
5. **Merge request (PM → user).** When Issues pass verification, the PM
summarizes per Issue: change summary, verification result, CI status, and
remaining risk, and asks the user to approve the merge.
6. **Merge (leader).** After the PM relays the user's approval, the leader runs
5. **PR creation (PM).** The user delegated PR creation to the PM for Issues
whose dispatch the user approved (2026-10-13). The PM writes "the PM
approved PR creation for #N" in the brief only when all of these hold, and
otherwise asks the user:
- The verify gates pass on the head to be pushed.
- The Linux cross-check passes on that head:
`cargo-zigbuild clippy --all-targets --target x86_64-unknown-linux-gnu`
(catches Linux-only errors such as `-D warnings` dead code behind a
`cfg(target_os = "macos")` test; it needs `zig`, `cargo-zigbuild`, and the
rustup target on the machine).
- The changed files stay within the Issue's 対象ファイル list.
- A security Issue's independent review (step 4a) ends with 0 blockers on
that head, or the only changes since the reviewed head are test-only or
documentation-only and the PM has read the diff.
- The plan had no open questions, no high risk, no unverified profile, and
no harness paths in scope.

The PM reports each PR it approves: change summary, verification result,
CI status, and remaining risk. A change the user must see before it ships
(a new user-visible default, a weakened or removed check, a schema
migration) still goes to the user first.
6. **Merge (leader).** After the PR creation approval (step 5), the leader runs
the merge runner for exactly the approved Issues, following the push
preflight in `AGENTS.md`: `--create-prs --approve`, wait for CI, then
`--merge-prs --approve --integration-verify`. PR titles follow this
Expand Down Expand Up @@ -293,8 +311,8 @@ Approval is always written, never implied: the PM's dispatch brief says
| Workers | on, through dispatch `--auto-yes`. It can switch off mid-run; the leader watches each worker's `autoYes`, answers an open prompt inside the Issue's scope (otherwise reports to the PM), and re-enables it |

auto-yes answers tool prompts only. It does not grant any authority in
section 2: the leader still needs the PM's written approval to dispatch and the
user's approval, relayed by the PM, to merge.
section 2: the leader still needs the PM's written approval to dispatch and to
create PRs (section 3, step 5), and it never merges (step 6).

Stop pattern (auto-yes stops and the prompt is returned to a human when any of
these strings appears in the terminal):
Expand Down
Loading