vyre-conform 0.1.0

Conformance suite for vyre backends — proves byte-identical output to CPU reference
Documentation
use serde::{Deserialize, Serialize};

use super::algebraic_law::AlgebraicLaw;
use super::defendant_entry::DefendantEntry;
use super::independence_rule::IndependenceRule;
use super::op_declaration::OpDeclaration;
use super::witness_set::WitnessSet;

/// A complete TOML document containing community-contributed rules.
#[derive(Debug, Deserialize, Serialize, Clone, PartialEq, Eq)]
#[serde(deny_unknown_fields)]
pub struct TomlDocument {
    /// Schema version field is strictly required to ensure forward compatibility.
    pub version: String,
    /// New operations to declare and register.
    #[serde(default)]
    pub ops: Vec<OpDeclaration>,
    /// Adversarial witness seeds for op fuzzing.
    #[serde(default)]
    pub witnesses: Vec<WitnessSet>,
    /// Target implementations to test against the gauntlet.
    #[serde(default)]
    pub defendants: Vec<DefendantEntry>,
    /// Algebraic laws that operations must satisfy.
    #[serde(default)]
    pub laws: Vec<AlgebraicLaw>,
    /// Independence rules for preventing correlated failures.
    #[serde(default)]
    pub independence: Vec<IndependenceRule>,
}