Yearless-to-collect now skips domains already confirmed, declined, or asked; adopt-exhausted turns skip leftover collect persist. Collect focus collisions only retry with :next when collect_retry is set. Co-authored-by: Cursor <cursoragent@cursor.com>
45 lines
3.3 KiB
Markdown
45 lines
3.3 KiB
Markdown
# PROGRESS · 已覆盖领域再采集(2026-09-08)
|
||
|
||
工作树:`.worktrees/rectification-covered-domain-recollect-20260908`
|
||
分支:`codex/rectification-covered-domain-recollect-20260908`
|
||
任务书:`docs/tasks/TASK-rectification-covered-domain-recollect-20260908.md`
|
||
基线:`origin/staging` @ `43fd8875`
|
||
|
||
本单状态:**待验收**。本提交交付到 staging。
|
||
|
||
未改:采用门、确认门、`MIN_SEPARATION_LEAD`、`_relative_support`、`minute_step=1`、`SCORE_DELTA`、四选项合同、Skill 版本(仍 10.0.15)。
|
||
|
||
## 做了什么
|
||
|
||
- **决策 1** `method-followup.ts` 职业覆盖后的 yearless→采集:遍历全部 `yearlessDiscriminators`,跳过拒答、`hasConfirmedDomain`(含 `health`/`health_pressure`)和已问过 `collect:<domain>:*` 的领域。全部跳过则 `next` 保持空。
|
||
- **决策 2** `shouldSkipFollowupPersist`:`canAdopt` 且(`nextAction === "ready_to_adopt"` 或 `sessionOutcome === "adopt_representative"`)且 `stopReason === "probe_pool_exhausted"` 时,`isRemainingEvidenceCollect` 只有该领域没有确认事件且未拒答才算剩余采集;否则跳过持久化、`terminalNote`。
|
||
- **决策 3** `persistCollectFocus` 撞 `focus_idempotency_conflict`:仅 `collect_retry === true` 才 `:next`,否则 `duplicate_focus`。`persistFocusAfterChoice` 不再为 `duplicate_focus` 读 dossier 重试。
|
||
- **决策 4** `holdoutFollowupFor` 的 occupied 归并 `health` / `health_pressure`。
|
||
|
||
## 三栏(被触碰断言)
|
||
|
||
| 用例 | 原值 | 新值 | 理由 |
|
||
| --- | --- | --- | --- |
|
||
| 事故形状 yearless→采集 | `next_followup.domain = finance`(取 yearless[0]=D11) | `null` | 决策 1,财务已覆盖 |
|
||
| 同形状但迁居未覆盖 | finance | relocation | 守卫只跳过已覆盖领域 |
|
||
| idle persist 事故形状 | 财务采集焦点 / `:next` | `terminalNote: true`,0 次 set-focus | 决策 1+2 |
|
||
| 非 retry 采集撞 id | 任何撞 id 都 `:next` | `duplicate_focus`,RPC 一次 | 决策 3 |
|
||
| `collect_retry` 撞 id | `:next` | 仍 `:next` | 保留 BUG-462 retry |
|
||
| holdout 账本 `health` + oos `health_pressure` | `health_pressure` | `null` | 决策 4 |
|
||
|
||
## 测试
|
||
|
||
- `frontend` `./node_modules/.bin/tsc --noEmit`:exit 0
|
||
- `npm run lint`:0 error(仓库既有 warning 未清)
|
||
- 任务书指定 TS 切片(`tests/rectification-*.test.ts` + `agent-voice-copy-contract.test.ts`,排除 database):**1006 passed / 0 failed**
|
||
- Docker `database-rectification-*.test.ts`:本机未跑,记 blocked
|
||
- `block_scan` 壁钟(BUG-570 P2):既有缺口,本单不声称全量 Python 门通过
|
||
- 浏览器七领域真人走查:无登录态,记环境缺口,见 `docs/testing/rectification-scenarios-20260907.md` §6
|
||
|
||
## 偏离
|
||
|
||
1. 任务书写 `nextAction === "adopt_representative"`。实现同时认 `ready_to_adopt` 与 `sessionOutcome === "adopt_representative"`,因为公开 nextAction 是前者。
|
||
2. 验收形状扩在 `rectification-occupation-coverage-exit.test.ts`,没有新建文件。
|
||
3. idle 夹具按解析后账本算 `evidenceLedgerFingerprint`,避免 RPC `summary` 与内存账本对不上把快照判成过期、决策掉回 `collect_evidence`。
|
||
4. `rectification-eight-method.test.ts`:yearless D24 在 CLASSIC_COVERAGE 已有学业时,不再锁「再问一遍学业」;改为收未覆盖的财务。
|