fix(rectification): let engine-ready cases adopt a representative minute
Independent Staging Quality Gate / validate (push) Successful in 10m34s
Independent Staging Quality Gate / publish (push) Successful in 13m34s

deliveryCapability no longer ties adoption to minute separation or holdout;
those stay on the exact-minute confirmation gate so users can save a range.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Jesse_Chen
2026-09-01 16:52:01 +08:00
co-authored by Cursor
parent de84f06940
commit 20df8c6022
12 changed files with 740 additions and 53 deletions
+16
View File
@@ -7102,3 +7102,19 @@
- 相关记录:BUG-450、BUG-452、BUG-460
- 复发自:BUG-460
- 修复版本:待发布
## BUG-463 | 采用门把分离与 holdout 绑死导致引擎可出牌时用户无法采用
- 状态:resolved
- 首次发现:2026-09-01
- 最近更新:2026-09-01
- 影响面:`deliveryCapability` / `decideRectification`、GET case overlay、`persistNextInterviewIfIdle`、候选卡采用 RPC 投影
- 用户现象:多条可评分证据、多领域、区分题已答完,引擎 receipt 已允许 acceptance/selection/propose,界面仍是 `can_adopt=false`、没有时间卡、不能保存,并继续轮询财务/职业等采集题。
- 触发条件:方法覆盖(含职业确认或拒答关闭)已满足,候选领先不足 `MIN_SEPARATION_LEAD`,或 holdout 未通过/不可用;引擎四门自洽且 `confirmation_allowed=false`
- 根因:策略死结,不是实现回归。引擎 receipt 与 Skill `10.0.14` 都把分离/holdout 留在唯一分钟确认门,交付物是代表分钟加可信区间。TypeScript `deliveryCapability` 却把这两项写进 `canAdopt`,overlay 再与引擎取交集,于是引擎的“可以”永远被 TS 盖成“不行”。上一轮 `TASK-rectification-nonterminal-exit-20260901.md` 与 BUG-460/462 的防复发写了“不得放宽 `canAdopt`”;该红线已由产品负责人于 2026-09-01 显式推翻,本条记录授权变更。
- 修复:`locallySelectable` 只保留候选存在、方法覆盖完成、以及证据下限 `keep_collecting`。分离充分、holdout passed 与引擎 `confirmation_allowed` 只进入 `canConfirmExactMinute`。覆盖完成后 idle 持久化不再追问,GET overlay 放出候选卡;采用 RPC 仍读引擎 snapshot 的 `selection_allowed`,写入 `accepted` 不写 `confirmed`
- 验证:事故形状 1a–4 与交付 B1–B3;授权组断言(分离不足/holdout/并列/`offer_provisional_range` 不采用)改为 provisional 采用且确认门仍关;证据下限、引擎 ceiling、确认门、非终态出口闸与 `read_only` 保持全绿。`rectification-*.test.ts``skill-registry.test.ts` 最终数字见本次交付;`./node_modules/.bin/tsc --noEmit` 必须通过。未进行真实 staging smoke。
- 防复发:`canAdopt` / `selectionAllowed` / `proposeAllowed` / `canConfirmExactMinute` 只在 `deliveryCapability` 计算并经 `...capability` 展开,出口不得覆写。不得把分离或 holdout 重新绑回采用门。不得放宽确认门、表达边界、3/2 证据下限或引擎 ceiling fail-closed。不得 bump skill 版本或改 Python 引擎来绕过本条。
- 相关记录:BUG-456、BUG-460、BUG-462
- 复发自:无(授权策略变更,不是同一实现回归)
- 修复版本:待发布