Architecture decisions
ADRs recording calls that had real alternatives, with reasoning.
Decision records live under docs/decisions/. They are binding alongside
docs/architecture.md unless a conversation explicitly relaxes one.
| ADR | Decision |
|---|---|
| 0001 | Postgres is the source of truth |
| 0002 | No event sourcing, no CQRS |
| 0003 | HTTP/JSON between services |
| 0004 | RabbitMQ with a transactional outbox |
| 0005 | Identifiers: bigserial, UUIDv7, FID |
| 0006 | No runtime schema registry |
| 0007 | Cedar for authorization |
| 0008 | Synchronous-first cross-service data |
| 0009 | Why field on commands (audit envelope) |
| 0010 | Dev auth via X-Dev-Actor (temporary) |
| 0011 | Generated from an entity spec (future) |
| 0012 | Postgres topology (one DB per service) |
| 0013 | JWT authorization at the service with a trust chain |
| 0014 | Pagination for list endpoints |
| 0015 | Domain-scoped outbox and table prefixes |
When proposing a change that contradicts an ADR, update the ADR or add a new one — do not treat undocumented choices as settled.