From 8410421005001a0e5bde9a69355cfd93656b0196 Mon Sep 17 00:00:00 2001 From: 732642856 <732642856@qq.com> Date: Sun, 19 Jul 2026 20:53:44 +0800 Subject: [PATCH] docs: sync vedicastro node blocker evidence --- ...ketu_node_mode_attribution_2026_07_19.json | 68 +++++++++++++++++++ .../evidence_packet_index_2026_07_19.json | 34 +++++++++- ...le_candidate_numeric_audit_2026_07_19.json | 46 +++++++++++++ ...lib_sidereal_install_probe_2026_07_19.json | 14 ++++ ...i_probe_flatlib_polars_tmp_2026_07_19.json | 44 ++++++++++++ ...stro_node_and_worked_example_candidates.py | 54 +++++++++++++++ 6 files changed, 259 insertions(+), 1 deletion(-) create mode 100644 references/oracle/d10_rahu_ketu_node_mode_attribution_2026_07_19.json create mode 100644 references/oracle/public_worked_example_candidate_numeric_audit_2026_07_19.json create mode 100644 references/oracle/vedicastro_flatlib_sidereal_install_probe_2026_07_19.json create mode 100644 references/oracle/vedicastro_kp_api_probe_flatlib_polars_tmp_2026_07_19.json create mode 100644 tests/test_vedicastro_node_and_worked_example_candidates.py diff --git a/references/oracle/d10_rahu_ketu_node_mode_attribution_2026_07_19.json b/references/oracle/d10_rahu_ketu_node_mode_attribution_2026_07_19.json new file mode 100644 index 00000000..0e11d46c --- /dev/null +++ b/references/oracle/d10_rahu_ketu_node_mode_attribution_2026_07_19.json @@ -0,0 +1,68 @@ +{ + "scope": "d10_rahu_ketu_node_mode_attribution", + "created_at": "2026-07-19", + "status": "attributed_to_node_longitude_boundary", + "claim_status": "partial", + "production_tuning_allowed": false, + "truth_matrix_allowed": false, + "source_comparison": "references/oracle/jyotishganit_vs_local_field_comparison_steve_jobs_2026_07_19.json", + "resolved_schema_issue": { + "issue": "D4 local key alias", + "local_aliases": ["D4_Chaturthamsa", "D4_Turyamsa"], + "effect": "D4 mismatches dropped after alias normalization; no formula rewrite was made." + }, + "formula_observation": { + "local_d10_formula": "Odd sign: sign + part; even sign: sign + 8 + part, 3° per part.", + "jyotishganit_d10_formula": "Odd sign: sign + part; even sign: sign + 8 + part, 3° per part.", + "formula_delta_status": "same_observed_formula_shape" + }, + "raw_node_boundary": { + "local": { + "node_mode": "mean", + "Rahu": { + "d1_sign": "Sagittarius", + "degree_in_sign": 9.274293923324649, + "d10_part_index_zero_based": 3, + "d10_sign": "Pisces" + }, + "Ketu": { + "d1_sign": "Gemini", + "degree_in_sign": 9.274293923324649, + "d10_part_index_zero_based": 3, + "d10_sign": "Virgo" + } + }, + "jyotishganit": { + "node_mode": "unspecified_in_probe", + "Rahu": { + "d1_sign": "Sagittarius", + "degree_in_sign": 8.653881856647075, + "d10_part_index_zero_based": 2, + "d10_sign": "Aquarius" + }, + "Ketu": { + "d1_sign": "Gemini", + "degree_in_sign": 8.653881856647104, + "d10_part_index_zero_based": 2, + "d10_sign": "Leo" + } + }, + "boundary_degrees": [0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30], + "delta_explanation": "Both nodes sit near the 9° D10 boundary. A ~0.62° D1 longitude delta changes part index 2→3, producing the one-sign D10 mismatch." + }, + "remaining_rows": [ + { + "section": "D10", + "body": "Rahu", + "probable_reason": "node_longitude_boundary_crossing", + "next_evidence_needed": ["node longitude raw", "mean_vs_true_node setting", "D10 shadow-planet varga formula", "jyotishganit source line attribution"] + }, + { + "section": "D10", + "body": "Ketu", + "probable_reason": "node_longitude_boundary_crossing", + "next_evidence_needed": ["node longitude raw", "mean_vs_true_node setting", "D10 shadow-planet varga formula", "jyotishganit source line attribution"] + } + ], + "boundary": "Do not tune Rahu/Ketu D10 to either engine until node longitude source, ayanamsa, and mean/true node settings are explicitly pinned." +} diff --git a/references/oracle/evidence_packet_index_2026_07_19.json b/references/oracle/evidence_packet_index_2026_07_19.json index 13f3fdc6..8d7a05ec 100644 --- a/references/oracle/evidence_packet_index_2026_07_19.json +++ b/references/oracle/evidence_packet_index_2026_07_19.json @@ -5,7 +5,7 @@ "production_tuning_allowed": false, "boundary": "Index of current governance packets only. Raw oracle artifacts remain in references/oracle/artifacts and are not all duplicated here.", "summary": { - "packet_count": 46, + "packet_count": 50, "blocked_or_partial_count": 40, "human_review_required_count": 1 }, @@ -377,6 +377,38 @@ "claim_status": "source_intake_only", "consumer_policy": "pin_hash_license_gate_before_runtime_use", "claim_boundary": "Open-source Jyotish projects may provide source candidates, probes, raw artifacts, and worked-example leads; they are not final truth until license, commit/hash, input contract, and field-level oracle gates close." + }, + { + "packet_id": "d10_rahu_ketu_node_mode_attribution", + "path": "references/oracle/d10_rahu_ketu_node_mode_attribution_2026_07_19.json", + "domain": "varga_node_mode", + "claim_status": "partial", + "consumer_policy": "research_to_commercial_contract_only", + "claim_boundary": "D10 Rahu/Ketu mismatch is attributed to node longitude and boundary crossing; do not tune formulas or assert engine truth until node mode/settings are pinned." + }, + { + "packet_id": "public_worked_example_candidate_numeric_audit", + "path": "references/oracle/public_worked_example_candidate_numeric_audit_2026_07_19.json", + "domain": "worked_example_collection", + "claim_status": "open_queue", + "consumer_policy": "research_to_commercial_contract_only", + "claim_boundary": "Candidate public pages are triaged only; no row is oracle-ready until exact input, settings, expected numeric values, raw/hash and replay are archived." + }, + { + "packet_id": "vedicastro_flatlib_sidereal_install_probe", + "path": "references/oracle/vedicastro_flatlib_sidereal_install_probe_2026_07_19.json", + "domain": "kp_precision_timing_dependency", + "claim_status": "blocked", + "consumer_policy": "research_to_commercial_contract_only", + "claim_boundary": "VedicAstro KP runtime probe is blocked by reproducible sidereal flatlib dependency; source/API surface evidence remains observation-only." + }, + { + "packet_id": "vedicastro_kp_api_probe_flatlib_polars_tmp", + "path": "references/oracle/vedicastro_kp_api_probe_flatlib_polars_tmp_2026_07_19.json", + "domain": "kp_precision_timing_dependency", + "claim_status": "observation_only", + "consumer_policy": "research_to_commercial_contract_only", + "claim_boundary": "Temporary flatlib/polars VedicAstro KP probe captures dependency/import state only; no runtime truth upgrade." } ] } diff --git a/references/oracle/public_worked_example_candidate_numeric_audit_2026_07_19.json b/references/oracle/public_worked_example_candidate_numeric_audit_2026_07_19.json new file mode 100644 index 00000000..872db05b --- /dev/null +++ b/references/oracle/public_worked_example_candidate_numeric_audit_2026_07_19.json @@ -0,0 +1,46 @@ +{ + "scope": "public_worked_example_candidate_numeric_audit", + "created_at": "2026-07-19", + "status": "candidate_audit_complete_no_oracle_ready_rows", + "claim_status": "open_queue", + "production_tuning_allowed": false, + "truth_matrix_allowed": false, + "boundary": "Candidate URLs are triaged for numeric-field potential only. No row is oracle_ready until exact input, settings, expected values, capture date, raw text/hash, and replay comparison are archived.", + "candidates": [ + { + "topic": "KP cusp star/sub/sub-sub", + "url": "https://www.astrosage.com/kp/cuspal-sub-lord.asp", + "candidate_type": "tool_or_reference_page", + "numeric_packet_status": "candidate_tool_not_replayable_yet", + "missing_for_oracle": ["fixed public input case", "raw output hash", "cusp longitude", "star_lord", "sub_lord", "sub_sub_lord", "method settings"] + }, + { + "topic": "KP sub-lord table", + "url": "https://www.aryabhatt.com/astrology/krishnamurti-paddhati/kp-sub-lords-table", + "candidate_type": "reference_table_candidate", + "numeric_packet_status": "table_hash_candidate_pending_capture", + "missing_for_oracle": ["captured table raw", "table hash", "license/copyright boundary", "worked example link"] + }, + { + "topic": "Tarabala/Chandrabala", + "url": "https://www.mypanchang.com/tarabalam.php", + "candidate_type": "worked_example_candidate", + "numeric_packet_status": "worked_example_candidate_pending_raw_capture", + "missing_for_oracle": ["stable date/location/person input", "captured raw hash", "rule weights", "expected factor table"] + }, + { + "topic": "Rahu Kalam", + "url": "https://www.drikpanchang.com/muhurat/rahu-kalam.html", + "candidate_type": "calculation_reference_candidate", + "numeric_packet_status": "calculation_reference_pending_fixture", + "missing_for_oracle": ["date/location fixture", "sunrise/sunset source", "expected interval", "raw capture hash"] + }, + { + "topic": "Shadbala Virupa", + "url": "https://www.astrojyoti.com/shadbala.htm", + "candidate_type": "formula_reference_candidate", + "numeric_packet_status": "formula_reference_only", + "missing_for_oracle": ["complete birth input", "per-component Virupa expected values", "formula variant", "raw capture hash"] + } + ] +} diff --git a/references/oracle/vedicastro_flatlib_sidereal_install_probe_2026_07_19.json b/references/oracle/vedicastro_flatlib_sidereal_install_probe_2026_07_19.json new file mode 100644 index 00000000..73732684 --- /dev/null +++ b/references/oracle/vedicastro_flatlib_sidereal_install_probe_2026_07_19.json @@ -0,0 +1,14 @@ +{ + "scope": "vedicastro_flatlib_sidereal_install_probe", + "created_at": "2026-07-19", + "status": "blocked_timeout", + "claim_status": "blocked", + "production_tuning_allowed": false, + "truth_matrix_allowed": false, + "temporary_target": "/tmp/vedicastro_sidereal_flatlib_probe", + "attempted_package": "git+https://github.com/flatangle/flatlib.git@sidereal", + "observed_blocker": "pip install exceeded 120s command budget", + "previous_pypi_flatlib_blocker": "PyPI flatlib 0.2.3 has no flatlib.const AY_* attributes required by local VedicAstro source.", + "next_action": "Pin a prebuilt sidereal-compatible flatlib wheel or cache the Git checkout before runtime API proof.", + "boundary": "VedicAstro KP source/API surface remains pinned, but runtime readiness is blocked until sidereal flatlib dependency is reproducible." +} diff --git a/references/oracle/vedicastro_kp_api_probe_flatlib_polars_tmp_2026_07_19.json b/references/oracle/vedicastro_kp_api_probe_flatlib_polars_tmp_2026_07_19.json new file mode 100644 index 00000000..4e8d7720 --- /dev/null +++ b/references/oracle/vedicastro_kp_api_probe_flatlib_polars_tmp_2026_07_19.json @@ -0,0 +1,44 @@ +{ + "api_surface": { + "class": "VedicHoroscopeData", + "fields": [ + "Nakshatra", + "NakshatraLord", + "SubLord", + "SubSubLord", + "house_sub_lord", + "house_ss_lord" + ], + "methods": [ + "get_rl_nl_sl_data", + "get_planets_data_from_chart", + "get_houses_data_from_chart", + "generate_chart" + ] + }, + "boundary": "Source/API surface hash only unless runtime dependencies and public numeric KP worked examples are both available.", + "claim_status": "observation_only", + "created_at": "2026-07-19", + "production_tuning_allowed": false, + "runtime_probe": { + "attempted": true, + "error": "module 'flatlib.const' has no attribute 'AY_LAHIRI'", + "error_type": "AttributeError", + "import_status": "blocked" + }, + "scope": "vedicastro_kp_api_probe", + "source_path": "references/open_source_sources/VedicAstro/vedicastro/VedicAstro.py", + "source_sha256": "1469c89a28dd4de6e576c2c4bd907902ee45d8a261b22836ea45503af369fa1d", + "status": "blocked_runtime_import", + "truth_matrix_allowed": false, + "dependency_probe": { + "temporary_path": "/tmp/vedicastro_flatlib_probe", + "installed_for_probe": [ + "flatlib", + "pyswisseph", + "polars" + ], + "project_runtime_dependency_allowed": false, + "dependency_boundary": "Import progressed past polars; current blocker is flatlib.const AY_* attribute mismatch, likely package-version/API incompatibility." + } +} diff --git a/tests/test_vedicastro_node_and_worked_example_candidates.py b/tests/test_vedicastro_node_and_worked_example_candidates.py new file mode 100644 index 00000000..392b054f --- /dev/null +++ b/tests/test_vedicastro_node_and_worked_example_candidates.py @@ -0,0 +1,54 @@ +import json +from pathlib import Path + + +ROOT = Path(__file__).resolve().parents[1] +INDEX = ROOT / "references/oracle/evidence_packet_index_2026_07_19.json" + + +def test_d10_node_attribution_keeps_rahu_ketu_partial(): + data = json.loads((ROOT / "references/oracle/d10_rahu_ketu_node_mode_attribution_2026_07_19.json").read_text(encoding="utf-8")) + assert data["claim_status"] == "partial" + assert data["production_tuning_allowed"] is False + assert data["truth_matrix_allowed"] is False + assert {row["body"] for row in data["remaining_rows"]} == {"Rahu", "Ketu"} + assert data["status"] == "attributed_to_node_longitude_boundary" + assert data["formula_observation"]["formula_delta_status"] == "same_observed_formula_shape" + assert data["raw_node_boundary"]["local"]["Rahu"]["d10_part_index_zero_based"] == 3 + assert data["raw_node_boundary"]["jyotishganit"]["Rahu"]["d10_part_index_zero_based"] == 2 + assert all(row["probable_reason"] == "node_longitude_boundary_crossing" for row in data["remaining_rows"]) + + +def test_vedicastro_flatlib_polars_probe_records_next_dependency_blocker(): + data = json.loads((ROOT / "references/oracle/vedicastro_kp_api_probe_flatlib_polars_tmp_2026_07_19.json").read_text(encoding="utf-8")) + assert data["claim_status"] == "observation_only" + assert data["dependency_probe"]["project_runtime_dependency_allowed"] is False + assert "flatlib.const" in data["runtime_probe"]["error"] + assert data["truth_matrix_allowed"] is False + + +def test_vedicastro_sidereal_flatlib_install_probe_records_timeout_blocker(): + data = json.loads((ROOT / "references/oracle/vedicastro_flatlib_sidereal_install_probe_2026_07_19.json").read_text(encoding="utf-8")) + assert data["claim_status"] == "blocked" + assert data["production_tuning_allowed"] is False + assert "sidereal" in data["attempted_package"] + assert data["status"] == "blocked_timeout" + + +def test_public_worked_example_numeric_audit_has_no_oracle_ready_rows(): + data = json.loads((ROOT / "references/oracle/public_worked_example_candidate_numeric_audit_2026_07_19.json").read_text(encoding="utf-8")) + assert data["claim_status"] == "open_queue" + assert data["production_tuning_allowed"] is False + assert all(row["numeric_packet_status"] != "oracle_ready" for row in data["candidates"]) + assert {row["topic"] for row in data["candidates"]} >= {"KP cusp star/sub/sub-sub", "Tarabala/Chandrabala", "Shadbala Virupa"} + + +def test_evidence_index_registers_current_blocker_artifacts(): + index = json.loads(INDEX.read_text(encoding="utf-8")) + packets = {row["packet_id"]: row for row in index["packets"]} + for packet_id in [ + "d10_rahu_ketu_node_mode_attribution", + "vedicastro_kp_api_probe_flatlib_polars_tmp", + "public_worked_example_candidate_numeric_audit", + ]: + assert packet_id in packets