pub struct AvailabilityBlock {
pub degraded_stale: bool,
pub kev: Option<String>,
pub epss: Option<String>,
pub exploitation_fusion: Option<String>,
}Expand description
Cycle-15 honesty signal block on the SDK Verdict shape. Mirrors the App
wire-shape cleanlib_core::AvailabilityBlock. Option<bool>-style
passthrough for degraded_stale so pre-cycle-15 payloads (without the
block) deserialize cleanly.
CLEANLIB-105 App-3.2 M1/M2 additions: kev / epss /
exploitation_fusion sub-fields as Option<String> (SDK-passthrough
per §5 ripple discipline). String tags: "available" |
"not_applicable" | "unavailable" | "degraded_stale" per
cleanlib_core::FieldAvailability snake_case serde. Option on the
SDK side (vs FieldAvailability non-Optional on the App side) lets
pre-M1 payloads without any sub-field key deserialize cleanly to
None — the SDK’s derive_status.rs treats None and
"unavailable" identically (both fail the “== Some("available")”
check on lines 76+).
NOTE: no skip_serializing_if on any field — this struct is bincode-
serialized (positionally) by cleanlib-cli::PersistentCache, and
conditional omission would corrupt the cache alignment (§CLEANLIB-104
design doc §3.M3 cache-shape note). The parent Verdict documents this
invariant at the previous_verdict field. Fields that need to be omitted
from the customer-facing JSON envelope are re-shaped by
crate::verdict_to_envelope::verdict_to_envelope_v1 (which is the
customer wire path), not by field-level serde attributes here.
Fields§
§degraded_stale: bool§kev: Option<String>CISA KEV substrate availability tag
("available" | "not_applicable" | "unavailable" | "degraded_stale").
epss: Option<String>FIRST.org EPSS substrate availability tag.
exploitation_fusion: Option<String>Composite exploitation-likelihood availability tag.
Trait Implementations§
Source§impl Clone for AvailabilityBlock
impl Clone for AvailabilityBlock
Source§fn clone(&self) -> AvailabilityBlock
fn clone(&self) -> AvailabilityBlock
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more