Files
Jyotisha/scripts/pyjhora_traditional_branch_oracle_boundary.py
2026-07-23 12:39:10 +08:00

140 lines
5.9 KiB
Python

#!/usr/bin/env python3
"""Build a field-level boundary matrix for PyJHora traditional-branch reuse."""
from __future__ import annotations
import json
from pathlib import Path
from typing import Any
ROOT = Path(__file__).resolve().parents[1]
OUT = ROOT / "references/oracle/pyjhora_traditional_branch_oracle_boundary_2026_07_23.json"
MATRICES: dict[str, list[dict[str, Any]]] = {
"tajika": [
{
"field": "varsha_pravesha_datetime",
"local_repo_can_calculate": True,
"pyjhora_can_observe": True,
"jyotishganit_or_vedicastro_can_reference": False,
"public_worked_example_status": "partial_source_candidates_only",
"commercial_output_allowed": "boundary_only",
},
{
"field": "muntha",
"local_repo_can_calculate": True,
"pyjhora_can_observe": True,
"jyotishganit_or_vedicastro_can_reference": False,
"public_worked_example_status": "not_closed",
"commercial_output_allowed": "allowed_with_variant_boundary",
},
{
"field": "saham_day_night_formulas",
"local_repo_can_calculate": True,
"pyjhora_can_observe": True,
"jyotishganit_or_vedicastro_can_reference": False,
"public_worked_example_status": "formula_reference_not_numeric_oracle",
"commercial_output_allowed": "allowed_as_reference_not_verdict",
},
{
"field": "tajika_yogas",
"local_repo_can_calculate": "partial",
"pyjhora_can_observe": True,
"jyotishganit_or_vedicastro_can_reference": False,
"public_worked_example_status": "blocked_named_yoga_examples_missing",
"commercial_output_allowed": "blocked_as_final_prediction",
},
],
"kp_exact_cusp": [
{
"field": "12_house_cusp_longitudes",
"local_repo_can_calculate": "partial",
"pyjhora_can_observe": "unknown_or_partial",
"jyotishganit_or_vedicastro_can_reference": "VedicAstro_reference_candidate",
"public_worked_example_status": "candidate_ezine159_not_full_truth",
"commercial_output_allowed": "boundary_only",
},
{
"field": "star_lord_sub_lord",
"local_repo_can_calculate": True,
"pyjhora_can_observe": "unknown_or_partial",
"jyotishganit_or_vedicastro_can_reference": "VedicAstro_csv_reference",
"public_worked_example_status": "partial_fixture_reference",
"commercial_output_allowed": "allowed_with_reference_boundary",
},
{
"field": "significator_workflow",
"local_repo_can_calculate": "workflow_gate_only",
"pyjhora_can_observe": "not_primary",
"jyotishganit_or_vedicastro_can_reference": "public_workflow_reference_only",
"public_worked_example_status": "no_complete_event_outcome_oracle",
"commercial_output_allowed": "explain_method_not_claim_event_truth",
},
],
"advanced_ashtakavarga": [
{
"field": "bav_sav_totals",
"local_repo_can_calculate": True,
"pyjhora_can_observe": True,
"jyotishganit_or_vedicastro_can_reference": "jyotishganit_candidate",
"public_worked_example_status": "component_variants_not_fully_arbitrated",
"commercial_output_allowed": "allowed_with_component_boundary",
},
{
"field": "prastara_av",
"local_repo_can_calculate": "partial_or_registry",
"pyjhora_can_observe": True,
"jyotishganit_or_vedicastro_can_reference": "not_closed",
"public_worked_example_status": "not_closed",
"commercial_output_allowed": "reference_only",
},
{
"field": "trikona_ekadhipatya_shodhana",
"local_repo_can_calculate": "partial_or_registry",
"pyjhora_can_observe": True,
"jyotishganit_or_vedicastro_can_reference": "not_closed",
"public_worked_example_status": "formula_variant_gap",
"commercial_output_allowed": "boundary_only",
},
{
"field": "transit_kakshya_av_application",
"local_repo_can_calculate": "partial",
"pyjhora_can_observe": True,
"jyotishganit_or_vedicastro_can_reference": "not_closed",
"public_worked_example_status": "real_case_holdout_missing",
"commercial_output_allowed": "blocked_as_precise_timing_truth",
},
],
}
def build() -> dict[str, Any]:
rows = [row for matrix in MATRICES.values() for row in matrix]
return {
"scope": "pyjhora_traditional_branch_oracle_boundary",
"created_at": "2026-07-23",
"claim_status": "observation_boundary_matrix",
"consumer_policy": "sync_matrix_only_do_not_vendor_agpl_implementation",
"license_boundary": "PyJHora/JHora traditional branch is AGPL/reference observation only; commercial repo may sync raw/hash/boundary matrices, not implementation.",
"truth_matrix_allowed": False,
"production_tuning_allowed": False,
"matrices": MATRICES,
"summary": {
"domain_count": len(MATRICES),
"field_count": len(rows),
"commercial_final_truth_allowed_count": 0,
"commercial_blocked_or_boundary_count": len(rows),
},
"boundary": "Use PyJHora as a traditional-technique radar and black-box observation source for Tajika, KP and advanced AV. Do not promote observed agreement to final truth without public worked examples, raw/hash replay and license-safe adapters.",
}
def main() -> int:
data = build()
OUT.write_text(json.dumps(data, ensure_ascii=False, indent=2) + "\n", encoding="utf-8")
print(json.dumps(data, ensure_ascii=False, indent=2))
return 0
if __name__ == "__main__":
raise SystemExit(main())