use serde::{Deserialize, Serialize};
#[must_use]
pub const fn scope() -> &'static str {
"phase-1-v0.1"
}
#[must_use]
pub const fn canonical_replay_schema_version() -> &'static str {
"phase-1-v0.1"
}
#[must_use]
pub const fn restart_requery_schema_id() -> &'static str {
"sr.iridium.restart-requery.v1"
}
#[derive(Clone, Copy, Debug, Deserialize, Eq, PartialEq, Serialize)]
#[serde(rename_all = "kebab-case")]
pub enum ScenarioOutcome {
Pass,
Fail,
Mixed,
}
impl ScenarioOutcome {
#[must_use]
pub const fn as_str(self) -> &'static str {
match self {
Self::Pass => "pass",
Self::Fail => "fail",
Self::Mixed => "mixed",
}
}
}
#[derive(Clone, Copy, Debug, Deserialize, Eq, PartialEq, Serialize)]
#[serde(rename_all = "kebab-case")]
pub enum FailureClassification {
None,
CapabilityMismatch,
RestartConsistency,
RecoveryRegression,
CacheTransition,
TransportFault,
}
impl FailureClassification {
#[must_use]
pub const fn as_str(self) -> &'static str {
match self {
Self::None => "none",
Self::CapabilityMismatch => "capability-mismatch",
Self::RestartConsistency => "restart-consistency",
Self::RecoveryRegression => "recovery-regression",
Self::CacheTransition => "cache-transition",
Self::TransportFault => "transport-fault",
}
}
}
#[derive(Clone, Copy, Debug, Deserialize, Eq, PartialEq, Serialize)]
#[serde(rename_all = "kebab-case")]
pub enum EvidenceLevel {
Informational,
RegressionProtecting,
ReleaseBlocking,
}
#[derive(Clone, Copy, Debug, Deserialize, Eq, PartialEq, Serialize)]
#[serde(rename_all = "kebab-case")]
pub enum ScenarioClass {
RestartRecovery,
CapabilityRejection,
CacheTransition,
TransportFault,
}
impl ScenarioClass {
#[must_use]
pub const fn as_str(self) -> &'static str {
match self {
Self::RestartRecovery => "restart-recovery",
Self::CapabilityRejection => "capability-rejection",
Self::CacheTransition => "cache-transition",
Self::TransportFault => "transport-fault",
}
}
}