weirflow 0.1.0

GPU-first dataflow analysis primitives for Vyre and Santh compiler pipelines.
Documentation
//! Release-evidence contract for Weir.
//!
//! README release claims must point at concrete checked-in evidence. This test
//! prevents prose-only release readiness claims from drifting away from the
//! artifacts used by the Vyre/Weir release train.

use std::fs;
use std::path::Path;

const RELEASE_EVIDENCE: &[&str] = &[
    "release/evidence/weir/weir-analysis-api-matrix.json",
    "release/evidence/weir/weir-vyre-integration-tests.json",
    "release/evidence/benchmarks/weir-dataflow-release.json",
    "release/evidence/docs/weir-integration.md",
];

#[test]
fn readme_release_evidence_paths_exist() {
    let root = Path::new(env!("CARGO_MANIFEST_DIR"));
    let readme = fs::read_to_string(root.join("README.md")).expect("README.md must be readable");

    for relative in RELEASE_EVIDENCE {
        assert!(
            readme.contains(relative),
            "README release evidence section must mention {relative}"
        );
        assert!(
            root.join(relative).is_file(),
            "README release evidence path must exist: {relative}"
        );
    }
}

#[test]
fn json_evidence_files_pin_crate_version_and_release_train() {
    let root = Path::new(env!("CARGO_MANIFEST_DIR"));

    for relative in &RELEASE_EVIDENCE[..3] {
        let text = fs::read_to_string(root.join(relative))
            .unwrap_or_else(|err| panic!("{relative} must be readable: {err}"));
        for required in [
            "\"crate\": \"weir\"",
            "\"version\": \"0.1.0\"",
            "\"release_train\": \"vyre-0.4.2\"",
            "\"status\":",
        ] {
            assert!(
                text.contains(required),
                "{relative} must contain {required}"
            );
        }
    }
}

#[test]
fn integration_evidence_requires_loud_gpu_parity() {
    let root = Path::new(env!("CARGO_MANIFEST_DIR"));
    let text =
        fs::read_to_string(root.join("release/evidence/weir/weir-vyre-integration-tests.json"))
            .expect("integration evidence must be readable");

    for required in [
        "\"gpu_required\": true",
        "df_parity_inventory_sweep.rs",
        "ifds_gpu_solve_gpu_parity.rs",
        "fail loudly rather than skip parity",
    ] {
        assert!(
            text.contains(required),
            "integration evidence must contain {required}"
        );
    }
}

#[test]
fn integration_evidence_requires_exact_dispatch_decode_abi_contracts() {
    let root = Path::new(env!("CARGO_MANIFEST_DIR"));
    let text =
        fs::read_to_string(root.join("release/evidence/weir/weir-vyre-integration-tests.json"))
            .expect("integration evidence must be readable");

    for required in [
        "\"unit_test_filters\"",
        "\"dispatch_decode\"",
        "tests/dispatch_decode_modularity.rs",
        "tests/source_boundary.rs",
        "reject missing outputs",
        "extra outputs",
        "short buffers",
        "trailing bytes",
        "wrong multi-output counts",
    ] {
        assert!(
            text.contains(required),
            "integration evidence must include exact dispatch decode ABI contract marker {required}"
        );
    }
}

#[test]
fn documentation_evidence_declares_cpu_oracle_boundary() {
    let root = Path::new(env!("CARGO_MANIFEST_DIR"));
    let text = fs::read_to_string(root.join("release/evidence/docs/weir-integration.md"))
        .expect("documentation evidence must be readable");

    for required in [
        "backend-neutral",
        "CPU routines are release oracles only",
        "Production modules must not call them directly",
        "cargo test -q --features cpu-parity dispatch_decode",
    ] {
        assert!(
            text.contains(required),
            "docs evidence must contain {required}"
        );
    }
}