We use ADRs to document significant architectural and design decisions for prefixd. Each ADR describes the context, decision, and consequences of a choice that affects the system's architecture.
Format follows Michael Nygard's template.
| ADR | Title | Status | Date |
|---|---|---|---|
| 001 | Use GoBGP as a sidecar instead of native BGP | Accepted | 2026-01-15 |
| 002 | FlowSpec-only AFI-SAFI for router peers | Accepted | 2026-02-05 |
| 003 | Fail-open design with mandatory TTLs | Accepted | 2026-01-15 |
| 004 | Restrict FlowSpec to /32 destination prefixes | Accepted | 2026-01-15 |
| 005 | Nginx reverse proxy as single entrypoint | Accepted | 2026-02-18 |
| 006 | Derive frontend URLs at runtime, not build time | Accepted | 2026-02-18 |
| 007 | Trait-based BGP abstraction for testing | Accepted | 2026-01-15 |
| 008 | Hybrid auth: session cookies + bearer tokens | Accepted | 2026-01-28 |
| 009 | PostgreSQL over SQLite | Accepted | 2026-01-20 |
| 010 | Signal-driven architecture (detectors signal, prefixd decides) | Accepted | 2026-01-15 |
| 011 | Reconciliation loop (desired vs actual state) | Accepted | 2026-01-20 |
| 012 | Playbook-based policy engine | Accepted | 2026-01-15 |
| 013 | Dry-run mode for safe onboarding | Accepted | 2026-01-15 |
| 014 | Allowlist-based config redaction | Accepted | 2026-02-18 |
| 015 | Split health endpoint (public liveness + authenticated detail) | Accepted | 2026-02-18 |
| 016 | Cursor-Based Pagination (Replacing Offset) | Accepted | 2026-03-18 |
| 017 | Per-Destination Event Routing and Notification Preferences | Accepted | 2026-03-18 |
| 018 | Multi-Signal Correlation Engine | Accepted | 2026-03-19 |
| 019 | Signal Adapter Architecture | Accepted | 2026-03-19 |
| 020 | Generic Webhook Adapter | Accepted | 2026-04-18 |
| 021 | Corroborating Signals | Accepted | 2026-04-19 |
ADRs are numbered sequentially as written. Retroactive ADRs (009-013) were documented on 2026-02-18 but dated to when the decision was originally made.