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,
},
],
}
}