---
name: branch-d-merged-question-names-current-head
description: "git branch -d \"not fully merged\" measures against the CURRENT HEAD — in a shared checkout on another lane it answers a question you did not ask"
metadata: 
  node_type: memory
  type: feedback
  originSessionId: 21352d21-bf56-4eef-a2de-9d104632d3f8
  modified: 2026-08-19T20:46:10.976Z
---

`git branch -d release/v0.57.0` refused as "not fully merged" right after the branch had been pushed and shipped. Measured (deployah testimony, 2026-08-19): the shared checkout sat on `fix/199-er-hosted-probe`, which does not contain the release commit — `-d` measures merged-ness against the CURRENT HEAD, so the refusal was an artifact of where the checkout happened to sit. Ancestry against `origin/main` was exit 0 before and after.

**Why:** in a shared checkout the current HEAD is whatever lane a peer last worked; a `-d` refusal there reads as "my push failed / my branch is unlanded" — an alarming false negative minutes after a clean ship.

**How to apply:** the merged-ness question must NAME the ref it is asking about: `git merge-base --is-ancestor <branch> origin/main` (or the integration head you mean), never bare `-d`'s implicit verdict. A `-d` refusal in a shared checkout is a prompt to run the named-ref check, not evidence of an unlanded branch. Kin: [[waiting-branch-read-by-ref-not-ancestry]], [[check-branch-before-commit-shared-checkout]].
