fix(rectification): dedupe post-adopt verify and skip this probe only
Adopted reverse-verify repeated already-asked collect stems, treated 「这题跳过」 as stopping the case, and promised holdout/OOS checks that never ran. Collect spoken stems no longer prefix a year. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -8276,3 +8276,67 @@
|
||||
- 相关记录:BUG-526、BUG-534;引入半拉子改动的提交 `c2f23131`
|
||||
- 复发自:无
|
||||
- 修复版本:`61194690`
|
||||
|
||||
## BUG-536 | 采用后第一道核对题重复已问过的采集题
|
||||
|
||||
- 状态:resolved
|
||||
- 首次发现:2026-09-04
|
||||
- 最近更新:2026-09-04
|
||||
- 影响面:`remainingReverseVerifyProbes`、采用后 `buildMethodFollowupPlan` 的 `accepted` 分支
|
||||
- 用户现象:采用代表分钟后,第一道核对题与采集阶段已经问过并回答过的带年份题几乎逐字相同。
|
||||
- 触发条件:采集阶段已按 `semantic_key` 问过该 (domain, year);采用后反向核对从 `eventProbes` 再取第 0 条。
|
||||
- 根因:冲突探针去重用了 `askedKeys`;BUG-350 单独写下的反向核对漏接。过滤了拒答领域、年份已覆盖、成年下限,没有用 `semantic_key` / `candidate_split_hash` / `domain.year`。
|
||||
- 修复:`remainingReverseVerifyProbes` 增加 `askedKeys`,与 `remainingConflictProbes` 同口径。已问或已跳过的探针不再作为核对题。
|
||||
- 验证:`rectification-post-adopt-verify-20260904`:`askedProbeKeys` 含第一条 `semantic_key` 时下一问是另一条;两条都在则 `next_followup === null` 且 `next_user_action.id === "start_consultation"`;只含 `candidate_split_hash` 也能去重。`rectification-eight-method` 采用后有剩余探针 / 无剩余探针两条既有断言仍过。
|
||||
- 防复发:采用后核对必须走 `askedKeys`。不得只靠 `probeYearAlreadyCovered` 当已问去重。
|
||||
- 相关记录:BUG-350
|
||||
- 复发自:无
|
||||
- 修复版本:待发布
|
||||
|
||||
## BUG-537 | 核对卡「这题跳过」等于整案停止,已采用仍念采用提示,前端报没有下一问
|
||||
|
||||
- 状态:resolved
|
||||
- 首次发现:2026-09-04
|
||||
- 最近更新:2026-09-04
|
||||
- 影响面:`choice-card` 核对卡 stop 槽、`SKIP_PROBE_ACTION`、`applyRectificationChoice`、`rectificationQuestionGapState`、校正聊天面
|
||||
- 用户现象:点「这题跳过」后助手又说可以从下面选一个先用着;随后出现「没有拿到下一个问题。」和重新加载。
|
||||
- 触发条件:已采用,当前焦点是反向核对卡;用户点跳过。
|
||||
- 根因:三层叠加。(1) 核对卡只把停止按钮改了标签,动作仍是整案 `STOP_ACTION`,`userStopped:true`。(2) 结构化旁白只看 `can_adopt`,已采用后 `publicCanAdopt` 仍为 true,再念一遍 `adoptCue`。(3) 服务端没有核对结束状态,前端把「无焦点 + 可续」当成问题还没准备好。
|
||||
- 修复:核对卡绑定 `skip_probe`:焦点 `skipped`、探针进 `answered_probes`(不计分)、不置 `userStopped`,再取下一道核对题。已采用禁止 `adoptionNarration` / `adoptCue`。GET 与结构化答题暴露 `next_user_action`;已采用且无下一问时为 `start_consultation`。前端该态为 `verified_idle`:一行 `postAdoptVerifyDone`,无重载、无 handoff。关闭核对结束时不得把已跳过的焦点重新挂到收尾消息上。
|
||||
- 验证:两道核对题跳第一道 → 下一焦点是第二道,`sessionOutcome` 不是 `user_stopped`,旁白不含 `adoptCue`。跳最后一道 → 无新焦点,`next_user_action.id === "start_consultation"`,旁白等于 `postAdoptVerifyDone`。`verified_idle` 无 gap copy、无重载、无 consult handoff。采用前区分题停止按钮仍是 `STOP_ACTION`。
|
||||
- 防复发:核对卡「这题跳过」不得走 `STOP_ACTION`。已采用旁白不得再念采用提示。`start_consultation` 不得进 preparing/unavailable。
|
||||
- 相关记录:BUG-350、BUG-499、BUG-502、BUG-518、BUG-520
|
||||
- 复发自:无
|
||||
- 修复版本:待发布
|
||||
|
||||
## BUG-538 | 采用旁白承诺的核对与采用后计划不同源
|
||||
|
||||
- 状态:resolved
|
||||
- 首次发现:2026-09-04
|
||||
- 最近更新:2026-09-04
|
||||
- 影响面:`adoptDeliveryFacts.post_adopt_verification`、采用旁白模板与 Agent 校验器
|
||||
- 用户现象:采用卡旁白说会拿若干年前事和几类域外题来核对;采用后一道都没问。
|
||||
- 触发条件:旁白事实包按 holdout 事件与 `oos_blind_prompts` 生成;采用后实际计划走 `remainingReverseVerifyProbes`。
|
||||
- 根因:`TASK-rectification-adopt-narration-20260904.md` §4 把 `post_adopt_verification` 写成 holdout + OOS。BUG-350 已定采用后不得把不计分盘外核对当默认下一步。两套规格矛盾,旁白说的是不会发生的事。这是任务书错误,不是执行方偏离 BUG-350。
|
||||
- 修复:`post_adopt_verification` 改为与采用后计划同一过滤(同一函数、同一 `askedKeys`、同一 `declined`),项为 `{kind:"reverse_verify"; domain; year_label}`。空列表时模板说没有还能核对的前事;校验器把「会拿……核对」判为 `promise` 失败。holdout / OOS 只留在决策收据,不进旁白。
|
||||
- 验证:`rectification-adopt-narration-20260904` 原 holdout/oos 三项改写为 reverse_verify 且与 `buildMethodFollowupPlan({accepted:true})` 首题一致。空列表 +「会拿……核对」→ `promise`。模板含「没有还能核对的前事」。
|
||||
- 防复发:旁白承诺必须与 `remainingReverseVerifyProbes` 同源。空列表不得承诺会核对。不得把 holdout/OOS 写回旁白事实包。
|
||||
- 相关记录:BUG-350、BUG-519、BUG-520、BUG-521、BUG-522、BUG-523
|
||||
- 复发自:无
|
||||
- 修复版本:待发布
|
||||
|
||||
## BUG-539 | 家庭采集题带年份前缀,又让用户报年份
|
||||
|
||||
- 状态:resolved
|
||||
- 首次发现:2026-09-04
|
||||
- 最近更新:2026-09-04
|
||||
- 影响面:`collectionYearFields`、`spokenFollowupForUser` 对 `collect_method_evidence`
|
||||
- 用户现象:家庭采集题写成「某年前后,家里如果有结婚、添丁或住院这类事,记得大概哪年就行。」既指定了年份又让用户报年份。
|
||||
- 触发条件:家庭轮转把 dated 探针的 `year_label` 拼进 `USER_COLLECT_QUESTION.family`。
|
||||
- 根因:`68f0759e` 为 BUG-414/418「带年份的口语问、不出无年份分盘选择卡」把 dated 探针年份塞进采集口语。`USER_COLLECT_QUESTION.family` 本身以「记得大概哪年就行」结尾,拼在一起自相矛盾。答「没有」后出采用卡本身不是缺陷(预算已满、家庭是最后一条必答覆盖线),本单不改该收口。
|
||||
- 修复:采集口语不再拼「某年前后,」。`probe_year` / `semantic_key` 仍留给计分与去重。不出无年份分盘选择卡的半边保留。
|
||||
- 验证:家庭采集口语等于 `USER_COLLECT_QUESTION.family`,同时 `probe_year > 0`。答完最后一道区分题后仍落家庭采集焦点,旁白不含探针年份。BUG-418 无年份分盘卡测试仍过。
|
||||
- 防复发:`collect_method_evidence` 口语不得加年份前缀。不得为去前缀而丢掉 `probe_year` 或放回无年份分盘选择卡。
|
||||
- 相关记录:BUG-414、BUG-418
|
||||
- 复发自:无
|
||||
- 修复版本:待发布
|
||||
|
||||
Reference in New Issue
Block a user