Architecture Decisions
This is the Architecture Decision Record (ADR) log for Portfolixir. Each ADR
captures one decision, the context that forced it, and its consequences.
AGENTS.md
requires that architecture decisions not change silently: when a decision
changes, add a new ADR and mark the old one as superseded rather than editing
history.
The records below were written after the fact to document decisions that were already in force in the codebase.
How to add an ADR
- Copy the template to
docs/decisions/NNNN-short-title.mdwith the next number. - Fill in context, decision, and consequences. Keep it short.
- Set the status to
Acceptedand add it to the list below. - To reverse a decision, add a new ADR and set the old one’s status to
Superseded by ADR-NNNN.
Records
| ADR | Title | Status |
|---|---|---|
| 0001 | Modular Phoenix monolith with bounded contexts | Accepted |
| 0002 | Thin MCP companion over the JSON API only | Accepted |
| 0003 | Decimal for all financial values | Accepted |
| 0004 | Holdings and trades derived from transaction history | Accepted |
| 0005 | Split quote providers: search vs. history | Accepted |
| 0006 | Classifications (taxonomies) with built-in derived trees | Accepted |
| 0007 | Currency conversion with exchange rates | Accepted |
| 0008 | Target weights and SOLL/IST allocation | Accepted |
| 0009 | Cash as balance snapshots, not a mirrored ledger | Accepted |
| 0010 | Daily valuation series and TTWROR | Accepted |
| 0011 | Unified ledger projection (single per-kind reducer) | Accepted |
| 0012 | Asset class inference at read time | Accepted |
| 0013 | Exclude flagged securities from the allocation steering basis | Accepted |
| 0014 | Bilingual docs site (EN baseline, DE alongside) without a custom Pages build | Accepted |
| 0015 | Cross-currency transaction settlement with a stored FX rate | Accepted |
| 0016 | Rounding policy — full precision in compute, round only at the human display | Accepted |
| 0017 | Append-only audit journal for financial writes | Accepted |