ADR 0011: Freeze host RPC, storage ownership, and mode defaults
- Status: Accepted; mode-profile clause superseded in part by ADR 0053
- Date: 2026-07-25
Context
After baseline 0.3.0, implementation still depended on several high-impact defaults:
- Electron ↔ Rust transport
- SQLite ownership
- default interaction mode
- former restricted-profile tool split (superseded by ADR 0053)
- permission timeout behavior
Decision
Freeze the following defaults for implementation:
- Transport = Rust sidecar + stdio JSON-RPC (NDJSON)
- SQLite ownership = Rust host-core only
- Default mode = Agent
- The former restricted profile was read-only; this mode-profile clause is superseded by ADR 0053, which supersedes the historical operating-state decision in ADR 0052 and replaces it with the current Plan workflow
- Permission timeout = 120s deny
- Session grants = by toolName
- First release platform = macOS arm64 only
- TS schema = typebox
- i18n = i18next
Consequences
Positive
- M1/M2 can proceed without re-litigating core choices
- Clear process and data ownership
- Explicit host-owned operating-state and permission policy
Negative
- JSON-RPC text protocol may later need binary upgrade
- Exclusive Rust DB ownership requires mature host RPC coverage early
Related docs
docs/spec/08-meta/decisions-log.mddocs/spec/03-runtime/06-host-rpc-protocol.mddocs/spec/03-runtime/07-process-model.mddocs/spec/04-ux/03-permission-ux.md