pub struct ScanReportMetadata {Show 16 fields
pub scan_id: String,
pub scan_status: ScanCompletionStatus,
pub backend_recoveries: Vec<ScanBackendRecoverySummary>,
pub keyhog_version: String,
pub git_hash: String,
pub detector_digest: String,
pub config_digest: Option<String>,
pub resolved_scan: Option<ResolvedScanManifest>,
pub generated_at: String,
pub scan_started_at: String,
pub scan_finished_at: String,
pub duration_ms: u128,
pub targets: Vec<String>,
pub source_chunks_scanned: usize,
pub source_bytes_scanned: u64,
pub detector_count: usize,
}Expand description
Format-neutral operator-visible metadata for a scan report.
The metadata belongs to the report, not to one renderer. Individual output
formats project the fields they can represent: HTML renders the complete
object, while schema-constrained formats retain their established fields.
Keeping this model in keyhog-core prevents the CLI and a single reporter
from growing competing definitions of scan identity and timing.
Fields§
§scan_id: StringStable non-secret identifier shared by artifacts from one scan run. Missing values deserialize as empty for reports produced before this field was introduced; current producers always populate it.
scan_status: ScanCompletionStatusTerminal state for detached artifacts. Older reports default to success because they predate this explicit field and have no state to recover.
backend_recoveries: Vec<ScanBackendRecoverySummary>Completed automatic backend recovery events. Empty means the scan did not recover a selected backend fault.
keyhog_version: StringKeyHog crate/binary version that produced the report.
git_hash: StringGit identity of the binary that produced the report.
detector_digest: StringDigest of the embedded detector set compiled into the binary.
config_digest: Option<String>Digest of the effective scan configuration, when the orchestrator had a resolved configuration identity available.
resolved_scan: Option<ResolvedScanManifest>Stable resolved preset and override manifest for mode comparisons. Absent only for reports produced by callers that do not have a CLI scan configuration (for example a library-created report).
generated_at: StringUTC generation timestamp formatted as YYYY-MM-DDTHH:MM:SS.
scan_started_at: StringUTC scan start timestamp formatted as YYYY-MM-DDTHH:MM:SS.
scan_finished_at: StringUTC scan finish timestamp formatted as YYYY-MM-DDTHH:MM:SS.
duration_ms: u128Wall-clock scan duration in milliseconds.
targets: Vec<String>Redacted operator-visible target labels for the requested scan sources.
source_chunks_scanned: usizeNumber of source chunks the scanner consumed for this report.
source_bytes_scanned: u64Number of source bytes the scanner consumed for this report.
detector_count: usizeNumber of loaded detector specs used by this scan.
Trait Implementations§
Source§impl Clone for ScanReportMetadata
impl Clone for ScanReportMetadata
Source§fn clone(&self) -> ScanReportMetadata
fn clone(&self) -> ScanReportMetadata
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ScanReportMetadata
impl Debug for ScanReportMetadata
Source§impl<'de> Deserialize<'de> for ScanReportMetadata
impl<'de> Deserialize<'de> for ScanReportMetadata
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Eq for ScanReportMetadata
Source§impl PartialEq for ScanReportMetadata
impl PartialEq for ScanReportMetadata
Source§impl Serialize for ScanReportMetadata
impl Serialize for ScanReportMetadata
impl StructuralPartialEq for ScanReportMetadata
Auto Trait Implementations§
impl Freeze for ScanReportMetadata
impl RefUnwindSafe for ScanReportMetadata
impl Send for ScanReportMetadata
impl Sync for ScanReportMetadata
impl Unpin for ScanReportMetadata
impl UnsafeUnpin for ScanReportMetadata
impl UnwindSafe for ScanReportMetadata
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more