Decisions (ADRs)
Every architecture decision that the plan does not already cover has an architecture decision record in docs/adr/. They are short; read the one that concerns what you are changing.
| ADR | Decision |
|---|---|
| 0001 | One Cargo workspace, one crate per component, naming rules. |
| 0002 | How the purity gate works: cargo metadata scan plus a build with CC=/bin/false. Amended by ADR-0007. |
| 0003 | PARITY.md is generated from the C source; per-row status lives in the harness, not in the file. |
| 0004 | The C server at bc0de3b3 is the oracle, built into a pinned Docker image. |
| 0005 | Plugin media callbacks return relay decisions instead of sending packets. |
| 0006 | The SIP plugin uses rsipstack, behind a SipStack trait. |
| 0007 | C bindings are allowed where there is no usable Rust port (Opus first), each approved in a register. |
| 0008 | The Lua plugin runs a vendored Lua 5.3 through mlua. |
| 0009 | TLS is rustls on the graviola provider. |
| 0010 | ICE-TCP is a stream layer in the binary over a sans-IO agent that knows tcp. |
A new decision gets the next number. Keep the existing records as they are; supersede one with a new record instead of rewriting it.