canic_host/deployment_truth/model/promotion/provenance/
mod.rs1use super::super::SafetyFindingV1;
2use super::source::{
3 PromotionArtifactLevelV1, PromotionReadinessStatusV1, RoleArtifactSourceKindV1,
4};
5use serde::{Deserialize, Serialize};
6
7#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
11pub struct ArtifactPromotionProvenanceReportV1 {
12 pub schema_version: u32,
13 pub report_id: String,
14 pub status: PromotionReadinessStatusV1,
15 pub artifact_promotion_plan_id: String,
16 pub artifact_promotion_plan_digest: String,
17 pub target_plan_id: String,
18 pub promoted_plan_id: String,
19 pub promotion_plan_lineage_digest: String,
20 pub provenance_report_digest: String,
21 pub readiness_id: String,
22 pub artifact_identity_report_id: String,
23 pub transform_id: String,
24 pub target_execution_lineage_id: Option<String>,
25 pub wasm_store_identity_report_id: Option<String>,
26 pub wasm_store_identity_report_digest: Option<String>,
27 pub wasm_store_catalog_verification_id: Option<String>,
28 pub wasm_store_catalog_verification_digest: Option<String>,
29 pub materialization_identity_report_id: Option<String>,
30 pub materialization_identity_report_digest: Option<String>,
31 pub execution_attempted: bool,
32 pub roles: Vec<RolePromotionProvenanceV1>,
33 pub blockers: Vec<SafetyFindingV1>,
34}
35
36#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
40pub struct RolePromotionProvenanceV1 {
41 pub role: String,
42 pub promotion_level: PromotionArtifactLevelV1,
43 pub source_kind: RoleArtifactSourceKindV1,
44 pub artifact_identity_changed: bool,
45 pub embedded_config_changed: bool,
46 pub target_materialization_preserved: bool,
47 pub materialization_evidence_id: Option<String>,
48 pub materialization_evidence_digest: Option<String>,
49 pub wasm_store_locator: Option<String>,
50 pub wasm_store_catalog_observation_digest: Option<String>,
51}