docs: astrologer rulings batch 5 records (BUG-1223~1227; T1 p.43 dual lord blocked by red line; T6 v5 re-run)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
This commit is contained in:
Jesse_Chen
2026-10-04 08:39:53 +08:00
co-authored by Claude Opus 5.5
parent 1dd8e11bff
commit 92c78d4e82
7 changed files with 302 additions and 2 deletions
@@ -0,0 +1,171 @@
# PROGRESS:占星师第六轮落地(Rath 罗计尊贵、子运方向、Wadiyar 标注;年主不再顶替;双主星 p.43 停下)+ v5 重试算 — 2026-10-04
- 任务书:`docs/tasks/TASK-astrologer-rulings-batch5-20261004.md`。执行方:Claude 子代理(产品负责人要求由子代理执行)。
- 分支 `codex/astrologer-rulings-batch5-20261004`,工作树 `.worktrees/astrologer-rulings-batch5-20261004`,基线 `origin/staging` = `77645ce2`。**未推送**。
- 上游:`/workspace/yinduzhanxing` `origin/main` = `03bea6ed`(只读,未提交、未推送)。
- BUG 编号:开工时最大号 BUG-1222;本单 BUG-1223~1227(按落地先后编号:T5 1223、T2 1224、T3 1225、T4 1226、T1 1227)。
## 结论
| 任务 | 结果 |
| --- | --- |
| T1 双主星按 p.43 (a)–(e) | **按红线 2 停下,未落地(BUG-1227 blocked)**。照裁定实现后软件表双主星 8/10 → 9/10,但 Table 17 大运年数 12/12 → 10/12(天蝎 10→1、水瓶 8→1),低于现状。原书标准盘自相矛盾,详见 T1 节 |
| T5 年主选不出时不再顶替 | 完成(BUG-1223)。blocked + 原因,卡片 / 报告写「年主暂无法确定(原因)」;9 盘两个生产者改前改后逐字节相同 |
| T2 罗计尊贵(只在 Rath 内) | 完成(BUG-1224)。p.67「计都落陷弱于火星」复现(第 3 级);验收底线全不变 |
| T3 子运方向核对与分歧标注 | 完成(BUG-1225)。现行实现与 p.51 一致,未改;输出加 `direction.book_divergence`,参考版报告加一行 |
| T4 Wadiyar 两对标注 | 完成(BUG-1226)。`book_software_rule8_exception` 登记并随输出 |
| T7 记录 | BUG-1223~1227、CHANGELOG、本文件、任务索引、BLOCKED、研究记录「10-04 重跑」 |
| T6 v5 重试算 | 见 T6 节(研究分支 `codex/narayana-rath-rectification-trial-20261004`,不合入、未推送) |
| 生时校正 | 冻结身份文件(`production_scoring_files` 23 个)零改动,无需按 ERR-110 重新冻结;v5 77 例改前改后逐项相同;不升打分版本 |
## 提交与任务对应
| 任务 | 提交 | BUG |
| --- | --- | --- |
| T5 | `7dda1b45` | BUG-1223 |
| T2 | `61bd4425`(含两份 golden 重采:只多 `rath.source` 文字) | BUG-1224 |
| T3 | `57ef4560`(含 golden 重采:只多 `current_md_antardasha_rule.direction`) | BUG-1225 |
| T4 | `1dd8e11b` | BUG-1226 |
| T1 / T7 记录 | 本分支最后一个 docs 提交(T1 只改测试注释,不改代码) | BUG-1227 |
| T6(研究分支) | `d1f796fa`(cherry-pick 第三批开关 `e3e9befc`)、`86e55514`(10-04 说明 + `--dual-lord p43` 试验),基于 `1dd8e11b` | — |
## 环境
| 项 | 实际 |
| --- | --- |
| Python | 无 `.venv`,系统 `python3` |
| Node | `/exec-daemon/node` v22.14.0;`frontend/node_modules` 软链到同 lockfile 的 `.worktrees/consult-career-yoga-functional-20261002/frontend/node_modules` |
| 磁盘 | 开工 44G 可用;大评测前 43G |
| 原书 | p.43 原文取自另一会话 scratchpad 已有的《Narayana Dasa》PDF 文本(PDF Page 39–41 = 书页 p.42–44;只读,未入库) |
| 一次性工作树 | `.worktrees/batch5-baseline-77645ce2`(基线 npm test、v5、9 盘年主)、`.worktrees/batch5-eval-1dd8e11b`(改后 v5)、`.worktrees/batch5-trial-r1`、`.worktrees/batch5-trial-r2p`(研究分支同一提交,避免同一工作树并发评测互删临时数据集),均 `--detach`,用完删除;研究分支工作树 `.worktrees/narayana-rath-trial-20261004` 保留供复跑 |
| 模型 key | 无 → 名人生平回测未跑(BLOCKED) |
| `next build` | 未跑(node_modules 软链,Turbopack 拒绝;不改页面与路由) |
## T1 双主星(BUG-1227,blocked)
原书 p.43(BPHS 46.158–163)原文要点(PDF Page 40–41):
| 条 | 原文要点 | 实现(试算) |
| --- | --- | --- |
| (a) | 两主都在本宫 → 12 年 | 两主同宫,p.116 经度高者(取 Chara Karaka 度数,罗计 30−度数) |
| (b) | 两主同在另一宫 → 从本宫数到该宫 | 同上 |
| (c) | 一主在本宫、一主在别处 → 取在别处的那颗 | 同 |
| (d) | 两主分落别宫 → 比两主所落星座的力量(脚注 33 → 第 1 章力量来源),强者给年数 | 本模块 7 级 `compare_signs`(含 BUG-1224) |
| (e) | 两宫力量相等 → 取年数多的那颗(原书例:计都射手、火星处女、无同宫 → 火星 10 年) | 同 |
三种读法在原书各表上的结果(脚本 `p43_run.py`,scratchpad;研究分支 `--dual-lord p43` 即「全级」读法):
| 读法 | 软件表双主星 | 不符 | Table 15 年数 | Table 17 年数 | Table 18 显式 | 强弱 30 对 | Table 25 子运 |
| --- | --- | --- | --- | --- | --- | --- | --- |
| 现状(冻结 `jaimini_dual_lord_source_v1`) | 8/10 | T23 水瓶、T25 天蝎 | 12/12 | **12/12** | 12/12 | 28/30 | 24/36 |
| p.43 (d) 用 7 级全比(裁定字面) | **9/10** | T23 天蝎(书火星、我们计都:射手得木星两角色,第 2 级) | 12/12 | **10/12**(天蝎 10→1 计都、水瓶 8→1 土星) | 12/12 | 28/30 | 24/36 |
| p.43 (d) 只比第 1 级星数,平了走 (e) | 7/10 | T23 水瓶、T24 天蝎、T25 天蝎 | 12/12 | 12/12 | 12/12 | 28/30 | 24/36 |
逐条命中(7 级全比读法,含罗计尊贵):Table 22 水瓶 (d) 第 1 级土星 ✓、天蝎 (d) 第 1 级火星 ✓;Table 23 水瓶 (d) 第 2 级土星 ✓、天蝎 (d) 第 2 级计都 ✗;Table 24 水瓶 (d) 第 2 级土星 ✓、天蝎 (d) 第 2 级火星 ✓;Table 25 水瓶 (d) 第 1 级土星 ✓、天蝎 (d) 第 3 级计都 ✓(计都在双鱼 Moolatrikona);Table 27 水瓶 (d) 第 1 级罗睺 ✓、天蝎 (d) 第 3 级火星 ✓(计都在双子落陷,p.67 原句)。(a)(b)(c)(e) 在 10 个样本里没有命中(Table 15 天蝎走 (c),但不在软件表里)。
**为什么停下**:标准盘(Table 17 与 Table 23 是同一出生资料)的原书三处说法互相冲突。
1. p.43 (e) 的例句与 Chart 3(Table 17 的年数)把「计都射手、火星处女」当作力量相等,取火星 10 年;但任何逐级比较都判计都(第 2 级射手得木星两个角色;第 3 级计都在射手入旺),Table 23 软件判定也取火星。
2. Chart 3 水瓶取罗睺 8 年,注「Rahu and Saturn are both alone, but Saturn is in own sign Capricorn — Rule 5(c)」,即把土星落自己的另一宫当作 (c) 的「在本宫」;同书 Table 23 软件判定却是土星强。
没有一条通则能同时满足 Table 17 年数与 Table 23 双主星。照裁定字面实现,Table 17 年数就低于现状,按红线 2 停下;`_lord` 不变,测试注释写明(`tests/test_narayana_rath_book_tables.py`)。另:占星师答复里「Table 23 水瓶 → 土星(金牛 3 星 > 处女 1 星)」对应的是 Table 25(Wadiyar)的水瓶,Table 23 本盘是土星摩羯、罗睺双子(她的结论土星仍对,理由按摩羯 2 角色 > 双子 1 角色,第 2 级)。
## T5 年主不再顶替(BUG-1223)
- `select_annual_year_lord`:Panchadhikari 被 block → `status: blocked`、`reason`、`year_lord: None`、`selection_basis: panchadhikari_blocked_no_year_lord`、依据句「年主暂无法确定(原因)」与英文。原因 5 种有中英文(年盘缺日月 / 缺行星五分力量算不出 / 五类候选都不在年盘 / 年盘无法计算 / 缺 Muntha 星座),其余「年盘数据不全」。
- `cmd_tajika`(全量解读 Step 9 同一函数):返照盘算不出时同样 blocked,不再调 `calc_year_lord`;没有年主时 Tri-Pataka blocked(上游此处仍默认木星,本仓不跟)。`solar_return_full_report` 同。
- `annual_tajika_pack`:两个生产者都 blocked 时字段保留生产者的原因与那一句(`blocked_detail`),简报行写那一句。
- 咨询年运层:年主 blocked 不再让整张年运卡失效;`varshesha: null`、`varshesha_basis` 为那一句;Mudda 照常。
- 报告:年主表「Varshesha」为 `-`,「Selection basis」为那一句;英文词表补 6 句。
- 9 位公开名人 2026 年(raman):两个生产者的年主、候选、Tri-Pataka、Mudda 完整 JSON 改前(`77645ce2`)/ 改后逐字节相同(`IDENTICAL`)。年主:奥巴马水星、皮雅芙火星、泰勒火星、卡罗月亮、小布什月亮、嘉兰火星、梦露火星、乔布斯金星、齐达内火星——0/9 走到 blocked。
## T2 罗计尊贵(BUG-1224)
- `RATH_NODE_DIGNITY`(只在 `narayana_rath`):本宫罗睺水瓶 / 计都天蝎;Moolatrikona 罗睺处女 / 计都双鱼;旺(Phalita)罗睺双子 / 计都射手;落陷在对宫(罗睺射手 / 计都双子)。
- 第 3 级档位:旺 3 > MT 2 > 本宫 1 > 无 0 > 落陷 −1;仍「先比最高档、再比有尊贵星数」。落陷档对九颗星都适用(原书 Rule 3 是通则、p.67 用的就是它)——这是我方读法,列入下轮问题。
- p.67 复现:Indira 盘狮子(火星)对双子(计都),改前第 4 级判双子,改后第 3 级判狮子。
- 改动的既有断言:`tests/test_narayana_rath_rules.py` 第 7 级构造盘——原值太阳 195.37(天秤,落陷)、月亮 223.57;新值日月互换;原因:落陷档会让该例在第 3 级分出,不再演示第 7 级。
- 本命庙旺测试(`test_node_own_sign_and_fixed_lords.py`,BUG-1211)照常通过;`RATH_NODE_DIGNITY` 没有其他脚本引用(测试)。
## T3 子运方向(BUG-1225)
| 情形 | 原书 / 裁定 | `_ad_order_profile` 现状 | 一致 |
| --- | --- | --- | --- |
| 默认 | 看子运起点星座奇偶(Table 25 做法,第六轮问 7) | Table 13:12 个起点奇顺偶逆(测试逐一验证) | ✓ |
| 土星在大运宫 | p.51:一律顺行 | Table 11(顺行) | ✓ |
| 计都在大运宫 | p.51:反向 | Table 14(= Table 13 反向,测试逐一验证) | ✓ |
| 土计同在 | 产品已定计都优先 | Table 14 + 「PyJHora 兼容:计都优先」 | ✓ |
- 代码未改顺序,只加输出:`antardasha_start_rule.direction = {direction, rule, rule_text(_en), book_divergence: [p.47 / J.S. 1.1.34 看大运星座奇偶;J.S. 2.4.31–32 看大运星座或其宫主所落星座] }`,每条带该说法给出的方向、`differs`、`applied: false`。
- 参考版报告当前大运子运表上方加一行「子运方向:…(书内分歧,未采用:…)」,英文词表补齐(既有测试:英文版 Rath 行无中文)。
- 新增测试:12 起点三表方向;计都在大运宫的构造盘;土计同在;Table 25 金牛大运(土星在内)12/12、p.47 说法给逆行(`differs: true`)。
## T4 Wadiyar 两对(BUG-1226)
`BOOK_SOFTWARE_DIFFERENCES["book_software_rule8_exception"]`:Table 25,双子 / 射手、处女 / 双鱼,原书取双子、处女,通则第 5 级取射手、双鱼,保持通则;中英说明与裁定出处;`calc_narayana_rath` 每次输出带 `known_book_differences`。测试:软件表 30 对里不符的恰为这两对、都在第 5 级。
## 验收底线(前 / 后)
| 项 | 底线 | 开工 `77645ce2` | 改后 `1dd8e11b` |
| --- | --- | --- | --- |
| Table 15 通则 | 巨蟹、12/12、12/12 | 巨蟹(第 1 级)12/12 / 12/12 | 同 |
| Table 17 通则 | 双鱼、12/12、12/12 | 双鱼(第 2 级)12/12 / 12/12 | 同 |
| Table 18 显式巨蟹 | 12/12 | 12/12(通则摩羯第 5 级照实) | 同 |
| 软件表强弱 30 对 | ≥ 28/30 | 28/30(不符 = Wadiyar 两对,第 5 级) | 28/30(同两对,已标 T4) |
| 软件表双主星 | 目标 10/10 | 8/10 | 8/10(T1 停下) |
| Table 25 子运 36 行 | ≥ 24/36 | 巨蟹 12、双子 0、金牛 12 = 24/36 | 同 |
12 张 golden 盘(咨询 3 + 回测 9)的 Rath 起运宫、大运、当前子运:改前改后不变;golden 只多了 `rath.source` 两个文字字段与 `current_md_antardasha_rule.direction`(真实引擎重采,已提交)。数据卡投影不含这些字段,卡长不变。
## 生时校正评测(v5 77 例)
- 命令:`python3 scripts/research/holdout_v5_baseline.py --dataset v5 --out-dir <dir> --json-out <dir>/summary.json`,`PYTHONHASHSEED=0`、`JYOTISH_API_CHART_CACHE_TTL_SECONDS=0`;改前 `77645ce2`、改后 `1dd8e11b`(引擎代码终版),各在一次性 `--detach` 工作树。本分支没有开关,改前改后即「开关关闭」对照。
- sweep、cluster_width、summary 三文件去掉耗时与路径字段后 **逐项相同**(`IDENTICAL` ×3)。冻结身份文件与 `origin/staging` 无差异;`ALGORITHM_VERSION` 不变。
| 指标(v5 77 例) | ±10 | ±30 | ±60 |
| --- | --- | --- | --- |
| 先验头名 前 / 后 | 0.1818 / 0.1818 | 0.0909 / 0.0909 | 0.0779 / 0.0779 |
| 六题回放头名 前 / 后 | 0.6364 / 0.6364 | 0.4935 / 0.4935 | 0.3117 / 0.3117 |
| 线上区间回放头名 前 / 后 | 0.6623 / 0.6623 | 0.5584 / 0.5584 | 0.4026 / 0.4026 |
| 覆盖(回放)前 / 后 | 0.987 / 0.987 | 0.987 / 0.987 | 0.987 / 0.987 |
| 中位宽度(回放)前 / 后 | 13 / 13 | 33 / 33 | 65 / 65 |
| futile 真值在区间(truth)前 / 后 | 76 / 76 | 75 / 75 | 76 / 76 |
## T6 Rath 替换校正 v5 重试算(研究分支)
**结论:与第三批几乎相同,R1、R2 仍都有档位降超过 1pt,判「变差」,不建议替换;交产品决定。** 详表见 `docs/research/narayana_rath_rectification_trial_2026_10_03.md`「10-04 重跑」。
| 指标(百分点变化,相对基线) | ±10 R1 / R2 / R2P | ±30 R1 / R2 / R2P | ±60 R1 / R2 / R2P |
| --- | --- | --- | --- |
| 先验头名 | +1.3 / 0 / 0 | 0 / +1.3 / +1.3 | 0 / +1.3 / +1.3 |
| 六题回放头名 | 0 / +3.9 / +3.9 | +1.3 / **−1.3** / **−2.6** | +5.2 / +10.4 / +9.1 |
| 线上区间回放头名 | 0 / +2.6 / +2.6 | **−1.3** / **−5.2** / **−5.2** | +2.6 / +2.6 / +1.3 |
| 覆盖(回放) | 0 / 0 / 0 | 0 / **−1.3** / **−1.3** | **−2.6** / 0 / 0 |
| 中位宽度(分钟,基线 13 / 33 / 65) | 11 / 13 / 13 | 37 / 35 / 35 | 73 / 69 / 69 |
| futile 真值在区间(基线 76 / 75 / 76) | 76 / 76 / 76 | 75 / **74** / 75 | **73** / 76 / 76 |
- 与第三批(10-03)对比:R1 输出三文件逐项相同;R2 只有 `paul_ryan_1970_aa_v4_holdout` 一例 ±30 / ±60 区间略窄(T3、T4 只加输出,差异应来自 T2 罗计尊贵,未逐处追查),上表各项全同。
- R2P = R2 + 未落地的 p.43 双主星(全部由 (d) 判出):±30 / ±60 回放头名比 R2 各再降 1.3pt,futile ±30 回到 75。不支持为打分落地 T1。
- 研究分支 `codex/narayana-rath-rectification-trial-20261004`(`86e55514`),工作树 `.worktrees/narayana-rath-trial-20261004` 保留;不合入、未推送。
## 测试
| 项 | 结果 |
| --- | --- |
| Rath 定向(`test_narayana_rath_book_tables`、`test_narayana_rath_rules`、`test_narayana_legacy_label`、`test_node_own_sign_and_fixed_lords`) | 全过 |
| 年运定向(`test_year_lord_blocked_no_fallback` 7 条新增、`test_tajika_panchadhikari_year_lord`、`test_year_lord_basis_label`、`test_annual_tajika_pack`、`test_consultation_native_layers`、`test_tajika_mudda`、`test_solar_return_timezone`、`test_tajika_five_fold_panchavargiya`) | 全过 |
| `tests/test_report_english_dictionary.py`(单独跑) | 通过 |
| 隐私 `test_repo_privacy_markers`、API 增长合同、冻结新鲜度 | 通过 |
| `tests/test_report_reader_main.py::test_reader_annual_conflict_keeps_both_real_producer_values` | 失败,**开工基线 `77645ce2` 同样失败**(当年年主现为木星,断言写的是火星;与本单无关,未改),列入下轮问题 |
| `tsc --noEmit` | 0 错 |
| `npm run lint` | 0 error(126 warnings,与第四批同数) |
| `npm test`(Node 22.14) | 开工基线 4932 项 / pass 4867 / fail 24 / skipped 41;改后同;**失败名单按测试名逐条相同**(亦与第四批 `f4.txt` 相同);确认门 `rectification-confirmation-gate.test.ts` 全过(冻结文件未动,路径不用改) |
| 快速门 `run_quality_gate.py --profile quick --skip-frontend-runtime` | `Quality gate passed`,1047 passed、1 skipped |
## 下轮问占星师 / 产品
1. **(T1,必须先答)标准盘双主星以哪处为准**:同一张标准盘,原书 Table 17 / Chart 3 与 p.43 (e) 的例句取火星(天蝎 10 年)、罗睺(水瓶 8 年),同书 Table 23 软件判定是土星、火星。按 p.43 (d) 逐级比较,天蝎会判计都(射手得木星两角色、计都在射手入旺),水瓶判土星,Table 17 年数降到 10/12。请选:(A) 以 p.43 (d) 为准,接受 Table 17 两段年数与原书不同;(B) 以 Table 17 / Chart 3 为准,(d) 只比星数、平了走 (e)(双主星 7/10);(C) 维持现状(8/10)。另,Chart 3 注「土星在本宫摩羯 Rule 5(c)」是否意味着 (c) 的「在本宫」包括双主星的另一自宫?
2. **第 3 级落陷**:我们把落陷算作比无尊贵更弱(p.67 计都例),并对九颗星一律适用(不只罗计)。对吗?
3. **p.116 双主同宫「经度高者」**:罗睺、计都用 30 − 度数(Chara Karaka 口径)还是原始度数?
4. **(产品)报告里的「子运方向」一行**:现在每次都列出书内两种不采用的说法;是否只在它们与实际方向不同时才列?
5. **(产品)`test_report_reader_main.py::test_reader_annual_conflict_keeps_both_real_producer_values`** 在开工基线就失败(当年年主现为木星,断言写火星,疑为 BUG-1220 返照时刻修正后未跟改),需另开单确认。
+1 -1
View File
@@ -418,4 +418,4 @@
| `TASK-astrologer-rulings-batch3-20261003.md` | `PROGRESS-astrologer-rulings-batch3-20261003.md` | 占星师第五轮:Mudda 改出生月宿起排(与年主脱钩);年主改 Tajika 正式五分力量;Rath 版 Narayana 按原书 7 级强弱、计都反转、子运起点重做并以三张样表验收,过了再并列展示与 v5 试算(研究分支);土计同宫计都优先(产品选 A);上游两个 bug 记录(BUG 从 1216 起) | 已实现待验收(T1–T4 完成;T3 按修订后红线 3 通过;T5 v5 试算在研究分支,未合入) | 分支 `codex/astrologer-rulings-batch3-20261003`(未推送;BUG-1216~1219;校正分数不变、未升版本);研究分支 `codex/narayana-rath-rectification-trial-20261003`(未推送、不合入) |
| `TASK-annual-return-frame-20261003.md` | `PROGRESS-annual-return-frame-20261003.md` | 太阳返照时刻错位:出生太阳与求解器不同参考系(差 15″≈6 分钟)+ 年盘丢秒;243 张年盘里年盘上升变 13、年主变 11;搬上游 7cc6425d/46ed9399 两处,PyJHora 对照 ≤0.5 分钟;排在第三批之后(依据 `docs/research/shared_engine_reuse_audit_2026_10_03.md`) | 已部署 staging `01929bae`(BUG-1220) | 分支 `codex/annual-return-frame-20261003` |
| `TASK-astrologer-rulings-batch4-20261003.md` | `PROGRESS-astrologer-rulings-batch4-20261003.md` | Rath 当前大运进全部领域卡(卡预算 12,000→12,500、总 18,000→18,500,修改 BUG-1160/1161 决定);报告年运强度表改 Tajika 五分法(与年主同口径);校正打分不换,等第六轮 | 已实现待验收(T1–T3 完成) | 分支 `codex/astrologer-rulings-batch4-20261003`(未推送;BUG-1221~1222;校正分数不变、未升版本) |
| `TASK-astrologer-rulings-batch5-20261004.md` | `PROGRESS-astrologer-rulings-batch5-20261004.md` | 占星师第六轮:Rath 双主星按 p.43(a)–(e)、罗计尊贵按 Rath Table 9(仅 Narayana 内)、子运方向 p.51 例外与书内分歧标注、Wadiyar 两对标软件特例;年主选不出时不再用 Muntha 主星顶替(对齐上游 03bea6ed);Rath 替换校正 v5 重试算(研究)(BUG 从 1223 起) | 待领取 | 分支 `codex/astrologer-rulings-batch5-20261004` |
| `TASK-astrologer-rulings-batch5-20261004.md` | `PROGRESS-astrologer-rulings-batch5-20261004.md` | 占星师第六轮:Rath 双主星按 p.43(a)–(e)、罗计尊贵按 Rath Table 9(仅 Narayana 内)、子运方向 p.51 例外与书内分歧标注、Wadiyar 两对标软件特例;年主选不出时不再用 Muntha 主星顶替(对齐上游 03bea6ed);Rath 替换校正 v5 重试算(研究)(BUG 从 1223 起) | 已实现待验收(T2–T5 完成;T1 按红线停下 blocked;T6 研究分支已跑) | 分支 `codex/astrologer-rulings-batch5-20261004`(未推送;BUG-1223~1227;校正分数不变、未升版本);研究分支 `codex/narayana-rath-rectification-trial-20261004`(不合入) |