lexicon-gates 0.1.0

Verification gate runners and policy enforcement for lexicon
Documentation
use thiserror::Error;

#[derive(Debug, Error)]
pub enum GatesError {
    #[error("IO error: {0}")]
    Io(#[from] std::io::Error),

    #[error("gate execution failed: {gate_id} — {reason}")]
    ExecutionFailed { gate_id: String, reason: String },

    #[error("gate timed out: {gate_id} after {timeout_secs}s")]
    Timeout { gate_id: String, timeout_secs: u64 },

    #[error("policy violation: cannot skip required gate {gate_id}")]
    CannotSkipRequired { gate_id: String },

    #[error("policy violation: cannot weaken gate {gate_id} without approval")]
    WeakeningDenied { gate_id: String },
}

pub type GatesResult<T> = Result<T, GatesError>;