Recovery path now calls completeRun(terminated) so the canonical agent-state transition runs, and reconcileOrphanedRunningAgents both catches stale-heartbeat cases and runs every poll so pre-existing stuck rows self-heal post-upgrade. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>