vyre-conform 0.1.0

Conformance suite for vyre backends — proves byte-identical output to CPU reference
Documentation
#![deny(unsafe_code)]
#![deny(missing_docs)]
#![cfg_attr(not(test), deny(clippy::todo, clippy::unimplemented))]

//! # vyre-conform — Conformance suite for the vyre GPU compute specification
//!
//! Maintainer-only harness. End users consume `vyre` + `vyre-reference` + a
//! backend (e.g. `vyre-wgpu`). This crate proves that any vyre backend
//! produces byte-identical output to the CPU reference for every operation,
//! every input, every time.
//!
//! Public surface — exactly ten items:
//!
//! ```text
//! certify, Certificate, Violation, VyreBackend, Finding, EnforceGate,
//! Oracle, Archetype, MutationClass, {Category, AlgebraicLaw, OpSpec}
//! ```
//!
//! Everything else is implementation detail.

// ─── Public API (ten items) ────────────────────────────────────────────────

pub use crate::enforce::EnforceGate;
pub use crate::generate::archetypes::Archetype;
pub use crate::pipeline::certify::certify;
pub use crate::pipeline::certify::Certificate;
pub use crate::pipeline::certify::Violation;
pub use crate::proof::oracles::Oracle;
pub use crate::spec::types::MutationClass;
pub use crate::spec::types::OpSpec;
pub use crate::spec::Finding;
pub use vyre::VyreBackend;
pub use vyre_spec::{AlgebraicLaw, Category};

// ─── Internal module declarations ──────────────────────────────────────────

pub(crate) mod adversarial;
pub(crate) mod enforce;
pub(crate) mod generate;
pub(crate) mod meta;
pub(crate) mod pipeline;
pub(crate) mod proof;
pub(crate) mod spec;
pub(crate) mod verify;

// ─── Internal-only re-exports (not part of the public 10-item API) ─────────
// These make `crate::<Name>` resolve from anywhere inside the crate without
// forcing every enforcer/pipeline file to spell the full `crate::spec::types::`
// path. They are NOT `pub use` — they do not escape the crate.
//
// `DataType` stays here intentionally: conform code should use
// `crate::DataType` as the single internal spelling for the canonical
// `vyre_spec::DataType`. That avoids mixing the equivalent core IR path into
// new conform code while preserving the existing crate-local imports.

pub(crate) use crate::meta::contribute;
pub(crate) use crate::pipeline::execution::InputCase;
pub(crate) use crate::pipeline::reporter;
pub(crate) use crate::spec::op_registry;
pub(crate) use crate::spec::registry;
pub(crate) use crate::spec::types::{
    BufferAccess, ChainSpec, Convention, DataType, OpSignature, ParityFailure, Strictness,
};
pub(crate) use crate::verify::regression;