Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HwMNZEzdzmrbPhuRNmZe3C
8.2 KiB
8.2 KiB
TASK · 上游同步第七轮:sync6 之后上游漏搬的 4 处小修 + 星历路径核查(2026-10-14)
- 日期:2026-10-14
- 来源:产品 10-14 要求复查上游 Skill 仓(
/workspace/yinduzhanxing,GitHub732642856/yinduzhanxing)。远端 main 仍停在 10-080337b77f,无新提交;按补丁内容逐条对照 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/staging77057a81。 - 上游参照:
origin/main0337b77f(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 授权)
- 移植 T1–T4;T5 只核查、出结论,不改代码(有问题另立单)。
- T1 用户可见措辞改中文证据档位(报告是中文为主;英文版用英文档位),禁止任何「婚姻稳定 / 离婚 / 再婚 / 几段婚姻 / 建议婚前咨询」类断语;
婚姻质量 X/100改为如实表达 0–1 指数(或去掉分母),不得乘 100 冒充百分制。沿用 sync4 T1(marriage_counting 删「再婚 / 几段关系」断语)的口径。 - 不搬:
fee84828Sade Sati(我方无该表);59f61d3c等强制显式岁差(产品 10-03 已拒);ca20ae14健康改 D6/D8(占星师裁定只看 D30,甲8 试算变差);10-02 校正门控 / 映射(试算未过门);书库语料(来源版权不清);上游AGENTS.md§9 书库流程。
5. 硬红线
- 不改生时校正打分:T1–T4 均不在打分路径(KP 在
OBSERVATION_ONLY_LAYERS)。若任何改动触及scripts/research/sealed_holdout_rerun.py::PRODUCTION_FILES或其他冻结身份文件,停下回报(ERR-110),不得自行重新冻结。test_rectification_validation_integrity_gate等冻结测试必须保持绿。 scripts/jyotish_api_server.py只允许 T1 那一行与 T4 两处常量的 bugfix 级改动;tests/test_api_server_growth_contract.py必须过。- golden 由真实引擎生成,不手造;改任何既有断言写「原值 / 新值 / 原因」三栏。
- 本命 Bhava Chalit 表的判宫结果必须逐字节不变(默认
sandhi);只有 KP 层改变。 - 不改数据库、不改 workflow、不提升 main、不推 staging;只推
codex/upstream-sync7-20261014。 - 不写真实用户资料;示例只用公开名人盘(如乔布斯 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 为基,进度记录写明。