Files
Jyotisha/docs/tasks/PROGRESS-rectification-convergence-exit-fix-20260906.md
T
Jesse_Chen 517df002b5 fix(rectification): narrate the credible range and stop scoring periods by length (BUG-569–570)
Choice copy was comparing the search window, so every answer said the range had not changed. Block-scan summed raw scores, so longer afternoon windows won before any evidence difference.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-07 10:03:28 +08:00

46 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# PROGRESS · 生时校正穷尽出口修复(2026-09-06)
工作树:`.worktrees/rectification-convergence-exit-fix-20260906`
分支:`codex/rectification-convergence-exit-fix-20260906`(跟踪 `origin/staging`
基线:`origin/staging` @ `b938c76a`;工作树文档头 `43a26a3c`
未改 `SKILL.md`(仍 10.0.14)、未改引擎、未改任何门槛数值。未重新引入 `USER_COLLECT_QUESTION.other` 兜底。未把 `.venv` 加入提交。
本单状态:**待验收**。BUG-565 / 566 / 567 已实现;BUG-560 保持 blocked 并补根因升级。
| 任务 | 状态 | BUG |
| --- | --- | --- |
| 5.1 单一写入方 | 完成 | BUG-565 |
| 5.2 穷尽态视为已交付 | 完成 | BUG-565 |
| 5.3 穷尽分支不吞题 | 完成 | BUG-566 |
| 5.4 范围小字还原 + 记录 | 完成 | BUG-567BUG-560 根因升级;`BLOCKED.md` BLK-001 |
## 实现要点
- `persistExhaustionCollect` 门槛分支不再 `persistV9DeterministicTurn`,只返回 `{ hostNarration, terminalNote: true, persisted: false }`
- 共用 `isExhaustedGateState({ remainingCollect, methods, canAdopt, accepted })``inspectNonTerminalTurnExit.satisfied` 认穷尽态。
- idle 穷尽分支额外要求 `nextAction ∈ {offer_provisional_range, complete_with_range, ask_fact_collection}``ask_candidate_discriminator` / `ask_holdout_validation` 即使 `!followup` 也不落入门槛,落到 `persistNextInterviewAfterChoice`
- `finalizeSuccessfulTurnExit``terminalNote` 且本回合尚未写门槛时写一次(幂等 `requestId`),并跳过 `ensureNonTerminalTurnExit`。agent-run opening/evidence 先写并把 `askedTurnId` 传给 finalize。`completedMessageResponse` 带上 `x-rectification-turn-id`
- 点选:`persistApplied``EXHAUSTION_DELIVERY_ACTIONS` 时仍走 `persistNextInterviewAfterChoice`,把门槛句拼进该回合正文。`shouldContinueAfterStructuredChoice` 对 offer/complete 仍为 falseUI 不等下一问)。
- `RectificationReadonlyRange` 回到 `<p role="status">`。口述停止按钮保留。
### 既有断言改动
| 文件 | 原值 | 新值 | 原因 |
| --- | --- | --- | --- |
| `rectification-exhaustion-exit` 源扫描 | 口述停止按钮和范围小字共用 `CHOICE_STOP_LABEL` / `onStop` | 仅口述态 `.rectification-collect-stop` 使用该文案;范围行是 status 句,没有 `onStop` / `<button` | BUG-567 |
| BUG-558 三个形状用例 | 未改断言 | 仍通过;关闭天花板夹具去掉 holdout 事件,避免白名单后 idle 去问 holdout | 白名单后 A4 用例 2 才仍是门槛 |
## 测试
| 命令 | 结果 |
| --- | --- |
| 非 DB `tests/rectification-*.test.ts` + `agent-voice-copy-contract.test.ts` | **910 pass / 0 fail**(解释层叠上后 917 |
| `npx tsc --noEmit` | 0 错 |
| `npm run lint` | 0 error / 81 warning(既有 warning,未清) |
| `.venv/bin/python -m pytest tests/test_active_rectification_api.py::test_long_real_conversation_reaches_vedastro_after_local_range_is_narrow` | 失败:`winning_segment` 04:16 / 宽 1 vs 期望 05:0705:08 / 宽 2。基线 `e2f4b55c` 同样失败。见 `BLOCKED.md` BLK-001。 |
排除 `rectification-*-database.test.ts`。ERR-011:验收命令用 `.venv/bin/python -m pytest`。未改 `page.tsx`
随本分支推 `origin/staging`。后续 explain-layer / range-reading / unknown-time 叠在同一提交。