diff --git a/docs/research/open_source_integration_priority_table_2026_07_03.md b/docs/research/open_source_integration_priority_table_2026_07_03.md index 1b898025..c4b79e02 100644 --- a/docs/research/open_source_integration_priority_table_2026_07_03.md +++ b/docs/research/open_source_integration_priority_table_2026_07_03.md @@ -27,7 +27,7 @@ | 优先级 | 开源对象(仓内真实文件) | 当前状态 | 接哪里 | 用来干什么 | 许可证风险 | 预计几小时落地 | |---|---|---|---|---|---|---| -| P0 | `references/open_source_sources/panchanga_api/README.md` `references/open_source_sources/panchanga_api/MCP.md` `references/open_source_sources/panchanga_api/SKILL.md` | 半接 | `scripts/prashna.py` `scripts/remedies.py` `scripts/jyotish_api_server.py` `scripts/unified_consultation_orchestrator.py` `jyotish-app/main.js` | 把“时间问事 / Muhurta / Panchanga / Remedies”压到统一入口,复用你刚接好的 `prashna` 与 `audited_remedies` 主链 | 低。镜像内 README 指向 MIT;当前仓内有 `LICENSE` | 4-8h | +| 已接/参考 | `references/open_source_sources/panchanga_api/README.md` `references/open_source_sources/panchanga_api/MCP.md` `references/open_source_sources/panchanga_api/SKILL.md` | 已接入主链;外部镜像仅参考 | `scripts/prashna.py` `scripts/remedies.py` `scripts/jyotish_api_server.py` `scripts/unified_consultation_orchestrator.py` `jyotish-app/main.js` | 现有主链已覆盖 Prashna / Muhurta / Panchanga / Remedies;只保留镜像的方法学参考 | 不可直接复用。镜像 `LICENSE` 为 `All rights reserved`,不得复制实现 | 不新增接线;仅做外部数值证据与显示合同 | | P0 | `scripts/vedastro_service_adapter.py` `scripts/vedastro_official_mcp_bridge.py` `scripts/diagnose_vedastro_mode.py` | 半接 | `scripts/jyotish_api_server.py` `mcp_server.py` `scripts/unified_consultation_orchestrator.py` | 让 official layer 真正默认参与,而不是只做桥接存在证明;同时把 runtime truth 里的 `official/full/partial/fallback` 说清楚 | 低。这里主要是官方 API/桥接,不是复制外部 GPL 代码 | 3-6h | | P0 | `references/oracle/artifacts/pyjhora_*` `references/oracle/artifacts/pending_packets/*pyjhora*.json` `scripts/generate_pyjhora_oracle_artifact_manifest.py` | 已接(黑盒证据层) | `scripts/external_oracle_sanity_closure.py` `scripts/oracle_benchmark_inventory.py` `scripts/historical_event_backtest.py` `README.md` | 保留 PyJHora 作为黑盒对照、历史事件回测、数值 sanity,不碰源码复制 | 中高。AGPL 风险不在“调用输出”,而在“复制代码/常量/实现” | 1-3h 做下一轮批量证据清点;8-16h 做更完整事件包 | | P1 | `references/open_source_sources/jyotishganit/README.md` `references/open_source_sources/jyotishganit/LICENSE` `references/open_source_sources/jyotishganit/jyotishganit/*` | 已接(部分) | `scripts/bhava_bala.py` `scripts/shadbala.py` `scripts/shadbala_advanced.py` `scripts/trimshamsa_d30.py` `scripts/constants/mit_imported_constants.py` `scripts/jyotish_engine.py` | 继续把 MIT 安全算法/常量吸收到本地精度层,尤其是 `Bhava Bala`、`Sputa Drishti`、部分 divisional / constants 对齐 | 低。MIT,且本仓已有显式标注“基于 jyotishganit” | 2-6h 做一轮定点补强;10-20h 做系统 sweep | diff --git a/references/oracle/evidence_packet_index_2026_07_19.json b/references/oracle/evidence_packet_index_2026_07_19.json index 8ce8653c..5e5a17d2 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": 125, + "packet_count": 128, "blocked_or_partial_count": 52, "human_review_required_count": 3 }, @@ -1009,6 +1009,30 @@ "claim_status": "observation_only", "consumer_policy": "research_observation_only", "claim_boundary": "Validates only VedAstro DivisionalLongitude degree transformation for a fixed scalar input; does not establish hosted chart sign, ayanamsa, node, timezone, or full D2/D4/D9/D10 parity." + }, + { + "packet_id": "workbuddy_round4_remaining_closure_packet_2026_07_21", + "path": "references/oracle/workbuddy_round4_remaining_closure_packet_2026_07_21.json", + "domain": "fragment_migration", + "claim_status": "open_queue", + "consumer_policy": "research_observation_only", + "claim_boundary": "Classifies the last three round4 WorkBuddy candidates as privacy-scrubbed reference, Shadbala artifact parse-needed, and blank Tajika template; no truth upgrade." + }, + { + "packet_id": "pyjhora_steve_jobs_shadbala_stdout_components_2026_07_21", + "path": "references/oracle/pyjhora_steve_jobs_shadbala_stdout_components_2026_07_21.json", + "domain": "shadbala_oracle", + "claim_status": "observation_only", + "consumer_policy": "research_observation_only", + "claim_boundary": "Parses WorkBuddy/PyJHora Steve Jobs Shadbala stdout into 42 same-unit component rows; observation only, no formula arbitration or absolute parity upgrade." + }, + { + "packet_id": "kp_tajika_public_oracle_source_candidates_2026_07_21", + "path": "references/oracle/kp_tajika_public_oracle_source_candidates_2026_07_21.json", + "domain": "worked_example_collection", + "claim_status": "open_queue", + "consumer_policy": "research_observation_only", + "claim_boundary": "Records public KP and Tajika/Varshaphala candidate sources found during WorkBuddy closure; none is a complete numeric oracle yet." } ] } diff --git a/references/oracle/kp_tajika_public_oracle_source_candidates_2026_07_21.json b/references/oracle/kp_tajika_public_oracle_source_candidates_2026_07_21.json new file mode 100644 index 00000000..d0504a97 --- /dev/null +++ b/references/oracle/kp_tajika_public_oracle_source_candidates_2026_07_21.json @@ -0,0 +1,75 @@ +{ + "scope": "kp_tajika_public_oracle_source_candidates", + "created_at": "2026-07-21", + "claim_status": "open_queue", + "truth_matrix_allowed": false, + "production_tuning_allowed": false, + "boundary": "Public sources were located for KP sub-lord material and Tajika/Varshaphala worked-example material, but none yet supplies a complete, extracted, settings-stable numeric oracle for the requested WorkBuddy closure items.", + "candidates": [ + { + "candidate_id": "kp_249_sub_lord_table_candidate", + "domain": "kp_exact_cusp", + "source_url": "https://astrology-videos.com/krishnamurti-astrology/249-subs-in-kp/", + "source_type": "public_reference_table", + "promotion_status": "candidate_needs_numeric_extraction", + "claim_upgrade": "none", + "usable_now": "Reference candidate for KP 249 sub-lord segmentation.", + "missing_for_oracle": [ + "worked birth/question example", + "exact cusp longitude", + "star lord / sub lord / sub-sub lord result table", + "ayanamsa and house system settings", + "independent local replay" + ] + }, + { + "candidate_id": "kp_cusp_sub_lord_theory_candidate", + "domain": "kp_exact_cusp", + "source_url": "https://kpastrologer.com/kp-system/sub-lord-theory-in-kp-astrology/", + "source_type": "public_theory_reference", + "promotion_status": "candidate_reference_only", + "claim_upgrade": "none", + "usable_now": "Explains KP sub-lord theory; not a numeric oracle.", + "missing_for_oracle": [ + "full numeric worked example", + "machine-readable cusp/star/sub/sub-sub table" + ] + }, + { + "candidate_id": "tajika_varshaphala_worked_example_pdf_candidate", + "domain": "tajika_varshaphala", + "source_url": "https://vedicastrologervaibhavvyas.com/DownloadsofVA/4.%20my%20article%20on%20varshaphala.pdf", + "source_type": "public_pdf_worked_example_candidate", + "promotion_status": "candidate_needs_numeric_extraction", + "claim_upgrade": "none", + "usable_now": "Candidate public Varshaphala worked-example source; requires extraction and independent replay.", + "missing_for_oracle": [ + "structured numeric extraction", + "source hash", + "settings normalization", + "field-level local replay", + "not Steve Jobs 1984" + ] + }, + { + "candidate_id": "steve_jobs_1984_tajika_template", + "domain": "tajika_varshaphala", + "source_url": "references/oracle/evidence_packet_templates/tajika_steve_jobs_1984_first_packet.json", + "source_type": "local_blank_template", + "promotion_status": "candidate_reference_only", + "claim_upgrade": "none", + "usable_now": "Template only; no external values captured.", + "missing_for_oracle": [ + "tool/source name", + "capture date", + "solar return datetime", + "varsha lagna degree", + "Muntha sign", + "year lord", + "Mudda Dasha first lord", + "Saham values", + "Tajika yoga values" + ] + } + ] +} diff --git a/references/oracle/pyjhora_steve_jobs_shadbala_stdout_components_2026_07_21.json b/references/oracle/pyjhora_steve_jobs_shadbala_stdout_components_2026_07_21.json new file mode 100644 index 00000000..de6554b4 --- /dev/null +++ b/references/oracle/pyjhora_steve_jobs_shadbala_stdout_components_2026_07_21.json @@ -0,0 +1,441 @@ +{ + "boundary": "Parsed PyJHora stdout into same-unit component observations only. This does not arbitrate formula variants or create absolute Shadbala parity.", + "claim_status": "observation_only", + "component_rows": [ + { + "component": "sthana", + "normalized_unit": "virupa", + "planet": "Sun", + "rupa": 3.6182, + "source_artifact": "references/oracle/artifacts/pyjhora_steve_jobs_shadbala_lahiri_stdout_20260627.txt", + "source_artifact_sha256": "65f652ac47d4a81ab43568bde8c5d7b9fac09d45f399564500c5af1a12db96c3", + "source_unit": "rupa", + "virupa": 217.09 + }, + { + "component": "dig", + "normalized_unit": "virupa", + "planet": "Sun", + "rupa": 2.3498, + "source_artifact": "references/oracle/artifacts/pyjhora_steve_jobs_shadbala_lahiri_stdout_20260627.txt", + "source_artifact_sha256": "65f652ac47d4a81ab43568bde8c5d7b9fac09d45f399564500c5af1a12db96c3", + "source_unit": "rupa", + "virupa": 140.99 + }, + { + "component": "kala", + "normalized_unit": "virupa", + "planet": "Sun", + "rupa": 0.4135, + "source_artifact": "references/oracle/artifacts/pyjhora_steve_jobs_shadbala_lahiri_stdout_20260627.txt", + "source_artifact_sha256": "65f652ac47d4a81ab43568bde8c5d7b9fac09d45f399564500c5af1a12db96c3", + "source_unit": "rupa", + "virupa": 24.81 + }, + { + "component": "chesta", + "normalized_unit": "virupa", + "planet": "Sun", + "rupa": 0.0, + "source_artifact": "references/oracle/artifacts/pyjhora_steve_jobs_shadbala_lahiri_stdout_20260627.txt", + "source_artifact_sha256": "65f652ac47d4a81ab43568bde8c5d7b9fac09d45f399564500c5af1a12db96c3", + "source_unit": "rupa", + "virupa": 0.0 + }, + { + "component": "naisargika", + "normalized_unit": "virupa", + "planet": "Sun", + "rupa": 1.0, + "source_artifact": "references/oracle/artifacts/pyjhora_steve_jobs_shadbala_lahiri_stdout_20260627.txt", + "source_artifact_sha256": "65f652ac47d4a81ab43568bde8c5d7b9fac09d45f399564500c5af1a12db96c3", + "source_unit": "rupa", + "virupa": 60.0 + }, + { + "component": "drik", + "normalized_unit": "virupa", + "planet": "Sun", + "rupa": 0.029, + "source_artifact": "references/oracle/artifacts/pyjhora_steve_jobs_shadbala_lahiri_stdout_20260627.txt", + "source_artifact_sha256": "65f652ac47d4a81ab43568bde8c5d7b9fac09d45f399564500c5af1a12db96c3", + "source_unit": "rupa", + "virupa": 1.74 + }, + { + "component": "sthana", + "normalized_unit": "virupa", + "planet": "Moon", + "rupa": 4.1057, + "source_artifact": "references/oracle/artifacts/pyjhora_steve_jobs_shadbala_lahiri_stdout_20260627.txt", + "source_artifact_sha256": "65f652ac47d4a81ab43568bde8c5d7b9fac09d45f399564500c5af1a12db96c3", + "source_unit": "rupa", + "virupa": 246.34 + }, + { + "component": "dig", + "normalized_unit": "virupa", + "planet": "Moon", + "rupa": 2.493, + "source_artifact": "references/oracle/artifacts/pyjhora_steve_jobs_shadbala_lahiri_stdout_20260627.txt", + "source_artifact_sha256": "65f652ac47d4a81ab43568bde8c5d7b9fac09d45f399564500c5af1a12db96c3", + "source_unit": "rupa", + "virupa": 149.58 + }, + { + "component": "kala", + "normalized_unit": "virupa", + "planet": "Moon", + "rupa": 1.5913, + "source_artifact": "references/oracle/artifacts/pyjhora_steve_jobs_shadbala_lahiri_stdout_20260627.txt", + "source_artifact_sha256": "65f652ac47d4a81ab43568bde8c5d7b9fac09d45f399564500c5af1a12db96c3", + "source_unit": "rupa", + "virupa": 95.48 + }, + { + "component": "chesta", + "normalized_unit": "virupa", + "planet": "Moon", + "rupa": 0.0, + "source_artifact": "references/oracle/artifacts/pyjhora_steve_jobs_shadbala_lahiri_stdout_20260627.txt", + "source_artifact_sha256": "65f652ac47d4a81ab43568bde8c5d7b9fac09d45f399564500c5af1a12db96c3", + "source_unit": "rupa", + "virupa": 0.0 + }, + { + "component": "naisargika", + "normalized_unit": "virupa", + "planet": "Moon", + "rupa": 0.8572, + "source_artifact": "references/oracle/artifacts/pyjhora_steve_jobs_shadbala_lahiri_stdout_20260627.txt", + "source_artifact_sha256": "65f652ac47d4a81ab43568bde8c5d7b9fac09d45f399564500c5af1a12db96c3", + "source_unit": "rupa", + "virupa": 51.43 + }, + { + "component": "drik", + "normalized_unit": "virupa", + "planet": "Moon", + "rupa": 0.3343, + "source_artifact": "references/oracle/artifacts/pyjhora_steve_jobs_shadbala_lahiri_stdout_20260627.txt", + "source_artifact_sha256": "65f652ac47d4a81ab43568bde8c5d7b9fac09d45f399564500c5af1a12db96c3", + "source_unit": "rupa", + "virupa": 20.06 + }, + { + "component": "sthana", + "normalized_unit": "virupa", + "planet": "Mars", + "rupa": 3.3105, + "source_artifact": "references/oracle/artifacts/pyjhora_steve_jobs_shadbala_lahiri_stdout_20260627.txt", + "source_artifact_sha256": "65f652ac47d4a81ab43568bde8c5d7b9fac09d45f399564500c5af1a12db96c3", + "source_unit": "rupa", + "virupa": 198.63 + }, + { + "component": "dig", + "normalized_unit": "virupa", + "planet": "Mars", + "rupa": 2.1322, + "source_artifact": "references/oracle/artifacts/pyjhora_steve_jobs_shadbala_lahiri_stdout_20260627.txt", + "source_artifact_sha256": "65f652ac47d4a81ab43568bde8c5d7b9fac09d45f399564500c5af1a12db96c3", + "source_unit": "rupa", + "virupa": 127.93 + }, + { + "component": "kala", + "normalized_unit": "virupa", + "planet": "Mars", + "rupa": 1.2902, + "source_artifact": "references/oracle/artifacts/pyjhora_steve_jobs_shadbala_lahiri_stdout_20260627.txt", + "source_artifact_sha256": "65f652ac47d4a81ab43568bde8c5d7b9fac09d45f399564500c5af1a12db96c3", + "source_unit": "rupa", + "virupa": 77.41 + }, + { + "component": "chesta", + "normalized_unit": "virupa", + "planet": "Mars", + "rupa": 1.643, + "source_artifact": "references/oracle/artifacts/pyjhora_steve_jobs_shadbala_lahiri_stdout_20260627.txt", + "source_artifact_sha256": "65f652ac47d4a81ab43568bde8c5d7b9fac09d45f399564500c5af1a12db96c3", + "source_unit": "rupa", + "virupa": 98.58 + }, + { + "component": "naisargika", + "normalized_unit": "virupa", + "planet": "Mars", + "rupa": 0.2857, + "source_artifact": "references/oracle/artifacts/pyjhora_steve_jobs_shadbala_lahiri_stdout_20260627.txt", + "source_artifact_sha256": "65f652ac47d4a81ab43568bde8c5d7b9fac09d45f399564500c5af1a12db96c3", + "source_unit": "rupa", + "virupa": 17.14 + }, + { + "component": "drik", + "normalized_unit": "virupa", + "planet": "Mars", + "rupa": 0.2248, + "source_artifact": "references/oracle/artifacts/pyjhora_steve_jobs_shadbala_lahiri_stdout_20260627.txt", + "source_artifact_sha256": "65f652ac47d4a81ab43568bde8c5d7b9fac09d45f399564500c5af1a12db96c3", + "source_unit": "rupa", + "virupa": 13.49 + }, + { + "component": "sthana", + "normalized_unit": "virupa", + "planet": "Mercury", + "rupa": 2.7993, + "source_artifact": "references/oracle/artifacts/pyjhora_steve_jobs_shadbala_lahiri_stdout_20260627.txt", + "source_artifact_sha256": "65f652ac47d4a81ab43568bde8c5d7b9fac09d45f399564500c5af1a12db96c3", + "source_unit": "rupa", + "virupa": 167.96 + }, + { + "component": "dig", + "normalized_unit": "virupa", + "planet": "Mercury", + "rupa": 2.0297, + "source_artifact": "references/oracle/artifacts/pyjhora_steve_jobs_shadbala_lahiri_stdout_20260627.txt", + "source_artifact_sha256": "65f652ac47d4a81ab43568bde8c5d7b9fac09d45f399564500c5af1a12db96c3", + "source_unit": "rupa", + "virupa": 121.78 + }, + { + "component": "kala", + "normalized_unit": "virupa", + "planet": "Mercury", + "rupa": 0.2107, + "source_artifact": "references/oracle/artifacts/pyjhora_steve_jobs_shadbala_lahiri_stdout_20260627.txt", + "source_artifact_sha256": "65f652ac47d4a81ab43568bde8c5d7b9fac09d45f399564500c5af1a12db96c3", + "source_unit": "rupa", + "virupa": 12.64 + }, + { + "component": "chesta", + "normalized_unit": "virupa", + "planet": "Mercury", + "rupa": 0.763, + "source_artifact": "references/oracle/artifacts/pyjhora_steve_jobs_shadbala_lahiri_stdout_20260627.txt", + "source_artifact_sha256": "65f652ac47d4a81ab43568bde8c5d7b9fac09d45f399564500c5af1a12db96c3", + "source_unit": "rupa", + "virupa": 45.78 + }, + { + "component": "naisargika", + "normalized_unit": "virupa", + "planet": "Mercury", + "rupa": 0.4285, + "source_artifact": "references/oracle/artifacts/pyjhora_steve_jobs_shadbala_lahiri_stdout_20260627.txt", + "source_artifact_sha256": "65f652ac47d4a81ab43568bde8c5d7b9fac09d45f399564500c5af1a12db96c3", + "source_unit": "rupa", + "virupa": 25.71 + }, + { + "component": "drik", + "normalized_unit": "virupa", + "planet": "Mercury", + "rupa": -0.1772, + "source_artifact": "references/oracle/artifacts/pyjhora_steve_jobs_shadbala_lahiri_stdout_20260627.txt", + "source_artifact_sha256": "65f652ac47d4a81ab43568bde8c5d7b9fac09d45f399564500c5af1a12db96c3", + "source_unit": "rupa", + "virupa": -10.63 + }, + { + "component": "sthana", + "normalized_unit": "virupa", + "planet": "Jupiter", + "rupa": 3.3633, + "source_artifact": "references/oracle/artifacts/pyjhora_steve_jobs_shadbala_lahiri_stdout_20260627.txt", + "source_artifact_sha256": "65f652ac47d4a81ab43568bde8c5d7b9fac09d45f399564500c5af1a12db96c3", + "source_unit": "rupa", + "virupa": 201.8 + }, + { + "component": "dig", + "normalized_unit": "virupa", + "planet": "Jupiter", + "rupa": 3.3218, + "source_artifact": "references/oracle/artifacts/pyjhora_steve_jobs_shadbala_lahiri_stdout_20260627.txt", + "source_artifact_sha256": "65f652ac47d4a81ab43568bde8c5d7b9fac09d45f399564500c5af1a12db96c3", + "source_unit": "rupa", + "virupa": 199.31 + }, + { + "component": "kala", + "normalized_unit": "virupa", + "planet": "Jupiter", + "rupa": 1.3433, + "source_artifact": "references/oracle/artifacts/pyjhora_steve_jobs_shadbala_lahiri_stdout_20260627.txt", + "source_artifact_sha256": "65f652ac47d4a81ab43568bde8c5d7b9fac09d45f399564500c5af1a12db96c3", + "source_unit": "rupa", + "virupa": 80.6 + }, + { + "component": "chesta", + "normalized_unit": "virupa", + "planet": "Jupiter", + "rupa": 1.2333, + "source_artifact": "references/oracle/artifacts/pyjhora_steve_jobs_shadbala_lahiri_stdout_20260627.txt", + "source_artifact_sha256": "65f652ac47d4a81ab43568bde8c5d7b9fac09d45f399564500c5af1a12db96c3", + "source_unit": "rupa", + "virupa": 74.0 + }, + { + "component": "naisargika", + "normalized_unit": "virupa", + "planet": "Jupiter", + "rupa": 0.5715, + "source_artifact": "references/oracle/artifacts/pyjhora_steve_jobs_shadbala_lahiri_stdout_20260627.txt", + "source_artifact_sha256": "65f652ac47d4a81ab43568bde8c5d7b9fac09d45f399564500c5af1a12db96c3", + "source_unit": "rupa", + "virupa": 34.29 + }, + { + "component": "drik", + "normalized_unit": "virupa", + "planet": "Jupiter", + "rupa": 0.1148, + "source_artifact": "references/oracle/artifacts/pyjhora_steve_jobs_shadbala_lahiri_stdout_20260627.txt", + "source_artifact_sha256": "65f652ac47d4a81ab43568bde8c5d7b9fac09d45f399564500c5af1a12db96c3", + "source_unit": "rupa", + "virupa": 6.89 + }, + { + "component": "sthana", + "normalized_unit": "virupa", + "planet": "Venus", + "rupa": 2.5677, + "source_artifact": "references/oracle/artifacts/pyjhora_steve_jobs_shadbala_lahiri_stdout_20260627.txt", + "source_artifact_sha256": "65f652ac47d4a81ab43568bde8c5d7b9fac09d45f399564500c5af1a12db96c3", + "source_unit": "rupa", + "virupa": 154.06 + }, + { + "component": "dig", + "normalized_unit": "virupa", + "planet": "Venus", + "rupa": 1.8907, + "source_artifact": "references/oracle/artifacts/pyjhora_steve_jobs_shadbala_lahiri_stdout_20260627.txt", + "source_artifact_sha256": "65f652ac47d4a81ab43568bde8c5d7b9fac09d45f399564500c5af1a12db96c3", + "source_unit": "rupa", + "virupa": 113.44 + }, + { + "component": "kala", + "normalized_unit": "virupa", + "planet": "Venus", + "rupa": 1.1658, + "source_artifact": "references/oracle/artifacts/pyjhora_steve_jobs_shadbala_lahiri_stdout_20260627.txt", + "source_artifact_sha256": "65f652ac47d4a81ab43568bde8c5d7b9fac09d45f399564500c5af1a12db96c3", + "source_unit": "rupa", + "virupa": 69.95 + }, + { + "component": "chesta", + "normalized_unit": "virupa", + "planet": "Venus", + "rupa": 0.518, + "source_artifact": "references/oracle/artifacts/pyjhora_steve_jobs_shadbala_lahiri_stdout_20260627.txt", + "source_artifact_sha256": "65f652ac47d4a81ab43568bde8c5d7b9fac09d45f399564500c5af1a12db96c3", + "source_unit": "rupa", + "virupa": 31.08 + }, + { + "component": "naisargika", + "normalized_unit": "virupa", + "planet": "Venus", + "rupa": 0.7143, + "source_artifact": "references/oracle/artifacts/pyjhora_steve_jobs_shadbala_lahiri_stdout_20260627.txt", + "source_artifact_sha256": "65f652ac47d4a81ab43568bde8c5d7b9fac09d45f399564500c5af1a12db96c3", + "source_unit": "rupa", + "virupa": 42.86 + }, + { + "component": "drik", + "normalized_unit": "virupa", + "planet": "Venus", + "rupa": -0.0458, + "source_artifact": "references/oracle/artifacts/pyjhora_steve_jobs_shadbala_lahiri_stdout_20260627.txt", + "source_artifact_sha256": "65f652ac47d4a81ab43568bde8c5d7b9fac09d45f399564500c5af1a12db96c3", + "source_unit": "rupa", + "virupa": -2.75 + }, + { + "component": "sthana", + "normalized_unit": "virupa", + "planet": "Saturn", + "rupa": 3.6435, + "source_artifact": "references/oracle/artifacts/pyjhora_steve_jobs_shadbala_lahiri_stdout_20260627.txt", + "source_artifact_sha256": "65f652ac47d4a81ab43568bde8c5d7b9fac09d45f399564500c5af1a12db96c3", + "source_unit": "rupa", + "virupa": 218.61 + }, + { + "component": "dig", + "normalized_unit": "virupa", + "planet": "Saturn", + "rupa": 2.2795, + "source_artifact": "references/oracle/artifacts/pyjhora_steve_jobs_shadbala_lahiri_stdout_20260627.txt", + "source_artifact_sha256": "65f652ac47d4a81ab43568bde8c5d7b9fac09d45f399564500c5af1a12db96c3", + "source_unit": "rupa", + "virupa": 136.77 + }, + { + "component": "kala", + "normalized_unit": "virupa", + "planet": "Saturn", + "rupa": 0.327, + "source_artifact": "references/oracle/artifacts/pyjhora_steve_jobs_shadbala_lahiri_stdout_20260627.txt", + "source_artifact_sha256": "65f652ac47d4a81ab43568bde8c5d7b9fac09d45f399564500c5af1a12db96c3", + "source_unit": "rupa", + "virupa": 19.62 + }, + { + "component": "chesta", + "normalized_unit": "virupa", + "planet": "Saturn", + "rupa": 0.606, + "source_artifact": "references/oracle/artifacts/pyjhora_steve_jobs_shadbala_lahiri_stdout_20260627.txt", + "source_artifact_sha256": "65f652ac47d4a81ab43568bde8c5d7b9fac09d45f399564500c5af1a12db96c3", + "source_unit": "rupa", + "virupa": 36.36 + }, + { + "component": "naisargika", + "normalized_unit": "virupa", + "planet": "Saturn", + "rupa": 0.1428, + "source_artifact": "references/oracle/artifacts/pyjhora_steve_jobs_shadbala_lahiri_stdout_20260627.txt", + "source_artifact_sha256": "65f652ac47d4a81ab43568bde8c5d7b9fac09d45f399564500c5af1a12db96c3", + "source_unit": "rupa", + "virupa": 8.57 + }, + { + "component": "drik", + "normalized_unit": "virupa", + "planet": "Saturn", + "rupa": 0.1582, + "source_artifact": "references/oracle/artifacts/pyjhora_steve_jobs_shadbala_lahiri_stdout_20260627.txt", + "source_artifact_sha256": "65f652ac47d4a81ab43568bde8c5d7b9fac09d45f399564500c5af1a12db96c3", + "source_unit": "rupa", + "virupa": 9.49 + } + ], + "created_at": "2026-07-21", + "production_tuning_allowed": false, + "scope": "pyjhora_shadbala_stdout_component_packet", + "source_artifact": "references/oracle/artifacts/pyjhora_steve_jobs_shadbala_lahiri_stdout_20260627.txt", + "source_artifact_sha256": "65f652ac47d4a81ab43568bde8c5d7b9fac09d45f399564500c5af1a12db96c3", + "source_raw_rows": { + "component_rows_present": "SHADBALA_COMPONENT_RUPA_JSON", + "shadbala_raw_virupa_row_count": 9 + }, + "summary": { + "component_count": 6, + "component_row_count": 42, + "planet_count": 7 + }, + "truth_matrix_allowed": false +} diff --git a/references/oracle/workbuddy_round4_remaining_closure_packet_2026_07_21.json b/references/oracle/workbuddy_round4_remaining_closure_packet_2026_07_21.json new file mode 100644 index 00000000..f8a071cd --- /dev/null +++ b/references/oracle/workbuddy_round4_remaining_closure_packet_2026_07_21.json @@ -0,0 +1,35 @@ +{ + "scope": "workbuddy_round4_remaining_closure_packet", + "created_at": "2026-07-21", + "claim_status": "open_queue", + "source_queue": "references/oracle/workbuddy_round4_usage_closure_queue_2026_07_21.json", + "truth_matrix_allowed": false, + "production_tuning_allowed": false, + "boundary": "The remaining WorkBuddy round4 candidates are explicitly classified. None is a complete oracle or runtime capability.", + "remaining_candidates": [ + { + "candidate_id": "wb_round4_kp_practical_event_timing", + "source_path": "references/kp-practical-event-timing.md", + "classification": "privacy_scrubbed_reference_only", + "claim_upgrade": "none", + "finding": "The retained file is a privacy-scrubbed notice, not a reusable KP worked example or executable contract.", + "next_action": "Use public KP worked examples plus exact cusp/star/sub/sub-sub API probe; do not derive timing truth from this WorkBuddy fragment." + }, + { + "candidate_id": "wb_round4_pyjhora_steve_jobs_shadbala_stdout", + "source_path": "references/oracle/artifacts/pyjhora_steve_jobs_shadbala_lahiri_stdout_20260627.txt", + "classification": "parsed_observation_packet_ready", + "claim_upgrade": "none", + "finding": "Parsed into 42 same-unit component rows in references/oracle/pyjhora_steve_jobs_shadbala_stdout_components_2026_07_21.json; still observation-only because formula variants and absolute parity remain unresolved.", + "next_action": "Join parsed rows to shadbala_component_closure_queue_v2 and compare against local/jyotishganit/Xalen/VP Jain rows by component." + }, + { + "candidate_id": "wb_round4_tajika_steve_jobs_1984_first_packet", + "source_path": "references/oracle/evidence_packet_templates/tajika_steve_jobs_1984_first_packet.json", + "classification": "blank_template_not_oracle", + "claim_upgrade": "none", + "finding": "The packet is a blank external-capture template; required metadata and target numeric fields are empty/null.", + "next_action": "Fill from a citable external Varshaphala/Tajika numeric source before using as oracle evidence." + } + ] +} diff --git a/scripts/parse_pyjhora_shadbala_stdout.py b/scripts/parse_pyjhora_shadbala_stdout.py new file mode 100644 index 00000000..b1d65cc0 --- /dev/null +++ b/scripts/parse_pyjhora_shadbala_stdout.py @@ -0,0 +1,96 @@ +#!/usr/bin/env python3 +"""Parse PyJHora Shadbala stdout into same-unit component rows.""" +from __future__ import annotations + +import ast +import hashlib +import json +import re +from pathlib import Path +from typing import Any + + +ROOT = Path(__file__).resolve().parents[1] +SOURCE = ROOT / "references/oracle/artifacts/pyjhora_steve_jobs_shadbala_lahiri_stdout_20260627.txt" +OUTPUT = ROOT / "references/oracle/pyjhora_steve_jobs_shadbala_stdout_components_2026_07_21.json" +PLANETS = ["Sun", "Moon", "Mars", "Mercury", "Jupiter", "Venus", "Saturn"] +COMPONENTS = ["sthana", "dig", "kala", "chesta", "naisargika", "drik"] + + +def _sha256(path: Path) -> str: + return hashlib.sha256(path.read_bytes()).hexdigest() + + +def _extract_component_json(text: str) -> dict[str, dict[str, float]]: + prefix = "SHADBALA_COMPONENT_RUPA_JSON " + line = next((row[len(prefix) :] for row in text.splitlines() if row.startswith(prefix)), None) + if line is None: + raise ValueError("SHADBALA_COMPONENT_RUPA_JSON line missing") + raw = json.loads(line) + return { + planet: {key: float(value) for key, value in values.items()} + for planet, values in raw.items() + } + + +def _extract_raw_virupa(text: str) -> list[list[float]]: + prefix = "SHADBALA_RAW_VIRUPA " + line = next((row[len(prefix) :] for row in text.splitlines() if row.startswith(prefix)), None) + if line is None: + raise ValueError("SHADBALA_RAW_VIRUPA line missing") + return ast.literal_eval(line) + + +def build() -> dict[str, Any]: + text = SOURCE.read_text(encoding="utf-8") + source_hash = _sha256(SOURCE) + component_rupa = _extract_component_json(text) + raw_virupa = _extract_raw_virupa(text) + rows: list[dict[str, Any]] = [] + for planet in PLANETS: + values = component_rupa[planet] + for component in COMPONENTS: + rupa = round(values[component], 4) + rows.append( + { + "planet": planet, + "component": component, + "rupa": rupa, + "virupa": round(rupa * 60, 2), + "source_unit": "rupa", + "normalized_unit": "virupa", + "source_artifact": str(SOURCE.relative_to(ROOT)), + "source_artifact_sha256": source_hash, + } + ) + return { + "scope": "pyjhora_shadbala_stdout_component_packet", + "created_at": "2026-07-21", + "claim_status": "observation_only", + "truth_matrix_allowed": False, + "production_tuning_allowed": False, + "source_artifact": str(SOURCE.relative_to(ROOT)), + "source_artifact_sha256": source_hash, + "source_raw_rows": { + "shadbala_raw_virupa_row_count": len(raw_virupa), + "component_rows_present": "SHADBALA_COMPONENT_RUPA_JSON", + }, + "summary": { + "planet_count": len(PLANETS), + "component_count": len(COMPONENTS), + "component_row_count": len(rows), + }, + "component_rows": rows, + "boundary": "Parsed PyJHora stdout into same-unit component observations only. This does not arbitrate formula variants or create absolute Shadbala parity.", + } + + +def main() -> int: + packet = build() + OUTPUT.write_text(json.dumps(packet, ensure_ascii=False, indent=2, sort_keys=True) + "\n", encoding="utf-8") + print(json.dumps(packet, ensure_ascii=False, sort_keys=True)) + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/tests/test_kp_tajika_public_oracle_source_candidates.py b/tests/test_kp_tajika_public_oracle_source_candidates.py new file mode 100644 index 00000000..c5e87701 --- /dev/null +++ b/tests/test_kp_tajika_public_oracle_source_candidates.py @@ -0,0 +1,37 @@ +import json +from pathlib import Path + + +ROOT = Path(__file__).resolve().parents[1] +PACKET = ROOT / "references/oracle/kp_tajika_public_oracle_source_candidates_2026_07_21.json" +INDEX = ROOT / "references/oracle/evidence_packet_index_2026_07_19.json" + + +def test_public_candidates_are_not_numeric_oracles_yet(): + data = json.loads(PACKET.read_text(encoding="utf-8")) + assert data["scope"] == "kp_tajika_public_oracle_source_candidates" + assert data["claim_status"] == "open_queue" + assert data["truth_matrix_allowed"] is False + domains = {row["domain"] for row in data["candidates"]} + assert {"kp_exact_cusp", "tajika_varshaphala"} <= domains + for row in data["candidates"]: + assert row["promotion_status"] in {"candidate_needs_numeric_extraction", "candidate_reference_only"} + assert row["claim_upgrade"] == "none" + + +def test_candidates_record_why_steve_jobs_tajika_and_kp_are_still_open(): + data = json.loads(PACKET.read_text(encoding="utf-8")) + by_id = {row["candidate_id"]: row for row in data["candidates"]} + assert by_id["kp_249_sub_lord_table_candidate"]["missing_for_oracle"] + assert by_id["tajika_varshaphala_worked_example_pdf_candidate"]["missing_for_oracle"] + assert by_id["steve_jobs_1984_tajika_template"]["promotion_status"] == "candidate_reference_only" + + +def test_public_candidate_packet_is_indexed(): + packets = { + row["packet_id"]: row + for row in json.loads(INDEX.read_text(encoding="utf-8"))["packets"] + } + packet = packets["kp_tajika_public_oracle_source_candidates_2026_07_21"] + assert packet["claim_status"] == "open_queue" + assert packet["consumer_policy"] == "research_observation_only" diff --git a/tests/test_pyjhora_shadbala_stdout_parser.py b/tests/test_pyjhora_shadbala_stdout_parser.py new file mode 100644 index 00000000..3bd904c0 --- /dev/null +++ b/tests/test_pyjhora_shadbala_stdout_parser.py @@ -0,0 +1,37 @@ +import json +import subprocess +from pathlib import Path + + +ROOT = Path(__file__).resolve().parents[1] +PACKET = ROOT / "references/oracle/pyjhora_steve_jobs_shadbala_stdout_components_2026_07_21.json" +INDEX = ROOT / "references/oracle/evidence_packet_index_2026_07_19.json" + + +def test_parser_extracts_42_same_unit_component_rows(): + data = json.loads( + subprocess.check_output( + ["python3", "scripts/parse_pyjhora_shadbala_stdout.py"], + cwd=ROOT, + text=True, + ) + ) + assert data["scope"] == "pyjhora_shadbala_stdout_component_packet" + assert data["claim_status"] == "observation_only" + assert data["truth_matrix_allowed"] is False + assert data["summary"]["component_row_count"] == 42 + assert data["summary"]["planet_count"] == 7 + assert data["summary"]["component_count"] == 6 + first = data["component_rows"][0] + assert {"planet", "component", "virupa", "rupa", "source_artifact_sha256"} <= set(first) + + +def test_packet_is_stable_and_indexed_after_capture(): + data = json.loads(PACKET.read_text(encoding="utf-8")) + assert data["summary"]["component_row_count"] == 42 + assert data["source_artifact"].endswith("pyjhora_steve_jobs_shadbala_lahiri_stdout_20260627.txt") + packets = { + row["packet_id"]: row + for row in json.loads(INDEX.read_text(encoding="utf-8"))["packets"] + } + assert packets["pyjhora_steve_jobs_shadbala_stdout_components_2026_07_21"]["claim_status"] == "observation_only" diff --git a/tests/test_workbuddy_round4_remaining_closure_packet.py b/tests/test_workbuddy_round4_remaining_closure_packet.py new file mode 100644 index 00000000..3b05cfb4 --- /dev/null +++ b/tests/test_workbuddy_round4_remaining_closure_packet.py @@ -0,0 +1,40 @@ +import json +from pathlib import Path + + +ROOT = Path(__file__).resolve().parents[1] +PACKET = ROOT / "references/oracle/workbuddy_round4_remaining_closure_packet_2026_07_21.json" +INDEX = ROOT / "references/oracle/evidence_packet_index_2026_07_19.json" + + +def test_remaining_workbuddy_candidates_are_explicitly_classified(): + data = json.loads(PACKET.read_text(encoding="utf-8")) + assert data["scope"] == "workbuddy_round4_remaining_closure_packet" + assert data["claim_status"] == "open_queue" + assert data["truth_matrix_allowed"] is False + rows = {row["candidate_id"]: row for row in data["remaining_candidates"]} + assert set(rows) == { + "wb_round4_kp_practical_event_timing", + "wb_round4_pyjhora_steve_jobs_shadbala_stdout", + "wb_round4_tajika_steve_jobs_1984_first_packet", + } + assert rows["wb_round4_kp_practical_event_timing"]["classification"] == "privacy_scrubbed_reference_only" + assert rows["wb_round4_pyjhora_steve_jobs_shadbala_stdout"]["classification"] == "parsed_observation_packet_ready" + assert rows["wb_round4_tajika_steve_jobs_1984_first_packet"]["classification"] == "blank_template_not_oracle" + + +def test_remaining_candidates_do_not_upgrade_claims(): + data = json.loads(PACKET.read_text(encoding="utf-8")) + for row in data["remaining_candidates"]: + assert row["claim_upgrade"] == "none" + assert row["next_action"] + + +def test_remaining_closure_packet_is_indexed(): + packets = { + row["packet_id"]: row + for row in json.loads(INDEX.read_text(encoding="utf-8"))["packets"] + } + packet = packets["workbuddy_round4_remaining_closure_packet_2026_07_21"] + assert packet["claim_status"] == "open_queue" + assert packet["consumer_policy"] == "research_observation_only"