Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HwMNZEzdzmrbPhuRNmZe3C
7.7 KiB
7.7 KiB
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)
- 采纳「最近分界开场」:开场告诉用户,记录时间离最近的分盘换段点有多近(以分钟计)、两侧哪几层不同(用人话:父母、工作、住处、婚恋……)。
- 记录时间离分界近时,首轮只出能区分这条分界两侧的题,问完再按原流程。「近」的阈值由执行方用 77 例回放定,写进进度记录。
- 只改呈现与选题顺序,不改打分。
decision_policy、闸门、4 件 3 域(BUG-1193)、采用门、交付卡档位全部不动。 - 对外不说秒级(守
docs/research/rectification_nadi_seconds_2026_10_05.md§8 口径);不出现「记录时间是错的 / 不准」(守 BUG-691「记录优先、分歧并列」)。
4. 硬红线
- 不改打分、
scripts/rectification/decision_policy.py、闸门常量、4 件 3 域、算法身份;同输入同分。 - v5 77 例持久回放(
docs/research/varga_resolution_persisted_onoff_after_fix_2026_10_01.json同法):±10 / ±30 真值段保留不低于 76 / 76;D9、D10 头段命中不低于修后基线;任一格下降即停,报产品。 - 用户可见文案不得出现秒、「记录时间错了 / 不准」、「已确认」;距离以整分钟说,不足 1 分钟说「不到 1 分钟」。
- 申报方式为
period_only时没有可比的记录分钟,不出「离分界多近」这一句,走原流程。 - 守 AGENTS §6(Home() 状态数、API server 方法数不增长);新文案对照 VOICE.md;改 UI 同提交更新
frontend/DESIGN.md。 - 测试总数不低于基线;改既有断言写三栏。
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. 开工前置命令
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,写修复、验证与回放数字。