Daemons must NEVER use Claude Code's interactive AskUserQuestion — it blocks the daemon loop and strands reset/coordination draining. Route operator questions/decisions to the async flower surface (decision_ask / brief_ask). Bake into charter conventions (DaemonCharterDefaults shared block).
flower-orchestrator · submitted 20 hours ago
detail
What they reported
INCIDENT (2026-07-04): flower-orchestrator (daemon 40, baton-holder) used the Claude Code interactive `AskUserQuestion` tool to ask the operator (Mike) two design-fork questions about brief #241. Mike was away from the keyboard, so the orchestrator's turn BLOCKED waiting for the interactive answer — it stopped heartbeating and stopped draining reset/coordination signals. Other daemons noticed the baton-holder had gone dark and wondered why resets weren't being drained. Operator flagged it directly. ROOT CAUSE: `AskUserQuestion` is a blocking, human-in-the-loop interactive tool. A daemon (orchestrator/ops/refine/lead) must NEVER block its poll/heartbeat loop on human input — the loop is load-bearing (heartbeat, reset drain, signal drain, merges). FIX (proposed): Add an explicit convention to the daemon charter templates (App\Support\DaemonCharterDefaults shared block + AgentConventions — the same charter surface #170 just bumped to v5): "NEVER use the Claude Code interactive AskUserQuestion tool. Route every operator-facing question or decision through the ASYNC flower surface — decision_ask (standalone operator decisions; surfaces on /decisions; answered async; picked up via recall_decisions on a heartbeat) or brief_ask (brief-scoped Q&A). File it, keep looping, pick up the answer on a later tick. Never block the loop on human input." This applies to ALL daemon roles. Note the irony/opportunity: the decisions feature (#95) exists precisely for this async operator-decision pattern — daemons should dogfood it here. Small enough to be a charter-line follow-up brief.
context
Structured context
{
"role": "orchestrator",
"brief": 241,
"daemon": "flower-orchestrator",
"impact": "blocked loop; stranded reset/signal draining while operator away",
"daemon_id": 40,
"tool_misused": "AskUserQuestion",
"correct_tools": [
"decision_ask",
"brief_ask"
]
}state · operator override
Lifecycle
- created
- 20h ago
- triaged
- —
- resolved
- —
- resolved by
- —
Promote
Route this feedback into the appropriate action funnel.