vyre-conform 0.1.0

Conformance suite for vyre backends — proves byte-identical output to CPU reference
Documentation
use vyre_conform::adversarial::defender::corpus_metadata;
use vyre_conform::adversarial::{full_catalog, run_gauntlet};
use vyre_conform::registry::all_specs;

#[test]
fn defenders_hardcoded_input_outcomes() {
    let specs = all_specs();
    let catalogs = full_catalog();
    let report = run_gauntlet(&catalogs, &specs);
    let meta = corpus_metadata();
    assert!(!meta.is_empty(), "defender corpus empty — see build.rs");

    for m in meta.iter().filter(|m| m.class == "hardcoded-input") {
        let finding = report
            .findings
            .iter()
            .find(|f| f.defendant_id == m.id)
            .unwrap_or_else(|| panic!("Missing gauntlet finding for defender {}", m.id));

        let outcome_ok = match m.expected_outcome {
            "Catch" => finding.caught,
            "Escape" | "Unsupported" | "TargetMissing" => !finding.caught,
            _ => panic!(
                "Unknown expected_outcome '{}' for {}",
                m.expected_outcome, m.id
            ),
        };
        assert!(
            outcome_ok,
            "Defender {} expected {} but got caught={}, witness_failed={}",
            m.id, m.expected_outcome, finding.caught, finding.witness_failed
        );
    }
}