Executing plans
Announce at start: "I'm using the executing-plans skill to implement this
plan."
Load and validate the plan. Execute inline, or delegate complete task cycles to
subagent-driven-development.
Start gates
- Read
plan_path. Missing, empty, or unspecified: stop and request a valid
path
- Validate
Execution mode is exactly Inline or Subagent-Driven. Missing,
invalid, or conflicting with the current request: stop, ask the user, and
update the plan before implementation
- Review the plan critically. Resolve blocking gaps with the user. Read
Execution log before Task 1; a logged entry overrides contradicting task
text. Missing field: add the empty heading before implementation
- Validate the plan's commit policy and commit checkboxes. Missing or
inconsistent: stop, ask the user, and update the plan before implementation.
Plan file policy defaults to Include when absent; reject other values.
Read Additional plan state files; missing defaults to none. Accept either
the single item none or unique repo-relative paths that exist. Reject the
plan path itself, missing paths, duplicates, and mixed none plus paths
- Capture
plan_base_ref = git rev-parse HEAD and inventory every pre-existing
staged, unstaged, deleted, or untracked change in a temporary
baseline_snapshot. Its manifest records each repo-relative path, content or
deletion state, file mode, and ownership: baseline-only, task:<id>, or
execution-state. Store present files byte-for-byte beside the manifest. Use
an owner-only temporary directory and classify only the plan-owned content of
the plan file plus every Additional plan state files path as
execution-state; an empty worktree gets an empty manifest. A listed path
does not transfer unrelated existing hunks from baseline-only ownership.
Preserve the captured bytes of every plan-state file as its pre-execution
baseline. execution-state permits only edits required by written
checkpoints. Stop when ownership or the required delta is unclear
- When commits are planned, or
No commits is combined with a requested PR,
stop before Task 1 if:
- one path mixes plan-owned and baseline-only hunks
- the index contains baseline-only changes
- under
Per-task commits, a staged change belongs to a later checkpoint
- Create the harness task/todo list
Commit-bound means commits are planned or No commits is combined with a
requested PR. Its scope guards apply even when the executor cannot commit.
Plan state means the plan file plus every Additional plan state files path.
All share the single Plan file policy.
Milestone finalization turns
Resolve milestone_execution_mode once at start for every plan: coordinated
only when the written final-verification checkpoint requires the milestone
handshake and the caller identifies itself as the root milestone execution
coordinator; otherwise sequential.
When a written final-verification checkpoint requires the milestone handshake:
Inline with milestone_execution_mode = coordinated: after implementation
review and validation pass, resolve the stable plan ID from the written
checkpoint, record the reviewed changed-path state under baseline_snapshot,
send READY <plan ID> to the root milestone execution coordinator, and yield
without abandoning baseline_snapshot. Resume only after the exact
FINALIZE <plan ID> reply. Re-derive the changed-path state before editing
the milestone; repeat affected review and validation when implementation state
drifted. Send FINALIZED <plan ID> after the written milestone update passes
Inline with milestone_execution_mode = sequential: execute the written
milestone update without handshake messages
Subagent-Driven: let subagent-driven-development relay the finalizer's
handshake without synthesizing or granting a turn. Pass the resolved mode
- No root coordinator or no message relay at start: use
sequential
- Coordinator or message relay lost after
READY: retain baseline_snapshot,
edit no plan state, and report a resumable blocker
- Never self-grant a finalization turn during parallel execution
The plan's Execution mode is authoritative. Inline uses the workflow below.
For Subagent-Driven, complete the start gates, then load
subagent-driven-development; do not run the inline workflow below. Direct
invocation never supplies a default.
Skills load only on the annotated step that needs them.
The plan owns task actions and plan-level checkpoints. This skill supplies
mechanics for written checkpoints; it never inserts a plan-level review, final
verification, or commit checkpoint. Stop and return an incomplete plan for
correction instead of synthesizing missing plan-level work.
Exactly one agent runs final verification:
Inline: this executor
Subagent-Driven: the finalizer
Never both. A relayed finalizer result is the evidence; do not re-run its
checks.
Snapshot lifecycle
The baseline_snapshot holds pre-execution copies of work the user never
committed. Delete it after PASS or when execution is abandoned; retain it
while a blocker remains resumable.
Owner:
Inline: this executor
Subagent-Driven: the orchestrator
Plan ownership
- Inline: this executor owns all checkboxes,
Solved defects, and
Execution log
- Subagent mode: each task implementer owns its task plus completed tasks
changed by its reviewer fixes; the finalizer owns final checkpoints and
completed-task state changed by final-review fixes
Execution log: the current task owner appends its own entries; never rewrite
or delete another owner's entries
- Never use concurrent writers
- Tick a step after its
Green: passes; un-tick before a reviewer fix
- Tick a commit checkpoint immediately before staging; restore
[ ] whenever
scope resolution, staging, or commit fails
- Track task status in the harness todo list
Commit ownership
- The plan owns cadence; agents never infer or override it
No commits: no agent commits
Per-task commits: inline executor or task implementer commits the initial
task, one follow-up commit per task-review fix round, one combined
final-review-fix commit after final verification, then final plan state
One commit at the end: inline executor or finalizer commits after final
review and verification
- At every commit, load
git-commit-message and derive message and paths from
current state; never rely on the plan's initial file list
- Include the plan's current
execution-state changes only when
Plan file policy is Include
- Reviewers never commit
Inline per-task workflow
For each task:
- Set the review range:
Per-task commits: review_base_ref = git rev-parse HEAD, scope task
One commit at the end or No commits: review_base_ref = plan_base_ref,
scope cumulative
- In commit-bound execution, stop before editing any planned or newly
discovered target or reviewer-fix path with baseline-only changes
- Mark the task in progress
- Complete each step and tick it when its narrow
Green: passes
- Confirm the plan's task-ending impact-appropriate task gate passed
- For
Per-task commits, execute and tick the initial task checkpoint
- Dispatch a fresh reviewer, unless the task's diff contains no source or test
file — a plan-doc commit, a formatter result, or checkbox ticks needs none;
the task gate already proves it
- Resolve every blocking finding; commit each verified fix round under
Per-task commits
- Append this task's drift, gotchas, and decisions to
Execution log
- Correct stale text in later tasks that this task's drift invalidated
- Mark the task complete
Never dispatch onto a red gate or move on with unadjudicated findings. Re-run
only invalidated task-gate commands after a task-review fix; valid evidence
needs no second run.
Semantic-neutral comment-only and canonical formatter-only changes do not
invalidate tests, type checks, builds, or full gates. Directives, suppressions,
pragmas, doctests, generated-documentation inputs, shebangs, encoding
declarations, and format-sensitive metadata are not semantic-neutral comments.
Execution log capture
writing-plans defines the field, its entry kinds, and its format. Capture is
mandatory, not optional.
- Append before ticking the task, not at the end of the plan
- Log a
drift whenever the repo contradicted a plan fact
- Log a
gotcha whenever a non-obvious fact cost time and would cost it again
- Log a
decision whenever the plan left a choice open and execution closed it
- Nothing qualifying: write nothing and leave the section empty. Never record
none, no drift, or any "nothing found" line
- Never log narration, restated plan text, or findings already in
Solved defects
- A drift that invalidates a later task's instructions also gets that task's
text corrected in place
- Under
Plan file policy: Include, log changes ride the task's commit as
execution-state
Inline review handling
- Accept only
PASS or terse Critical/Important findings, each carrying a
static or behavioural discharge tag. An untagged finding, or a
control-flow, boundary, predicate, regex, or contract change tagged static,
is a failed dispatch. Never retag a finding yourself
- Empty, errored, or rate-limited output is a failed dispatch
- Narration, summaries, or malformed findings are a failed dispatch
- A
<review-input> finding is a failed dispatch; correct the payload
- Allow 3 total attempts for a failed dispatch, then escalate
- For bot/PR reviews, load
replying-to-pr-review-threads
- Fix all sibling call sites sharing the defect, not only the cited line
- Add validated fixes to
Solved defects as
severity | path or symbol | invariant
- Never add rejected findings to that list
Adjudicate each finding:
- Verify its
path:line evidence
- Fix substantiated findings
- Reject incorrect findings with counter-evidence
- Use one clarification round for genuine ambiguity
- Escalate disputes that remain
Record rejected findings and counter-evidence in the final report. Every
returned finding blocks until fixed or rejected with counter-evidence.
Re-dispatch after a fix round containing any behavioural finding. After a
round whose findings are all static, the green gate is the verification: do
not re-dispatch. One reviewer answers both the craft and the spec question every
pass, so there is no separate spec stage to reopen. Limit each review/fix cycle
to 2 finding rounds; a third requires user escalation.
Inline reviewer dispatch
Preconditions before dispatching:
- Task-scope dispatch: task gate is green
- Cumulative task dispatch: current task gate is green
- Complete-scope first dispatch: final task gate is green
- Complete-scope re-dispatch after a final-review fix: affected invalidated
gates are green
- Complete-scope re-dispatch does not require another full gate
changed_files is the deduplicated union of committed, staged, unstaged, and
untracked implementation paths in scope. Exclude execution-state paths and
paths whose current state still matches an excluded snapshot entry
- Rename entries use the destination path
Use absolute template paths. Pass pointers, never template contents or session
history. changed_files is a newline-delimited exact-path list, not a review
boundary. Pass Solved defects from the plan; use none when empty.
MUST read instructions at <skill_dir>/reviewer-prompt.md FIRST.
Do not act until you have read it. Then apply:
plan_path = <abs path>
task_id = <task number / heading>
base_ref = <review_base_ref>
scope_mode = <task | cumulative>
baseline_snapshot = <abs path to classified snapshot directory>
changed_files = <newline-delimited exact paths>
solved_defects = <current solved-defects list, or `none`>
checklist_path = <abs path to requesting-code-review/code-reviewer.md>
<skill_dir> is the resolved subagent-driven-development directory. Final
review uses plan_base_ref, complete scope, and all plan-changed
implementation files. If any base ref is unclear, ask.
Inline finish
After all tasks complete and verified:
- Execute each remaining plan-level checkpoint in written order
- Do not synthesize a review, verification, or commit step missing from the
plan
- When the written final-verification checkpoint requests full-plan review:
- Use
plan_base_ref, complete scope, and all plan-changed implementation
files
- Reuse a prior task-review result when it covers the complete current
implementation; otherwise dispatch the requested reviewer
- Recheck each fix path against
baseline_snapshot before editing in
commit-bound execution
- Uncheck the conditional final-review-fixes commit checkpoint before the
first fix under
Per-task commits
- Resolve findings with the adjudication and retry rules
- Run only checks invalidated by final-review fixes; prefer narrow checks
and rerun a full gate only when narrower evidence cannot restore required
coverage
- Re-dispatch the final review after a fix round containing any
behavioural finding; after an all-static round, the green affected
gates are the verification
- Require
PASS or fully discharged findings
- When the written final-verification checkpoint reaches final validation:
- Load
verification-before-completion
- Reuse each task-gate or reviewer-fix result that still covers the current
implementation state and semantic scope
- Run or perform only written final checks whose scope remains uncovered
- Append final-review drift, gotchas, and decisions to
Execution log
- Execute any written milestone completion action:
coordinated: complete the READY -> FINALIZE -> FINALIZED turn
defined above
sequential: update the milestone without handshake messages
- Tick the final-verification checkpoint only after the milestone action
passes
- Do not run the full gate elsewhere in the final-review fix loop
- Execute each remaining written commit checkpoint:
One commit at the end: commit the actual complete reviewed diff
Per-task commits: commit the combined final-review fix set when its
conditional checkpoint is unchecked. Execute the final-state commit
checkpoint only when Plan file policy is Include
No commits: no checkpoint
- For
No commits plus a requested PR:
- Record the exact plan-owned paths, content hashes, modes, and deletion
states under
baseline_snapshot/pr-handoff.json; include plan state only
when Plan file policy is Include
- Hand off only that reviewed change set for an external commit
- Verify the resulting branch matches it and contains no baseline-only delta
- Stop on any mismatch
- Report files, evidence, rejected findings, remaining risks, and modified plan
state left uncommitted under
Plan file policy: Exclude
When Source requirements request a PR, load create-pull-request after the
written final-verification and commit checkpoints pass.
Stop conditions
- Hit a blocker (missing dependency, test fails, instruction unclear)
- Plan has critical gaps preventing starting
- Verification repeatedly fails
- A required reviewer cannot be dispatched
- A review or dispatch exceeds its retry budget
- A coordinated finalization turn loses its coordinator or message relay after
READY
Report the blocker. Return to the start gates after the plan changes materially.
1---2name: executing-plans3description: Use when you have a written implementation plan to execute in a separate session with review checkpoints4---56# Executing plans78**Announce at start:** "I'm using the executing-plans skill to implement this9plan."1011Load and validate the plan. Execute inline, or delegate complete task cycles to12`subagent-driven-development`.1314## Start gates15161. Read `plan_path`. Missing, empty, or unspecified: stop and request a valid17 path182. Validate `Execution mode` is exactly `Inline` or `Subagent-Driven`. Missing,19 invalid, or conflicting with the current request: stop, ask the user, and20 update the plan before implementation213. Review the plan critically. Resolve blocking gaps with the user. Read22 `Execution log` before Task 1; a logged entry overrides contradicting task23 text. Missing field: add the empty heading before implementation244. Validate the plan's commit policy and commit checkboxes. Missing or25 inconsistent: stop, ask the user, and update the plan before implementation.26 `Plan file policy` defaults to `Include` when absent; reject other values.27 Read `Additional plan state files`; missing defaults to `none`. Accept either28 the single item `none` or unique repo-relative paths that exist. Reject the29 plan path itself, missing paths, duplicates, and mixed `none` plus paths305. Capture `plan_base_ref = git rev-parse HEAD` and inventory every pre-existing31 staged, unstaged, deleted, or untracked change in a temporary32 `baseline_snapshot`. Its manifest records each repo-relative path, content or33 deletion state, file mode, and ownership: `baseline-only`, `task:<id>`, or34 `execution-state`. Store present files byte-for-byte beside the manifest. Use35 an owner-only temporary directory and classify only the plan-owned content of36 the plan file plus every `Additional plan state files` path as37 `execution-state`; an empty worktree gets an empty manifest. A listed path38 does not transfer unrelated existing hunks from `baseline-only` ownership.39 Preserve the captured bytes of every plan-state file as its pre-execution40 baseline. `execution-state` permits only edits required by written41 checkpoints. Stop when ownership or the required delta is unclear426. When commits are planned, or `No commits` is combined with a requested PR,43 stop before Task 1 if:44 - one path mixes plan-owned and baseline-only hunks45 - the index contains baseline-only changes46 - under `Per-task commits`, a staged change belongs to a later checkpoint477. Create the harness task/todo list4849`Commit-bound` means commits are planned or `No commits` is combined with a50requested PR. Its scope guards apply even when the executor cannot commit.5152`Plan state` means the plan file plus every `Additional plan state files` path.53All share the single `Plan file policy`.5455## Milestone finalization turns5657Resolve `milestone_execution_mode` once at start for every plan: `coordinated`58only when the written final-verification checkpoint requires the milestone59handshake and the caller identifies itself as the root milestone execution60coordinator; otherwise `sequential`.6162When a written final-verification checkpoint requires the milestone handshake:6364- `Inline` with `milestone_execution_mode = coordinated`: after implementation65 review and validation pass, resolve the stable plan ID from the written66 checkpoint, record the reviewed changed-path state under `baseline_snapshot`,67 send `READY <plan ID>` to the root milestone execution coordinator, and yield68 without abandoning `baseline_snapshot`. Resume only after the exact69 `FINALIZE <plan ID>` reply. Re-derive the changed-path state before editing70 the milestone; repeat affected review and validation when implementation state71 drifted. Send `FINALIZED <plan ID>` after the written milestone update passes72- `Inline` with `milestone_execution_mode = sequential`: execute the written73 milestone update without handshake messages74- `Subagent-Driven`: let `subagent-driven-development` relay the finalizer's75 handshake without synthesizing or granting a turn. Pass the resolved mode76- No root coordinator or no message relay at start: use `sequential`77- Coordinator or message relay lost after `READY`: retain `baseline_snapshot`,78 edit no plan state, and report a resumable blocker79- Never self-grant a finalization turn during parallel execution8081The plan's `Execution mode` is authoritative. `Inline` uses the workflow below.82For `Subagent-Driven`, complete the start gates, then load83`subagent-driven-development`; do not run the inline workflow below. Direct84invocation never supplies a default.8586Skills load only on the annotated step that needs them.8788The plan owns task actions and plan-level checkpoints. This skill supplies89mechanics for written checkpoints; it never inserts a plan-level review, final90verification, or commit checkpoint. Stop and return an incomplete plan for91correction instead of synthesizing missing plan-level work.9293Exactly one agent runs final verification:9495- `Inline`: this executor96- `Subagent-Driven`: the finalizer9798Never both. A relayed finalizer result is the evidence; do not re-run its99checks.100101## Snapshot lifecycle102103The `baseline_snapshot` holds pre-execution copies of work the user never104committed. Delete it after `PASS` or when execution is abandoned; retain it105while a blocker remains resumable.106107Owner:108109- `Inline`: this executor110- `Subagent-Driven`: the orchestrator111112## Plan ownership113114- Inline: this executor owns all checkboxes, `Solved defects`, and115 `Execution log`116- Subagent mode: each task implementer owns its task plus completed tasks117 changed by its reviewer fixes; the finalizer owns final checkpoints and118 completed-task state changed by final-review fixes119- `Execution log`: the current task owner appends its own entries; never rewrite120 or delete another owner's entries121- Never use concurrent writers122- Tick a step after its `Green:` passes; un-tick before a reviewer fix123- Tick a commit checkpoint immediately before staging; restore `[ ]` whenever124 scope resolution, staging, or commit fails125- Track task status in the harness todo list126127## Commit ownership128129- The plan owns cadence; agents never infer or override it130- `No commits`: no agent commits131- `Per-task commits`: inline executor or task implementer commits the initial132 task, one follow-up commit per task-review fix round, one combined133 final-review-fix commit after final verification, then final plan state134- `One commit at the end`: inline executor or finalizer commits after final135 review and verification136- At every commit, load `git-commit-message` and derive message and paths from137 current state; never rely on the plan's initial file list138- Include the plan's current `execution-state` changes only when139 `Plan file policy` is `Include`140- Reviewers never commit141142## Inline per-task workflow143144For each task:1451461. Set the review range:147 - `Per-task commits`: `review_base_ref = git rev-parse HEAD`, scope `task`148 - `One commit at the end` or `No commits`: `review_base_ref = plan_base_ref`,149 scope `cumulative`150 - In commit-bound execution, stop before editing any planned or newly151 discovered target or reviewer-fix path with baseline-only changes1522. Mark the task in progress1533. Complete each step and tick it when its narrow `Green:` passes1544. Confirm the plan's task-ending impact-appropriate task gate passed1555. For `Per-task commits`, execute and tick the initial task checkpoint1566. Dispatch a fresh reviewer, unless the task's diff contains no source or test157 file — a plan-doc commit, a formatter result, or checkbox ticks needs none;158 the task gate already proves it1597. Resolve every blocking finding; commit each verified fix round under160 `Per-task commits`1618. Append this task's drift, gotchas, and decisions to `Execution log`1629. Correct stale text in later tasks that this task's drift invalidated16310. Mark the task complete164165Never dispatch onto a red gate or move on with unadjudicated findings. Re-run166only invalidated task-gate commands after a task-review fix; valid evidence167needs no second run.168169Semantic-neutral comment-only and canonical formatter-only changes do not170invalidate tests, type checks, builds, or full gates. Directives, suppressions,171pragmas, doctests, generated-documentation inputs, shebangs, encoding172declarations, and format-sensitive metadata are not semantic-neutral comments.173174## Execution log capture175176`writing-plans` defines the field, its entry kinds, and its format. Capture is177mandatory, not optional.178179- Append before ticking the task, not at the end of the plan180- Log a `drift` whenever the repo contradicted a plan fact181- Log a `gotcha` whenever a non-obvious fact cost time and would cost it again182- Log a `decision` whenever the plan left a choice open and execution closed it183- Nothing qualifying: write nothing and leave the section empty. Never record184 `none`, `no drift`, or any "nothing found" line185- Never log narration, restated plan text, or findings already in186 `Solved defects`187- A drift that invalidates a later task's instructions also gets that task's188 text corrected in place189- Under `Plan file policy: Include`, log changes ride the task's commit as190 `execution-state`191192## Inline review handling193194- Accept only `PASS` or terse Critical/Important findings, each carrying a195 `static` or `behavioural` discharge tag. An untagged finding, or a196 control-flow, boundary, predicate, regex, or contract change tagged `static`,197 is a failed dispatch. Never retag a finding yourself198- Empty, errored, or rate-limited output is a failed dispatch199- Narration, summaries, or malformed findings are a failed dispatch200- A `<review-input>` finding is a failed dispatch; correct the payload201- Allow 3 total attempts for a failed dispatch, then escalate202- For bot/PR reviews, load `replying-to-pr-review-threads`203- Fix all sibling call sites sharing the defect, not only the cited line204- Add validated fixes to `Solved defects` as205 `severity | path or symbol | invariant`206- Never add rejected findings to that list207208Adjudicate each finding:2092101. Verify its `path:line` evidence2112. Fix substantiated findings2123. Reject incorrect findings with counter-evidence2134. Use one clarification round for genuine ambiguity2145. Escalate disputes that remain215216Record rejected findings and counter-evidence in the final report. Every217returned finding blocks until fixed or rejected with counter-evidence.218219Re-dispatch after a fix round containing any `behavioural` finding. After a220round whose findings are all `static`, the green gate is the verification: do221not re-dispatch. One reviewer answers both the craft and the spec question every222pass, so there is no separate spec stage to reopen. Limit each review/fix cycle223to 2 finding rounds; a third requires user escalation.224225## Inline reviewer dispatch226227**Preconditions before dispatching:**228229- Task-scope dispatch: task gate is green230- Cumulative task dispatch: current task gate is green231- Complete-scope first dispatch: final task gate is green232- Complete-scope re-dispatch after a final-review fix: affected invalidated233 gates are green234- Complete-scope re-dispatch does not require another full gate235- `changed_files` is the deduplicated union of committed, staged, unstaged, and236 untracked implementation paths in scope. Exclude `execution-state` paths and237 paths whose current state still matches an excluded snapshot entry238- Rename entries use the destination path239240Use absolute template paths. Pass pointers, never template contents or session241history. `changed_files` is a newline-delimited exact-path list, not a review242boundary. Pass `Solved defects` from the plan; use `none` when empty.243244```text245MUST read instructions at <skill_dir>/reviewer-prompt.md FIRST.246Do not act until you have read it. Then apply:247 plan_path = <abs path>248 task_id = <task number / heading>249 base_ref = <review_base_ref>250 scope_mode = <task | cumulative>251 baseline_snapshot = <abs path to classified snapshot directory>252 changed_files = <newline-delimited exact paths>253 solved_defects = <current solved-defects list, or `none`>254 checklist_path = <abs path to requesting-code-review/code-reviewer.md>255```256257`<skill_dir>` is the resolved `subagent-driven-development` directory. Final258review uses `plan_base_ref`, `complete` scope, and all plan-changed259implementation files. If any base ref is unclear, ask.260261## Inline finish262263After all tasks complete and verified:2642651. Execute each remaining plan-level checkpoint in written order2662. Do not synthesize a review, verification, or commit step missing from the267 plan2683. When the written final-verification checkpoint requests full-plan review:269 1. Use `plan_base_ref`, `complete` scope, and all plan-changed implementation270 files271 2. Reuse a prior task-review result when it covers the complete current272 implementation; otherwise dispatch the requested reviewer273 3. Recheck each fix path against `baseline_snapshot` before editing in274 commit-bound execution275 4. Uncheck the conditional final-review-fixes commit checkpoint before the276 first fix under `Per-task commits`277 5. Resolve findings with the adjudication and retry rules278 6. Run only checks invalidated by final-review fixes; prefer narrow checks279 and rerun a full gate only when narrower evidence cannot restore required280 coverage281 7. Re-dispatch the final review after a fix round containing any282 `behavioural` finding; after an all-`static` round, the green affected283 gates are the verification284 8. Require `PASS` or fully discharged findings2854. When the written final-verification checkpoint reaches final validation:286 1. Load `verification-before-completion`287 2. Reuse each task-gate or reviewer-fix result that still covers the current288 implementation state and semantic scope289 3. Run or perform only written final checks whose scope remains uncovered290 4. Append final-review drift, gotchas, and decisions to `Execution log`291 5. Execute any written milestone completion action:292 - `coordinated`: complete the `READY` -> `FINALIZE` -> `FINALIZED` turn293 defined above294 - `sequential`: update the milestone without handshake messages295 6. Tick the final-verification checkpoint only after the milestone action296 passes2975. Do not run the full gate elsewhere in the final-review fix loop2986. Execute each remaining written commit checkpoint:299 - `One commit at the end`: commit the actual complete reviewed diff300 - `Per-task commits`: commit the combined final-review fix set when its301 conditional checkpoint is unchecked. Execute the final-state commit302 checkpoint only when `Plan file policy` is `Include`303 - `No commits`: no checkpoint3047. For `No commits` plus a requested PR:305 1. Record the exact plan-owned paths, content hashes, modes, and deletion306 states under `baseline_snapshot/pr-handoff.json`; include plan state only307 when `Plan file policy` is `Include`308 2. Hand off only that reviewed change set for an external commit309 3. Verify the resulting branch matches it and contains no baseline-only delta310 4. Stop on any mismatch3118. Report files, evidence, rejected findings, remaining risks, and modified plan312 state left uncommitted under `Plan file policy: Exclude`313314When `Source requirements` request a PR, load `create-pull-request` after the315written final-verification and commit checkpoints pass.316317## Stop conditions318319- Hit a blocker (missing dependency, test fails, instruction unclear)320- Plan has critical gaps preventing starting321- Verification repeatedly fails322- A required reviewer cannot be dispatched323- A review or dispatch exceeds its retry budget324- A coordinated finalization turn loses its coordinator or message relay after325 `READY`326327Report the blocker. Return to the start gates after the plan changes materially.