fix(rectification): stop speaking unstampable distinguish stems (BUG-674/675)
Distinguish followups that cannot stamp a probe now go to persistExhaustionCollect instead of repeating the card stem in the assistant body. Choice focuses without asked_turn_id hang on the last assistant turn, and persisted_question with a live choice_card renders the existing card. Representative-time inconsistency is warn-only (BUG-676 investigating).
This commit is contained in:
@@ -10484,3 +10484,51 @@
|
||||
- 相关记录:BUG-670、BUG-669、BUG-671、BUG-661
|
||||
- 复发自:BUG-670
|
||||
- 修复版本:待发布
|
||||
|
||||
## BUG-674 | 探针耗尽后判别题被念进正文,同一题反复问且答了不算数
|
||||
|
||||
- 状态:resolved
|
||||
- 首次发现:2026-09-14
|
||||
- 最近更新:2026-09-14
|
||||
- 影响面:`persistNextInterviewAfterChoice`、`expectedAnswerSchemaFor` / `stampChoiceSchemaWithProbe`、`persistExhaustionCollect`
|
||||
- 用户现象:答完带年月题后,正文反复出现同一句判别题(无 A/B/C/D)。用户打字回答「没有」只得到「记下了,这方面先跳过」,同一句再出现一次。
|
||||
- 触发条件:`prospective_probes` 为空,精度阶段仍给出带 `choice_frame` 的判别题;`stampChoiceSchemaWithProbe` 盖不上 `probe_id`,persist 返回 `invalid_choice_schema`。
|
||||
- 根因:上一单把「焦点没写成功」当成「题还在、只是没进消息」,把卡片题干拼进旁白。探针耗尽时这道题根本不该再问,也没有焦点可答。
|
||||
- 修复:判别题(`intent === distinguish_candidates`,或带 `choice_frame` 的非采集题)落不了库时改走 `persistExhaustionCollect`,不得把题干写进正文。采集题仍可进正文,但与上一条助手消息相同的题干会去重并转耗尽分支。
|
||||
- 验证:`frontend/tests/rectification-unstampable-probe-20260914.test.ts`。
|
||||
- 防复发:判别题落不了库时不得把题干写进正文;探针耗尽必须转定向补事卡。
|
||||
- 相关记录:BUG-673、BUG-652、BUG-661
|
||||
- 复发自:BUG-673(D3 把未落库题干拼进旁白)
|
||||
- 修复版本:待发布
|
||||
|
||||
## BUG-675 | 快照已有 choice_card,界面仍画一行裸题
|
||||
|
||||
- 状态:resolved
|
||||
- 首次发现:2026-09-14
|
||||
- 最近更新:2026-09-14
|
||||
- 影响面:`attachQuestionsToTurns`、`persisted_question` 渲染、`persistedQuestionSurface`
|
||||
- 用户现象:`目前范围` 下面一行裸题(如「结过婚或订过婚吗?」),无头像、无选项、也没有「接着问」。
|
||||
- 触发条件:`current_question.kind === "choice"` 且 GET `choice_card` 非空,但焦点没有 `asked_turn_id`,卡片无法挂到消息上;`persisted_question` 只画 `prompt`。
|
||||
- 根因:`persisted_question` 从设计起只服务口述题。BUG-673 把定向题修成点选后,这个纯文本块成了新的裸题来源。
|
||||
- 修复:无 `asked_turn_id` 的活动选择题挂到最后一条助手消息,走既有消息内卡片。`persisted_question` 在有卡时渲染同一套 `RectificationChoiceCard`,不再只画一行字。
|
||||
- 验证:`frontend/tests/rectification-unstampable-probe-20260914.test.ts`;`rectification-surface-state.test.ts`。
|
||||
- 防复发:`current_question.kind === "choice"` 且有 `choice_card` 时必须渲染可点卡,不得只画题干。不得新增第二套卡片组件。
|
||||
- 相关记录:BUG-673、BUG-669、BUG-671
|
||||
- 复发自:BUG-673(数据形态修好后渲染仍走口述兜底)
|
||||
- 修复版本:待发布
|
||||
|
||||
## BUG-676 | 代表时间取到被淘汰候选
|
||||
|
||||
- 状态:investigating
|
||||
- 首次发现:2026-09-14
|
||||
- 最近更新:2026-09-14
|
||||
- 影响面:`evaluateCandidateSeparation`、`rankActive`、decision receipt `representative_time` / `last_inference_round`
|
||||
- 用户现象:同一轮 receipt 里 `representative_time` 落在 `eliminated_ids` 中(例如 05:14),界面范围是 04:48–05:07,也不含该分钟。
|
||||
- 触发条件:本轮有淘汰名单,对外代表时间与 `winner_id` / 范围不一致。
|
||||
- 根因:未知。已确认 `evaluateCandidateSeparation` 按 score 取 `ranked[0]`,`evaluateConvergence` 先滤 `status === eliminated` 再按后验排序。尚未拿到同一份 `inference_state.candidates`(id / time / status / probability / posterior_score)与 `credible_range`,不能断定是 status 没写回、后验没重算,还是两套分数不是同一份。
|
||||
- 修复:本轮只加不变量告警 `rectification_representative_time_inconsistent`(代表时间在 eliminated 内或落在 credible_range 外)。不改排序。
|
||||
- 验证:`frontend/tests/rectification-unstampable-probe-20260914.test.ts` 两条告警路径。
|
||||
- 防复发:代表时间必须不在本轮 `eliminated_ids` 内,且落在 `credible_range` 内。根因确认后另立修复单,不得为了「数字看起来对」顺手改排序。
|
||||
- 相关记录:BUG-442
|
||||
- 复发自:无
|
||||
- 修复版本:待发布
|
||||
|
||||
Reference in New Issue
Block a user