fix(rectification): keep hour-window tail clusters and lock the search window (BUG-623, BUG-624, BUG-625)
Hour windows no longer drop later signature clusters. Credible range uses cluster coverage, and a mid-session spoken birth window gets a fixed reply without calling the model. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
# PROGRESS · 窗口簇上限(2026-09-09)
|
||||
|
||||
工作树:`.worktrees/rectification-window-cluster-cap-20260909`
|
||||
分支:`codex/rectification-window-cluster-cap-20260909`
|
||||
任务书:`docs/tasks/TASK-rectification-window-cluster-cap-20260909.md`
|
||||
基线:开工时 `15cede97`;推 staging 前接到 `origin/staging` @ `a31a5e24`(BUG-621)
|
||||
|
||||
## 开工回执
|
||||
|
||||
- 目标:BUG-623 去掉按时间截断;BUG-624 簇覆盖进可信区间;BUG-625 中途说出时段固定回复、不改窗口、不进模型。
|
||||
- 顺序:4.1 → 4.2 → 4.3 → 4.4 → 4.6。4.5 intake 自定义范围等产品,本单不做。
|
||||
- 最大风险:一小时窗 17 簇依赖签名而不是分数;前端若不把 `cluster_times` 写进快照,区间仍会缩成代表分钟。
|
||||
|
||||
## 实测簇数(虚构盘 1997-08-08,`minute_step=1`,与任务书 §1 同盘)
|
||||
|
||||
| 窗口 | 分钟数 | 签名簇 | 公开候选 | 覆盖 |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| 14:00–15:00 | 61 | **17** | 17 | 14:00 … 15:00 |
|
||||
| 14:30–15:00 | 31 | 9 | 9 | 14:30 … 15:00 |
|
||||
| 12:00–16:00(14:00 ±120) | 241 | 64 | 64 | 12:00 … 16:00 |
|
||||
| 12:47–16:47(14:47 ±120) | 241 | **66** | **64**(相邻低分合并) | 12:47 … 16:47 |
|
||||
|
||||
`MAX_PUBLIC_CLUSTERS = 64` 对 ±120 够用:66 簇会合并相邻低分,窗口两端仍在。没有按时间 `break`。
|
||||
|
||||
## 已完成
|
||||
|
||||
- **4.1 / BUG-623**:`select_signature_representatives` 不再按时间截断;超 64 走 `cap_clusters_by_adjacent_merge`。夹具:17 簇含 14:46–14:51;65 簇合并后仍覆盖 `01:04`。
|
||||
- **4.2 / BUG-624**:每个公开候选带 `cluster_times` / `cluster_start` / `cluster_end`,经引擎 → 快照 JSONB → 推断层;`engineClusterRange` 优先于换升聚类。簇 14:40–14:45、代表 14:40 → 区间右端 14:45。无新迁移。
|
||||
- **4.3 / BUG-625**:`parseDeclaredBirthWindow` 在选模型之前拦截自由文本。命中则 `persistV9DeterministicTurn` 固定回复,不调模型、不改窗口、不换焦点。不含钟点的句子不命中。
|
||||
- **4.4**:Skill **10.0.20**(live + `versions/10.0.20`,sha256 `9c09867591cc9e8726f3577346230339b5a6dd4b4f3d634a9cda3e66170d6ac6`)。§4 禁止「以你说的为准」。词表删除该短语;只剩标点时回落到固定回复。
|
||||
- **4.5**:不做。
|
||||
- **4.6**:BUG-623 / 624 / 625 已写入 `docs/BUG_HISTORY.md`;`CHANGELOG.md`;走查 `docs/testing/rectification-window-cluster-cap-20260909.md`(固定回复,不是确认卡)。
|
||||
|
||||
固定回复原文:「搜索范围是开始时按你的资料定的,校正过程中不改。想按别的时间段重来,请先到资料里改出生时间,再新建一次校正。」
|
||||
|
||||
## 验收命令
|
||||
|
||||
- `.venv/bin/python -m pytest tests/test_rectification_v5_services.py -q` → 全过
|
||||
- `frontend`:`tsc --noEmit` 过;`npm run lint` 0 error(既有 warning 未动)
|
||||
- `tsx --test` 任务书所列 `rectification-*.test.ts` + `birth-time-intake*.test.ts`(排除 database)→ **1073 pass / 0 fail**
|
||||
|
||||
本单状态:**待验收**。推 `origin HEAD:staging`。
|
||||
@@ -88,8 +88,8 @@
|
||||
| `TASK-rectification-conversation-economy-20260909.md` | `PROGRESS-rectification-conversation-economy-20260909.md` | 对照竞品后产品拍板三条:开场三句讲做法 + 一次收多件(推翻 opening brief「不要一次说完/不举例」与 SKILL L52);采集题「没有 / 记不清」按钮(不做示例骨架条);每轮只留一句(方法句进活动记录、点选旁白去领先落后、证据轮正文一句复述 + 服务端裁剪);Skill 10.0.19 | 已验收通过(2 条 P3 备注) | `aa7ccb30` + `1453fb16`(BUG-604~606,Skill 10.0.19) |
|
||||
| `TASK-consultation-daily-empty-answer-20260909.md` | `PROGRESS-consultation-daily-empty-answer-20260909.md` | 首页「深入看今日」计算完成却 `empty_answer`:入口定的 `timing` 被模型改成 `general`(`canonicalDomainPlan` 以模型为准),分段写作标题与今日格式错位,分段 `maxSteps=1` 且工具仍可调 → 模型在分段里再调工具、零正文;思考流按 chunk 过滤漏出缺词英文 | 待验收 | `codex/consultation-daily-empty-answer-20260909`(BUG-612~613);走查 `docs/testing/consultation-daily-empty-answer-20260909.md` |
|
||||
| `TASK-rectification-compare-card-polish-20260909.md` | `PROGRESS-rectification-compare-card-polish-20260909.md` | 三列卡两列经历对照 0、三列无未来窗:引擎按引擎前三算 by_time,卡片按推断前三查表,键不匹配(BUG-614);交付旁白被 BUG-606 裁成一句(BUG-615);设计减法:相同性格句只写一次、经历对照说人话、删小标题、右栏本命宫位改北印星盘、换升时刻默认折叠 | 待验收 | `codex/rectification-compare-card-polish-20260909`(BUG-614~615) |
|
||||
| `TASK-rectification-history-open-20260909.md` | `PROGRESS-rectification-history-open-20260909.md` | 历史生时校正打不开:`open_agentic_rectification_case_v2` 把 Case 绑定 Skill 身份与当前注册版本做相等比较,两天内 10.0.15→10.0.19 五次 bump 让所有旧 Case 被拒;错误码未映射成 500;错误只画在首页卡下 → 表现为点了没反应。决策:session 打开用绑定身份(v1 取 Case → 读身份 → 注册表核验 → v2),不改迁移 | 待验收 | `codex/rectification-history-open-20260909`(BUG-621) |
|
||||
| `TASK-rectification-window-cluster-cap-20260909.md` | `PROGRESS-rectification-window-cluster-cap-20260909.md` | **P0** 真实用户:一小时窗口分 17 个签名簇,`select_signature_representatives` 按时间取前 12 个,14:40 之后整簇丢弃(本机复现表);区间按代表分钟跨度而非簇覆盖;中途说出真实时段时助手口头答应却未改 → 改为固定回复"范围开始时按资料定、中途不改"(产品否决口头改范围);intake 自定义范围等产品答复 | 待执行 | `codex/rectification-window-cluster-cap-20260909`(BUG-623~625,Skill 10.0.20) |
|
||||
| `TASK-rectification-history-open-20260909.md` | `PROGRESS-rectification-history-open-20260909.md` | 历史生时校正打不开:`open_agentic_rectification_case_v2` 把 Case 绑定 Skill 身份与当前注册版本做相等比较,两天内 10.0.15→10.0.19 五次 bump 让所有旧 Case 被拒;错误码未映射成 500;错误只画在首页卡下 → 表现为点了没反应。决策:session 打开用绑定身份(v1 取 Case → 读身份 → 注册表核验 → v2),不改迁移 | 待验收 | `a31a5e24`(BUG-621) |
|
||||
| `TASK-rectification-window-cluster-cap-20260909.md` | `PROGRESS-rectification-window-cluster-cap-20260909.md` | **P0** 真实用户:一小时窗口分 17 个签名簇,`select_signature_representatives` 按时间取前 12 个,14:40 之后整簇丢弃(本机复现表);区间按代表分钟跨度而非簇覆盖;中途说出真实时段时助手口头答应却未改 → 改为固定回复"范围开始时按资料定、中途不改"(产品否决口头改范围);intake 自定义范围等产品答复 | 待验收 | `codex/rectification-window-cluster-cap-20260909`(BUG-623~625,Skill 10.0.20);走查 `docs/testing/rectification-window-cluster-cap-20260909.md` |
|
||||
|
||||
### 聊天主链路与首页
|
||||
|
||||
|
||||
Reference in New Issue
Block a user