Soundness analysis for STARK protocols.
Decomposition is by error source, not by PCS. A protocol's params
type lives in its own crate; this crate provides the error-bit math and
the regime mirrors. The protocol assembles the regime, picks which
error terms apply, and composes them via [ErrorBits::sum] or
[ErrorBits::min] (or via [stark::proven_security] for the
AIR + DEEP + LDT composite).
Layering
protocol crate (p3-fri, p3-whir, …)
│
▼
p3-security ── p3-air, p3-field, p3-util, libm
Each XxxRegime mirrors the security-relevant subset of the
corresponding XxxParameters runtime config, plus instance-shape
metadata that doesn't live in the runtime config (trace length,
opening counts, …). There is intentionally no From<XxxParameters>
impl — the protocol crate is the only site with visibility into both
sides and assembles the regime explicitly.