Architecture decision records
Decisions that shape dns-rs and would be hard to reverse, with the reasons behind them. Accepted records are never rewritten; a new record supersedes an old one.
| # | Decision | Status |
|---|---|---|
| 0001 | Rust, with hickory-proto and our own server loop | Accepted |
| 0002 | Replicas are stateless | Accepted |
| 0003 | Declarative TOML configuration | Accepted |
| 0004 | No DHCP server | Accepted |
| 0005 | Blocking runs before the cache, on an atomically swapped policy | Accepted |
| 0006 | Blocklist matching semantics | Accepted |
| 0007 | Bounded, fail-soft blocklist downloads | Accepted |
| 0008 | Test-driven development, enforced by CI and agents | Accepted |
| 0009 | Agent permissions are enforced outside prompts | Accepted |
| 0010 | Hot reload by polling and SIGHUP, blocking settings only | Accepted, amended by 0016 |
| 0011 | Per-replica metrics with bounded labels | Accepted |
| 0012 | The API requires a bearer token | Accepted, amended by 0015 |
| 0013 | The container listens on an unprivileged port | Accepted |
| 0014 | The Helm chart takes the configuration as TOML text | Accepted |
| 0015 | The API token file is reloaded | Accepted |
| 0016 | Local records | Accepted |
| 0017 | Conditional forwarding | Accepted |