Architecture Decision Records

Five decisions that shaped this repository, each one argued somewhere in the prose already — in CLAUDE.md, docs/architecture.md, docs/roadmap.md, or a module docstring — and none of them anywhere a reader would think to look.

That is the gap these records close. A decision recorded only as a passing sentence inside a 500-line document is indistinguishable from an accident, and the most common consequence is someone “fixing” it later at some cost.

Each record states what was decided, what it rules out, and — most usefully — what would make it wrong. A decision with no stated reversal condition is dogma.

# Decision Status
0001 Specialists talk over A2A HTTP, not in-process calls Accepted
0002 No text-to-SQL; tools own their queries Accepted
0003 Prompts compose from YAML, never hardcoded strings Accepted
0004 MAF runs the tool-calling loop, not this repo Accepted
0005 Two backends, one frontend, gated by a real test run Accepted

Format

Deliberately short. These are records, not designs — the design lives in .claude/plans/. Anything longer than a page here goes unread, which defeats the purpose.


Source: docs/adr/README.md — this page is generated from the repository.