post-merge-cleanuplisted
Install: claude install-skill arbiterForge/codeArbiter
# post-merge-cleanup
The walk back from a merged PR. Routed to by `$ca-cleanup`.
The work has landed on the default branch. What is left is local: the branch you
are standing on, and whatever the run left in the tree. This skill returns you to
a clean, fast-forwarded default checkout without losing anything you have not
explicitly agreed to lose.
**It is ordinary lifecycle work and never needs `$ca-override`.** When it
cannot proceed, it names the gate that stopped it. Issue #308 recorded the
alternative: with no owner for this transition, the routing loop reached for
`$ca-chore`, then for `$ca-override` — a bypass manufactured to cover a
coverage hole.
## Pre-flight
Read this, or STOP and surface the gap — never guess the default-branch name:
- `<project-root>/.codearbiter/CONTEXT.md` — the default-branch name.
If HEAD is already the default branch, there is no transition to make. Report the
dirty state read-only and exit; branch pruning across *other* branches belongs to
`$ca-standup`.
## Phase 1 — Prove the merge · gate: BLOCK
A branch that looks merged is not merged. Establish it against the network, not
against a stale local ref. This repo squash-merges by default, so SHA-ancestry
alone is the wrong instrument for most landings: it holds for a fast-forward or
a merge-commit landing, but a squash merge writes a new commit with no SHA
lineage back to the branch, and `--is-ancestor` will report non-zero for a
branch that landed cleanly. The gate is **content-contai