pub struct VerdictEnvelopeV1 {
pub status: String,
pub reason_code: String,
pub human_message: String,
pub as_of: String,
pub as_of_ns: Option<String>,
pub rich_data: Option<Value>,
pub remediation: Option<Value>,
pub exploitability: Option<Value>,
pub availability: Value,
}Expand description
VerdictEnvelopeV1 — parsed shape of the verdict-envelope.v1.json
schema. Top-level fields are required; rich sub-objects are sparse and
#[serde(default)]-tolerant so the SDK can consume partial responses
during cycle-N spec evolution without forcing a recompile.
Sister of:
- sdk-js
VerdictEnvelopeV1Schema(zod) - sdk-py no struct (dict[str, Any] in Python)
- sdk-go
map[string]any(loose) — but Rust gets a typed struct.
Fields§
§status: String§reason_code: String§human_message: String§as_of: String§as_of_ns: Option<String>CLEANLIB-505 (III): full-nanosecond as_of, dual-emitted alongside the
(possibly µs-truncated) as_of string. Additive migration-window field
(A3-style) — Python truncates as_of to µs at datetime-parse, so the
raw ns timestamp is carried here as a string for consumers that need
sub-µs precision. Rust preserves ns in as_of already, so this mirrors
it. skip_serializing_if = None → byte-identical v1 when absent.
rich_data: Option<Value>§remediation: Option<Value>§exploitability: Option<Value>§availability: ValueCLEANLIB-104 App-3.1 Gate M3: non-Optional per the design doc §3.3
exit criterion (“derive_status.rs line 57 stops using as_ref on
availability”). #[serde(default)] gives Value::Null on absent-key
payloads — fail-open: consumers see a defaulted block, not an
unwrap-panic. derive_status.rs uses Some(&envelope.availability)
against the untyped JSON-Value helpers (see line 57).
skip_serializing_if = "Value::is_null" preserves the wire byte-
identity on happy-path envelopes: when the adapter passes through a
default AvailabilityBlock (degraded_stale=false), the envelope
serializes as Null and the field is omitted — matching the pre-M3
Option<Value>::None shape.
Trait Implementations§
Source§impl Clone for VerdictEnvelopeV1
impl Clone for VerdictEnvelopeV1
Source§fn clone(&self) -> VerdictEnvelopeV1
fn clone(&self) -> VerdictEnvelopeV1
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more