diff --git a/docs/BUG_HISTORY.md b/docs/BUG_HISTORY.md index bae4e55c..fca7c843 100644 --- a/docs/BUG_HISTORY.md +++ b/docs/BUG_HISTORY.md @@ -17326,3 +17326,4 @@ - 相关记录:BUG-1283。 - 复发自:无。 - 修复版本:分支 `codex/rashi-dashas-native-20261008`,未合入,未上线。 +- 验收补记(Claude,2026-10-09):本分支的 PyJHora 对照文件原先拿 Raman 本命盘比 Lahiri 的 PyJHora 盘;已改为同一 Lahiri 盘重冻,差异表重写(见进度记录)。报告代码不受影响。 diff --git a/docs/tasks/PROGRESS-rashi-dashas-native-20261008.md b/docs/tasks/PROGRESS-rashi-dashas-native-20261008.md index 2c56ce4b..affcbd83 100644 --- a/docs/tasks/PROGRESS-rashi-dashas-native-20261008.md +++ b/docs/tasks/PROGRESS-rashi-dashas-native-20261008.md @@ -48,7 +48,7 @@ - Chara:白羊上升的主运是十二星座顺行,第一段子运从金牛起、最后回到白羊,与印页 32–36 的第一运一致。其后各运的子运仍用模块的旋转,不改成书里的「每运自定顺逆」。木星在摩羯时,构造盘的射手运是 0 年。 - Lagna Kendradi:上游注册表说没有安全默认值,上游另一个运行入口仍会吐出一张表。本站跟注册表和决策 3,不采用那张表。 -## 四张盘与 PyJHora 4.8.7 +## 四张盘与 PyJHora 4.8.7(**本节作废**,见文末 Claude 验收:本站一侧按引擎默认 Raman 计算,PyJHora 一侧是 Lahiri,比较的不是同一张盘) 前 6 段的星座序号与年数。差只记在起始星座、方向、年数、子运、日期基准。年数按「星座与年数的配对」比较:同一套年数只是换了起点,不算年数差。日期基准是星座和年数都相同、下一段起点不同,来自日历年与 PyJHora 的年日长度,没有改年数去对齐。Lagna Kendradi 四张盘都是四步全差,因为本站不列表;下面不重复。交点用本仓默认平交点,PyJHora 用真交点。章动 BUG-1275 已在基线里,宫头可以和 PyJHora 4.8.7 的 Lahiri 差一个小角度。这两处都不回改大运。 @@ -125,3 +125,18 @@ Lagna Kendradi 没有可以安全默认的算法,所以这轮报告只写缺 Drig 也请看一眼:报告用的是 Crux 印页 395 的相位组,不是上游候选档案里的普通黄道顺序。 真人核对清单:`docs/testing/rashi-dashas-native-20261008.md`。 + +## Claude 验收与补修(2026-10-09) + +- 发现:`scripts/research/freeze_rashi_dasha_pyjhora_fixture.py` 与 `tests/test_rashi_dashas_native.py::test_pyjhora_fixture_diffs_stay_on_the_recorded_steps` 调 `compute_chart_data` 时没传岁差,引擎默认 Raman;PyJHora 一侧 `set_ayanamsa_mode("LAHIRI")`。上面「四张盘」各表因此作废。报告路径不受影响(按请求的岁差算)。 +- 补修:两处都改为 `ayanamsa_name="lahiri"`,重新冻结对照文件(保留原 CRLF)。重算后的差异步(`diff_steps`,同一 Lahiri 盘): + +| 盘 | Sthira | Drig | Shoola | Navamsha | Niryaana Shoola | Chara | +| --- | --- | --- | --- | --- | --- | --- | +| 乔布斯 | 仅日期基准 | 方向、年数、子运 | 子运、日期基准 | 起始、年数、子运 | 四步都有 | 年数、子运 | +| 奥巴马 | 起始、子运 | 方向、年数、子运 | 子运、日期基准 | 起始、年数、子运 | 四步都有 | 年数、子运 | +| 爱因斯坦 | 仅日期基准 | 方向、年数、子运 | 子运、日期基准 | 起始、年数、子运 | 四步都有 | 年数、子运 | +| 虚构盘 | 无差异 | 方向、年数、子运 | 起始、子运 | 起始、年数、子运 | 四步都有 | 仅子运 | + + 解读:Sthira 与 Shoola 的起始星座在同岁差下大多与 PyJHora 一致;Drig、Navamsha、Niryaana Shoola 的差异是方法本身不同(本站按 Rath 印页 395 / Goel 方法 1 / Goel 简法,PyJHora 另有口径),与上文「书内分叉」一节一致;Chara 年数差保留,`jaimini.py` 未改。Lagna Kendradi 不上报告,差异不计。 +- Linux 验证(Claude,屏蔽 PyJHora 导出报告):英文 0 汉字;Python 全量 62 条失败与基线逐名相同;快速门通过;`npm test` 4993 / 失败 24 与基线相同;tsc 0。 diff --git a/docs/tasks/README.md b/docs/tasks/README.md index 17625a6d..5c6b39c8 100644 --- a/docs/tasks/README.md +++ b/docs/tasks/README.md @@ -204,7 +204,7 @@ | `TASK-report-full-data-edition-20261007.md` | `PROGRESS-report-full-data-edition-20261007.md` | **报告改为完整数据版、删除阅读版**:网站阅读版中文 7.6 万字符 vs 上游 `pl9_ai_density` 97 万;移植原始数据附录 / 清理器 / 时间补充,中英文;我方报告口径(BUG-1199~1229)全部保持;旧报告仍可打开;排在 sync6 之后 | 已验收(Claude 补修 BUG-1282 后合入 staging) | `codex/report-full-data-edition-20261007`(未推 staging) | | `TASK-report-full-data-fix-20261008.md` | `PROGRESS-report-full-data-fix-20261008.md` | **完整数据版补齐**(同分支继续):解释段、年运字段、开篇重点、英文汉字清零。Patyayini 不新算。生成按钮文案不改。等验收后再合入 staging | 已验收(Claude 补修 BUG-1282 后合入 staging) | `codex/report-full-data-edition-20261007`(未合入 staging) | | `TASK-report-full-data-fix2-20261008.md` | `PROGRESS-report-full-data-fix2-20261008.md` | **完整数据版第二轮**(同分支续):年运章投影已有字段,大运解释补「可能」段落,瑜伽作用不再断言寿命,术语不进标识符,罗睺/计都不写「守护第未列出宫」。章动单不在本分支 | 已验收(Claude 补修 BUG-1282 后合入 staging) | `codex/report-full-data-edition-20261007`(未合入) | -| `TASK-rashi-dashas-native-20261008.md` | `PROGRESS-rashi-dashas-native-20261008.md` | **报告补 7 种星座大运**(Sthira / Drig / Shoola / Navamsha / Niryaana Shoola / Lagna Kendradi / Chara):六种上完整数据版并标口径;Lagna Kendradi 没有安全默认值,报告写明缺席、不上表 | 待验收 | `codex/rashi-dashas-native-20261008`(未推送,未合入) | +| `TASK-rashi-dashas-native-20261008.md` | `PROGRESS-rashi-dashas-native-20261008.md` | **报告补 7 种星座大运**(Sthira / Drig / Shoola / Navamsha / Niryaana Shoola / Lagna Kendradi / Chara):六种上完整数据版并标口径;Lagna Kendradi 没有安全默认值,报告写明缺席、不上表 | 已验收(Claude 补修对照岁差后合入 staging) | `codex/rashi-dashas-native-20261008`(未推送,未合入) | | `TASK-report-reader-main-fix-20260925.md` | `PROGRESS-report-reader-main-fix-20260925.md` | **读者版修复**:真实年主比较、分字段绑定与未来返照;保留 Bhava Bala 和标题,隔离报告/聊天规则 | 已验收(Claude 09-25:年运表逐年填齐且不同、Bhava Bala 保留、泄漏 0) | `4d801e53`(已部署,health 核对一致) | | `TASK-report-reader-main-20260924.md` | `PROGRESS-report-reader-main-20260924.md` | **报告正文换上游读者版 reader_main + KP / Muntha 计算缺陷 + 投影截断(BUG-1026/1027/1028)**:正文一直是上游审计版(读者版 09-09 才出、从未同步),本仓又自加「结论等级规则」/英文段/异常原文;投影黑名单不认 PL9 词汇且截断半句、删表留说明;KP args `vars()` 拷贝为空恒失败;Muntha 漏合 `birth_asc_sign_idx` → Year Lord 恒火星。产品拍板接入读者版、旧报告不回填。 | 部分通过(Claude 09-25:读者版切换、泄漏 0 命中、KP 已修;年运 Year Lord/Muntha 全为「-」P1、投影误删 Bhava Bala P2 → 修复单) | `3c2f7bd5`(已部署) | | `TASK-report-reader-actions-20260924.md` | — | **报告操作收敛**:列表只留「查看报告」;阅读页删「下载原始附录」「打印」,导出改图标按钮;导出对话框 ≥860 居中、窄屏仍贴底(修订 chapter-export D9/D10)。产品变更,不开 BUG 号 | 基本通过(Claude 09-24:入口收敛、图标、≥860 居中均符合;原始附录三文件因执行方权限未删、PROGRESS/清单未写 → 并入修复单) | `f125fae0`(未部署) | diff --git a/scripts/research/freeze_rashi_dasha_pyjhora_fixture.py b/scripts/research/freeze_rashi_dasha_pyjhora_fixture.py index 47dced74..7d84cd34 100644 --- a/scripts/research/freeze_rashi_dasha_pyjhora_fixture.py +++ b/scripts/research/freeze_rashi_dasha_pyjhora_fixture.py @@ -160,6 +160,10 @@ def main() -> None: chart, _asc, _jd, _ayanamsa = compute_chart_data( birth["year"], birth["month"], birth["day"], birth["hour"], birth["minute"], birth["lat"], birth["lon"], birth["tz"], second=birth.get("second") or 0, + # Same frame as the PyJHora side (LAHIRI); without this the native + # chart used the engine default (Raman) and every diff was half + # ayanamsa (Claude acceptance 2026-10-09). + ayanamsa_name="lahiri", ) longitudes = { name: float(row["degree_raw"]) diff --git a/tests/fixtures/rashi_dasha_pyjhora_20261008.json b/tests/fixtures/rashi_dasha_pyjhora_20261008.json index 0088963b..3f99bd44 100644 --- a/tests/fixtures/rashi_dasha_pyjhora_20261008.json +++ b/tests/fixtures/rashi_dasha_pyjhora_20261008.json @@ -444,9 +444,6 @@ "native": { "sthira": { "sign_indexes": [ - 8, - 9, - 10, 11, 0, 1, @@ -455,7 +452,10 @@ 4, 5, 6, - 7 + 7, + 8, + 9, + 10 ], "years": [ 9, @@ -474,6 +474,10 @@ }, "drig": { "sign_indexes": [ + 0, + 4, + 7, + 10, 1, 9, 6, @@ -481,13 +485,13 @@ 2, 5, 8, - 11, - 3, - 1, - 10, - 7 + 11 ], "years": [ + 12, + 6, + 5, + 4, 7, 3, 2, @@ -495,15 +499,12 @@ 7, 8, 6, - 9, - 4, - 7, - 4, - 5 + 9 ] }, "shoola": { "sign_indexes": [ + 10, 11, 0, 1, @@ -514,8 +515,7 @@ 6, 7, 8, - 9, - 10 + 9 ], "years": [ 9, @@ -534,36 +534,37 @@ }, "navamsha": { "sign_indexes": [ - 3, - 4, - 5, - 6, - 7, 8, 9, 10, 11, 0, 1, - 2 + 2, + 3, + 4, + 5, + 6, + 7 ], "years": [ - 9, - 7, - 3, - 3, - 6, 7, 8, 5, 10, - 3, + 2, 6, - 2 + 2, + 9, + 6, + 3, + 3, + 7 ] }, "niryaana_shoola": { "sign_indexes": [ + 10, 11, 0, 1, @@ -574,8 +575,7 @@ 6, 7, 8, - 9, - 10 + 9 ], "years": [ 9, @@ -599,6 +599,7 @@ }, "chara": { "sign_indexes": [ + 4, 5, 6, 7, @@ -609,10 +610,10 @@ 0, 1, 2, - 3, - 4 + 3 ], "years": [ + 6, 8, 2, 6, @@ -623,25 +624,22 @@ 12, 7, 7, - 4, - 6 + 4 ] } }, "diff_steps": { "sthira": [ - "start_sign", - "subperiod" + "date_basis" ], "drig": [ - "start_sign", "direction", "years", "subperiod" ], "shoola": [ - "start_sign", - "subperiod" + "subperiod", + "date_basis" ], "navamsha": [ "start_sign", @@ -649,6 +647,7 @@ "subperiod" ], "niryaana_shoola": [ + "start_sign", "direction", "years", "subperiod" @@ -660,7 +659,6 @@ "subperiod" ], "chara": [ - "start_sign", "years", "subperiod" ] @@ -1158,9 +1156,9 @@ 1, 1, 1, - 10, + 9, 2, - 5, + 4, 12 ] }, @@ -1210,17 +1208,17 @@ 3 ], "years": [ - 6, + 5, 12, 3, - 11, + 12, 4, 12, 12, 12, - 10, + 9, 6, - 5, + 4, 4 ] }, @@ -1284,7 +1282,7 @@ 3, 1, 1, - 5, + 4, 1, 1 ] @@ -1899,13 +1897,13 @@ 5, 10, 12, - 3, - 10, 4, + 9, + 5, 11, 4, 5, - 6, + 7, 12 ] }, @@ -2451,6 +2449,8 @@ "native": { "sthira": { "sign_indexes": [ + 0, + 1, 2, 3, 4, @@ -2460,12 +2460,9 @@ 8, 9, 10, - 11, - 0, - 1 + 11 ], "years": [ - 9, 7, 8, 9, @@ -2476,7 +2473,8 @@ 8, 9, 7, - 8 + 8, + 9 ] }, "drig": { @@ -2498,11 +2496,11 @@ 12, 7, 5, - 12, + 11, 1, 2, 7, - 7, + 6, 8, 7, 5, @@ -2511,18 +2509,18 @@ }, "shoola": { "sign_indexes": [ - 7, - 8, - 9, - 10, - 11, - 0, 1, 2, 3, 4, 5, - 6 + 6, + 7, + 8, + 9, + 10, + 11, + 0 ], "years": [ 9, @@ -2541,7 +2539,36 @@ }, "navamsha": { "sign_indexes": [ + 5, + 6, + 7, + 8, + 9, + 10, + 11, 0, + 1, + 2, + 3, + 4 + ], + "years": [ + 5, + 3, + 12, + 10, + 10, + 3, + 7, + 9, + 6, + 12, + 10, + 6 + ] + }, + "niryaana_shoola": { + "sign_indexes": [ 1, 2, 3, @@ -2552,37 +2579,8 @@ 8, 9, 10, - 11 - ], - "years": [ - 9, - 5, - 12, - 10, - 7, - 5, - 4, - 12, 11, - 10, - 3, - 6 - ] - }, - "niryaana_shoola": { - "sign_indexes": [ - 7, - 8, - 9, - 10, - 11, - 0, - 1, - 2, - 3, - 4, - 5, - 6 + 0 ], "years": [ 9, @@ -2620,14 +2618,14 @@ 2 ], "years": [ - 12, + 11, 2, 9, 1, 12, 8, 8, - 7, + 6, 5, 5, 7, @@ -2636,18 +2634,15 @@ } }, "diff_steps": { - "sthira": [ - "start_sign", - "subperiod" - ], + "sthira": [], "drig": [ "direction", "years", "subperiod" ], "shoola": [ - "subperiod", - "date_basis" + "start_sign", + "subperiod" ], "navamsha": [ "start_sign", @@ -2667,7 +2662,6 @@ "subperiod" ], "chara": [ - "years", "subperiod" ] } diff --git a/tests/test_rashi_dashas_native.py b/tests/test_rashi_dashas_native.py index ca487bdd..61955750 100644 --- a/tests/test_rashi_dashas_native.py +++ b/tests/test_rashi_dashas_native.py @@ -163,6 +163,7 @@ def test_pyjhora_fixture_diffs_stay_on_the_recorded_steps() -> None: chart, _asc, _jd, _ayanamsa = compute_chart_data( birth["year"], birth["month"], birth["day"], birth["hour"], birth["minute"], birth["lat"], birth["lon"], birth["tz"], second=birth.get("second") or 0, + ayanamsa_name="lahiri", # the frame PyJHora was frozen in ) assert chart is not None longitudes = {