diff --git a/docs/tasks/README.md b/docs/tasks/README.md index 37932028..b3d9e923 100644 --- a/docs/tasks/README.md +++ b/docs/tasks/README.md @@ -544,3 +544,4 @@ | — | `PROGRESS-session-shell-116-20261028.md` | **#116 侧栏会话菜单搬进外壳**:每个页面都能「…」和拖动(直接执行,BUG-1467) | 已推 staging | `codex/session-shell-116-20261027` | | `TASK-home-crash-saved-people-20261027.md` | `PROGRESS-home-crash-saved-people-20261027.md` | **#115 首页崩溃**:存过别人的账户一进首页就「页面出错了」——人物列表的资料缺两个字段,启程引导一读就报错;入口补齐默认值(BUG-1464) | 待验收 | `codex/home-crash-saved-people-20261027` | | `TASK-upstream-sync9-20261028.md` | `PROGRESS-upstream-sync9-20261028.md` | **第 1 次打回(快速门 1 败:Darakaraka 旧测试锁错值,见 `TASK-upstream-sync9-fix-20261028.md`)** · **#141 上游同步第九轮**:甲批九项已做完并推 `codex/upstream-sync9-20261028`;校正 20 条和 900 条与上一份回放逐条相同;乙批仍等 #137 | 待验收 | `codex/upstream-sync9-20261028` | +| `TASK-upstream-sync9b-20261028.md` | — | **#159 上游同步第九轮乙批(产品选 A)**:Sarpa Drekkana 补成五段、第 22 号 Drekkana 改为 D3 第 8 宫;改冻结文件 `varga.py`,校正 20 + 900 分数逐条相同才重新冻结。Narayana 小运强度口径(B2)不做,另问产品 | 待领取 | `codex/upstream-sync9b-20261028` | diff --git a/docs/tasks/TASK-upstream-sync9b-20261028.md b/docs/tasks/TASK-upstream-sync9b-20261028.md new file mode 100644 index 00000000..dca6277e --- /dev/null +++ b/docs/tasks/TASK-upstream-sync9b-20261028.md @@ -0,0 +1,76 @@ +# 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/staging` `12eb7018`(#141 甲批与 #137 都已在其中)。 +- 上游:`732642856/yinduzhanxing` main 的 `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. 决策记录 + +1. **产品 10-28 在 #159 选 A**:允许改冻结文件 `scripts/varga.py`;改完跑生时校正 20 条 + 900 条,**逐条相同**才重新冻结为 `upstream_sync9b_2026_10_28`,沿用第八轮 `79f6ac52` 的做法。有任何一条不同:停,不重新冻结,回报「需拍板」。 +2. **B2(Narayana 小运强度口径)本单不做。** 规划时核实:上游 `6859b263` 只是把已选的 `strength_profile` 往下传,但这个强度口径家族(`rath_*`、`pvr_*` 等)来自上游 09-27 的 `5b57949c`,我方从未移植;默认口径下结果不变。是否移植整套口径另由产品决定(已在 #159 说明)。 +3. 用户可见变化已知并接受:部分盘 Sarpa Drekkana 标记会多出来(Cancer 第 3、Scorpio 第 2 段);第 22 号 Drekkana 的星座会变。 + +## 5. 硬红线 + +1. 只改 `scripts/varga.py` 里 `SARPA_DREKKANA_SIGNS`、`calc_sarpa_drekkana`、`calc_22nd_drekkana` 三处;`varga.py` 其他函数逐字节不变(PROGRESS 贴 `git diff --stat` 与函数级 diff 说明)。 +2. 生时校正 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` 写新冻结记录(不覆盖旧记录)。 +3. 不改其他冻结文件;不改 `.gitea/workflows/**`、数据库、前端。 +4. 上游断言数值不得放宽;接口名不同只改调用方式。 +5. 公开仓库:测试只用公开或虚构出生资料。 + +## 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`。 diff --git a/docs/testing/upstream-sync9b-20261028.md b/docs/testing/upstream-sync9b-20261028.md new file mode 100644 index 00000000..d7fab0bb --- /dev/null +++ b/docs/testing/upstream-sync9b-20261028.md @@ -0,0 +1,9 @@ +# 真机走查 · 上游同步第九轮乙批(issue #159) + +用虚构或公开出生资料,在 staging 上看: + +| # | 操作 | 应该看到 | +| --- | --- | --- | +| 1 | 生成一份完整报告,翻到特殊点 / 敏感点表 | Sarpa Drekkana 行正常显示;没有空白或「undefined」 | +| 2 | 同一张盘看第 22 号 Drekkana | 有星座,不报错 | +| 3 | 发起一次生时校正,走到出结果 | 和以前一样能走完(校正打分没有变) |