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"
}
]
}promoted · work
Linked brief
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