The Autonomous Layer (M4)
The opt-in background executor and the discipline that makes unattended agency acceptable: its design lineage, the five-phase walk, the single chokepoint, the brakes, the honest caveats, and what shipped.
Headline — the Autonomous Layer (M4)
A new Autonomous area (opt-in, off by default; enabled per-user in Settings → Autonomous).
What it runs
- Schedules — a chosen skill or playbook on a cron cadence, optionally scoped to a knowledge base and/or matter, with a per-run cost cap.
- Watches — a run triggered when a document is attached to a chosen knowledge base.
- Run now — a one-off, on-demand run of a skill/playbook so you can see the result (and its receipt) before arming a schedule or watch.
How it runs — a LangGraph phase machine (intake → analysis → drafting → ethics review →
delivery) that performs real in-loop agentic work through the same guarded chokepoint as the rest
of the platform: every tool call (retrieve / run-skill / run-playbook) passes through
guarded_tool_call with audit + OpenTelemetry spans, and a tolerant structured-output parser that
completes honestly rather than crashing on malformed model output.
Safety brakes (all live, all leave a receipt)
- R4 — cost cap. Per-trigger
max_cost_usd(default $5, configurable viaautonomous_default_max_cost_usd); a run that would overspend is halted withterminal_reason = cost_cap_reached. Live-verified during fresh-install acceptance. - R5 — external halt + idle watchdog. A run can be halted from the UI; a cron watchdog moves an idle run running → paused → halted over two idle ticks.
- R6 — per-phase tool limits. Each phase is bounded in how many guarded calls it may make.
Where results land
- Sessions — every run with its chronological, inspectable receipt.
- Memory — per-user curated memory (keep / edit / dismiss / delete); only kept items are injected.
- Precedents — a precedent board (
propose_precedent), with promote-to-Matter. - Proposals — project-context proposals (accept / reject).
- Notifications — in-app notification rail with an unread badge; best-effort email dispatch (SMTP transport, timeout-bounded — in-app is the source of truth).
Opt-in enforcement — mutate endpoints are gated on the per-user autonomous_enabled flag
(read + halt stay open so you can always inspect and stop); schedule/watch spawn paths skip
opted-out users.