Files
Jyotisha/tests/test_kp_observation_sync_contract.py
2026-07-22 19:55:13 +08:00

44 lines
1.9 KiB
Python

import json
from pathlib import Path
ROOT = Path(__file__).resolve().parents[1]
CONTRACT = ROOT / "references/oracle/kp_observation_sync_contract_2026_07_22.json"
INDEX = ROOT / "references/oracle/evidence_packet_index_2026_07_19.json"
def test_kp_observation_sync_contract_is_calculable_displayable_not_predictive():
data = json.loads(CONTRACT.read_text(encoding="utf-8"))
assert data["scope"] == "kp_observation_sync_contract"
assert data["claim_status"] == "observation_only"
assert data["runtime_status"] == "calculable"
assert data["display_status"] == "displayable_with_warning"
assert data["prediction_status"] == "not_verified_prediction"
assert data["truth_matrix_allowed"] is False
assert data["allowed_claim_level"] == "technical_observation"
assert "verified event timing" in data["forbidden_claims"]
def test_kp_observation_sync_contract_links_required_evidence():
data = json.loads(CONTRACT.read_text(encoding="utf-8"))
assert data["evidence_refs"] == [
"references/oracle/kp_exact_cusp_invocation_closure_2026_07_21.json",
"references/oracle/kp_archive_numeric_extraction_result_2026_07_21.json",
"references/oracle/roxyapi_kp_surface_contract_2026_07_21.json"
]
fields = data["display_fields"]
assert {"cusp_longitude", "nakshatra_lord", "sub_lord", "sub_sub_lord"} <= set(fields)
assert data["sync_targets"]["skill"] == "reference_only_with_boundary"
assert data["sync_targets"]["api"] == "observation_endpoint_allowed"
assert data["sync_targets"]["ui"] == "capability_center_badge_only"
def test_kp_observation_sync_contract_is_indexed():
packets = {
row["packet_id"]: row
for row in json.loads(INDEX.read_text(encoding="utf-8"))["packets"]
}
packet = packets["kp_observation_sync_contract_2026_07_22"]
assert packet["claim_status"] == "observation_only"
assert packet["consumer_policy"] == "research_observation_only"