diff --git a/docs/BUG_HISTORY.md b/docs/BUG_HISTORY.md index add93f12..7e26c65a 100644 --- a/docs/BUG_HISTORY.md +++ b/docs/BUG_HISTORY.md @@ -6174,15 +6174,15 @@ ## BUG-405 | 区分探针问题合同未统一,低信息量事件题压过可渲染高信息量分盘题 -- 状态:resolved(代码修复完成,staging 发布待确认) +- 状态:resolved - 首次发现:2026-08-27 -- 最近更新:2026-08-27 +- 最近更新:2026-08-28 - 影响面:生时纠正候选区分探针、点选题四选项合同、方法追问排序、active Focus 持久化、Agent 可见投影、`POST /api/rectification/agent` - 用户现象:候选比较阶段出现无法点选的自由文本问题,或先问信息量很低的事业存在题,而更高信息量的 D24 等分盘区分机会被跳过;点选「没有」或自然语言回答无法更新后验,流程退回泛问经历。 - 触发条件:Python 区分探针只给出 yes/no 结局、不带完整 `style_options`;TypeScript 曾用测试夹具补四选项,生产路径却 fail-closed 不出卡;`method-followup` 在冲突事件探针与 contrast 探针之间按 if/else 分支优先,而不是按信息量全局排序;`ask_candidate_discriminator` 且没有合法 active Focus 时仍可能进入完整 Agent。 - 根因:问题合同、可渲染性、探针排序和 Focus 持久化是四套规则。BUG-403/BUG-404 要求动态四选项,但 Python 从未发出完整 `style_options`,存在题无法服务端补全;冲突事件探针因分支顺序可以压过更高 `information_gain` 的 contrast 探针;Agent 仍能看见原始 `candidate_contrast_packet` / `current_probe`,并在没有卡片时把区分题说出来。 - 修复:新增跨运行时 `probe-question-v1` 合同。存在题/质量题可由服务端补全为 `yes / weak_yes / no / unsure`;分盘风格标签保持动态,并补 `都不是这些特质` 与 `这段记不清楚`。只有 `isRenderableProbe` 通过的探针进入排序;冲突事件探针与 contrast 探针按 `information_gain × novelty × coverage - penalty` 全局取最高。先持久化 Focus 再暴露问题;compare-candidates 对 Agent 隐藏原始探针包。缺少合法 Focus 时先修复或收口到可信区间,不进入完整 Agent;流结束后若仍是 discriminator 且没有合法 Focus,记 `state_invariant_failed`。Skill 版本保持 `10.0.13`。 -- 验证:`frontend/tests/rectification-probe-question-contract.test.ts`、choice-card / server-focus / contrast-packet / eight-method 排序回归、turn-decision 隐藏 `current_probe`、route 在 `runV9AgentTurn` 前修复 Focus、Python `tests/test_probe_question_contract.py` 与 `tests/test_rectification_event_probes.py` 四选项合同。 +- 验证:`frontend/tests/rectification-probe-question-contract.test.ts`、choice-card / server-focus / contrast-packet / eight-method 排序回归、turn-decision 隐藏 `current_probe`、route 在 `runV9AgentTurn` 前修复 Focus、Python `tests/test_probe_question_contract.py` 与 `tests/test_rectification_event_probes.py` 四选项合同。Gitea Independent Staging Quality Gate `3ae22f576842310e6e43de497bf76714b614c7ed` 通过后,Deploy staging run 2121 成功;`https://staging.jyotisha.chat/api/health` 报告同一 SHA,`rectificationMigrations=ok`。 - 防复发:区分题必须同时满足四选项合同、可渲染、全局信息量排序、Focus 先于提问。不得恢复冲突探针优先于 contrast 的分支;不得把原始探针包交给 Agent;不得在 `current_question=null` 时把 discriminator 当成成功口语轮次。 - 相关记录:BUG-367、BUG-398、BUG-400、BUG-401、BUG-403、BUG-404 - 复发自:BUG-403(动态四选项合同未贯穿 Python/排序)、BUG-404(Focus 与口语问题仍可分裂)