Component
API or orchestration
Describe the bug / gap
The #247 Mode A orchestration reconciler reacts to TaskTable-stream terminal-state events to release dependency-unblocked children. If the reconciler is unavailable when a child reaches terminal state (deploy window, throttle, a crash like the 256MB OOM found during the first dev smoke), that stream event is lost and never reprocessed — the dependent children are never released and the orchestration stalls forever with no recovery.
Observed live on dev (2026-06-09): child A reached COMPLETED during a reconciler OOM window; after the fix deployed, A's completion event was gone, so B stayed blocked until the record was manually nudged to re-emit a stream event.
Proposed solution
Add a scheduled stranded-orchestration reconciler (mirrors the existing reconcile-stranded-tasks pattern): a periodic sweep that scans OrchestrationTable for orchestrations with children in non-terminal states whose predecessors are already terminal-success, and releases them (idempotent — releaseChild is already idempotency-keyed). Also surfaces orchestrations stuck with a released child whose task is long-terminal but whose row never advanced.
Acceptance criteria
Related
Component
API or orchestration
Describe the bug / gap
The #247 Mode A orchestration reconciler reacts to TaskTable-stream terminal-state events to release dependency-unblocked children. If the reconciler is unavailable when a child reaches terminal state (deploy window, throttle, a crash like the 256MB OOM found during the first dev smoke), that stream event is lost and never reprocessed — the dependent children are never released and the orchestration stalls forever with no recovery.
Observed live on dev (2026-06-09): child A reached COMPLETED during a reconciler OOM window; after the fix deployed, A's completion event was gone, so B stayed
blockeduntil the record was manually nudged to re-emit a stream event.Proposed solution
Add a scheduled stranded-orchestration reconciler (mirrors the existing
reconcile-stranded-taskspattern): a periodic sweep that scansOrchestrationTablefor orchestrations with children in non-terminal states whose predecessors are already terminal-success, and releases them (idempotent —releaseChildis already idempotency-keyed). Also surfaces orchestrations stuck with areleasedchild whose task is long-terminal but whose row never advanced.Acceptance criteria
Related
reconcile-stranded-tasks.ts+StrandedTaskReconcilerconstruct.