vyre-conform 0.1.0

Conformance suite for vyre backends — proves byte-identical output to CPU reference
Documentation
use std::collections::BTreeSet;

use crate::meta::observe::capture_enforce_all;

#[test]
fn layer_record_iterator_preserves_all_registered_op_ids_in_snapshot() {
    let records = crate::spec::op_registry::all_specs()
        .into_iter()
        .map(|spec| crate::meta::observe::TraceRecord {
            name: "vyre_conform.layer".to_string(),
            layer_id: Some("L1".to_string()),
            op_id: Some(spec.id.to_string()),
            verdict: Some("pass".to_string()),
            start_us: 0,
            duration_us: 1,
            stack: vec!["L1".to_string(), spec.id.to_string()],
            thread_id: 1,
        })
        .collect();
    let trace = crate::meta::observe::TraceSnapshot { records };
    let expected_ops: BTreeSet<&str> = crate::spec::op_registry::all_specs()
        .iter()
        .map(|spec| spec.id)
        .collect();
    let traced_ops: BTreeSet<&str> = trace
        .layer_records()
        .filter_map(|record| record.op_id.as_deref())
        .collect();

    assert_eq!(traced_ops, expected_ops);
}

#[test]
#[ignore = "runs the full enforce_all gauntlet, including L8 contribution scans"]
fn enforce_all_trace_contains_every_registered_op_for_every_numbered_layer() {
    let observed = capture_enforce_all();
    let expected_ops: BTreeSet<&str> = crate::spec::op_registry::all_specs()
        .iter()
        .map(|spec| spec.id)
        .collect();

    for layer in ["L1", "L2", "L3", "L4", "L5", "L6", "L7", "L8", "L9"] {
        let traced_ops: BTreeSet<&str> = observed
            .trace
            .layer_records()
            .filter(|record| record.layer_id.as_deref() == Some(layer))
            .filter_map(|record| record.op_id.as_deref())
            .collect();
        assert_eq!(
            traced_ops, expected_ops,
            "missing op trace coverage for {layer}"
        );
    }
}