102 lines
3.8 KiB
Python
102 lines
3.8 KiB
Python
#!/usr/bin/env python3
|
|
"""Summarize KP exact cusp runtime state vs public numeric oracle blocker."""
|
|
from __future__ import annotations
|
|
|
|
import hashlib
|
|
import json
|
|
from pathlib import Path
|
|
from typing import Any
|
|
|
|
|
|
ROOT = Path(__file__).resolve().parents[1]
|
|
RUNTIME_RAW = ROOT / "references/oracle/vedicastro_kp_house_cusp_probe_steve_jobs_2026_07_23.json"
|
|
HUNT = ROOT / "references/oracle/kp_exact_cusp_public_worked_example_hunt_v2_2026_07_22.json"
|
|
OUTPUT = ROOT / "references/oracle/kp_exact_cusp_runtime_oracle_boundary_2026_07_23.json"
|
|
|
|
|
|
def _load(path: Path) -> dict[str, Any]:
|
|
return json.loads(path.read_text(encoding="utf-8"))
|
|
|
|
|
|
def _stable_json(data: Any) -> str:
|
|
return json.dumps(data, ensure_ascii=False, sort_keys=True, separators=(",", ":"), default=str)
|
|
|
|
|
|
def _runtime_summary(raw: dict[str, Any]) -> dict[str, Any]:
|
|
houses = ((raw.get("raw") or {}).get("houses") or [])
|
|
return {
|
|
"artifact": str(RUNTIME_RAW.relative_to(ROOT)),
|
|
"artifact_sha256": hashlib.sha256(RUNTIME_RAW.read_bytes()).hexdigest(),
|
|
"engine": raw.get("engine"),
|
|
"claim_status": raw.get("claim_status"),
|
|
"house_count": len(houses),
|
|
"fields": ["cusp_longitude", "star_lord", "sub_lord", "sub_sub_lord"],
|
|
"schema_fingerprint": raw.get("schema_fingerprint") or {},
|
|
"raw_hash": raw.get("raw_hash"),
|
|
}
|
|
|
|
|
|
def build() -> dict[str, Any]:
|
|
raw = _load(RUNTIME_RAW)
|
|
hunt = _load(HUNT)
|
|
required = hunt.get("required_numeric_oracle_fields") or [
|
|
"birth_or_question_input",
|
|
"ayanamsa",
|
|
"house_system_or_kp_cusp_method",
|
|
"exact_cusp_longitudes",
|
|
"cusp_star_lord",
|
|
"cusp_sub_lord",
|
|
"cusp_sub_sub_lord",
|
|
]
|
|
required = [
|
|
"birth_or_question_input" if item == "birth_or_query_input" else item
|
|
for item in required
|
|
]
|
|
candidate_sources = [
|
|
{
|
|
"id": "archive_kp_reader_candidate",
|
|
"source": "references/oracle/kp_archive_numeric_extraction_result_2026_07_21.json",
|
|
"missing": ["complete input", "full 12-cusp star/sub/sub-sub table"],
|
|
"promotion": "queue_only",
|
|
},
|
|
{
|
|
"id": "astrosage_kp_cuspal_sub_lord",
|
|
"source": "https://www.astrosage.com/kp/cuspal-sub-lord.asp",
|
|
"missing": ["fixed public input", "published expected 12-cusp output table", "raw hash"],
|
|
"promotion": "queue_only",
|
|
},
|
|
{
|
|
"id": "vedicastro_python_surface",
|
|
"source": "references/open_source_sources/VedicAstro/vedicastro/VedicAstro.py",
|
|
"missing": ["independent expected values"],
|
|
"promotion": "queue_only",
|
|
},
|
|
]
|
|
packet = {
|
|
"scope": "kp_exact_cusp_runtime_oracle_boundary",
|
|
"created_at": "2026-07-23",
|
|
"claim_status": "calculable_displayable_public_oracle_blocked",
|
|
"runtime_raw_status": "single_engine_observation_ready",
|
|
"public_numeric_oracle_status": "blocked_missing_complete_worked_example",
|
|
"truth_matrix_allowed": False,
|
|
"production_tuning_allowed": False,
|
|
"runtime_raw": _runtime_summary(raw),
|
|
"required_oracle_fields": required,
|
|
"complete_numeric_oracle_count": 0,
|
|
"candidate_sources": candidate_sources,
|
|
"packet_hash": hashlib.sha256(_stable_json(candidate_sources + [required]).encode("utf-8")).hexdigest(),
|
|
"boundary": "KP exact cusp/star/sub/sub-sub can be displayed from runtime raw as observation; it cannot be used as verified precise event timing until a public numeric worked example closes.",
|
|
}
|
|
return packet
|
|
|
|
|
|
def main() -> int:
|
|
packet = build()
|
|
OUTPUT.write_text(json.dumps(packet, ensure_ascii=False, indent=2, sort_keys=True) + "\n", encoding="utf-8")
|
|
print(json.dumps(packet, ensure_ascii=False, sort_keys=True))
|
|
return 0
|
|
|
|
|
|
if __name__ == "__main__":
|
|
raise SystemExit(main())
|