fp-runtime 0.1.0

Runtime policies, evidence ledgers, and asupersync interop for the frankenpandas execution layer.
Documentation
use thiserror::Error;

use crate::asupersync::config::CapabilitySet;

#[derive(Debug, Error, Clone, PartialEq, Eq)]
pub enum AsupersyncError {
    #[error("invalid configuration: {0}")]
    Configuration(&'static str),
    #[error("capability requirement not satisfied; required={required:?} available={available:?}")]
    CapabilityDenied {
        required: CapabilitySet,
        available: CapabilitySet,
    },
    #[error("artifact not found: {0}")]
    ArtifactNotFound(String),
    #[error("integrity mismatch for {artifact_id}; expected={expected} observed={observed}")]
    IntegrityMismatch {
        artifact_id: String,
        expected: String,
        observed: String,
    },
    #[error("codec failure: {0}")]
    Codec(String),
    #[error("transport failure: {0}")]
    Transport(String),
    #[error("recovery exhausted for {artifact_id} after {attempts} attempts")]
    RecoveryExhausted { artifact_id: String, attempts: u32 },
}