From 1f94900ebccfc2a91da15c3a6ec76c32821e73f0 Mon Sep 17 00:00:00 2001 From: 732642856 <732642856@qq.com> Date: Sun, 19 Jul 2026 23:12:27 +0800 Subject: [PATCH] feat: sync shadbala component closure ledger --- .../evidence_packet_index_2026_07_19.json | 10 +- ...a_component_closure_ledger_2026_07_19.json | 717 ++++++++++++++++++ scripts/shadbala_component_closure_ledger.py | 105 +++ .../test_shadbala_component_closure_ledger.py | 59 ++ 4 files changed, 890 insertions(+), 1 deletion(-) create mode 100644 references/oracle/shadbala_component_closure_ledger_2026_07_19.json create mode 100644 scripts/shadbala_component_closure_ledger.py create mode 100644 tests/test_shadbala_component_closure_ledger.py diff --git a/references/oracle/evidence_packet_index_2026_07_19.json b/references/oracle/evidence_packet_index_2026_07_19.json index 26fc174c..6a328345 100644 --- a/references/oracle/evidence_packet_index_2026_07_19.json +++ b/references/oracle/evidence_packet_index_2026_07_19.json @@ -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": 63, + "packet_count": 64, "blocked_or_partial_count": 40, "human_review_required_count": 1 }, @@ -513,6 +513,14 @@ "claim_status": "ready_contract", "consumer_policy": "pre_work_required_before_sync", "claim_boundary": "Current whole-machine fragment and OSS reuse guardrail is recorded; no numeric truth or production capability is upgraded by this packet." + }, + { + "packet_id": "shadbala_component_closure_ledger", + "path": "references/oracle/shadbala_component_closure_ledger_2026_07_19.json", + "domain": "shadbala_component_closure", + "claim_status": "partial", + "consumer_policy": "research_to_commercial_contract_only", + "claim_boundary": "Classifies all 42 same-unit Shadbala rows into closed observation, method variant, or open mismatch; does not assert absolute formula truth." } ] } diff --git a/references/oracle/shadbala_component_closure_ledger_2026_07_19.json b/references/oracle/shadbala_component_closure_ledger_2026_07_19.json new file mode 100644 index 00000000..67ee04ae --- /dev/null +++ b/references/oracle/shadbala_component_closure_ledger_2026_07_19.json @@ -0,0 +1,717 @@ +{ + "boundary": "This ledger closes classification work for same-unit rows only. Open rows still require worked examples and formula-variant arbitration.", + "claim_status": "partial", + "created_at": "2026-07-19", + "ledger_hash": "17257e2743d7be49fb58398c2f68ed4b96d766321cf2933f97ac0b83c6fd9995", + "production_tuning_allowed": false, + "rows": [ + { + "canonical_component": "Sthanabala", + "claim_boundary": "Closed means row-level evidence is classified, not that an absolute Shadbala formula truth has been selected.", + "classification": "method_variant", + "closure_state": "closed_as_method_variant", + "component": "sthana", + "jyotishganit_virupa": 153.341, + "local_from_xalen_report_virupa": 217.09, + "normalization_unit": "Virupa", + "planet": "Sun", + "required_next_evidence": [], + "vp_jain_published_virupa": 172.04, + "xalen_virupa": 235.83916197045576 + }, + { + "canonical_component": "Digbala", + "claim_boundary": "Closed means row-level evidence is classified, not that an absolute Shadbala formula truth has been selected.", + "classification": "formula_or_unit_mismatch", + "closure_state": "open_formula_or_unit_mismatch", + "component": "dig", + "jyotishganit_virupa": 29.175, + "local_from_xalen_report_virupa": 24.81, + "normalization_unit": "Virupa", + "planet": "Sun", + "required_next_evidence": [ + "component formula variant source", + "public worked example", + "field-level replay comparison" + ], + "vp_jain_published_virupa": 6.59, + "xalen_virupa": 30.0 + }, + { + "canonical_component": "Kaalabala", + "claim_boundary": "Closed means row-level evidence is classified, not that an absolute Shadbala formula truth has been selected.", + "classification": "formula_or_unit_mismatch", + "closure_state": "open_formula_or_unit_mismatch", + "component": "kala", + "jyotishganit_virupa": 148.893, + "local_from_xalen_report_virupa": 140.98, + "normalization_unit": "Virupa", + "planet": "Sun", + "required_next_evidence": [ + "component formula variant source", + "public worked example", + "field-level replay comparison" + ], + "vp_jain_published_virupa": 81.8, + "xalen_virupa": 133.08365500051036 + }, + { + "canonical_component": "Cheshtabala", + "claim_boundary": "Closed means row-level evidence is classified, not that an absolute Shadbala formula truth has been selected.", + "classification": "method_variant", + "closure_state": "closed_as_method_variant", + "component": "chesta", + "jyotishganit_virupa": 37.06, + "local_from_xalen_report_virupa": 36.0, + "normalization_unit": "Virupa", + "planet": "Sun", + "required_next_evidence": [], + "vp_jain_published_virupa": 0.0, + "xalen_virupa": 30.0 + }, + { + "canonical_component": "Naisargikabala", + "claim_boundary": "Closed means row-level evidence is classified, not that an absolute Shadbala formula truth has been selected.", + "classification": "within_1_virupa_observation", + "closure_state": "closed_observation_same_unit", + "component": "naisargika", + "jyotishganit_virupa": 60.0, + "local_from_xalen_report_virupa": 60.0, + "normalization_unit": "Virupa", + "planet": "Sun", + "required_next_evidence": [], + "vp_jain_published_virupa": 60.0, + "xalen_virupa": 60.0 + }, + { + "canonical_component": "Drikbala", + "claim_boundary": "Closed means row-level evidence is classified, not that an absolute Shadbala formula truth has been selected.", + "classification": "formula_or_unit_mismatch", + "closure_state": "open_formula_or_unit_mismatch", + "component": "drik", + "jyotishganit_virupa": -6.462, + "local_from_xalen_report_virupa": 1.74, + "normalization_unit": "Virupa", + "planet": "Sun", + "required_next_evidence": [ + "component formula variant source", + "public worked example", + "field-level replay comparison" + ], + "vp_jain_published_virupa": 11.24, + "xalen_virupa": 3.75 + }, + { + "canonical_component": "Sthanabala", + "claim_boundary": "Closed means row-level evidence is classified, not that an absolute Shadbala formula truth has been selected.", + "classification": "formula_or_unit_mismatch", + "closure_state": "open_formula_or_unit_mismatch", + "component": "sthana", + "jyotishganit_virupa": 141.341, + "local_from_xalen_report_virupa": 246.34, + "normalization_unit": "Virupa", + "planet": "Moon", + "required_next_evidence": [ + "component formula variant source", + "public worked example", + "field-level replay comparison" + ], + "vp_jain_published_virupa": 77.17, + "xalen_virupa": 193.83884030327874 + }, + { + "canonical_component": "Digbala", + "claim_boundary": "Closed means row-level evidence is classified, not that an absolute Shadbala formula truth has been selected.", + "classification": "formula_or_unit_mismatch", + "closure_state": "open_formula_or_unit_mismatch", + "component": "dig", + "jyotishganit_virupa": 20.159, + "local_from_xalen_report_virupa": 95.48, + "normalization_unit": "Virupa", + "planet": "Moon", + "required_next_evidence": [ + "component formula variant source", + "public worked example", + "field-level replay comparison" + ], + "vp_jain_published_virupa": 12.22, + "xalen_virupa": 20.000000000000004 + }, + { + "canonical_component": "Kaalabala", + "claim_boundary": "Closed means row-level evidence is classified, not that an absolute Shadbala formula truth has been selected.", + "classification": "formula_or_unit_mismatch", + "closure_state": "open_formula_or_unit_mismatch", + "component": "kala", + "jyotishganit_virupa": 183.112, + "local_from_xalen_report_virupa": 149.61, + "normalization_unit": "Virupa", + "planet": "Moon", + "required_next_evidence": [ + "component formula variant source", + "public worked example", + "field-level replay comparison" + ], + "vp_jain_published_virupa": 205.85, + "xalen_virupa": 106.91634499948964 + }, + { + "canonical_component": "Cheshtabala", + "claim_boundary": "Closed means row-level evidence is classified, not that an absolute Shadbala formula truth has been selected.", + "classification": "method_variant", + "closure_state": "closed_as_method_variant", + "component": "chesta", + "jyotishganit_virupa": 10.667, + "local_from_xalen_report_virupa": 21.34, + "normalization_unit": "Virupa", + "planet": "Moon", + "required_next_evidence": [], + "vp_jain_published_virupa": 0.0, + "xalen_virupa": 30.0 + }, + { + "canonical_component": "Naisargikabala", + "claim_boundary": "Closed means row-level evidence is classified, not that an absolute Shadbala formula truth has been selected.", + "classification": "within_1_virupa_observation", + "closure_state": "closed_observation_same_unit", + "component": "naisargika", + "jyotishganit_virupa": 51.43, + "local_from_xalen_report_virupa": 51.43, + "normalization_unit": "Virupa", + "planet": "Moon", + "required_next_evidence": [], + "vp_jain_published_virupa": 51.43, + "xalen_virupa": 51.43 + }, + { + "canonical_component": "Drikbala", + "claim_boundary": "Closed means row-level evidence is classified, not that an absolute Shadbala formula truth has been selected.", + "classification": "formula_or_unit_mismatch", + "closure_state": "open_formula_or_unit_mismatch", + "component": "drik", + "jyotishganit_virupa": 13.946, + "local_from_xalen_report_virupa": 20.06, + "normalization_unit": "Virupa", + "planet": "Moon", + "required_next_evidence": [ + "component formula variant source", + "public worked example", + "field-level replay comparison" + ], + "vp_jain_published_virupa": -0.32, + "xalen_virupa": 18.75 + }, + { + "canonical_component": "Sthanabala", + "claim_boundary": "Closed means row-level evidence is classified, not that an absolute Shadbala formula truth has been selected.", + "classification": "formula_or_unit_mismatch", + "closure_state": "open_formula_or_unit_mismatch", + "component": "sthana", + "jyotishganit_virupa": 232.378, + "local_from_xalen_report_virupa": 198.63, + "normalization_unit": "Virupa", + "planet": "Mars", + "required_next_evidence": [ + "component formula variant source", + "public worked example", + "field-level replay comparison" + ], + "vp_jain_published_virupa": 184.94, + "xalen_virupa": 213.63005915206912 + }, + { + "canonical_component": "Digbala", + "claim_boundary": "Closed means row-level evidence is classified, not that an absolute Shadbala formula truth has been selected.", + "classification": "formula_or_unit_mismatch", + "closure_state": "open_formula_or_unit_mismatch", + "component": "dig", + "jyotishganit_virupa": 46.955, + "local_from_xalen_report_virupa": 77.41, + "normalization_unit": "Virupa", + "planet": "Mars", + "required_next_evidence": [ + "component formula variant source", + "public worked example", + "field-level replay comparison" + ], + "vp_jain_published_virupa": 20.99, + "xalen_virupa": 50.0 + }, + { + "canonical_component": "Kaalabala", + "claim_boundary": "Closed means row-level evidence is classified, not that an absolute Shadbala formula truth has been selected.", + "classification": "formula_or_unit_mismatch", + "closure_state": "open_formula_or_unit_mismatch", + "component": "kala", + "jyotishganit_virupa": 106.407, + "local_from_xalen_report_virupa": 127.92, + "normalization_unit": "Virupa", + "planet": "Mars", + "required_next_evidence": [ + "component formula variant source", + "public worked example", + "field-level replay comparison" + ], + "vp_jain_published_virupa": 158.08, + "xalen_virupa": 85.58365500051036 + }, + { + "canonical_component": "Cheshtabala", + "claim_boundary": "Closed means row-level evidence is classified, not that an absolute Shadbala formula truth has been selected.", + "classification": "method_variant", + "closure_state": "closed_as_method_variant", + "component": "chesta", + "jyotishganit_virupa": 22.864, + "local_from_xalen_report_virupa": 21.6, + "normalization_unit": "Virupa", + "planet": "Mars", + "required_next_evidence": [], + "vp_jain_published_virupa": 20.93, + "xalen_virupa": 15.0 + }, + { + "canonical_component": "Naisargikabala", + "claim_boundary": "Closed means row-level evidence is classified, not that an absolute Shadbala formula truth has been selected.", + "classification": "within_1_virupa_observation", + "closure_state": "closed_observation_same_unit", + "component": "naisargika", + "jyotishganit_virupa": 17.14, + "local_from_xalen_report_virupa": 17.14, + "normalization_unit": "Virupa", + "planet": "Mars", + "required_next_evidence": [], + "vp_jain_published_virupa": 17.14, + "xalen_virupa": 17.14 + }, + { + "canonical_component": "Drikbala", + "claim_boundary": "Closed means row-level evidence is classified, not that an absolute Shadbala formula truth has been selected.", + "classification": "formula_or_unit_mismatch", + "closure_state": "open_formula_or_unit_mismatch", + "component": "drik", + "jyotishganit_virupa": 12.483, + "local_from_xalen_report_virupa": 13.49, + "normalization_unit": "Virupa", + "planet": "Mars", + "required_next_evidence": [ + "component formula variant source", + "public worked example", + "field-level replay comparison" + ], + "vp_jain_published_virupa": -5.1, + "xalen_virupa": 15.0 + }, + { + "canonical_component": "Sthanabala", + "claim_boundary": "Closed means row-level evidence is classified, not that an absolute Shadbala formula truth has been selected.", + "classification": "method_variant", + "closure_state": "closed_as_method_variant", + "component": "sthana", + "jyotishganit_virupa": 111.704, + "local_from_xalen_report_virupa": 167.96, + "normalization_unit": "Virupa", + "planet": "Mercury", + "required_next_evidence": [], + "vp_jain_published_virupa": 238.16, + "xalen_virupa": 134.20630911404785 + }, + { + "canonical_component": "Digbala", + "claim_boundary": "Closed means row-level evidence is classified, not that an absolute Shadbala formula truth has been selected.", + "classification": "formula_or_unit_mismatch", + "closure_state": "open_formula_or_unit_mismatch", + "component": "dig", + "jyotishganit_virupa": 7.954, + "local_from_xalen_report_virupa": 12.64, + "normalization_unit": "Virupa", + "planet": "Mercury", + "required_next_evidence": [ + "component formula variant source", + "public worked example", + "field-level replay comparison" + ], + "vp_jain_published_virupa": 31.97, + "xalen_virupa": 9.999999999999998 + }, + { + "canonical_component": "Kaalabala", + "claim_boundary": "Closed means row-level evidence is classified, not that an absolute Shadbala formula truth has been selected.", + "classification": "formula_or_unit_mismatch", + "closure_state": "open_formula_or_unit_mismatch", + "component": "kala", + "jyotishganit_virupa": 72.089, + "local_from_xalen_report_virupa": 121.79, + "normalization_unit": "Virupa", + "planet": "Mercury", + "required_next_evidence": [ + "component formula variant source", + "public worked example", + "field-level replay comparison" + ], + "vp_jain_published_virupa": 210.68, + "xalen_virupa": 85.66634499948964 + }, + { + "canonical_component": "Cheshtabala", + "claim_boundary": "Closed means row-level evidence is classified, not that an absolute Shadbala formula truth has been selected.", + "classification": "method_variant", + "closure_state": "closed_as_method_variant", + "component": "chesta", + "jyotishganit_virupa": 35.368, + "local_from_xalen_report_virupa": 47.8, + "normalization_unit": "Virupa", + "planet": "Mercury", + "required_next_evidence": [], + "vp_jain_published_virupa": 28.76, + "xalen_virupa": 60.0 + }, + { + "canonical_component": "Naisargikabala", + "claim_boundary": "Closed means row-level evidence is classified, not that an absolute Shadbala formula truth has been selected.", + "classification": "within_1_virupa_observation", + "closure_state": "closed_observation_same_unit", + "component": "naisargika", + "jyotishganit_virupa": 25.71, + "local_from_xalen_report_virupa": 25.71, + "normalization_unit": "Virupa", + "planet": "Mercury", + "required_next_evidence": [], + "vp_jain_published_virupa": 25.71, + "xalen_virupa": 25.71 + }, + { + "canonical_component": "Drikbala", + "claim_boundary": "Closed means row-level evidence is classified, not that an absolute Shadbala formula truth has been selected.", + "classification": "formula_or_unit_mismatch", + "closure_state": "open_formula_or_unit_mismatch", + "component": "drik", + "jyotishganit_virupa": -10.985, + "local_from_xalen_report_virupa": -10.62, + "normalization_unit": "Virupa", + "planet": "Mercury", + "required_next_evidence": [ + "component formula variant source", + "public worked example", + "field-level replay comparison" + ], + "vp_jain_published_virupa": 4.29, + "xalen_virupa": 0.0 + }, + { + "canonical_component": "Sthanabala", + "claim_boundary": "Closed means row-level evidence is classified, not that an absolute Shadbala formula truth has been selected.", + "classification": "formula_or_unit_mismatch", + "closure_state": "open_formula_or_unit_mismatch", + "component": "sthana", + "jyotishganit_virupa": 226.178, + "local_from_xalen_report_virupa": 201.81, + "normalization_unit": "Virupa", + "planet": "Jupiter", + "required_next_evidence": [ + "component formula variant source", + "public worked example", + "field-level replay comparison" + ], + "vp_jain_published_virupa": 152.98, + "xalen_virupa": 211.17574521147395 + }, + { + "canonical_component": "Digbala", + "claim_boundary": "Closed means row-level evidence is classified, not that an absolute Shadbala formula truth has been selected.", + "classification": "formula_or_unit_mismatch", + "closure_state": "open_formula_or_unit_mismatch", + "component": "dig", + "jyotishganit_virupa": 44.095, + "local_from_xalen_report_virupa": 80.59, + "normalization_unit": "Virupa", + "planet": "Jupiter", + "required_next_evidence": [ + "component formula variant source", + "public worked example", + "field-level replay comparison" + ], + "vp_jain_published_virupa": 31.99, + "xalen_virupa": 40.00000000000001 + }, + { + "canonical_component": "Kaalabala", + "claim_boundary": "Closed means row-level evidence is classified, not that an absolute Shadbala formula truth has been selected.", + "classification": "formula_or_unit_mismatch", + "closure_state": "open_formula_or_unit_mismatch", + "component": "kala", + "jyotishganit_virupa": 250.984, + "local_from_xalen_report_virupa": 199.32, + "normalization_unit": "Virupa", + "planet": "Jupiter", + "required_next_evidence": [ + "component formula variant source", + "public worked example", + "field-level replay comparison" + ], + "vp_jain_published_virupa": 144.22, + "xalen_virupa": 94.41634499948964 + }, + { + "canonical_component": "Cheshtabala", + "claim_boundary": "Closed means row-level evidence is classified, not that an absolute Shadbala formula truth has been selected.", + "classification": "method_variant", + "closure_state": "closed_as_method_variant", + "component": "chesta", + "jyotishganit_virupa": 36.424, + "local_from_xalen_report_virupa": 46.49, + "normalization_unit": "Virupa", + "planet": "Jupiter", + "required_next_evidence": [], + "vp_jain_published_virupa": 8.43, + "xalen_virupa": 60.0 + }, + { + "canonical_component": "Naisargikabala", + "claim_boundary": "Closed means row-level evidence is classified, not that an absolute Shadbala formula truth has been selected.", + "classification": "within_1_virupa_observation", + "closure_state": "closed_observation_same_unit", + "component": "naisargika", + "jyotishganit_virupa": 34.29, + "local_from_xalen_report_virupa": 34.29, + "normalization_unit": "Virupa", + "planet": "Jupiter", + "required_next_evidence": [], + "vp_jain_published_virupa": 34.29, + "xalen_virupa": 34.29 + }, + { + "canonical_component": "Drikbala", + "claim_boundary": "Closed means row-level evidence is classified, not that an absolute Shadbala formula truth has been selected.", + "classification": "formula_or_unit_mismatch", + "closure_state": "open_formula_or_unit_mismatch", + "component": "drik", + "jyotishganit_virupa": 4.072, + "local_from_xalen_report_virupa": 6.9, + "normalization_unit": "Virupa", + "planet": "Jupiter", + "required_next_evidence": [ + "component formula variant source", + "public worked example", + "field-level replay comparison" + ], + "vp_jain_published_virupa": 4.32, + "xalen_virupa": -3.75 + }, + { + "canonical_component": "Sthanabala", + "claim_boundary": "Closed means row-level evidence is classified, not that an absolute Shadbala formula truth has been selected.", + "classification": "formula_or_unit_mismatch", + "closure_state": "open_formula_or_unit_mismatch", + "component": "sthana", + "jyotishganit_virupa": 112.816, + "local_from_xalen_report_virupa": 154.06, + "normalization_unit": "Virupa", + "planet": "Venus", + "required_next_evidence": [ + "component formula variant source", + "public worked example", + "field-level replay comparison" + ], + "vp_jain_published_virupa": 198.08, + "xalen_virupa": 165.31374287471633 + }, + { + "canonical_component": "Digbala", + "claim_boundary": "Closed means row-level evidence is classified, not that an absolute Shadbala formula truth has been selected.", + "classification": "formula_or_unit_mismatch", + "closure_state": "open_formula_or_unit_mismatch", + "component": "dig", + "jyotishganit_virupa": 45.684, + "local_from_xalen_report_virupa": 69.95, + "normalization_unit": "Virupa", + "planet": "Venus", + "required_next_evidence": [ + "component formula variant source", + "public worked example", + "field-level replay comparison" + ], + "vp_jain_published_virupa": 53.29, + "xalen_virupa": 50.0 + }, + { + "canonical_component": "Kaalabala", + "claim_boundary": "Closed means row-level evidence is classified, not that an absolute Shadbala formula truth has been selected.", + "classification": "formula_or_unit_mismatch", + "closure_state": "open_formula_or_unit_mismatch", + "component": "kala", + "jyotishganit_virupa": 63.186, + "local_from_xalen_report_virupa": 113.45, + "normalization_unit": "Virupa", + "planet": "Venus", + "required_next_evidence": [ + "component formula variant source", + "public worked example", + "field-level replay comparison" + ], + "vp_jain_published_virupa": 135.89, + "xalen_virupa": 109.41634499948964 + }, + { + "canonical_component": "Cheshtabala", + "claim_boundary": "Closed means row-level evidence is classified, not that an absolute Shadbala formula truth has been selected.", + "classification": "formula_or_unit_mismatch", + "closure_state": "open_formula_or_unit_mismatch", + "component": "chesta", + "jyotishganit_virupa": 46.466, + "local_from_xalen_report_virupa": 29.36, + "normalization_unit": "Virupa", + "planet": "Venus", + "required_next_evidence": [ + "component formula variant source", + "public worked example", + "field-level replay comparison" + ], + "vp_jain_published_virupa": 28.18, + "xalen_virupa": 15.0 + }, + { + "canonical_component": "Naisargikabala", + "claim_boundary": "Closed means row-level evidence is classified, not that an absolute Shadbala formula truth has been selected.", + "classification": "within_1_virupa_observation", + "closure_state": "closed_observation_same_unit", + "component": "naisargika", + "jyotishganit_virupa": 42.86, + "local_from_xalen_report_virupa": 42.86, + "normalization_unit": "Virupa", + "planet": "Venus", + "required_next_evidence": [], + "vp_jain_published_virupa": 42.86, + "xalen_virupa": 42.86 + }, + { + "canonical_component": "Drikbala", + "claim_boundary": "Closed means row-level evidence is classified, not that an absolute Shadbala formula truth has been selected.", + "classification": "formula_or_unit_mismatch", + "closure_state": "open_formula_or_unit_mismatch", + "component": "drik", + "jyotishganit_virupa": -4.511, + "local_from_xalen_report_virupa": -2.75, + "normalization_unit": "Virupa", + "planet": "Venus", + "required_next_evidence": [ + "component formula variant source", + "public worked example", + "field-level replay comparison" + ], + "vp_jain_published_virupa": -2.86, + "xalen_virupa": 0.0 + }, + { + "canonical_component": "Sthanabala", + "claim_boundary": "Closed means row-level evidence is classified, not that an absolute Shadbala formula truth has been selected.", + "classification": "formula_or_unit_mismatch", + "closure_state": "open_formula_or_unit_mismatch", + "component": "sthana", + "jyotishganit_virupa": 151.104, + "local_from_xalen_report_virupa": 218.61, + "normalization_unit": "Virupa", + "planet": "Saturn", + "required_next_evidence": [ + "component formula variant source", + "public worked example", + "field-level replay comparison" + ], + "vp_jain_published_virupa": 206.31, + "xalen_virupa": 199.85598657098197 + }, + { + "canonical_component": "Digbala", + "claim_boundary": "Closed means row-level evidence is classified, not that an absolute Shadbala formula truth has been selected.", + "classification": "formula_or_unit_mismatch", + "closure_state": "open_formula_or_unit_mismatch", + "component": "dig", + "jyotishganit_virupa": 24.313, + "local_from_xalen_report_virupa": 19.63, + "normalization_unit": "Virupa", + "planet": "Saturn", + "required_next_evidence": [ + "component formula variant source", + "public worked example", + "field-level replay comparison" + ], + "vp_jain_published_virupa": 26.67, + "xalen_virupa": 20.000000000000004 + }, + { + "canonical_component": "Kaalabala", + "claim_boundary": "Closed means row-level evidence is classified, not that an absolute Shadbala formula truth has been selected.", + "classification": "formula_or_unit_mismatch", + "closure_state": "open_formula_or_unit_mismatch", + "component": "kala", + "jyotishganit_virupa": 71.929, + "local_from_xalen_report_virupa": 136.76, + "normalization_unit": "Virupa", + "planet": "Saturn", + "required_next_evidence": [ + "component formula variant source", + "public worked example", + "field-level replay comparison" + ], + "vp_jain_published_virupa": 139.56, + "xalen_virupa": 85.58365500051036 + }, + { + "canonical_component": "Cheshtabala", + "claim_boundary": "Closed means row-level evidence is classified, not that an absolute Shadbala formula truth has been selected.", + "classification": "method_variant", + "closure_state": "closed_as_method_variant", + "component": "chesta", + "jyotishganit_virupa": 58.137, + "local_from_xalen_report_virupa": 36.99, + "normalization_unit": "Virupa", + "planet": "Saturn", + "required_next_evidence": [], + "vp_jain_published_virupa": 5.05, + "xalen_virupa": 30.0 + }, + { + "canonical_component": "Naisargikabala", + "claim_boundary": "Closed means row-level evidence is classified, not that an absolute Shadbala formula truth has been selected.", + "classification": "within_1_virupa_observation", + "closure_state": "closed_observation_same_unit", + "component": "naisargika", + "jyotishganit_virupa": 8.57, + "local_from_xalen_report_virupa": 8.57, + "normalization_unit": "Virupa", + "planet": "Saturn", + "required_next_evidence": [], + "vp_jain_published_virupa": 8.57, + "xalen_virupa": 8.57 + }, + { + "canonical_component": "Drikbala", + "claim_boundary": "Closed means row-level evidence is classified, not that an absolute Shadbala formula truth has been selected.", + "classification": "formula_or_unit_mismatch", + "closure_state": "open_formula_or_unit_mismatch", + "component": "drik", + "jyotishganit_virupa": 8.06, + "local_from_xalen_report_virupa": 9.49, + "normalization_unit": "Virupa", + "planet": "Saturn", + "required_next_evidence": [ + "component formula variant source", + "public worked example", + "field-level replay comparison" + ], + "vp_jain_published_virupa": 5.82, + "xalen_virupa": 11.25 + } + ], + "scope": "shadbala_component_closure_ledger", + "source_matrix": "references/oracle/shadbala_same_unit_normalizer_2026_07_19.json", + "source_matrix_hash": "f65cc27d9d35f2ff3fa162956b4e0b79e40a0ab7cbd0e04e069158da4525efff", + "status": "row_closure_ledger_ready", + "summary": { + "closed_as_method_variant_count": 8, + "closed_observation_same_unit_count": 7, + "open_formula_or_unit_mismatch_count": 27, + "open_insufficient_numeric_sources_count": 0, + "row_count": 42 + }, + "truth_matrix_allowed": false +} diff --git a/scripts/shadbala_component_closure_ledger.py b/scripts/shadbala_component_closure_ledger.py new file mode 100644 index 00000000..35dc17d6 --- /dev/null +++ b/scripts/shadbala_component_closure_ledger.py @@ -0,0 +1,105 @@ +#!/usr/bin/env python3 +"""Build a Shadbala component closure ledger from the same-unit matrix. + +This does not change Shadbala math. It only turns existing normalized +local/Xalen/jyotishganit/VP Jain observations into auditable closure states. +""" +from __future__ import annotations + +import hashlib +import json +from pathlib import Path +from typing import Any + + +ROOT = Path(__file__).resolve().parents[1] +SAME_UNIT = ROOT / "references/oracle/shadbala_same_unit_normalizer_2026_07_19.json" + + +def stable_json(data: Any) -> str: + return json.dumps(data, ensure_ascii=False, sort_keys=True, separators=(",", ":"), default=str) + + +def closure_state(classification: str) -> str: + if classification == "within_1_virupa_observation": + return "closed_observation_same_unit" + if classification == "method_variant": + return "closed_as_method_variant" + if classification == "formula_or_unit_mismatch": + return "open_formula_or_unit_mismatch" + return "open_insufficient_numeric_sources" + + +def build() -> dict[str, Any]: + matrix = json.loads(SAME_UNIT.read_text(encoding="utf-8")) + rows = [] + for row in matrix["rows"]: + state = closure_state(row["classification"]) + rows.append( + { + "planet": row["planet"], + "component": row["component"], + "canonical_component": row["canonical_component"], + "classification": row["classification"], + "closure_state": state, + "normalization_unit": row["normalization_unit"], + "jyotishganit_virupa": row["jyotishganit_virupa"], + "xalen_virupa": row["xalen_virupa"], + "local_from_xalen_report_virupa": row["local_from_xalen_report_virupa"], + "vp_jain_published_virupa": row["vp_jain_published_virupa"], + "required_next_evidence": ( + [] + if state in {"closed_observation_same_unit", "closed_as_method_variant"} + else [ + "component formula variant source", + "public worked example", + "field-level replay comparison", + ] + ), + "claim_boundary": ( + "Closed means row-level evidence is classified, not that an " + "absolute Shadbala formula truth has been selected." + ), + } + ) + summary = { + "row_count": len(rows), + "closed_observation_same_unit_count": sum( + 1 for row in rows if row["closure_state"] == "closed_observation_same_unit" + ), + "closed_as_method_variant_count": sum( + 1 for row in rows if row["closure_state"] == "closed_as_method_variant" + ), + "open_formula_or_unit_mismatch_count": sum( + 1 for row in rows if row["closure_state"] == "open_formula_or_unit_mismatch" + ), + "open_insufficient_numeric_sources_count": sum( + 1 for row in rows if row["closure_state"] == "open_insufficient_numeric_sources" + ), + } + return { + "scope": "shadbala_component_closure_ledger", + "created_at": "2026-07-19", + "status": "row_closure_ledger_ready", + "claim_status": "partial", + "production_tuning_allowed": False, + "truth_matrix_allowed": False, + "source_matrix": str(SAME_UNIT.relative_to(ROOT)), + "source_matrix_hash": matrix["matrix_hash"], + "summary": summary, + "ledger_hash": hashlib.sha256(stable_json(rows).encode("utf-8")).hexdigest(), + "rows": rows, + "boundary": ( + "This ledger closes classification work for same-unit rows only. " + "Open rows still require worked examples and formula-variant arbitration." + ), + } + + +def main() -> int: + print(json.dumps(build(), ensure_ascii=False, indent=2, sort_keys=True)) + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/tests/test_shadbala_component_closure_ledger.py b/tests/test_shadbala_component_closure_ledger.py new file mode 100644 index 00000000..3a4a8669 --- /dev/null +++ b/tests/test_shadbala_component_closure_ledger.py @@ -0,0 +1,59 @@ +import json +import subprocess +from pathlib import Path + + +ROOT = Path(__file__).resolve().parents[1] +ARTIFACT = ROOT / "references/oracle/shadbala_component_closure_ledger_2026_07_19.json" +INDEX = ROOT / "references/oracle/evidence_packet_index_2026_07_19.json" + + +def test_closure_ledger_builds_from_same_unit_matrix(): + data = json.loads( + subprocess.check_output( + ["python3", "scripts/shadbala_component_closure_ledger.py"], + cwd=ROOT, + text=True, + ) + ) + assert data["scope"] == "shadbala_component_closure_ledger" + assert data["claim_status"] == "partial" + assert data["truth_matrix_allowed"] is False + assert data["summary"]["row_count"] == 42 + assert data["source_matrix_hash"] + assert data["ledger_hash"] + + +def test_closure_ledger_classifies_every_row_without_truth_upgrade(): + data = json.loads(ARTIFACT.read_text(encoding="utf-8")) + summary = data["summary"] + assert summary["closed_observation_same_unit_count"] == 7 + assert summary["closed_as_method_variant_count"] == 8 + assert summary["open_formula_or_unit_mismatch_count"] == 27 + assert summary["open_insufficient_numeric_sources_count"] == 0 + assert ( + summary["closed_observation_same_unit_count"] + + summary["closed_as_method_variant_count"] + + summary["open_formula_or_unit_mismatch_count"] + + summary["open_insufficient_numeric_sources_count"] + ) == 42 + assert "does not assert absolute formula truth" not in data["boundary"] + assert "worked examples" in data["boundary"] + + +def test_open_rows_keep_next_evidence_requirements(): + data = json.loads(ARTIFACT.read_text(encoding="utf-8")) + open_rows = [row for row in data["rows"] if row["closure_state"].startswith("open_")] + closed_rows = [row for row in data["rows"] if row["closure_state"].startswith("closed_")] + assert open_rows + assert closed_rows + assert all(row["required_next_evidence"] for row in open_rows) + assert all(row["required_next_evidence"] == [] for row in closed_rows) + + +def test_evidence_index_registers_closure_ledger(): + packets = { + row["packet_id"]: row + for row in json.loads(INDEX.read_text(encoding="utf-8"))["packets"] + } + assert packets["shadbala_component_closure_ledger"]["claim_status"] == "partial"