fix(rectification): ask a ready discriminator before dated collect

Family coverage still continues dated collection when nothing can split leftover minutes, but an already-built choice card must not be displaced by spoken finance collect.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Jesse_Chen
2026-09-05 10:34:24 +08:00
parent 309c74249e
commit cd704a92e7
8 changed files with 232 additions and 70 deletions
@@ -41,3 +41,46 @@
| `page.tsx` | 未改 |
未做浏览器真人走查。清单:`docs/testing/rectification-family-collect-continue-20260905.md`。旧会话在部署前仍会按旧逻辑结束。
## BUG-547 · 现成区分卡优先于口述补采集
工作树:`.worktrees/rectification-family-collect-continue-fix-20260905`
分支:`codex/rectification-family-collect-continue-fix-20260905`
基线:`origin/staging` @ `309c7424`(含 BUG-546 的 `998406ce`)。未改 `.gitea/workflows/**`、未动迁移、未升级依赖、未 bump Skill(仍 10.0.14)、未改 `page.tsx`
| 任务 | 状态 | BUG |
| --- | --- | --- |
| 补采集让位于可渲染区分卡 | 完成 | BUG-547 |
| 无区分卡时仍走 dated 补采集 | 完成 | BUG-546 保留 |
### 编号
开工时最大号 BUG-546。本单 **BUG-547**。未占用预留的 BUG-542。
### 实现取舍
`if (!next)` 链里,家人之后先看 yearless / 精度层能否拿出 `choice_frame`,有卡才问卡;没有卡才 `nextDatedCollectFollowup`。精度层抢在采集前必须训练门已开,避免 `lagna_frame` 借走无关探针、在 holdout 未齐时改成区分题。没有把 dated 分支整段挪到 `d4_refine` 之后,因为精度层在没有探针时也会生成无框 `distinguish` 题,整段后移会把 BUG-546 的八方法财务采集再改回去。
### 断言变更
| 项 | 原值 | 新值 | 原因 |
| --- | --- | --- | --- |
| `career evidence alone still does not cover occupation` 下一问 | `occupation` | `d2_finance` | 家人已覆盖且无区分卡,BUG-546 继续收未用带年份域;职业仍 uncovered |
| `training gate open does not mint yearless…` 下一问 | `occupation` | `d2_finance` | yearless 存在/质量卡被丢掉后没有可渲染区分卡,先财务采集 |
`distinguish follow-up copy forbids competing-chart ranking` 未改断言。新增无探针对照:同样证据集、没有搬家探针时下一问仍是财务采集。
### 测试
| 命令 | 结果 |
| --- | --- |
| choice-card + occupation-coverage-exit | 55/55 |
| eight-method + choice-card + occupation | 117/117 |
| collect-stall / collect-direction / provisional-adopt / range-offer / adopt-narration / adopt-flow-fix / eight-method / choice-card / occupation / agent-voice | 192/192 |
| `npx tsx --test tests/rectification-*.test.ts tests/agent-voice-copy-contract.test.ts` | 895 项;产品失败 0。整包曾出现 1 次 Docker 迁移夹具失败(`v9 agent api migration…`),单测重跑 1/1 通过 |
| `tsc --noEmit` | 0 错 |
| 改动文件 eslint `--quiet` | 0 error |
| `page.tsx` | 未改 |
未做浏览器真人走查。旧会话在部署前仍会按 `998406ce` 把现成区分卡挤掉。
+1 -1
View File
@@ -53,7 +53,7 @@
| `TASK-rectification-quality-probe-dedupe-20260904.md` | `PROGRESS-rectification-quality-probe-dedupe-20260904.md` | 候选区分阶段同一道"上大学"题问两次:`pickProbe` 按种类取第一条质量探针无视 `semantic_key`(第二次答案绑到错的证据);引擎对毕业等学业 kind 也套"高考发挥"模板;同域同分组质量探针不去重 | 已验收通过(浏览器走查欠) | `codex/rectification-quality-probe-dedupe-20260904`BUG-540541 |
| — | `PROGRESS-rectification-adopt-card-anchor-20260905.md` | 采用卡钉在历史采集题下,最新旁白没有卡;单分钟交付旁白机器腔 | 已验收通过(浏览器走查欠) | `codex/rectification-quality-probe-dedupe-20260904`BUG-544545 |
| — | `PROGRESS-rectification-family-collect-continue-20260905.md` | 家人答「没有」后直接给结果,未继续收能区分分钟的经历 | 验收未通过(1 项行为回归 + 2 条断言未更新,见修复单) | `codex/rectification-quality-probe-dedupe-20260904`BUG-546 |
| `TASK-rectification-family-collect-continue-fix-20260905.md` | | `998406ce` 修复单:家人之后的 dated 补采集无条件抢在现成区分卡之前(choice-card A/B 卡用例回归),另两条顺序断言缺三栏说明 | 待执行 | `codex/rectification-family-collect-continue-fix-20260905`BUG-547 |
| `TASK-rectification-family-collect-continue-fix-20260905.md` | `PROGRESS-rectification-family-collect-continue-20260905.md` | `998406ce` 修复单:家人之后的 dated 补采集无条件抢在现成区分卡之前(choice-card A/B 卡用例回归),另两条顺序断言缺三栏说明 | 待验收 | `codex/rectification-family-collect-continue-fix-20260905`BUG-547 |
| `TASK-api-not-configured-mislabel-20260904.md` | — | 16 处路由把数据库瞬断(部署切换窗口)兜底翻译成 503「服务尚未配置」;改为仅配置错误用该文案,其余 `service_unavailable`,收敛为共享 helper | 待执行 | `codex/api-not-configured-mislabel-20260904`BUG-542 起) |
| `TASK-rectification-ux-20260902.md` | `PROGRESS-rectification-ux-20260903.md` | 会话面空白假死与交互摩擦 | 已验收 | `d159f08e`(09-03 在新基线重做后合入,BUG-505509 |