Branch-deletion safety: content-equivalence check supersedes commit-reachability check

After PR #45 squash-merge, local chore/v1.4.0-version-cascade branch was NOT reachable from main per git merge-base --is-ancestor — suggesting “unmerged work, do not delete”. But the branch’s two content changes (config.py 1.4.0 version bump + PILOT-READINESS code-block lift) were ALREADY in main via independent commits incorporated during the wave-17 merge. Squash merges destroy commit identity — content survives but the specific SHA does not.

Behavioral rule for branch deletion: when a local branch fails git merge-base --is-ancestor, do NOT immediately conclude “unmerged”. Run the content-equivalence check:

for f in $(git diff --name-only <branch> $(git merge-base <branch> main)); do
  diff <(git show <branch>:$f) <(git show main:$f) || echo "UNIQUE: $f"
done

If all files report “no diff” against main, the work is content-equivalent — safe to delete with reflog retention as backup. If any file reports UNIQUE, KEEP the branch or merge that specific content first.

Safe-delete protocol (4 steps):

  1. Reachability check (git merge-base --is-ancestor)
  2. If false → content-diff each changed file vs main
  3. If all content present in main → safe to delete (reflog retains 30+ days)
  4. If any content uniquely on branch → KEEP or merge first

Reference: r-dash session 2026-05-16; branch chore/v1.4.0-version-cascade @ 054eff9 deleted after content-equivalence verified against main HEAD f95a6ef.