pub struct ValidationReport {
pub segments: Vec<SegmentReport>,
pub unparseable_records: usize,
pub cross_checks: Vec<RuleReport>,
pub unparseable_events: usize,
pub session_events: Option<usize>,
pub checkpoint_checks: Vec<RuleReport>,
pub unparseable_checkpoints: usize,
pub checkpoints: Option<usize>,
pub deferred: Vec<String>,
}Fields§
§segments: Vec<SegmentReport>§unparseable_records: usizeBlobs that are not records at all (not JSON objects, or carrying no identity fields).
cross_checks: Vec<RuleReport>Batch 3: SessionLog↔journal cross-verification verdicts (C6/C8). Report-scope, not per-segment: these rules join two evidence planes.
unparseable_events: usizeSessionLog event blobs that were not JSON objects at all. 0 when no session plane
was handed over.
session_events: Option<usize>Some(count) when SessionLog streams were handed over — the total of parseable events
across every stream. None = journal-only validation (batch-1 mode). An explicitly
provided session plane with zero parseable events is evidence-insufficient (exit 2).
checkpoint_checks: Vec<RuleReport>Batch 2: checkpoint↔journal anchoring verdicts (C5a/C5b). Report-scope, not per-segment: these rules join the checkpoint plane to the journal plane.
unparseable_checkpoints: usizeCheckpoint blobs that did not decode at all. 0 when no checkpoint plane was handed
over.
checkpoints: Option<usize>Some(count) when checkpoint blobs were handed over — how many decoded. None = no
checkpoint plane. An explicitly provided checkpoint plane with zero parseable
checkpoints is evidence-insufficient (exit 2), exactly like the other planes.
deferred: Vec<String>Batch-scope limits a green verdict does not cover.
Implementations§
Source§impl ValidationReport
impl ValidationReport
pub fn has_violations(&self) -> bool
Sourcepub fn has_violations_for(&self, operation_id: &str) -> bool
pub fn has_violations_for(&self, operation_id: &str) -> bool
Whether a selected operation has a proven rule violation. Cross-plane checks are report-scoped and therefore still count; segment checks are narrowed to the requested operation so a multi-operation evidence bundle cannot make an unrelated operation red.
Sourcepub fn for_operation(&self, operation_id: &str) -> Self
pub fn for_operation(&self, operation_id: &str) -> Self
Keep report-scope checks while narrowing the journal segments to one operation for a host command. The source evidence is still represented by the counts and cross-plane checks.
Sourcepub fn has_insufficient_evidence(&self) -> bool
pub fn has_insufficient_evidence(&self) -> bool
Evidence-plane parse failures that make a report insufficient rather than contradictory.
Sourcepub fn exit_code(&self) -> i32
pub fn exit_code(&self) -> i32
The CLI contract (P7 §3.2): 0 all green, 1 a violation was proven, 2 the evidence
was insufficient. A proven violation outranks insufficient evidence; degraded hops and
deferred scope never move the code. An explicitly provided SessionLog or checkpoint
plane that yields nothing parseable is insufficient evidence of the same kind as
unparseable records.