Files
Jyotisha/docs/tasks/TASK-rashi-dashas-native-20261008.md
T

8.6 KiB
Raw Blame History

TASK · 报告补上 7 种星座大运:Sthira、Drig、Shoola、Navamsha、Niryaana Shoola、Lagna Kendradi、Chara(2026-10-08)

  • 基线:origin/staging(写作时 3b70d1a7,已部署同一 SHA:章动修正 BUG-1275 与完整数据版报告 BUG-1282 都在内)。
  • 上游参照:/workspace/yinduzhanxing origin/main @ 0337b77f。上游历史在 10-05 之后被重写过,23be1807 已不在主线上,所以本单按文件的 git blob 哈希锁定参照(见 §1 表),不按提交号。
  • 分支 / worktree:codex/rashi-dashas-native-20261008 / .worktrees/rashi-dashas-native-20261008
  • 串行:与 TASK-consult-card-full-source-20261007(对话数据卡同源)可以并行;两单都动报告资料包。谁后合入,谁 rebase 后重跑 Python 全量与报告定向测试。
  • BUG 编号:开工时核对 docs/BUG_HISTORY.md 最大号(写作时 BUG-1282),从 1283 起。

1. 现状与证据

产品 10-08 决定(TASK-report-full-data-fix-20261008 决策 4):这 7 种大运另开一单。完整数据版现在只有 Vimshottari、Yogini、Kala Chakra、Tribhagi、Tribhagi 40、Dwisaptatisama、Shattrimshatsama、Narayana;乔布斯盘上游同盘导出另有约 5 万字的这 7 种大运表。

我方已有:scripts/niryaana_shoola_dasha.py(与上游当前版本不同,上游 9-08 019aabfd 起改为有出处的 MD 生成器)、scripts/extended_dashas.py::calc_shoola_dasha(简化版)、引擎模块 chara_dasha(K.N. Rao 口径,09-27 按顾问意见移出对话卡,报告目前没有单独一节)。

上游的实现方式(Claude 10-08 核对):

文件(上游 scripts/) blob 行数 运行时导入 jhora 说明
rashi_dasha_explicit_contract.py bb2173237e94 266 否 通用星座大运展开器:只接受显式输入(起始星座、顺序、年数),拒绝推断缺的部分
sthira_dasha.py c920d02f9d30 92 否 固定年数展开;Brahma 选择不在本文件
sthira_brahma_goel_short_method.py 6e010b54f5ba 112 否 Goel / Rao 简法选 Brahma:取上升与第 7 宫较强者,看 6/8/12 宫主,排除土星;不实现 BPHS 的覆盖条款
drig_dasha.py b80cf089e2e7 254 否 显式输入展开器
shoola_dasha.py 872817383ecd 129 否 显式输入展开器
navamsha_dasha.py 3efe868685f5 119 否 显式输入展开器(档案 goel_method_1_v1)
niryaana_shoola_dasha.py 3a86d11b6a0f 387 否(只有 pyjhora_* 档案名字符串) 档案 goel_nirayana_shoola_v1
lagna_kendradi_dasha.py、lagna_kendradi_family_contract.py 3e472f5e9292、eaeb4f6c7610 — 否 显式输入展开器
dasha_profile_arbitration.py 37ba00a47006 316 否 每种大运选一个「运行候选档案」;自己声明「不是公认标准,也不是 PL9 的标准答案」
rashi_dasha_named_profile_registry.py、source_bounded_child_periods.py 04f36a6bd7cc、25c20633e8b2 — 否 / 待查(后者有 3 处 jhora 字样) 档案注册表、子运规则
references/oracle/dasha_profile_external_evidence_2026_09_11.json 9aea94c9ab25 — — 出处清单:Goel《Predicting through Jaimini Astrology》全文、Rath《Crux of Vedic Astrology》全文、公开 PL9 报告、公开讨论与案例

上游档案选择结果(build_pl9_compatible_profile_bundle()):

大运 上游状态 档案
Sthira 已选候选 goel_rao_short_brahma_method_v1
Niryaana Shoola 已选候选 goel_nirayana_shoola_v1
Drig 已选候选 drig_rath_narayana_duration_v1
Shoola 已选候选 shoola_forward_md_direct_ad_v1
Navamsha 已选候选(引擎直接调) goel_method_1_v1
Lagna Kendradi 没有安全默认值 —
Chara 我方已有 K.N. Rao 版 —

PyJHora 4.8.7(本机 jhora.horoscope.dhasa.raasi)有 sthira、drig、shoola、navamsa、nirayana / niryaana、lagna_kendraadhi、chara 等模块,可以离线生成对照答案。

2. 关键难点

上游这些模块是「展开器」:起始星座、顺序、年数要调用方给。所以本单不是搬几个文件就完:每种大运要在我方用自己的盘面算出这些输入(起始星座怎么选、顺行还是逆行、每段几年),并对照原书与 PyJHora 核实。规则有分歧的地方,要写明选了哪一派、出处在哪一页。

3. 决策记录

产品 2026-10-08 已定:这 7 种大运单独开一单,放在完整数据版之后做;报告里不写占位。

Claude 建议的默认做法(执行方按此开工;产品如有不同意见,Claude 会改写本节):

  1. 报告里标明口径:每种大运的表头写「本站选用的方法:〈档案名〉,出处:〈书名 页码〉;未与外部软件逐一核对」,口径同 BUG-1218 Rath 版 Narayana 的并列展示。
  2. 只进报告,不进对话卡、不进生时校正打分。打分仍只用 Vimshottari + 旧 Narayana(产品 10-04 定)。
  3. Lagna Kendradi 上游没有安全默认值:本单只做调研和对照;若找不到明确出处的规则,就写 blocked 不上报告,并把问题加进给占星师的下一轮问题。
  4. Chara:我方 K.N. Rao 版进报告,作为独立一节,与 Narayana 分开,标明 K.N. Rao 口径。

4. 硬红线

  1. 运行时不得导入 jhora(快速门 tests/test_runtime_jhora_import_scan.py);PyJHora 只用来离线生成冻结对照答案,测试只读冻结文件。验收要在屏蔽 PyJHora 的环境跑一次报告导出。
  2. 起始星座、方向、年数必须由我方盘面算出,不得手填、不得从 PyJHora 或 PL9 输出抄。规则引用写到书名 + 页码 / 章节;只读上游 references/book_corpus/,不得把书籍原文拷进本仓。
  3. 与 PyJHora 不一致时不得调参去凑:逐条记录差在哪一步(起始星座 / 方向 / 年数 / 子运),说明哪边符合所选出处。
  4. 不改生时校正打分,不升算法身份;不改对话卡。
  5. 引擎数值不变(新增模块只读已有盘面);Python 全量失败名单 ⊆ 基线;npm test 失败名单与基线相同。
  6. 报告口径红线(BUG-1199~1229、1272~1282)继续有效;英文版仍须 0 汉字。

5. 任务分解

# 内容 验收标准
T0 盘点:按 §1 表把上游文件、出处 JSON 与我方现有实现逐一对照;列出每种大运「起始星座 / 方向 / 年数 / 子运」四项各自的规则与出处页码;查清 source_bounded_child_periods.py 里 3 处 jhora 字样是否运行时导入 进度记录里有 7 行 × 4 列规则表,每格有出处或 blocked
T1 移植展开器与档案注册表(新模块放 scripts/,按 blob 哈希注明来源) 导入扫描通过;新模块单测覆盖
T2 为每种大运写「从我方盘面算输入」的函数:Sthira(Brahma 选择,Goel / Rao 简法)、Drig、Shoola、Navamsha(goel_method_1_v1)、Niryaana Shoola(升级到上游当前版)、Chara(接已有模块)、Lagna Kendradi(按决策 3) 乔布斯、奥巴马、爱因斯坦、虚构盘四张盘都能算出;与 PyJHora 冻结答案逐段对照,差异列表进进度记录
T3 原书例题 每种大运至少一个原书 worked example 复现(起始星座、方向、各段年数一致);书内自相矛盾的地方照 BUG-1218 先例记录
T4 接进完整数据版报告(中英文),表头按决策 1 标口径 乔布斯盘报告出现这些大运表;英文 0 汉字;与上游 0337b77f 同盘导出逐节对照,差异说明
T5 记录 docs/BUG_HISTORY.md(若发现我方 Niryaana Shoola / Shoola 现有实现有错,单独编号)、CHANGELOG.md、进度记录、状态板;Lagna Kendradi 等问题写进给占星师的问题清单

6. 让步顺序

Lagna Kendradi → Navamsha 子运 → Drig 子运。Sthira、Shoola、Niryaana Shoola、Chara 的主运不让步。

7. 验收口径

Linux 或门禁同等环境:ruff、py_compile、快速门、Python 全量 ⊆ 基线、npm test 失败名单与基线相同、tsc 0、lint 0 error、next build / Static;屏蔽 PyJHora 导出一次报告。

8. 开工前置命令

git fetch origin --prune
git worktree add -b codex/rashi-dashas-native-20261008 .worktrees/rashi-dashas-native-20261008 origin/staging
git -C /workspace/yinduzhanxing fetch origin && git -C /workspace/yinduzhanxing rev-parse origin/main:scripts/drig_dasha.py   # 应为 b80cf089e2e7…
grep -o "^## BUG-[0-9]*" docs/BUG_HISTORY.md | sed 's/## BUG-//' | sort -n | tail -1