sync: import pyjhora shadbala closure packets

This commit is contained in:
732642856
2026-07-21 21:25:57 +08:00
parent 3cdbbda94b
commit 909a248d20
9 changed files with 787 additions and 2 deletions
@@ -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 |
@@ -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."
}
]
}
@@ -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"
]
}
]
}
@@ -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
}
@@ -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."
}
]
}
+96
View File
@@ -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())
@@ -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"
@@ -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"
@@ -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"