↓ Skip to main content

Decisions

Documented version: v0.1.8

Table of Contents

Architecture decision records: one file per topic that shapes the project, with the rule in force, the context it was made in and what it costs. Code and guides say what the app does; these say why.

TopicRecordStatusFolded into it
How we decide0001 Record decisions as ADRsAccepted
Stack0002 Rust for every backend part; no Python sidecarsAccepted
The hook0003 The hook never blocks an agentAccepted
Permissions0004 Who answers a permissionAccepted0014, 0017, 0025, 0026
Permissions0027 An open reply for any tool that asks for oneProposed
Agent configs0005 Agent configs, and the agents we supportAccepted0029
Actions0011 Offer only the actions the agents allowAccepted
Zeca0018 Zeca: optional, apart from the flock, rules before modelsAccepted0010, 0012
Network and secrets0019 Network, secrets and telemetryAccepted0006, 0016
Releases0020 Releases: small and often, 0.2.0 at the Operations gateAccepted0007, 0015
Surfaces0021 Surfaces: one core, four sizes, a card answered where you areAccepted0008, 0009, 0022, 0023, 0024, 0030
Voice0028 Voice: local listening, opt-in spoken repliesAccepted0013

A number in the last column was a record of its own until 2026-10-12; an old commit or PR that cites it means the record it was folded into. Numbers are never reused: the next topic is 0031.

Writing one
#

A decision on a topic that already has a record is an edit to that record, in its own PR, with a dated line in its History. Only a new topic gets a new number: copy the shape of an existing record (Status, Context, Decision, Consequences), number it next in line and add it to the table. Write or edit one when a choice changes a rule in CLAUDE.md, the architecture, the release plan or what the app promises users (0001).