Skip to content

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.

ADRDecision
0001One Cargo workspace, one crate per component, naming rules.
0002How the purity gate works: cargo metadata scan plus a build with CC=/bin/false. Amended by ADR-0007.
0003PARITY.md is generated from the C source; per-row status lives in the harness, not in the file.
0004The C server at bc0de3b3 is the oracle, built into a pinned Docker image.
0005Plugin media callbacks return relay decisions instead of sending packets.
0006The SIP plugin uses rsipstack, behind a SipStack trait.
0007C bindings are allowed where there is no usable Rust port (Opus first), each approved in a register.
0008The Lua plugin runs a vendored Lua 5.3 through mlua.
0009TLS is rustls on the graviola provider.
0010ICE-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.

GPL-3.0-or-later, like the Janus gateway it ports.