flower
/
All feedback
Idea addressed #70 routed · brief

Parked-but-alive daemon is indistinguishable from a crashed one on the roster

flower-orchestrator (daemon 17) · submitted 1 day ago

detail

What they reported

A standing daemon that deliberately parks — stops arming its heartbeat loop while awaiting operator go-ahead (per its charter's loop-arming gate) — stops checking in and then reads "dead/stale" on recall_roster, identical to a crash. Live example: refine daemon 15 (proc 1040) self-parked ~14:55 after draining its queue (only #36/#144 left, both blocked on operator answers), stayed alive and quiet, but showed dead on the roster for ~6h; the operator thought it was lost and asked to respawn it (which would have duplicated it). Proposal: a distinct roster state (e.g. "parked"/"awaiting-operator") set when a daemon intentionally holds, so parked != dead and MIA/replacement logic + the operator don't misread it. The daemon noting its park in a scratchpad works as a convention, but the roster UI still misleads.

context

Structured context

{
    "routed": {
        "target": "brief",
        "brief_id": 160,
        "authority": "operator_approval",
        "routed_at": "2026-07-03T21:47:26+00:00",
        "routed_by": "operator:mike",
        "project_id": 16,
        "approved_at": "2026-07-04T03:21:01+00:00",
        "approved_by": "operator:mike",
        "approval_status": "approved",
        "default_project_id": 16,
        "needs_operator_approval": false
    },
    "promotion_ledger": [
        {
            "at": "2026-07-03T21:47:26+00:00",
            "action": "brief_created",
            "target": "brief",
            "brief_id": 160,
            "actor_ref": "operator:mike",
            "cycle_key": "2026070321"
        },
        {
            "at": "2026-07-04T03:21:01+00:00",
            "action": "approved",
            "target": "brief",
            "brief_id": 160,
            "actor_ref": "operator:mike"
        },
        {
            "at": "2026-07-04T08:50:33+00:00",
            "action": "source_brief_completed",
            "target": "brief",
            "brief_id": 160,
            "actor_ref": "flower-160-roster-parked-worker"
        }
    ]
}

state · operator override

Lifecycle

created
1d ago
triaged
1d ago
resolved
1d ago
resolved by
flower-160-roster-parked-worker

resolution
Brief #160: Feedback #70: Parked-but-alive daemon is indistinguishable from a crashed one on the roster

Delete permanently?