vyre-conform 0.1.0

Conformance suite for vyre backends — proves byte-identical output to CPU reference
Documentation
/// One entry per missing or malformed field encountered while
/// iterating the registry. Reports the op id and the specific gap so
/// the failure message tells the contributor exactly what to fix.
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum CoverageError {
    /// The op declares the empty Category A marker (`composition_of`
    /// empty). Every op must be classified as Category A (with a
    /// real composition list) or Category C (with hardware and backend
    /// availability declarations).
    UnclassifiedCategory {
        /// Op id.
        op_id: String,
    },
    /// The op's `signature.inputs` is empty. Every op consumes at
    /// least one value.
    EmptySignature {
        /// Op id.
        op_id: String,
    },
    /// The op declares no laws. Empty-law ops are legal only for ops
    /// that genuinely have no algebraic structure; this branch
    /// reports them so the reviewer can decide.
    EmptyLawSet {
        /// Op id.
        op_id: String,
    },
    /// The op's `docs_path` is empty. Every op must point at its
    /// documentation page.
    MissingDocsPath {
        /// Op id.
        op_id: String,
    },
    /// The op's `since_version` is ahead of `CURRENT_VERSION`. A
    /// contributor cannot declare an op as shipping in a future
    /// version that doesn't exist yet.
    FutureSinceVersion {
        /// Op id.
        op_id: String,
        /// Declared version as a human-readable string.
        declared: String,
    },
    /// The op is Category C but did not declare a hardware intrinsic identifier.
    MissingCategoryCHardware {
        /// Op id.
        op_id: String,
    },
    /// The op declared the same id twice — the registry has a
    /// duplicate entry.
    DuplicateOpId {
        /// The duplicated op id.
        op_id: String,
    },
    /// `laws` and `declared_laws` disagree.
    LawListDrift {
        /// Op id.
        op_id: String,
    },
    /// A witnessed proof uses zero witnesses.
    ZeroWitnesses {
        /// Op id.
        op_id: String,
        /// Law name.
        law: String,
    },
    /// The selected oracle has no backing data.
    InvalidOracle {
        /// Op id.
        op_id: String,
        /// Diagnostic.
        message: String,
    },
    /// A spec-table row is malformed.
    InvalidSpecRow {
        /// Op id.
        op_id: String,
        /// Row index.
        row: usize,
        /// Diagnostic.
        message: String,
    },
    /// A source/provenance declaration is malformed.
    InvalidSource {
        /// Op id.
        op_id: String,
        /// Diagnostic.
        message: String,
    },
    /// `docs_path` does not point at operation docs.
    InvalidDocsPath {
        /// Op id.
        op_id: String,
    },
    /// The file at docs_path does not exist.
    MissingDocsFile {
        /// Op id.
        op_id: String,
        /// Path that was checked.
        path: String,
    },
    /// The op declares no archetypes. Every op must participate in at least one
    /// test-input archetype.
    EmptyArchetypeSet {
        /// Op id.
        op_id: String,
    },
    /// The op declares an archetype id that is not in the global ARCHETYPES registry.
    UnknownArchetype {
        /// Op id.
        op_id: String,
        /// Unrecognized archetype id.
        archetype: String,
    },
}