diagnose-stall
Diagnose Stall
Section titled “Diagnose Stall”HARD GATE — Do NOT restart work blindly. Run this diagnostic first when orchestration goes quiet without an explicit terminal state.
Explicit handler for silent stalls in long-running agent workflows (/loop, dispatch-agents, execute-plan, build-epic resume mode).
Stall signals
Section titled “Stall signals”| Signal | Likely cause |
|---|---|
| No stdout for >5 min on a monitored loop tick | Sleep/watcher misconfigured or prompt never re-armed |
| Subagent dispatched but no completion message | Agent hung, blocked on approval, or scope too large |
dispatch-agents cycle 3 reached with gaps |
Circuit exhausted — needs human escalation |
| Verify command running >15 min | Missing timeout or waiting on external service |
handoff.next_skill unchanged across turns |
Prior skill never wrote handoff |
Process
Section titled “Process”- Read state —
specs/state.yaml:handoff.next_skill,active_flow,metrics.story_start, open decisions. - Check locks —
bash scripts/check-stale-locks.shif present; readspecs/agent-locks.yaml. - Inspect terminals — list background shells; note PIDs, last output timestamp, exit codes.
- Classify stall type:
- waiting_approval — tool blocked on user consent
- blocked_dependency — prior task incomplete or red gate
- agent_exhausted — max iterations/cycles reached
- misconfigured_loop — duplicate sentinel, wrong regex, or sleeper not re-armed
- external_io — network, CI, or deploy wait without timeout
- unknown — escalate with evidence bundle
- Recommend recovery — one action only (resume, kill PID, re-dispatch with smaller brief, escalate to user).
- Write report —
specs/verifications/STALL-<timestamp>.mdwith classification, evidence, and recommended next skill.
Integration
Section titled “Integration”| Caller | When to invoke |
|---|---|
/loop (Cursor) |
After two consecutive ticks with no observable progress |
dispatch-agents |
When a wave exceeds expected duration with zero returns |
execute-plan |
When a step checkpoint is overdue |
| User | “Why did this stop?” / “Nothing is happening” |
Verify
Section titled “Verify”→ verify: test -f specs/state.yaml && echo "OK: diagnose-stall can read session state" || echo "WARN: no state.yaml — diagnostic limited"
Handoff
Section titled “Handoff”Gate: READY → next: survey-context (if state unclear) or resume prior skill from state.yaml
Writes: specs/verifications/STALL-*.md