classifier-implementation 0.1.0

Compatibility classifier contract implementation
Documentation
boxology::contract! {
    pub enum CompatibilityClass {
        Unchanged,
        Documentation,
        Deprecation,
        Additive,
        CompatibleWithConditions,
        Incompatible,
    }

    pub struct ClassifyRequest {
        pub base: Option<Vec<u8>>,
        pub submitted: Vec<u8>,
    }

    pub struct ClassifyFinding {
        pub code: String,
        pub path: String,
        pub kind: String,
        pub class: CompatibilityClass,
        pub base_excerpt: Option<String>,
        pub submitted_excerpt: Option<String>,
        pub condition: Option<String>,
    }

    pub struct ClassifyReport {
        pub verdict: CompatibilityClass,
        pub findings: Vec<ClassifyFinding>,
        pub rendered_text: String,
    }

    pub enum ClassifyFailureStage {
        Base,
        Submitted,
        Pairing,
    }

    pub struct ClassifyFailure {
        pub stage: ClassifyFailureStage,
        pub diagnostics: String,
    }

    pub struct ClassifyOutcome {
        pub report: Option<ClassifyReport>,
        pub failure: Option<ClassifyFailure>,
    }

    #[error]
    pub enum ClassifierError { Internal }

    #[capability]
    pub async fn classify(request: ClassifyRequest) -> Result<ClassifyOutcome, ClassifierError>;
}