Files
Jyotisha/docs/tasks/PROGRESS-astrologer-rulings-batch5-20261004.md
T
Jesse_ChenandClaude Opus 5.5 3333aa66bf
Independent Staging Quality Gate / validate (push) Successful in 15m31s
Independent Staging Quality Gate / publish (push) Canceled after 3m28s
docs(tasks): batch-5 acceptance notes
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
2026-10-04 08:51:01 +08:00

19 KiB
Raw Blame History

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 返照时刻修正后未跟改),需另开单确认。

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),只读、未入库。