Accepted (2026-05-07). Source: plan.md §13; technical_spec.md §4.1.
The orchestrator coordinates four agents and emits actions to the Experience Layer. Two designs exist for this kind of system:
The free-form chat design is on display in early multi-agent frameworks (e.g. AutoGen, https://arxiv.org/abs/2308.08155). It is flexible but introduces infinite-loop risk, observability gaps, hallucinated tool calls, and uneven latency.
Constraints:
technical_spec.md §2).RECOVERING) must be enforced before scoring (technical_spec.md §4.3). State-machine guards make this trivial; free-form chat makes it fragile.plan.md §12.5). Deterministic state machines are unit-testable; free-form chat is not.The orchestrator is implemented as a LangGraph state machine (https://langchain-ai.github.io/langgraph/) with seven states:
Idle → Listening → Deliberating → AwaitingConfirm | Executing → LoggingTrace → Cooldown → Idle
Each state has a typed entry action, a typed exit guard, and an explicit timeout (technical_spec.md §4.1). On timeout the machine takes a defined transition rather than an undefined behaviour:
Listening 2000 ms → proceed with received agent outputs only.Deliberating 1500 ms → force do_nothing.AwaitingConfirm 60 s phone / 8 s watch → log dismiss.Executing 5000 ms → mark tool_failed, no retry this tick.LoggingTrace 1000 ms → fall back to a raw-file trace path.The orchestrator LLM (Phi-3-mini, ADR-0002) does not drive the state machine. It is invoked from inside specific states (Deliberating for novel candidate sets, LoggingTrace for LLM-sourced rationale) with bounded prompts and bounded output token counts.
Inter-agent communication is via typed JSON tool calls (ADR-0009), not chat. The orchestrator exposes each agent’s tool catalogue and dispatches calls programmatically.
Positive:
plan.md §12.5).technical_spec.md §2 mitigation #1).Deliberating → do_nothing; agent timeout → proceed with received outputs; tool failure → log + no retry.Negative / costs:
technical_spec.md §13.3) is necessary to avoid breaking changes.Deliberating, with a 1500 ms budget and a fallback to template rationale.End of ADR-0008.