pub mod ctx;
pub mod enforcer;
pub(crate) mod gates;
pub mod registry;
pub use ctx::{workspace_root, EnforceCtx};
pub use enforcer::{aggregate_finding, finding_result, EnforceGate, Finding, RegisteredEnforcer};
pub use registry::{enforce_all, EnforcementReport, LayerCheck, LayerFinding, LayerStatus};
pub mod enforcers {
pub mod admission;
pub mod atomics;
pub mod barrier;
pub mod category_a;
pub mod category_b;
pub mod category_c;
pub mod characterize;
pub mod composition_closure;
pub mod cost_certificate;
pub mod data_race;
pub mod decomposition;
pub mod determinism;
pub mod divergence;
pub mod enforcer_gpu_mandatory;
pub mod engine_composition;
pub mod float_semantics;
pub mod gate_7_coverage;
pub mod layer1_executable_spec;
pub mod layer2_law_inference;
pub mod layer3_reference_interp;
pub mod layer4_mutation_gate;
pub mod layer5_adversarial;
pub mod layer6_stability;
pub mod layer7_composition_proof;
pub mod layer8_feedback_loop;
pub mod no_silent_wrong;
pub mod oob_access;
pub mod overflow_contract;
pub mod reference_trust;
pub mod self_audit;
pub mod signature_match;
pub mod structural_rules;
pub mod wire_format_eq;
pub mod zero_stubs;
}
pub use crate::spec::{CategoryFinding, FindingLocation};
pub use enforcers::admission;
pub use enforcers::category_a::check_category_a_zero_overhead;
pub use enforcers::category_b::check_category_b_tripwire;
pub use enforcers::category_c::check_category_c_intrinsic;
pub use enforcers::reference_trust;
pub use enforcers::signature_match::enforce_signature;
pub use vyre_spec::{Category, IntrinsicTable};
pub(crate) use enforcers::float_semantics as float;
pub(crate) use enforcers::signature_match as signature;
pub(crate) use enforcers::{atomics, barrier, determinism, float_semantics, wire_format_eq};
pub mod category {
pub use crate::enforce::{
check_category_a_zero_overhead, check_category_b_tripwire, check_category_c_intrinsic,
Category, CategoryFinding, IntrinsicTable,
};
#[inline]
pub fn check_all_categories(
specs: &[crate::OpSpec],
root: &std::path::Path,
) -> Vec<CategoryFinding> {
let mut findings = check_category_a_zero_overhead(specs);
findings.extend(check_category_c_intrinsic(specs));
findings.extend(check_category_b_tripwire(root));
findings
}
}
pub mod layers {
pub use crate::enforce::enforcers::layer8_feedback_loop;
}