| name | merge |
| description | Re-validate an Issue against current main and perform the real git merge to main. Merges are serialized (one at a time). Use after the Validation Pipeline passes (auto-merge) or after a human merge-review approves. |
Merge
The real git merge to main, gated. Merges are serialized — only one Issue merges at
a time (DESIGN.md §8b).
Contract
- Input: an Issue whose worktree
.worktrees/<id>/ (branch issue/<id>) has passed the
Validation Pipeline, and which is eligible to merge:
- auto-merge when
difficulty == trivial OR a plan.md exists (planned-with-a-human),
satisfying the human-input-once invariant; OR
- a human has approved it via
/review.
- Standard unplanned Issues are NOT auto-merge eligible — they park in
needs-review/
until /review (DESIGN.md §5).
Steps
- Re-validate against current
main (Decision 13). main may have advanced under this
Issue while it sat in validating//needs-review/. So:
git -C .worktrees/<id> rebase main # onto current main
then re-run the full Validation Pipeline (the validate Skill) against the rebased
branch. We deliberately re-run everything — test behaviour can differ even when main's
changes don't touch this Issue's files (shared fixtures, global state, integration).
- If re-validation now fails →
blocked (append context to issue.md).
- Merge (only one Issue at a time):
git merge --no-ff issue/<id> -m "merge <id>"
- Clean up the worktree and branch:
git worktree remove .worktrees/<id> && git branch -d issue/<id>
Verdict
result: merged | blocked
merged → /tick moves the Issue to done/. blocked → /tick moves it to blocked/.