Recovery: Coordination Branch Created Off main (Add/Add Conflict)
spec-kitty agent action implement WP## fails with:
Workspace allocation failed: cannot auto-merge the recorded planning commit
'<sha>' into lane '<lane>': the merge conflicts.
Why this happens
The mission's coordination branch (kitty/mission-<slug>) was created off
main instead of off the mission's target/planning branch. git merge-base <coord> <target> resolves to main, not to the target branch tip. Lanes
fork from coord, so when implement merges the recorded
planning_commit_sha (which lives on the target strand) into a fresh lane,
both strands have independently added kitty-specs/<mission>/ — an add/add
conflict even when file content is identical. See Coord-branch
bookkeeping: read/write split-brain
root-cause for why
the write-placement seam allows this drift.
No shipped --fix for this case
spec-kitty agent mission repair --mission <handle> detects the state and
correctly REFUSES: coord and target have diverged (neither is an ancestor of
the other), so a fast-forward repair is not safe, and the command mutates
nothing. spec-kitty doctor coordination --fix does not apply either — it
targets stale coordination_branch keys and simple Gap-1 staleness, not a
coord branch built on the wrong base.
Run the diagnostic first, to confirm the diagnosis:
spec-kitty agent mission repair --mission <handle>
It prints a scoped diff and refuses to touch anything. Proceed to the manual fix below.
Manual fix (operator-approved, needs an explicit grant)
Safe when nothing has been implemented yet and the coord branch is
local-only (fully reversible). Record the old coord tip first, then reset
coord onto the target and restore the coord-owned lifecycle files.
(spec-kitty doctor coordination prints the exact
.worktrees/<slug>-<mid8>-coord path for your mission — use that instead of
hand-constructing it.)
# from the coordination worktree
git -C .worktrees/<slug>-<mid8>-coord reset --hard <target-branch>
git -C .worktrees/<slug>-<mid8>-coord checkout <old-coord-tip> -- \
kitty-specs/<mission>/acceptance-matrix.json \
kitty-specs/<mission>/issue-matrix.json \
kitty-specs/<mission>/status.events.jsonl \
kitty-specs/<mission>/status.json
git -C .worktrees/<slug>-<mid8>-coord commit -m "chore(coord): re-base coordination strand onto <target-branch> + restore lifecycle"
Then remove the stale lane worktree and branch, and re-run implement:
git worktree remove --force .worktrees/<slug>-lane-a
git branch -D kitty/mission-<slug>-lane-a
spec-kitty agent action implement WP## --mission <handle> --agent <agent>
Verify coord now descends from target:
git merge-base --is-ancestor <target-branch> kitty/mission-<slug>
git reset --hard and git merge on the coordination branch are
destructive — get explicit operator sign-off before running them, exactly as
you would for a force-push.
Related
--start-branchcoordination divergence — the pr-bound sibling of this failure- Coordination branch stranded after a base rebase
- Coord-branch bookkeeping root-cause
- Recovery & Troubleshooting (agent-facing) — implementation-crash and merge recovery