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/// Fail-closed ingest errors that name the invalid field, accepted values, or shape.
6///
7/// See `crates/khive-pack-code/docs/api/findings-ingest.md`.
8#[derive(Debug, Error)]
9pub enum CodeIngestError {
10    #[error("findings.json must be a JSON object with required field findings: array")]
11    InvalidRoot,
12
13    #[error("missing required field {path}")]
14    MissingField { path: &'static str },
15
16    #[error("field {path} must be {expected}")]
17    InvalidType {
18        path: String,
19        expected: &'static str,
20    },
21
22    #[error("invalid {field} {value:?}; valid: {valid}")]
23    InvalidValue {
24        field: &'static str,
25        value: String,
26        valid: &'static str,
27    },
28
29    #[error("finding {id:?} with severity {severity:?} requires non-empty failure_scenario")]
30    MissingFailureScenario { id: String, severity: String },
31
32    #[error(
33        "invalid evidence at findings[{finding_index}].evidence[{evidence_index}]; valid: string or object with path,line,description"
34    )]
35    InvalidEvidence {
36        finding_index: usize,
37        evidence_index: usize,
38    },
39
40    #[error("invalid source_run; provide options.source_run or audit.date and audit.commit")]
41    MissingSourceRun,
42
43    #[error("json parse: {0}")]
44    Json(#[from] serde_json::Error),
45}