Skip to main content

canic_host/deployment_truth/model/promotion/materialization/
mod.rs

1use super::super::SafetyFindingV1;
2use super::source::{PromotionReadinessStatusV1, RoleArtifactSourceKindV1};
3use serde::{Deserialize, Serialize};
4
5///
6/// BuildRecipeIdentityV1
7///
8#[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///
28/// BuildMaterializationInputV1
29///
30#[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///
41/// BuildMaterializationResultV1
42///
43#[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///
55/// BuildMaterializationEvidenceV1
56///
57#[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///
72/// PromotionMaterializationIdentityReportV1
73///
74#[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///
86/// RolePromotionMaterializationIdentityV1
87///
88#[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///
108/// PromotionMaterializationOutputGroupV1
109///
110#[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///
121/// RolePromotionMaterializationLinkV1
122///
123#[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}