feat: sync high value technique gap registries
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
REGISTRY_DIR = ROOT / "references/oracle"
|
||||
REGISTRIES = [
|
||||
"kp_precision_timing_gap_registry_2026_07_19.json",
|
||||
"muhurta_full_system_gap_registry_2026_07_19.json",
|
||||
"ashtakavarga_advanced_usage_gap_registry_2026_07_19.json",
|
||||
"compatibility_full_system_gap_registry_2026_07_19.json",
|
||||
]
|
||||
REQUIRED_FIELDS = {
|
||||
"technique_id",
|
||||
"local_code_status",
|
||||
"skill_invocation_status",
|
||||
"api_ui_entry_status",
|
||||
"external_oracle_status",
|
||||
"commercial_sync_status",
|
||||
"claim_boundary",
|
||||
}
|
||||
|
||||
|
||||
def _load(name: str) -> dict:
|
||||
return json.loads((REGISTRY_DIR / name).read_text(encoding="utf-8"))
|
||||
|
||||
|
||||
def test_high_value_gap_registries_exist_and_keep_required_fields() -> None:
|
||||
for name in REGISTRIES:
|
||||
data = _load(name)
|
||||
assert data["status"] == "gap_registry_v1"
|
||||
assert data["production_tuning_allowed"] is False
|
||||
assert data["items"]
|
||||
for item in data["items"]:
|
||||
assert REQUIRED_FIELDS.issubset(item)
|
||||
assert item["claim_boundary"]
|
||||
assert item["commercial_sync_status"] in {
|
||||
"ready_after_guarded_contract",
|
||||
"research_only",
|
||||
"blocked_until_oracle",
|
||||
"not_for_commercial_runtime",
|
||||
}
|
||||
|
||||
|
||||
def test_kp_registry_keeps_precision_timing_blocked_without_oracle() -> None:
|
||||
data = _load("kp_precision_timing_gap_registry_2026_07_19.json")
|
||||
ids = {item["technique_id"]: item for item in data["items"]}
|
||||
assert {"kp_cusps", "star_sub_lord", "ruling_planets", "kp_significators", "kp_horary"}.issubset(ids)
|
||||
assert ids["star_sub_lord"]["local_code_status"] == "minimal_probe_present"
|
||||
assert ids["star_sub_lord"]["external_oracle_status"] == "partial_sublord_csv_only"
|
||||
assert ids["kp_significators"]["local_code_status"] == "minimal_probe_present"
|
||||
assert ids["kp_significators"]["claim_boundary"].startswith("Reference/probe only")
|
||||
|
||||
|
||||
def test_muhurta_registry_distinguishes_panchanga_from_full_muhurta() -> None:
|
||||
data = _load("muhurta_full_system_gap_registry_2026_07_19.json")
|
||||
ids = {item["technique_id"]: item for item in data["items"]}
|
||||
assert ids["panchanga_base"]["local_code_status"] == "present"
|
||||
assert ids["full_muhurta_scoring"]["local_code_status"] == "missing_runtime"
|
||||
assert ids["full_muhurta_scoring"]["claim_boundary"].startswith("Do not present")
|
||||
|
||||
|
||||
def test_ashtakavarga_advanced_registry_keeps_advanced_usage_observation_only() -> None:
|
||||
data = _load("ashtakavarga_advanced_usage_gap_registry_2026_07_19.json")
|
||||
ids = {item["technique_id"]: item for item in data["items"]}
|
||||
assert ids["bav_sav_core"]["local_code_status"] == "present"
|
||||
assert ids["kakshya_transit"]["external_oracle_status"] == "missing"
|
||||
assert ids["annual_sav_timing_scan"]["commercial_sync_status"] == "blocked_until_oracle"
|
||||
|
||||
|
||||
def test_compatibility_registry_separates_basic_koota_from_advanced_overlays() -> None:
|
||||
data = _load("compatibility_full_system_gap_registry_2026_07_19.json")
|
||||
ids = {item["technique_id"]: item for item in data["items"]}
|
||||
assert ids["ashtakoota_core"]["local_code_status"] == "present"
|
||||
assert ids["composite_davidson_charts"]["commercial_sync_status"] == "not_for_commercial_runtime"
|
||||
assert ids["relationship_av_overlay"]["external_oracle_status"] == "missing"
|
||||
@@ -0,0 +1,50 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
import subprocess
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
PROBE = ROOT / "scripts" / "kp_precision_timing_probe.py"
|
||||
|
||||
|
||||
def test_kp_precision_timing_probe_outputs_star_sub_lord_and_significators() -> None:
|
||||
completed = subprocess.run(
|
||||
[sys.executable, str(PROBE)],
|
||||
cwd=ROOT,
|
||||
check=True,
|
||||
capture_output=True,
|
||||
text=True,
|
||||
)
|
||||
report = json.loads(completed.stdout)
|
||||
|
||||
assert report["scope"] == "kp_star_sub_lord_significator_probe"
|
||||
assert report["claim_status"] == "probe_only_not_timing_truth"
|
||||
assert report["production_tuning_allowed"] is False
|
||||
assert report["raw_sha256"]
|
||||
|
||||
assert "Sun" in report["kp_lords_by_planet"]
|
||||
sun_lords = report["kp_lords_by_planet"]["Sun"]
|
||||
assert {"rasi_lord", "nakshatra_lord", "sub_lord", "sub_sub_lord"} <= set(sun_lords)
|
||||
|
||||
assert "Sun" in report["planet_significators"]
|
||||
assert {"A", "B", "C", "D"} <= set(report["planet_significators"]["Sun"])
|
||||
assert "10" in report["house_significators"]
|
||||
assert {"A", "B", "C", "D"} <= set(report["house_significators"]["10"])
|
||||
|
||||
|
||||
def test_kp_precision_timing_probe_preserves_oracle_and_holdout_blockers() -> None:
|
||||
completed = subprocess.run(
|
||||
[sys.executable, str(PROBE)],
|
||||
cwd=ROOT,
|
||||
check=True,
|
||||
capture_output=True,
|
||||
text=True,
|
||||
)
|
||||
report = json.loads(completed.stdout)
|
||||
|
||||
assert report["external_oracle_status"] == "partial_sublord_csv_only"
|
||||
assert report["negative_holdout_status"] == "missing"
|
||||
assert "cannot drive precise event timing" in report["claim_boundary"]
|
||||
Reference in New Issue
Block a user