docs(tasks): upstream sync round 7 brief (BUG-1318 onward)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HwMNZEzdzmrbPhuRNmZe3C
This commit is contained in:
Jesse_Chen
2026-10-14 00:30:38 +08:00
co-authored by Claude Opus 5.5
parent 77057a819b
commit 99ef1bbd12
2 changed files with 81 additions and 0 deletions
+1
View File
@@ -331,6 +331,7 @@
| `TASK-rectification-probe-supply-research-20260913.md` | — | 研究单:六题后引擎在剩余候选上再出带年月题的四种放宽规则,20 例公开 AA 数据离线量收益,有收益才立实现单 | 已合入(离线测量,不改线上) | `b063c668` |
| `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-upstream-sync7-20261014.md` | — | **上游同步第七轮(BUG-1318 起)**:婚恋评级断语改证据档位、DK「婚姻质量 X/100」改对;KP 宫头到宫头判宫;瑜伽宫主排序去重;api_server 大运年长 365.25;星历路径只核查。不动校正打分。Grok 执行(agent 循环) | 待执行 | — |
| `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` | `PROGRESS-ephemeris-nutation-20261008.md` | **恒星黄道少扣章动(BUG-1275)**:行星 = 含章动热带视位置 − 平岁差,全体偏 Δψ(≤17″),大运日期差 2–3 天;改标准算法、PyJHora 冻结对照、scoring-12、v5 重跑 | 已验收(已部署 staging `db0134f9`,BUG-1275) | `codex/ephemeris-nutation-20261008`(未推送,未部署) |
| `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`) | — |
@@ -0,0 +1,80 @@
# TASK · 上游同步第七轮:sync6 之后上游漏搬的 4 处小修 + 星历路径核查(2026-10-14)
- 日期:2026-10-14
- 来源:产品 10-14 要求复查上游 Skill 仓(`/workspace/yinduzhanxing`,GitHub `732642856/yinduzhanxing`)。远端 main 仍停在 10-08 `0337b77f`,无新提交;按补丁内容逐条对照 10-02 以来 142 个提交:已有 38、不适用 101、**缺 3 个提交共 4 处**。产品 10-14 同意出本单,交 agent 循环由 Grok 执行。
- 执行方:**Grok(Windows)**,分支 `codex/upstream-sync7-20261014`,只推这个分支
- 验收:Claude(Linux)
- BUG 编号:**BUG-1318 起**(开工时核对 `docs/BUG_HISTORY.md` 最大号;写作时最大号为 BUG-1317)。T1–T4 各一个号,T5 有结论再取号。
## 1. 基线
- 基线 commit:`origin/staging` `77057a81`。
- 上游参照:`origin/main` `0337b77f`(10-08)。**上游 10-05 做过一次隐私改写,旧 SHA(`c593354f`、`23be1807`、`03bea6ed` 等)已不在上游 main**;本单只引用新 SHA。上游代码要点已抄在 §2,执行方不需要能访问上游仓库。
- 只按下表逐项移植,不整文件覆盖上游文件。
## 2. 事故实证(`77057a81`,行号按符号定位)
| 项 | 上游提交 | 我方现状 |
| --- | --- | --- |
| T1 婚恋断语 | `f891a2c1` | `scripts/marriage_counting.py` 综合评级仍写「高(关系质量好,伴侣支持强,婚姻稳定)」…「低(关系质量有重大挑战,强烈建议婚前咨询)」;该结果经 `scripts/jyotish_engine.py` 放进导出包 `detail_blocks.marriage_counting`(模型可读)。另 `scripts/jyotish_api_server.py` DK 证据行写 `婚姻质量 {marriage_quality_score}/100`,而该分数是 0–1 |
| T2 KP 判宫 | `0337b77f`(夹在隐私提交里) | `scripts/bhava_chalit.py` 只有 Parashari 中点判宫 `_planet_bhava`;`jyotish_engine.py` 的 `cmd_kp` 把同一结果当 KP 落宫用;`scripts/kp_system.py::calc_kp_analysis` 收了宫头却不声明判宫口径 |
| T3 瑜伽去重排序 | `0337b77f` | `scripts/yoga_engine.py` 内 `_kendra_lords_list` / `_trikona_lords_list` 仍是 `list(set([...]))`(`jyotish_engine.py` 里的 `kl` / `tl` 已是 sorted,不用改) |
| T4 大运年长 | `4d543209` | `scripts/jyotish_api_server.py` 两处 `365.25636`(大运兜底时间线 `end_date`、`years_into_md`),同一时间线 `scripts/dasha_analyzer.py` 用 `365.25` |
| T5 星历路径(核查) | `e1909724` 揭示的同类问题 | `jyotish_engine.py::compute_chart_data` 与 transit 入口都 `swe.set_ephe_path('')`;上游发现路径是进程全局、未设路径的调用会悄悄退回 Moshier、结果随调用顺序变。我方是否同样,未查 |
上游代码要点(照此语义实现,命名可按我方风格):
- **T1**:五档评级改为证据档位 `supportive_evidence_stronger` / `supportive_evidence_mixed_positive` / `mixed_evidence` / `pressure_evidence_mixed` / `pressure_evidence_stronger`,并加 `claim_boundary`:「D9 结构证据指数,不预测婚姻次数、稳定、离婚、伴侣好坏,也不提示需要婚前咨询」。
- **T2**:`BhavaChalit` 新增 `_planet_bhava_from_cusps(planet_lon, cusps)`:宫 i 的范围是 `cusp[i] → cusp[(i+1)%12]`。计算入口加参数 `house_assignment`,取值只允许 `'sandhi'`(默认,本命 Bhava Chalit 表)或 `'cusp_to_cusp'`(KP),其他值抛 `ValueError`,结果里带 `house_assignment`。`cmd_kp` 显式用 `cusp_to_cusp`;`calc_kp_analysis` 新增 `house_occupancy_basis`,传了宫头却不声明就抛错,未传宫头时记 `whole_sign_proxy`;KP 报告表加一行「House occupancy basis」。
- **T3**:`sorted(set(...))`,注释说明 set 顺序随进程哈希变化。
## 3. 根因
我方 sync6 参照的是 10-05 的五个计算修正;上游随后把 T2/T3 夹在 10-08 的隐私提交里,T1/T4 在 10-02~10-03 的提交里,当时按标题筛选时漏掉。
## 4. 决策记录(产品 2026-10-14 授权)
1. 移植 T1–T4;T5 只核查、出结论,**不改代码**(有问题另立单)。
2. T1 用户可见措辞改中文证据档位(报告是中文为主;英文版用英文档位),**禁止**任何「婚姻稳定 / 离婚 / 再婚 / 几段婚姻 / 建议婚前咨询」类断语;`婚姻质量 X/100` 改为如实表达 0–1 指数(或去掉分母),不得乘 100 冒充百分制。沿用 sync4 T1(marriage_counting 删「再婚 / 几段关系」断语)的口径。
3. 不搬:`fee84828` Sade Sati(我方无该表);`59f61d3c` 等强制显式岁差(产品 10-03 已拒);`ca20ae14` 健康改 D6/D8(占星师裁定只看 D30,甲8 试算变差);10-02 校正门控 / 映射(试算未过门);书库语料(来源版权不清);上游 `AGENTS.md` §9 书库流程。
## 5. 硬红线
1. **不改生时校正打分**:T1–T4 均不在打分路径(KP 在 `OBSERVATION_ONLY_LAYERS`)。若任何改动触及 `scripts/research/sealed_holdout_rerun.py::PRODUCTION_FILES` 或其他冻结身份文件,停下回报(ERR-110),不得自行重新冻结。`test_rectification_validation_integrity_gate` 等冻结测试必须保持绿。
2. `scripts/jyotish_api_server.py` 只允许 T1 那一行与 T4 两处常量的 bugfix 级改动;`tests/test_api_server_growth_contract.py` 必须过。
3. golden 由真实引擎生成,不手造;改任何既有断言写「原值 / 新值 / 原因」三栏。
4. 本命 Bhava Chalit 表的判宫结果必须逐字节不变(默认 `sandhi`);只有 KP 层改变。
5. 不改数据库、不改 workflow、不提升 main、不推 staging;只推 `codex/upstream-sync7-20261014`。
6. 不写真实用户资料;示例只用公开名人盘(如乔布斯 AA)或虚构盘。
## 6. 任务分解
| 项 | 内容 | 验收 |
| --- | --- | --- |
| T1 | 婚恋评级改证据档位 + `claim_boundary`;DK 行「婚姻质量 X/100」改对;检查报告 / 导出包 / 中英文渲染里引用评级字符串的地方一并改 | 新测试:五档均不含断语词(稳定、离婚、再婚、婚前咨询、几段),`claim_boundary` 存在;DK 行不再出现 `/100`;中英文报告渲染各一例快照(公开盘) |
| T2 | KP 宫头到宫头判宫,`house_assignment` / `house_occupancy_basis` 显式声明 | 新测试:构造宫头使行星落在「中点判宫」与「宫头判宫」不同宫,两种口径结果不同;默认 sandhi 与改前逐字节相同;`calc_kp_analysis` 传宫头不声明即抛错;KP 报告出现判宫口径行 |
| T3 | 两处 `sorted(set(...))` | 新测试:用不同 `PYTHONHASHSEED` 起两个子进程算同一张盘,瑜伽参与者顺序一致 |
| T4 | 两处 365.25636 → 365.25 | 新测试:兜底时间线与 `dasha_analyzer` 时间线同一大运起止一致(误差 0 天) |
| T5 | 核查我方 Swiss Ephemeris 路径:`set_ephe_path('')` 实际落到哪套星历(看 `calc_ut` 返回 flag 是否含 `SEFLG_MOSEPH`)、生产镜像里是否有 `.se1` 星历文件、是否存在进程内不同调用路径用不同星历 | 进度记录写结论与证据;有问题写成新 BUG(`investigating`)并给建议,不改代码 |
每项一个提交,提交说明写上游提交号与 BUG 号。
## 7. 让步顺序
T1 不可让(违反「不断言婚姻」口径)。T3、T4 小,不可让。T2 可让(若改动面超出预期,先交 T1/T3/T4,T2 写清卡点)。T5 可让为环境缺口(Windows 无法确认生产镜像时如实写)。
## 8. 验收门(执行方自测 + Claude 复验)
- Python:`ruff`、`py_compile`、定向测试、**快速门全量** `scripts/run_quality_gate.py --profile quick`(`failures []` 或与基线同名);冻结身份测试绿;隐私标记测试。
- 本单只改 Python 与报告渲染;若碰到前端,加跑 tsc / lint / `npm test`(失败名单与基线逐名相同)/ build。
- `docs/BUG_HISTORY.md`(BUG-1318 起)、`CHANGELOG.md`、`docs/tasks/PROGRESS-upstream-sync7-20261014.md`、`docs/tasks/README.md` 状态。
## 9. 开工前置
```
git fetch origin --prune
git status -sb
git worktree add -b codex/upstream-sync7-20261014 .worktrees/upstream-sync7-20261014 origin/staging
```
开工时核对 `origin/staging` 是否仍为 `77057a81`;若已前进,以最新 staging 为基,进度记录写明。