Architecture decisions
The project records its significant decisions as ADRs, with the reasoning attached. They are the fastest way to understand why the tool is shaped the way it is — and several of them explain constraints that show up directly in Limitations.
| ADR | Decision |
|---|---|
| 001 | Go as the CLI language |
| 002 | AGPL and the network boundary |
| 003 | Local-first processing |
| 004 | ActionIntent normalisation |
| 005 | Stable finding IDs |
| 006 | Adapter-specific enforcement |
| 007 | No proprietary imports |
| 008 | AWS first |
| 009 | Telemetry opt-in |
| 010 | Simple graph first |
The three that shape everything else
ADR-006 — adapter-specific enforcement is why enforcement claims are scoped to the MCP gateway rather than to "agent actions" generally. It is the decision behind the first entry in Limitations.
ADR-003 — local-first processing is why the tool works with no account and why a workstation cannot see the organisation. Both follow from the same choice.
ADR-002 and ADR-007 together keep the AGPL boundary clean: Enterprise is reached over HTTPS, and the AGPL binary never links proprietary code.
Contracts
The repository publishes JSON schemas under schemas/ — decision, policy,
action-intent, evidence-event among them. These are the shared contract with
the commercial control plane, which must accept everything the OSS schemas
define and may extend them. It can never remove or narrow one; unknown values
fail closed on this side.