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 是同一出生资料)的原书三处说法互相冲突。
- p.43 (e) 的例句与 Chart 3(Table 17 的年数)把「计都射手、火星处女」当作力量相等,取火星 10 年;但任何逐级比较都判计都(第 2 级射手得木星两个角色;第 3 级计都在射手入旺),Table 23 软件判定也取火星。
- 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 |
下轮问占星师 / 产品
- (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) 的「在本宫」包括双主星的另一自宫?
- 第 3 级落陷:我们把落陷算作比无尊贵更弱(p.67 计都例),并对九颗星一律适用(不只罗计)。对吗?
- p.116 双主同宫「经度高者」:罗睺、计都用 30 − 度数(Chara Karaka 口径)还是原始度数?
- (产品)报告里的「子运方向」一行:现在每次都列出书内两种不采用的说法;是否只在它们与实际方向不同时才列?
- (产品)
test_report_reader_main.py::test_reader_annual_conflict_keeps_both_real_producer_values 在开工基线就失败(当年年主现为木星,断言写火星,疑为 BUG-1220 返照时刻修正后未跟改),需另开单确认。
Claude 验收(2026-10-04)
- 快速门通过;英文对照、隐私、
test_year_lord_blocked_no_fallback.py、Rath 定向测试全部通过;冻结清单文件零改动。
- 前端:
tsc 0 错;lint 0 error / 126 warning;npm test 4932 项、fail 24,失败名单与第四批逐条相同,确认门测试通过。
- 基线失败的
test_report_reader_main.py::test_reader_annual_conflict_keeps_both_real_producer_values:二分定位到 01929bae(BUG-1220 返照时刻修复)。e7eeb404 / 503c1190 / 3c27c38e 通过,01929bae 失败。原因是返照时刻纠正后,夹具当年的年主由火星变成木星,测试预期没有同步。已告知执行 BUG-1220 的会话补三栏,本单不改。
- T1 按红线停下,合理:p.43 (d) 字面读法会让 Table 17 年数降到 10/12。原书标准盘 Table 17 / Chart 3 与 Table 23 软件判定互相矛盾,列为下轮问题第 1 题。占星师举的「金牛 3 星 > 处女 1 星」实际是 Table 25 的数据,不是 Table 23。
- T2 执行方自定「落陷对九颗星一律弱于无尊贵」,超出裁定字面(裁定只给了 p.67 计都例句)。底线各项不降,暂且接受,列为下轮问题第 2 题。
- 双主规则 (a)–(e) 原文取自另一会话 scratchpad 里的原书 PDF 文本(公开 PDF),只读、未入库。