canic_host/deployment_truth/model/promotion/materialization/
mod.rs1use super::super::SafetyFindingV1;
2use super::source::{PromotionReadinessStatusV1, RoleArtifactSourceKindV1};
3use serde::{Deserialize, Serialize};
4
5#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
9pub struct BuildRecipeIdentityV1 {
10 pub recipe_id: String,
11 pub source_kind: RoleArtifactSourceKindV1,
12 pub source_revision: String,
13 pub source_tree_clean: bool,
14 pub package_or_role_selector: String,
15 pub cargo_profile: String,
16 pub cargo_features_digest: String,
17 pub cargo_lock_digest: String,
18 pub rust_toolchain: String,
19 pub builder_version: String,
20 pub target_triple: String,
21 pub linker_identity: String,
22 pub deterministic_build_mode: String,
23 pub wasm_opt_version: String,
24 pub compression_identity: String,
25}
26
27#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
31pub struct BuildMaterializationInputV1 {
32 pub materialization_input_id: String,
33 pub build_recipe_id: String,
34 pub canonical_embedded_config_sha256: String,
35 pub network: String,
36 pub root_trust_anchor: String,
37 pub runtime_variant: String,
38}
39
40#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
44pub struct BuildMaterializationResultV1 {
45 pub materialization_result_id: String,
46 pub build_recipe_id: String,
47 pub materialization_input_digest: String,
48 pub wasm_sha256: String,
49 pub wasm_gz_sha256: String,
50 pub installed_module_hash: String,
51 pub candid_sha256: String,
52}
53
54#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
58pub struct BuildMaterializationEvidenceV1 {
59 pub schema_version: u32,
60 pub evidence_id: String,
61 pub materialization_evidence_digest: String,
62 pub recipe: BuildRecipeIdentityV1,
63 pub materialization_input: BuildMaterializationInputV1,
64 pub materialization_result: BuildMaterializationResultV1,
65 pub computed_materialization_input_digest: String,
66 pub recipe_id_matches_input: bool,
67 pub recipe_id_matches_result: bool,
68 pub materialization_input_digest_matches_result: bool,
69}
70
71#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
75pub struct PromotionMaterializationIdentityReportV1 {
76 pub schema_version: u32,
77 pub report_id: String,
78 pub materialization_identity_report_digest: String,
79 pub status: PromotionReadinessStatusV1,
80 pub roles: Vec<RolePromotionMaterializationIdentityV1>,
81 pub output_groups: Vec<PromotionMaterializationOutputGroupV1>,
82 pub blockers: Vec<SafetyFindingV1>,
83}
84
85#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
89pub struct RolePromotionMaterializationIdentityV1 {
90 pub role: String,
91 pub evidence_id: String,
92 pub materialization_evidence_digest: String,
93 pub recipe_id: String,
94 pub materialization_input_id: String,
95 pub materialization_result_id: String,
96 pub materialization_input_digest: String,
97 pub canonical_embedded_config_sha256: String,
98 pub network: String,
99 pub root_trust_anchor: String,
100 pub runtime_variant: String,
101 pub wasm_sha256: String,
102 pub wasm_gz_sha256: String,
103 pub installed_module_hash: String,
104 pub candid_sha256: String,
105}
106
107#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
111pub struct PromotionMaterializationOutputGroupV1 {
112 pub output_identity_key: String,
113 pub roles: Vec<String>,
114 pub wasm_sha256: String,
115 pub wasm_gz_sha256: String,
116 pub installed_module_hash: String,
117 pub candid_sha256: String,
118}
119
120#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
124pub struct RolePromotionMaterializationLinkV1 {
125 pub role: String,
126 pub evidence_id: String,
127 pub materialization_evidence_digest: String,
128 pub recipe_id: String,
129 pub materialization_input_id: String,
130 pub materialization_result_id: String,
131 pub materialization_input_digest: String,
132 pub wasm_sha256: String,
133 pub wasm_gz_sha256: String,
134 pub installed_module_hash: String,
135 pub candid_sha256: String,
136}