fix(rectification): require three answers before uncertainty stop
Independent Staging Quality Gate / validate (push) Successful in 9m19s
Independent Staging Quality Gate / publish (push) Successful in 1m52s

One "一时说不好" no longer ends the interview. Plateau streaks use the
same sample floor. Delivery copy states why the range stopped.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Jesse_Chen
2026-09-03 12:08:37 +08:00
parent e8c98c37cf
commit 0c0df42679
11 changed files with 335 additions and 51 deletions
+16
View File
@@ -7745,3 +7745,19 @@
- 复发自:无
- 修复版本:待发布
## BUG-503 | 一道题选「一时说不好」就交付
- 状态:resolved
- 首次发现:2026-09-03
- 最近更新:2026-09-03
- 影响面:`uncertaintyHighFromAnswers``decisionBudgetFromInference``composeChoiceNarration``publicNextAction``user-copy`
- 用户现象:整场只收到一道选择题,选 D「一时说不好」后直接交付几十分钟区间;旁白还说「更新了候选比较」。
- 触发条件:`classified_from=choice` 的用户答题数为 1`answer_class=unsure`。连续两道 D 也会因 `maxPlateauRounds=2` 交付。
- 根因:`uncertaintyHighFromAnswers` 没有样本下限,1 答即 `1 >= ceil(1/2)``applyProbeOutcome` 把 unsure 记成 `low_information`,平台期从第一道就开始计数。上游 Stop Rule 是「样本够多且大半答不上来」,实现成了任意一道答不上来。
- 修复:`references/rectification_policy.v1.json` 增加 `minUncertaintyAnswers: 3`。不足 3 答不停。达到下限后仍用「≥ 一半」判定。平台期在 `decisionBudgetFromInference` 用同一下限才统计连续 `low_information``maxPlateauRounds` 仍为 2。unsure 旁白改为「已记录。这题先不计分,换一件事问。」`appliedInference` 仍持久化。交付话术在进度句前说明 `user_uncertainty_too_high` / `tied_first``publicNextAction` 只读暴露 `stop_reason`。用户主动「先这样」仍立即交付。
- 验证:`rectification-convergence-budget` 1 答不停且继续出区分题;3 答 2 unsure 停;4 答 2 unsure 停;2 答连续 unsure 不因平台期停,5 答后连续 2 道 unsure 停。`rectification-answer-choice` unsure 旁白与 §0 形状(答 D 持久化下一问、不采用)。`agent-voice-copy-contract` 锁停止原因文案。
- 防复发:不确定度停止必须先过 `minUncertaintyAnswers`。该数字只在 `references/rectification_policy.v1.json` 定义。不得把 `maxPlateauRounds` / 8 轮 / 10 答外层熔断改掉。不得用题干字符串反推停止原因。
- 相关记录:BUG-463
- 复发自:无
- 修复版本:待发布