diff --git a/references/oracle/artifacts/pyjhora_synthetic_north_china_shadbala_raman_stdout_20260722.txt b/references/oracle/artifacts/pyjhora_synthetic_north_china_shadbala_raman_stdout_20260722.txt new file mode 100644 index 00000000..ef0dfc42 --- /dev/null +++ b/references/oracle/artifacts/pyjhora_synthetic_north_china_shadbala_raman_stdout_20260722.txt @@ -0,0 +1,5 @@ +SOURCE_ENV installed jhora black-box import; AGPL implementation not copied +CAPTURE_DATE 2026-07-22 +PENDING_PACKET references/oracle/artifacts/pending_packets/external_template_synthetic_north_china_shadbala_raman_pyjhora_20260627.json +NOTE Replays declared packet coordinates and Handan candidate coordinates because existing packet metadata conflicts with case naming/history. +REPLAY_JSON [{"ayanamsa_value": 22.131425683162263, "case": {"day": 1, "hour": 12, "label": "declared_packet_coordinates", "lat": 37.7749, "lon": -122.4194, "minute": 0, "month": 1, "second": 0, "tz": 8, "year": 1980}, "chesta_legacy": {"error": "'dict' object has no attribute 'index'", "error_type": "AttributeError", "status": "error"}, "chesta_new": [0, 0, 45.01, 7.88, 41.84, 21.77, 36.62], "component_rupa": {"Jupiter": {"chesta": 0.6975, "dig": 0.8743, "drik": 0.0903, "kala": 4.1237, "naisargika": 0.5715, "sthana": 3.5732, "total_rupa": 9.9305}, "Mars": {"chesta": 0.7487, "dig": 0.3108, "drik": 0.1142, "kala": 0.675, "naisargika": 0.2857, "sthana": 2.9763, "total_rupa": 5.1107}, "Mercury": {"chesta": 0.1285, "dig": 0.2742, "drik": -0.0113, "kala": 2.1688, "naisargika": 0.4285, "sthana": 2.4245, "total_rupa": 5.4132}, "Moon": {"chesta": 0.0, "dig": 0.2522, "drik": -0.361, "kala": 3.563, "naisargika": 0.8572, "sthana": 2.3945, "total_rupa": 6.7058}, "Saturn": {"chesta": 0.6103, "dig": 0.219, "drik": 0.1852, "kala": 1.0435, "naisargika": 0.1428, "sthana": 2.9992, "total_rupa": 5.2}, "Sun": {"chesta": 0.0, "dig": 0.333, "drik": -0.0113, "kala": 1.2862, "naisargika": 1.0, "sthana": 1.689, "total_rupa": 4.2968}, "Venus": {"chesta": 0.3622, "dig": 1.5092, "drik": 0.0598, "kala": 2.5625, "naisargika": 0.7143, "sthana": 3.2498, "total_rupa": 8.4578}}, "julian_day": 2444240.0, "raw_virupa": [[101.34, 143.67, 178.58, 145.47, 214.39, 194.99, 179.95], [77.17, 213.78, 40.5, 130.13, 247.42, 153.75, 62.61], [19.98, 15.13, 18.65, 16.45, 52.46, 90.55, 13.14], [0, 0, 44.92, 7.71, 41.85, 21.73, 36.62], [60.0, 51.43, 17.14, 25.71, 34.29, 42.86, 8.57], [-0.68, -21.66, 6.85, -0.68, 5.42, 3.59, 11.11], [257.81, 402.35, 306.64, 324.79, 595.83, 507.47, 312.0], [4.3, 6.71, 5.11, 5.41, 9.93, 8.46, 5.2], [0.86, 1.12, 1.02, 0.77, 1.53, 1.54, 1.04]]}, {"ayanamsa_value": 22.131425683162263, "case": {"day": 1, "hour": 12, "label": "handan_candidate_coordinates", "lat": 36.6, "lon": 114.5, "minute": 0, "month": 1, "second": 0, "tz": 8, "year": 1980}, "chesta_legacy": {"error": "'dict' object has no attribute 'index'", "error_type": "AttributeError", "status": "error"}, "chesta_new": [0, 0, 44.85, 8.67, 41.63, 21.52, 36.41], "component_rupa": {"Jupiter": {"chesta": 0.6942, "dig": 0.15, "drik": 0.0903, "kala": 3.7998, "naisargika": 0.5715, "sthana": 3.3232, "total_rupa": 8.629}, "Mars": {"chesta": 0.7592, "dig": 0.3883, "drik": 0.1142, "kala": 1.7488, "naisargika": 0.2857, "sthana": 2.7263, "total_rupa": 6.0225}, "Mercury": {"chesta": 0.1417, "dig": 0.4502, "drik": -0.0113, "kala": 2.1688, "naisargika": 0.4285, "sthana": 3.1745, "total_rupa": 6.3523}, "Moon": {"chesta": 0.0, "dig": 1.0487, "drik": -0.361, "kala": 2.129, "naisargika": 0.8572, "sthana": 3.1445, "total_rupa": 6.8183}, "Saturn": {"chesta": 0.6067, "dig": 1.0567, "drik": 0.1852, "kala": 1.3595, "naisargika": 0.1428, "sthana": 3.7492, "total_rupa": 7.1}, "Sun": {"chesta": 0.0, "dig": 1.0322, "drik": -0.0113, "kala": 1.9702, "naisargika": 1.0, "sthana": 2.439, "total_rupa": 6.43}, "Venus": {"chesta": 0.3582, "dig": 0.2083, "drik": 0.0598, "kala": 2.2465, "naisargika": 0.7143, "sthana": 2.7498, "total_rupa": 6.337}}, "julian_day": 2444240.0, "raw_virupa": [[146.34, 188.67, 163.58, 190.47, 199.39, 164.99, 224.95], [118.21, 127.74, 104.93, 130.13, 227.99, 134.79, 81.57], [61.93, 62.92, 23.3, 27.01, 9.0, 12.5, 63.4], [0, 0, 45.55, 8.5, 41.65, 21.49, 36.4], [60.0, 51.43, 17.14, 25.71, 34.29, 42.86, 8.57], [-0.68, -21.66, 6.85, -0.68, 5.42, 3.59, 11.11], [385.8, 409.1, 361.35, 381.14, 517.74, 380.22, 426.0], [6.43, 6.82, 6.02, 6.35, 8.63, 6.34, 7.1], [1.29, 1.14, 1.2, 0.91, 1.33, 1.15, 1.42]]}] diff --git a/references/oracle/dasha_shadbala_oracle_cases.json b/references/oracle/dasha_shadbala_oracle_cases.json index 1c9710c9..078f5e52 100644 --- a/references/oracle/dasha_shadbala_oracle_cases.json +++ b/references/oracle/dasha_shadbala_oracle_cases.json @@ -32,63 +32,63 @@ "shadbala_components": { "Jupiter": { "chesta": 1.2333, - "dig": 3.3218, + "dig": 1.3433, "drik": 0.1148, - "kala": 1.3433, + "kala": 3.3218, "naisargika": 0.5715, "sthana": 3.3633, "total_rupa": 9.948 }, "Mars": { "chesta": 1.643, - "dig": 2.1322, + "dig": 1.2902, "drik": 0.2248, - "kala": 1.2902, + "kala": 2.1322, "naisargika": 0.2857, "sthana": 3.3105, "total_rupa": 8.8864 }, "Mercury": { "chesta": 0.763, - "dig": 2.0297, + "dig": 0.2107, "drik": -0.1772, - "kala": 0.2107, + "kala": 2.0297, "naisargika": 0.4285, "sthana": 2.7993, "total_rupa": 6.054 }, "Moon": { "chesta": 0.0, - "dig": 2.493, + "dig": 1.5913, "drik": 0.3343, - "kala": 1.5913, + "kala": 2.493, "naisargika": 0.8572, "sthana": 4.1057, "total_rupa": 9.3815 }, "Saturn": { "chesta": 0.606, - "dig": 2.2795, + "dig": 0.327, "drik": 0.1582, - "kala": 0.327, + "kala": 2.2795, "naisargika": 0.1428, "sthana": 3.6435, "total_rupa": 7.157 }, "Sun": { "chesta": 0.0, - "dig": 2.3498, + "dig": 0.4135, "drik": 0.029, - "kala": 0.4135, + "kala": 2.3498, "naisargika": 1.0, "sthana": 3.6182, "total_rupa": 7.4105 }, "Venus": { "chesta": 0.518, - "dig": 1.8907, + "dig": 1.1658, "drik": -0.0458, - "kala": 1.1658, + "kala": 1.8907, "naisargika": 0.7143, "sthana": 2.5677, "total_rupa": 6.8107 @@ -136,63 +136,63 @@ "shadbala_components": { "Jupiter": { "chesta": 0.1965, - "dig": 3.161, + "dig": 0.631, "drik": -0.1575, - "kala": 0.631, + "kala": 3.161, "naisargika": 0.5715, "sthana": 3.225, "total_rupa": 7.6275 }, "Mars": { "chesta": 0.0128, - "dig": 2.0753, + "dig": 0.0193, "drik": -0.0493, - "kala": 0.0193, + "kala": 2.0753, "naisargika": 0.2857, "sthana": 2.4897, "total_rupa": 4.8335 }, "Mercury": { "chesta": 0.8185, - "dig": 2.4763, + "dig": 0.3437, "drik": -0.0563, - "kala": 0.3437, + "kala": 2.4763, "naisargika": 0.4285, "sthana": 2.6547, "total_rupa": 6.6654 }, "Moon": { "chesta": 0.0, - "dig": 1.3733, + "dig": 0.245, "drik": -0.2927, - "kala": 0.245, + "kala": 1.3733, "naisargika": 0.8572, "sthana": 1.5518, "total_rupa": 3.7346 }, "Saturn": { "chesta": 0.1935, - "dig": 0.8512, + "dig": 1.6447, "drik": -0.1627, - "kala": 1.6447, + "kala": 0.8512, "naisargika": 0.1428, "sthana": 3.2218, "total_rupa": 5.8913 }, "Sun": { "chesta": 0.0, - "dig": 1.7548, + "dig": 0.0022, "drik": -0.0622, - "kala": 0.0022, + "kala": 1.7548, "naisargika": 1.0, "sthana": 3.1882, "total_rupa": 5.883 }, "Venus": { "chesta": 0.0508, - "dig": 4.6728, + "dig": 0.9833, "drik": -0.0513, - "kala": 0.9833, + "kala": 4.6728, "naisargika": 0.7143, "sthana": 2.1638, "total_rupa": 8.5337 diff --git a/references/oracle/evidence_packet_index_2026_07_19.json b/references/oracle/evidence_packet_index_2026_07_19.json index 8c58e9b6..aec4ff25 100644 --- a/references/oracle/evidence_packet_index_2026_07_19.json +++ b/references/oracle/evidence_packet_index_2026_07_19.json @@ -5,9 +5,9 @@ "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": 142, - "blocked_or_partial_count": 52, - "human_review_required_count": 3 + "packet_count": 162, + "blocked_or_partial_count": 66, + "human_review_required_count": 4 }, "packets": [ { @@ -1225,6 +1225,86 @@ "claim_status": "open_queue", "consumer_policy": "research_observation_only", "claim_boundary": "Prashna/Tajika/Gulika/Saham/Sphuta public source hunt only; candidates do not upgrade numeric oracle claims." + }, + { + "packet_id": "shadbala_dig_source_of_truth_audit_2026_07_22", + "path": "references/oracle/shadbala_dig_source_of_truth_audit_2026_07_22.json", + "domain": "shadbala_component_closure", + "claim_status": "partial", + "consumer_policy": "research_observation_only", + "claim_boundary": "Two externally captured cases compare three Dig Bala models; the current error ranking is diagnostic only and does not select an absolute formula truth." + }, + { + "packet_id": "kp_exact_cusp_public_worked_example_hunt_v2_2026_07_22", + "path": "references/oracle/kp_exact_cusp_public_worked_example_hunt_v2_2026_07_22.json", + "domain": "kp_precision_timing", + "claim_status": "blocked", + "consumer_policy": "research_observation_only", + "claim_boundary": "KP exact cusp remains blocked as an external oracle; runtime/API candidates can support observation sync only." + }, + { + "packet_id": "muhurta_full_scoring_closure_queue_v2_2026_07_22", + "path": "references/oracle/muhurta_full_scoring_closure_queue_v2_2026_07_22.json", + "domain": "muhurta_full_system", + "claim_status": "partial", + "consumer_policy": "research_observation_only", + "claim_boundary": "Muhurta factors can be shown as observations and avoidance windows; full scoring verdict remains blocked." + }, + { + "packet_id": "prashna_tajika_saham_gulika_sphuta_numeric_packet_queue_v2_2026_07_22", + "path": "references/oracle/prashna_tajika_saham_gulika_sphuta_numeric_packet_queue_v2_2026_07_22.json", + "domain": "horary_annual_sensitive_points", + "claim_status": "open_queue", + "consumer_policy": "research_observation_only", + "claim_boundary": "Prashna/Tajika/Saham/Gulika/Sphuta numeric packet queue only; no domain is upgraded to numeric oracle ready." + }, + { + "packet_id": "timing_rectification_holdout_freeze_contract_2026_07_22", + "path": "references/oracle/timing_rectification_holdout_freeze_contract_2026_07_22.json", + "domain": "timing_holdout_rectification", + "claim_status": "blocked", + "consumer_policy": "research_observation_only", + "claim_boundary": "Exact day/month timing and birth-time truth upgrades are blocked until independent human labels are frozen before blind ranking." + }, + { + "packet_id": "shadbala_component_arbitration_queue_v2_2026_07_22", + "path": "references/oracle/shadbala_component_arbitration_queue_v2_2026_07_22.json", + "domain": "shadbala_component_closure", + "claim_status": "partial", + "consumer_policy": "research_observation_only", + "claim_boundary": "Component-level queue only: Naisargika is same-unit closed; Dig/Drik/Kala/Sthana/Chesta remain arbitration items and do not upgrade absolute Shadbala truth." + }, + { + "packet_id": "raman_shadbala_raw_replay_and_input_drift_2026_07_22", + "path": "references/oracle/raman_shadbala_raw_replay_and_input_drift_2026_07_22.json", + "domain": "shadbala_component_closure", + "claim_status": "blocked", + "consumer_policy": "research_observation_only", + "claim_boundary": "Raman Shadbala sample is not promoted: declared raw artifact is absent and fresh PyJHora replay proves input-contract drift." + }, + { + "packet_id": "timing_rectification_public_holdout_candidate_queue_2026_07_22", + "path": "references/oracle/timing_rectification_public_holdout_candidate_queue_2026_07_22.json", + "domain": "timing_holdout_rectification", + "claim_status": "blocked_until_human_labels", + "consumer_policy": "research_observation_only", + "claim_boundary": "Positive public event candidates are queued, but no independent negative labels are frozen; timing and birth-time truth upgrades remain blocked." + }, + { + "packet_id": "ul_a7_a10_kp_cusp_three_engine_parity_gap_2026_07_22", + "path": "references/oracle/ul_a7_a10_kp_cusp_three_engine_parity_gap_2026_07_22.json", + "domain": "rectification_external_parity", + "claim_status": "blocked", + "consumer_policy": "research_observation_only", + "claim_boundary": "UL/A7/A10/KP cusp same-input external three-engine parity is not closed; local runtime may be used only as candidate signal." + }, + { + "packet_id": "ul_a7_a10_kp_cusp_same_input_parity_probe_2026_07_22", + "path": "references/oracle/ul_a7_a10_kp_cusp_same_input_parity_probe_2026_07_22.json", + "domain": "rectification_external_parity", + "claim_status": "blocked", + "consumer_policy": "research_observation_only", + "claim_boundary": "Same-input local probe exists for UL/A7/A10/KP cusp, but external PyJHora/jyotishganit/VedicAstro parity is not closed." } ] } diff --git a/references/oracle/kp_exact_cusp_public_worked_example_hunt_v2_2026_07_22.json b/references/oracle/kp_exact_cusp_public_worked_example_hunt_v2_2026_07_22.json new file mode 100644 index 00000000..d6ddd8ca --- /dev/null +++ b/references/oracle/kp_exact_cusp_public_worked_example_hunt_v2_2026_07_22.json @@ -0,0 +1,63 @@ +{ + "scope": "kp_exact_cusp_public_worked_example_hunt_v2", + "created_at": "2026-07-22", + "claim_status": "blocked", + "truth_matrix_allowed": false, + "production_tuning_allowed": false, + "summary": { + "candidate_source_count": 6, + "complete_numeric_oracle_count": 0, + "runtime_observation_sync_allowed": true + }, + "required_numeric_oracle_fields": [ + "birth_or_query_input", + "ayanamsa", + "house_system_or_kp_cusp_method", + "exact_cusp_longitudes", + "cusp_star_lord", + "cusp_sub_lord", + "cusp_sub_sub_lord" + ], + "candidate_sources": [ + { + "id": "archive_kp_reader_candidate", + "status": "partial_numeric_fragment", + "local_packet": "references/oracle/kp_archive_numeric_extraction_result_2026_07_21.json", + "gap": "partial cusp degree only; no full input plus star/sub/sub-sub table" + }, + { + "id": "vedicastro_python_surface", + "status": "runtime_api_surface_candidate", + "gap": "API surface can help compute observation raw; not a public expected-value worked example" + }, + { + "id": "roxyapi_kp_astrology_api", + "status": "oss_or_api_candidate_needs_license_contract", + "url": "https://github.com/RoxyAPI/kp-astrology-api", + "gap": "candidate implementation/API reference; not yet verified as permissive numeric oracle" + }, + { + "id": "logicastro_kp_charts", + "status": "oss_candidate_needs_source_review", + "url": "https://github.com/logicAstro/logicAstroKPCharts", + "gap": "candidate KP chart implementation; expected worked-example rows not captured" + }, + { + "id": "jathakam_candidate", + "status": "oss_candidate_needs_license_and_api_review", + "gap": "potential KP/panchanga source; not yet tied to exact cusp numeric packet" + }, + { + "id": "public_kp_pdf_web_hunt", + "status": "reference_only", + "gap": "public PDFs explain cuspal sub theory, but current pass did not find complete exact cusp/star/sub/sub-sub replay table" + } + ], + "allowed_use": "KP runtime may be displayed as observation-only with exact cusp raw from local/VedicAstro probes; it cannot be used as verified event-timing oracle.", + "next_steps": [ + "capture VedicAstro/runtime KP exact cusp raw for at least three public charts", + "continue source hunt for a public worked example with complete expected cusp table", + "only promote rows whose input, settings, raw hash and replay comparison are all present" + ], + "boundary": "KP exact cusp remains blocked as an external oracle. Public/API candidates can support observation sync only; no verified KP prediction claim is allowed." +} diff --git a/references/oracle/muhurta_full_scoring_closure_queue_v2_2026_07_22.json b/references/oracle/muhurta_full_scoring_closure_queue_v2_2026_07_22.json new file mode 100644 index 00000000..179983a2 --- /dev/null +++ b/references/oracle/muhurta_full_scoring_closure_queue_v2_2026_07_22.json @@ -0,0 +1,35 @@ +{ + "scope": "muhurta_full_scoring_closure_queue_v2", + "created_at": "2026-07-22", + "claim_status": "partial", + "truth_matrix_allowed": false, + "production_tuning_allowed": false, + "source_matrix": "references/oracle/muhurta_full_scoring_matrix_queue_2026_07_22.json", + "summary": { + "factor_count": 12, + "observation_ready_count": 6, + "gate_only_count": 3, + "blocked_gap_count": 3, + "final_verdict_allowed": false + }, + "factor_rows": [ + {"factor": "Tarabala", "status": "observation_ready", "claim": "factor_only", "missing_for_verdict": ["activity weight", "public worked example", "negative example"]}, + {"factor": "Chandrabala", "status": "observation_ready", "claim": "factor_only", "missing_for_verdict": ["birth Moon contract", "activity weight", "public worked example"]}, + {"factor": "Rahu Kalam", "status": "observation_ready", "claim": "avoidance_window_only", "missing_for_verdict": ["location-aware public interval replay", "override policy"]}, + {"factor": "Yamaganda", "status": "observation_ready_from_local_formula", "claim": "avoidance_window_only", "missing_for_verdict": ["public interval packet", "activity override policy"]}, + {"factor": "Gulika Kalam", "status": "observation_ready_from_local_formula", "claim": "avoidance_window_only", "missing_for_verdict": ["public interval packet", "variant convention"]}, + {"factor": "Abhijit Muhurta", "status": "observation_ready", "claim": "reference_window_only", "missing_for_verdict": ["public interval packet", "exception policy"]}, + {"factor": "Panchaka", "status": "blocked_gap", "claim": "not_computed", "missing_for_verdict": ["formula source", "runtime implementation", "worked example"]}, + {"factor": "Vyatipata", "status": "gate_only_from_panchanga_yoga", "claim": "avoidance_gate_candidate", "missing_for_verdict": ["activity weight", "worked example"]}, + {"factor": "Vaidhriti", "status": "gate_only_from_panchanga_yoga", "claim": "avoidance_gate_candidate", "missing_for_verdict": ["activity weight", "worked example"]}, + {"factor": "Sankranti", "status": "blocked_gap", "claim": "not_computed", "missing_for_verdict": ["solar ingress runtime", "public ingress example", "weight rule"]}, + {"factor": "Bhadra/Vishti Karana", "status": "gate_only_from_panchanga", "claim": "avoidance_gate_candidate", "missing_for_verdict": ["activity-specific override", "worked example"]}, + {"factor": "Muhurta worked examples", "status": "blocked_gap", "claim": "source_hunt_only", "missing_for_verdict": ["complete public input", "expected interval values", "raw/hash replay"]} + ], + "oss_candidates": [ + {"id": "panchang_core", "url": "https://github.com/basraven/panchang-core", "license_target": "MIT", "allowed_use": "formula/API reference after license verification"}, + {"id": "roxyapi_panchang_api", "url": "https://github.com/RoxyAPI/panchang-api", "allowed_use": "source/API candidate only until license and output contract are fixed"}, + {"id": "vedastro_muhurta_surface", "allowed_use": "external observation candidate; not hosted truth"} + ], + "boundary": "Muhurta factors can be shown as transparent observations and avoidance windows. Full scoring or a final electional verdict remains blocked until public worked examples and factor weights close." +} diff --git a/references/oracle/prashna_tajika_saham_gulika_sphuta_numeric_packet_queue_v2_2026_07_22.json b/references/oracle/prashna_tajika_saham_gulika_sphuta_numeric_packet_queue_v2_2026_07_22.json new file mode 100644 index 00000000..93688409 --- /dev/null +++ b/references/oracle/prashna_tajika_saham_gulika_sphuta_numeric_packet_queue_v2_2026_07_22.json @@ -0,0 +1,47 @@ +{ + "scope": "prashna_tajika_saham_gulika_sphuta_numeric_packet_queue_v2", + "created_at": "2026-07-22", + "claim_status": "open_queue", + "truth_matrix_allowed": false, + "production_tuning_allowed": false, + "summary": { + "domains": 5, + "numeric_oracle_ready_count": 0, + "tooling_observation_count": 2, + "blocked_until_public_expected_values_count": 5 + }, + "domain_rows": [ + { + "domain": "Prashna", + "local_status": "input_contract_ready", + "current_packets": ["references/oracle/prashna_input_contract_2026_07_20.json"], + "missing": ["public question input", "expected chart fields", "raw/hash replay"] + }, + { + "domain": "Sphuta", + "local_status": "tooling_observation_only", + "current_packets": ["references/oracle/prashna_sphuta_oss_case_probe_2026_07_20.json"], + "missing": ["complete Prashna worked-example input", "transcription-reviewed expected Trisphuta/Catusphuta/Panchasphuta"] + }, + { + "domain": "Gulika", + "local_status": "runtime_formula_present", + "current_packets": ["scripts/gulika.py"], + "missing": ["independent Gulika longitude worked example", "day/night convention", "same-location sunrise/sunset source"] + }, + { + "domain": "Saham", + "local_status": "Tajika queue only", + "current_packets": ["docs/benchmark/tajika_sahams_annual_benchmark_dashboard.json"], + "missing": ["annual chart input", "expected Saham longitudes", "day/night convention"] + }, + { + "domain": "Tajika/Varshaphala", + "local_status": "partial extraction contracts", + "current_packets": ["docs/benchmark/tajika_steve_jobs_1984_first_packet_operator_card.md", "docs/benchmark/tajika_einstein_1905_fill_map.md"], + "missing": ["clean public numeric source", "expected annual fields", "copyright-safe raw/hash packet"] + } + ], + "source_policy": "Public pages, Internet Archive metadata and OSS probes may be indexed; long copyrighted tables are not copied. Numeric packets require field-level expected values, settings and replay hash.", + "boundary": "No Prashna/Tajika/Saham/Gulika/Sphuta domain is upgraded to numeric oracle ready in this packet." +} diff --git a/references/oracle/raman_shadbala_raw_replay_and_input_drift_2026_07_22.json b/references/oracle/raman_shadbala_raw_replay_and_input_drift_2026_07_22.json new file mode 100644 index 00000000..585e3a28 --- /dev/null +++ b/references/oracle/raman_shadbala_raw_replay_and_input_drift_2026_07_22.json @@ -0,0 +1,731 @@ +{ + "boundary": "Raman Shadbala sample is not promoted: the declared raw artifact is absent and fresh black-box replay does not exactly match the pending target values under the declared coordinates. Handan-like coordinates are closer, proving an input-contract drift that needs human/source review.", + "chesta_variant_observation": { + "boundary": "PyJHora exposes at least two Chesta paths; this replay records behavior but does not choose a formula truth.", + "legacy_api_status": "error", + "new_api_present": true + }, + "claim_status": "blocked", + "comparisons": [ + { + "case_label": "declared_packet_coordinates", + "pending_diff": { + "diffs": [ + { + "abs_diff": 0.75, + "component": "sthana", + "observed": 1.689, + "pending_expected": 2.439, + "planet": "Sun" + }, + { + "abs_diff": 1.6388, + "component": "dig", + "observed": 0.333, + "pending_expected": 1.9718, + "planet": "Sun" + }, + { + "abs_diff": 0.2525, + "component": "kala", + "observed": 1.2862, + "pending_expected": 1.0337, + "planet": "Sun" + }, + { + "abs_diff": 0.0, + "component": "chesta", + "observed": 0.0, + "pending_expected": 0.0, + "planet": "Sun" + }, + { + "abs_diff": 0.0, + "component": "naisargika", + "observed": 1.0, + "pending_expected": 1.0, + "planet": "Sun" + }, + { + "abs_diff": 0.0, + "component": "drik", + "observed": -0.0113, + "pending_expected": -0.0113, + "planet": "Sun" + }, + { + "abs_diff": 2.1364, + "component": "total_rupa", + "observed": 4.2968, + "pending_expected": 6.4332, + "planet": "Sun" + }, + { + "abs_diff": 0.75, + "component": "sthana", + "observed": 2.3945, + "pending_expected": 3.1445, + "planet": "Moon" + }, + { + "abs_diff": 1.8751, + "component": "dig", + "observed": 0.2522, + "pending_expected": 2.1273, + "planet": "Moon" + }, + { + "abs_diff": 2.5158, + "component": "kala", + "observed": 3.563, + "pending_expected": 1.0472, + "planet": "Moon" + }, + { + "abs_diff": 0.0, + "component": "chesta", + "observed": 0.0, + "pending_expected": 0.0, + "planet": "Moon" + }, + { + "abs_diff": 0.0, + "component": "naisargika", + "observed": 0.8572, + "pending_expected": 0.8572, + "planet": "Moon" + }, + { + "abs_diff": 0.0, + "component": "drik", + "observed": -0.361, + "pending_expected": -0.361, + "planet": "Moon" + }, + { + "abs_diff": 0.1094, + "component": "total_rupa", + "observed": 6.7058, + "pending_expected": 6.8152, + "planet": "Moon" + }, + { + "abs_diff": 0.25, + "component": "sthana", + "observed": 2.9763, + "pending_expected": 2.7263, + "planet": "Mars" + }, + { + "abs_diff": 1.4364, + "component": "dig", + "observed": 0.3108, + "pending_expected": 1.7472, + "planet": "Mars" + }, + { + "abs_diff": 0.2852, + "component": "kala", + "observed": 0.675, + "pending_expected": 0.3898, + "planet": "Mars" + }, + { + "abs_diff": 0.0105, + "component": "chesta", + "observed": 0.7487, + "pending_expected": 0.7592, + "planet": "Mars" + }, + { + "abs_diff": 0.0, + "component": "naisargika", + "observed": 0.2857, + "pending_expected": 0.2857, + "planet": "Mars" + }, + { + "abs_diff": 0.0, + "component": "drik", + "observed": 0.1142, + "pending_expected": 0.1142, + "planet": "Mars" + }, + { + "abs_diff": 0.9117, + "component": "total_rupa", + "observed": 5.1107, + "pending_expected": 6.0224, + "planet": "Mars" + }, + { + "abs_diff": 0.75, + "component": "sthana", + "observed": 2.4245, + "pending_expected": 3.1745, + "planet": "Mercury" + }, + { + "abs_diff": 1.8946, + "component": "dig", + "observed": 0.2742, + "pending_expected": 2.1688, + "planet": "Mercury" + }, + { + "abs_diff": 1.7158, + "component": "kala", + "observed": 2.1688, + "pending_expected": 0.453, + "planet": "Mercury" + }, + { + "abs_diff": 0.0132, + "component": "chesta", + "observed": 0.1285, + "pending_expected": 0.1417, + "planet": "Mercury" + }, + { + "abs_diff": 0.0, + "component": "naisargika", + "observed": 0.4285, + "pending_expected": 0.4285, + "planet": "Mercury" + }, + { + "abs_diff": 0.0, + "component": "drik", + "observed": -0.0113, + "pending_expected": -0.0113, + "planet": "Mercury" + }, + { + "abs_diff": 0.942, + "component": "total_rupa", + "observed": 5.4132, + "pending_expected": 6.3552, + "planet": "Mercury" + }, + { + "abs_diff": 0.25, + "component": "sthana", + "observed": 3.5732, + "pending_expected": 3.3232, + "planet": "Jupiter" + }, + { + "abs_diff": 2.9272, + "component": "dig", + "observed": 0.8743, + "pending_expected": 3.8015, + "planet": "Jupiter" + }, + { + "abs_diff": 3.9765, + "component": "kala", + "observed": 4.1237, + "pending_expected": 0.1472, + "planet": "Jupiter" + }, + { + "abs_diff": 0.0033, + "component": "chesta", + "observed": 0.6975, + "pending_expected": 0.6942, + "planet": "Jupiter" + }, + { + "abs_diff": 0.0, + "component": "naisargika", + "observed": 0.5715, + "pending_expected": 0.5715, + "planet": "Jupiter" + }, + { + "abs_diff": 0.0, + "component": "drik", + "observed": 0.0903, + "pending_expected": 0.0903, + "planet": "Jupiter" + }, + { + "abs_diff": 1.3026, + "component": "total_rupa", + "observed": 9.9305, + "pending_expected": 8.6279, + "planet": "Jupiter" + }, + { + "abs_diff": 0.5, + "component": "sthana", + "observed": 3.2498, + "pending_expected": 2.7498, + "planet": "Venus" + }, + { + "abs_diff": 0.739, + "component": "dig", + "observed": 1.5092, + "pending_expected": 2.2482, + "planet": "Venus" + }, + { + "abs_diff": 2.3527, + "component": "kala", + "observed": 2.5625, + "pending_expected": 0.2098, + "planet": "Venus" + }, + { + "abs_diff": 0.004, + "component": "chesta", + "observed": 0.3622, + "pending_expected": 0.3582, + "planet": "Venus" + }, + { + "abs_diff": 0.0, + "component": "naisargika", + "observed": 0.7143, + "pending_expected": 0.7143, + "planet": "Venus" + }, + { + "abs_diff": 0.0, + "component": "drik", + "observed": 0.0598, + "pending_expected": 0.0598, + "planet": "Venus" + }, + { + "abs_diff": 2.1177, + "component": "total_rupa", + "observed": 8.4578, + "pending_expected": 6.3401, + "planet": "Venus" + }, + { + "abs_diff": 0.75, + "component": "sthana", + "observed": 2.9992, + "pending_expected": 3.7492, + "planet": "Saturn" + }, + { + "abs_diff": 1.1388, + "component": "dig", + "observed": 0.219, + "pending_expected": 1.3578, + "planet": "Saturn" + }, + { + "abs_diff": 0.0103, + "component": "kala", + "observed": 1.0435, + "pending_expected": 1.0538, + "planet": "Saturn" + }, + { + "abs_diff": 0.0035, + "component": "chesta", + "observed": 0.6103, + "pending_expected": 0.6068, + "planet": "Saturn" + }, + { + "abs_diff": 0.0, + "component": "naisargika", + "observed": 0.1428, + "pending_expected": 0.1428, + "planet": "Saturn" + }, + { + "abs_diff": 0.0, + "component": "drik", + "observed": 0.1852, + "pending_expected": 0.1852, + "planet": "Saturn" + }, + { + "abs_diff": 1.8956, + "component": "total_rupa", + "observed": 5.2, + "pending_expected": 7.0956, + "planet": "Saturn" + } + ], + "max_abs_diff": 3.9765, + "row_count": 49, + "within_0001_count": 16 + } + }, + { + "case_label": "handan_candidate_coordinates", + "pending_diff": { + "diffs": [ + { + "abs_diff": 0.0, + "component": "sthana", + "observed": 2.439, + "pending_expected": 2.439, + "planet": "Sun" + }, + { + "abs_diff": 0.9396, + "component": "dig", + "observed": 1.0322, + "pending_expected": 1.9718, + "planet": "Sun" + }, + { + "abs_diff": 0.9365, + "component": "kala", + "observed": 1.9702, + "pending_expected": 1.0337, + "planet": "Sun" + }, + { + "abs_diff": 0.0, + "component": "chesta", + "observed": 0.0, + "pending_expected": 0.0, + "planet": "Sun" + }, + { + "abs_diff": 0.0, + "component": "naisargika", + "observed": 1.0, + "pending_expected": 1.0, + "planet": "Sun" + }, + { + "abs_diff": 0.0, + "component": "drik", + "observed": -0.0113, + "pending_expected": -0.0113, + "planet": "Sun" + }, + { + "abs_diff": 0.0032, + "component": "total_rupa", + "observed": 6.43, + "pending_expected": 6.4332, + "planet": "Sun" + }, + { + "abs_diff": 0.0, + "component": "sthana", + "observed": 3.1445, + "pending_expected": 3.1445, + "planet": "Moon" + }, + { + "abs_diff": 1.0786, + "component": "dig", + "observed": 1.0487, + "pending_expected": 2.1273, + "planet": "Moon" + }, + { + "abs_diff": 1.0818, + "component": "kala", + "observed": 2.129, + "pending_expected": 1.0472, + "planet": "Moon" + }, + { + "abs_diff": 0.0, + "component": "chesta", + "observed": 0.0, + "pending_expected": 0.0, + "planet": "Moon" + }, + { + "abs_diff": 0.0, + "component": "naisargika", + "observed": 0.8572, + "pending_expected": 0.8572, + "planet": "Moon" + }, + { + "abs_diff": 0.0, + "component": "drik", + "observed": -0.361, + "pending_expected": -0.361, + "planet": "Moon" + }, + { + "abs_diff": 0.0031, + "component": "total_rupa", + "observed": 6.8183, + "pending_expected": 6.8152, + "planet": "Moon" + }, + { + "abs_diff": 0.0, + "component": "sthana", + "observed": 2.7263, + "pending_expected": 2.7263, + "planet": "Mars" + }, + { + "abs_diff": 1.3589, + "component": "dig", + "observed": 0.3883, + "pending_expected": 1.7472, + "planet": "Mars" + }, + { + "abs_diff": 1.359, + "component": "kala", + "observed": 1.7488, + "pending_expected": 0.3898, + "planet": "Mars" + }, + { + "abs_diff": 0.0, + "component": "chesta", + "observed": 0.7592, + "pending_expected": 0.7592, + "planet": "Mars" + }, + { + "abs_diff": 0.0, + "component": "naisargika", + "observed": 0.2857, + "pending_expected": 0.2857, + "planet": "Mars" + }, + { + "abs_diff": 0.0, + "component": "drik", + "observed": 0.1142, + "pending_expected": 0.1142, + "planet": "Mars" + }, + { + "abs_diff": 0.0001, + "component": "total_rupa", + "observed": 6.0225, + "pending_expected": 6.0224, + "planet": "Mars" + }, + { + "abs_diff": 0.0, + "component": "sthana", + "observed": 3.1745, + "pending_expected": 3.1745, + "planet": "Mercury" + }, + { + "abs_diff": 1.7186, + "component": "dig", + "observed": 0.4502, + "pending_expected": 2.1688, + "planet": "Mercury" + }, + { + "abs_diff": 1.7158, + "component": "kala", + "observed": 2.1688, + "pending_expected": 0.453, + "planet": "Mercury" + }, + { + "abs_diff": 0.0, + "component": "chesta", + "observed": 0.1417, + "pending_expected": 0.1417, + "planet": "Mercury" + }, + { + "abs_diff": 0.0, + "component": "naisargika", + "observed": 0.4285, + "pending_expected": 0.4285, + "planet": "Mercury" + }, + { + "abs_diff": 0.0, + "component": "drik", + "observed": -0.0113, + "pending_expected": -0.0113, + "planet": "Mercury" + }, + { + "abs_diff": 0.0029, + "component": "total_rupa", + "observed": 6.3523, + "pending_expected": 6.3552, + "planet": "Mercury" + }, + { + "abs_diff": 0.0, + "component": "sthana", + "observed": 3.3232, + "pending_expected": 3.3232, + "planet": "Jupiter" + }, + { + "abs_diff": 3.6515, + "component": "dig", + "observed": 0.15, + "pending_expected": 3.8015, + "planet": "Jupiter" + }, + { + "abs_diff": 3.6526, + "component": "kala", + "observed": 3.7998, + "pending_expected": 0.1472, + "planet": "Jupiter" + }, + { + "abs_diff": 0.0, + "component": "chesta", + "observed": 0.6942, + "pending_expected": 0.6942, + "planet": "Jupiter" + }, + { + "abs_diff": 0.0, + "component": "naisargika", + "observed": 0.5715, + "pending_expected": 0.5715, + "planet": "Jupiter" + }, + { + "abs_diff": 0.0, + "component": "drik", + "observed": 0.0903, + "pending_expected": 0.0903, + "planet": "Jupiter" + }, + { + "abs_diff": 0.0011, + "component": "total_rupa", + "observed": 8.629, + "pending_expected": 8.6279, + "planet": "Jupiter" + }, + { + "abs_diff": 0.0, + "component": "sthana", + "observed": 2.7498, + "pending_expected": 2.7498, + "planet": "Venus" + }, + { + "abs_diff": 2.0399, + "component": "dig", + "observed": 0.2083, + "pending_expected": 2.2482, + "planet": "Venus" + }, + { + "abs_diff": 2.0367, + "component": "kala", + "observed": 2.2465, + "pending_expected": 0.2098, + "planet": "Venus" + }, + { + "abs_diff": 0.0, + "component": "chesta", + "observed": 0.3582, + "pending_expected": 0.3582, + "planet": "Venus" + }, + { + "abs_diff": 0.0, + "component": "naisargika", + "observed": 0.7143, + "pending_expected": 0.7143, + "planet": "Venus" + }, + { + "abs_diff": 0.0, + "component": "drik", + "observed": 0.0598, + "pending_expected": 0.0598, + "planet": "Venus" + }, + { + "abs_diff": 0.0031, + "component": "total_rupa", + "observed": 6.337, + "pending_expected": 6.3401, + "planet": "Venus" + }, + { + "abs_diff": 0.0, + "component": "sthana", + "observed": 3.7492, + "pending_expected": 3.7492, + "planet": "Saturn" + }, + { + "abs_diff": 0.3011, + "component": "dig", + "observed": 1.0567, + "pending_expected": 1.3578, + "planet": "Saturn" + }, + { + "abs_diff": 0.3057, + "component": "kala", + "observed": 1.3595, + "pending_expected": 1.0538, + "planet": "Saturn" + }, + { + "abs_diff": 0.0001, + "component": "chesta", + "observed": 0.6067, + "pending_expected": 0.6068, + "planet": "Saturn" + }, + { + "abs_diff": 0.0, + "component": "naisargika", + "observed": 0.1428, + "pending_expected": 0.1428, + "planet": "Saturn" + }, + { + "abs_diff": 0.0, + "component": "drik", + "observed": 0.1852, + "pending_expected": 0.1852, + "planet": "Saturn" + }, + { + "abs_diff": 0.0044, + "component": "total_rupa", + "observed": 7.1, + "pending_expected": 7.0956, + "planet": "Saturn" + } + ], + "max_abs_diff": 3.6526, + "row_count": 49, + "within_0001_count": 29 + } + } + ], + "created_at": "2026-07-22", + "pending_packet": "references/oracle/artifacts/pending_packets/external_template_synthetic_north_china_shadbala_raman_pyjhora_20260627.json", + "production_tuning_allowed": false, + "replay_artifact": "references/oracle/artifacts/pyjhora_synthetic_north_china_shadbala_raman_stdout_20260722.txt", + "replay_artifact_sha256": "427ad14c8fe3ab3b879822b7692f70ab3cbc26ed2e8896c8465bd138b310b24a", + "scope": "raman_shadbala_raw_replay_and_input_drift", + "summary": { + "best_case_label_by_max_diff": "handan_candidate_coordinates", + "can_promote_raman_sample": false, + "complete_match_count": 0, + "pending_declared_artifact_found": false, + "replay_case_count": 2 + }, + "truth_matrix_allowed": false +} diff --git a/references/oracle/shadbala_component_arbitration_queue_v2_2026_07_22.json b/references/oracle/shadbala_component_arbitration_queue_v2_2026_07_22.json new file mode 100644 index 00000000..4d211fd9 --- /dev/null +++ b/references/oracle/shadbala_component_arbitration_queue_v2_2026_07_22.json @@ -0,0 +1,120 @@ +{ + "boundary": "This queue makes component-level blockers explicit. Naisargika is same-unit closed; Dig/Drik/Kala/Sthana/Chesta remain arbitration items and do not upgrade absolute Shadbala truth.", + "claim_status": "partial", + "component_rows": [ + { + "arbitration_status": "method_variant_arbitration_required", + "closure_bucket_counts": { + "formula_or_unit_mismatch": 1, + "method_variant": 6 + }, + "component": "chesta", + "next_evidence": "compare mean-motion, retrograde/stationary and Seeghrochcha variants without copying AGPL code", + "row_count": 7, + "sample_tickets": [ + "shadbala.sun.chesta", + "shadbala.moon.chesta", + "shadbala.mars.chesta" + ], + "unresolved_row_count": 7 + }, + { + "arbitration_status": "formula_model_arbitration_required", + "closure_bucket_counts": { + "formula_or_unit_mismatch": 7 + }, + "component": "dig", + "next_evidence": "compare angular-distance, house-midpoint and bhava-madhya models against more raw-backed cases", + "row_count": 7, + "sample_tickets": [ + "shadbala.sun.dig", + "shadbala.moon.dig", + "shadbala.mars.dig" + ], + "unresolved_row_count": 7 + }, + { + "arbitration_status": "aspect_model_arbitration_required", + "closure_bucket_counts": { + "formula_or_unit_mismatch": 7 + }, + "component": "drik", + "next_evidence": "fix graha drishti/aspect strength scale and benefic-malefic aggregation source", + "row_count": 7, + "sample_tickets": [ + "shadbala.sun.drik", + "shadbala.moon.drik", + "shadbala.mars.drik" + ], + "unresolved_row_count": 7 + }, + { + "arbitration_status": "subcomponent_arbitration_required", + "closure_bucket_counts": { + "formula_or_unit_mismatch": 7 + }, + "component": "kala", + "next_evidence": "split natonnata, paksha, ayana, day/night and hora subcomponents before tuning", + "row_count": 7, + "sample_tickets": [ + "shadbala.sun.kala", + "shadbala.moon.kala", + "shadbala.mars.kala" + ], + "unresolved_row_count": 7 + }, + { + "arbitration_status": "component_closed_same_unit", + "closure_bucket_counts": { + "within_tolerance": 7 + }, + "component": "naisargika", + "next_evidence": "preserve regression coverage; no formula change", + "row_count": 7, + "sample_tickets": [ + "shadbala.sun.naisargika", + "shadbala.moon.naisargika", + "shadbala.mars.naisargika" + ], + "unresolved_row_count": 0 + }, + { + "arbitration_status": "saptavarga_dignity_arbitration_required", + "closure_bucket_counts": { + "formula_or_unit_mismatch": 5, + "method_variant": 2 + }, + "component": "sthana", + "next_evidence": "resolve Sapta/D3/D4/D7/D12/D30 dignity branches only with raw-backed third case", + "row_count": 7, + "sample_tickets": [ + "shadbala.sun.sthana", + "shadbala.moon.sthana", + "shadbala.mars.sthana" + ], + "unresolved_row_count": 7 + } + ], + "created_at": "2026-07-22", + "oss_reference_candidates": [ + { + "boundary": "Simplified Chesta/Dig/Saptavarga model; do not treat as numeric oracle truth.", + "id": "dashaflow_shadbala", + "path": "references/open_source_sources/dashaflow/shadbala.py", + "use": "permissive/reference candidate only" + } + ], + "production_tuning_allowed": false, + "queue_hash": "62dcf024255e3fcbef50cd4653817d98439e1a267622143515289b7883d81e82", + "scope": "shadbala_component_arbitration_queue_v2", + "source_packet": "references/oracle/shadbala_component_joined_closure_packet_2026_07_21.json", + "source_packet_sha256": "98ea50de9edbec32e2cd0fef2ec037f4a226da51e8413c2ef428c42a4f004593", + "summary": { + "absolute_truth_upgrade_count": 0, + "arbitration_required_count": 5, + "component_closed_count": 1, + "component_count": 6, + "same_unit_row_count": 42 + }, + "truth_matrix_allowed": false +} diff --git a/references/oracle/shadbala_dig_source_of_truth_audit_2026_07_22.json b/references/oracle/shadbala_dig_source_of_truth_audit_2026_07_22.json new file mode 100644 index 00000000..8d25acf3 --- /dev/null +++ b/references/oracle/shadbala_dig_source_of_truth_audit_2026_07_22.json @@ -0,0 +1,263 @@ +{ + "scope": "shadbala_dig_source_of_truth_audit", + "schema_version": 1, + "candidate_models": [ + "current_linear_house_model", + "house_midpoint_angular_model", + "bhava_madhya_angular_model" + ], + "inputs": { + "oracle_file": "references/oracle/dasha_shadbala_oracle_cases.json", + "oracle_file_sha256": "9ccf7697727cac73ca34e3b1057ea927d354cb6009fcb6d82f1f1ab3697ed4a4", + "external_case_count": 2, + "external_case_sources": [ + { + "case_id": "template_steve_jobs_dasha_lahiri", + "source_artifact": "references/oracle/artifacts/pyjhora_steve_jobs_shadbala_lahiri_stdout_20260627.txt", + "source_artifact_sha256": "65f652ac47d4a81ab43568bde8c5d7b9fac09d45f399564500c5af1a12db96c3" + }, + { + "case_id": "template_extreme_latitude_kp", + "source_artifact": "references/oracle/artifacts/pyjhora_extreme_latitude_kp_shadbala_stdout_20260627.txt", + "source_artifact_sha256": "28fc0a1e3aeee3e4a3c1f305038682ce782cacdb0416900184d9c43aeae9a68c" + } + ] + }, + "summary": { + "case_count": 2, + "row_count": 14, + "best_model_by_avg_abs_diff": "bhava_madhya_angular_model", + "avg_abs_diff_by_model": { + "current_linear_house_model": 0.3355, + "house_midpoint_angular_model": 0.3323, + "bhava_madhya_angular_model": 0.3033 + } + }, + "rows": [ + { + "case_id": "template_steve_jobs_dasha_lahiri", + "planet": "Jupiter", + "external_dig_rupa": 1.3433, + "house": 11, + "planet_lon": 87.2772, + "asc_lon": 149.0606, + "current_linear_house_model": 0.6667, + "house_midpoint_angular_model": 0.5734, + "bhava_madhya_angular_model": 0.6568, + "abs_diffs": { + "current_linear_house_model": 0.6766, + "house_midpoint_angular_model": 0.7699, + "bhava_madhya_angular_model": 0.6865 + } + }, + { + "case_id": "template_steve_jobs_dasha_lahiri", + "planet": "Mars", + "external_dig_rupa": 1.2902, + "house": 9, + "planet_lon": 5.8598, + "asc_lon": 149.0606, + "current_linear_house_model": 0.8333, + "house_midpoint_angular_model": 0.6211, + "bhava_madhya_angular_model": 0.7044, + "abs_diffs": { + "current_linear_house_model": 0.4569, + "house_midpoint_angular_model": 0.6691, + "bhava_madhya_angular_model": 0.5858 + } + }, + { + "case_id": "template_steve_jobs_dasha_lahiri", + "planet": "Mercury", + "external_dig_rupa": 0.2107, + "house": 6, + "planet_lon": 291.1311, + "asc_lon": 149.0606, + "current_linear_house_model": 0.1667, + "house_midpoint_angular_model": 0.2941, + "bhava_madhya_angular_model": 0.2107, + "abs_diffs": { + "current_linear_house_model": 0.044, + "house_midpoint_angular_model": 0.0834, + "bhava_madhya_angular_model": 0.0 + } + }, + { + "case_id": "template_steve_jobs_dasha_lahiri", + "planet": "Moon", + "external_dig_rupa": 1.5913, + "house": 8, + "planet_lon": 344.5165, + "asc_lon": 149.0606, + "current_linear_house_model": 0.3333, + "house_midpoint_angular_model": 0.4975, + "bhava_madhya_angular_model": 0.4141, + "abs_diffs": { + "current_linear_house_model": 1.258, + "house_midpoint_angular_model": 1.0938, + "bhava_madhya_angular_model": 1.1772 + } + }, + { + "case_id": "template_steve_jobs_dasha_lahiri", + "planet": "Saturn", + "external_dig_rupa": 0.327, + "house": 3, + "planet_lon": 207.932, + "asc_lon": 149.0606, + "current_linear_house_model": 0.3333, + "house_midpoint_angular_model": 0.2437, + "bhava_madhya_angular_model": 0.3271, + "abs_diffs": { + "current_linear_house_model": 0.0063, + "house_midpoint_angular_model": 0.0833, + "bhava_madhya_angular_model": 0.0001 + } + }, + { + "case_id": "template_steve_jobs_dasha_lahiri", + "planet": "Sun", + "external_dig_rupa": 0.4135, + "house": 7, + "planet_lon": 312.5175, + "asc_lon": 149.0606, + "current_linear_house_model": 0.5, + "house_midpoint_angular_model": 0.3248, + "bhava_madhya_angular_model": 0.4081, + "abs_diffs": { + "current_linear_house_model": 0.0865, + "house_midpoint_angular_model": 0.0887, + "bhava_madhya_angular_model": 0.0054 + } + }, + { + "case_id": "template_steve_jobs_dasha_lahiri", + "planet": "Venus", + "external_dig_rupa": 1.1658, + "house": 5, + "planet_lon": 267.9412, + "asc_lon": 149.0606, + "current_linear_house_model": 0.8333, + "house_midpoint_angular_model": 0.9229, + "bhava_madhya_angular_model": 0.8396, + "abs_diffs": { + "current_linear_house_model": 0.3325, + "house_midpoint_angular_model": 0.2429, + "bhava_madhya_angular_model": 0.3262 + } + }, + { + "case_id": "template_extreme_latitude_kp", + "planet": "Jupiter", + "external_dig_rupa": 0.631, + "house": 4, + "planet_lon": 34.2332, + "asc_lon": 327.826, + "current_linear_house_model": 0.5, + "house_midpoint_angular_model": 0.7144, + "bhava_madhya_angular_model": 0.6311, + "abs_diffs": { + "current_linear_house_model": 0.131, + "house_midpoint_angular_model": 0.0834, + "bhava_madhya_angular_model": 0.0001 + } + }, + { + "case_id": "template_extreme_latitude_kp", + "planet": "Mars", + "external_dig_rupa": 0.0193, + "house": 5, + "planet_lon": 69.2064, + "asc_lon": 327.826, + "current_linear_house_model": 0.1667, + "house_midpoint_angular_model": 0.0201, + "bhava_madhya_angular_model": 0.0632, + "abs_diffs": { + "current_linear_house_model": 0.1474, + "house_midpoint_angular_model": 0.0008, + "bhava_madhya_angular_model": 0.0439 + } + }, + { + "case_id": "template_extreme_latitude_kp", + "planet": "Mercury", + "external_dig_rupa": 0.3437, + "house": 5, + "planet_lon": 85.9761, + "asc_lon": 327.826, + "current_linear_house_model": 0.3333, + "house_midpoint_angular_model": 0.4269, + "bhava_madhya_angular_model": 0.3436, + "abs_diffs": { + "current_linear_house_model": 0.0104, + "house_midpoint_angular_model": 0.0832, + "bhava_madhya_angular_model": 0.0001 + } + }, + { + "case_id": "template_extreme_latitude_kp", + "planet": "Moon", + "external_dig_rupa": 0.245, + "house": 12, + "planet_lon": 289.8315, + "asc_lon": 327.826, + "current_linear_house_model": 0.3333, + "house_midpoint_angular_model": 0.2056, + "bhava_madhya_angular_model": 0.2889, + "abs_diffs": { + "current_linear_house_model": 0.0883, + "house_midpoint_angular_model": 0.0394, + "bhava_madhya_angular_model": 0.0439 + } + }, + { + "case_id": "template_extreme_latitude_kp", + "planet": "Saturn", + "external_dig_rupa": 1.6447, + "house": 4, + "planet_lon": 31.7687, + "asc_lon": 327.826, + "current_linear_house_model": 0.5, + "house_midpoint_angular_model": 0.2719, + "bhava_madhya_angular_model": 0.3552, + "abs_diffs": { + "current_linear_house_model": 1.1447, + "house_midpoint_angular_model": 1.3728, + "bhava_madhya_angular_model": 1.2895 + } + }, + { + "case_id": "template_extreme_latitude_kp", + "planet": "Sun", + "external_dig_rupa": 0.0022, + "house": 5, + "planet_lon": 66.1221, + "asc_lon": 327.826, + "current_linear_house_model": 0.1667, + "house_midpoint_angular_model": 0.0372, + "bhava_madhya_angular_model": 0.0461, + "abs_diffs": { + "current_linear_house_model": 0.1645, + "house_midpoint_angular_model": 0.035, + "bhava_madhya_angular_model": 0.0439 + } + }, + { + "case_id": "template_extreme_latitude_kp", + "planet": "Venus", + "external_dig_rupa": 0.9833, + "house": 5, + "planet_lon": 68.7289, + "asc_lon": 327.826, + "current_linear_house_model": 0.8333, + "house_midpoint_angular_model": 0.9772, + "bhava_madhya_angular_model": 0.9394, + "abs_diffs": { + "current_linear_house_model": 0.15, + "house_midpoint_angular_model": 0.0061, + "bhava_madhya_angular_model": 0.0439 + } + } + ], + "boundary": "This audit compares three local Dig Bala candidate models against external oracle rows. It is diagnostic only and does not modify production scoring." +} diff --git a/references/oracle/timing_rectification_holdout_freeze_contract_2026_07_22.json b/references/oracle/timing_rectification_holdout_freeze_contract_2026_07_22.json new file mode 100644 index 00000000..6d8382ab --- /dev/null +++ b/references/oracle/timing_rectification_holdout_freeze_contract_2026_07_22.json @@ -0,0 +1,35 @@ +{ + "scope": "timing_rectification_holdout_freeze_contract", + "created_at": "2026-07-22", + "claim_status": "blocked", + "truth_matrix_allowed": false, + "production_tuning_allowed": false, + "summary": { + "minimum_public_people": 3, + "positive_events_per_person": 1, + "negative_windows_per_person": 2, + "frozen_label_count": 0, + "blind_ranking_allowed": false, + "day_month_claim_upgrade_allowed": false + }, + "required_label_schema": { + "person_id": "public person slug", + "birth_data_source": "public source URL or packet id", + "event_domain": "career | relationship | health | relocation | other", + "positive_event": {"date_or_range": "required", "source": "required", "pre_registered": true}, + "negative_windows": [{"start": "required", "end": "required", "reason": "no known target event in this domain"}], + "reviewer": "human reviewer id", + "freeze_hash": "sha256 of sorted labels before model run" + }, + "allowed_runtime_output": { + "verified_window": "broad window only", + "candidate_windows": "exploratory_unvalidated", + "claim_status": "exploratory_unvalidated" + }, + "blocked_output": [ + "verified exact event date", + "birth-time truth from candidate score", + "production tuning on existing observed controls" + ], + "boundary": "Timing and birth-time rectification exact day/month upgrades are blocked until independent human labels are frozen before blind ranking." +} diff --git a/references/oracle/timing_rectification_public_holdout_candidate_queue_2026_07_22.json b/references/oracle/timing_rectification_public_holdout_candidate_queue_2026_07_22.json new file mode 100644 index 00000000..6a5784a4 --- /dev/null +++ b/references/oracle/timing_rectification_public_holdout_candidate_queue_2026_07_22.json @@ -0,0 +1,53 @@ +{ + "scope": "timing_rectification_public_holdout_candidate_queue", + "created_at": "2026-07-22", + "claim_status": "blocked_until_human_labels", + "truth_matrix_allowed": false, + "production_tuning_allowed": false, + "summary": { + "public_positive_event_candidate_count": 3, + "frozen_negative_window_count": 0, + "blind_ranking_allowed": false, + "day_month_claim_upgrade_allowed": false + }, + "positive_event_candidates": [ + { + "person_id": "steve_jobs", + "event_domain": "career", + "event": "Apple Computer Company founded", + "date": "1976-04-01", + "source_url": "https://www.ebsco.com/research-starters/computer-science/jobs-and-wozniak-found-apple-computer", + "source_note": "Public source states Apple Computer was founded on April 1, 1976 by Steve Jobs and Stephen Wozniak.", + "label_status": "positive_candidate_requires_human_freeze" + }, + { + "person_id": "steve_jobs", + "event_domain": "career", + "event": "Apple partnership founding at Jobs family home", + "date": "1976-04-01", + "source_url": "https://en.wikipedia.org/wiki/Steve_Jobs", + "source_note": "Secondary public source gives the same founding date and context.", + "label_status": "corroborating_positive_candidate_not_independent_negative" + }, + { + "person_id": "marilyn_monroe", + "event_domain": "health_death", + "event": "Found dead in Los Angeles home", + "date": "1962-08-05", + "source_url": "https://www.history.com/this-day-in-history/august-5/marilyn-monroe-is-found-dead", + "source_note": "Public source states Monroe was found dead on August 5, 1962.", + "label_status": "positive_candidate_requires_human_freeze" + } + ], + "negative_window_requirements": [ + "Each person requires two human-reviewed non-event windows in the same event domain.", + "Negative windows must be frozen before any model/scoring run.", + "Existing observed control dates must not be used for tuning." + ], + "next_steps": [ + "human reviewer selects 3-10 public people and freezes labels", + "add two negative windows per person with source/reason", + "hash the sorted label packet before blind ranking" + ], + "boundary": "This queue improves source intake only. It does not provide negative labels and cannot upgrade timing or birth-time rectification claims." +} diff --git a/references/oracle/ul_a7_a10_kp_cusp_same_input_parity_probe_2026_07_22.json b/references/oracle/ul_a7_a10_kp_cusp_same_input_parity_probe_2026_07_22.json new file mode 100644 index 00000000..ab5fa667 --- /dev/null +++ b/references/oracle/ul_a7_a10_kp_cusp_same_input_parity_probe_2026_07_22.json @@ -0,0 +1,303 @@ +{ + "boundary": "Same-input probe only. UL/A7/A10/KP cusp external three-engine parity remains blocked.", + "claim_status": "blocked", + "created_at": "2026-07-22", + "field_rows": [ + { + "claim_boundary": "UL remains observation-only until same-input external raw from at least two independent legal sources is captured.", + "external_ready_count": 0, + "external_ready_engines": [], + "field": "UL", + "local_ready": true, + "three_engine_parity_status": "blocked" + }, + { + "claim_boundary": "A7 remains observation-only until same-input external raw from at least two independent legal sources is captured.", + "external_ready_count": 0, + "external_ready_engines": [], + "field": "A7", + "local_ready": true, + "three_engine_parity_status": "blocked" + }, + { + "claim_boundary": "A10 remains observation-only until same-input external raw from at least two independent legal sources is captured.", + "external_ready_count": 0, + "external_ready_engines": [], + "field": "A10", + "local_ready": true, + "three_engine_parity_status": "blocked" + }, + { + "claim_boundary": "KP_cusps remains observation-only until same-input external raw from at least two independent legal sources is captured.", + "external_ready_count": 0, + "external_ready_engines": [], + "field": "KP_cusps", + "local_ready": true, + "three_engine_parity_status": "blocked" + } + ], + "observations": [ + { + "engine": "local", + "fields": { + "A10": { + "distance": 8, + "exception_triggered": false, + "house_num": 10, + "lord": "Moon", + "lord_sign": "Sagittarius", + "name": "Karma Pada (A10)", + "sign": "Cancer", + "sign_idx": 3, + "source_house_lord": "Venus", + "source_house_sign": "Taurus" + }, + "A7": { + "distance": 9, + "exception_triggered": false, + "house_num": 7, + "lord": "Mercury", + "lord_sign": "Libra", + "name": "Dara Pada (A7)", + "sign": "Gemini", + "sign_idx": 2, + "source_house_lord": "Saturn", + "source_house_sign": "Aquarius" + }, + "KP_cusps": { + "house_1": { + "cusp_degree": 149.342, + "nakshatra": "Uttara Phalguni", + "nakshatra_lord": "Sun", + "rasi_lord": "Sun", + "sign": "Leo", + "sub_lord": "Rahu", + "sub_sub_lord": "Rahu" + }, + "house_10": { + "cusp_degree": 59.342, + "nakshatra": "Mrigashira", + "nakshatra_lord": "Mars", + "rasi_lord": "Venus", + "sign": "Taurus", + "sub_lord": "Saturn", + "sub_sub_lord": "Mars" + }, + "house_4": { + "cusp_degree": 239.342, + "nakshatra": "Jyeshtha", + "nakshatra_lord": "Mercury", + "rasi_lord": "Mars", + "sign": "Scorpio", + "sub_lord": "Saturn", + "sub_sub_lord": "Mars" + }, + "house_7": { + "cusp_degree": 329.342, + "nakshatra": "Purva Bhadrapada", + "nakshatra_lord": "Jupiter", + "rasi_lord": "Saturn", + "sign": "Aquarius", + "sub_lord": "Sun", + "sub_sub_lord": "Venus" + } + }, + "UL": { + "distance": 9, + "exception_triggered": false, + "house_num": 12, + "lord": "Mars", + "lord_sign": "Pisces", + "name": "Upapada (UL)", + "sign": "Scorpio", + "sign_idx": 7, + "source_house_lord": "Moon", + "source_house_sign": "Cancer" + } + }, + "raw": { + "arudha": { + "A10": { + "distance": 8, + "exception_triggered": false, + "house_num": 10, + "lord": "Moon", + "lord_sign": "Sagittarius", + "name": "Karma Pada (A10)", + "sign": "Cancer", + "sign_idx": 3, + "source_house_lord": "Venus", + "source_house_sign": "Taurus" + }, + "A7": { + "distance": 9, + "exception_triggered": false, + "house_num": 7, + "lord": "Mercury", + "lord_sign": "Libra", + "name": "Dara Pada (A7)", + "sign": "Gemini", + "sign_idx": 2, + "source_house_lord": "Saturn", + "source_house_sign": "Aquarius" + }, + "UL": { + "distance": 9, + "exception_triggered": false, + "house_num": 12, + "lord": "Mars", + "lord_sign": "Pisces", + "name": "Upapada (UL)", + "sign": "Scorpio", + "sign_idx": 7, + "source_house_lord": "Moon", + "source_house_sign": "Cancer" + } + }, + "ascendant": { + "degree_in_sign": 29.342, + "lon": 149.342, + "sign": "Leo" + }, + "kp_cusps": { + "house_1": { + "cusp_degree": 149.342, + "nakshatra": "Uttara Phalguni", + "nakshatra_lord": "Sun", + "rasi_lord": "Sun", + "sign": "Leo", + "sub_lord": "Rahu", + "sub_sub_lord": "Rahu" + }, + "house_10": { + "cusp_degree": 59.342, + "nakshatra": "Mrigashira", + "nakshatra_lord": "Mars", + "rasi_lord": "Venus", + "sign": "Taurus", + "sub_lord": "Saturn", + "sub_sub_lord": "Mars" + }, + "house_4": { + "cusp_degree": 239.342, + "nakshatra": "Jyeshtha", + "nakshatra_lord": "Mercury", + "rasi_lord": "Mars", + "sign": "Scorpio", + "sub_lord": "Saturn", + "sub_sub_lord": "Mars" + }, + "house_7": { + "cusp_degree": 329.342, + "nakshatra": "Purva Bhadrapada", + "nakshatra_lord": "Jupiter", + "rasi_lord": "Saturn", + "sign": "Aquarius", + "sub_lord": "Sun", + "sub_sub_lord": "Venus" + } + }, + "varga_lagna": { + "D10_Dasamsa": { + "degree_in_sign": 23.42, + "lord": "Venus", + "part_index": 9, + "sign": "Taurus", + "sign_idx": 1 + }, + "D24_Siddhamsa": { + "degree_in_sign": 14.208, + "lord": "Moon", + "part_index": 23, + "sign": "Cancer", + "sign_idx": 3 + }, + "D30_Trimsamsa": { + "degree_in_sign": 10.26, + "lord": "Venus", + "part_index": 29, + "sign": "Libra", + "sign_idx": 6 + }, + "D4_Turyamsa": { + "degree_in_sign": 27.368, + "lord": "Venus", + "part_index": 3, + "sign": "Taurus", + "sign_idx": 1 + }, + "D60_Shashtyamsa": { + "degree_in_sign": 20.52, + "lord": "Mercury", + "part_index": 58, + "sign": "Gemini", + "sign_idx": 2 + }, + "D9_Navamsa": { + "degree_in_sign": 24.078, + "lord": "Jupiter", + "pada": 9, + "part_index": 8, + "sign": "Sagittarius", + "sign_idx": 8 + } + } + }, + "raw_hash": "4e36fc7517f611ed21f20091541e61fc9e482f7e2d22add22c01331beca2a138", + "status": "complete" + }, + { + "engine": "VedicAstro", + "error": "No module named 'flatlib'", + "error_type": "ModuleNotFoundError", + "status": "blocked_runtime_error" + }, + { + "boundary": "AGPL black-box capture required; no same-input raw packet exists.", + "engine": "PyJHora", + "missing_fields": [ + "UL", + "A7", + "A10", + "KP_cusps" + ], + "status": "not_captured" + }, + { + "boundary": "No mapped same-input Arudha/KP cusp field contract exists.", + "engine": "jyotishganit", + "missing_fields": [ + "UL", + "A7", + "A10", + "KP_cusps" + ], + "status": "no_field_contract" + } + ], + "packet_hash": "f84294c402b9fe9c5fc065f81a21d750fac878886dadedd72d6839dfe3edabde", + "production_tuning_allowed": false, + "request": { + "day": 24, + "hour": 19, + "house_system": "Placidus", + "kp_ayanamsa": "Krishnamurti", + "latitude": 37.3382, + "local_ayanamsa": "lahiri", + "longitude": -122.0383, + "minute": 15, + "month": 2, + "second": 0, + "timezone": "America/Los_Angeles", + "tz_offset": -8, + "year": 1955 + }, + "scope": "ul_a7_a10_kp_cusp_same_input_parity_probe", + "summary": { + "external_ready_field_count": 0, + "field_count": 4, + "local_ready_count": 4, + "three_engine_parity_ready_count": 0 + }, + "truth_matrix_allowed": false +} diff --git a/references/oracle/ul_a7_a10_kp_cusp_three_engine_parity_gap_2026_07_22.json b/references/oracle/ul_a7_a10_kp_cusp_three_engine_parity_gap_2026_07_22.json new file mode 100644 index 00000000..6c898fe8 --- /dev/null +++ b/references/oracle/ul_a7_a10_kp_cusp_three_engine_parity_gap_2026_07_22.json @@ -0,0 +1,79 @@ +{ + "scope": "ul_a7_a10_kp_cusp_three_engine_parity_gap", + "created_at": "2026-07-22", + "claim_status": "blocked", + "truth_matrix_allowed": false, + "production_tuning_allowed": false, + "summary": { + "field_count": 4, + "three_engine_parity_ready_count": 0, + "local_runtime_ready_count": 4, + "external_raw_ready_count": 1, + "blocked_field_count": 4 + }, + "field_rows": [ + { + "field": "UL", + "local_status": "runtime_ready", + "local_source": "scripts.active_rectification_questions.recast_candidate_layers / jaimini.calc_arudha_padas", + "external_engine_status": { + "PyJHora": "not_yet_captured_for_same_input", + "jyotishganit": "no_mapped_field_contract", + "VedicAstro": "no_equivalent_UL_field_confirmed", + "VedAstro": "hosted_method_identity_blocked" + }, + "claim_boundary": "Use local UL as interpretation/candidate signal only; no external three-engine parity claim." + }, + { + "field": "A7", + "local_status": "runtime_ready", + "local_source": "scripts.active_rectification_questions.recast_candidate_layers / jaimini.calc_arudha_padas", + "external_engine_status": { + "PyJHora": "not_yet_captured_for_same_input", + "jyotishganit": "no_mapped_field_contract", + "VedicAstro": "no_equivalent_A7_field_confirmed", + "VedAstro": "hosted_method_identity_blocked" + }, + "claim_boundary": "Use local A7/Darapada as relationship image signal only; no external three-engine parity claim." + }, + { + "field": "A10", + "local_status": "runtime_ready", + "local_source": "scripts.active_rectification_questions.recast_candidate_layers / jaimini.calc_arudha_padas", + "external_engine_status": { + "PyJHora": "not_yet_captured_for_same_input", + "jyotishganit": "no_mapped_field_contract", + "VedicAstro": "no_equivalent_A10_field_confirmed", + "VedAstro": "hosted_method_identity_blocked" + }, + "claim_boundary": "Use local A10/Karma Pada as career image signal only; no external three-engine parity claim." + }, + { + "field": "KP cusp star/sub/sub-sub", + "local_status": "runtime_ready", + "local_source": "scripts/active_rectification_questions.py and scripts/vedicastro_kp_house_cusp_probe.py", + "external_engine_status": { + "VedicAstro": "single_external_raw_observation_ready", + "PyJHora": "not_yet_captured_for_same_input", + "jyotishganit": "no_KP_cusp_contract", + "public_worked_example": "blocked" + }, + "claim_boundary": "KP cusp raw may be shown as observation-only; no exact timing oracle or public worked-example parity claim." + } + ], + "required_to_close": [ + "one canonical same-input request including birth/question time, location, timezone, ayanamsa and node mode", + "UL/A7/A10 expected values from at least two independent legal external engines or worked examples", + "KP cusp exact longitude plus star/sub/sub-sub from at least two independent legal external engines or one public numeric worked example plus runtime replay", + "field-level raw hashes and schema fingerprints for every engine", + "method-variant notes for Jaimini Arudha exceptions and KP house system" + ], + "allowed_runtime_use": "local_candidate_signal_only", + "blocked_runtime_use": [ + "three_engine_parity_pass", + "birth_time_truth", + "verified exact timing claim", + "production tuning" + ], + "boundary": "UL/A7/A10/KP cusp parity is not closed. Local and VedicAstro observation layers are useful, but high-rigor claims must stay blocked until same-input external raw/field comparison exists." +} diff --git a/scripts/high_rigor_closure_gate.py b/scripts/high_rigor_closure_gate.py index e78aa882..6a0e7337 100644 --- a/scripts/high_rigor_closure_gate.py +++ b/scripts/high_rigor_closure_gate.py @@ -39,6 +39,10 @@ def build_report() -> dict[str, Any]: kp_contract = _load(ORACLE / "kp_cusp_precision_contract_2026_07_19.json") prashna_packet = _load(ORACLE / "prashna_tajika_saham_gulika_sphuta_oracle_packet_2026_07_19.json") formula_kb = _load(ORACLE / "formula_source_knowledge_base_2026_07_19.json") + raman_replay = _load(ORACLE / "raman_shadbala_raw_replay_and_input_drift_2026_07_22.json") + shadbala_component_queue = _load(ORACLE / "shadbala_component_arbitration_queue_v2_2026_07_22.json") + rectification_external_parity = _load(ORACLE / "ul_a7_a10_kp_cusp_three_engine_parity_gap_2026_07_22.json") + rectification_same_input_probe = _load(ORACLE / "ul_a7_a10_kp_cusp_same_input_parity_probe_2026_07_22.json") holdout = _load(ROOT / "references/real_case_calibration/day_level_holdout_v3_human_annotation_packet_2026_07_19.json") full_scoring = [] @@ -85,6 +89,27 @@ def build_report() -> dict[str, Any]: "evidence": full_scoring, "claim_boundary": "KP, Muhurta, advanced Ashtakavarga and advanced compatibility have registries/probes, but full scoring remains blocked or partial.", }, + { + "gate_id": "raman_shadbala_raw_identity", + "status": "blocked", + "evidence": raman_replay, + "claim_boundary": "Raman Shadbala remains blocked because the declared 2026-06-27 stdout is absent and fresh replay proves input-contract drift.", + }, + { + "gate_id": "shadbala_component_arbitration", + "status": "partial", + "evidence": shadbala_component_queue, + "claim_boundary": "Only Naisargika is same-unit closed; Chesta, Dig, Drik, Kala and Sthana remain component arbitration items.", + }, + { + "gate_id": "rectification_external_parity", + "status": "blocked", + "evidence": { + "gap_packet": rectification_external_parity, + "same_input_probe": rectification_same_input_probe, + }, + "claim_boundary": "UL/A7/A10/KP cusp same-input external three-engine parity is not closed, so rectification can use these as local candidate signals only.", + }, ] return { @@ -117,6 +142,21 @@ def build_report() -> dict[str, Any]: "blocked_by": ["full_scoring_contracts", "external_numeric_oracle", "independent_negative_holdout"], "target": "KP/Muhurta/AV/compatibility scoring", }, + { + "action": "recapture_or_replace_raman_shadbala_sample", + "blocked_by": ["raman_shadbala_raw_identity"], + "target": "raw-backed third Shadbala case for D3/Sapta/Sthana audits", + }, + { + "action": "arbitrate_shadbala_components", + "blocked_by": ["shadbala_component_arbitration", "external_numeric_oracle"], + "target": "Chesta mean-motion/retrograde/Seeghrochcha plus Dig/Drik/Kala/Sthana variants", + }, + { + "action": "capture_ul_a7_a10_kp_cusp_external_parity", + "blocked_by": ["rectification_external_parity"], + "target": "same-input UL/A7/A10/KP cusp external raw and field comparison", + }, ], } diff --git a/scripts/pyjhora_raman_shadbala_replay.py b/scripts/pyjhora_raman_shadbala_replay.py new file mode 100644 index 00000000..3594aed8 --- /dev/null +++ b/scripts/pyjhora_raman_shadbala_replay.py @@ -0,0 +1,165 @@ +#!/usr/bin/env python3 +"""Replay the missing Raman Shadbala raw artifact through installed PyJHora. + +This is a black-box observation runner. It imports the installed `jhora` +package, records stdout-like raw values and hashes, and compares them to the +pending Raman packet. It does not copy PyJHora implementation code. +""" +from __future__ import annotations + +import hashlib +import json +from pathlib import Path +from typing import Any + + +ROOT = Path(__file__).resolve().parents[1] +PENDING = ROOT / "references/oracle/artifacts/pending_packets/external_template_synthetic_north_china_shadbala_raman_pyjhora_20260627.json" +ARTIFACT = ROOT / "references/oracle/artifacts/pyjhora_synthetic_north_china_shadbala_raman_stdout_20260722.txt" +PACKET = ROOT / "references/oracle/raman_shadbala_raw_replay_and_input_drift_2026_07_22.json" +PLANETS = ["Sun", "Moon", "Mars", "Mercury", "Jupiter", "Venus", "Saturn"] +COMPONENTS = ["sthana", "kala", "dig", "chesta", "naisargika", "drik"] + + +def _sha256_text(text: str) -> str: + return hashlib.sha256(text.encode("utf-8")).hexdigest() + + +def _round_rupa(raw: list[list[float]]) -> dict[str, dict[str, float]]: + out: dict[str, dict[str, float]] = {} + for planet_index, planet in enumerate(PLANETS): + row = {} + for component_index, component in enumerate(COMPONENTS): + row[component] = round(float(raw[component_index][planet_index]) / 60.0, 4) + row["total_rupa"] = round(float(raw[6][planet_index]) / 60.0, 4) + out[planet] = row + return out + + +def _replay_case(case: dict[str, Any]) -> dict[str, Any]: + from jhora import utils + from jhora.panchanga import drik + from jhora.horoscope.chart import strength + + drik.set_ayanamsa_mode("Raman") + jd = utils.julian_day_number( + (case["year"], case["month"], case["day"]), + (case["hour"], case["minute"], case.get("second", 0)), + ) + place = drik.Place(case["label"], case["lat"], case["lon"], case["tz"]) + raw = strength.shad_bala(jd, place) + chesta_new = strength._cheshta_bala_new(jd, place) # black-box call; no implementation copied + try: + chesta_legacy = strength._cheshta_bala(jd, place) + legacy_status = {"status": "ok", "values": chesta_legacy} + except Exception as exc: # noqa: BLE001 - artifact should capture exact black-box failure type + legacy_status = {"status": "error", "error_type": type(exc).__name__, "error": str(exc)} + return { + "case": case, + "julian_day": jd, + "ayanamsa_value": drik.get_ayanamsa_value(jd), + "raw_virupa": raw, + "component_rupa": _round_rupa(raw), + "chesta_new": chesta_new, + "chesta_legacy": legacy_status, + } + + +def _diff_against_pending(component_rupa: dict[str, dict[str, float]], pending: dict[str, Any]) -> dict[str, Any]: + target = pending["target_placeholders"]["target.shadbala_components"] + diffs = [] + for planet in PLANETS: + for component in ["sthana", "dig", "kala", "chesta", "naisargika", "drik", "total_rupa"]: + observed = component_rupa[planet][component] + expected = target[planet][component] + diffs.append({ + "planet": planet, + "component": component, + "observed": observed, + "pending_expected": expected, + "abs_diff": round(abs(observed - expected), 4), + }) + return { + "max_abs_diff": max(row["abs_diff"] for row in diffs), + "within_0001_count": sum(row["abs_diff"] <= 0.0001 for row in diffs), + "row_count": len(diffs), + "diffs": diffs, + } + + +def build() -> dict[str, Any]: + pending = json.loads(PENDING.read_text(encoding="utf-8")) + birth = pending["birth"] + cases = [ + {"label": "declared_packet_coordinates", **birth}, + { + "label": "handan_candidate_coordinates", + "year": birth["year"], + "month": birth["month"], + "day": birth["day"], + "hour": birth["hour"], + "minute": birth["minute"], + "second": birth.get("second", 0), + "lat": 36.6, + "lon": 114.5, + "tz": birth["tz"], + }, + ] + replays = [_replay_case(case) for case in cases] + artifact_body = "\n".join( + [ + "SOURCE_ENV installed jhora black-box import; AGPL implementation not copied", + "CAPTURE_DATE 2026-07-22", + "PENDING_PACKET references/oracle/artifacts/pending_packets/external_template_synthetic_north_china_shadbala_raman_pyjhora_20260627.json", + "NOTE Replays declared packet coordinates and Handan candidate coordinates because existing packet metadata conflicts with case naming/history.", + "REPLAY_JSON " + json.dumps(replays, ensure_ascii=False, sort_keys=True), + ] + ) + "\n" + ARTIFACT.write_text(artifact_body, encoding="utf-8") + comparisons = [ + { + "case_label": replay["case"]["label"], + "pending_diff": _diff_against_pending(replay["component_rupa"], pending), + } + for replay in replays + ] + return { + "scope": "raman_shadbala_raw_replay_and_input_drift", + "created_at": "2026-07-22", + "claim_status": "blocked", + "truth_matrix_allowed": False, + "production_tuning_allowed": False, + "pending_packet": str(PENDING.relative_to(ROOT)), + "replay_artifact": str(ARTIFACT.relative_to(ROOT)), + "replay_artifact_sha256": hashlib.sha256(ARTIFACT.read_bytes()).hexdigest(), + "summary": { + "replay_case_count": len(replays), + "pending_declared_artifact_found": (ROOT / pending["metadata"]["source_artifact"]).exists(), + "best_case_label_by_max_diff": min(comparisons, key=lambda row: row["pending_diff"]["max_abs_diff"])["case_label"], + "complete_match_count": sum(row["pending_diff"]["max_abs_diff"] <= 0.0001 for row in comparisons), + "can_promote_raman_sample": False, + }, + "comparisons": comparisons, + "chesta_variant_observation": { + "legacy_api_status": replays[0]["chesta_legacy"]["status"], + "new_api_present": True, + "boundary": "PyJHora exposes at least two Chesta paths; this replay records behavior but does not choose a formula truth.", + }, + "boundary": ( + "Raman Shadbala sample is not promoted: the declared raw artifact is " + "absent and fresh black-box replay does not exactly match the pending " + "target values under the declared coordinates. Handan-like coordinates " + "are closer, proving an input-contract drift that needs human/source review." + ), + } + + +def main() -> int: + packet = build() + PACKET.write_text(json.dumps(packet, ensure_ascii=False, indent=2, sort_keys=True) + "\n", encoding="utf-8") + print(json.dumps(packet, ensure_ascii=False, indent=2, sort_keys=True)) + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/scripts/shadbala_component_arbitration_queue_v2.py b/scripts/shadbala_component_arbitration_queue_v2.py new file mode 100644 index 00000000..bdf3078f --- /dev/null +++ b/scripts/shadbala_component_arbitration_queue_v2.py @@ -0,0 +1,123 @@ +#!/usr/bin/env python3 +"""Build Shadbala component arbitration queue v2 from same-unit joined rows.""" +from __future__ import annotations + +import hashlib +import json +from collections import Counter, defaultdict +from pathlib import Path +from typing import Any + + +ROOT = Path(__file__).resolve().parents[1] +JOINED = ROOT / "references/oracle/shadbala_component_joined_closure_packet_2026_07_21.json" +OUTPUT = ROOT / "references/oracle/shadbala_component_arbitration_queue_v2_2026_07_22.json" + + +COMPONENT_POLICY = { + "naisargika": { + "status": "component_closed_same_unit", + "next": "preserve regression coverage; no formula change", + }, + "dig": { + "status": "formula_model_arbitration_required", + "next": "compare angular-distance, house-midpoint and bhava-madhya models against more raw-backed cases", + }, + "drik": { + "status": "aspect_model_arbitration_required", + "next": "fix graha drishti/aspect strength scale and benefic-malefic aggregation source", + }, + "kala": { + "status": "subcomponent_arbitration_required", + "next": "split natonnata, paksha, ayana, day/night and hora subcomponents before tuning", + }, + "sthana": { + "status": "saptavarga_dignity_arbitration_required", + "next": "resolve Sapta/D3/D4/D7/D12/D30 dignity branches only with raw-backed third case", + }, + "chesta": { + "status": "method_variant_arbitration_required", + "next": "compare mean-motion, retrograde/stationary and Seeghrochcha variants without copying AGPL code", + }, +} + + +def _stable_json(data: Any) -> str: + return json.dumps(data, ensure_ascii=False, sort_keys=True, separators=(",", ":")) + + +def build() -> dict[str, Any]: + joined = json.loads(JOINED.read_text(encoding="utf-8")) + rows = joined["joined_rows"] + by_component: dict[str, list[dict[str, Any]]] = defaultdict(list) + for row in rows: + by_component[row["component"]].append(row) + + component_rows = [] + for component in sorted(by_component): + component_items = by_component[component] + buckets = Counter(row["closure_bucket"] for row in component_items) + policy = COMPONENT_POLICY[component] + unresolved = sum( + count for bucket, count in buckets.items() + if bucket not in {"within_tolerance", "component_closed_same_unit"} + ) + component_rows.append({ + "component": component, + "row_count": len(component_items), + "closure_bucket_counts": dict(sorted(buckets.items())), + "unresolved_row_count": unresolved, + "arbitration_status": policy["status"], + "next_evidence": policy["next"], + "sample_tickets": [row["ticket_id"] for row in component_items[:3]], + }) + + summary = { + "component_count": len(component_rows), + "same_unit_row_count": len(rows), + "component_closed_count": sum( + 1 for row in component_rows if row["arbitration_status"] == "component_closed_same_unit" + ), + "arbitration_required_count": sum( + 1 for row in component_rows if row["arbitration_status"] != "component_closed_same_unit" + ), + "absolute_truth_upgrade_count": 0, + } + report = { + "scope": "shadbala_component_arbitration_queue_v2", + "created_at": "2026-07-22", + "claim_status": "partial", + "truth_matrix_allowed": False, + "production_tuning_allowed": False, + "source_packet": str(JOINED.relative_to(ROOT)), + "source_packet_sha256": hashlib.sha256(JOINED.read_bytes()).hexdigest(), + "oss_reference_candidates": [ + { + "id": "dashaflow_shadbala", + "path": "references/open_source_sources/dashaflow/shadbala.py", + "use": "permissive/reference candidate only", + "boundary": "Simplified Chesta/Dig/Saptavarga model; do not treat as numeric oracle truth.", + } + ], + "summary": summary, + "component_rows": component_rows, + "queue_hash": hashlib.sha256(_stable_json(component_rows).encode("utf-8")).hexdigest(), + "boundary": ( + "This queue makes component-level blockers explicit. Naisargika is " + "same-unit closed; Dig/Drik/Kala/Sthana/Chesta remain arbitration " + "items and do not upgrade absolute Shadbala truth." + ), + } + return report + + +def main() -> int: + report = build() + rendered = json.dumps(report, ensure_ascii=False, indent=2, sort_keys=True) + OUTPUT.write_text(rendered + "\n", encoding="utf-8") + print(rendered) + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/scripts/shadbala_dig_source_of_truth_audit.py b/scripts/shadbala_dig_source_of_truth_audit.py index e8a24976..6497aecc 100644 --- a/scripts/shadbala_dig_source_of_truth_audit.py +++ b/scripts/shadbala_dig_source_of_truth_audit.py @@ -3,6 +3,8 @@ from __future__ import annotations +import argparse +import hashlib import json import math import os @@ -35,6 +37,15 @@ def _load_oracle(path: str) -> dict[str, Any]: return oracle_boundary_audit._load_oracle(str(resolved)) +def _resolve_path(path: str) -> Path: + candidate = Path(path) + return candidate if candidate.is_absolute() else ROOT / candidate + + +def _sha256(path: Path) -> str: + return hashlib.sha256(path.read_bytes()).hexdigest() + + def _iter_external_verified_template_cases(oracle: dict[str, Any]) -> list[dict[str, Any]]: out: list[dict[str, Any]] = [] for case in oracle.get("template_cases", []): @@ -102,6 +113,7 @@ def _best_bhava_madhya_lon(chart: dict[str, Any], planet: str) -> float: def build_report(oracle_file: str) -> dict[str, Any]: oracle = _load_oracle(oracle_file) cases = _iter_external_verified_template_cases(oracle) + resolved_oracle = _resolve_path(oracle_file) rows: list[dict[str, Any]] = [] model_diffs: dict[str, list[float]] = {name: [] for name in MODEL_NAMES} @@ -153,6 +165,22 @@ def build_report(oracle_file: str) -> dict[str, Any]: "scope": "shadbala_dig_source_of_truth_audit", "schema_version": 1, "candidate_models": MODEL_NAMES, + "inputs": { + "oracle_file": str(resolved_oracle.relative_to(ROOT)), + "oracle_file_sha256": _sha256(resolved_oracle), + "external_case_count": len(cases), + "external_case_sources": [ + { + "case_id": case.get("id") or case.get("case_id"), + "source_artifact": case.get("evidence_packet", {}).get("metadata", {}).get("source_artifact", ""), + "source_artifact_sha256": _sha256(source_path) + if (source_artifact := case.get("evidence_packet", {}).get("metadata", {}).get("source_artifact")) + and (source_path := _resolve_path(source_artifact)).exists() + else None, + } + for case in cases + ], + }, "summary": { "case_count": len(cases), "row_count": len(rows), @@ -168,8 +196,18 @@ def build_report(oracle_file: str) -> dict[str, Any]: def main() -> None: - report = build_report("references/oracle/dasha_shadbala_oracle_cases.json") - print(json.dumps(report, ensure_ascii=False, indent=2)) + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument( + "--oracle-file", + default="references/oracle/dasha_shadbala_oracle_cases.json", + ) + parser.add_argument("--output", help="Optional JSON snapshot path.") + args = parser.parse_args() + report = build_report(args.oracle_file) + rendered = json.dumps(report, ensure_ascii=False, indent=2) + if args.output: + Path(args.output).write_text(rendered + "\n", encoding="utf-8") + print(rendered) if __name__ == "__main__": diff --git a/scripts/ul_a7_a10_kp_cusp_same_input_parity_probe.py b/scripts/ul_a7_a10_kp_cusp_same_input_parity_probe.py new file mode 100644 index 00000000..1f0e1795 --- /dev/null +++ b/scripts/ul_a7_a10_kp_cusp_same_input_parity_probe.py @@ -0,0 +1,185 @@ +#!/usr/bin/env python3 +"""Build same-input parity packet for UL/A7/A10/KP cusp fields. + +The packet deliberately separates local runtime observations from external +parity. It does not claim three-engine parity unless each field has enough +same-input external raw rows. +""" +from __future__ import annotations + +import argparse +import hashlib +import json +from datetime import datetime +from pathlib import Path +from types import SimpleNamespace +from typing import Any + +from scripts.active_rectification_questions import recast_candidate_layers +from scripts.vedicastro_kp_house_cusp_probe import build as build_vedicastro_kp + + +ROOT = Path(__file__).resolve().parents[1] +OUTPUT = ROOT / "references/oracle/ul_a7_a10_kp_cusp_same_input_parity_probe_2026_07_22.json" + + +def stable(data: Any) -> str: + return json.dumps(data, ensure_ascii=False, sort_keys=True, separators=(",", ":"), default=str) + + +def _local_observation(args: argparse.Namespace) -> dict[str, Any]: + candidate = datetime(args.year, args.month, args.day, args.hour, args.minute, args.second) + recast = recast_candidate_layers( + candidate, + lat=args.latitude, + lon=args.longitude, + tz=args.tz_offset, + ayanamsa=args.local_ayanamsa, + ) + if not recast: + return {"status": "error", "error": "local recast returned null"} + arudha = recast.get("arudha") or {} + return { + "status": "complete", + "engine": "local", + "fields": { + "UL": arudha.get("UL"), + "A7": arudha.get("A7"), + "A10": arudha.get("A10"), + "KP_cusps": recast.get("kp_cusps"), + }, + "raw_hash": hashlib.sha256(stable(recast).encode("utf-8")).hexdigest(), + "raw": recast, + } + + +def _vedicastro_observation(args: argparse.Namespace) -> dict[str, Any]: + try: + payload = build_vedicastro_kp(SimpleNamespace( + 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.kp_ayanamsa, + house_system=args.house_system, + )) + return { + "status": "complete", + "engine": "VedicAstro", + "fields": { + "KP_cusps": payload.get("raw", {}).get("houses"), + }, + "raw_hash": payload.get("raw_hash"), + "schema_fingerprint": payload.get("schema_fingerprint"), + "raw": payload.get("raw"), + "boundary": payload.get("boundary"), + } + except Exception as exc: # noqa: BLE001 - packet must capture exact runtime blocker + return { + "status": "blocked_runtime_error", + "engine": "VedicAstro", + "error_type": type(exc).__name__, + "error": str(exc), + } + + +def build(args: argparse.Namespace) -> dict[str, Any]: + request = { + "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, + "tz_offset": args.tz_offset, + "local_ayanamsa": args.local_ayanamsa, + "kp_ayanamsa": args.kp_ayanamsa, + "house_system": args.house_system, + } + observations = [ + _local_observation(args), + _vedicastro_observation(args), + { + "status": "not_captured", + "engine": "PyJHora", + "missing_fields": ["UL", "A7", "A10", "KP_cusps"], + "boundary": "AGPL black-box capture required; no same-input raw packet exists.", + }, + { + "status": "no_field_contract", + "engine": "jyotishganit", + "missing_fields": ["UL", "A7", "A10", "KP_cusps"], + "boundary": "No mapped same-input Arudha/KP cusp field contract exists.", + }, + ] + field_rows = [] + for field in ["UL", "A7", "A10", "KP_cusps"]: + external_ready = [ + obs["engine"] + for obs in observations + if obs["engine"] != "local" + and obs["status"] == "complete" + and (obs.get("fields") or {}).get(field) + ] + field_rows.append({ + "field": field, + "local_ready": observations[0]["status"] == "complete" and bool((observations[0].get("fields") or {}).get(field)), + "external_ready_engines": external_ready, + "external_ready_count": len(external_ready), + "three_engine_parity_status": "blocked", + "claim_boundary": f"{field} remains observation-only until same-input external raw from at least two independent legal sources is captured.", + }) + return { + "scope": "ul_a7_a10_kp_cusp_same_input_parity_probe", + "created_at": "2026-07-22", + "claim_status": "blocked", + "truth_matrix_allowed": False, + "production_tuning_allowed": False, + "request": request, + "summary": { + "field_count": len(field_rows), + "local_ready_count": sum(row["local_ready"] for row in field_rows), + "three_engine_parity_ready_count": 0, + "external_ready_field_count": sum(row["external_ready_count"] > 0 for row in field_rows), + }, + "observations": observations, + "field_rows": field_rows, + "packet_hash": hashlib.sha256(stable({"request": request, "field_rows": field_rows}).encode("utf-8")).hexdigest(), + "boundary": "Same-input probe only. UL/A7/A10/KP cusp external three-engine parity remains blocked.", + } + + +def main() -> int: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--year", type=int, default=1955) + parser.add_argument("--month", type=int, default=2) + parser.add_argument("--day", type=int, default=24) + parser.add_argument("--hour", type=int, default=19) + parser.add_argument("--minute", type=int, default=15) + parser.add_argument("--second", type=int, default=0) + parser.add_argument("--latitude", type=float, default=37.3382) + parser.add_argument("--longitude", type=float, default=-122.0383) + parser.add_argument("--timezone", default="America/Los_Angeles") + parser.add_argument("--tz-offset", type=float, default=-8) + parser.add_argument("--local-ayanamsa", default="lahiri") + parser.add_argument("--kp-ayanamsa", default="Krishnamurti") + parser.add_argument("--house-system", default="Placidus") + parser.add_argument("--output", default=str(OUTPUT)) + args = parser.parse_args() + packet = build(args) + text = json.dumps(packet, ensure_ascii=False, indent=2, sort_keys=True) + Path(args.output).write_text(text + "\n", encoding="utf-8") + print(text) + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/tests/test_oracle_closure_packets_v2.py b/tests/test_oracle_closure_packets_v2.py new file mode 100644 index 00000000..3a449e3d --- /dev/null +++ b/tests/test_oracle_closure_packets_v2.py @@ -0,0 +1,56 @@ +from __future__ import annotations + +import json +from pathlib import Path + + +ROOT = Path(__file__).resolve().parents[1] +PACKETS = { + "kp": ROOT / "references/oracle/kp_exact_cusp_public_worked_example_hunt_v2_2026_07_22.json", + "muhurta": ROOT / "references/oracle/muhurta_full_scoring_closure_queue_v2_2026_07_22.json", + "prashna": ROOT / "references/oracle/prashna_tajika_saham_gulika_sphuta_numeric_packet_queue_v2_2026_07_22.json", + "holdout": ROOT / "references/oracle/timing_rectification_holdout_freeze_contract_2026_07_22.json", +} + + +def read_packet(name: str) -> dict: + return json.loads(PACKETS[name].read_text(encoding="utf-8")) + + +def test_kp_exact_cusp_v2_remains_blocked_without_complete_public_oracle() -> None: + packet = read_packet("kp") + assert packet["claim_status"] == "blocked" + assert packet["summary"]["complete_numeric_oracle_count"] == 0 + assert packet["summary"]["runtime_observation_sync_allowed"] is True + assert {"exact_cusp_longitudes", "cusp_sub_sub_lord"} <= set(packet["required_numeric_oracle_fields"]) + assert "no verified KP prediction claim" in packet["boundary"] + + +def test_muhurta_full_scoring_v2_exposes_factors_but_blocks_final_verdict() -> None: + packet = read_packet("muhurta") + factors = {row["factor"]: row for row in packet["factor_rows"]} + for required in ["Tarabala", "Chandrabala", "Rahu Kalam", "Yamaganda", "Gulika Kalam", "Abhijit Muhurta", "Panchaka", "Sankranti"]: + assert required in factors + assert packet["summary"]["final_verdict_allowed"] is False + assert factors["Panchaka"]["status"] == "blocked_gap" + assert factors["Sankranti"]["status"] == "blocked_gap" + assert "Full scoring" in packet["boundary"] + + +def test_prashna_tajika_v2_keeps_sensitive_points_out_of_truth_matrix() -> None: + packet = read_packet("prashna") + domains = {row["domain"]: row for row in packet["domain_rows"]} + for required in ["Prashna", "Sphuta", "Gulika", "Saham", "Tajika/Varshaphala"]: + assert required in domains + assert packet["summary"]["numeric_oracle_ready_count"] == 0 + assert packet["truth_matrix_allowed"] is False + assert "No Prashna/Tajika/Saham/Gulika/Sphuta domain is upgraded" in packet["boundary"] + + +def test_timing_holdout_freeze_contract_blocks_day_month_claims_until_labels() -> None: + packet = read_packet("holdout") + assert packet["claim_status"] == "blocked" + assert packet["summary"]["frozen_label_count"] == 0 + assert packet["summary"]["day_month_claim_upgrade_allowed"] is False + assert packet["allowed_runtime_output"]["candidate_windows"] == "exploratory_unvalidated" + assert "birth-time truth from candidate score" in packet["blocked_output"] diff --git a/tests/test_raman_shadbala_raw_replay_and_input_drift.py b/tests/test_raman_shadbala_raw_replay_and_input_drift.py new file mode 100644 index 00000000..992bb2f3 --- /dev/null +++ b/tests/test_raman_shadbala_raw_replay_and_input_drift.py @@ -0,0 +1,38 @@ +from __future__ import annotations + +import json +import subprocess +from pathlib import Path + + +ROOT = Path(__file__).resolve().parents[1] +PACKET = ROOT / "references/oracle/raman_shadbala_raw_replay_and_input_drift_2026_07_22.json" +ARTIFACT = ROOT / "references/oracle/artifacts/pyjhora_synthetic_north_china_shadbala_raman_stdout_20260722.txt" + + +def test_raman_shadbala_replay_records_raw_hash_and_blocks_promotion() -> None: + subprocess.check_call(["python3", "scripts/pyjhora_raman_shadbala_replay.py"], cwd=ROOT) + packet = json.loads(PACKET.read_text(encoding="utf-8")) + assert packet["claim_status"] == "blocked" + assert packet["summary"]["can_promote_raman_sample"] is False + assert packet["summary"]["complete_match_count"] == 0 + assert packet["summary"]["pending_declared_artifact_found"] is False + assert ARTIFACT.exists() + assert packet["replay_artifact_sha256"] + + +def test_raman_shadbala_replay_proves_input_contract_drift() -> None: + packet = json.loads(PACKET.read_text(encoding="utf-8")) + comparisons = {row["case_label"]: row["pending_diff"] for row in packet["comparisons"]} + declared = comparisons["declared_packet_coordinates"]["max_abs_diff"] + handan = comparisons["handan_candidate_coordinates"]["max_abs_diff"] + assert handan < declared + assert packet["summary"]["best_case_label_by_max_diff"] == "handan_candidate_coordinates" + assert "input-contract drift" in packet["boundary"] + + +def test_raman_shadbala_replay_captures_chesta_variant_boundary() -> None: + packet = json.loads(PACKET.read_text(encoding="utf-8")) + assert packet["chesta_variant_observation"]["new_api_present"] is True + assert packet["chesta_variant_observation"]["legacy_api_status"] in {"ok", "error"} + assert "does not choose a formula truth" in packet["chesta_variant_observation"]["boundary"] diff --git a/tests/test_shadbala_component_arbitration_queue_v2.py b/tests/test_shadbala_component_arbitration_queue_v2.py new file mode 100644 index 00000000..d9cfd881 --- /dev/null +++ b/tests/test_shadbala_component_arbitration_queue_v2.py @@ -0,0 +1,32 @@ +from __future__ import annotations + +import json +import subprocess +from pathlib import Path + + +ROOT = Path(__file__).resolve().parents[1] +PACKET = ROOT / "references/oracle/shadbala_component_arbitration_queue_v2_2026_07_22.json" + + +def test_shadbala_component_arbitration_queue_v2_is_stable_and_guarded() -> None: + subprocess.check_call(["python3", "scripts/shadbala_component_arbitration_queue_v2.py"], cwd=ROOT) + packet = json.loads(PACKET.read_text(encoding="utf-8")) + assert packet["scope"] == "shadbala_component_arbitration_queue_v2" + assert packet["claim_status"] == "partial" + assert packet["truth_matrix_allowed"] is False + assert packet["production_tuning_allowed"] is False + assert packet["summary"]["same_unit_row_count"] == 42 + assert packet["summary"]["absolute_truth_upgrade_count"] == 0 + + +def test_shadbala_component_arbitration_queue_v2_closes_only_naisargika() -> None: + packet = json.loads(PACKET.read_text(encoding="utf-8")) + rows = {row["component"]: row for row in packet["component_rows"]} + assert rows["naisargika"]["arbitration_status"] == "component_closed_same_unit" + assert rows["naisargika"]["unresolved_row_count"] == 0 + for component in ["dig", "drik", "kala", "sthana", "chesta"]: + assert rows[component]["arbitration_status"] != "component_closed_same_unit" + assert rows[component]["unresolved_row_count"] > 0 + assert "Seeghrochcha" in rows["chesta"]["next_evidence"] + assert "raw-backed third case" in rows["sthana"]["next_evidence"] diff --git a/tests/test_shadbala_dig_source_of_truth_audit.py b/tests/test_shadbala_dig_source_of_truth_audit.py index 8b80aa18..6b3af6c1 100644 --- a/tests/test_shadbala_dig_source_of_truth_audit.py +++ b/tests/test_shadbala_dig_source_of_truth_audit.py @@ -3,9 +3,19 @@ from __future__ import annotations +import json +import subprocess +import sys +from pathlib import Path + from scripts.shadbala_dig_source_of_truth_audit import build_report +ROOT = Path(__file__).resolve().parents[1] +SNAPSHOT = ROOT / "references/oracle/shadbala_dig_source_of_truth_audit_2026_07_22.json" +INDEX = ROOT / "references/oracle/evidence_packet_index_2026_07_19.json" + + def test_shadbala_dig_source_of_truth_audit_compares_three_candidate_models() -> None: report = build_report("references/oracle/dasha_shadbala_oracle_cases.json") @@ -18,4 +28,41 @@ def test_shadbala_dig_source_of_truth_audit_compares_three_candidate_models() -> } assert report["summary"]["best_model_by_avg_abs_diff"] in report["candidate_models"] assert report["rows"] + assert report["inputs"]["oracle_file_sha256"] + assert report["inputs"]["external_case_count"] == 2 + assert { + row["case_id"] for row in report["inputs"]["external_case_sources"] + } == {"template_steve_jobs_dasha_lahiri", "template_extreme_latitude_kp"} + assert all(row["source_artifact"] for row in report["inputs"]["external_case_sources"]) + +def test_shadbala_dig_source_of_truth_audit_writes_reproducible_snapshot(tmp_path: Path) -> None: + output = tmp_path / "dig-audit.json" + completed = subprocess.run( + [ + sys.executable, + "scripts/shadbala_dig_source_of_truth_audit.py", + "--output", + str(output), + ], + cwd=ROOT, + text=True, + capture_output=True, + check=False, + ) + assert completed.returncode == 0, completed.stderr or completed.stdout + assert output.exists() + assert json.loads(output.read_text(encoding="utf-8")) == json.loads(completed.stdout) + + +def test_checked_in_dig_audit_snapshot_matches_generator_and_is_indexed() -> None: + assert json.loads(SNAPSHOT.read_text(encoding="utf-8")) == build_report( + "references/oracle/dasha_shadbala_oracle_cases.json" + ) + packets = { + row["packet_id"]: row + for row in json.loads(INDEX.read_text(encoding="utf-8"))["packets"] + } + packet = packets["shadbala_dig_source_of_truth_audit_2026_07_22"] + assert packet["claim_status"] == "partial" + assert packet["consumer_policy"] == "research_observation_only" diff --git a/tests/test_timing_rectification_public_holdout_candidate_queue.py b/tests/test_timing_rectification_public_holdout_candidate_queue.py new file mode 100644 index 00000000..61c09ccc --- /dev/null +++ b/tests/test_timing_rectification_public_holdout_candidate_queue.py @@ -0,0 +1,18 @@ +from __future__ import annotations + +import json +from pathlib import Path + + +ROOT = Path(__file__).resolve().parents[1] +PACKET = ROOT / "references/oracle/timing_rectification_public_holdout_candidate_queue_2026_07_22.json" + + +def test_public_holdout_candidate_queue_has_positive_sources_but_no_negative_labels() -> None: + packet = json.loads(PACKET.read_text(encoding="utf-8")) + assert packet["claim_status"] == "blocked_until_human_labels" + assert packet["summary"]["public_positive_event_candidate_count"] >= 3 + assert packet["summary"]["frozen_negative_window_count"] == 0 + assert packet["summary"]["day_month_claim_upgrade_allowed"] is False + assert all(row["source_url"].startswith("https://") for row in packet["positive_event_candidates"]) + assert "does not provide negative labels" in packet["boundary"] diff --git a/tests/test_ul_a7_a10_kp_cusp_same_input_parity_probe.py b/tests/test_ul_a7_a10_kp_cusp_same_input_parity_probe.py new file mode 100644 index 00000000..a3535e49 --- /dev/null +++ b/tests/test_ul_a7_a10_kp_cusp_same_input_parity_probe.py @@ -0,0 +1,33 @@ +from __future__ import annotations + +import json +import subprocess +from pathlib import Path + + +ROOT = Path(__file__).resolve().parents[1] +PACKET = ROOT / "references/oracle/ul_a7_a10_kp_cusp_same_input_parity_probe_2026_07_22.json" + + +def test_same_input_parity_probe_generates_local_fields_and_blocks_parity() -> None: + subprocess.check_call(["python3", "scripts/ul_a7_a10_kp_cusp_same_input_parity_probe.py"], cwd=ROOT) + packet = json.loads(PACKET.read_text(encoding="utf-8")) + assert packet["claim_status"] == "blocked" + assert packet["summary"]["field_count"] == 4 + assert packet["summary"]["local_ready_count"] == 4 + assert packet["summary"]["three_engine_parity_ready_count"] == 0 + fields = {row["field"]: row for row in packet["field_rows"]} + assert fields["UL"]["external_ready_count"] == 0 + assert fields["A7"]["external_ready_count"] == 0 + assert fields["A10"]["external_ready_count"] == 0 + assert fields["KP_cusps"]["three_engine_parity_status"] == "blocked" + + +def test_same_input_parity_probe_records_external_engine_boundaries() -> None: + packet = json.loads(PACKET.read_text(encoding="utf-8")) + observations = {row["engine"]: row for row in packet["observations"]} + assert observations["local"]["status"] == "complete" + assert observations["PyJHora"]["status"] == "not_captured" + assert observations["jyotishganit"]["status"] == "no_field_contract" + assert observations["VedicAstro"]["status"] in {"complete", "blocked_runtime_error"} + assert "three-engine parity remains blocked" in packet["boundary"] diff --git a/tests/test_ul_a7_a10_kp_cusp_three_engine_parity_gap.py b/tests/test_ul_a7_a10_kp_cusp_three_engine_parity_gap.py new file mode 100644 index 00000000..82d52a8b --- /dev/null +++ b/tests/test_ul_a7_a10_kp_cusp_three_engine_parity_gap.py @@ -0,0 +1,28 @@ +from __future__ import annotations + +import json +from pathlib import Path + + +ROOT = Path(__file__).resolve().parents[1] +PACKET = ROOT / "references/oracle/ul_a7_a10_kp_cusp_three_engine_parity_gap_2026_07_22.json" + + +def test_ul_a7_a10_kp_cusp_gap_blocks_three_engine_parity() -> None: + packet = json.loads(PACKET.read_text(encoding="utf-8")) + assert packet["claim_status"] == "blocked" + assert packet["truth_matrix_allowed"] is False + assert packet["summary"]["three_engine_parity_ready_count"] == 0 + assert packet["summary"]["blocked_field_count"] == 4 + assert "birth_time_truth" in packet["blocked_runtime_use"] + + +def test_ul_a7_a10_kp_cusp_gap_lists_all_required_fields() -> None: + packet = json.loads(PACKET.read_text(encoding="utf-8")) + rows = {row["field"]: row for row in packet["field_rows"]} + for field in ["UL", "A7", "A10", "KP cusp star/sub/sub-sub"]: + assert field in rows + assert rows[field]["local_status"] == "runtime_ready" + assert "claim_boundary" in rows[field] + assert rows["KP cusp star/sub/sub-sub"]["external_engine_status"]["VedicAstro"] == "single_external_raw_observation_ready" + assert rows["UL"]["external_engine_status"]["PyJHora"] == "not_yet_captured_for_same_input"