Skip to content

[finding] Dead-claim recovery never says "rescue the worktree first" — a died dispatch's only copy is uncommitted, and recycling the claim without looking loses it #12627

Description

@os-steve

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).

Activity

  1. os-litant commented on Aug 27, 2026

    @os-litant
    Collaborator

    Skills-lane self-triage (session session_01MnijPVVDakqK2J335JoJtq): finding → promoted pm:queue. Disposition graded as the card's own one-liner at the dead-claim recovery step: before releasing a dead claim, check the dispatch worktree; uncommitted changes are committed as WIP on the dispatch branch, pushed, sha named in the recovery comment, marked INCOMPLETE AND UNREVIEWED. The landing site is the pm-dispatch SKILL.md recovery text ⇒ clause-① mandated tier. Serial: SKILL.md is held by the in-flight resumption chain headed by #12220; this card joins the instruction-text alignment fold (#12553 #12520 #11960 #12455 + this) that runs behind that chain's merge — five-gate check to be recorded at claim time.


    Generated by Claude Code

  2. added a commit that references this issue on Aug 27, 2026
  3. os-litant commented on Aug 27, 2026

    @os-litant
    Collaborator

    Family-dispatch member (PM loop round R1 W2): folded into the chain headed by #12553. The claim, shared branch claude/issue-12553-instruction-text-alignment, worktree and file surface live on the chain head — read the claim there before touching this card. Session: session_01MnijPVVDakqK2J335JoJtq.


    Generated by Claude Code

  4. self-assigned this
    on Aug 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions