fix(rectification): keep range-card tie-break entry honest after D9/D10 answers (BUG-666~668)
Independent Staging Quality Gate / validate (push) Successful in 13m8s
Independent Staging Quality Gate / publish (push) Canceled after 9m59s

Hide the button once both personality cards are answered, persist the second card in the same opt-in round, and freeze Skill 10.0.26.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Jesse_Chen
2026-09-13 22:45:31 +08:00
co-authored by Cursor
parent 192845ce2f
commit 9912760104
44 changed files with 1046 additions and 184 deletions
+49 -1
View File
@@ -10321,7 +10321,7 @@
- 修复:卡下可选按钮「再答两道参考题微调排序」。点了才走 `tie_break` 落 D9/D10 `varga_style`(±1、不淘汰、不改 `can_adopt`)。不点不出。
- 验证:`frontend/tests/rectification-targeted-collect-cards-20260913.test.ts` 不点不出;入口文案进 `listUserVisibleCopy()`
- 防复发:性格题不得在定向补事之前或未点入口时成为下一问;`SCORE_DELTA` 与淘汰阈值不得被这条路径改掉。
- 相关记录:BUG-629、BUG-651、BUG-661
- 相关记录:BUG-629、BUG-651、BUG-661、BUG-666、BUG-667
- 复发自:BUG-629(性格题降权后没有可选入口)
- 修复版本:待发布
@@ -10357,6 +10357,54 @@
- 复发自:BUG-653(刷新只复用首轮边界层)
- 修复版本:待发布
## BUG-666 | 参考题入口在两道答完后仍显示,再点报没有可答题
- 状态:resolved
- 首次发现:2026-09-13
- 最近更新:2026-09-13
- 影响面:`rangeDeliveryForSnapshot`、GET `range_delivery.tie_break_available``POST /api/rectification/cases/[caseId]/tie-break`
- 用户现象:「目前范围」卡下「再答两道参考题微调排序」两道都答完后按钮还在;再点出现红字「现在没有可答的参考题」。
- 触发条件:候选 D9/D10 仍不同,但 D9/D10 `varga_style` 都已问过;或从未有可渲染的参考题。
- 根因:入口只看 `window_scan.d9_candidates_differ / d10_candidates_differ`。路由用 `tieBreakPersonalityFollowup` 跳过已问键,两道答完返回空 → 409 `tie_break_unavailable`。前端把 409 写进 `setError`
- 修复:GET 与点击路径共用「还有未问的 D9/D10 `varga_style` 且未采用」。没有剩余题时不画按钮;若仍点到空池,只重拉快照,不把 409 文案写到界面。
- 验证:`frontend/tests/rectification-tie-break-entry-20260913.test.ts`
- 防复发:不得只用 window_scan 决定入口。planner 不得打进客户端包。性格题仍不得自动成为下一问(BUG-663)。
- 相关记录:BUG-663、BUG-667、BUG-629
- 复发自:BUG-663
- 修复版本:待发布
## BUG-667 | 点一次参考题入口只出一道,不会自动接第二道
- 状态:resolved
- 首次发现:2026-09-13
- 最近更新:2026-09-13
- 影响面:`requestTieBreakPersonality``persistNextInterviewAfterChoice``expectedAnswerSchemaFor`
- 用户现象:按钮写「再答两道」,点一下只出 D9;答完回到范围卡,要再点一次才出 D10。
- 触发条件:用户从范围卡点入口,答完第一道 `varga_style`
- 根因:入口只持久化当前下一问。答完后 `buildMethodFollowupPlan``tieBreakRequested`,且 `varga_style` 不算剩余区分题,`can_adopt` 仍为真时跳过下一问持久化。
- 修复:入口落下的焦点 schema 带 `tie_break_round: true`。答完该轮焦点时继续 `tieBreakPersonalityFollowup` 落第二道;没有第二道或两道都问完则结束该轮,回到范围卡。自动接第二道只在这一轮内生效。
- 验证:`frontend/tests/rectification-tie-break-entry-20260913.test.ts`:未问时 D9、问过 D9 后 D10、两道都问过则空;schema 带 round 标记;计分仍 `tie_break`、不淘汰。
- 防复发:不得把任意性格题答完都当成参考题轮次。`can_adopt` 与淘汰阈值不得因参考题改变。
- 相关记录:BUG-666、BUG-663、BUG-629
- 复发自:BUG-663
- 修复版本:待发布
## BUG-668 | 定向补事死辅助函数、Skill 三选项与引擎 mock 签名分叉
- 状态:resolved
- 首次发现:2026-09-13
- 最近更新:2026-09-13
- 影响面:`collection-question-pool.ts``skills/jyotish-birth-time-rectification``scripts/rectification/event_probes.py`
- 用户现象:卡上是四个选项(含「这条先跳过」),Skill 仍写三个。生产代码为迁就测试替身把 `_vim_start_dates` / `_boundary_windows` 拆成两套调用。
- 触发条件:读 Skill 或跑刷新边界;`isTargetedCollectDeclined` / `isTargetedCollectYearFollowup``src/` 调用方。
- 根因:BUG-661 曾用「整池关闭」脚枪,辅助函数留下;Skill 10.0.25 未写入第四选项;刷新参数用空 kwargs 避开旧 mock。
- 修复:删除无调用方的两个导出。Skill 10.0.25 冻结,现行 10.0.26 写「有 / 没有 / 记不清 / 这条先跳过」。`_union_boundary_dates` 一律把 `include_pratyantar``min_days` 传给生产函数,不再为 mock 分叉。
- 验证:源切片确认两个导出已删;Skill 合同锁 10.0.26 文案;`tests/test_rectification_event_probes.py``tests/test_rectification_refresh_r3_r4.py`
- 防复发:Skill 选项数必须与卡一致;生产调用不得为测试替身分叉。10.0.25 仍可 exact-resolve。
- 相关记录:BUG-661、BUG-621、BUG-665
- 复发自:—
- 修复版本:待发布
## BUG-669 | 定向补事快照投影拿不到 choice_card,刷新后卡点不动
- 状态:resolved