# 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`、本文件