Filed unassigned by the skills execution seat at shift end (session session_01JANH3y7qe3MD8aLaLXci8N, 2026-08-26/27). Recording only — grading is the lane's.
The gap
The protocol has a dead-claim recovery path (dev 自己死了 ≠ 维护者中止: zero pushes / no branch / no report ⇒ recycle the claim). It says how to move the LABELS. It says nothing about the worktree, and that is where a died dispatch's entire output lives.
A dev that dies mid-edit has, by construction, not committed. Its work is uncommitted changes in ../objectstack-issue-N, invisible to every GitHub-side reading the recovery procedure prescribes — the card looks like "nothing happened", and a PM that follows the current text to the letter flips the labels and moves on. The worktree survives only until someone prunes it.
Measured today
A family dispatch died mid-edit when its model tier hit an account quota limit. GitHub-side signals: zero commits, zero pushes, no PR — i.e. exactly the "nothing happened" shape. The worktree held 113 changed lines across two instruction files (a 35-line edit and a 78-line edit). Recovered by this seat as a WIP commit and pushed before releasing the claim; had the recovery text been followed literally, all of it would have been discarded silently.
⭐ Note the timing: the WIP-commit rule for devs landed the same morning (push a WIP commit before every minutes-long step, because you are about to stop being the only copy). This incident is that rule's first live case — and it shows the rule has a PM-side counterpart that does not exist: the dev did not get to run its WIP commit, so the PM's recovery is the last line of defence.
Disposition (one line, at the recovery step)
Before releasing a dead claim, check the dispatch's worktree; if it holds uncommitted changes, commit them as a WIP on the dispatch branch, push, and name the sha in the recovery comment — marked INCOMPLETE AND UNREVIEWED so the resuming dispatch diffs it rather than building on it unexamined. Costs one git status per recovery; the alternative is silent, unrecoverable, and invisible in exactly the case the recovery path exists for.
Adjacent but different: #12204 (the ablation restore leg destroying uncommitted work — a dev-side idiom, not the PM-side recovery path).
Filed unassigned by the skills execution seat at shift end (session
session_01JANH3y7qe3MD8aLaLXci8N, 2026-08-26/27). Recording only — grading is the lane's.The gap
The protocol has a dead-claim recovery path (
dev 自己死了 ≠ 维护者中止: zero pushes / no branch / no report ⇒ recycle the claim). It says how to move the LABELS. It says nothing about the worktree, and that is where a died dispatch's entire output lives.A dev that dies mid-edit has, by construction, not committed. Its work is uncommitted changes in
../objectstack-issue-N, invisible to every GitHub-side reading the recovery procedure prescribes — the card looks like "nothing happened", and a PM that follows the current text to the letter flips the labels and moves on. The worktree survives only until someone prunes it.Measured today
A family dispatch died mid-edit when its model tier hit an account quota limit. GitHub-side signals: zero commits, zero pushes, no PR — i.e. exactly the "nothing happened" shape. The worktree held 113 changed lines across two instruction files (a 35-line edit and a 78-line edit). Recovered by this seat as a WIP commit and pushed before releasing the claim; had the recovery text been followed literally, all of it would have been discarded silently.
⭐ Note the timing: the WIP-commit rule for devs landed the same morning (push a WIP commit before every minutes-long step, because you are about to stop being the only copy). This incident is that rule's first live case — and it shows the rule has a PM-side counterpart that does not exist: the dev did not get to run its WIP commit, so the PM's recovery is the last line of defence.
Disposition (one line, at the recovery step)
Before releasing a dead claim, check the dispatch's worktree; if it holds uncommitted changes, commit them as a WIP on the dispatch branch, push, and name the sha in the recovery comment — marked INCOMPLETE AND UNREVIEWED so the resuming dispatch diffs it rather than building on it unexamined. Costs one
git statusper recovery; the alternative is silent, unrecoverable, and invisible in exactly the case the recovery path exists for.Adjacent but different: #12204 (the ablation restore leg destroying uncommitted work — a dev-side idiom, not the PM-side recovery path).