feat: sync kp cusp raw queue

This commit is contained in:
732642856
2026-07-19 22:07:31 +08:00
parent 33526661f2
commit d9b07802a5
5 changed files with 449 additions and 1 deletions
@@ -5,7 +5,7 @@
"production_tuning_allowed": false,
"boundary": "Index of current governance packets only. Raw oracle artifacts remain in references/oracle/artifacts and are not all duplicated here.",
"summary": {
"packet_count": 51,
"packet_count": 54,
"blocked_or_partial_count": 40,
"human_review_required_count": 1
},
@@ -417,6 +417,30 @@
"claim_status": "observation_only",
"consumer_policy": "research_to_commercial_contract_only",
"claim_boundary": "VedicAstro KP lord/sub/sub-sub runtime surface is callable in isolated sidereal flatlib environment; no precision-timing truth upgrade until public numeric KP worked-example replay closes."
},
{
"packet_id": "kp_muhurta_shadbala_numeric_packet_queue",
"path": "references/oracle/kp_muhurta_shadbala_numeric_packet_queue_2026_07_19.json",
"domain": "kp_muhurta_shadbala_numeric_oracle_queue",
"claim_status": "open_queue",
"consumer_policy": "research_to_commercial_contract_only",
"claim_boundary": "Queue tracks KP cusp, KP sub-lord table, Tarabala/Chandrabala, Rahu Kalam, and Shadbala numeric packets. Runtime KP raw exists, but no row is numeric_oracle_ready yet."
},
{
"packet_id": "vedicastro_kp_house_cusp_probe_steve_jobs",
"path": "references/oracle/vedicastro_kp_house_cusp_probe_steve_jobs_2026_07_19.json",
"domain": "kp_precision_timing_dependency",
"claim_status": "observation_only",
"consumer_policy": "research_to_commercial_contract_only",
"claim_boundary": "VedicAstro KP house cusp star/sub/sub-sub raw for Steve Jobs fixture; observation-only until public worked-example replay closes."
},
{
"packet_id": "vedicastro_kp_house_cusp_probe",
"path": "scripts/vedicastro_kp_house_cusp_probe.py",
"domain": "kp_precision_timing_dependency",
"claim_status": "tooling_observation_only",
"consumer_policy": "research_to_commercial_contract_only",
"claim_boundary": "Probe script can collect VedicAstro KP cusp raw in isolated sidereal flatlib environment; not a production prediction engine."
}
]
}
@@ -0,0 +1,54 @@
{
"scope": "kp_muhurta_shadbala_numeric_packet_queue",
"created_at": "2026-07-19",
"status": "queue_ready_runtime_kp_raw_attached",
"claim_status": "open_queue",
"production_tuning_allowed": false,
"truth_matrix_allowed": false,
"boundary": "Rows are only promoted to numeric_oracle_ready when public input/settings, expected values, raw capture hash, and replay comparison all exist.",
"runtime_observations": [
{
"topic": "KP house cusp star/sub/sub-sub",
"artifact": "references/oracle/vedicastro_kp_house_cusp_probe_steve_jobs_2026_07_19.json",
"raw_hash": "2e7a6b17eb2965a60846f625f6bd8bc03555216d6225983647bcbfa23d0e345b",
"status": "runtime_raw_available_not_oracle"
}
],
"packet_rows": [
{
"topic": "KP cusp",
"candidate_url": "https://www.astrosage.com/kp/cuspal-sub-lord.asp",
"source_type": "online_tool_or_reference",
"numeric_oracle_status": "blocked_public_input_missing",
"required_fields": ["birth_or_query_datetime", "location", "ayanamsa", "house_system", "cusp_longitude", "nakshatra_lord", "sub_lord", "sub_sub_lord", "raw_capture_hash"]
},
{
"topic": "KP sub-lord table",
"candidate_url": "https://www.aryabhatt.com/astrology/krishnamurti-paddhati/kp-sub-lords-table",
"source_type": "reference_table_candidate",
"numeric_oracle_status": "blocked_table_capture_and_license_boundary",
"required_fields": ["table_raw_capture", "table_hash", "copyright_boundary", "degree_range", "star_lord", "sub_lord", "sub_sub_lord"]
},
{
"topic": "Tarabala/Chandrabala",
"candidate_url": "https://www.mypanchang.com/tarabalam.php",
"source_type": "worked_example_or_calculator_candidate",
"numeric_oracle_status": "blocked_fixture_missing",
"required_fields": ["date", "location", "birth_moon_nakshatra", "current_moon_nakshatra", "tarabala_result", "chandrabala_result", "raw_capture_hash"]
},
{
"topic": "Rahu Kalam",
"candidate_url": "https://www.drikpanchang.com/muhurat/rahu-kalam.html",
"source_type": "calculation_reference_candidate",
"numeric_oracle_status": "blocked_fixture_missing",
"required_fields": ["date", "location", "sunrise", "sunset", "weekday", "expected_interval", "raw_capture_hash"]
},
{
"topic": "Shadbala Virupa",
"candidate_url": "https://www.astrojyoti.com/shadbala.htm",
"source_type": "formula_reference_candidate",
"numeric_oracle_status": "blocked_component_values_missing",
"required_fields": ["birth_input", "planet", "component_name", "formula_variant", "unit", "expected_virupa", "raw_capture_hash"]
}
]
}
@@ -0,0 +1,220 @@
{
"boundary": "KP house cusp star/sub/sub-sub raw from VedicAstro runtime. Observation-only until matched against a public numeric KP worked example.",
"claim_status": "observation_only",
"created_at": "2026-07-19",
"dependency_identity": {
"flatlib": "0.3.1.dev0",
"observed_pinned_flatlib_commit": "2618c348ce1ab2588548f935ff65f031630b4872",
"polars": "1.42.1",
"required_flatlib_source": "git+https://github.com/diliprk/flatlib.git@sidereal",
"timezonefinder": "8.2.5"
},
"engine": "VedicAstro",
"production_tuning_allowed": false,
"raw": {
"houses": [
{
"DegSize": 26.059,
"HouseNr": 1,
"LonDecDeg": 149.434,
"Nakshatra": "UttaraPhalgunī",
"NakshatraLord": "Sun",
"Object": "I",
"Rasi": "Leo",
"RasiLord": "Sun",
"SignLonDMS": "+29:26:02",
"SignLonDecDeg": 29.434,
"SubLord": "Rahu",
"SubSubLord": "Rahu"
},
{
"DegSize": 30.141,
"HouseNr": 2,
"LonDecDeg": 175.493,
"Nakshatra": "Chitra",
"NakshatraLord": "Mars",
"Object": "II",
"Rasi": "Virgo",
"RasiLord": "Mercury",
"SignLonDMS": "+25:29:35",
"SignLonDecDeg": 25.493,
"SubLord": "Rahu",
"SubSubLord": "Venus"
},
{
"DegSize": 32.894,
"HouseNr": 3,
"LonDecDeg": 205.634,
"Nakshatra": "Vishakha",
"NakshatraLord": "Jupiter",
"Object": "III",
"Rasi": "Libra",
"RasiLord": "Venus",
"SignLonDMS": "+25:38:01",
"SignLonDecDeg": 25.634,
"SubLord": "Mercury",
"SubSubLord": "Saturn"
},
{
"DegSize": 33.066,
"HouseNr": 4,
"LonDecDeg": 238.527,
"Nakshatra": "Jyeshtha",
"NakshatraLord": "Mercury",
"Object": "IV",
"Rasi": "Scorpio",
"RasiLord": "Mars",
"SignLonDMS": "+28:31:38",
"SignLonDecDeg": 28.527,
"SubLord": "Saturn",
"SubSubLord": "Ketu"
},
{
"DegSize": 30.713,
"HouseNr": 5,
"LonDecDeg": 271.594,
"Nakshatra": "UttaraAshadha",
"NakshatraLord": "Sun",
"Object": "V",
"Rasi": "Capricorn",
"RasiLord": "Saturn",
"SignLonDMS": "+01:35:37",
"SignLonDecDeg": 1.594,
"SubLord": "Jupiter",
"SubSubLord": "Saturn"
},
{
"DegSize": 27.128,
"HouseNr": 6,
"LonDecDeg": 302.306,
"Nakshatra": "Dhanishta",
"NakshatraLord": "Mars",
"Object": "VI",
"Rasi": "Aquarius",
"RasiLord": "Saturn",
"SignLonDMS": "+02:18:22",
"SignLonDecDeg": 2.306,
"SubLord": "Ketu",
"SubSubLord": "Rahu"
},
{
"DegSize": 26.059,
"HouseNr": 7,
"LonDecDeg": 329.434,
"Nakshatra": "PurvaBhādrapadā",
"NakshatraLord": "Jupiter",
"Object": "VII",
"Rasi": "Aquarius",
"RasiLord": "Saturn",
"SignLonDMS": "+29:26:02",
"SignLonDecDeg": 29.434,
"SubLord": "Sun",
"SubSubLord": "Venus"
},
{
"DegSize": 30.141,
"HouseNr": 8,
"LonDecDeg": 355.493,
"Nakshatra": "Revati",
"NakshatraLord": "Mercury",
"Object": "VIII",
"Rasi": "Pisces",
"RasiLord": "Jupiter",
"SignLonDMS": "+25:29:35",
"SignLonDecDeg": 25.493,
"SubLord": "Rahu",
"SubSubLord": "Venus"
},
{
"DegSize": 32.894,
"HouseNr": 9,
"LonDecDeg": 25.634,
"Nakshatra": "Bharani",
"NakshatraLord": "Venus",
"Object": "IX",
"Rasi": "Aries",
"RasiLord": "Mars",
"SignLonDMS": "+25:38:01",
"SignLonDecDeg": 25.634,
"SubLord": "Mercury",
"SubSubLord": "Saturn"
},
{
"DegSize": 33.066,
"HouseNr": 10,
"LonDecDeg": 58.527,
"Nakshatra": "Mrigashīrsha",
"NakshatraLord": "Mars",
"Object": "X",
"Rasi": "Taurus",
"RasiLord": "Venus",
"SignLonDMS": "+28:31:38",
"SignLonDecDeg": 28.527,
"SubLord": "Saturn",
"SubSubLord": "Ketu"
},
{
"DegSize": 30.713,
"HouseNr": 11,
"LonDecDeg": 91.594,
"Nakshatra": "Punarvasu",
"NakshatraLord": "Jupiter",
"Object": "XI",
"Rasi": "Cancer",
"RasiLord": "Moon",
"SignLonDMS": "+01:35:37",
"SignLonDecDeg": 1.594,
"SubLord": "Rahu",
"SubSubLord": "Rahu"
},
{
"DegSize": 27.128,
"HouseNr": 12,
"LonDecDeg": 122.306,
"Nakshatra": "Maghā",
"NakshatraLord": "Ketu",
"Object": "XII",
"Rasi": "Leo",
"RasiLord": "Sun",
"SignLonDMS": "+02:18:22",
"SignLonDecDeg": 2.306,
"SubLord": "Venus",
"SubSubLord": "Saturn"
}
],
"request": {
"ayanamsa": "Krishnamurti",
"day": 24,
"hour": 19,
"house_system": "Placidus",
"latitude": 37.3382,
"longitude": -122.0383,
"minute": 15,
"month": 2,
"second": 0,
"timezone": "America/Los_Angeles",
"year": 1955
}
},
"raw_hash": "2e7a6b17eb2965a60846f625f6bd8bc03555216d6225983647bcbfa23d0e345b",
"schema_fingerprint": {
"fields": [
"Object",
"HouseNr",
"Rasi",
"LonDecDeg",
"SignLonDMS",
"SignLonDecDeg",
"DegSize",
"Nakshatra",
"RasiLord",
"NakshatraLord",
"SubLord",
"SubSubLord"
],
"house_count": 12
},
"scope": "vedicastro_kp_house_cusp_probe",
"status": "complete",
"truth_matrix_allowed": false
}
+119
View File
@@ -0,0 +1,119 @@
#!/usr/bin/env python3
"""Run VedicAstro KP house cusp star/sub/sub-sub raw probe.
Requires an isolated PYTHONPATH containing VedicAstro's required sidereal
flatlib fork. Output is observation-only until public numeric KP worked
examples are replayed.
"""
from __future__ import annotations
import argparse
import hashlib
import importlib.metadata
import json
import sys
from pathlib import Path
from typing import Any
ROOT = Path(__file__).resolve().parents[1]
SRC = ROOT / "references/open_source_sources/VedicAstro"
def stable(data: Any) -> str:
return json.dumps(data, ensure_ascii=False, sort_keys=True, separators=(",", ":"), default=str)
def package_version(name: str) -> str | None:
try:
return importlib.metadata.version(name)
except importlib.metadata.PackageNotFoundError:
return None
def build(args: argparse.Namespace) -> dict[str, Any]:
sys.path.insert(0, str(SRC))
from vedicastro.VedicAstro import VedicHoroscopeData # type: ignore
chart_input = {
"year": args.year,
"month": args.month,
"day": args.day,
"hour": args.hour,
"minute": args.minute,
"second": args.second,
"latitude": args.latitude,
"longitude": args.longitude,
"timezone": args.timezone,
"ayanamsa": args.ayanamsa,
"house_system": args.house_system,
}
v = VedicHoroscopeData(
args.year,
args.month,
args.day,
args.hour,
args.minute,
args.second,
args.latitude,
args.longitude,
tz=args.timezone,
ayanamsa=args.ayanamsa,
house_system=args.house_system,
)
houses = v.get_houses_data_from_chart(v.generate_chart())
rows = [row._asdict() for row in houses]
raw = {
"request": chart_input,
"houses": rows,
}
return {
"scope": "vedicastro_kp_house_cusp_probe",
"created_at": "2026-07-19",
"status": "complete",
"claim_status": "observation_only",
"production_tuning_allowed": False,
"truth_matrix_allowed": False,
"engine": "VedicAstro",
"dependency_identity": {
"required_flatlib_source": "git+https://github.com/diliprk/flatlib.git@sidereal",
"observed_pinned_flatlib_commit": "2618c348ce1ab2588548f935ff65f031630b4872",
"flatlib": package_version("flatlib"),
"polars": package_version("polars"),
"timezonefinder": package_version("timezonefinder"),
},
"raw_hash": hashlib.sha256(stable(raw).encode("utf-8")).hexdigest(),
"schema_fingerprint": {
"house_count": len(rows),
"fields": list(rows[0].keys()) if rows else [],
},
"raw": raw,
"boundary": "KP house cusp star/sub/sub-sub raw from VedicAstro runtime. Observation-only until matched against a public numeric KP worked example.",
}
def main() -> int:
ap = argparse.ArgumentParser()
ap.add_argument("--year", type=int, default=1955)
ap.add_argument("--month", type=int, default=2)
ap.add_argument("--day", type=int, default=24)
ap.add_argument("--hour", type=int, default=19)
ap.add_argument("--minute", type=int, default=15)
ap.add_argument("--second", type=int, default=0)
ap.add_argument("--latitude", type=float, default=37.3382)
ap.add_argument("--longitude", type=float, default=-122.0383)
ap.add_argument("--timezone", default="America/Los_Angeles")
ap.add_argument("--ayanamsa", default="Krishnamurti")
ap.add_argument("--house-system", default="Placidus")
ap.add_argument("--output")
args = ap.parse_args()
payload = build(args)
text = json.dumps(payload, ensure_ascii=False, indent=2, sort_keys=True)
if args.output:
Path(args.output).write_text(text + "\n", encoding="utf-8")
print(text)
return 0
if __name__ == "__main__":
raise SystemExit(main())
@@ -0,0 +1,31 @@
import json
from pathlib import Path
ROOT = Path(__file__).resolve().parents[1]
QUEUE = ROOT / "references/oracle/kp_muhurta_shadbala_numeric_packet_queue_2026_07_19.json"
INDEX = ROOT / "references/oracle/evidence_packet_index_2026_07_19.json"
def test_numeric_packet_queue_attaches_kp_runtime_raw_but_no_truth_upgrade():
data = json.loads(QUEUE.read_text(encoding="utf-8"))
assert data["scope"] == "kp_muhurta_shadbala_numeric_packet_queue"
assert data["claim_status"] == "open_queue"
assert data["production_tuning_allowed"] is False
assert data["truth_matrix_allowed"] is False
assert data["runtime_observations"][0]["raw_hash"] == "2e7a6b17eb2965a60846f625f6bd8bc03555216d6225983647bcbfa23d0e345b"
assert all(row["numeric_oracle_status"].startswith("blocked_") for row in data["packet_rows"])
def test_numeric_packet_queue_covers_requested_topics():
data = json.loads(QUEUE.read_text(encoding="utf-8"))
topics = {row["topic"] for row in data["packet_rows"]}
assert {"KP cusp", "KP sub-lord table", "Tarabala/Chandrabala", "Rahu Kalam", "Shadbala Virupa"} <= topics
for row in data["packet_rows"]:
assert "raw_capture_hash" in row["required_fields"] or row["topic"] == "KP sub-lord table"
def test_evidence_index_registers_packet_queue():
index = json.loads(INDEX.read_text(encoding="utf-8"))
packets = {row["packet_id"]: row for row in index["packets"]}
assert packets["kp_muhurta_shadbala_numeric_packet_queue"]["claim_status"] == "open_queue"