#[derive(Debug, Clone, PartialEq, Eq)]
pub enum ObligationSource {
Operator(String),
Rewrite(String),
Planner(String),
Backend(String),
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum ObligationSeverity {
Required,
Warning,
AuditOnly,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum DischargeStatus {
Unresolved,
Discharged(String),
Waived(String),
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct Obligation {
pub source: ObligationSource,
pub condition: String,
pub severity: ObligationSeverity,
pub status: DischargeStatus,
}
impl Obligation {
pub fn is_blocking(&self) -> bool {
matches!(self.severity, ObligationSeverity::Required)
&& matches!(self.status, DischargeStatus::Unresolved)
}
}