Replace the minute-row delivery card with up to three compare columns so users can pick the time that fits, and apply the adult-year floor on inspect fallbacks. Co-authored-by: Cursor <cursoragent@cursor.com>
4.5 KiB
4.5 KiB
PROGRESS · 生时校正交付卡三列对照(2026-09-08)
工作树:.worktrees/rectification-candidate-compare-columns-20260908
分支:codex/rectification-candidate-compare-columns-20260908
任务书:docs/tasks/TASK-rectification-candidate-compare-columns-20260908.md
基线:origin/staging @ a9125e3d(任务书已在该提交)
本单状态:待验收。代码在执行分支,尚未 commit / push。
未改:采用 RPC、确认门、各道门槛、minute_step、_relative_support、page.tsx。Skill 从 10.0.17 升到 10.0.18(只改 references/candidate-comparison.md 的卡片描述)。采集题「没有」按钮未做,等产品答复。
主仓仍停在 codex/minute-rectification-p0 且有脏文件,未 checkout / reset。本单在独立 worktree 基于 origin/staging 做。
做了什么
- 决策 1 区间卡改成一行至多三列。按
inference_state.candidates后验概率排序,精确 HH:MM 去重,最多三列。超过三列末尾写「还有 N 个分钟可能性更低,已并入范围」。不预标「排盘用」。 - 决策 2 每列五段全由服务端算好:时间 + 相对可能性;D9/D10 类型表全文 + 月宿边界 traits;经历强/中/弱计数与最不吻合一件(年-月+领域,不写摘要);往后 12 个月 1–2 窗或「未来一年没有明显的窗口」;「更像这个」走现有 accept RPC,选择不计分。
- 决策 3 卡底边界句与收起的「查看验证报告」保留。交付正文仍三句,不再写代表分钟「排盘用」。
- 决策 4 compare 同一次返回
event_dasha_ledger_by_time与prospective_windows_by_time(HH:MM 键,≤3 分钟),与代表分钟 ledger 并存;耗时写入column_compare_ms。 - BUG-598
inspectDiscriminatorProbes接收birthDate,与 followup 共用adult-floor.ts。inspect 回退不再漏过成年下限。 - P2「没有」按钮 跳过,等产品。
三栏(被触碰断言)
| 用例 | 原值 | 新值 | 理由 |
|---|---|---|---|
| 交付卡形态 | 每个候选分钟一行,点行采用 | 至多三列,「更像这个」采用 | BUG-597 决策 1 |
| 「排盘用」 | 代表分钟预标 | 不预标 | BUG-597 决策 1 |
| 列文案 | 只写与代表分钟不同的 D9/D10 | 三列写全 D9/D10/月宿 + 经历计数 + 未来窗 | BUG-597 决策 2 |
| 引擎 compare | 只有代表分钟 ledger | 另有 by_time ledger 与 windows | BUG-597 决策 4 |
| Skill | 10.0.17 | 10.0.18 | 任务书 |
| inspect 成年下限 | 仅 followup 过滤 | inspect 同样 below_adult_floor |
BUG-598 |
| 采集「没有」按钮 | 无 | 仍无 | 等产品 |
测试
frontend./node_modules/.bin/tsc --noEmit:exit 0npm run lint:0 errors / 108 warnings(仓库基线 warning,无新 error)- 任务书指定 TS 切片:1040 tests / 1040 pass / 0 fail
tests/test_rectification_v5_services.py:35 passed- Docker
database-rectification-*.test.ts:本机未跑,记 blocked - 浏览器真人走查:无登录态,记 blocked
Skill 10.0.18 SHA256:ad209a7824d7eb65f35efd7d6245e9a3752a8b32972de0fbafb751691e86a1ad。live SKILL.md + references/ 与 versions/10.0.18 字节一致。
偏离
- 不按
cluster_range合并不同分钟。 任务书写「同簇合并取代表」。04:53 与 04:59 若同簇会被合成一列,正好把本单要对照的差别藏掉。实现按精确 HH:MM 去重。 - 引擎
column_times取candidate_decisions前 3 个唯一分钟(引擎分序)并保证代表分钟在列里。卡片列按后验排序。后验前三若与引擎前三不一致,缺的分钟回退代表 ledger / 空窗口句。 prospective_windows_for_time用该分钟月曜起的未来 12 个月 Vimshottari 起始月,领域目前标career;没有 static context / 月曜则空列表,卡片写固定句。- 采集题「没有」按钮未做。
- BUG-598 真实 Case 出生年:本工作树没有该 Case 档案,不能用出生资料核对。按年份公式:2015 年迁居题越线当且仅当出生年 > 1997。≤1997 年生在 2015 年已满 18 岁,不越线。
- 本机主仓停在
codex/minute-rectification-p0且有脏文件,未动。 - 预检系统 Python 缺 swisseph/pytest;不把预检失败写成云端未同步。
.venv与frontend/node_modules是指向主仓的 symlink,不提交。- 浏览器真人走查:本会话无登录态,记 blocked。见
docs/testing/rectification-scenarios-20260907.md§5。