Skip to content

I2761 — A branch that renumbered its decision away claims nothing at the old number

Count a ref as claiming an ADR identity only while its tip carries the document, so that renumbering one of two colliding decisions clears the collision for the other branch.

READY wave 0 · p1 · implementation profile · parallel safe

Part of development-runtime — The runtime has a development surface.

Ready. Every dependency is done, so majordomus plan start I2761 will be accepted.

Objective

Count a ref as claiming an ADR identity only while its tip carries the document, so that renumbering one of two colliding decisions clears the collision for the other branch.

Why

On 2026-10-16 two sessions took ADR 0168 within minutes: #947 (the d8 mesh segment) and #1293 (I1101). The landing seat decided that #947 keeps 0168, and #1293 renamed its decision to 0169 and pushed. #947's commit was still refused by the pre-commit hook with `identity 0168 is also claimed by .ai/repo/adrs/0168-what-an-adoption-leaves-behind-is-measured-not-remembered.md, on: docs/adoption-footprint-forensics`. mj_adr_collisions asks which refs contain the commit that once added the path, and #1293's branch still contains that commit in its history. No branch carried the document any more, and the only way past was --no-verify, which this repository forbids.

Current state

mj_adr_collisions reports a collision for every path that any ref's history ever added, for as long as any ref contains that add-commit, whether or not the document still exists at the ref's tip.

Desired state

A ref claims an identity while `git cat-file -e <ref>:<path>` holds. A path that no current tip carries is no collision, whereas one in an unreferenced commit is still reported as before. The allocator (`adr next`) is unchanged: a withdrawn identity stays spent there.

Scope

  • lib/adr.sh
  • test/cases/271_adr_allocation.sh
  • .ai/repo/project/issues/I2761.yaml

Dependencies

None. This issue is a root of the graph.

Acceptance criteria

  • adr check passes on a branch taking an identity whose other claimant renumbered its document away and pushed
  • the renumbered document still collides at its new number, naming the branch
  • case 271 fails against master without the change

Validation

  • bash test/run.sh 271_adr_allocation
  • bin/majordomus plan validate

Evidence required

  • renumbered_claim_case

Evidence

None recorded. Every token above needs a command or an artifact behind it before this issue can be completed; narrative is refused.

Timeline

started
—
verified
—
completed
—

Those three fields, the evidence above and the state of the dependencies are all the status is made of. There is no status field to disagree with them.

Canonical record: .ai/repo/project/issues/I2761.yaml. Read it back with majordomus plan show I2761.

Searches the titles and descriptions of every page this site publishes.