fix(rectification): require a renderable card before holdout validation

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Jesse_Chen
2026-08-29 00:30:04 +08:00
parent e41eaace8d
commit fe0afdaddb
4 changed files with 323 additions and 65 deletions
+16
View File
@@ -6461,6 +6461,22 @@
- 复发自:无
- 修复版本:待发布
## BUG-426 | 无年份 sticky holdout 仍进入核对,点选卡却渲染不出来
- 状态:resolved
- 首次发现:2026-08-28
- 最近更新:2026-08-28
- 影响面:`holdoutStatusFromInference` / `holdoutStatusFromState``decideFromDossier`、holdout 点选卡
- 用户现象:保留的 holdout 后来变成未知精度、没有年份后,决策仍要 `ask_holdout_validation`,出题计划却给不出可渲染卡片。
- 触发条件:`stickyHoldoutEvents` 把已保留 holdout 钉住;该事件 `year === null``precision: "unknown"`;或 `validate_holdout` 时既没有 `oosBlindPrompts` 也没有带年份的 holdout。
- 根因:holdout 状态只看 `usage === "holdout"`。能否出题看的是带年份的事件或 oos 提示。两套口径不一致。
- 修复:抽出共用 helper:能问(oos 提示或 dated holdout)才是 `not_started`;否则 `unavailable``unavailable` 且用户未停走既有 `adopt_representative`,不当成 `passed`。带年份 holdout 追问补上存在题选项和 `probe_year`,好渲染 choice frame。不改 `applyHoldoutAnswer`,不改 stickiness。
- 验证:`rectification-holdout-renderable` 锁定未知精度 sticky holdout 不进入 `ask_holdout_validation` 且可 `ready_to_adopt`;带日期 holdout 有可渲染 `choice_frame`;通过为 `validated_range`;失败路径不变;`nextAction === ask_holdout_validation` 时 followup 非空。`canConfirmExactMinute === false`
- 防复发:不得只凭 `usage === "holdout"` 打开核对。不得把 `unavailable` 当成已通过。不得打开 unique-minute 门。
- 相关记录:BUG-424、BUG-410
- 复发自:无
- 修复版本:待发布
## BUG-410 | 训练已齐仍因家人/职业方法层停在采集,Agent 只确认后截断
- 状态:resolved