Architecture decision records¶
Decisions that shape the system are recorded here in the
MADR 4 format: context and problem, decision drivers,
considered options, the outcome, its consequences, and how compliance is confirmed.
Records are numbered in the order they were made and are never deleted; a reversed
decision is marked superseded by NNNN and links to the record that replaces it.
| Record | Status | Date |
|---|---|---|
| 0001 Lay out pipeline graphs with Dagre and a Kionga SVG renderer | Accepted | 2026-10-09 |
| 0002 Blog editor, canonical content and editorial identity | Accepted | 2026-10-09 |
| 0003 Bundle RustFS as the object store | Accepted | 2026-10-09 |
| 0004 Go for the control plane, Python for ML-facing code | Accepted | 2026-06-27 |
| 0005 PostgreSQL as the system of record, Kafka through a transactional outbox | Accepted | 2026-06-28 |
| 0006 Single sign-on through OIDC, with Dex as the bundled broker | Accepted | 2026-10-10 |
| 0007 Per-user workspaces on Kubernetes, a shared workbench in Compose | Accepted | 2026-07-20 |
| 0008 Bind local published ports to loopback by default | Accepted | 2026-10-21 |
| 0009 Private GHCR images, pulled with registry credentials | Accepted | 2026-10-23 |
| 0010 One repository per component | Accepted | 2026-10-09 |
Numbers follow the order records were written, so dates are not monotonic: 0004 to 0010 were written after the fact from the code and commit history and carry the date the decision took effect. Each cites its evidence.
Propose a decision¶
- Copy the template to the next free number, for example
0011-short-title.md. - Fill in every required section; keep the evidence concrete (files, tests, commits).
- Add the record to this table, to the
Decisionsnavigation inengineering/mkdocs.yml, and to architecture section 9. - Open a pull request with status
proposed; setacceptedwhen it merges.