Conversation
… to everyone else The asymmetry is why abandoned claims survive, and it is not visible from the exit codes read one at a time. The ownership token is machine-id + git-dir, so the SAME unreleased ref tells the claiming clone "THIS SESSION (you already hold it) — carry on" and every other host "ALREADY CLAIMED — STOP". A claim nobody is working therefore reads as FINE from exactly the machine that could clear it, and as TAKEN from the machines it obstructs. Neither side sees the contradiction: the holder is told to carry on, the blocked session is told someone is on it, and nothing expires the ref in a way a human notices. Measured 2026-09-14: `cairn-oss-multi-instance-20` sat claimed for 5 days on work that was still open and that nobody was doing. It surfaced only because someone asked whether anything was outstanding and ran `claim-work --list` by hand — not from any check the workflow performs. Adds two habits that need no `--force`: release your own unlanded claims at session end, and read the list before assuming an INHERITED queue is free (checking `where:` against your own before reading rc 10 as "a peer is on it"). ⚠ Explicitly does NOT license auto-stealing. The file's existing reasoning stands — "the holder went quiet for a week" and "the holder is on a long piece of work" are the same observable, which is why `--steal` is a separate deliberate verb. What changes is that the HOLDER now has a reason to look, being the one party the stale ref never warns. Claude-Session-Id: a92541c5-8dbf-4529-aac0-2770e277e0a1
… claim-work lock on rank 20, h Claude-Session-Id: a92541c5-8dbf-4529-aac0-2770e277e0a1
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Session close-out. Two commits: the durable lesson lands in the skill reference that owns it, and the handoff records the arc state.
🔴 The finding
While answering "is anything outstanding?" I ran
claim-work --listand foundcairn-oss-multi-instance-20claimed for 5 days on work that is still open and that nobody was doing.It survived because of an asymmetry that isn't visible from the exit codes read one at a time. The ownership token is
/etc/machine-id+git rev-parse --git-dir, so the same unreleased ref answers:THIS SESSION (you already hold it)— carry on, to the clone that claimed itALREADY CLAIMED— STOP, to the other host or any other cloneSo a claim nobody is working reads as fine from exactly the machine that could clear it, and as taken from the machines it obstructs. Neither side sees the contradiction: the holder is told to carry on, the blocked session is told someone is on it, and nothing expires the ref in a way a human notices. It surfaced only because a human asked — not from any check the workflow performs.
Released; the arc now holds zero claims.
Where it landed
claude/skills/handoff/reference/shared-queue.md— the file that already owns the claim protocol — rather than only in a handoff, which gets overwritten. Adds two habits needing no--force: release your own unlanded claims at session end, and read the list before assuming an inherited queue is free.⚠ Explicitly does not license auto-stealing. The file's existing reasoning stands — "the holder went quiet for a week" and "the holder is on a long piece of work" are the same observable, which is why
--stealis a separate deliberate verb. What changes is that the holder now has a reason to look, being the one party the stale ref never warns.Handoff
Also records the second gotcha this session produced: "is anything outstanding?" is answered by the
closing-condition, not by the ranked list, and the two gave opposite answers. Ranks 4, 23 and 26 all closed and the queue read as productive; the frozen closing-condition says the arc has not arrived — phase B has not started and ranks 25/27/28 cannot advance it. A ranked list measures activity; only a frozen closing-condition measures arrival.193,498 B of 196,608 B — 3,110 B headroom. The tool's advisory notes the next update or two will go over;
claudedocs/refs/cairn-oss-multi-instance.mdis the demote target.⚠ No
clawgate-task:field:resolveexited 5 with a positive control (the same endpoint answered 9 links for another session), so the board is reachable and this session genuinely has no task.