Plan review

Submit markdown plans for human approval before implementation.

Plan review gates implementation on human sign-off. Use it for non-trivial design, risky changes, or any request to comment on a plan before code.

Flow

1. Write plan markdown (prefer ~/.diffing/<repo>/plan-sources/ — not the working tree)
2. submit → share plan URL → park (async default)
3. Human reviews at /plan, comments, Submit review
4. Agent reads verdict and acts

CLI

diffing plan submit PLAN.md --model "your-model" [--title T] [--save-source]
# prints URL; do not --wait unless sync

diffing plan await [--timeout 570]     # sync / resume
diffing plan list
diffing plan show [<id>] [--version n]
diffing plan versions <id>
diffing plan reply <comment-id> --body "…" --model "your-model"
diffing plan resolve <comment-id>

Resubmit revisions with the same --id so history stays one conversation.

MCP

submit_plan, await_plan_review, list_plans, get_plan, get_plan_versions, get_plan_version, reply_to_plan_comment, resolve_plan_comment.

Verdicts

DecisionAgent action
approvedImplement the reviewed version; account for open comments
changes-requestedDo not implement. Revise plan, resolve addressed threads, resubmit same planId
rejectedStop. Do not implement
comment-onlyReply only; do not edit product files
pendingPark (async) or one sync await if asked

Severity on plan comments

Same triage as code review: blocking | nit | question | praise. Treat blocking as must-fix before resubmit.

Plan UI (human)

FeatureBehavior
Source / Read / Splitm
Zen Readz
Live edite — autosave PUT; Save as new version POST
Outline / comments mapo / c
Inline commentsSource gutter or Read highlight; multi-line + severity
Submit reviewVerdict that unblocks plan await

Keep the tree clean

Never write plans, notes, or .diffing/ directories into the consumer project. Use ~/.diffing/<repo>/plan-sources/ or stdin:

cat PLAN.md | diffing plan submit --model "your-model"