Files
Jyotisha/docs/tasks/PROGRESS-rectification-convergence-exit-fix-20260906.md
T
Jesse_Chen 814c924e4a
Independent Staging Quality Gate / validate (push) Successful in 9m20s
Independent Staging Quality Gate / publish (push) Successful in 6m51s
fix(rectification): exhaustion exit, explain layer, range reading, unknown-time scan (BUG-565–568)
Keep askable cards after exhaustion, explain each probe, read the adopted credible range in reports and chat, and compare declared periods before the minute grid when the clock is unknown.

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

3.3 KiB
Raw Blame History

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 根因升级;docs/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
  • finalizeSuccessfulTurnExitterminalNote 且本回合尚未写门槛时写一次(幂等 requestId),并跳过 ensureNonTerminalTurnExit。agent-run opening/evidence 先写并把 askedTurnId 传给 finalize。completedMessageResponse 带上 x-rectification-turn-id
  • 点选:persistAppliedEXHAUSTION_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 同样失败。见 docs/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 叠在同一提交。