lean-ctx 3.9.19

Context Runtime for AI Agents with CCP. 79 MCP tools, 10 read modes, 95+ compression patterns, cross-session memory (CCP), persistent AI knowledge with temporal facts + contradiction detection, multi-agent context sharing, LITM-aware positioning, AAAK compact format, adaptive compression with Thompson Sampling bandits. Supports 24+ AI tools. Reduces LLM token consumption by up to 99%.
use super::validation::{ValidationResult, validate_against_gold_set};

const GOLD_SET: &str = include_str!("../../../data/triage_gold_set.jsonl");

fn rows() -> Vec<serde_json::Value> {
    GOLD_SET
        .lines()
        .map(|line| serde_json::from_str(line).unwrap())
        .collect()
}

#[test]
fn test_gold_set_parseable() {
    assert!(rows().len() >= 200);
}

#[test]
fn test_gold_set_schema() {
    for row in rows() {
        for field in ["id", "query", "language", "labels", "metadata"] {
            assert!(row.get(field).is_some(), "missing {field}");
        }
        for field in [
            "intent",
            "task_class",
            "complexity",
            "scope",
            "reasoning_need",
            "risk",
        ] {
            assert!(row["labels"].get(field).is_some(), "missing labels.{field}");
        }
    }
}

#[test]
fn test_gold_set_distribution() {
    let rows = rows();
    assert!(rows.iter().filter(|row| row["language"] == "en").count() >= 150);
    assert!(rows.iter().filter(|row| row["language"] == "de").count() >= 50);
}

#[test]
fn test_rules_baseline_accuracy() {
    let result: ValidationResult = validate_against_gold_set();
    assert!(
        result.accuracy >= 0.40,
        "baseline accuracy: {}",
        result.accuracy
    );
}