# 进度 · 修复单:采集焦点 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-656~658、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`) ## 门禁跟进(2026-09-12) - Independent Staging Quality Gate run 2568 / SHA `eae049d0`:validate 失败,`npm test --prefix frontend` **fail 4 / 3132** - 原因不是基础设施:全量 TAP 才跑到的既有用例被 CHECK 映射和第三次 `decideFromDossier` 打坏 - `invite_more` 不再写入 `target_kind`(CHECK 不允许),改断言 `null` + `collect_kind=invite_more` - `persistExhaustionCollect` 定向 persist skipped 后改走已有的 `decideAfterInferenceChange`,idle 源码切片仍是两次 `decideFromDossier`(BUG-653) - 本机补跑上述 4 个失败套件后再推 staging ## 未做 - 未部署后按场景 0c 真机走一遍