diff --git a/CHANGELOG.md b/CHANGELOG.md index 1d1774e4..50ec1ddb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,51 @@ # 印度占星 Skill 更新日志 +## v6.0.42(2026-06-05)—— Yoga F1 93% 源码口径续航 + +> **目标**:继续用户要求的“准确率优先”路线;本轮先对残余 Top Yoga 做 A/B 模拟,只发布源码定义明确且整体指标健康改善的修改,不为了短期 F1 盲目扩大规则。 + +### 源码语义确认 + +- 复核 PyJHora `yoga._get_natural_benefics()`:Yoga 源码层的 natural benefics 默认为 Jupiter、Venus,Mercury 仅在独处或与 Jupiter/Venus 同宫时加入;不等同于 Skill 静态 `BENEFICS`。 +- 复核 PyJHora `house.aspected_planets_of_the_planet(chart, p)` 与 `house.planets_aspecting_the_planet(chart, p)` 方向差异:前者是“p 所相位到的行星”,后者才是“相位 p 的行星”。`bvr_bhratruvriddhi_precise` 按源码使用前者语义。 +- 复核 PyJHora `charts.benefics_and_malefics()`:jd/place 路径存在 tithi、Moon、Mercury 同宫动态凶吉;但当前 v6.0.42 只在源码明确需要的 Yoga 中使用已稳定复现的 `pyjhora_natural_benefics()`,暂不把 dynamic benefics/malefics 全局接入,避免影响过宽。 + +### 高影响规则对齐 + +- `bvr_bhratruvriddhi_precise`:改用 `pyjhora_natural_benefics()`,并按 PyJHora `_bhratruvriddhi_yoga_calculation()` 保留 `aspected_planets_of_the_planet()` 的方向语义;模拟结果 FP **7→0**,FN **0→3**,整体 precision 明显提升。 +- `bvr_ayatna_griha_prapta_yoga`:从旧 compound 占位结构改为 custom 源码口径,复刻 BVR-189/190: + - L1 与 L7 同在 Lagna 或 4宫,并至少一者受 natural benefic 相位;或 + - L9 在 Kendra,且 L4 strong 或 moola-trikona。 + - 模拟结果 FP **0→0**,FN **6→1**。 +- `bvr_utthama_graha_yoga`:从 semantic compound 改为 custom BVR-187 源码口径:4宫主在 Kendra/Trikona,且与 natural benefic 同宫,并受 natural benefic Graha Drishti;模拟结果 FP **3→1**,FN **5→6**,结合前两项后总指标仍健康改善。 +- `bvr_dharidhra_11_precise` 本轮只模拟、不修改:去掉 `method1` 后虽 FP **2→1**,但 FN **6→10**,不符合准确率优先与 source-comparable 收益标准。 + +### 验证结果 + +- `scripts/validate_logic_v2.py`: + - Precision **95.67%**(v6.0.41 为 94.82%) + - Recall **91.01%**(v6.0.41 为 90.92%) + - F1 **93.28%**(v6.0.41 为 92.83%) + - FP:44;FN:96 +- `scripts/run_quality_gate.py --skip-yoga-logic`:通过。 + - pytest **35 passed** + - BPHS/Ashtakavarga 不变量 **18/18** + - golden case 通过 + - capability audit valid,0 problem / 0 warning + +### 规则库状态 + +- JSON 规则总数:**475** +- 启用规则:**381** +- 当前验证报告:`references/validation_logic_report.json` + +### 后续优化点 + +- 下一轮 Top residual 仍集中在 `bvr_vanchana_chora_bheethi_yoga`、`bvr_kapata_yoga`、`bvr_mathibhramana_yoga`、`bvr_dharidhra_11_precise`、`bvr_kalaanidhi_yoga`、`bvr_krisanga_yoga`。 +- 暂不建议直接扩大 Kapata/Vanchana/Mathibhramana 条件;应优先复现 Gulika/Maandi house-index、`benefics_and_malefics()` dynamic malefics、以及 PyJHora variation mapping 的输入层。 + +--- + ## v6.0.41(2026-06-05)—— Yoga F1 92% 源码口径续航 > **目标**:在 v6.0.40 基础上继续推进残余 Yoga 误差,但仍坚持“准确率优先、源码确认后再改”;本轮只处理 PyJHora 源码定义非常明确且可稳定复现的规则。 diff --git a/SKILL.md b/SKILL.md index 36b5a08e..3498daf6 100644 --- a/SKILL.md +++ b/SKILL.md @@ -1,6 +1,6 @@ --- name: jyotish-vedic-astrology -version: 6.0.41 +version: 6.0.42 description: 印度占星(Jyotish)专业解盘与推运系统。核心能力:PDF星盘输入→严谨解盘→精确推运应期输出。触发词:印度占星、吠陀占星、Jyotish、解盘、推运、星盘分析、Dasha、Transit、Nakshatra、Yoga、出生时间矫正、PDF星盘、读取PDF、分析PDF星盘、现代解读、误判纠错、Varga分盘、综合分析、过境分析、合盘、婚姻匹配、年运盘、Prashna、Argala、Jaimini、Shadbala、Ashtakavarga、HTML报告、深度解盘。 --- @@ -10,7 +10,7 @@ description: 印度占星(Jyotish)专业解盘与推运系统。核心能力 > **严格路由**:`references/strict-workflow-router.md`(⭐涉及事业/婚恋/财务/应期/技法验证时必须优先读取) > **覆盖矩阵**:`references/technique-capability-matrix.md`(⭐判断技法 covered/partial/missing 时必须参考) > **机器注册表**:`references/technique_registry.json` + `scripts/audit_capabilities.py`(⭐用于自动审计与CI门禁) -> **版本**:v6.0.41-yoga-f1-92-source-parity | **详细变更**:`CHANGELOG.md` +> **版本**:v6.0.42-yoga-f1-93-source-parity | **详细变更**:`CHANGELOG.md` --- @@ -301,9 +301,9 @@ $PYTHON $SCRIPT <子命令> [参数] --- -**版本**:v6.0.41-yoga-f1-92-source-parity +**版本**:v6.0.42-yoga-f1-93-source-parity **创建日期**:2026-04-20 -**最后更新**:2026-06-05(v6.0.41 继续坚持 PyJHora 源码口径优先,修复 `bvr_sumukha_precise`、`bvr_dama_yoga`、`bvr_matru_sneha_yoga` 并新增 `pyjhora_aspected_planets_of_raasi()` 与 `natural_friend()` helper;当前 475 条 JSON 规则、381 条启用规则,D1/Rasi 逻辑验证 Precision=94.82%、Recall=90.92%、F1=92.83%,质量门禁通过,报告以 `references/validation_logic_report.json` 为准) +**最后更新**:2026-06-05(v6.0.42 继续坚持 PyJHora 源码口径优先,先模拟再修改;本轮修复 `bvr_bhratruvriddhi_precise`、`bvr_ayatna_griha_prapta_yoga`、`bvr_utthama_graha_yoga`,对齐 PyJHora natural benefics、BVR-189/190 与 BVR-187 逻辑;当前 475 条 JSON 规则、381 条启用规则,D1/Rasi 逻辑验证 Precision=95.67%、Recall=91.01%、F1=93.28%,质量门禁通过,报告以 `references/validation_logic_report.json` 为准) --- diff --git a/references/validation_logic_report.json b/references/validation_logic_report.json index badd09f1..d1e03972 100644 --- a/references/validation_logic_report.json +++ b/references/validation_logic_report.json @@ -2,7 +2,7 @@ "summary": { "charts_tested": 60, "comparable_rules": 72, - "skill_total": 1024, + "skill_total": 1016, "pyjhora_total": 1068, "unmapped_pyjhora": 706, "missing_mappings": { @@ -131,19 +131,14 @@ "yuddhatpoorvadridhachitta_yoga" ] }, - "agreements": 971, - "false_positives": 53, - "false_negatives": 97, - "precision": 0.9482, - "recall": 0.9092, - "f1": 0.9283 + "agreements": 972, + "false_positives": 44, + "false_negatives": 96, + "precision": 0.9567, + "recall": 0.9101, + "f1": 0.9328 }, "false_positives": [ - { - "chart": "Albert Einstein", - "rule_id": "bvr_bhratruvriddhi_precise", - "rule_name": "Bhratruvriddhi Yoga" - }, { "chart": "Albert Einstein", "rule_id": "koorma_yoga", @@ -171,29 +166,19 @@ }, { "chart": "Thomas Edison", - "rule_id": "bvr_bhratruvriddhi_precise", - "rule_name": "Bhratruvriddhi Yoga" + "rule_id": "bvr_017_vosi_precise", + "rule_name": "Vosi Yoga" }, { "chart": "Thomas Edison", "rule_id": "bvr_018_ubhayachara_precise", "rule_name": "Ubhayachara Yoga" }, - { - "chart": "Thomas Edison", - "rule_id": "bvr_017_vosi_precise", - "rule_name": "Vosi Yoga" - }, { "chart": "Max Planck", "rule_id": "bvr_bandhubhisthyaktha_precise", "rule_name": "Bandhubhisthyaktha Yoga" }, - { - "chart": "Niels Bohr", - "rule_id": "bvr_bhratruvriddhi_precise", - "rule_name": "Bhratruvriddhi Yoga" - }, { "chart": "Niels Bohr", "rule_id": "vihaga_nabhasa", @@ -229,26 +214,11 @@ "rule_id": "bvr_bahu_puthra_precise", "rule_name": "Bahu Puthra Yoga" }, - { - "chart": "Rabindranath Tagore", - "rule_id": "bvr_bhratruvriddhi_precise", - "rule_name": "Bhratruvriddhi Yoga" - }, { "chart": "Rabindranath Tagore", "rule_id": "bvr_vanchana_chora_bheethi_yoga", "rule_name": "Vanchana Chora Bheethi Yoga" }, - { - "chart": "Wolfgang Mozart", - "rule_id": "bvr_utthama_graha_yoga", - "rule_name": "Utthama Griha Yoga" - }, - { - "chart": "Pablo Picasso", - "rule_id": "bvr_018_ubhayachara_precise", - "rule_name": "Ubhayachara Yoga" - }, { "chart": "Pablo Picasso", "rule_id": "bvr_bhaga_chumbana_yoga", @@ -259,10 +229,15 @@ "rule_id": "bvr_kapata_yoga", "rule_name": "Kapata Yoga" }, + { + "chart": "Pablo Picasso", + "rule_id": "bvr_018_ubhayachara_precise", + "rule_name": "Ubhayachara Yoga" + }, { "chart": "Vincent van Gogh", - "rule_id": "bvr_dharidhra_11_precise", - "rule_name": "Dharidhra Yoga" + "rule_id": "bvr_krisanga_yoga", + "rule_name": "Krisanga Yoga" }, { "chart": "Vincent van Gogh", @@ -271,8 +246,8 @@ }, { "chart": "Vincent van Gogh", - "rule_id": "bvr_krisanga_yoga", - "rule_name": "Krisanga Yoga" + "rule_id": "bvr_dharidhra_11_precise", + "rule_name": "Dharidhra Yoga" }, { "chart": "Charlie Chaplin", @@ -286,13 +261,13 @@ }, { "chart": "Steve Jobs", - "rule_id": "bvr_mathibhramana_yoga", - "rule_name": "Mathibhramana Yoga" + "rule_id": "vihaga_nabhasa", + "rule_name": "Vihaga Nabhasa Yoga" }, { "chart": "Steve Jobs", - "rule_id": "vihaga_nabhasa", - "rule_name": "Vihaga Nabhasa Yoga" + "rule_id": "bvr_mathibhramana_yoga", + "rule_name": "Mathibhramana Yoga" }, { "chart": "Bill Gates", @@ -309,11 +284,6 @@ "rule_id": "bvr_yukthi_samanwithavagmi_yoga", "rule_name": "Yukthi Samanwithavagmi Yoga" }, - { - "chart": "Narayana Murthy", - "rule_id": "bvr_bhratruvriddhi_precise", - "rule_name": "Bhratruvriddhi Yoga" - }, { "chart": "Narayana Murthy", "rule_id": "bvr_bhaga_chumbana_yoga", @@ -329,20 +299,15 @@ "rule_id": "bvr_yukthi_samanwithavagmi_yoga", "rule_name": "Yukthi Samanwithavagmi Yoga" }, - { - "chart": "Michael Jordan", - "rule_id": "bvr_vanchana_chora_bheethi_yoga", - "rule_name": "Vanchana Chora Bheethi Yoga" - }, { "chart": "Michael Jordan", "rule_id": "bvr_yukthi_samanwithavagmi_yoga", "rule_name": "Yukthi Samanwithavagmi Yoga" }, { - "chart": "Lionel Messi", - "rule_id": "brahma_yoga", - "rule_name": "Brahma Yoga" + "chart": "Michael Jordan", + "rule_id": "bvr_vanchana_chora_bheethi_yoga", + "rule_name": "Vanchana Chora Bheethi Yoga" }, { "chart": "Lionel Messi", @@ -350,14 +315,14 @@ "rule_name": "Vosi Yoga" }, { - "chart": "Cristiano Ronaldo", + "chart": "Lionel Messi", "rule_id": "brahma_yoga", "rule_name": "Brahma Yoga" }, { "chart": "Cristiano Ronaldo", - "rule_id": "bvr_utthama_graha_yoga", - "rule_name": "Utthama Griha Yoga" + "rule_id": "brahma_yoga", + "rule_name": "Brahma Yoga" }, { "chart": "Cristiano Ronaldo", @@ -369,11 +334,6 @@ "rule_id": "bvr_kapata_yoga", "rule_name": "Kapata Yoga" }, - { - "chart": "Roger Federer", - "rule_id": "bvr_bhratruvriddhi_precise", - "rule_name": "Bhratruvriddhi Yoga" - }, { "chart": "Roger Federer", "rule_id": "bvr_vanchana_chora_bheethi_yoga", @@ -394,11 +354,6 @@ "rule_id": "bvr_vanchana_chora_bheethi_yoga", "rule_name": "Vanchana Chora Bheethi Yoga" }, - { - "chart": "Dalai Lama", - "rule_id": "bvr_bhratruvriddhi_precise", - "rule_name": "Bhratruvriddhi Yoga" - }, { "chart": "Osho", "rule_id": "bvr_vanchana_chora_bheethi_yoga", @@ -406,6 +361,25 @@ } ], "false_negatives": [ + { + "chart": "Albert Einstein", + "rule_id": "bvr_kaalanirdesat_puthranaasa_yoga", + "rule_name": "Kaalanirdesat Puthranaasa Yoga", + "pyjhora_names": [ + "kaalanirdesat_puthranaasa_yoga_230", + "kaalanirdesat_puthranaasa_yoga_229" + ] + }, + { + "chart": "Albert Einstein", + "rule_id": "bvr_kapata_yoga", + "rule_name": "Kapata Yoga", + "pyjhora_names": [ + "kapata_yoga_202", + "kapata_yoga_203", + "kapata_yoga_204" + ] + }, { "chart": "Albert Einstein", "rule_id": "bvr_dharidhra_11_precise", @@ -432,25 +406,6 @@ "mathibhramana_yoga_variation" ] }, - { - "chart": "Albert Einstein", - "rule_id": "bvr_kapata_yoga", - "rule_name": "Kapata Yoga", - "pyjhora_names": [ - "kapata_yoga_202", - "kapata_yoga_203", - "kapata_yoga_204" - ] - }, - { - "chart": "Albert Einstein", - "rule_id": "bvr_kaalanirdesat_puthranaasa_yoga", - "rule_name": "Kaalanirdesat Puthranaasa Yoga", - "pyjhora_names": [ - "kaalanirdesat_puthranaasa_yoga_230", - "kaalanirdesat_puthranaasa_yoga_229" - ] - }, { "chart": "Nikola Tesla", "rule_id": "parvata_yoga", @@ -468,14 +423,6 @@ "matrunasa_yoga_199" ] }, - { - "chart": "Charles Darwin", - "rule_id": "bvr_utthama_graha_yoga", - "rule_name": "Utthama Griha Yoga", - "pyjhora_names": [ - "utthama_graha_yoga" - ] - }, { "chart": "Charles Darwin", "rule_id": "bvr_kalaanidhi_yoga", @@ -485,6 +432,14 @@ "kalanidhi_yoga" ] }, + { + "chart": "Charles Darwin", + "rule_id": "bvr_utthama_graha_yoga", + "rule_name": "Utthama Griha Yoga", + "pyjhora_names": [ + "utthama_graha_yoga" + ] + }, { "chart": "Thomas Edison", "rule_id": "brahma_yoga", @@ -509,6 +464,22 @@ "utthama_graha_yoga" ] }, + { + "chart": "Max Planck", + "rule_id": "bvr_bhratruvriddhi_precise", + "rule_name": "Bhratruvriddhi Yoga", + "pyjhora_names": [ + "bhratruvriddhi_yoga" + ] + }, + { + "chart": "Max Planck", + "rule_id": "bvr_amala_precise", + "rule_name": "Amala Yoga", + "pyjhora_names": [ + "amala_yoga" + ] + }, { "chart": "Max Planck", "rule_id": "bvr_vanchana_chora_bheethi_yoga", @@ -529,32 +500,6 @@ "mathibhramana_yoga_variation" ] }, - { - "chart": "Max Planck", - "rule_id": "bvr_ayatna_griha_prapta_yoga", - "rule_name": "Ayatna Griha Prapta Yoga", - "pyjhora_names": [ - "ayatna_griha_prapta_yoga_189", - "ayatna_griha_prapta_yoga_190" - ] - }, - { - "chart": "Max Planck", - "rule_id": "bvr_amala_precise", - "rule_name": "Amala Yoga", - "pyjhora_names": [ - "amala_yoga" - ] - }, - { - "chart": "Richard Feynman", - "rule_id": "bvr_ayatna_griha_prapta_yoga", - "rule_name": "Ayatna Griha Prapta Yoga", - "pyjhora_names": [ - "ayatna_griha_prapta_yoga_189", - "ayatna_griha_prapta_yoga_190" - ] - }, { "chart": "Richard Feynman", "rule_id": "bvr_kapata_yoga", @@ -565,6 +510,15 @@ "kapata_yoga_204" ] }, + { + "chart": "Mahatma Gandhi", + "rule_id": "bvr_dattha_puthra_yoga", + "rule_name": "Dattha Puthra Yoga", + "pyjhora_names": [ + "dattha_puthra_yoga_222", + "dattha_puthra_yoga_223" + ] + }, { "chart": "Mahatma Gandhi", "rule_id": "bvr_mathibhramana_yoga", @@ -577,15 +531,6 @@ "mathibhramana_yoga_variation" ] }, - { - "chart": "Mahatma Gandhi", - "rule_id": "bvr_dattha_puthra_yoga", - "rule_name": "Dattha Puthra Yoga", - "pyjhora_names": [ - "dattha_puthra_yoga_222", - "dattha_puthra_yoga_223" - ] - }, { "chart": "Jawaharlal Nehru", "rule_id": "bvr_vanchana_chora_bheethi_yoga", @@ -614,18 +559,18 @@ }, { "chart": "Indira Gandhi", - "rule_id": "bvr_kaahala_yoga", - "rule_name": "Kaahala Yoga", + "rule_id": "kahala_yoga", + "rule_name": "Kahala Yoga", "pyjhora_names": [ - "kaahala_yoga" + "kahala_yoga" ] }, { "chart": "Indira Gandhi", - "rule_id": "bvr_utthama_graha_yoga", - "rule_name": "Utthama Griha Yoga", + "rule_id": "bvr_kaahala_yoga", + "rule_name": "Kaahala Yoga", "pyjhora_names": [ - "utthama_graha_yoga" + "kaahala_yoga" ] }, { @@ -639,18 +584,10 @@ }, { "chart": "Indira Gandhi", - "rule_id": "kahala_yoga", - "rule_name": "Kahala Yoga", + "rule_id": "bvr_utthama_graha_yoga", + "rule_name": "Utthama Griha Yoga", "pyjhora_names": [ - "kahala_yoga" - ] - }, - { - "chart": "Winston Churchill", - "rule_id": "bvr_vanchana_chora_bheethi_yoga", - "rule_name": "Vanchana Chora Bheethi Yoga", - "pyjhora_names": [ - "vanchana_chora_bheethi_yoga" + "utthama_graha_yoga" ] }, { @@ -667,6 +604,24 @@ "dharidhra_yoga_152" ] }, + { + "chart": "Winston Churchill", + "rule_id": "bvr_vanchana_chora_bheethi_yoga", + "rule_name": "Vanchana Chora Bheethi Yoga", + "pyjhora_names": [ + "vanchana_chora_bheethi_yoga" + ] + }, + { + "chart": "Abraham Lincoln", + "rule_id": "bvr_kapata_yoga", + "rule_name": "Kapata Yoga", + "pyjhora_names": [ + "kapata_yoga_202", + "kapata_yoga_203", + "kapata_yoga_204" + ] + }, { "chart": "Abraham Lincoln", "rule_id": "bvr_kalaanidhi_yoga", @@ -685,7 +640,7 @@ ] }, { - "chart": "Abraham Lincoln", + "chart": "Barack Obama", "rule_id": "bvr_kapata_yoga", "rule_name": "Kapata Yoga", "pyjhora_names": [ @@ -708,24 +663,6 @@ "dharidhra_yoga_152" ] }, - { - "chart": "Barack Obama", - "rule_id": "bvr_kapata_yoga", - "rule_name": "Kapata Yoga", - "pyjhora_names": [ - "kapata_yoga_202", - "kapata_yoga_203", - "kapata_yoga_204" - ] - }, - { - "chart": "Ludwig van Beethoven", - "rule_id": "bvr_vanchana_chora_bheethi_yoga", - "rule_name": "Vanchana Chora Bheethi Yoga", - "pyjhora_names": [ - "vanchana_chora_bheethi_yoga" - ] - }, { "chart": "Ludwig van Beethoven", "rule_id": "bvr_kalaanidhi_yoga", @@ -735,6 +672,23 @@ "kalanidhi_yoga" ] }, + { + "chart": "Ludwig van Beethoven", + "rule_id": "bvr_vanchana_chora_bheethi_yoga", + "rule_name": "Vanchana Chora Bheethi Yoga", + "pyjhora_names": [ + "vanchana_chora_bheethi_yoga" + ] + }, + { + "chart": "Wolfgang Mozart", + "rule_id": "bvr_krisanga_yoga", + "rule_name": "Krisanga Yoga", + "pyjhora_names": [ + "krisanga_yoga_112", + "krisanga_yoga_113" + ] + }, { "chart": "Wolfgang Mozart", "rule_id": "bvr_dharidhra_11_precise", @@ -750,12 +704,11 @@ ] }, { - "chart": "Wolfgang Mozart", - "rule_id": "bvr_krisanga_yoga", - "rule_name": "Krisanga Yoga", + "chart": "Vincent van Gogh", + "rule_id": "bvr_yukthi_samanwithavagmi_yoga", + "rule_name": "Yukthi Samanwithavagmi Yoga", "pyjhora_names": [ - "krisanga_yoga_112", - "krisanga_yoga_113" + "yukthi_samanwithavagmi_yoga_154" ] }, { @@ -779,7 +732,7 @@ ] }, { - "chart": "Vincent van Gogh", + "chart": "Charlie Chaplin", "rule_id": "bvr_yukthi_samanwithavagmi_yoga", "rule_name": "Yukthi Samanwithavagmi Yoga", "pyjhora_names": [ @@ -824,14 +777,6 @@ "matrunasa_yoga_199" ] }, - { - "chart": "Charlie Chaplin", - "rule_id": "bvr_yukthi_samanwithavagmi_yoga", - "rule_name": "Yukthi Samanwithavagmi Yoga", - "pyjhora_names": [ - "yukthi_samanwithavagmi_yoga_154" - ] - }, { "chart": "Elvis Presley", "rule_id": "bvr_kapata_yoga", @@ -842,6 +787,14 @@ "kapata_yoga_204" ] }, + { + "chart": "Michael Jackson", + "rule_id": "bvr_amala_precise", + "rule_name": "Amala Yoga", + "pyjhora_names": [ + "amala_yoga" + ] + }, { "chart": "Michael Jackson", "rule_id": "bvr_vanchana_chora_bheethi_yoga", @@ -852,10 +805,10 @@ }, { "chart": "Michael Jackson", - "rule_id": "bvr_amala_precise", - "rule_name": "Amala Yoga", + "rule_id": "bvr_utthama_graha_yoga", + "rule_name": "Utthama Griha Yoga", "pyjhora_names": [ - "amala_yoga" + "utthama_graha_yoga" ] }, { @@ -868,14 +821,6 @@ "kapata_yoga_204" ] }, - { - "chart": "Lata Mangeshkar", - "rule_id": "bvr_vanchana_chora_bheethi_yoga", - "rule_name": "Vanchana Chora Bheethi Yoga", - "pyjhora_names": [ - "vanchana_chora_bheethi_yoga" - ] - }, { "chart": "Lata Mangeshkar", "rule_id": "bvr_matrunasa_precise", @@ -885,6 +830,14 @@ "matrunasa_yoga_199" ] }, + { + "chart": "Lata Mangeshkar", + "rule_id": "bvr_vanchana_chora_bheethi_yoga", + "rule_name": "Vanchana Chora Bheethi Yoga", + "pyjhora_names": [ + "vanchana_chora_bheethi_yoga" + ] + }, { "chart": "Steve Jobs", "rule_id": "bvr_nishkapata_precise", @@ -911,6 +864,14 @@ "raja_bhanga_yoga_299" ] }, + { + "chart": "Bill Gates", + "rule_id": "bvr_bhratruvriddhi_precise", + "rule_name": "Bhratruvriddhi Yoga", + "pyjhora_names": [ + "bhratruvriddhi_yoga" + ] + }, { "chart": "Elon Musk", "rule_id": "bvr_krisanga_yoga", @@ -945,6 +906,14 @@ "vanchana_chora_bheethi_yoga" ] }, + { + "chart": "Warren Buffett", + "rule_id": "bvr_vaatharoga_yoga", + "rule_name": "Vaatharoga Yoga", + "pyjhora_names": [ + "vaatharoga_yoga" + ] + }, { "chart": "Warren Buffett", "rule_id": "bvr_mathibhramana_yoga", @@ -957,14 +926,6 @@ "mathibhramana_yoga_variation" ] }, - { - "chart": "Warren Buffett", - "rule_id": "bvr_vaatharoga_yoga", - "rule_name": "Vaatharoga Yoga", - "pyjhora_names": [ - "vaatharoga_yoga" - ] - }, { "chart": "Mukesh Ambani", "rule_id": "parvata_yoga", @@ -973,14 +934,6 @@ "parvata_yoga" ] }, - { - "chart": "Narayana Murthy", - "rule_id": "bvr_bandhubhisthyaktha_precise", - "rule_name": "Bandhubhisthyaktha Yoga", - "pyjhora_names": [ - "bandhubhisthyaktha_yoga" - ] - }, { "chart": "Narayana Murthy", "rule_id": "adhi_yoga", @@ -990,11 +943,11 @@ ] }, { - "chart": "Azim Premji", - "rule_id": "bvr_vanchana_chora_bheethi_yoga", - "rule_name": "Vanchana Chora Bheethi Yoga", + "chart": "Narayana Murthy", + "rule_id": "bvr_bandhubhisthyaktha_precise", + "rule_name": "Bandhubhisthyaktha Yoga", "pyjhora_names": [ - "vanchana_chora_bheethi_yoga" + "bandhubhisthyaktha_yoga" ] }, { @@ -1006,6 +959,14 @@ "krisanga_yoga_113" ] }, + { + "chart": "Azim Premji", + "rule_id": "bvr_vanchana_chora_bheethi_yoga", + "rule_name": "Vanchana Chora Bheethi Yoga", + "pyjhora_names": [ + "vanchana_chora_bheethi_yoga" + ] + }, { "chart": "Dhirubhai Ambani", "rule_id": "bvr_krisanga_yoga", @@ -1055,11 +1016,12 @@ }, { "chart": "Lionel Messi", - "rule_id": "bvr_matrudeerghayur_yoga", - "rule_name": "Matrudeerghayur Yoga", + "rule_id": "bvr_kapata_yoga", + "rule_name": "Kapata Yoga", "pyjhora_names": [ - "matrudeerghayur_yoga_196", - "matrudeerghayur_yoga_197" + "kapata_yoga_202", + "kapata_yoga_203", + "kapata_yoga_204" ] }, { @@ -1095,20 +1057,11 @@ }, { "chart": "Lionel Messi", - "rule_id": "bvr_kapata_yoga", - "rule_name": "Kapata Yoga", + "rule_id": "bvr_matrudeerghayur_yoga", + "rule_name": "Matrudeerghayur Yoga", "pyjhora_names": [ - "kapata_yoga_202", - "kapata_yoga_203", - "kapata_yoga_204" - ] - }, - { - "chart": "Cristiano Ronaldo", - "rule_id": "bvr_yuddha_marana_yoga", - "rule_name": "Yuddha Marana Yoga", - "pyjhora_names": [ - "yuddha_marana_yoga" + "matrudeerghayur_yoga_196", + "matrudeerghayur_yoga_197" ] }, { @@ -1121,10 +1074,10 @@ }, { "chart": "Cristiano Ronaldo", - "rule_id": "bvr_matru_sneha_yoga", - "rule_name": "Matru Sneha Yoga", + "rule_id": "bvr_yuddha_marana_yoga", + "rule_name": "Yuddha Marana Yoga", "pyjhora_names": [ - "matru_sneha_yoga" + "yuddha_marana_yoga" ] }, { @@ -1136,6 +1089,14 @@ "kalanidhi_yoga" ] }, + { + "chart": "Cristiano Ronaldo", + "rule_id": "bvr_matru_sneha_yoga", + "rule_name": "Matru Sneha Yoga", + "pyjhora_names": [ + "matru_sneha_yoga" + ] + }, { "chart": "Serena Williams", "rule_id": "bvr_mathibhramana_yoga", @@ -1148,15 +1109,6 @@ "mathibhramana_yoga_variation" ] }, - { - "chart": "Serena Williams", - "rule_id": "bvr_ayatna_griha_prapta_yoga", - "rule_name": "Ayatna Griha Prapta Yoga", - "pyjhora_names": [ - "ayatna_griha_prapta_yoga_189", - "ayatna_griha_prapta_yoga_190" - ] - }, { "chart": "Pele", "rule_id": "bvr_mathibhramana_yoga", @@ -1177,15 +1129,6 @@ "parvata_yoga" ] }, - { - "chart": "Swami Vivekananda", - "rule_id": "bvr_ayatna_griha_prapta_yoga", - "rule_name": "Ayatna Griha Prapta Yoga", - "pyjhora_names": [ - "ayatna_griha_prapta_yoga_189", - "ayatna_griha_prapta_yoga_190" - ] - }, { "chart": "Dalai Lama", "rule_id": "parvata_yoga", @@ -1195,12 +1138,12 @@ ] }, { - "chart": "Dalai Lama", - "rule_id": "bvr_ayatna_griha_prapta_yoga", - "rule_name": "Ayatna Griha Prapta Yoga", + "chart": "Pope Francis", + "rule_id": "bvr_raja_bhanga_yoga", + "rule_name": "Raja Bhanga Yoga", "pyjhora_names": [ - "ayatna_griha_prapta_yoga_189", - "ayatna_griha_prapta_yoga_190" + "raja_bhanga_yoga_298", + "raja_bhanga_yoga_299" ] }, { @@ -1214,19 +1157,10 @@ }, { "chart": "Pope Francis", - "rule_id": "bvr_raja_bhanga_yoga", - "rule_name": "Raja Bhanga Yoga", + "rule_id": "bvr_bhratruvriddhi_precise", + "rule_name": "Bhratruvriddhi Yoga", "pyjhora_names": [ - "raja_bhanga_yoga_298", - "raja_bhanga_yoga_299" - ] - }, - { - "chart": "Osho", - "rule_id": "bvr_vichitra_saudha_prakara_yoga", - "rule_name": "Vichitra Saudha Prakara Yoga", - "pyjhora_names": [ - "vichitra_saudha_prakara_yoga" + "bhratruvriddhi_yoga" ] }, { @@ -1248,6 +1182,14 @@ "dehasthoulya_yoga_116" ] }, + { + "chart": "Osho", + "rule_id": "bvr_vichitra_saudha_prakara_yoga", + "rule_name": "Vichitra Saudha Prakara Yoga", + "pyjhora_names": [ + "vichitra_saudha_prakara_yoga" + ] + }, { "chart": "J. Krishnamurti", "rule_id": "bvr_kapata_yoga", @@ -1276,6 +1218,14 @@ "sankha_yoga" ] }, + { + "chart": "Paramahansa Yogananda", + "rule_id": "bvr_yuddha_marana_yoga", + "rule_name": "Yuddha Marana Yoga", + "pyjhora_names": [ + "yuddha_marana_yoga" + ] + }, { "chart": "Paramahansa Yogananda", "rule_id": "bvr_vanchana_chora_bheethi_yoga", @@ -1292,14 +1242,6 @@ "matrunasa_yoga_198", "matrunasa_yoga_199" ] - }, - { - "chart": "Paramahansa Yogananda", - "rule_id": "bvr_yuddha_marana_yoga", - "rule_name": "Yuddha Marana Yoga", - "pyjhora_names": [ - "yuddha_marana_yoga" - ] } ] } \ No newline at end of file diff --git a/references/yoga_rules.json b/references/yoga_rules.json index dfeb9067..b413bd6b 100644 --- a/references/yoga_rules.json +++ b/references/yoga_rules.json @@ -9221,8 +9221,8 @@ "category": "auspicious", "logic": { "type": "custom", - "expr": "\n# PyJHora/BVR-177: 3rd lord, Mars, or 3rd house joined/aspected by benefics and strong.\n# Planet-to-house aspect uses rasi drishti; planet-to-planet uses graha drishti.\nlord_3 = lord(3)\nbenefics = [p for p in BENEFICS if p in ctx.planets]\ndef benefic_link_to_planet(p):\n return p in ctx.planets and strong(p) and any(b != p and (same_house(b, p) or aspect(b, p)) for b in benefics)\nhouse_joined = any(house_of(b) == 3 for b in benefics)\nhouse_aspected = any(rasi_aspects_house(b, 3) for b in benefics)\nbenefic_link_to_planet(lord_3) or benefic_link_to_planet('Mars') or house_joined or house_aspected\n", - "combo_template": "3宫主、火星或3宫受吉星连接" + "expr": "\n# PyJHora/BVR-177 source-parity: 3rd lord, Mars, or 3rd house joined/aspected by PyJHora natural benefics.\n# NOTE: PyJHora house.aspected_planets_of_the_planet(chart, p) returns planets aspected BY p.\nlord_3 = lord(3)\nbenefics = pyjhora_natural_benefics()\ndef benefic_link_to_planet(p):\n return p in ctx.planets and strong(p) and any(\n b != p and (same_house(b, p) or aspect(p, b))\n for b in benefics\n )\nhouse_joined = any(house_of(b) == 3 for b in benefics)\nhouse_aspected = any(b in pyjhora_aspected_planets_of_raasi(3) for b in benefics)\nbenefic_link_to_planet(lord_3) or benefic_link_to_planet('Mars') or house_joined or house_aspected\n", + "combo_template": "3宫主、火星或3宫按PyJHora源码受吉星连接" }, "effects": [ "兄弟和睦", @@ -9231,7 +9231,7 @@ ], "strength": "中", "enabled": true, - "accuracy_note": "高置信:定义来自 PyJHora/B.V. Raman。" + "accuracy_note": "v6.0.42 source-parity: uses PyJHora natural benefics and preserves house.aspected_planets_of_the_planet() direction semantics." }, { "id": "bvr_bandhubhisthyaktha_precise", @@ -9615,64 +9615,9 @@ "bvr_id": null, "category": "special", "logic": { - "type": "compound_conditions", - "conditions": [ - { - "type": "compound", - "operator": "OR", - "conditions": [ - { - "type": "compound", - "operator": "AND", - "conditions": [ - { - "type": "lords_in_houses", - "lords_and_houses": [ - [ - 1, - 0 - ], - [ - 7, - 0 - ], - [ - 1, - 3 - ], - [ - 7, - 3 - ] - ], - "note": "Lords of Lagna and 7th in Lagna or 4th" - }, - { - "type": "aspected_by_benefics", - "note": "Aspected by benefics" - } - ] - }, - { - "type": "compound", - "operator": "AND", - "conditions": [ - { - "type": "lord_in_kendra", - "lord_of": 9, - "note": "9th lord in kendra" - }, - { - "type": "lord_in_exaltation_own_or_mool_trikona", - "lord_of": 4, - "note": "4th lord exalted, in own or mool-trikona" - } - ] - } - ] - } - ], - "note": "" + "type": "custom", + "expr": "\n# PyJHora/BVR-189..190 Ayatna Griha Prapta Yoga source-parity.\nl1 = lord(1)\nl7 = lord(7)\nl4 = lord(4)\nl9 = lord(9)\nbenefics = pyjhora_natural_benefics()\ncond189 = False\nif l1 in ctx.planets and l7 in ctx.planets:\n lords_in_lagna_or_4th = (house_of(l1) == house_of(l7) == 1) or (house_of(l1) == house_of(l7) == 4)\n benefic_aspects_either = any(aspect(b, l1) or aspect(b, l7) for b in benefics)\n cond189 = lords_in_lagna_or_4th and benefic_aspects_either\ncond190 = l4 in ctx.planets and l9 in ctx.planets and kendra(house_of(l9)) and (strong(l4) or moola(l4))\ncond189 or cond190\n", + "combo_template": "BVR-189/190 按PyJHora源码口径" }, "effects": [ "Gains property without effort, inherits house" @@ -9680,7 +9625,8 @@ "strength": "moderate", "enabled": true, "draft": false, - "evidence_note": "Source: B.V. Raman, BVR: None" + "evidence_note": "Source: B.V. Raman, BVR: None", + "accuracy_note": "v6.0.42 source-parity: rewritten as custom BVR-189/190 logic after A/B simulation improved recall without adding FP." }, { "id": "bvr_ayatnadhanalabha_yoga", @@ -12993,28 +12939,9 @@ "bvr_id": null, "category": "special", "logic": { - "type": "compound_conditions", - "conditions": [ - { - "type": "compound", - "operator": "AND", - "conditions": [ - { - "type": "4th_lord_with_benefics", - "note": "4th lord joins benefics" - }, - { - "type": "4th_lord_aspected_by_benefics", - "note": "4th lord aspected by benefics" - }, - { - "type": "4th_lord_in_kendra_or_trikona", - "note": "4th lord in kendra or trikona" - } - ] - } - ], - "note": "" + "type": "custom", + "expr": "\n# PyJHora/BVR-187 Utthama Griha Yoga source-parity.\nl4 = lord(4)\nif l4 not in ctx.planets:\n False\nelse:\n benefics = pyjhora_natural_benefics()\n h4 = house_of(l4)\n fourth_lord_in_kendra_trikona = h4 in [1, 4, 5, 7, 9, 10]\n fourth_lord_joins_benefic = any(house_of(nb) == h4 for nb in benefics)\n fourth_lord_aspected_by_benefic = any(nb != l4 and aspect(nb, l4) for nb in benefics)\n fourth_lord_in_kendra_trikona and fourth_lord_joins_benefic and fourth_lord_aspected_by_benefic\n", + "combo_template": "4宫主入角/三方且与PyJHora吉星同宫并受吉星相位" }, "effects": [ "Excellent house/property, comfortable living" @@ -13022,7 +12949,8 @@ "strength": "moderate", "enabled": true, "draft": false, - "evidence_note": "Source: B.V. Raman, BVR: None" + "evidence_note": "Source: B.V. Raman, BVR: None", + "accuracy_note": "v6.0.42 source-parity: rewritten as custom BVR-187 logic using PyJHora natural benefics and graha aspect semantics." }, { "id": "bvr_vaatharoga_yoga", @@ -13701,4 +13629,4 @@ } ], "total_enabled_rules": 381 -} \ No newline at end of file +}