docs(tasks): BUG-1275 nutation brief; full-data report second-round fixes
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
1678263436
commit
1a8c97f64a
@@ -17132,3 +17132,19 @@
|
||||
- 修复版本:本分支 `codex/special-lagnas-native-20261008`
|
||||
- Claude 验收(2026-10-08,Linux):屏蔽 `jhora` 导入后跑 `cmd_full_reading`,乔布斯、奥巴马、虚构盘 × Lahiri / Raman 共 6 组,8 个点全部 `computed`、`source` 为 `native_special_lagna`,与 `fb8277bf` 调 PyJHora 的结果最大差 0°。Python 全量 62 条失败,与 `2df6ee72` 逐名相同;快速门通过;`tests/test_runtime_jhora_import_scan.py` 在快速门内,人为在 `native_special_lagnas.py` 加一行 `from jhora ...` 后该测试失败(变异检查)。年运资料包屏蔽 `jhora` 前后逐字节相同。
|
||||
- 待问占星师:Vighati 上升按每分钟 15° 计(与 PyJHora 一致);按字面「每个 vighati 一个星座」应为每分钟 75°。
|
||||
|
||||
## BUG-1275 | 恒星黄道经度少扣章动:所有行星偏约 0.005°,Vimshottari 日期差 2–3 天
|
||||
|
||||
- 状态:investigating(修复单 `docs/tasks/TASK-ephemeris-nutation-20261008.md`)
|
||||
- 首次发现 / 最近更新:2026-10-08 / 2026-10-08
|
||||
- 来源:Claude 验收完整数据版报告时,对比上游 `23be1807` 同盘导出。
|
||||
- 影响面:`scripts/jyotish_engine.py` 的 `_calc_sidereal_planets_for_jd` 与 `_sidereal_calculation_profile` 的 `legacy` 档,以及同样写法的其他调用点(待核)。所有用到恒星黄道行星经度的地方:报告、对话卡、星盘页、大运、生时校正打分。
|
||||
- 现象:乔布斯公开盘(Lahiri,平均交点)月亮 344.51652°,Swiss Ephemeris `FLG_SIDEREAL` 为 344.51148°,上游 344.51°;水星大运起点我方 1958-03-19、上游 1958-03-22。
|
||||
- 触发条件:任何盘;偏差等于出生时刻的黄经章动 Δψ(最大约 17.2″),符号随年份变化。
|
||||
- 根因:行星取含章动的热带视位置,减去 `swe.get_ayanamsa(jd)` 的不含章动平岁差,两边口径不一致。差值与 `swe.calc_ut(jd, swe.ECL_NUT)` 的 Δψ(0.0050426°)一致。
|
||||
- 修复:未修。
|
||||
- 验证:本机 Swiss Ephemeris 2.10 直接计算(热带视位置 − 平岁差 = 344.516521;`FLG_SIDEREAL` = 344.511478)。
|
||||
- 防复发:待修复单。
|
||||
- 相关记录:2026-10-07 sync6 验收里「虚构盘大运与独立计算差约 2 天」曾被 Claude 判为岁差版本差异,实为本条。BUG-1268(子运起点)。
|
||||
- 复发自:无。
|
||||
- 修复版本:无。
|
||||
|
||||
@@ -202,7 +202,8 @@
|
||||
| 任务书 | 进度 | 主题 | 状态 | 落点 |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| `TASK-report-full-data-edition-20261007.md` | — | **报告改为完整数据版、删除阅读版**:网站阅读版中文 7.6 万字符 vs 上游 `pl9_ai_density` 97 万;移植原始数据附录 / 清理器 / 时间补充,中英文;我方报告口径(BUG-1199~1229)全部保持;旧报告仍可打开;排在 sync6 之后 | 未合入(分支 `06028759`,验收未通过,见 fix-20261008) | — |
|
||||
| `TASK-report-full-data-fix-20261008.md` | — | **完整数据版补齐**(同分支 `06028759` 继续):中文只有上游 19%(9.9 万 vs 52.6 万字);产品允许移植上游解释生成器并逐条核口径;年运表接我方字段;英文必须交付才上线;其他 7 种大运另开单 | 待领取 | — |
|
||||
| `TASK-report-full-data-fix-20261008.md` | — | **完整数据版补齐**(同分支 `06028759` 继续):中文只有上游 19%(9.9 万 vs 52.6 万字);产品允许移植上游解释生成器并逐条核口径;年运表接我方字段;英文必须交付才上线;其他 7 种大运另开单 | 验收未通过(`32f19f07`,见 fix2) | — |
|
||||
| `TASK-report-full-data-fix2-20261008.md` | — | **完整数据版第二轮**(同分支 `32f19f07` 续):英文已过;未过——全量 +1 旧断言、寿命断言、半译词与字段名被改坏、「守护第未列出宫」163 处、年运章 6/29 节、大运解释只有上游 42%(产品:补回传统段落改「可能」口吻) | 待领取 | — |
|
||||
| `TASK-report-reader-main-fix-20260925.md` | `PROGRESS-report-reader-main-fix-20260925.md` | **读者版修复**:真实年主比较、分字段绑定与未来返照;保留 Bhava Bala 和标题,隔离报告/聊天规则 | 已验收(Claude 09-25:年运表逐年填齐且不同、Bhava Bala 保留、泄漏 0) | `4d801e53`(已部署,health 核对一致) |
|
||||
| `TASK-report-reader-main-20260924.md` | `PROGRESS-report-reader-main-20260924.md` | **报告正文换上游读者版 reader_main + KP / Muntha 计算缺陷 + 投影截断(BUG-1026/1027/1028)**:正文一直是上游审计版(读者版 09-09 才出、从未同步),本仓又自加「结论等级规则」/英文段/异常原文;投影黑名单不认 PL9 词汇且截断半句、删表留说明;KP args `vars()` 拷贝为空恒失败;Muntha 漏合 `birth_asc_sign_idx` → Year Lord 恒火星。产品拍板接入读者版、旧报告不回填。 | 部分通过(Claude 09-25:读者版切换、泄漏 0 命中、KP 已修;年运 Year Lord/Muntha 全为「-」P1、投影误删 Bhava Bala P2 → 修复单) | `3c2f7bd5`(已部署) |
|
||||
| `TASK-report-reader-actions-20260924.md` | — | **报告操作收敛**:列表只留「查看报告」;阅读页删「下载原始附录」「打印」,导出改图标按钮;导出对话框 ≥860 居中、窄屏仍贴底(修订 chapter-export D9/D10)。产品变更,不开 BUG 号 | 基本通过(Claude 09-24:入口收敛、图标、≥860 居中均符合;原始附录三文件因执行方权限未删、PROGRESS/清单未写 → 并入修复单) | `f125fae0`(未部署) |
|
||||
@@ -316,6 +317,7 @@
|
||||
| `TASK-rectification-refresh-r3-r4-20260913.md` | `PROGRESS-rectification-refresh-r3-r4-20260913.md` | 刷新阶段 R3(MIN_BOUNDARY_DAYS 45→30)+ R4(pratyantar 与 D9/D10 上升 Narayana);首轮出题不变。即使放宽仍有 0 题例子,定向补事另线保留(BUG-664/665) | 已实现 `ab1ade59`,已部署;2026-09-13 验收通过(实现单由执行方自拟,无产品决策记录段;收益口径见研究文档) | `codex/rectification-refresh-r3-r4-20260913` |
|
||||
| `TASK-upstream-sync6-20261007.md` | [PROGRESS-upstream-sync6-20261007.md](PROGRESS-upstream-sync6-20261007.md) | **上游同步第六轮(`23be1807`)**:10-05 五个计算修正一行未合——D5/D6/D8/D11 映射(乔布斯盘四张分盘星座全不同)、Vimsopaka 权重、Yogini 顺序与出生余额、Panchadhikari 宫位参照、Narayana 并列、特殊上升、出生秒数、Neecha Bhanga 两条件、首段大运子运、岁差被覆盖;逐项对照原书核实;最先做 | 已验收(门禁补修 `2df6ee72`,已部署 staging) | [PROGRESS-upstream-sync6-20261007.md](PROGRESS-upstream-sync6-20261007.md) |
|
||||
| `TASK-special-lagnas-native-20261008.md` | `PROGRESS-special-lagnas-native-20261008.md` | **特殊上升点原生计算(线上缺陷)**:sync6 U6 运行时调 PyJHora,生产镜像没有 PyJHora → staging 上 Hora/Ghati/Sree/Indu/Pranapada 全 blocked;原生实现、PyJHora 只作冻结对照、快速门禁止运行时 import jhora;最先做 | 已验收(已部署 staging `795b8845`,BUG-1273) | `codex/special-lagnas-native-20261008`(未上线;部署以 `/api/health` 为准) |
|
||||
| `TASK-ephemeris-nutation-20261008.md` | — | **恒星黄道少扣章动(BUG-1275)**:行星 = 含章动热带视位置 − 平岁差,全体偏 Δψ(≤17″),大运日期差 2–3 天;改标准算法、PyJHora 冻结对照、scoring-12、v5 重跑 | 待领取 | — |
|
||||
| `TASK-sync6-gate-red-20261007.md` | — | **sync6 后门禁仍红**:run 3213 快速门已过,「Frontend and database tests」开跑 20 秒后日志中断、15 分钟后判失败,后续步骤 failure 0 秒;疑运行机掉线;先 Re-run,红则本机带 Docker 跑 `CI=1 npm test` 对照 `0ed45a4b` | 已完成(Re-run 通过,BUG-1271,部署 `2df6ee72`) | — |
|
||||
|
||||
| `TASK-rectification-tie-break-entry-fix-20260913.md` | `PROGRESS-rectification-tie-break-entry-fix-20260913.md` | 修复单:参考题入口只读 `window_scan` 标志位 → 两道答完后仍显示、再点弹「现在没有可答的参考题」;并按产品拍板改成点一次连出 D9+D10(BUG-666~668,Skill 10.0.26) | 已合入(无独立验收记录) | `99127601`(BUG-666~668 resolved;已部署 staging,run 2589) |
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
# TASK · 恒星黄道经度少扣章动:所有行星偏约 0.005°,大运日期差 2–3 天(2026-10-08)
|
||||
|
||||
- 基线:`origin/staging`(写作时 `16782634`,已部署 `795b8845`)。
|
||||
- 分支 / worktree:`codex/ephemeris-nutation-20261008` / `.worktrees/ephemeris-nutation-20261008`
|
||||
- 串行:与 `TASK-report-full-data-fix2-20261008` 可以并行开工;**谁后合入 staging,谁 rebase 后重跑 Python 全量与报告定向测试**。两单都会让报告 golden 变化。
|
||||
- BUG 编号:本单是 **BUG-1275**(已在 `docs/BUG_HISTORY.md` 记为 investigating)。
|
||||
|
||||
## 1. 事故实证
|
||||
|
||||
Claude 2026-10-08 验收报告时,用乔布斯公开盘(1955-02-24 19:15 PST,Lahiri,平均交点)对比:
|
||||
|
||||
| 来源 | 月亮恒星黄道经度 | 土星余额后第一个大运(水星)起点 |
|
||||
| --- | --- | --- |
|
||||
| 我方引擎(报告「本命盘行星原始位置」) | 344.52°(内部 344.51652) | 1958-03-19 |
|
||||
| 上游 `23be1807` 同盘导出 | 344.51° | 1958-03-22 |
|
||||
| Swiss Ephemeris `FLG_SIDEREAL`(标准做法,本机直接算) | 344.51148 | — |
|
||||
|
||||
差值 0.00504°,正好等于这一时刻的黄经章动 Δψ(`swe.calc_ut(jd, swe.ECL_NUT)` 第 3 项 = 0.0050426°)。
|
||||
|
||||
## 2. 根因
|
||||
|
||||
`scripts/jyotish_engine.py` 的 `_calc_sidereal_planets_for_jd` 以及 `_sidereal_calculation_profile` 的 `legacy` 档:行星用默认标志算**含章动的热带视位置**,再减 `swe.get_ayanamsa(jd)`,而后者是**不含章动的平岁差**。两边口径不一致,所有行星统一多出 Δψ(|Δψ| 最大约 17.2″ ≈ 0.0048°,随年份在正负之间变化)。
|
||||
|
||||
影响:
|
||||
|
||||
- 所有行星、交点的恒星黄道经度同方向偏移 Δψ;落在星座 / 星宿 / 分盘边界附近的星会换格。
|
||||
- Vimshottari 等以月亮度数起算的大运:0.005° ÷ 13.333° × 大运年数 ≈ 2–3 天。
|
||||
- 上升点若用另一条路径计算(例如带 `FLG_SIDEREAL` 的宫位),行星与上升之间会有 Δψ 的相对误差,需在 T0 核实。
|
||||
- 我方 2026-10-07 记录过「虚构盘大运与独立计算差约 2 天」,当时被误判为岁差版本差异;其实也是本条(见 `docs/tasks/PROGRESS-upstream-sync6-20261007.md` 的 Claude 验收段,本单关闭时补一句更正)。
|
||||
|
||||
同一写法的其他调用点(T0 逐一核实是否同样不一致):`jyotish_engine.py` 中 `get_ayanamsa(` / `get_ayanamsa_ut(` 共约 10 处(约第 828、841、12350、13006、13371、13583、13620、13714、13805 行附近,按符号定位);`bhava_chalit.py`、`domain_calculation_service.py`、`daily_guidance_service.py`、`shadbala.py`、`western_chart_engine.py`(西洋盘用热带黄道,可能不受影响,要核实)。
|
||||
|
||||
## 3. 决策记录(产品 2026-10-08)
|
||||
|
||||
1. 单独开一单尽快修。
|
||||
2. 按标准恒星黄道算法改:行星与岁差使用同一口径(`FLG_SIDEREAL`,或 `get_ayanamsa_ex_ut` 取与行星同标志的岁差)。PyJHora 只作对照答案,不进运行时。
|
||||
3. 修正后所有日期都会微移;生时校正按版本规则升级并重跑评测。
|
||||
|
||||
## 4. 硬红线
|
||||
|
||||
1. 修正后,三张公开盘(乔布斯、奥巴马、爱因斯坦)与虚构盘的九星恒星黄道经度,与 Swiss Ephemeris `FLG_SIDEREAL` 的差 ≤ 1e-6°;Lahiri、Raman、KP 三种岁差都测。PyJHora 4.8.7 的对照答案离线冻结成 fixture,差值写进进度记录。
|
||||
2. `position_mode` 的 `mean` / `apparent` 两档语义不变;`legacy` 档如果就是这条错误本身,改正并在进度记录写明;不得新增第四档绕开。
|
||||
3. 生时校正:同一输入分数会变 → 升 `rectification-v5-matrix-scoring-12`;记忆化 golden 出新版本、旧版冻结;研究记录按 ERR-110 重新冻结;历史校正记录仍能只读打开(BUG-621);v5 77 例评测逐格报告,任一格下降超过 1 个百分点就停下报产品。
|
||||
4. 引擎数值一变就跑 Python 全量,失败名单 ⊆ 基线(Linux 62 条)。golden 一律用真实引擎重生成;改断言写三栏。
|
||||
5. 运行时不得导入 `jhora`(快速门的导入扫描);验收在无 PyJHora 环境跑。
|
||||
6. 不改 workflow、不提升 main、不动迁移(除非版本字面量需要,届时按 sync5 先例只改守卫一行并真跑 `test:db`)。
|
||||
|
||||
## 5. 任务分解
|
||||
|
||||
| # | 内容 | 验收标准 |
|
||||
| --- | --- | --- |
|
||||
| T0 | 盘点所有「热带位置 − 岁差」的调用点,逐个标「一致 / 不一致 / 不适用(热带西洋)」;核实上升点与宫头走哪条路径 | 进度记录里有调用点表 |
|
||||
| T1 | 修正不一致的调用点 | 红线 1 |
|
||||
| T2 | 下游:报告、对话卡、日运、Bhava Chalit、Shadbala 的 golden 重生成 | 每份 golden 变化列表(哪些星换了星座 / 星宿 / 分盘) |
|
||||
| T3 | 生时校正 | 红线 3 |
|
||||
| T4 | 记录 | BUG-1275 改为 resolved(附验证);`CHANGELOG.md`(用户可感知:大运日期可能前后移动 2–3 天);进度记录;状态板 |
|
||||
|
||||
## 6. 验收口径
|
||||
|
||||
ruff、py_compile、快速门、Python 全量失败名单 ⊆ 基线、`npm test` 失败名单与基线相同、`next build` `/` Static。部署后核对 `/api/health` 的 `deployment.gitCommit`、`/login` 200、未登录 `/api/account` 401。
|
||||
@@ -0,0 +1,45 @@
|
||||
# TASK · 完整数据版第二轮修复:年运章、大运解释深度、口径与译名(2026-10-08)
|
||||
|
||||
- 分支:继续在 `codex/report-full-data-edition-20261007`(远端 `32f19f07`)上做。
|
||||
- 前序:`TASK-report-full-data-edition-20261007`、`TASK-report-full-data-fix-20261008` 仍有效;本单只列 Claude 2026-10-08 验收未通过的项。
|
||||
- 与 `TASK-ephemeris-nutation-20261008` 可以并行;谁后合入 staging,谁 rebase 后重跑 Python 全量与报告定向测试。
|
||||
- BUG 编号:本分支已用 BUG-1272、BUG-1274;BUG-1275 已给章动单。本单从 **1276** 起,开工时再核对。
|
||||
|
||||
## 1. 验收实证(Claude,2026-10-08,Linux,屏蔽 PyJHora,乔布斯盘 Lahiri)
|
||||
|
||||
通过:英文 0 汉字、中英二级标题 35/35;大运、行星、宫主逐宫、Dosha、瑜伽解释都在;「重点」事实正确;生成 12.5 秒;`npm test` 4991 / 失败 24 与基线逐名相同;tsc 0;lint 0 error;快速门通过;`next build --webpack` 后 `/` Static。
|
||||
|
||||
未通过:
|
||||
|
||||
| # | 问题 | 证据 |
|
||||
| --- | --- | --- |
|
||||
| A1 | Python 全量多 1 条失败 | `tests/test_year_lord_blocked_no_fallback.py::test_report_shows_the_blocked_sentence_in_both_editions` 仍要求英文保留「年主暂无法确定」与 `[source text retained:`;英文已清零后该断言失去对象。全量 63 vs 基线 62 |
|
||||
| A2 | 寿命断言(红线 2) | 中文瑜伽表「长寿格局 \| 寿命/健康 \| 强 \| … \| 长寿;健康良好」;英文「Ayur Yoga (Strong Longevity)」。旧阅读版已有,但红线 2 要求全文 |
|
||||
| A3 | 半译词(T5 未达) | 中文:「功能吉星s」「功能凶星s」「功能中性s」「角宫s」「宫条件s」;字段名被术语表改坏:`strict_功能吉星_malefic_v2`、`bphs_ch34_general_with_星座_exceptions_v2` |
|
||||
| A4 | 病句 | 「守护第未列出宫」中文出现 163 次(罗睺 / 计都不守护宫位) |
|
||||
| A5 | 年运章没有补(T2 / T7 未达) | 「年度图盘与 Tajika」本分支 6 节、约 4 千字;上游 29 节、约 11.8 万字。进度记录的覆盖度表按自己的分组计数,没有按 T7 与上游逐节比对;表中「太阳返照:已有」,中文正文无「真实太阳返照」一节 |
|
||||
| A6 | 大运解释太薄 | 结构对齐(本分支 734 小节,上游 743),但「大运解释」章本分支约 8.5 万字、上游约 20.2 万字。上游每段主运有「通常会启动的主题」「可能带来的机会」「条件良好时」「受压时」「细读方式」等段落,本分支大多只剩一句 |
|
||||
|
||||
## 2. 决策记录(产品 2026-10-08)
|
||||
|
||||
1. **大运解释把上游的传统解读段落补回来,改成「可能」口吻**:保留「这段时间可能突出的主题」「条件好时可能」「受压时可能表现为」「怎么细读」等段落;只删红线 2 的内容(疾病诊断、死亡、寿命、必然 / 一定会、名誉一定受损这类断语),改写成不确定的说法。
|
||||
2. 年运章按上游逐节补;我方资料包里没有数据的节写进缺口清单,不补算。
|
||||
3. 其余沿用前序任务书决策(英文必须交付才合入;七种大运另开单;不搬视位置 / 拟合偏移)。
|
||||
|
||||
## 3. 任务分解
|
||||
|
||||
| # | 内容 | 验收标准 |
|
||||
| --- | --- | --- |
|
||||
| F1 | A1:更新断言,写三栏(原值 / 新值 / 原因) | Python 全量失败名单 ⊆ 基线(Linux 62,与 `795b8845` 逐名相同) |
|
||||
| F2 | A2:寿命、长寿、Longevity、Ayur 类格局的「作用」列改为不断言寿命的说法(例如「传统上与体质和恢复力有关,仅作参考」),中英同改 | 新测试对中英全文断言:不出现「长寿」「寿命长」「短寿」「longevity」等断语(格局名本身可保留原名,作用说明不得断言) |
|
||||
| F3 | A3:术语替换只作用于自然语言文本,不进入字段名、标识符、反引号、表格中的机器键;复数 `s` 一律随英文词处理 | 正则测试:中文全文不得出现 `[一-鿿]+s\b`;字段名 / 标识符中不得出现汉字 |
|
||||
| F4 | A4:罗睺 / 计都写「不守护宫位」(英文 "rules no house");其他「未列出」按句意改写 | 中文全文「守护第未列出宫」为 0;新测试锁住 |
|
||||
| F5 | A5:年运章按上游 `23be1807` 同盘导出逐节对照。我方 `annual_tajika_pack` 有数据的节必须出现:真实太阳返照(`solar_return`)、Panchadhikari / 年主依据(`year_lord`)、年度锚点与年度行星资料(`annual_chart`)、Tajika 呈现 / Condition / Forming Pair / 力量 / 格局对照(`tajika_yogas`)、年度北印度图盘(`annual_chart`)、Varshaphala 年度结果解释与年度大运结果解释(上游模板,按决策 1 的口吻)、Mudda 表全量(目前只有约 860 字,上游约 3 万字,逐项核对少在哪) | 进度记录列一张表:上游每个 `###` 年运节 → 「已有 / 缺字段(写缺哪个字段)/ 决策号」。Patyayini(`patyayini_dasha` 为 blocked)、Raman Sahams、Tripataki、月返照、八年总览、生命周期年度返照若我方无数据,写进缺字段,不补算 |
|
||||
| F6 | A6:按决策 1 补回大运解释段落 | 乔布斯盘「大运解释」章 ≥ 上游的 80%(按字符);红线 2 全部测试仍过 |
|
||||
| F7 | 覆盖度复算 | 用同盘对上游逐个 `##` / `###` 标题比对(大运标题里的日期不同,按行星名配对)。除决策 4 的七种大运外,「缺字段」不超过 10 节;列出全部清单 |
|
||||
| F8 | 测试与门禁(**Linux 或门禁同等环境**,屏蔽 PyJHora 跑一次报告导出) | 快速门、Python 全量 ⊆ 基线、`npm test` 失败名单与基线相同、tsc 0、lint 0 error、`next build` `/` Static |
|
||||
| F9 | 记录 | BUG 新编号(1276 起)、`CHANGELOG.md`、进度记录、状态板、`docs/testing/` 清单 |
|
||||
|
||||
## 4. 让步顺序
|
||||
|
||||
F5 中的 Varshaphala / 年度大运结果解释 → F6 的 80% 降到 70%(需写明原因)。F1–F4、F7、F8 不让步。
|
||||
Reference in New Issue
Block a user