fix(rectification): gate collect-phase adopt cards and keep post-adopt verify answerable
Independent Staging Quality Gate / validate (push) Successful in 9m50s
Independent Staging Quality Gate / publish (push) Successful in 1m53s

Public can_adopt follows session_outcome; reverse_verify reuses the persisted question id; offer cards settle on the owning message with a status-bar handoff.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Jesse_Chen
2026-09-03 09:29:34 +08:00
co-authored by Cursor
parent 5c0bec0c94
commit 35e5781e66
31 changed files with 1774 additions and 109 deletions
+64
View File
@@ -7649,3 +7649,67 @@
- 复发自:BUG-451(分章后仍把写作失败压成整份 schema 码,截断预算与失败分类未按中文口径收口)
- 修复版本:待发布
## BUG-497 | 采集阶段同时出现采集题和采用卡
- 状态:resolved
- 首次发现:2026-09-02
- 最近更新:2026-09-02
- 影响面:`publicDecisionFields``POST .../candidates/accept``parseRectificationCandidateResult``rectification-agentic-chat`
- 用户现象:采集题还在问时,同一条助手消息下面出现三张「采用此时间」卡。
- 触发条件:`session_outcome=collect_evidence`,内部 `capability.canAdopt=true`,当前题是 `collect_spoken`
- 根因:`collect()``canAdopt` 原样投影成公开 `can_adopt`。前端 `showSelectionCards` 只靠 `!showLiveChoiceCard`,采集题没有 A–D 卡,采用卡就露出来。v9 删掉 offer 门后,BUG-313 / BUG-323 的防复发条款失效。
- 修复:公开 `can_adopt` 只在 `adopt_representative` / `provisional_range_user_stopped` / `awaiting_confirmation` / `validated_range` 为真(后者是 holdout 已过、ready_to_adopt 的既有语义,不是新开口)。accept 在 `can_adopt=false` 时 409;前端再按 `session_outcome` 双保险。采集阶段只显示只读范围行,composer 旁提供「先这样」。
- 验证:`rectification-adopt-flow-20260902``rectification-decide-next-action``rectification-confirmation-gate``rectification-candidate-result`accept 源码锁 409 在 RPC 之前。
- 防复发:`can_adopt` 只能收紧,不得在 `collect_evidence` / `discriminate_candidates` / `validate_holdout` 放行。`exact_minute_confirmed` / `completed_with_range` 不得新增放行。
- 相关记录:BUG-313、BUG-323
- 复发自:BUG-313、BUG-323
- 修复版本:待发布
## BUG-498 | 采用后核对题 choice_card 为空导致不可答
- 状态:resolved
- 首次发现:2026-09-02
- 最近更新:2026-09-02
- 影响面:`keepAcceptedFocus``projectRectificationChoiceCard``rectification-set-focus`
- 用户现象:点「采用此时间」后出现核对题,嵌入卡 disabled,点不了 A–D。
- 触发条件:已采用,active focus 为 `reverse_verify:education_style:score`,随后 GET / set-focus 重算 followup。
- 根因:承接分支用 `method_id: active_focus` 重建 `question_id`,与已持久化 id 不一致;`projectRectificationChoiceCard` 按设计拒绝串题,返回 null。核对题 schema 还被最高增益区分探针盖上 relocation identity。
- 修复:`keepAcceptedFocus` / `out_of_sample_check` 沿用已持久化 `questionId``ask_theme``domain` 和选项。不放宽 choice-card 校验。reverse_verify schema 不盖区分探针。spokenPrompt 含钟点时保留服务端题干以免卡片不可解析。区分题 keep 仍走 `probe:` semantic_key。
- 验证:`rectification-adopt-flow-20260902``rectification-question-ownership` 采用后续跑 set-focus。
- 防复发:无 semantic_key 的 followup 必须 `focus.questionId === frame.question_id`
- 相关记录:BUG-492、BUG-497
- 复发自:无
- 修复版本:待发布
## BUG-499 | 采用卡不沉淀进历史,列表末尾裸按钮
- 状态:resolved
- 首次发现:2026-09-02
- 最近更新:2026-09-02
- 影响面:`rectification-agentic-chat``attachOfferResultToTurns`、核对题 skip 文案
- 用户现象:采用后三张卡消失,列表末尾出现「用这个时间看盘」;续跑结束后卡又出现在新消息下,与核对题并存。被关掉的采集题无痕消失。
- 触发条件:采用后续跑 `busy``savedStatus=accepted` 渲染 `rectification-consult-handoff`
- 根因:卡永远锚在最新助手消息;采用后的界面动作散落在列表末尾,不跟出卡消息走。
- 修复:出卡消息拥有 `candidateOffer`;采用后原地结算「已采用 / 改选」;状态条承接「改选 / 用这个时间看盘」;核对题「这题跳过」;被关掉的采集题标「已跳过」。
- 验证:`rectification-agentic-entry``rectification-activity-receipt``rectification-adopt-flow-20260902` 组件源码锁。
- 防复发:已采用后不得把卡锚到最新消息;不得再渲染 `rectification-consult-handoff`
- 相关记录:BUG-497、BUG-490
- 复发自:无
- 修复版本:待发布
## BUG-500 | 校正运行耗时不可观测
- 状态:resolved
- 首次发现:2026-09-02
- 最近更新:2026-09-02
- 影响面:`get_agentic_rectification_turn_receipt``tool-service``rectification-compare-candidates`、聊天进度文案
- 用户现象:采用后续跑约三分钟,回执只有 tool/status/methods;开场 set-focus 失败原因也看不见。
- 触发条件:compare-candidates 走引擎;set-focus `invalid_spoken_prompt`;超过 45 秒仍显示「正在处理」。
- 根因:回执不暴露 `started_at` / `elapsed_ms`;失败只有 `safeErrorCode`;进度文案不跟活跃步骤切换;`read_only` 仍可能重跑 vedastro-validate。
- 修复:回执增加每步耗时和 fingerprint detailcompare 记引擎各段;45 秒后按当前工具换文案;minute-sensitive 已 `passed` 时跳过 vedastro-validate`failed` 仍重试且不重算排名。
- 验证:`rectification-adopt-flow-20260902` 的 elapsed_ms / 45 秒文案;`rectification-eight-method` 失败校验重试。
- 防复发:失败行不得用 GET 时的 `now()` 计算耗时;确认门语义不因沿用校验而放宽。
- 相关记录:BUG-497、BUG-498
- 复发自:无
- 修复版本:待发布