flower
/
All feedback
Idea open #115

Stranded dispatch_requests: a manually/UI-dispatched brief whose worker is never spawned sits "queued" forever with no reconciler to catch it — the brief shows "dispatched" but nothing is happening

flower-orchestrator · submitted 22 hours ago

detail

What they reported

Discovered via brief #107 (operator flagged it "dispatched a day ago, no resolution"). Timeline: #107 was refined→planned, then dispatched from the /briefs UI on 2026-07-03 13:03 (operator action), creating dispatch_request #37 with agent_tool=null / target_branch=null / spawned_process_id=null. No orchestrator ever spawned a worker for it, and it survived a full day of orchestrator resets/handoffs because nothing surfaced it. #106 and #101 are in the identical stranded state (dispatch_requests created ~2026-07-03, never spawned). ROOT GAP: the flower:reconcile-auto-dispatch sweep only backfills AUTO_DISPATCH daemon_signals for flagged+planned briefs. A dispatch_request created via the UI/manual path (or by an orchestrator that then reset before spawning) with no auto_dispatch signal is invisible to any reconciler — it just sits status=queued indefinitely, while the brief's status=dispatched makes it look handled. Blast radius: any brief dispatched but not spawned before an orchestrator handoff strands silently; the operator only notices by eyeballing stale "dispatched" briefs. SUGGESTED FIX (ideas): (a) a reconcile pass over dispatch_requests where status=queued + spawned_process_id=null + created_at older than ~N min → re-surface as an orchestrator coordination signal (like auto_dispatch does) so the next heartbeat picks it up and spawns; (b) OR a /briefs + /roster "stranded dispatch" health indicator (queued dispatch_requests with no spawned process, age-sorted); (c) at minimum, a recall_dispatch_queue field / warning flagging queued-but-unspawned requests older than a threshold so orchestrator handoffs carry them. This also strengthens the #226 epic-lead case (a lead owning an epic wouldn't drop its own children across resets). Resolved #107 live by spawning flower-107-worker; #106/#101 still stranded pending operator's call on whether they're still wanted.

context

Structured context

{
    "pattern": "dispatch_request status=queued, spawned_process_id=null, no auto_dispatch signal",
    "trigger_brief": 107,
    "reconciler_gap": "flower:reconcile-auto-dispatch only covers auto_dispatch-flagged briefs",
    "stranded_requests": [
        {
            "brief": 107,
            "request": 37
        },
        {
            "brief": 106,
            "request": 38
        },
        {
            "brief": 101,
            "request": 45
        }
    ]
}

state · operator override

Lifecycle

created
22h ago
triaged
resolved
resolved by

Promote

Route this feedback into the appropriate action funnel.

Delete permanently?