from __future__ import annotations from pathlib import Path import pytest from app.core.llm.runtime_governance import ( DatasetLeakageError, evaluate_governed_dataset, load_engineering_fixture, ) def test_governed_eval_reports_k6_metrics_and_rejects_train_evaluation_overlap(): result = evaluate_governed_dataset( train_case_ids={"train-1"}, evaluation_cases=[ { "case_id": "eval-1", "expected_evidence_id": "evidence-1", "retrieved_evidence_ids": ["evidence-1", "evidence-2"], "citation_evidence_ids": ["evidence-1"], "authorized": True, "fresh": True, }, { "case_id": "eval-2", "expected_evidence_id": "evidence-2", "retrieved_evidence_ids": ["evidence-2"], "citation_evidence_ids": ["evidence-2"], "authorized": False, "fresh": False, }, ], ) assert result == { "recall": 1.0, "mrr": 1.0, "citation_correctness": 1.0, "privilege_violation_rate": 0.5, "freshness": 0.5, } with pytest.raises(DatasetLeakageError, match="dataset_leakage_detected"): evaluate_governed_dataset( train_case_ids={"eval-1"}, evaluation_cases=[{"case_id": "eval-1"}] ) def test_fixture_manifest_has_real_digests_and_is_stably_read_once_per_file(): manifest = Path(__file__).resolve().parents[2] / "docs/phase3/p3-wp09-agent-governance-fixture/manifest.json" first = load_engineering_fixture(manifest) second = load_engineering_fixture(manifest) assert first == second assert first["dataset.json"]["dataset_version"] == "engineering-fixture-v1"