Skip to main content

khive_pack_code/
error.rs

1//! `CodeIngestError` — fail-closed validation errors for `findings.json` ingest.
2
3use thiserror::Error;
4
5/// Errors returned by [`crate::ingest::ingest_findings_json`].
6///
7/// All variants name the valid values or shapes so callers can fix input
8/// without consulting external documentation.
9#[derive(Debug, Error)]
10pub enum CodeIngestError {
11    #[error("findings.json must be a JSON object with required field findings: array")]
12    InvalidRoot,
13
14    #[error("missing required field {path}")]
15    MissingField { path: &'static str },
16
17    #[error("field {path} must be {expected}")]
18    InvalidType {
19        path: String,
20        expected: &'static str,
21    },
22
23    #[error("invalid {field} {value:?}; valid: {valid}")]
24    InvalidValue {
25        field: &'static str,
26        value: String,
27        valid: &'static str,
28    },
29
30    #[error("finding {id:?} with severity {severity:?} requires non-empty failure_scenario")]
31    MissingFailureScenario { id: String, severity: String },
32
33    #[error(
34        "invalid evidence at findings[{finding_index}].evidence[{evidence_index}]; valid: string or object with path,line,description"
35    )]
36    InvalidEvidence {
37        finding_index: usize,
38        evidence_index: usize,
39    },
40
41    #[error("invalid source_run; provide options.source_run or audit.date and audit.commit")]
42    MissingSourceRun,
43
44    #[error("json parse: {0}")]
45    Json(#[from] serde_json::Error),
46}