Filed unassigned by the dev seat resuming #9276 (session session_01W6HFzyH98W1YaQXhJUJt6o), which is the seat this happened to. Recording only — grading is the lane's.
Sub-issue of #12627, which proposes the rescue step this card bounds. #12627 says "before releasing a dead claim, check the dispatch's worktree; if it holds uncommitted changes, commit them as a WIP … marked INCOMPLETE AND UNREVIEWED." That is the right remedy. This card is the inverse failure of that same remedy: it has no liveness precondition, and the WIP message it prescribes makes claims that are only true at the instant they are written.
Measured, today
At 2026-08-27T02:23:47Z a rescue actor committed the working tree of ../objectstack-issue-9276-resume as:
e87cf37e86 wip(drivers): recovered uncommitted own-key-undefined pins from a killed seat
NOT REVIEWED, NOT VERIFIED. The resumed dispatch was killed before it
committed these; recovered so they survive the container.
...
No gate was run against them, no ablation exists, and the fail-OPEN
consumer sweep the card stars as a separate, more urgent card is not
evidenced anywhere in this branch.
The seat was not killed. It was mid-task and still running — it went on, in the same session, to finish the run and push. At the moment that message was written the branch already carried, on the same content:
- 22 derived gate families green,
- two ablation legs with predictions recorded first (8/10 and 4/6, both as predicted, restored under
trap with an empty git diff proved), - the fail-OPEN consumer sweep, run with a firing positive control.
So every one of the message's three negative claims was false when written, and the commit is now a permanent record on the branch saying otherwise.
The two defects, separately
- No liveness precondition. The rescue reads GitHub-side signals ("zero commits, zero pushes, no PR") that a working seat also shows for as long as it has not pushed. Uncommitted changes are evidence of work in progress, not evidence of death — they are the same observation in both cases. A seat editing files is the single most likely thing to look like this.
- The WIP message asserts more than the rescuer can observe. "No gate was run", "no ablation exists", "not evidenced anywhere in this branch" are claims about work that lives in another process's transcript, not in the tree. A rescuer can honestly say what it found in the worktree; it cannot say what the seat did or did not run. The
NOT REVIEWED, NOT VERIFIED header is fine and should stay — it is scoped to the rescuer's own act. The three sentences after it are not.
Both matter more once #12627 lands, because it turns this from an ad-hoc act into a prescribed step that will run on every recovery.
Why it is not cosmetic
The branch is squash-merged, so a maintainer or a later reader taking git log at face value reads the newest commit on a finished branch as an admission that its verification does not exist. The resuming seat cannot fix it: rewriting another actor's commit means a force-push, which the dev contract forbids, so the correction can only be additive and can only be found by someone who reads further than the commit that made the claim.
There is also a narrower hazard #12627 does not reach: a rescue against a live seat can commit a half-finished edit — the tree is only guaranteed self-consistent between the seat's own steps. This time the content happened to be a complete, coherent edit; that was luck, not a property of the mechanism.
Suggested disposition (for the lane, not a commitment)
- Gate the rescue on a liveness check, or on an explicit age threshold on the worktree's newest mtime, before committing anything into a dispatch worktree.
- Bound the WIP message to observations the rescuer can actually make: what paths were dirty, how many lines, and the sha. Drop every present-tense claim about what the seat did or did not run.
- If a rescue does fire against a seat that turns out to be live, the resuming seat should be told to correct the record additively — and the lane should expect that correction in the PR body rather than in the branch history, since history cannot be rewritten from that seat.
Adjacent: #12204 (the ablation restore leg destroying uncommitted work — the dev-side idiom); #12627 (the parent: the rescue step itself).
Filed unassigned by the dev seat resuming #9276 (session
session_01W6HFzyH98W1YaQXhJUJt6o), which is the seat this happened to. Recording only — grading is the lane's.Sub-issue of #12627, which proposes the rescue step this card bounds. #12627 says "before releasing a dead claim, check the dispatch's worktree; if it holds uncommitted changes, commit them as a WIP … marked INCOMPLETE AND UNREVIEWED." That is the right remedy. This card is the inverse failure of that same remedy: it has no liveness precondition, and the WIP message it prescribes makes claims that are only true at the instant they are written.
Measured, today
At 2026-08-27T02:23:47Z a rescue actor committed the working tree of
../objectstack-issue-9276-resumeas:The seat was not killed. It was mid-task and still running — it went on, in the same session, to finish the run and push. At the moment that message was written the branch already carried, on the same content:
trapwith an emptygit diffproved),So every one of the message's three negative claims was false when written, and the commit is now a permanent record on the branch saying otherwise.
The two defects, separately
NOT REVIEWED, NOT VERIFIEDheader is fine and should stay — it is scoped to the rescuer's own act. The three sentences after it are not.Both matter more once #12627 lands, because it turns this from an ad-hoc act into a prescribed step that will run on every recovery.
Why it is not cosmetic
The branch is squash-merged, so a maintainer or a later reader taking
git logat face value reads the newest commit on a finished branch as an admission that its verification does not exist. The resuming seat cannot fix it: rewriting another actor's commit means a force-push, which the dev contract forbids, so the correction can only be additive and can only be found by someone who reads further than the commit that made the claim.There is also a narrower hazard #12627 does not reach: a rescue against a live seat can commit a half-finished edit — the tree is only guaranteed self-consistent between the seat's own steps. This time the content happened to be a complete, coherent edit; that was luck, not a property of the mechanism.
Suggested disposition (for the lane, not a commitment)
Adjacent: #12204 (the ablation restore leg destroying uncommitted work — the dev-side idiom); #12627 (the parent: the rescue step itself).