vyre-conform 0.1.0

Conformance suite for vyre backends — proves byte-identical output to CPU reference
Documentation
mod adversarial;
mod gap;
mod property;
mod unit;

use crate::meta::observe::{TraceRecord, TraceSnapshot};

use super::subscriber::ObservingSubscriber;

#[test]
fn subscriber_records_entered_span_without_borrow_conflict() {
    let (subscriber, recorder) = ObservingSubscriber::new();
    tracing::subscriber::with_default(subscriber, || {
        let span = tracing::info_span!(
            "decomposition_gate",
            layer_id = "Decomposition",
            op_id = "primitive.compare.ge",
            verdict = "fail"
        );
        let _guard = span.enter();
    });

    let snapshot = recorder.snapshot();
    let record = snapshot
        .records
        .iter()
        .find(|record| record.name == "decomposition_gate")
        .expect("entered span should be recorded");
    assert_eq!(record.layer_id.as_deref(), Some("Decomposition"));
    assert_eq!(record.op_id.as_deref(), Some("primitive.compare.ge"));
    assert_eq!(record.verdict.as_deref(), Some("fail"));
}

fn sample_trace() -> TraceSnapshot {
    TraceSnapshot {
        records: vec![
            TraceRecord {
                name: "vyre_conform.layer".to_string(),
                layer_id: Some("L1".to_string()),
                op_id: Some("primitive.bitwise.xor".to_string()),
                verdict: Some("pass".to_string()),
                start_us: 10,
                duration_us: 25,
                stack: vec![
                    "vyre_conform.enforce_all".to_string(),
                    "L1:primitive.bitwise.xor".to_string(),
                ],
                thread_id: 1,
            },
            TraceRecord {
                name: "background".to_string(),
                layer_id: None,
                op_id: None,
                verdict: None,
                start_us: 40,
                duration_us: 5,
                stack: vec!["background".to_string()],
                thread_id: 1,
            },
        ],
    }
}