<?xml version="1.0" encoding="utf-8"?><testsuites name="pytest tests"><testsuite name="pytest" errors="0" failures="0" skipped="0" tests="13" time="0.017" timestamp="2026-09-24T17:32:13.890152-04:00" hostname="pop-os"><testcase classname="tests.test_data_pipeline" name="test_valid_source_contract_has_no_errors" time="0.000" /><testcase classname="tests.test_data_pipeline" name="test_duplicate_source_id_is_rejected" time="0.000" /><testcase classname="tests.test_data_pipeline" name="test_index_enforces_acl_and_retains_lineage" time="0.000" /><testcase classname="tests.test_data_pipeline" name="test_reconciliation_detects_missing_authorized_source" time="0.000" /><testcase classname="tests.test_evaluators" name="test_rag_score_separates_answer_from_citation" time="0.000" /><testcase classname="tests.test_evaluators" name="test_rag_rejects_citation_not_in_retrieved_context" time="0.000" /><testcase classname="tests.test_evaluators" name="test_abstention_requires_exact_contract" time="0.000" /><testcase classname="tests.test_evaluators" name="test_agent_parser_accepts_exact_contract" time="0.000" /><testcase classname="tests.test_evaluators" name="test_agent_parser_rejects_prose_or_extra_authority" time="0.000" /><testcase classname="tests.test_evaluators" name="test_agent_action_must_match_policy_expectation" time="0.000" /><testcase classname="tests.test_retrieval" name="test_retrieval_returns_relevant_source_first" time="0.000" /><testcase classname="tests.test_retrieval" name="test_retrieval_returns_empty_for_unsupported_question" time="0.000" /><testcase classname="tests.test_retrieval" name="test_single_generic_overlap_does_not_cross_confidence_gate" time="0.000" /></testsuite></testsuites>