Pane Liveness Check
Run a read-only claim-or-close sweep. The core rule is conservative: uncertainty always KEEP. Idle state, TASK_DONE, a title, or cost data never proves that a pane is done.
Run
bash skills/golem-powers/pane-liveness-check/scripts/run.sh
bash skills/golem-powers/pane-liveness-check/scripts/run.sh --json
The runner uses cmux/cmuxlayer reads and Git status/upstream reads. It never closes, kills, sends to, retitles, checks out, fetches, resets, or cleans a worktree.
Safety Contract
- Enumerate with cmuxlayer
list_surfaces and verbose:true; stable UUID is each surface's id.
- Key every row by UUID. Treat
surface:N as display-only.
- Immediately before each parsed read, re-list and compare UUID. Accept screen evidence only with an atomic
cmux read-screen --id-format both receipt for the expected UUID. Re-list afterward.
- Any mismatch means
STALE-REF — re-enumerate, verdict: null, and no disposition.
- Set an owner only from explicit metadata (
seat_lane, parent_agent_id, Owner lane: @name, or (@name)); otherwise use owner=UNKNOWN.
Verdicts
| Evidence |
Verdict |
| Uncommitted files or unpushed commits |
KEEP-unpushed |
| Verified dead process |
DEAD-shell |
| Live worker still booting, thinking, or working |
KEEP-live |
| Open/owed/unknown lane or incomplete proof |
KEEP-blocked |
| Closed lane, harvested/reported worker, clean pushed artifact |
CLOSE-CANDIDATE |
| UUID mismatch |
No disposition: STALE-REF |
Report DONE only when all three are true: no open lane, no live worker is unharvested or unreported, and no work is unpushed. Flag launcher-only titles such as <repo>Claude [surface:N] as untitled.
NOT for
- Automatically closing, killing, messaging, or retitling panes.
- Worktree mutation or garbage collection.
- Billing analysis or worker shaming; output omits cost entirely.
Common Mistakes
- Treating
idle, TASK_DONE, or an old title as completion proof.
- Inferring ownership from a repository-like title.
- Reusing a numeric surface ref after pane re-enumeration.
- Declaring DONE while a live worker, open lane, dirty tree, or unpushed commit remains.
Evaluation
The 2026-08-03 baseline/sweep record did not preserve an allowed observation of
the effective runtime model and effort. Its numeric comparison is withdrawn and
must be rerun with provenance-complete arms before publication.
1---2name: pane-liveness-check3description: Audit cmux panes for claim-or-close. Triggers: sprint close-out, idle workers, dead shells, uncommitted or unpushed artifacts, untitled seats, stale numeric surface refs.4---56# Pane Liveness Check78Run a read-only claim-or-close sweep. The core rule is conservative: **uncertainty always KEEP**. Idle state, `TASK_DONE`, a title, or cost data never proves that a pane is done.910## Run1112```bash13bash skills/golem-powers/pane-liveness-check/scripts/run.sh14bash skills/golem-powers/pane-liveness-check/scripts/run.sh --json15```1617The runner uses cmux/cmuxlayer reads and Git status/upstream reads. It never closes, kills, sends to, retitles, checks out, fetches, resets, or cleans a worktree.1819## Safety Contract20211. Enumerate with cmuxlayer `list_surfaces` and `verbose:true`; stable UUID is each surface's `id`.222. Key every row by UUID. Treat `surface:N` as display-only.233. Immediately before each parsed read, re-list and compare UUID. Accept screen evidence only with an atomic `cmux read-screen --id-format both` receipt for the expected UUID. Re-list afterward.244. Any mismatch means `STALE-REF — re-enumerate`, `verdict: null`, and no disposition.255. Set an owner only from explicit metadata (`seat_lane`, `parent_agent_id`, `Owner lane: @name`, or `(@name)`); otherwise use `owner=UNKNOWN`.2627## Verdicts2829| Evidence | Verdict |30|---|---|31| Uncommitted files or unpushed commits | `KEEP-unpushed` |32| Verified dead process | `DEAD-shell` |33| Live worker still booting, thinking, or working | `KEEP-live` |34| Open/owed/unknown lane or incomplete proof | `KEEP-blocked` |35| Closed lane, harvested/reported worker, clean pushed artifact | `CLOSE-CANDIDATE` |36| UUID mismatch | No disposition: `STALE-REF` |3738Report DONE only when all three are true: no open lane, no live worker is unharvested or unreported, and no work is unpushed. Flag launcher-only titles such as `<repo>Claude [surface:N]` as untitled.3940## NOT for4142- Automatically closing, killing, messaging, or retitling panes.43- Worktree mutation or garbage collection.44- Billing analysis or worker shaming; output omits cost entirely.4546## Common Mistakes4748- Treating `idle`, `TASK_DONE`, or an old title as completion proof.49- Inferring ownership from a repository-like title.50- Reusing a numeric surface ref after pane re-enumeration.51- Declaring DONE while a live worker, open lane, dirty tree, or unpushed commit remains.5253## Evaluation5455The 2026-08-03 baseline/sweep record did not preserve an allowed observation of56the effective runtime model and effort. Its numeric comparison is withdrawn and57must be rerun with provenance-complete arms before publication.