teleo-infrastructure/tests/test_kb_proposal_review_packet.py

107 lines
4.3 KiB
Python

"""Tests for scripts/kb_proposal_review_packet.py."""
import copy
import sys
from pathlib import Path
REPO_ROOT = Path(__file__).resolve().parents[1]
sys.path.insert(0, str(REPO_ROOT / "scripts"))
import kb_proposal_review_packet as rp # noqa: E402
from tests import test_compile_kb_source_packet as source_compiler_fixture # noqa: E402
def test_approved_freeform_packet_is_not_worker_applyable():
proposal = {
"id": "14fa5ecc-ac7a-41c1-807d-a2e85b936617",
"proposal_type": "attach_evidence",
"status": "approved",
"reviewed_by_handle": "m3ta",
"payload": {
"proposal_kind": "supersede_compressed_claim_with_split_claim_cluster",
"old_claim": {"id": "d0000000-0000-0000-0000-000000000005"},
"claim_candidates": [{"headline": "A"}, {"headline": "B"}],
"source_candidates": [{"source_key": "hayek"}],
"proposed_supersession_edges": [{"edge_type": "supersedes_component_of"}],
"proposed_concept_map_dependency": {"headline": "Distributed market intelligence"},
"schema_gap_note": "bridge cannot propose claims directly",
},
}
packet = rp.classify_proposal(proposal)
assert packet["review_state"] == "approved_needs_apply_payload"
assert packet["worker_applyable"] is False
assert packet["has_apply_payload"] is False
assert "strict payload.apply_payload" in packet["applyability"]["missing_contract"]
assert "claim-row normalization" in packet["applyability"]["missing_contract"]
assert packet["payload_summary"]["claim_candidate_count"] == 2
assert packet["payload_summary"]["has_concept_map_dependency"] is True
assert "normalize into one or more strict apply_payload" in packet["next_admin_action"]
def test_approved_strict_packet_is_worker_applyable():
proposal = {
"id": "edge-proposal",
"proposal_type": "add_edge",
"status": "approved",
"payload": {
"apply_payload": {
"from_claim": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
"to_claim": "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb",
"edge_type": "supports",
}
},
}
packet = rp.classify_proposal(proposal)
assert packet["review_state"] == "approved_applyable"
assert packet["worker_applyable"] is True
assert packet["applyability"]["missing_contract"] == []
assert "Show dry-run SQL" in packet["next_admin_action"]
def test_pending_packet_needs_human_review():
packet = rp.classify_proposal(
{
"id": "pending",
"proposal_type": "add_edge",
"status": "pending_review",
"payload": {"apply_payload": {"from_claim": "a", "to_claim": "b", "edge_type": "supports"}},
}
)
assert packet["review_state"] == "needs_human_review"
assert packet["worker_applyable"] is False
assert "approve, reject, or request edits" in packet["next_admin_action"]
def test_v3_source_packet_exposes_exact_rows_normalization_and_hashes(tmp_path: Path):
bundle = source_compiler_fixture._compile_v3(tmp_path / "source")
proposal = copy.deepcopy(bundle["strict_child_proposal"])
packet = rp.classify_proposal(proposal)
apply_payload = proposal["payload"]["apply_payload"]
assert packet["review_state"] == "needs_human_review"
assert packet["payload_summary"]["contract_version"] == 3
assert packet["payload_summary"]["strict_row_counts"] == {
"assessments": 1,
"claims": 1,
"edges": 0,
"evidence": 1,
"reasoning_tools": 0,
"sources": 1,
}
assert packet["strict_review_material"]["rows"]["claims"] == apply_payload["claims"]
assert packet["strict_review_material"]["rows"]["sources"] == apply_payload["sources"]
assert packet["strict_review_material"]["rows"]["evidence"] == apply_payload["evidence"]
assert packet["strict_review_material"]["rows"]["assessments"] == apply_payload["assessments"]
assert (
packet["strict_review_material"]["normalization_manifest"]
== apply_payload["normalization_manifest"]
)
assert packet["strict_review_material"]["apply_payload_sha256"] == rp.canonical_sha256(apply_payload)
assert packet["strict_review_material"]["proposal_payload_sha256"] == rp.canonical_sha256(proposal["payload"])