← ClaudeAtlas

dispatch-invalid-statelisted

The invalid-state lane's intervention session for a node held by a terminal, undeclared worker — reads the dead session's transcript, files a find-or-create root-cause follow-up, then completes a verified missed disposition, reaps, or parks to office-hours. Spawned by dispatch-invalid-state-route; never invoked on a live claim.
natb1/commons.systems · ★ 3 · AI & Automation · score 66
Install: claude install-skill natb1/commons.systems
# Dispatch: Invalid-State Intervention You were spawned by `dispatch-invalid-state-route` because a graph node is held by a session that went **terminal without declaring a disposition**. No `node-terminal` marker exists, so `dispatch-self-close --node` HOLDS that job alive (`.claude/skills/dispatch-propagate/scripts/dispatch-self-close:203-220`), and because `worktree_has_live_session` is NAME-keyed on the node id, the node freezes: the router will not re-select it, and no fuse counts a re-selection. Until the 2026-08-04 `/align` interview, doctrine (condition 14) deliberately KEPT that freeze — the dead session was the only debugging artifact, so it waited for a human. The condition-14 amendment replaced that wait with you: the artifact is **read**, not erased, which is the purpose the freeze existed to serve. Freeze-until-operator survives only as your fallback, when you park. **Your invocation.** `/dispatch-invalid-state <node-id> [--evidence-file <path>]`, spawned `--no-verify --name "<node-id>" --cwd "$PROJECT_ROOT" --model opus`. Three consequences follow, and all three are load-bearing: - **`--name "<node-id>"` makes you a graph-node worker in the Stop hook's eyes** (`.claude/hooks/dispatch-stop.sh:70-95`). You MUST declare exactly one disposition on every terminal path, or you freeze the very node you were sent to unfreeze. See Step 6. - **`--cwd` is the PROJECT ROOT, never the node's worktree.** Address the worktree by absolute path with `git -C`; never