docs(tasks): tie-break entry fix brief (BUG-666~668) after accepting 530f260f and ab1ade59

Accepted the targeted-collect cards round and the refresh R3/R4 round; the
range-card tie-break entry keeps showing after D9/D10 are answered and errors
on click. Product decision: one click asks both cards, then the entry goes away.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0193vBv6w5MV2cifdTUu9H5P
This commit is contained in:
Jesse_Chen
2026-09-13 12:10:36 +00:00
co-authored by Claude Opus 5
parent ab1ade59b7
commit 0b7d43e622
2 changed files with 65 additions and 2 deletions
+4 -2
View File
@@ -176,9 +176,11 @@
| `TASK-rectification-targeted-collect-persist-fix-20260911.md` | `PROGRESS-rectification-targeted-collect-persist-fix-20260911.md` | 修复单:BUG-656 采集焦点 kind 映射到 CHECK 枚举;BUG-657 引擎刷新按 `column_times` 取剩余候选;BUG-658 刷新尝试持久化 + 等待收窄以已问过判定(512be9b7 让无新题时 GET 永远等待且每轮重调引擎) | 已实现 `eae049d0` + `529fcc09`,已部署;静态验收通过,真机六题流程待走 | `codex/rectification-targeted-collect-persist-fix-20260911` |
| `TASK-rectification-set-focus-tool-failed-20260912.md` | `PROGRESS-rectification-set-focus-tool-failed-20260912.md` | 09-12 真机:记完两件学业后 `rectification-set-focus` 连续六次 `tool_failed`(兜底码,原始错误无处记录;焦点其实已由 batch 工具落下)、宿主兜底正文日期重复(BUG-659/660 | 待验收 | `codex/rectification-set-focus-tool-failed-20260912` |
| `TASK-rectification-after-pool-empty-decision-20260913.md` | — | 决策单草案:六道带年月题问完、引擎刷新无新题后,定向补事是开放式口述题,体感死板。给出 A 逐条点选 / B 放宽引擎出题(先离线量收益)/ C 参考题可选入口 / D 文案 四个方案,建议 A+D(+C) | 已拍板 2026-09-13A+D+C 进 `TASK-rectification-targeted-collect-cards-20260913.md`B 进研究单 | — |
| `TASK-rectification-targeted-collect-cards-20260913.md` | `PROGRESS-rectification-targeted-collect-cards-20260913.md` | 定向补事改逐条点选卡(有/没有/记不清 → 有则口述年月;没有不计分只防复问;全没有出卡)+ 文案说清剩余候选与线 + 卡下「再答两道参考题」入口(BUG-661663Skill 10.0.25 | 待验收 | `codex/rectification-targeted-collect-cards-20260913` |
| `TASK-rectification-targeted-collect-cards-20260913.md` | `PROGRESS-rectification-targeted-collect-cards-20260913.md` | 定向补事改逐条点选卡(有/没有/记不清 → 有则口述年月;没有不计分只防复问;全没有出卡)+ 文案说清剩余候选与线 + 卡下「再答两道参考题」入口(BUG-661663Skill 10.0.25 | 已实现 `530f260f`,已部署;2026-09-13 验收:T1/T2/T4 通过,T3 入口留死角 → `TASK-rectification-tie-break-entry-fix-20260913.md` | `codex/rectification-targeted-collect-cards-20260913` |
| `TASK-rectification-probe-supply-research-20260913.md` | — | 研究单:六题后引擎在剩余候选上再出带年月题的四种放宽规则,20 例公开 AA 数据离线量收益,有收益才立实现单 | 已合入(离线测量,不改线上) | `b063c668` |
| `TASK-rectification-refresh-r3-r4-20260913.md` | `PROGRESS-rectification-refresh-r3-r4-20260913.md` | 刷新阶段 R3MIN_BOUNDARY_DAYS 45→30+ R4pratyantar 与 D9/D10 上升 Narayana);首轮出题不变。即使放宽仍有 0 题例子,定向补事另线保留(BUG-664/665 | 待验收 | `codex/rectification-refresh-r3-r4-20260913` |
| `TASK-rectification-refresh-r3-r4-20260913.md` | `PROGRESS-rectification-refresh-r3-r4-20260913.md` | 刷新阶段 R3MIN_BOUNDARY_DAYS 45→30+ R4pratyantar 与 D9/D10 上升 Narayana);首轮出题不变。即使放宽仍有 0 题例子,定向补事另线保留(BUG-664/665 | 已实现 `ab1ade59`,已部署;2026-09-13 验收通过(实现单由执行方自拟,无产品决策记录段;收益口径见研究文档) | `codex/rectification-refresh-r3-r4-20260913` |
| `TASK-rectification-tie-break-entry-fix-20260913.md` | — | 修复单:参考题入口只读 `window_scan` 标志位 → 两道答完后仍显示、再点弹「现在没有可答的参考题」;并按产品拍板改成点一次连出 D9+D10(BUG-666668 | 待执行 | `codex/rectification-tie-break-entry-fix-20260913` |
## 命名与归档
@@ -0,0 +1,61 @@
# TASK · 参考题入口一次连出两道、问完消失(修复单,2026-09-13)
- 基线:`origin/staging` @ `ab1ade59`(已部署,`/api/health` `deployment.gitCommit = ab1ade59`
- 分支:`codex/rectification-tie-break-entry-fix-20260913`,基于 `origin/staging`
- 执行方:coding agent;验收:Claude
- BUG 编号起点:**BUG-666**(开工时核对 `docs/BUG_HISTORY.md` 最大号,应为 665
- 上游单:`TASK-rectification-targeted-collect-cards-20260913.md` T3(BUG-663)已实现并验收,本单只补它的死角
- 不改 `SCORE_DELTA``MIN_ACCEPTANCE_*`、确认门;性格题不得回计分池(BUG-629);`can_adopt` 不得因参考题变化
## 1. 事故实证(代码走查,`ab1ade59`)
1. `divergence-panel.ts` `rangeDeliveryForSnapshot``tieBreakAvailable` 只看 `window_scan.d9_candidates_differ || d10_candidates_differ`(以及原始快照/回执里的同名字段),**不看还有没有没问过的 D9/D10 `varga_style` 对照题**。
2. `rectification-range-delivery.tsx` 只要 `delivery.tie_break_available` 为真就渲染按钮「再答两道参考题微调排序」。
3. 点击走 `POST /api/rectification/cases/[caseId]/tie-break``requestTieBreakPersonality``tieBreakPersonalityFollowup`;该函数跳过 `askedKeys` 里已问过的 `varga.d9*` / `varga.d10*`。两道都答过后返回 `null`,路由回 `409 tie_break_unavailable`,前端 `setError("现在没有可答的参考题")`——用户点到的是红字报错,不是入口消失。
4. 每点一次只落一道卡:答完 D9 后 `buildMethodFollowupPlan` 不带 `tieBreakRequested`,不会自动接 D10,用户必须再点一次入口。文案写的是「再答两道」。
## 2. 决策记录(产品负责人 2026-09-13
**点一次连出两道,问完入口消失。** 具体:
1. 点击入口后出 D9 卡;答完自动接 D10 卡;两道答完回到「目前范围」卡,入口不再出现。
2. 没有可答的 D9/D10 对照题时,入口一开始就不渲染;任何情况下点击不得出现红字报错。
3. 入口文案保持「再答两道参考题微调排序」不变。
4. 参考题仍只调排序:`tie_break`(±1、不淘汰、不改 `can_adopt`),不得回到计分池。
## 3. 硬红线
- 参考题不得在定向补事之前、或未点入口时成为下一问(BUG-663 防复发)。
- 自动接第二道只在「本次入口触发的这一轮」内生效;不得变成答完任意性格题就继续追问。
- `tie_break_available` 必须由「存在未问的 D9/D10 `varga_style` 题」决定,不得只读 `window_scan` 标志位。
- 不得为此把 planner 打进客户端包(BUG-663 实现里已特意避开,沿用服务端投影)。
- 既有测试总数不降;改断言写「原值 / 新值 / 原因」三栏。
## 4. 任务分解
- **T1 入口可用性(BUG-666**`tie_break_available` 改为服务端判定「还有未问的 D9/D10 `varga_style` 对照题且未采用」。GET 快照投影(`case-dossier-response.ts``rangeDeliveryForSnapshot`)与 `tie-break` 路由用同一判定来源,避免两边漂移。验收:两道都答完后卡下不再有入口;contrast packet 里没有 D9/D10 题时入口不出现;点击路径不再产生 `409 tie_break_unavailable` 的用户可见报错。
- **T2 一次两道(BUG-667)**:点入口记一次「参考题轮次」状态(焦点/话题标记即可,不新建表)。答完第一道后自动落第二道 `varga_style` 焦点;两道答完(或第二道无题)结束该轮,回到范围卡。验收:点一次后依次出现 D9、D10 两张卡,中途不需要再点入口;两道答完后 `rounds.kind=tie_break``eliminated_ids` 为空、`can_adopt` 与点击前一致。
- **T3 清理(可让步,BUG-668**
- `collection-question-pool.ts` `isTargetedCollectDeclined``isTargetedCollectYearFollowup``src/` 已无调用,删除或写明保留理由(留着容易被再次误用为「整池已关」,正是 BUG-661 的老根因)。
- `skills/.../SKILL.md` 定向补事写「有 / 没有 / 记不清」三项,实际卡片是四项(卡片合同 `serverOwnedChoiceCopy` 要求四个互不相同的标签,第四项是「这条先跳过」)。把 Skill 口径与卡片对齐。若改 Skill 正文则升 10.0.26 并按 BUG-621 验历史可打开。
- `scripts/rectification/event_probes.py` 里为兼容旧 mock 写的条件传参(`window_kw = {} if threshold == MIN_BOUNDARY_DAYS``include_pratyantar` 两分支各调一次 `_vim_start_dates`)改成统一签名,同步更新 mock。业务代码不为测试替身让步。
## 5. 让步顺序
T1 不可省;T2 次之;T3 可拆下一单。若 T2 当轮做不完,至少让入口在无题时消失(T1),不得留报错死角。
## 6. 开工前置命令
```bash
git fetch origin --prune
git worktree add -b codex/rectification-tie-break-entry-fix-20260913 .worktrees/rectification-tie-break-entry-fix-20260913 origin/staging
grep -o "^## BUG-[0-9]*" docs/BUG_HISTORY.md | sort -t- -k2 -n | tail -1 # 应为 665
cd frontend && npm test -- tests/rectification-targeted-collect-cards-20260913.test.ts tests/rectification-range-delivery-20260907.test.ts tests/agent-voice-copy-contract.test.ts
```
## 7. 验收口径
- `tsc --noEmit` 0 错;`npm run lint` 0 error;相关套件 fail=0;测试总数 ≥ 基线(`ab1ade59` 实测 3139,其中 27 项为无 Docker 的数据库/部署套件,与基线逐条一致)。
- `next build``/``○ Static`;首屏 `rootMainFiles` gzip-9 与 `ab1ade59` 的 130872 B 相差 ±2% 内。
- 真机场景 0d 补两条:两道参考题答完后入口消失;全程不出现红字「现在没有可答的参考题」。
- BUG-666668 入 `docs/BUG_HISTORY.md`;CHANGELOG 只在用户可见行为变化时写。