fix(rectification): collect a dated third event before OOS and occupation
Holdout stays closed until the training gate opens and skips declined domains. Dated collect order is shared with exhaustion; spoken prompts must name the domain; progress copy uses collection_progress only. BUG-527 through BUG-530. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,105 @@
|
||||
# PROGRESS · 采集阶段第三件事没有方向(2026-09-04)
|
||||
|
||||
工作树:`.worktrees/rectification-collect-direction-20260904`
|
||||
分支:`codex/rectification-collect-direction-20260904`
|
||||
基线:任务书写 `origin/staging` `45bdb63e`;开工时工作树落后 3 个提交,已 rebase。交付前再 `git fetch`,快进合入 `7ee7f825`(共用 Button)与 `5c5f25a3`(报告 worker BUG-526 记录)。当前与 `origin/staging` 对齐,改动未提交。
|
||||
任务书:`docs/tasks/TASK-rectification-collect-direction-20260904.md`
|
||||
未改 Python、未 bump Skill(仍 10.0.14)、未改 `decideRectification` 采用/确认门。未 push。
|
||||
|
||||
| 任务 | 状态 | BUG |
|
||||
| --- | --- | --- |
|
||||
| 5.1 盘外核对加训练门并跳过拒答领域 | 完成 | BUG-527(任务书原写 524) |
|
||||
| 5.2 带年份采集顺序进入计划主流程 | 完成 | BUG-528(任务书原写 525) |
|
||||
| 5.3 采集题干必须指向领域 | 完成 | BUG-529(任务书原写 526) |
|
||||
| 5.4 进度句有数字才说 | 完成 | BUG-530(任务书原写 527) |
|
||||
|
||||
## 编号
|
||||
|
||||
rebase 后 `docs/BUG_HISTORY.md` 最大号已是 BUG-526(accepted 生时报告 worker 读校正表)。本单实际落点 **BUG-527~530**。
|
||||
|
||||
## 实现要点
|
||||
|
||||
- `holdoutFollowupFor`:`meetsAcceptanceEventQuality` 未开 → `null`;否则跳过 `declinedDomains`,先 OOS 提示再带年份 holdout 事件。`validate_holdout` 早退与 `holdoutValidation === "not_started"` 共用。
|
||||
- `DATED_COLLECT_ORDER`:家人 → 学业 → 财务 → 搬家 → 健康 → 事业 → 感情。主流程在方法轮转之前、训练门未开时走 `nextDatedCollectFollowup`;`exhaustionSpokenCollectFollowup` 同一函数。职业与 `other` 排最后。
|
||||
- `datedCollectFollowup.source = "method_coverage"`(采集,不是盘外核对),这样 `isOfferBlockingFollowup` 对 relatives/D9/D10 仍挡出牌。
|
||||
- `COLLECT_DOMAIN_KEYWORDS` + `validateSpokenPrompt`:`collect_method_evidence` 且无 `choice_frame` 时题干必须命中领域词,否则 `domain_missing`。第二次失败用 `USER_COLLECT_QUESTION[domain]`。区分题 / OOS 不套这层。
|
||||
- `collectionProgressFromReceipt`:`{ scoreable, minimum, missing }` 或 `null`。读盘 `projectTurnDecision` 与 GET `interview` 都带。提示词禁止无数字的「范围在收窄」。词表加「继续收窄」「范围还在」,只拦 `spokenPrompt`。
|
||||
|
||||
## 偏离与断言改写
|
||||
|
||||
`rectification-yearless-ungrounded` 的 `validate_holdout` / `oos_blind` **未改断言**:该 fixture 已有 4 条带日期证据,`meetsAcceptanceEventQuality` 为 true,OOS 结论仍成立。
|
||||
|
||||
训练门未开时下一问从方法轮转(感情/事业)改为 datedCollectOrder。凡改断言均在测试里写了原值/新值/原因。摘要:
|
||||
|
||||
| 文件 | 原值 | 新值 | 原因 |
|
||||
| --- | --- | --- | --- |
|
||||
| `rectification-eight-method` 一件学业 | `d9_relationship` | `relatives` / family | 训练门未开先补家人 |
|
||||
| 同上,学业+家人+事业读盘 | `d9_relationship` | `d2_finance` | 1 条 holdout,训练门未开,家人/学业已有记录 |
|
||||
| 同上,3 条+1 holdout、家人拒答 | 方法轮转 collect | `finance` collect | 同上,补财务而不是区分 |
|
||||
| `rectification-range-offer-deadend` 穷尽 | occupation | relocation | 顺序合并后搬家在职业前 |
|
||||
| `rectification-agentic-entry` 源码锁 | `interview: fields` | `{ ...fields, collection_progress }` | GET 带进度 |
|
||||
| `rectification-question-ownership` / v10 set-focus | 「哪年上的大学」 | `USER_COLLECT_QUESTION[domain]` | 默认 dossier 一件事业 → 家人,大学不命中 |
|
||||
| `rectification-walkthrough-polish` retry 计划 | relationship retry | family | 已关闭感情不挡家人采集 |
|
||||
|
||||
## 测试
|
||||
|
||||
开工聚焦套件(rebase 后、本单改动前未单独存档数字;交付时本套件全绿):
|
||||
|
||||
`tsx --test` eight-method / yearless-ungrounded / server-focus / collect-stall / adopt-narration-20260904 / answer-choice / collect-direction-20260904 / spoken-prompt / v9-agent / range-offer-deadend:
|
||||
|
||||
```
|
||||
# tests 183
|
||||
# pass 183
|
||||
# fail 0
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
exit=0
|
||||
```
|
||||
|
||||
新文件 `rectification-collect-direction-20260904.test.ts`:8/8。
|
||||
|
||||
`tsc --noEmit`:本单文件 0 错。全量仍 2 个既有错误(`app-sidebar.tsx` ref、`calendar.tsx` Button `onSubmit`),与 `7ee7f825` 共用按钮合入后仍在,未触碰。exit=2。
|
||||
|
||||
校正相关 glob(含 v9-database Docker):
|
||||
|
||||
```
|
||||
# tests 892
|
||||
# pass 891
|
||||
# fail 1
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
exit=1
|
||||
```
|
||||
|
||||
唯一失败 `v9 legacy backfill…`:并发 Docker 争用。该文件隔离重跑 **7/7**,exit=0。
|
||||
|
||||
全量 `tests/*.test.ts`(本机有 Docker;第一次跑在产品断言修完之前):
|
||||
|
||||
```
|
||||
# tests 2611
|
||||
# pass 2591
|
||||
# fail 20
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
exit=1
|
||||
```
|
||||
|
||||
20 条拆开:
|
||||
|
||||
- **5 条本单产品失败**(已修,隔离复跑全绿):`interview: fields`、legacy quality 后 `d9_relationship`、set-focus 大学题干、v10 set-focus、walkthrough relationship retry。
|
||||
- **12 条 Docker/Postgres 争用**(`database system is shutting down` / `database migration failed`),与 BUG-523 基线同类;v9-database 隔离 7/7。
|
||||
- **3 条 `@base-ui/react/button/index.mjs` MODULE_NOT_FOUND**:`personal-report-entry`、`personal-report-view`、`report-polling-contract`。本单未改这些文件;`node_modules/@base-ui/react/button/` 实际只有 `Button.mjs` / `index.js`。
|
||||
|
||||
未改 Python;未声称系统 `python3` 预检通过。
|
||||
|
||||
## 改动文件
|
||||
|
||||
- 计划:`method-followup.ts`
|
||||
- 校验/题干:`spoken-prompt.ts`、`user-copy.ts`、`rectification-v9-tools.ts`
|
||||
- 进度:`evidence-model.ts`、`turn-decision.ts`、`route.ts`、`agentic-rectification.ts`、`agent-voice-lexicon.ts`
|
||||
- 新增测试:`frontend/tests/rectification-collect-direction-20260904.test.ts`
|
||||
- 回归:eight-method、range-offer-deadend、spoken-prompt、v9-agent、agentic-entry、choice-card、question-ownership、v10-conversation-focus、walkthrough-polish
|
||||
- 文档:`docs/BUG_HISTORY.md`、`docs/tasks/README.md`、`CHANGELOG.md`、本文件
|
||||
@@ -47,7 +47,7 @@
|
||||
| `TASK-rectification-adopt-narration-20260904.md` | `PROGRESS-rectification-adopt-narration-20260904.md` | 探针池耗尽时采用卡旁白改 Agent 生成 + 已丢弃探针绕过 BUG-472 早退 + 区分题答否关线 | 已验收(4.1.4 点选入口未通过,见修复单) | `0aaa0d70`(BUG-519/520) |
|
||||
| `TASK-rectification-adopt-narration-fix-20260904.md` | `PROGRESS-rectification-adopt-narration-fix-20260904.md` | 采用旁白 Agent 在点选入口从不运行(早退分支重算过期决策)+ 校验器/可观测/超时 | 已验收(5.1/5.2 实现通过;超时测试挂死事件循环,见修复单 2) | `13dded9f`(BUG-521/522) |
|
||||
| `TASK-rectification-adopt-narration-fix2-20260904.md` | `PROGRESS-rectification-adopt-narration-fix2-20260904.md` | 采用旁白超时用了 unref 的 `AbortSignal.timeout`,测试挂死取消同文件后三条用例,门禁 `npm test` 退出码 1 | 已验收(门禁通过,staging 已部署) | `45bdb63e`(BUG-523) |
|
||||
| `TASK-rectification-collect-direction-20260904.md` | `PROGRESS-rectification-collect-direction-20260904.md` | 可评分事件 2 条时盘外核对抢跑到刚拒答的家人领域,Agent 只能改写成不指向任何领域的泛问;缺第三件带年份的事却先问职业 | 待执行 | — |
|
||||
| `TASK-rectification-collect-direction-20260904.md` | `PROGRESS-rectification-collect-direction-20260904.md` | 可评分事件 2 条时盘外核对抢跑到刚拒答的家人领域,Agent 只能改写成不指向任何领域的泛问;缺第三件带年份的事却先问职业 | 待验收 | `codex/rectification-collect-direction-20260904`(BUG-527~530) |
|
||||
| `TASK-rectification-ux-20260902.md` | `PROGRESS-rectification-ux-20260903.md` | 会话面空白假死与交互摩擦 | 已验收 | `d159f08e`(09-03 在新基线重做后合入,BUG-505~509) |
|
||||
|
||||
### 聊天主链路与首页
|
||||
|
||||
Reference in New Issue
Block a user