Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HwMNZEzdzmrbPhuRNmZe3C
96 lines
7.7 KiB
Markdown
96 lines
7.7 KiB
Markdown
# TASK · 生时校正开场:先说记录时间离最近分界多近,首轮只问这条分界两侧的不同(BUG-1307,2026-10-12)
|
||
|
||
- 基线:`origin/staging` @ `fddddaab`(已部署代码 `de4cfeb8`)。
|
||
- 分支 / worktree:`codex/rectification-nearest-boundary-opening-20261012` / `.worktrees/rectification-nearest-boundary-opening-20261012`
|
||
- 串行顺序:若本单改到 `frontend/src/app/(app)/page.tsx`、`frontend/src/hooks/use-rectification-surface.ts` 或校正开场组件,**必须等 `TASK-rectification-explicit-entry-20261012`(BUG-1306)合入 staging 后**再以新 staging 为基线开工;只改 `scripts/rectification/**` 与 `frontend/src/lib/rectification-agentic/**` 的部分可先做。与 `TASK-rectification-d12-parent-probes-research-20261012` 无文件交叉,可并行。
|
||
- BUG 编号:本单为 BUG-1307(已建记录,状态 open)。另发现的问题从开工时 `docs/BUG_HISTORY.md` 最大号顺延。
|
||
|
||
## 1. 事故实证
|
||
|
||
产品 10-12 拿上游 Skill(占星师本机运行)的一次校正和我们比较,认为上游「步骤短很多,还能出结果」。样例是一例私人资料,本单只记相对时刻。
|
||
|
||
上游的做法:以记录时间为锚扫描前后 30 分钟,找到最近的分盘换段点,在记录时间前约 17 秒。然后列出两侧不同的层(父母盘、事业盘、居住盘,本命上升星座不变),只问这几层的区别,五道是非题。
|
||
|
||
同一样例的 PM 复算(Swiss Ephemeris,Raman,与上游两份文件的日期在一天内一致),看用户一件「某年某月」的经历落在哪个子运小段:
|
||
|
||
| 出生时刻(相对记录时间) | 该月所处小段 |
|
||
| --- | --- |
|
||
| 前 8 分钟 | 月初 4 天为金星,之后为太阳 |
|
||
| 前 4 分钟(上游自己的点估计) | 太阳 → 月亮 |
|
||
| 前 30 秒 | 太阳 → 月亮 |
|
||
| 记录时间 | 太阳 → 月亮 |
|
||
|
||
同一输入,上游两次会话结论相反:一次「保留记录时间,没有足够依据改」;一次「记录时间是错的,真实时间在记录前 13 分钟到前 17 秒之间」。后一份的事件论据与它自己的点估计矛盾(见上表),实际只靠一条父母事实的事后解读。
|
||
|
||
**结论**:上游值得借的是呈现与选题顺序:用户一听就懂「为什么要答这几道题」,题也少。不借的是秒级口径和「记录时间是错的」。
|
||
|
||
我方现状(`fddddaab`,行号按符号定位,执行方开工先复核):
|
||
|
||
| 位置 | 现状 |
|
||
| --- | --- |
|
||
| `scripts/rectification/refinement_packet.py` `window_scan` | 逐分钟扫描 11 层(D1/D9/D10/D4/D5/D7/D12/D24/D2/D11/D30)及展示层,输出 `transitions`(层、时刻、前后星座)。**不以记录时间为锚,不算记录时间离最近换段点多远** |
|
||
| 同文件 `nakshatra_boundary` | 只看代表分钟的上升离星宿交界多近,出性格类二选一,不是分盘换段 |
|
||
| 同文件 `precision_stage` | 按 D1→D9→D10→D4→D5/D24 顺序给「还差什么」,与记录时间无关 |
|
||
| `frontend/src/lib/rectification-agentic/core/segment-summary.ts` | 段汇总只对 D1/D9/D10(`TARGET_CHARTS`),按领域取盘(`targetChartsForDomain`) |
|
||
| `frontend/src/lib/rectification-agentic/core/segment-probe-order.ts` | 按段信息增益排题,窗口 ≤61 分钟默认开(BUG-1143/1144);只排序,不限定题目范围 |
|
||
| `frontend/src/lib/rectification-agentic/birth-time-provenance.ts` `reportedTimeOffsetCopy` | 用户能看到的「记录时间」只出现在交付时,说的是记录时间与**交付区间**差几分钟,不是与分界的距离 |
|
||
|
||
用户在开场看不到「记录时间离分界多近、两侧哪里不同」。
|
||
|
||
## 2. 根因
|
||
|
||
扫描数据已经有了,但从没以记录时间为锚组织过:开场不讲,选题面向整个窗口,所以用户感觉步骤多、目的不明。
|
||
|
||
## 3. 决策记录(产品 2026-10-12)
|
||
|
||
1. 采纳「最近分界开场」:开场告诉用户,记录时间离最近的分盘换段点有多近(以分钟计)、两侧哪几层不同(用人话:父母、工作、住处、婚恋……)。
|
||
2. 记录时间离分界近时,首轮只出能区分这条分界两侧的题,问完再按原流程。「近」的阈值由执行方用 77 例回放定,写进进度记录。
|
||
3. **只改呈现与选题顺序,不改打分。** `decision_policy`、闸门、4 件 3 域(BUG-1193)、采用门、交付卡档位全部不动。
|
||
4. 对外不说秒级(守 `docs/research/rectification_nadi_seconds_2026_10_05.md` §8 口径);不出现「记录时间是错的 / 不准」(守 BUG-691「记录优先、分歧并列」)。
|
||
|
||
## 4. 硬红线
|
||
|
||
1. 不改打分、`scripts/rectification/decision_policy.py`、闸门常量、4 件 3 域、算法身份;同输入同分。
|
||
2. v5 77 例持久回放(`docs/research/varga_resolution_persisted_onoff_after_fix_2026_10_01.json` 同法):±10 / ±30 真值段保留不低于 76 / 76;D9、D10 头段命中不低于修后基线;任一格下降即停,报产品。
|
||
3. 用户可见文案不得出现秒、「记录时间错了 / 不准」、「已确认」;距离以整分钟说,不足 1 分钟说「不到 1 分钟」。
|
||
4. 申报方式为 `period_only` 时没有可比的记录分钟,不出「离分界多近」这一句,走原流程。
|
||
5. 守 AGENTS §6(Home() 状态数、API server 方法数不增长);新文案对照 VOICE.md;改 UI 同提交更新 `frontend/DESIGN.md`。
|
||
6. 测试总数不低于基线;改既有断言写三栏。
|
||
|
||
## 5. 任务分解
|
||
|
||
### T1 以记录时间为锚的分界计算(Python,薄注册)
|
||
|
||
- 在 `scripts/rectification/` 新模块里,基于 `window_scan` 的 `transitions`,给出:记录时间前后最近的换段点(分钟)、该点两侧不同的层清单、各层前后星座。只读已有扫描,不改 `window_scan` 的输出语义。
|
||
- 验收:Python 定向测试用公开名人 golden 盘(AA 级);记录时间正好在段内、紧贴换段、窗口内无换段三种情况各一条;快速门全量。
|
||
|
||
### T2 开场一句话
|
||
|
||
- 校正开场(BUG-1257 开场切片所在处,执行方先定位)加一句:记录时间离最近换段点多近、两侧哪几件事不同,并说明接下来先问这几件。窗口内无换段时说「你填的时间附近这些盘都不换,先从经历开始」。
|
||
- 验收:单测覆盖三种情况与 `period_only`;文案逐条对照 VOICE.md,不含红线 3 的词。
|
||
|
||
### T3 首轮选题限定在该分界
|
||
|
||
- 记录时间离分界在阈值内时,首轮候选题只取能区分两侧的层对应的题(复用现有题库与 `segmentInformationGain`,不新增题型);问完回到原排序。
|
||
- 阈值用 77 例回放选,候选值至少 3 档(例如 2 / 5 / 10 分钟),逐档报问题数、真值段保留、头段命中。
|
||
- 验收:回放表进进度记录;红线 2 全过才默认开启,否则留开关默认关并报产品。
|
||
|
||
### T4 真机清单
|
||
|
||
- `docs/testing/rectification-nearest-boundary-opening-20261012.md`:用公开名人资料或虚构资料,记录时间紧贴分界与远离分界各走一遍。
|
||
|
||
## 6. 让步顺序
|
||
|
||
T3 回放不过门 → 只上 T1 + T2(呈现),T3 留开关默认关。T2 不可让。
|
||
|
||
## 7. 开工前置命令
|
||
|
||
```bash
|
||
git fetch origin --prune
|
||
git worktree add -b codex/rectification-nearest-boundary-opening-20261012 .worktrees/rectification-nearest-boundary-opening-20261012 origin/staging
|
||
grep -oE "^## BUG-[0-9]+" docs/BUG_HISTORY.md | sort -t- -k2 -n | tail -1
|
||
export PYTHONHASHSEED=0 # 回放命令见 docs/research/rectification_varga_resolution_2026_09_30.md 附录
|
||
```
|
||
|
||
门禁:Python 快速门全量、前端 tsc / lint / npm test(失败名单与基线逐条相同)/ build `/` Static / gzip ±2%。完成后 BUG-1307 改 fixed-pending-verify,写修复、验证与回放数字。
|