P2: Add durable hook-failure record (not just logs)
When dispatch_controller_event returns ok=False, the failure is only logged. There is no durable record in MC that a hook failed to send. Operators cannot distinguish "hook disa...
StateDoneNext ActionClosedOwnerLuciRuntimeClosedAge12d ago
When dispatch_controller_event returns ok=False, the failure is only logged. There is no durable record in MC that a hook failed to send. Operators cannot distinguish "hook disabled" from "hook failed" without reading server logs.
Acceptance Criteria:
- [ ] Hook failure writes a system comment or task_run note
- [ ] Record includes ticket_id, trigger type, and error
- [ ] Does not fail the original API request
Files: control_room_events.py (dispatch_controller_event), app.py (hook callers)
Evidence: Council review finding (2026-06-01): Kimi reviewer flagged as observability gap.
Activity
done
INTERACTIVE
Luci is working...
Details —
Done
· Medium
· Luci
▼
SState
Done
Closed
PPeople
TTiming / Details▼
luci (human)
Mission Control
12d ago
12d ago
Advanced / Operator evidence
RRouting owner
ROperator console
Ticket is done; runtime is closed.MC is visibility-only. Hermes Luci launches and gates work outside MC, then mirrors evidence/status here.
WWorkflow
Start Dev Review + QA ▾
Select phases to include:
Agents
Review Gates
Decision
WAT routing: choose an agent, review gate, or decision. Buttons use the live runtime when one is attached.
Controller gate: verified implementation landed on master in commit 37f1ab2; Control Room v2 regression suite passed (180 passed). Closing stale needs_input row left by headless worker retirement.