assurance-runtime 0.1.0

Typed deployability and certification surface crate with bounded readiness profiles; not an orchestration runtime
Documentation
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
pub struct RequirementControlMappingEntryV1 {
    pub requirement: String,
    pub control: String,
    pub evidence_family: String,
}

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
pub struct EvidenceClassRequirementV1 {
    pub evidence_class: String,
    pub minimum_family: String,
}

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
pub struct RegulatoryRegimeProfileV1 {
    pub schema_version: String,
    pub regulatory_regime_profile_id: String,
    pub regime_name: String,
    pub regime_version: String,
    #[serde(default, skip_serializing_if = "Vec::is_empty")]
    pub covered_products: Vec<String>,
    #[serde(default, skip_serializing_if = "Vec::is_empty")]
    pub mandatory_control_families: Vec<String>,
    pub audit_cycle_days: i64,
}

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
pub struct RequirementControlMapV1 {
    pub schema_version: String,
    pub requirement_control_map_id: String,
    pub regulatory_regime_profile_id: String,
    #[serde(default, skip_serializing_if = "Vec::is_empty")]
    pub mappings: Vec<RequirementControlMappingEntryV1>,
    pub gap_classification_default: String,
    pub owner_ref: String,
}

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
pub struct EvidenceCollectionPlanV1 {
    pub schema_version: String,
    pub evidence_collection_plan_id: String,
    pub regulatory_regime_profile_id: String,
    #[serde(default, skip_serializing_if = "Vec::is_empty")]
    pub required_evidence_classes: Vec<EvidenceClassRequirementV1>,
    pub collection_cadence: String,
    pub retention_class: String,
    pub owner_ref: String,
}

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
pub struct RecertificationScheduleV1 {
    pub schema_version: String,
    pub recertification_schedule_id: String,
    pub regulatory_regime_profile_id: String,
    pub review_interval_days: i64,
    #[serde(default, skip_serializing_if = "Vec::is_empty")]
    pub trigger_classes: Vec<String>,
    pub grace_window_days: i64,
    pub blocked_state_on_expiry: String,
}