Skip to main content

knowledge_runtime/
views.rs

1use schemars::JsonSchema;
2use serde::{Deserialize, Serialize};
3use stack_ids::{
4    ApplicabilityContextId, AssuranceCaseId, AuthorityLeaseId, CompiledObligationSetId,
5    CompositionConflictSetId, ContinuityExceptionId, DeploymentProfileId, EffectIntentId,
6    EffectWindowId, EffectiveConstitutionId, ErrorBudgetLedgerId, IncidentCaseId,
7    PolicyImpactDiffId, ProfileSetId, RecoveryPlanId, ReleaseReadinessDecisionId,
8};
9
10#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
11pub struct EffectRuntimeViewV1 {
12    pub schema_version: String,
13    pub effect_intent_id: EffectIntentId,
14    #[serde(default, skip_serializing_if = "Option::is_none")]
15    pub effect_window_id: Option<EffectWindowId>,
16    pub reversibility_class: String,
17    pub run_mode: String,
18    pub publication_status: String,
19    #[serde(default)]
20    pub degradation_markers: Vec<String>,
21}
22
23#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
24pub struct DelegationRuntimeViewV1 {
25    pub schema_version: String,
26    pub authority_lease_id: AuthorityLeaseId,
27    pub validity_state: String,
28    pub advisory_only: bool,
29    #[serde(default)]
30    pub revocation_refs: Vec<String>,
31    #[serde(default)]
32    pub missing_backpointers: Vec<String>,
33}
34
35#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
36pub struct DeployabilityRuntimeViewV1 {
37    pub schema_version: String,
38    pub deployment_profile_id: DeploymentProfileId,
39    pub assurance_case_id: AssuranceCaseId,
40    #[serde(default, skip_serializing_if = "Option::is_none")]
41    pub release_readiness_decision_id: Option<ReleaseReadinessDecisionId>,
42    pub readiness_state: String,
43    pub advisory_only: bool,
44    #[serde(default)]
45    pub open_gaps: Vec<String>,
46}
47
48#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
49pub struct ContinuityRuntimeViewV1 {
50    pub schema_version: String,
51    pub incident_case_id: IncidentCaseId,
52    #[serde(default, skip_serializing_if = "Option::is_none")]
53    pub recovery_plan_id: Option<RecoveryPlanId>,
54    #[serde(default, skip_serializing_if = "Option::is_none")]
55    pub continuity_exception_id: Option<ContinuityExceptionId>,
56    #[serde(default, skip_serializing_if = "Option::is_none")]
57    pub error_budget_ledger_id: Option<ErrorBudgetLedgerId>,
58    pub replay_completeness: String,
59    #[serde(default)]
60    pub degradation_markers: Vec<String>,
61}
62
63#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
64pub struct EffectiveConstitutionViewV1 {
65    pub schema_version: String,
66    pub effective_constitution_id: EffectiveConstitutionId,
67    pub applicability_context_id: ApplicabilityContextId,
68    pub profile_set_id: ProfileSetId,
69    pub mode_classification: String,
70    pub blocking: bool,
71    #[serde(default)]
72    pub approval_requirements: Vec<String>,
73    #[serde(default)]
74    pub hard_block_summary: Vec<String>,
75    #[serde(default)]
76    pub active_warning_summary: Vec<String>,
77    pub valid_as_of: String,
78    pub recorded_as_of: String,
79}
80
81#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
82pub struct CompiledObligationRuntimeViewV1 {
83    pub schema_version: String,
84    pub compiled_obligation_set_id: CompiledObligationSetId,
85    pub effective_constitution_id: EffectiveConstitutionId,
86    #[serde(default)]
87    pub required_approvals: Vec<String>,
88    #[serde(default)]
89    pub required_checks: Vec<String>,
90    #[serde(default)]
91    pub required_monitors: Vec<String>,
92    #[serde(default)]
93    pub required_disclosure_obligations: Vec<String>,
94    #[serde(default)]
95    pub required_post_hoc_review_obligations: Vec<String>,
96    #[serde(default)]
97    pub unresolved_dependency_refs: Vec<String>,
98    pub effect_eligibility_summary: String,
99}
100
101#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
102pub struct CompositionConflictRuntimeViewV1 {
103    pub schema_version: String,
104    pub composition_conflict_set_id: CompositionConflictSetId,
105    #[serde(default, skip_serializing_if = "Option::is_none")]
106    pub effective_constitution_id: Option<EffectiveConstitutionId>,
107    pub blocking: bool,
108    #[serde(default)]
109    pub conflict_keys: Vec<String>,
110    #[serde(default)]
111    pub review_paths: Vec<String>,
112    #[serde(default)]
113    pub admissible_exception_classes: Vec<String>,
114}
115
116#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
117pub struct PolicyImpactDiffRuntimeViewV1 {
118    pub schema_version: String,
119    pub policy_impact_diff_id: PolicyImpactDiffId,
120    pub from_effective_constitution_id: EffectiveConstitutionId,
121    pub to_effective_constitution_id: EffectiveConstitutionId,
122    #[serde(default)]
123    pub changed_obligation_families: Vec<String>,
124    #[serde(default)]
125    pub newly_blocked_paths: Vec<String>,
126    #[serde(default)]
127    pub newly_admitted_paths: Vec<String>,
128    #[serde(default)]
129    pub migration_consequences: Vec<String>,
130    pub simulation_only: bool,
131}