use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum ConvergencePointType {
Transform,
Fork,
Join,
Gate,
Select,
Broadcast,
Reduce,
Observe,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum SubstrateType {
Financial,
Compute,
Network,
Storage,
Security,
Identity,
Observability,
Regulatory,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum ConvergenceHorizon {
Bounded,
Asymptotic {
metric: String,
direction: OptimizationDirection,
healthy_rate_threshold: f64,
},
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum OptimizationDirection {
Minimize,
Maximize,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum CalmClassification {
Monotone,
NonMonotone,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum ComputationMode {
Mechanical,
AiAssisted {
role: AiRole,
interface: AiInterface,
},
Hybrid {
mechanical_phases: Vec<String>,
ai_phases: Vec<String>,
},
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum AiRole {
Observer,
Advisor,
Actor,
Verifier,
Reporter,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum AiInterface {
Mcp,
Rest,
GraphQl,
Grpc,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum ConvergenceOutcome {
Converged,
Failed { reason: String },
Degraded {
achieved: super::convergence_state::ConvergenceDistance,
missing: Vec<String>,
},
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum ConvergenceMechanism {
Raft,
Gossip,
Local,
Nats,
FixedPoint,
Feedback,
}