P0: Make WAT action audit atomic (use add_comment_with_controller_audit)
WAT dispatch actions (app.py lines ~12032-12068) use models.add_comment followed by a separate dispatch_controller_event call. If the server crashes between them, the audit exis...
StateDoneNext ActionClosedOwnerLuciRuntimeClosedAge12d ago
WAT dispatch actions (app.py lines ~12032-12068) use models.add_comment followed by a separate dispatch_controller_event call. If the server crashes between them, the audit exists but the Controller never receives the event.
Human comments use add_comment_with_controller_audit which is atomic. WAT actions should use the same pattern.
Acceptance Criteria:
- [ ] WAT action uses add_comment_with_controller_audit (or equivalent atomic path)
- [ ] Hook only fires on atomic success
- [ ] Hook failure still does not fail the original request
- [ ] Tests prove atomicity
Files: app.py (WAT action handler, lines ~12020-12080), tests/test_control_room_event_hooks.py
Evidence: Council review finding (2026-06-01): Codex reviewer flagged as P0.
Activity
done
INTERACTIVE
Luci is working...
Details —
Done
· Critical
· 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 1ab7fd4; Control Room v2 regression suite passed (180 passed). Closing stale needs_input row left by headless worker retirement.