canic_host/deployment_truth/model/comparison/
mod.rs1use super::{DeploymentIdentityV1, SafetyFindingV1, SafetySeverityV1, SafetyStatusV1};
2use serde::{Deserialize, Serialize};
3
4#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
8pub struct DeploymentComparisonReportV1 {
9 pub schema_version: u32,
10 pub report_id: String,
11 pub report_digest: String,
12 pub compared_at: String,
13 pub left: DeploymentComparisonTargetV1,
14 pub right: DeploymentComparisonTargetV1,
15 pub status: SafetyStatusV1,
16 pub identity_diff: Vec<DeploymentComparisonDiffV1>,
17 pub artifact_diff: Vec<DeploymentComparisonDiffV1>,
18 pub module_hash_diff: Vec<DeploymentComparisonDiffV1>,
19 pub embedded_config_diff: Vec<DeploymentComparisonDiffV1>,
20 pub authority_diff: Vec<DeploymentComparisonDiffV1>,
21 pub pool_diff: Vec<DeploymentComparisonDiffV1>,
22 pub verifier_readiness_diff: Vec<DeploymentComparisonDiffV1>,
23 pub external_lifecycle_diff: Vec<DeploymentComparisonDiffV1>,
24 pub hard_failures: Vec<SafetyFindingV1>,
25 pub warnings: Vec<SafetyFindingV1>,
26 pub next_actions: Vec<String>,
27}
28
29#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
33pub struct DeploymentComparisonTargetV1 {
34 pub label: String,
35 pub check_id: String,
36 pub check_digest: String,
37 pub plan_id: String,
38 pub plan_digest: String,
39 pub inventory_id: String,
40 pub inventory_digest: String,
41 pub deployment_identity: DeploymentIdentityV1,
42}
43
44#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
48pub struct DeploymentComparisonDiffV1 {
49 pub category: DeploymentComparisonCategoryV1,
50 pub subject: String,
51 pub left: Option<String>,
52 pub right: Option<String>,
53 pub severity: SafetySeverityV1,
54 pub message: String,
55}
56
57#[derive(Clone, Copy, Debug, Deserialize, Eq, Ord, PartialEq, PartialOrd, Serialize)]
61pub enum DeploymentComparisonCategoryV1 {
62 Identity,
63 TrustDomain,
64 Artifact,
65 ModuleHash,
66 EmbeddedConfig,
67 Authority,
68 Pool,
69 VerifierReadiness,
70 ExternalLifecycle,
71}