Product chose A on #159: change the frozen varga.py for the five Sarpa drekkanas and the 22nd drekkana, and refreeze only on identical 20/900 rectification scores. Narayana AD strength (B2) is deferred: our code has no strength-profile family for it to propagate. Co-Authored-By: Claude (agent loop) <noreply@anthropic.com>
5.2 KiB
5.2 KiB
TASK · 上游同步第九轮乙批:Sarpa Drekkana 与第 22 号 Drekkana(2026-10-28)
- 日期:2026-10-28
- 来源:issue #159(#141 乙批)。产品 10-28 选 A:改冻结文件,生时校正 20 条 + 900 条分数逐条相同才重新冻结。
- 执行方:Grok(Windows + Docker),分支
codex/upstream-sync9b-20261028,只推这个分支(本任务书就是该分支第一个提交) - 验收:Claude(Linux)
- BUG 编号:开工时按
docs/BUG_HISTORY.md全文件取最大号 +1(写作时 staging 最大号 BUG-1492;另一会话仍在占号,开工当时再核对)。本单预计 2 个号。
1. 基线
- 基线 commit:
origin/staging12eb7018(#141 甲批与 #137 都已在其中)。 - 上游:
732642856/yinduzhanxingmain 的50847e57(10-16)。按语义移植,不整文件覆盖。
2. 事故实证(上游测试放到 12eb7018 上跑)
| 项 | 上游测试结果 | 我方现状 | 来源 |
|---|---|---|---|
| B1a Sarpa Drekkana | test_varga_bphs.py 3 败 14 过;test_sarpa_drekkana_precision.py 4 败 2 过 |
scripts/varga.py::SARPA_DREKKANA_SIGNS 只有 Cancer-2、Scorpio-1、Pisces-3 三段;calc_sarpa_drekkana 先把度数四舍五入到 4 位再算第几个 Drekkana,边界附近会划错 |
Raman《Hindu Predictive Astrology》Drekkana 章:五段(Cancer-2、Cancer-3、Scorpio-1、Scorpio-2、Pisces-3) |
| B1b 第 22 号 Drekkana | 同上 | scripts/varga.py::calc_22nd_drekkana 取 D3 星座 +21 |
《Crux of Vedic Astrology》p.329:是 D3 的第 8 宫,即 +7。数 21 个十度分段 ≠ 在 D3 里移 21 个星座 |
下游:jyotish_engine.py 完整解读的特殊点(calc_sarpa_drekkana)→ 前端报告事实表 report-fact-tables.ts 的 Sarpa Drekkana 行;第 22 号 Drekkana 进完整解读的敏感点。
3. 根因
前八轮同步与 #141 甲批都没有取上游 main 10-16 的这一提交(#141 甲批因冻结文件把它留到乙批)。
4. 决策记录
- 产品 10-28 在 #159 选 A:允许改冻结文件
scripts/varga.py;改完跑生时校正 20 条 + 900 条,逐条相同才重新冻结为upstream_sync9b_2026_10_28,沿用第八轮79f6ac52的做法。有任何一条不同:停,不重新冻结,回报「需拍板」。 - B2(Narayana 小运强度口径)本单不做。 规划时核实:上游
6859b263只是把已选的strength_profile往下传,但这个强度口径家族(rath_*、pvr_*等)来自上游 09-27 的5b57949c,我方从未移植;默认口径下结果不变。是否移植整套口径另由产品决定(已在 #159 说明)。 - 用户可见变化已知并接受:部分盘 Sarpa Drekkana 标记会多出来(Cancer 第 3、Scorpio 第 2 段);第 22 号 Drekkana 的星座会变。
5. 硬红线
- 只改
scripts/varga.py里SARPA_DREKKANA_SIGNS、calc_sarpa_drekkana、calc_22nd_drekkana三处;varga.py其他函数逐字节不变(PROGRESS 贴git diff --stat与函数级 diff 说明)。 - 生时校正 20 条(
scripts/research/sealed_holdout_rerun.py)+ 900 条(scripts/research/reported_offset_sweep.py --json):先不带--freeze跑出结果、与docs/research/*upstream_sync8_2026_10_18.json逐条比;全部相同后才按脚本自带的--freeze写新冻结记录(不覆盖旧记录)。 - 不改其他冻结文件;不改
.gitea/workflows/**、数据库、前端。 - 上游断言数值不得放宽;接口名不同只改调用方式。
- 公开仓库:测试只用公开或虚构出生资料。
6. 任务分解
| 任务 | 内容 | 验收标准 |
|---|---|---|
| T1 | Sarpa 五段 + 不经四舍五入判段(50847e57) |
上游两个测试文件中 Sarpa 相关全过;definition 字段改为五段 |
| T2 | 第 22 号 Drekkana +7(50847e57) |
上游相关断言过;完整解读里该敏感点的字段名不变 |
| T3 | 校正回放与重新冻结(红线 2) | 20/20、900/900 相同;新 .freeze.json 两份 + 回放 JSON 两份;tests/test_sealed_holdout_contract_freshness.py 全过 |
| T4 | 上游配套文档 docs/research/sensitive_point_drekkana_count_review_2026_10_14.md 原路径放入;BUG_HISTORY 2 条、CHANGELOG、PROGRESS、docs/tasks/README.md 状态板 |
— |
7. 让步顺序
T1、T3、T4 必做;T2 若与我方敏感点结构冲突,回报原因、不硬改。
8. 验收命令
| 检查 | Grok 自跑 | Claude 验收 |
|---|---|---|
上游两个测试文件(放 tests/test_upstream_sync9b_*.py) |
必跑 | 复验 |
tests/test_varga*.py、tests/test_cli_smoke.py -k "sarpa or drekkana or special"、tests/test_sealed_holdout_contract_freshness.py |
必跑 | 复验 |
| 校正 20 + 900 回放 | 必跑 | 复验 |
前端 report-fact-tables.test.ts |
不跑(未改前端) | 跑 |
| Python 快速门 | 不跑 | 以 Claude 为准 |
9. 开工前置命令
git fetch origin
git worktree add .worktrees/upstream-sync9b-20261028 codex/upstream-sync9b-20261028
python scripts/pre_work_check.py --remote-timeout 8 --command-timeout 45
grep -o 'BUG-[0-9]\+' docs/BUG_HISTORY.md | sort -t- -k2 -n | tail -1
git fetch upstream main && git show 50847e57
10. 真机
docs/testing/upstream-sync9b-20261028.md。