Architecture Decision Records
Decision logs only — why we chose an approach. Not Java, not Flutter, not task checklists.
Format: NNNN-short-title.md
- Status: proposed | accepted | superseded
- Context — what forced a choice
- Decision — what we chose
- Consequences — trade-offs, follow-ups
Repo-root docs/adr/ is unused. Put ADRs here.
Index
| ADR | Title | Status |
|---|---|---|
| 0001 | Product id health.afia.app and three repos | accepted |
| 0002 | Five Stitch modules as bounded contexts | accepted |
| 0003 | One afia-api JVM, domain-colocated packages | accepted |
| 0004 | One Flutter app + static web; admin later as web | superseded by 0007 |
| 0005 | /api/v1/afia, EndpointUri, ai-agent/ layout | accepted |
| 0006 | Exclusive write paths for parallel agents | accepted |
| 0007 | Five Stitch modules are mobile role shells | accepted |
| 0008 | Tech specs in api/, app/, and exchange/ before code | accepted |
| 0009 | afia-docs as the documentation repo | proposed |
| 0010 | CCF tree is inventory, not a package cut | accepted |
| 0011 | Stitch jobs are one flow per folder, including payments and vitals | accepted |
| 0012 | Stitch visual parity: design tokens, kit, and enriched API | accepted |
| 0013 | NNI is a patient profile field (optional ID-card image) | accepted |
| 0014 | Release horizon v1/v2 vs Stitch parity | accepted |
When to add an ADR
Hard-to-reverse choices: auth model, schema, splitting a domain out of the monolith, new client binary.
Screen inventory lives in ADR 0010 and manifest/ccf-tree.tsv. Do not put API catalogs here. Use docs/api-map.md. Parallel implementation cuts live in docs/work-packages.md.