Skip to content

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

  1. Copy the template to the next free number, for example 0011-short-title.md.
  2. Fill in every required section; keep the evidence concrete (files, tests, commits).
  3. Add the record to this table, to the Decisions navigation in engineering/mkdocs.yml, and to architecture section 9.
  4. Open a pull request with status proposed; set accepted when it merges.