Skip to content

backlog: file #1068, a -Force claim release leaves no record of who released whose claim - #258

Open
wshallwshall wants to merge 1 commit into
mainfrom
claude/claim-force-audit
Open

backlog: file #1068, a -Force claim release leaves no record of who released whose claim#258
wshallwshall wants to merge 1 commit into
mainfrom
claude/claim-force-audit

Conversation

@wshallwshall

Copy link
Copy Markdown
Collaborator

Files BACKLOG #1068. Docs-only, one file, +22.

THE DEFECT. scripts/coord/claim.ps1:164 gates a non-holder release behind -not $Force, so
-Force lets any session release a claim it does not hold. The release is
Remove-Item -LiteralPath $file -Force and NOTHING ELSE -- no log, no audit line, no record of who
released whose claim, when, or why.

⛔ THE ITEM EXPLICITLY SAYS DO NOT REMOVE -Force. The hatch has a real job and was needed the same
night: claim 1041 was held by a worktree whose session had ended, and claim.ps1:141 already prints
[HOLDER GONE -- release with -Force] for exactly that case. Removing it would strand claims and
push people toward deleting claim files by hand, which leaves even less evidence. What is asked for
is a record, not a refusal.

MEASURED, and only known because the lane self-reported: a build lane ran -Release 1021 -Force on
another worktree's claim and left no commit. Remediated correctly -- the original holder released its
own claim WITHOUT -Force, the item was re-taken on the lane worktree, the work committed there.
Nothing was lost. But the release itself left nothing behind to find.

A SIBLING WAS CONSIDERED AND DECLINED, and the item records why rather than dropping it. The claim
gate reads the commit SUBJECT only (claim_check.py:106), so a body-placed token evades it -- and a
lane did exactly that, self-documented, since remediated. NOT filed: the subject-only scope is a
documented design decision with a stated reason ("a body may reference other items freely ...
enforcing on the body would fire on every one of those"), and the obvious fix would deny every
ordinary commit citing a superseded item. It is recorded in the item because it is the obvious next
proposal and the next reader will have it.

BOTH claims were verified against the source before filing, not taken from the incident reports:
-Force genuinely bypasses the holder check, and the release genuinely records nothing.

VERIFICATION. Number allocated atomically via alloc.ps1 from the committing worktree. Based on
afdc5cb, merge-tree clean. Headings 142 -> 143, exactly one added. backlog_status_check: 338 items,
each declaring exactly one status. Glyph audit on the added lines: only house-style characters
(em-dash, middot, the open-banner glyph, and one already used 24 times) -- no new vocabulary.

⚠️ COORDINATION NOTE: this edit was BLOCKED TWICE by the collision gate because another live session
had uncommitted docs/BACKLOG.md changes. The override was declined both times and the item waited
until that session committed (#1066, #1067). Its insert point was re-measured immediately before
writing rather than trusted from the earlier reading.

@wshallwshall
wshallwshall enabled auto-merge (squash) August 6, 2026 16:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant