---
name: an-unlanded-branch-with-a-landed-patch-id-is-a-duplicate
description: A branch whose tip is not an ancestor of main can still be fully landed under another sha; compare `git patch-id --stable` against the main commit with the same title before building on or retiring it.
metadata:
  type: feedback
---

2026-09-09: hertz's docs/owlery-noun lane (0d1f3e4e on the v0.55.0 bump, thirteen milestones stale)
was "unlanded" by ancestry and DEAD by content: main carried f1622f22 with the same title, same
3-file +5 -5 stat, and an IDENTICAL `git show <sha> | git patch-id --stable`. Earlier the same day the
ir79..83 register drafts were the same class (unlanded-looking file, landed substance).

**Why:** `merge-base --is-ancestor` answers whether THIS OBJECT landed, not whether THIS CHANGE did;
a re-committed, rebased, or re-authored copy lands under a new sha and leaves the old branch reading
as open work. Building on it duplicates a landed diff; retiring it on ancestry alone looks like
throwing work away.

**How to apply:** for any branch that predates several milestones: (1) `git log --oneline main
--grep="<title>"`; (2) if a hit, compare patch-ids (`--stable`) and stats; (3) identical = retire
with the main sha named in the record; different = a real delta, diff the two. The goal the lane
served gets its own census at main (hertz's three surfaces: published docs, print-macro strings,
clap-exposed doc comments) -- "the branch landed" and "the goal is met" are separate claims.
Related: [[a-hand-tracked-branch-is-a-snapshot-of-the-last-assembly-it-was-moved-to]].
