fix(rectification): persist refresh attempts and map collect focus kinds (BUG-656/657/658)
Independent Staging Quality Gate / validate (push) Failing after 13m28s
Independent Staging Quality Gate / publish (push) Skipped

Empty engine refresh now records an already_answered attempt so GET can leave wait-to-narrow; collect kinds map onto the table CHECK; remaining candidates drive probe refresh.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Jesse_Chen
2026-09-12 06:09:20 +08:00
co-authored by Cursor
parent 2b6d28e7a7
commit eae049d0ea
17 changed files with 747 additions and 62 deletions
@@ -0,0 +1,29 @@
# 进度 · 修复单:采集焦点 kind、剩余候选刷新、刷新尝试落库(2026-09-12)
## 范围
- 分支:`codex/rectification-targeted-collect-persist-fix-20260911`(基于 `origin/staging` @ `2b6d28e7`
- 任务单:`docs/tasks/TASK-rectification-targeted-collect-persist-fix-20260911.md`
- BUG-656:采集焦点 `kind` 映射到表 CHECK
- BUG-657:引擎刷新按剩余候选
- BUG-658:刷新尝试落库、等待收窄按已问过判定、落库失败同一事务出卡
- T1 与 T3 不可省;T2 已一并做完
## 完成
- T1 `collectFocusTargetKind``targeted:` / `anchor:` / `generic:` 写入 CHECK 枚举;原 hint 进 `collect_kind`
- T2 `build_refinement_packet``refresh_probes``column_times` 非空时用剩余分钟生成探针;回执 `refresh_result`
- T3 `refresh_attempts``already_answered` 持久化;`refreshExhausted` / `shouldRefreshDatedPool` 同源;定向 persist `skipped` 出「目前范围」;`collect_waiting` 覆盖无 stopReason 的采集缺口
- T4 BUG-656658、CHANGELOG、本文件、场景 0c
## 验收(本机,未部署)
- `frontend` `tsc --noEmit` 0 错
- eslint 变更文件 0 error(既有 unused-import warning 仍在)
- `rectification-server-focus.test.ts` + `rectification-probe-pool-exhausted-20260911.test.ts` + `rectification-surface-state.test.ts` + `rectification-replay-20260911.test.ts`**51 / 51**
- Python`test_candidate_discriminator_contract.py` + `test_rectification_event_probes.py`fail=0`.venv/bin/python -m pytest`
## 未做
- 未 commit / 未 push
- 未部署后按场景 0c 真机走一遍