Skip to main content

Module ingest

Module ingest 

Source
Expand description

Pure findings.json -> Vec<Entity>, Vec<Note>, Vec<Edge> mapper.

ingest_findings_json validates the entire input before constructing any output record, so a malformed file never yields a partial batch. Record identity is a content-derived UUIDv5 hash of the validated finding record (observed_at excluded), so re-ingesting the same findings.json under the same CodeIngestOptions reproduces the same entity, note, and edge IDs, while a content change (severity, evidence, impact, …) produces a new finding id rather than colliding with the prior record.

Only severity and confidence values, the evidence shape, and failure_scenario presence are governed at ingest time — they reject unknown/malformed values by design (ADR-085 D4 “fail closed; no silent coercion”). Every other field (categories, standard, refs, priority, raw audit status, impact, recommendation, verification) is tolerated per ADR-085 Amendment 1 A1: ingest neither rejects nor coerces them, it preserves whatever JSON value was provided and omits the key when the field is absent. Raw status is preserved verbatim under properties.audit_status — it has no agreed mapping to the finding lifecycle (kind_status) yet.

Structs§

CodeIngestBatch
Output of a successful ingest: deterministic entity/note/edge records ready for the caller to persist through existing storage/runtime paths.
CodeIngestOptions
Options controlling one ingest_findings_json call.

Constants§

CODE_INGEST_NAMESPACE
UUIDv5 namespace for all code-pack ingest identity, derived from Uuid::new_v5(Uuid::NAMESPACE_URL, b"https://github.com/ohdearquant/khive/adr/085/code-pack/v1").

Functions§

ingest_findings_json
Map a findings.json document into deterministic KG records.