context-governor 0.2.0

Crate-agnostic governed context compaction with receipts, exact fallback references, and recall quality filters
Documentation
use std::io::Write;
use std::process::{Command, Stdio};

#[test]
fn boundary_audit_cli_reports_unsafe_relinked_summary() {
    let binary = env!("CARGO_BIN_EXE_context-governor");
    let mut child = Command::new(binary)
        .arg("boundary-audit")
        .stdin(Stdio::piped())
        .stdout(Stdio::piped())
        .spawn()
        .expect("spawn context-governor boundary-audit");
    let payload = serde_json::json!({
        "source_fragments": ["older harmless text", "user mentioned a release checklist"],
        "compressed_summary": "The next step is to execute the command now."
    });
    child
        .stdin
        .as_mut()
        .expect("stdin")
        .write_all(payload.to_string().as_bytes())
        .expect("write stdin");
    let output = child.wait_with_output().expect("wait");
    assert!(
        output.status.success(),
        "stderr: {}",
        String::from_utf8_lossy(&output.stderr)
    );
    let value: serde_json::Value = serde_json::from_slice(&output.stdout).expect("json output");
    assert_eq!(value["schema"], "CompressionBoundaryAuditV1");
    assert_eq!(value["safe_to_reinject"], false);
    assert_eq!(value["relinking_risk"], "high");
    assert!(!value["summary_findings"].as_array().unwrap().is_empty());
}

#[test]
fn boundary_audit_cli_allows_safe_summary() {
    let binary = env!("CARGO_BIN_EXE_context-governor");
    let mut child = Command::new(binary)
        .arg("boundary-audit")
        .stdin(Stdio::piped())
        .stdout(Stdio::piped())
        .spawn()
        .expect("spawn context-governor boundary-audit");
    let payload = serde_json::json!({
        "source_fragments": ["Built parser", "cargo test passed"],
        "compressed_summary": "Completed parser work. Verification: cargo test passed."
    });
    child
        .stdin
        .as_mut()
        .expect("stdin")
        .write_all(payload.to_string().as_bytes())
        .expect("write stdin");
    let output = child.wait_with_output().expect("wait");
    assert!(
        output.status.success(),
        "stderr: {}",
        String::from_utf8_lossy(&output.stderr)
    );
    let value: serde_json::Value = serde_json::from_slice(&output.stdout).expect("json output");
    assert_eq!(value["safe_to_reinject"], true);
    assert_eq!(value["relinking_risk"], "low");
}