feat(skill): advance tajika annual oracle closure
This commit is contained in:
@@ -145,6 +145,7 @@ description: 印度占星(Jyotish)专业解盘与推运系统。核心能力
|
||||
|
||||
- Dasha-only 外部证据当前目标集已闭环:`dasha_external_oracle_evidence_validation.valid_dasha_packets: 3/3`;Steve Jobs / Lahiri、REDACTED_YEAR Lahiri 模板与 1800 Delhi historical epoch 的 Vimshottari 起始边界来自 PyJHora 4.8.7 隔离黑盒 stdout artifact。
|
||||
- 全局 Dasha/Shadbala Calibration Status 仍未完成:`external_oracle_evidence_validation.valid_packets: 4`,`ready_for_calibration: 4`;Shadbala 外部绝对值当前目标集已通过 4/4,Raman 扩展样本与非 Dasha 靶点尚未封顶。
|
||||
- Tajika/Sahams 年运外部样本已开始闭环:`tajika_sahams_annual_benchmark_dashboard.ready_for_calibration: 1/5`;Steve Jobs 1984 Varshaphala/Lahiri 的 solar return、Varsha Lagna、Muntha、Year Lord、Mudda Dasha 首主、三项 Sahams 与 Tajika Yogas 已由 PyJHora 4.8.7 隔离黑盒 artifact 验证,下一优先级为 Einstein 1905。仍不得声称 Tajika/Sahams 年运体系已全局封顶。
|
||||
- D1/D9/SAV 高可信;Dasha 精细日期可引用已验证 Dasha-only 样本的局部进度,但不得把全部大运边界、Shadbala 绝对值或全局精度说成已完成外部校准。
|
||||
- `production_tuning_allowed: false` 前,禁止为了贴合单份 PDF、单个 JHora 截图或本仓库本地输出而改生产常数。
|
||||
- 对普通用户的建议话术:基础落座、D9、SAV 可作为稳定证据;当前 Dasha-only 目标集已完成外部黑盒验证,但多 Dasha 家族、Antardasha/Pratyantar 细边界仍需扩展;Shadbala 当前目标集已有四个外部六分量样本,绝对值断语可引用 4/4 闭合进度;但跨软件差异、Raman 扩展样本与公开书例仍需更多证据后再提升到全局置信。
|
||||
@@ -270,7 +271,7 @@ python3 scripts/validate_interpretation_templates.py --format markdown
|
||||
5. **Prashna 分支工作流**
|
||||
- 问事类型分支、裁决链、时机判断仍需更稳定的传统链路
|
||||
6. **Varshaphala / Tajika / Sahams 年运裁决深度**
|
||||
- 年盘骨架已在,但事件裁决与权重层仍需继续成熟
|
||||
- 年盘骨架已在,第一条 Steve Jobs 1984 外部年运样本已闭环;但整体仍只有 `1/5`,事件裁决、权重层、Einstein 1905 等后续样本仍需继续成熟
|
||||
7. **Kalachakra / Narayana 等替代 Dasha 的成熟度边界**
|
||||
- 已有覆盖,但部分子层、边界口径、外部黑盒对照仍需继续收紧
|
||||
8. **高阶解释层整合**
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# Jyotish External Oracle Closure Master Dashboard
|
||||
|
||||
Generated: `2026-06-26T18:30:41.843216+00:00`
|
||||
Generated: `2026-06-26T19:05:03.531931+00:00`
|
||||
|
||||
## Summary
|
||||
|
||||
- total_tasks: `12`
|
||||
- external_verified_tasks: `7`
|
||||
- open_tasks: `5`
|
||||
- external_verified_tasks: `8`
|
||||
- open_tasks: `4`
|
||||
- can_claim_global_oracle_closure: `false`
|
||||
- production_tuning_allowed: `false`
|
||||
|
||||
@@ -15,20 +15,20 @@ Generated: `2026-06-26T18:30:41.843216+00:00`
|
||||
| front | tasks | verified | first priority | missing fields | manual entries | metadata missing | target missing |
|
||||
|---|---:|---:|---|---:|---:|---:|---:|
|
||||
| `dasha` | 3 | 3 | `complete` | 0 | 0 | 0 | 0 |
|
||||
| `tajika_sahams` | 5 | 0 | `template_steve_jobs_varshaphala_1984_lahiri` | 15 | 15 | 5 | 10 |
|
||||
| `tajika_sahams` | 5 | 1 | `template_einstein_varshaphala_1905_lahiri` | 15 | 15 | 5 | 10 |
|
||||
| `shadbala` | 4 | 4 | `template_redacted_place_shadbala_raman` | 55 | 55 | 5 | 50 |
|
||||
|
||||
## Next Action Order
|
||||
|
||||
### tajika_sahams
|
||||
|
||||
- case_id: `template_steve_jobs_varshaphala_1984_lahiri`
|
||||
- capture_id: `external_template_steve_jobs_varshaphala_1984_lahiri`
|
||||
- case_id: `template_einstein_varshaphala_1905_lahiri`
|
||||
- capture_id: `external_template_einstein_varshaphala_1905_lahiri`
|
||||
- missing_field_count: `15`
|
||||
- manual_entry_count: `15`
|
||||
|
||||
```bash
|
||||
python3 scripts/tajika_annual_oracle_queue.py --oracle-file references/oracle/tajika_annual_oracle_cases.json --apply-packet references/oracle/artifacts/pending_packets/external_template_steve_jobs_varshaphala_1984_lahiri.json --format json
|
||||
python3 scripts/tajika_annual_oracle_queue.py --oracle-file references/oracle/tajika_annual_oracle_cases.json --apply-packet references/oracle/artifacts/pending_packets/external_template_einstein_varshaphala_1905_lahiri.json --format json
|
||||
```
|
||||
|
||||
## Boundary
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Jyotish Skill Gap Truth Audit
|
||||
|
||||
Generated: `2026-06-26T18:30:42.500897+00:00`
|
||||
Generated: `2026-06-26T19:05:04.292300+00:00`
|
||||
|
||||
## Public Claim Boundary
|
||||
|
||||
@@ -19,8 +19,8 @@ Generated: `2026-06-26T18:30:42.500897+00:00`
|
||||
## External Oracle Closure
|
||||
|
||||
- total_tasks: `12`
|
||||
- external_verified_tasks: `7`
|
||||
- open_tasks: `5`
|
||||
- external_verified_tasks: `8`
|
||||
- open_tasks: `4`
|
||||
- can_claim_global_oracle_closure: `false`
|
||||
|
||||
## Remaining Hard Fronts
|
||||
@@ -51,7 +51,7 @@ Generated: `2026-06-26T18:30:42.500897+00:00`
|
||||
- id: `tajika_sahams_annual_closure`
|
||||
- priority: `P0`
|
||||
- status: `active_gap`
|
||||
- current_truth: Varshaphala, Muntha, Year Lord, Mudda Dasha and Sahams have local structure, but annual judgment depth and external sample closure remain incomplete.
|
||||
- current_truth: Varshaphala, Muntha, Year Lord, Mudda Dasha and Sahams have local structure, and the first annual external packet is now accepted at 1/5 for Steve Jobs 1984 Lahiri via PyJHora 4.8.7 black-box artifact; annual judgment depth, Einstein 1905 and the remaining external sample set are still incomplete.
|
||||
|
||||
### Article-level interpretation template industrialization
|
||||
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
# Tajika/Sahams Annual Benchmark Dashboard
|
||||
|
||||
Generated: `2026-06-26T19:05:02.797254+00:00`
|
||||
|
||||
## Annual Oracle Readiness
|
||||
|
||||
- total_tasks: `5`
|
||||
- ready_for_collection: `4`
|
||||
- ready_for_calibration: `1`
|
||||
- production_tuning_allowed: `false`
|
||||
|
||||
## Annual Closure Claim
|
||||
|
||||
- can_claim_tajika_sahams_closure: `false`
|
||||
- reason: Do not claim annual-chart closure until every template row is promoted to external_verified with human-reviewable artifacts.
|
||||
|
||||
## Remaining Gap
|
||||
|
||||
Solar return exact time, Varsha Lagna, Muntha, Year Lord, Mudda Dasha first lord, Sahams and Tajika Yogas still need external JHora/PyJHora/book-example evidence before the Jyotish skill can claim Tajika/Sahams annual closure.
|
||||
|
||||
## Next Actions
|
||||
|
||||
- Fill the next annual evidence packet from JHora or PyJHora: template_einstein_varshaphala_1905_lahiri.
|
||||
- Add solar return datetime and Varsha Lagna tolerance checks after the first external row exists.
|
||||
- Add Saham-specific tolerance checks for Punya, Rajya and Vivah Saham.
|
||||
- Expand the annual benchmark with at least one printed Varshaphala example.
|
||||
@@ -0,0 +1,81 @@
|
||||
# Tajika/Sahams Annual Closure Status
|
||||
|
||||
- annual_task_count: `5`
|
||||
- external_verified_annual_tasks: `1`
|
||||
- can_claim_tajika_sahams_closure: `false`
|
||||
- production_tuning_allowed: `false`
|
||||
|
||||
## First Priority Packet
|
||||
|
||||
- case_id: `template_einstein_varshaphala_1905_lahiri`
|
||||
- capture_id: `external_template_einstein_varshaphala_1905_lahiri`
|
||||
- packet_path: `references/oracle/artifacts/pending_packets/external_template_einstein_varshaphala_1905_lahiri.json`
|
||||
- required_target_fields: `target.solar_return_datetime, target.varsha_lagna_deg, target.muntha_sign, target.year_lord, target.mudda_dasha_first_lord, target.sahams.punya_saham, target.sahams.rajya_saham, target.sahams.vivah_saham, target.tajika_yogas, target.source_artifact`
|
||||
|
||||
## Missing Summary
|
||||
|
||||
- metadata: `5`
|
||||
- target: `10`
|
||||
|
||||
## Prefilled Fields
|
||||
|
||||
- status: `draft`
|
||||
- promotion_status_after_fill: `external_verified`
|
||||
|
||||
- metadata:
|
||||
|
||||
- ayanamsa: `lahiri`
|
||||
- node_mode: `mean`
|
||||
- timezone: `0.883333`
|
||||
- annual_system: `varshaphala`
|
||||
- target_year: `1905`
|
||||
|
||||
- settings:
|
||||
|
||||
- ayanamsa: `lahiri`
|
||||
- node_mode: `mean`
|
||||
- annual_system: `varshaphala`
|
||||
- target_year: `1905`
|
||||
|
||||
## Manual Fill Plan
|
||||
|
||||
- status_value: `external_verified`
|
||||
- manual_entry_count: `15`
|
||||
|
||||
## Missing Fields
|
||||
|
||||
- `metadata.tool_name`
|
||||
- `metadata.tool_version_or_url`
|
||||
- `metadata.capture_date`
|
||||
- `metadata.operator_note`
|
||||
- `metadata.source_artifact`
|
||||
- `target.solar_return_datetime`
|
||||
- `target.varsha_lagna_deg`
|
||||
- `target.muntha_sign`
|
||||
- `target.year_lord`
|
||||
- `target.mudda_dasha_first_lord`
|
||||
- `target.sahams.punya_saham`
|
||||
- `target.sahams.rajya_saham`
|
||||
- `target.sahams.vivah_saham`
|
||||
- `target.tajika_yogas`
|
||||
- `target.source_artifact`
|
||||
## Commands
|
||||
|
||||
```bash
|
||||
python3 scripts/tajika_annual_oracle_queue.py --oracle-file references/oracle/tajika_annual_oracle_cases.json --apply-packet references/oracle/artifacts/pending_packets/external_template_einstein_varshaphala_1905_lahiri.json --format json
|
||||
```
|
||||
|
||||
```bash
|
||||
python3 scripts/tajika_annual_oracle_queue.py --oracle-file references/oracle/tajika_annual_oracle_cases.json --format json && python3 scripts/tajika_annual_benchmark_dashboard.py --oracle-file references/oracle/tajika_annual_oracle_cases.json --format json
|
||||
```
|
||||
|
||||
## Next Actions
|
||||
|
||||
- Fill solar return datetime, Varsha Lagna, Muntha, Year Lord, first Mudda Dasha lord, three Sahams and Tajika Yogas from an external annual source.
|
||||
- Document timezone/DST and solar-return convention before promoting the row.
|
||||
- Set the row to external_verified only after target.source_artifact and metadata.source_artifact point to reviewable evidence.
|
||||
- Regenerate the annual queue and benchmark dashboard.
|
||||
|
||||
## Boundary
|
||||
|
||||
This board isolates Tajika/Sahams annual closure. Local scripts/varshaphala.py output is not an external oracle and must not be used as production tuning evidence.
|
||||
@@ -99,12 +99,13 @@
|
||||
|
||||
## 四、缓解因素
|
||||
|
||||
| 因素 | 缓解效果 |
|
||||
|------|---------|
|
||||
| 土星入庙/旺相(本命或Transit) | 大幅减轻 → "刺痛"变"磨练" |
|
||||
| Lagna主星强(Shadbala高) | 中度减轻 |
|
||||
| 土星与Jupiter形成相位 | 吉星保护 |
|
||||
| Ashtakavarga该宫SAV分高(>30) | 该领域抗压力强 |
|
||||
| 因素 | 缓解效果 | 实战表现 |
|
||||
|------|---------|---------|
|
||||
| **本命形成强 Yoga(如 Sasa Yoga)且 Dasha 支持** | 显著调制负面效应 | "刺痛"更可能转化为训练、责任、竞争、考试、赛事或职场压力;是否获得奖项/地位必须再看10宫、11宫、D10、Dasha、AV与现实领域证据。 |
|
||||
| 土星入庙/旺相(本命或Transit但非贵格) | 大幅减轻 | "刺痛"变"磨练",最终有收获 |
|
||||
| Lagna主星强(Shadbala高) | 中度减轻 | 能扛住压力 |
|
||||
| 土星与Jupiter形成相位 | 吉星保护 | 遇到困难有贵人兜底 |
|
||||
| Ashtakavarga该宫SAV分高(>30) | 该领域抗压力强 | 外部动荡但核心盘面不崩 |
|
||||
|
||||
## 五、实战案例:示例案例命盘
|
||||
|
||||
|
||||
+139
@@ -0,0 +1,139 @@
|
||||
{
|
||||
"capture_id": "external_template_steve_jobs_varshaphala_1984_lahiri",
|
||||
"status": "external_verified",
|
||||
"case_id": "template_steve_jobs_varshaphala_1984_lahiri",
|
||||
"birth": {
|
||||
"year": 1955,
|
||||
"month": 2,
|
||||
"day": 24,
|
||||
"hour": 19,
|
||||
"minute": 15,
|
||||
"second": 0,
|
||||
"lat": 37.7749,
|
||||
"lon": -122.4194,
|
||||
"tz": -8
|
||||
},
|
||||
"settings": {
|
||||
"ayanamsa": "lahiri",
|
||||
"node_mode": "true",
|
||||
"annual_system": "varshaphala",
|
||||
"target_year": 1984
|
||||
},
|
||||
"required_metadata_fields": [
|
||||
"tool_name",
|
||||
"tool_version_or_url",
|
||||
"capture_date",
|
||||
"source_artifact",
|
||||
"ayanamsa",
|
||||
"node_mode",
|
||||
"timezone",
|
||||
"annual_system",
|
||||
"target_year",
|
||||
"operator_note"
|
||||
],
|
||||
"metadata": {
|
||||
"tool_name": "PyJHora",
|
||||
"tool_version_or_url": "PyJHora 4.8.7 isolated /tmp black-box run",
|
||||
"capture_date": "2026-06-27",
|
||||
"source_artifact": "references/oracle/artifacts/pyjhora_steve_jobs_varshaphala_1984_lahiri_stdout_20260627.txt",
|
||||
"ayanamsa": "lahiri",
|
||||
"node_mode": "PyJHora default",
|
||||
"timezone": "UTC-08:00",
|
||||
"annual_system": "Varshaphala/Tajika",
|
||||
"target_year": 1984,
|
||||
"operator_note": "Black-box annual output from isolated /tmp virtualenv. PyJHora AGPL code was not copied into this repository; only generated output is stored as external evidence. Year Lord direct call raised KeyError when Rahu appeared in candidates; packet records the filtered classical-planet workaround per PyJHora docstring boundary."
|
||||
},
|
||||
"target_placeholders": {
|
||||
"target.solar_return_datetime": "1984-02-25T05:41:37-08:00",
|
||||
"target.varsha_lagna_deg": 287.4007,
|
||||
"target.muntha_sign": "Cancer",
|
||||
"target.year_lord": "Mars",
|
||||
"target.mudda_dasha_first_lord": "Sun",
|
||||
"target.sahams.punya_saham": 249.1148,
|
||||
"target.sahams.rajya_saham": 207.6343,
|
||||
"target.sahams.vivah_saham": 8.8762,
|
||||
"target.tajika_yogas": {
|
||||
"eesarpha": [
|
||||
[
|
||||
0,
|
||||
5
|
||||
],
|
||||
[
|
||||
1,
|
||||
3
|
||||
],
|
||||
[
|
||||
2,
|
||||
6
|
||||
],
|
||||
[
|
||||
4,
|
||||
5
|
||||
]
|
||||
],
|
||||
"gairi_kamboola": null,
|
||||
"ithasala": [
|
||||
[
|
||||
0,
|
||||
1,
|
||||
1
|
||||
],
|
||||
[
|
||||
0,
|
||||
4,
|
||||
2
|
||||
],
|
||||
[
|
||||
1,
|
||||
4,
|
||||
3
|
||||
]
|
||||
],
|
||||
"kamboola": [
|
||||
true,
|
||||
[
|
||||
[
|
||||
1,
|
||||
4
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
0,
|
||||
4
|
||||
],
|
||||
[
|
||||
1,
|
||||
4
|
||||
],
|
||||
[
|
||||
0,
|
||||
1
|
||||
],
|
||||
[
|
||||
0,
|
||||
4
|
||||
]
|
||||
]
|
||||
],
|
||||
"khallasara": null,
|
||||
"manahoo": [
|
||||
[
|
||||
0,
|
||||
4,
|
||||
10
|
||||
]
|
||||
],
|
||||
"nakta": [],
|
||||
"yamaya": []
|
||||
},
|
||||
"target.source_artifact": "references/oracle/artifacts/pyjhora_steve_jobs_varshaphala_1984_lahiri_stdout_20260627.txt"
|
||||
},
|
||||
"integrity_checks": {
|
||||
"must_not_come_from_local_engine": true,
|
||||
"requires_external_artifact": true,
|
||||
"requires_status_external_verified_before_calibration": true,
|
||||
"requires_solar_return_convention": true
|
||||
},
|
||||
"promotion_status_after_fill": "external_verified"
|
||||
}
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
panchanga /Users/wuyongnaren added to system path ['', '/Library/Frameworks/Python.framework/Versions/3.11/lib/python311.zip', '/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11', '/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/lib-dynload', '/private/tmp/jyotish_pyjhora_blackbox/lib/python3.11/site-packages', '/Users/wuyongnaren']
|
||||
/Users added to system path ['', '/Library/Frameworks/Python.framework/Versions/3.11/lib/python311.zip', '/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11', '/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/lib-dynload', '/private/tmp/jyotish_pyjhora_blackbox/lib/python3.11/site-packages', '/Users/wuyongnaren', '/Users']
|
||||
house_planet_dict ['', '7', '', '', '', '', '2/6', '8', '1/4', 'L/5', '0/3', '']
|
||||
house_planet_dict ['', '7', '', '', '', '', '2/6', '8', '1/4', 'L/5', '0/3', '']
|
||||
house_planet_dict ['', '7', '', '', '', '', '2/6', '8', '1/4', 'L/5', '0/3', '']
|
||||
_get_nakta_triples iy_list [(0, [(1, 4)])]
|
||||
_get_nakta_triples iylist1 [(4, [(0, 1)])]
|
||||
_get_nakta_triples iy_list [(0, [(1, 4)]), (4, [(0, 1)])]
|
||||
house_planet_dict ['', '7', '', '', '', '', '2/6', '8', '1/4', 'L/5', '0/3', '']
|
||||
ithasala_yoga_planet_pairs [(0, 1, 1), (0, 4, 2), (1, 4, 3)]
|
||||
_get_nakta_triples iy_list [(0, [(1, 4)])]
|
||||
_get_nakta_triples iylist1 [(4, [(0, 1)])]
|
||||
_get_nakta_triples iy_list [(0, [(1, 4)]), (4, [(0, 1)])]
|
||||
_yamaya_triples [(0, [(1, 4)]), (4, [(0, 1)])]
|
||||
checking triples 0 12.51819523474876 1 4.232244722579111 4 4 12.51819523474876
|
||||
checking triples 4 13.495962116843629 0 12.51819523474876 1 1 13.495962116843629
|
||||
yamaya planet triples []
|
||||
house_planet_dict ['', '7', '', '', '', '', '2/6', '8', '1/4', 'L/5', '0/3', '']
|
||||
PYJHORA_BLACKBOX_VERSION 4.8.7
|
||||
CASE_ID template_steve_jobs_varshaphala_1984_lahiri
|
||||
DOB (1955, 2, 24)
|
||||
TOB (19, 15, 0)
|
||||
PLACE Place(Place='San Francisco, CA Steve Jobs Varshaphala 1984 template', latitude=37.7749, longitude=-122.4194, timezone=-8.0, elevation=0.0)
|
||||
AYANAMSA LAHIRI
|
||||
NODE_MODE PyJHora default
|
||||
TARGET_YEAR 1984
|
||||
YEARS_FROM_DOB_USED 30
|
||||
NATAL_JD 2435163.3020833335
|
||||
ANNUAL_CHART_RAW [['L', (9, 17.400729761262824)], [0, (10, 12.51819523474876)], [1, (8, 4.232244722579111)], [2, (6, 26.729647475518334)], [3, (10, 2.592766661293183)], [4, (8, 13.495962116843629)], [5, (9, 14.22730692496367)], [6, (6, 22.75179249306666)], [7, (1, 18.443240534378823)], [8, (7, 18.443240534378816)]]
|
||||
TAJIKA_ANNUAL_VALUES_JSON {"mudda_dasha_first_lord": "Sun", "mudda_first_raw": [[0, 0], [1985, 2, 9, 7.255877505987883], 0.91], "muntha_sign": "Cancer", "muntha_sign_index": 3, "sahams": {"punya_saham": 249.1148, "rajya_saham": 207.6343, "vivah_saham": 8.8762}, "solar_return_datetime": "1984-02-25T05:41:37-08:00", "solar_return_raw": [[1984, 2, 25], "05:41:37"], "tajika_yogas": {"eesarpha": [[0, 5], [1, 3], [2, 6], [4, 5]], "gairi_kamboola": null, "ithasala": [[0, 1, 1], [0, 4, 2], [1, 4, 3]], "kamboola": [true, [[1, 4]], [[0, 4], [1, 4], [0, 1], [0, 4]]], "khallasara": null, "manahoo": [[0, 4, 10]], "nakta": [], "yamaya": []}, "varsha_lagna_deg": 287.4007, "year_lord": "Mars", "year_lord_boundary": {"candidate_policy": "PyJHora docstring says Rahu/Ketu do not form lord of the year; filtered candidates to classical planets 0..6 after direct call raised KeyError.", "direct": {"error": "KeyError: 7", "ok": false, "value": null}, "filtered_candidates": [0, 2, 5], "jd_at_years": 2446120.9930033335, "night_time_birth": false, "raw_candidates": [7, 0, 2, 5]}, "year_lord_raw": 2}
|
||||
@@ -9,7 +9,7 @@
|
||||
"template_cases": [
|
||||
{
|
||||
"id": "template_steve_jobs_varshaphala_1984_lahiri",
|
||||
"status": "template_only",
|
||||
"status": "external_verified",
|
||||
"source": "JHora Varshaphala screenshot / PyJHora black-box annual output / printed example",
|
||||
"privacy": "public_figure_template",
|
||||
"birth": {
|
||||
@@ -30,20 +30,110 @@
|
||||
"target_year": 1984
|
||||
},
|
||||
"target": {
|
||||
"solar_return_datetime": null,
|
||||
"varsha_lagna_deg": null,
|
||||
"muntha_sign": null,
|
||||
"year_lord": null,
|
||||
"mudda_dasha_first_lord": null,
|
||||
"solar_return_datetime": "1984-02-25T05:41:37-08:00",
|
||||
"varsha_lagna_deg": 287.4007,
|
||||
"muntha_sign": "Cancer",
|
||||
"year_lord": "Mars",
|
||||
"mudda_dasha_first_lord": "Sun",
|
||||
"sahams": {
|
||||
"punya_saham": null,
|
||||
"rajya_saham": null,
|
||||
"vivah_saham": null
|
||||
"punya_saham": 249.1148,
|
||||
"rajya_saham": 207.6343,
|
||||
"vivah_saham": 8.8762
|
||||
},
|
||||
"tajika_yogas": null,
|
||||
"source_artifact": null
|
||||
"tajika_yogas": {
|
||||
"eesarpha": [
|
||||
[
|
||||
0,
|
||||
5
|
||||
],
|
||||
[
|
||||
1,
|
||||
3
|
||||
],
|
||||
[
|
||||
2,
|
||||
6
|
||||
],
|
||||
[
|
||||
4,
|
||||
5
|
||||
]
|
||||
],
|
||||
"gairi_kamboola": null,
|
||||
"ithasala": [
|
||||
[
|
||||
0,
|
||||
1,
|
||||
1
|
||||
],
|
||||
[
|
||||
0,
|
||||
4,
|
||||
2
|
||||
],
|
||||
[
|
||||
1,
|
||||
4,
|
||||
3
|
||||
]
|
||||
],
|
||||
"kamboola": [
|
||||
true,
|
||||
[
|
||||
[
|
||||
1,
|
||||
4
|
||||
]
|
||||
],
|
||||
[
|
||||
[
|
||||
0,
|
||||
4
|
||||
],
|
||||
[
|
||||
1,
|
||||
4
|
||||
],
|
||||
[
|
||||
0,
|
||||
1
|
||||
],
|
||||
[
|
||||
0,
|
||||
4
|
||||
]
|
||||
]
|
||||
],
|
||||
"khallasara": null,
|
||||
"manahoo": [
|
||||
[
|
||||
0,
|
||||
4,
|
||||
10
|
||||
]
|
||||
],
|
||||
"nakta": [],
|
||||
"yamaya": []
|
||||
},
|
||||
"source_artifact": "references/oracle/artifacts/pyjhora_steve_jobs_varshaphala_1984_lahiri_stdout_20260627.txt"
|
||||
},
|
||||
"verification_note": "Fill only from external annual-chart output. Local scripts/varshaphala.py output is not valid evidence."
|
||||
"verification_note": "Fill only from external annual-chart output. Local scripts/varshaphala.py output is not valid evidence.",
|
||||
"evidence_packet": {
|
||||
"capture_id": "external_template_steve_jobs_varshaphala_1984_lahiri",
|
||||
"status": "external_verified",
|
||||
"metadata": {
|
||||
"tool_name": "PyJHora",
|
||||
"tool_version_or_url": "PyJHora 4.8.7 isolated /tmp black-box run",
|
||||
"capture_date": "2026-06-27",
|
||||
"source_artifact": "references/oracle/artifacts/pyjhora_steve_jobs_varshaphala_1984_lahiri_stdout_20260627.txt",
|
||||
"ayanamsa": "lahiri",
|
||||
"node_mode": "PyJHora default",
|
||||
"timezone": "UTC-08:00",
|
||||
"annual_system": "Varshaphala/Tajika",
|
||||
"target_year": 1984,
|
||||
"operator_note": "Black-box annual output from isolated /tmp virtualenv. PyJHora AGPL code was not copied into this repository; only generated output is stored as external evidence. Year Lord direct call raised KeyError when Rahu appeared in candidates; packet records the filtered classical-planet workaround per PyJHora docstring boundary."
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "template_einstein_varshaphala_1905_lahiri",
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
"title": "Tajika / Sahams annual closure",
|
||||
"priority": "P0",
|
||||
"status": "active_gap",
|
||||
"current_truth": "Varshaphala, Muntha, Year Lord, Mudda Dasha and Sahams have local structure, but annual judgment depth and external sample closure remain incomplete.",
|
||||
"current_truth": "Varshaphala, Muntha, Year Lord, Mudda Dasha and Sahams have local structure, and the first annual external packet is now accepted at 1/5 for Steve Jobs 1984 Lahiri via PyJHora 4.8.7 black-box artifact; annual judgment depth, Einstein 1905 and the remaining external sample set are still incomplete.",
|
||||
"completion_standard": [
|
||||
"External annual packets include solar return time, Varsha Lagna, Muntha, Year Lord, Mudda Dasha, key Sahams and Tajika Yogas.",
|
||||
"Annual interpretation templates distinguish calculation evidence from judgment confidence.",
|
||||
@@ -67,9 +67,9 @@
|
||||
"Local Varshaphala output alone is external oracle evidence"
|
||||
],
|
||||
"next_actions": [
|
||||
"Use scripts/tajika_annual_closure_status.py to fill the first annual packet.",
|
||||
"Freeze the annual judgment template around Muntha, Year Lord, Mudda Dasha and Sahams.",
|
||||
"Add public benchmark rows only after external annual evidence exists."
|
||||
"Use scripts/tajika_annual_closure_status.py to fill the next annual packet: template_einstein_varshaphala_1905_lahiri.",
|
||||
"Freeze the annual judgment template around Muntha, Year Lord, Mudda Dasha and Sahams without treating one annual sample as predictive closure.",
|
||||
"Add public benchmark rows only after external annual evidence exists and scripts/tajika_annual_benchmark_dashboard.py reports readiness."
|
||||
]
|
||||
},
|
||||
"article_template_industrialization": {
|
||||
|
||||
@@ -39,6 +39,18 @@
|
||||
| 土星 | ~2.5年 | 人生阶段/业力 | 季度-年度 |
|
||||
| Rahu/Ketu | ~1.5年 | 深层欲望/灵性 | 半年-年度 |
|
||||
|
||||
### 1.3 Natal Promise First Protocol(本命承诺优先协议)⚠️
|
||||
|
||||
**核心规则**:在判定任何凶星(特别是土星、火星、Rahu/Ketu)过境带来的压力、延迟或风险前,**必须首先核验本命盘是否承诺该主题、该星在原盘中的功能性角色、尊贵度、Yoga、Shadbala/Ashtakavarga 支撑,以及当前 Dasha 是否允许兑现**。
|
||||
|
||||
| 本命与时运状态 | 流年过境(Gochara)修正法则 | 实战表现 |
|
||||
|-------------|----------------------------|---------|
|
||||
| **本命承诺强 + Yoga 成立 + Dasha 支持**(如 Mahapurusha Yoga、强 Parivartana、强宫主) | 过境凶星更常表现为高压激活、责任加重、竞争升级或结构化突破;不可直接套用灾难断语。 | 例如 Sasa Yoga 成立且相关 Dasha/事业宫位被激活时,Kantaka/Ashtama 类压力可能转为训练、赛事、考试、职场竞争或责任上升。仍需看 Dasha、宫位主题、AV 分数与实际事件背景。 |
|
||||
| **入旺 / 极旺**(Exalted / Moolatrikona)但缺少明确事件承诺 | 负面效应通常减轻,压力更像必须完成的磨练;不能自动推断为大奖、升迁或胜利。 | 压力存在,但若 Dasha 与目标宫位配合,结果更容易有建设性。 |
|
||||
| **落陷 / 受克 / 功能性凶且 Dasha 同步**(Debilitated / Afflicted) | 负面条文可信度上升,但仍应避免单因素绝对化;需与健康、事业、家庭等主题宫位和分盘交叉。 | 更可能出现压抑、延迟、失败、病痛或成本增加,但具体事件类型必须由本命承诺和 Dasha 指定。 |
|
||||
|
||||
> **⚠️ 误区提醒**:禁止脱离本命承诺、Dasha 与分盘,直接套用“某凶星过某宫就必然发生某类坏事”的静态流年断语。更严谨的说法是:本命盘决定事件可发生的范围,Dasha 决定主题是否进入兑现期,Transit 主要负责触发、调制压力形态和缩小时间窗口。
|
||||
|
||||
---
|
||||
|
||||
## 二、Double Transit 理论(双过境理论)
|
||||
|
||||
@@ -33,6 +33,8 @@ def _run_json(command: list[str]) -> dict[str, Any]:
|
||||
def build_dashboard(oracle_file: str) -> dict[str, Any]:
|
||||
queue = _run_json([PYTHON, "scripts/tajika_annual_oracle_queue.py", "--oracle-file", oracle_file, "--format", "json"])
|
||||
summary = queue["summary"]
|
||||
next_task = next((task for task in queue["tasks"] if not task["ready_for_calibration"]), None)
|
||||
next_case = next_task["case_id"] if next_task else None
|
||||
can_claim_closure = bool(summary["production_tuning_allowed"] and summary["ready_for_calibration"] == summary["total_tasks"])
|
||||
remaining_gap = (
|
||||
"Solar return exact time, Varsha Lagna, Muntha, Year Lord, Mudda Dasha first lord, "
|
||||
@@ -58,8 +60,13 @@ def build_dashboard(oracle_file: str) -> dict[str, Any]:
|
||||
),
|
||||
},
|
||||
"remaining_gap": remaining_gap,
|
||||
"first_priority": next_task,
|
||||
"next_actions": [
|
||||
"Fill one Steve Jobs annual evidence packet from JHora or PyJHora.",
|
||||
(
|
||||
f"Fill the next annual evidence packet from JHora or PyJHora: {next_case}."
|
||||
if next_case
|
||||
else "All annual evidence packets are filled; review tolerance checks before any production tuning."
|
||||
),
|
||||
"Add solar return datetime and Varsha Lagna tolerance checks after the first external row exists.",
|
||||
"Add Saham-specific tolerance checks for Punya, Rajya and Vivah Saham.",
|
||||
"Expand the annual benchmark with at least one printed Varshaphala example.",
|
||||
|
||||
@@ -131,7 +131,9 @@ def _validate_command(oracle_file: str) -> str:
|
||||
def build_status(oracle_file: str) -> dict[str, Any]:
|
||||
queue = _run_json([PYTHON, "scripts/tajika_annual_oracle_queue.py", "--oracle-file", oracle_file, "--format", "json"])
|
||||
annual_tasks = queue.get("tasks", [])
|
||||
priority = next((task for task in annual_tasks if task.get("case_id") == FIRST_PRIORITY_CASE_ID), None)
|
||||
priority = next((task for task in annual_tasks if not task.get("ready_for_calibration")), None)
|
||||
if priority is None:
|
||||
priority = next((task for task in annual_tasks if task.get("case_id") == FIRST_PRIORITY_CASE_ID), None)
|
||||
if priority is None and annual_tasks:
|
||||
priority = annual_tasks[0]
|
||||
if priority is None:
|
||||
@@ -141,7 +143,11 @@ def build_status(oracle_file: str) -> dict[str, Any]:
|
||||
capture_id = queue_packet["capture_id"]
|
||||
packet_path = f"references/oracle/artifacts/pending_packets/{capture_id}.json"
|
||||
template_path = FIRST_PRIORITY_TEMPLATE_PATH if priority["case_id"] == FIRST_PRIORITY_CASE_ID else packet_path
|
||||
packet = json.loads((ROOT / template_path).read_text(encoding="utf-8"))
|
||||
template_file = ROOT / template_path
|
||||
if template_file.exists():
|
||||
packet = json.loads(template_file.read_text(encoding="utf-8"))
|
||||
else:
|
||||
packet = queue_packet
|
||||
missing_fields = _metadata_missing(packet) + _target_missing(packet)
|
||||
missing_groups = _group_missing_fields(missing_fields)
|
||||
external_verified = [
|
||||
|
||||
@@ -69,6 +69,8 @@ def _write_json(path: str, value: dict[str, Any]) -> None:
|
||||
|
||||
|
||||
def _target_fields(value: Any, prefix: str = "target") -> list[str]:
|
||||
if prefix == "target.tajika_yogas":
|
||||
return [prefix]
|
||||
if prefix == "target" and isinstance(value, dict):
|
||||
fields: list[str] = []
|
||||
for key, child in value.items():
|
||||
@@ -93,6 +95,10 @@ def _target_value(target: dict[str, Any], field: str) -> Any:
|
||||
|
||||
def _missing_target_fields(value: Any, prefix: str = "target") -> list[str]:
|
||||
missing: list[str] = []
|
||||
if prefix == "target.tajika_yogas":
|
||||
if value is None or value == "" or value == {}:
|
||||
return [prefix]
|
||||
return []
|
||||
if isinstance(value, dict):
|
||||
for key, child in value.items():
|
||||
missing.extend(_missing_target_fields(child, f"{prefix}.{key}"))
|
||||
@@ -117,9 +123,13 @@ def _evidence_packet(case: dict[str, Any], target_fields: list[str]) -> dict[str
|
||||
"target_year": settings.get("target_year", ""),
|
||||
"operator_note": "",
|
||||
}
|
||||
existing = case.get("evidence_packet", {})
|
||||
existing_metadata = existing.get("metadata", {}) if isinstance(existing, dict) else {}
|
||||
if isinstance(existing_metadata, dict):
|
||||
metadata.update(existing_metadata)
|
||||
return {
|
||||
"capture_id": f"external_{case_id}",
|
||||
"status": "draft",
|
||||
"capture_id": existing.get("capture_id") or f"external_{case_id}" if isinstance(existing, dict) else f"external_{case_id}",
|
||||
"status": existing.get("status", "draft") if isinstance(existing, dict) else "draft",
|
||||
"case_id": case_id,
|
||||
"birth": case.get("birth", {}),
|
||||
"settings": settings,
|
||||
|
||||
@@ -39,8 +39,8 @@ def test_oracle_closure_master_dashboard_aggregates_all_hard_fronts() -> None:
|
||||
assert report["scope"] == "jyotish_external_oracle_closure_master_dashboard"
|
||||
assert report["schema_version"] == 1
|
||||
assert report["summary"]["total_tasks"] == 12
|
||||
assert report["summary"]["external_verified_tasks"] == 7
|
||||
assert report["summary"]["open_tasks"] == 5
|
||||
assert report["summary"]["external_verified_tasks"] == 8
|
||||
assert report["summary"]["open_tasks"] == 4
|
||||
assert report["summary"]["can_claim_global_oracle_closure"] is False
|
||||
assert report["fronts"]["dasha"]["task_count"] == 3
|
||||
assert report["fronts"]["shadbala"]["task_count"] == 4
|
||||
@@ -49,7 +49,9 @@ def test_oracle_closure_master_dashboard_aggregates_all_hard_fronts() -> None:
|
||||
assert report["fronts"]["dasha"]["first_priority"] is None
|
||||
assert report["fronts"]["shadbala"]["external_verified_tasks"] == 4
|
||||
assert report["fronts"]["shadbala"]["first_priority"]["case_id"] == "template_redacted_place_shadbala_raman"
|
||||
assert report["fronts"]["tajika_sahams"]["first_priority"]["case_id"] == "template_steve_jobs_varshaphala_1984_lahiri"
|
||||
assert report["fronts"]["tajika_sahams"]["external_verified_tasks"] == 1
|
||||
assert report["fronts"]["tajika_sahams"]["open_tasks"] == 4
|
||||
assert report["fronts"]["tajika_sahams"]["first_priority"]["case_id"] == "template_einstein_varshaphala_1905_lahiri"
|
||||
assert report["fronts"]["tajika_sahams"]["first_priority"]["missing_groups"]["target"]["count"] == 10
|
||||
assert report["fronts"]["shadbala"]["first_priority"]["manual_fill_plan"]["manual_entry_count"] == 55
|
||||
assert report["next_action_order"][0]["front"] == "tajika_sahams"
|
||||
@@ -68,6 +70,6 @@ def test_oracle_closure_master_dashboard_markdown_can_be_written(tmp_path: Path)
|
||||
assert "can_claim_global_oracle_closure: `false`" in markdown
|
||||
assert "`dasha` | 3 | 3 | `complete`" in markdown
|
||||
assert "template_redacted_place_shadbala_raman" in markdown
|
||||
assert "template_steve_jobs_varshaphala_1984_lahiri" in markdown
|
||||
assert "template_einstein_varshaphala_1905_lahiri" in markdown
|
||||
assert "manual entries" in markdown
|
||||
assert "metadata missing" in markdown
|
||||
|
||||
@@ -92,3 +92,24 @@ def test_skill_gap_truth_audit_markdown_is_human_readable() -> None:
|
||||
assert "can_claim_global_first: `false`" in markdown
|
||||
assert "Dasha external oracle" in markdown
|
||||
assert "Past Corrections" in markdown
|
||||
|
||||
|
||||
def test_transit_reference_blocks_single_factor_override_claims() -> None:
|
||||
transit = (ROOT / "references" / "transit-comprehensive-guide.md").read_text(encoding="utf-8")
|
||||
kantaka = (ROOT / "references" / "navatara-kantaka-shani-guide.md").read_text(encoding="utf-8")
|
||||
combined = transit + "\n" + kantaka
|
||||
|
||||
assert "Natal Promise First Protocol" in transit
|
||||
assert "本命盘决定事件可发生的范围" in transit
|
||||
assert "Dasha 决定主题是否进入兑现期" in transit
|
||||
assert "Transit 主要负责触发" in transit
|
||||
assert "是否获得奖项/地位必须再看10宫、11宫、D10、Dasha、AV与现实领域证据" in kantaka
|
||||
|
||||
forbidden_overclaims = [
|
||||
"一票否决",
|
||||
"完全反转",
|
||||
"免疫纯粹灾难",
|
||||
"土星过4宫必主",
|
||||
]
|
||||
for phrase in forbidden_overclaims:
|
||||
assert phrase not in combined
|
||||
|
||||
@@ -38,7 +38,7 @@ def test_tajika_annual_dashboard_outputs_stable_json_summary() -> None:
|
||||
assert report["scope"] == "tajika_sahams_annual_benchmark_dashboard"
|
||||
assert report["schema_version"] == 1
|
||||
assert report["summary"]["total_tasks"] == 5
|
||||
assert report["summary"]["ready_for_calibration"] == 0
|
||||
assert report["summary"]["ready_for_calibration"] == 1
|
||||
assert report["summary"]["production_tuning_allowed"] is False
|
||||
assert report["annual_claim"]["can_claim_tajika_sahams_closure"] is False
|
||||
assert "Solar return" in report["remaining_gap"]
|
||||
|
||||
@@ -37,10 +37,10 @@ def test_tajika_annual_closure_status_identifies_first_annual_packet() -> None:
|
||||
assert report["scope"] == "tajika_sahams_annual_closure_status"
|
||||
assert report["schema_version"] == 1
|
||||
assert report["summary"]["annual_task_count"] == 5
|
||||
assert report["summary"]["external_verified_annual_tasks"] == 0
|
||||
assert report["summary"]["external_verified_annual_tasks"] == 1
|
||||
assert report["summary"]["can_claim_tajika_sahams_closure"] is False
|
||||
assert report["first_priority"]["case_id"] == "template_steve_jobs_varshaphala_1984_lahiri"
|
||||
assert report["first_priority"]["capture_id"] == "external_template_steve_jobs_varshaphala_1984_lahiri"
|
||||
assert report["first_priority"]["case_id"] == "template_einstein_varshaphala_1905_lahiri"
|
||||
assert report["first_priority"]["capture_id"] == "external_template_einstein_varshaphala_1905_lahiri"
|
||||
assert report["first_priority"]["required_target_fields"] == [
|
||||
"target.solar_return_datetime",
|
||||
"target.varsha_lagna_deg",
|
||||
@@ -58,7 +58,9 @@ def test_tajika_annual_closure_status_identifies_first_annual_packet() -> None:
|
||||
assert "target.sahams.punya_saham" in report["first_priority"]["missing_fields"]
|
||||
assert report["first_priority"]["missing_groups"]["metadata"]["count"] == 5
|
||||
assert report["first_priority"]["missing_groups"]["target"]["count"] == 10
|
||||
assert report["first_priority"]["prefilled_fields"]["metadata"]["annual_system"] == "Varshaphala/Tajika"
|
||||
assert report["first_priority"]["prefilled_fields"]["metadata"]["annual_system"] == "varshaphala"
|
||||
assert report["first_priority"]["prefilled_fields"]["metadata"]["target_year"] == 1905
|
||||
assert report["first_priority"]["prefilled_fields"]["settings"]["node_mode"] == "mean"
|
||||
assert report["first_priority"]["manual_fill_plan"]["status_value"] == "external_verified"
|
||||
assert report["first_priority"]["manual_fill_plan"]["manual_entry_count"] == 15
|
||||
assert report["first_priority"]["validate_command"]
|
||||
@@ -73,7 +75,7 @@ def test_tajika_annual_closure_status_markdown_can_be_written(tmp_path: Path) ->
|
||||
markdown = output.read_text(encoding="utf-8")
|
||||
assert "# Tajika/Sahams Annual Closure Status" in markdown
|
||||
assert "can_claim_tajika_sahams_closure: `false`" in markdown
|
||||
assert "external_template_steve_jobs_varshaphala_1984_lahiri" in markdown
|
||||
assert "external_template_einstein_varshaphala_1905_lahiri" in markdown
|
||||
assert "target.sahams.punya_saham" in markdown
|
||||
assert "## Missing Summary" in markdown
|
||||
assert "## Prefilled Fields" in markdown
|
||||
|
||||
@@ -32,20 +32,41 @@ def test_tajika_annual_queue_outputs_collection_tasks() -> None:
|
||||
assert queue["scope"] == "tajika_sahams_annual_oracle_collection_queue"
|
||||
assert queue["schema_version"] == 1
|
||||
assert queue["summary"]["total_tasks"] == 5
|
||||
assert queue["summary"]["ready_for_calibration"] == 0
|
||||
assert queue["summary"]["ready_for_calibration"] == 1
|
||||
assert queue["summary"]["production_tuning_allowed"] is False
|
||||
assert "solar return" in queue["boundary"].lower()
|
||||
|
||||
first = queue["tasks"][0]
|
||||
assert first["task_id"].startswith("collect_")
|
||||
assert first["status"] == "template_only"
|
||||
assert first["ready_for_collection"] is True
|
||||
assert first["ready_for_calibration"] is False
|
||||
assert first["case_id"] == "template_steve_jobs_varshaphala_1984_lahiri"
|
||||
assert first["status"] == "external_verified"
|
||||
assert first["ready_for_collection"] is False
|
||||
assert first["ready_for_calibration"] is True
|
||||
assert "target.solar_return_datetime" in first["target_fields"]
|
||||
assert "target.sahams.punya_saham" in first["missing_target_fields"]
|
||||
assert first["missing_target_fields"] == []
|
||||
assert first["target_fields"] == [
|
||||
"target.solar_return_datetime",
|
||||
"target.varsha_lagna_deg",
|
||||
"target.muntha_sign",
|
||||
"target.year_lord",
|
||||
"target.mudda_dasha_first_lord",
|
||||
"target.sahams.punya_saham",
|
||||
"target.sahams.rajya_saham",
|
||||
"target.sahams.vivah_saham",
|
||||
"target.tajika_yogas",
|
||||
"target.source_artifact",
|
||||
]
|
||||
assert first["evidence_packet"]["metadata"]["tool_name"] == "PyJHora"
|
||||
assert first["evidence_packet"]["target_placeholders"]["target.year_lord"] == "Mars"
|
||||
assert first["evidence_packet"]["target_placeholders"]["target.mudda_dasha_first_lord"] == "Sun"
|
||||
assert "JHora Varshaphala screenshot" in first["preferred_sources"]
|
||||
assert first["evidence_packet"]["integrity_checks"]["requires_external_artifact"] is True
|
||||
|
||||
second = queue["tasks"][1]
|
||||
assert second["case_id"] == "template_einstein_varshaphala_1905_lahiri"
|
||||
assert second["ready_for_collection"] is True
|
||||
assert "target.sahams.punya_saham" in second["missing_target_fields"]
|
||||
|
||||
|
||||
def test_tajika_annual_queue_markdown_lists_sahams_and_yogas() -> None:
|
||||
completed = run_queue("--format", "markdown")
|
||||
|
||||
Reference in New Issue
Block a user