Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
8.6 KiB
TASK · 报告补上 7 种星座大运:Sthira、Drig、Shoola、Navamsha、Niryaana Shoola、Lagna Kendradi、Chara(2026-10-08)
- 基线:
origin/staging(写作时3b70d1a7,已部署同一 SHA:章动修正 BUG-1275 与完整数据版报告 BUG-1282 都在内)。 - 上游参照:
/workspace/yinduzhanxingorigin/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 会改写本节):
- 报告里标明口径:每种大运的表头写「本站选用的方法:〈档案名〉,出处:〈书名 页码〉;未与外部软件逐一核对」,口径同 BUG-1218 Rath 版 Narayana 的并列展示。
- 只进报告,不进对话卡、不进生时校正打分。打分仍只用 Vimshottari + 旧 Narayana(产品 10-04 定)。
- Lagna Kendradi 上游没有安全默认值:本单只做调研和对照;若找不到明确出处的规则,就写
blocked不上报告,并把问题加进给占星师的下一轮问题。 - Chara:我方 K.N. Rao 版进报告,作为独立一节,与 Narayana 分开,标明 K.N. Rao 口径。
4. 硬红线
- 运行时不得导入
jhora(快速门tests/test_runtime_jhora_import_scan.py);PyJHora 只用来离线生成冻结对照答案,测试只读冻结文件。验收要在屏蔽 PyJHora 的环境跑一次报告导出。 - 起始星座、方向、年数必须由我方盘面算出,不得手填、不得从 PyJHora 或 PL9 输出抄。规则引用写到书名 + 页码 / 章节;只读上游
references/book_corpus/,不得把书籍原文拷进本仓。 - 与 PyJHora 不一致时不得调参去凑:逐条记录差在哪一步(起始星座 / 方向 / 年数 / 子运),说明哪边符合所选出处。
- 不改生时校正打分,不升算法身份;不改对话卡。
- 引擎数值不变(新增模块只读已有盘面);Python 全量失败名单 ⊆ 基线;
npm test失败名单与基线相同。 - 报告口径红线(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