fix(rectification): keep skipped health out of holdout and repair empty exits (BUG-626, BUG-627)
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
# PROGRESS · 跳过健康后 holdout 断流 + 出口闸门(2026-09-09)
|
||||
|
||||
工作树:`.worktrees/rectification-skipped-health-deadend-20260909`
|
||||
分支:`codex/rectification-skipped-health-deadend-20260909`
|
||||
任务书:`docs/tasks/TASK-rectification-skipped-health-deadend-20260909.md`
|
||||
基线:开工时 `origin/staging` @ `4eea9c10`
|
||||
|
||||
## 开工回执
|
||||
|
||||
- 目标:BUG-626 跳过的健康线不再进 holdout,`duplicate_focus` 必须留下可见载体;BUG-627 出口闸门不再把穷尽当成已交付;缺口按钮改为服务端修复。
|
||||
- 编号:BUG-628 已被「没有 / 记不清」按钮占用,本单只用 626/627。
|
||||
- 决策 1 在基线里已有 `declinedHealth` 特判;本单改成与 occupied 一样把两个别名写入 blocked 集合,并补 skipped `health` 回归。
|
||||
|
||||
## 已完成
|
||||
|
||||
- **4.1 / BUG-626**:`holdoutFollowupFor` 用 `declinedForHoldout`。`duplicate_focus` 记 `rectification_focus_duplicate` 并走 `persistExhaustionCollect`;穷尽旁白为空时用 `noCandidatesGate`。`persistExhaustionCollect` 只在 `duplicate_focus` 时落到门槛句,其它 persist 失败仍返回采集旁白,避免证据轮被误标 `terminalNote` 而不裁句。
|
||||
- **4.2 / BUG-627**:`inspectNonTerminalTurnExit.satisfied` 去掉 `exhausted`,改认活动问题 / 采用 / 确认 / terminalNote host turn / `publicCanAdopt`。无载体时写出门槛 host turn。idle catch 仍调 `ensureNonTerminalTurnExit`。
|
||||
- **4.3**:`POST /api/rectification/cases/[caseId]/repair-exit`;按钮「接着问」;两次仍无载体显示「暂时接不上,请新建一次校正。」
|
||||
- **4.4**:BUG-626 / 627、CHANGELOG、本文件、走查第 12 条。
|
||||
|
||||
## 验收命令
|
||||
|
||||
在 `frontend/`:
|
||||
|
||||
- `./node_modules/.bin/tsc --noEmit`:通过
|
||||
- `npm run lint`:0 error(既有 107 warning)
|
||||
- 定向 `tsx --test`:
|
||||
- `rectification-skipped-health-deadend-20260909.test.ts`
|
||||
- `rectification-collect-direction-20260904.test.ts`
|
||||
- `rectification-exhaustion-exit-20260906.test.ts`
|
||||
- `rectification-surface-contract.test.ts`
|
||||
- `rectification-agentic-entry.test.ts`
|
||||
- `rectification-spoken-collect.test.ts`
|
||||
- `rectification-collect-stall.test.ts`
|
||||
→ **195 / 195 通过**(含 `rectification-v9-stream.test.ts`、`rectification-answer-choice.test.ts`)
|
||||
- 全量 `tests/rectification-*.test.ts`(排除 database):**1067 / 1067 通过**
|
||||
- 相关补充:`rectification-server-focus.test.ts`、`rectification-decision-authority.test.ts`、`rectification-covered-domain-recollect-20260908.test.ts` → **39 / 39 通过**
|
||||
|
||||
本单状态:**待验收**。未改 Skill 版本、未改采用/确认门、未新增迁移。
|
||||
@@ -90,7 +90,7 @@
|
||||
| `TASK-rectification-compare-card-polish-20260909.md` | `PROGRESS-rectification-compare-card-polish-20260909.md` | 三列卡两列经历对照 0、三列无未来窗:引擎按引擎前三算 by_time,卡片按推断前三查表,键不匹配(BUG-614);交付旁白被 BUG-606 裁成一句(BUG-615);设计减法:相同性格句只写一次、经历对照说人话、删小标题、右栏本命宫位改北印星盘、换升时刻默认折叠 | 已验收通过(by_time 只算 9 个 → BUG-632) | (BUG-614~615) |
|
||||
| `TASK-rectification-history-open-20260909.md` | `PROGRESS-rectification-history-open-20260909.md` | 历史生时校正打不开:`open_agentic_rectification_case_v2` 把 Case 绑定 Skill 身份与当前注册版本做相等比较,两天内 10.0.15→10.0.19 五次 bump 让所有旧 Case 被拒;错误码未映射成 500;错误只画在首页卡下 → 表现为点了没反应。决策:session 打开用绑定身份(v1 取 Case → 读身份 → 注册表核验 → v2),不改迁移 | 已验收通过 | `a31a5e24`(BUG-621) |
|
||||
| `TASK-rectification-window-cluster-cap-20260909.md` | `PROGRESS-rectification-window-cluster-cap-20260909.md` | **P0** 真实用户:一小时窗口分 17 个签名簇,`select_signature_representatives` 按时间取前 12 个,14:40 之后整簇丢弃(本机复现表);区间按代表分钟跨度而非簇覆盖;中途说出真实时段时助手口头答应却未改 → 改为固定回复"范围开始时按资料定、中途不改"(产品否决口头改范围);intake 自定义范围等产品答复 | 已验收通过(申报拦截误伤经历 → BUG-631;intake 自定义范围等产品) | `6008c07c`(BUG-623~625,Skill 10.0.20) |
|
||||
| `TASK-rectification-skipped-health-deadend-20260909.md` | `PROGRESS-rectification-skipped-health-deadend-20260909.md` | 真实用户:健康题「记不清」后职业答完即断(『没有拿到下一个问题』):holdout 的 `declined` 未归并 health/health_pressure,把跳过的健康线再问一次,撞同 id 焦点 `duplicate_focus` 静默;出口闸门把 `exhausted` 当已交付不修复;『重新加载』只重取快照 | 待执行 | `codex/rectification-skipped-health-deadend-20260909`(BUG-626~627) |
|
||||
| `TASK-rectification-skipped-health-deadend-20260909.md` | `PROGRESS-rectification-skipped-health-deadend-20260909.md` | 真实用户:健康题「记不清」后职业答完即断(『没有拿到下一个问题』):holdout 的 `declined` 未归并 health/health_pressure,把跳过的健康线再问一次,撞同 id 焦点 `duplicate_focus` 静默;出口闸门把 `exhausted` 当已交付不修复;『重新加载』只重取快照 | 待验收 | `codex/rectification-skipped-health-deadend-20260909`(BUG-626~627) |
|
||||
| `TASK-rectification-domain-alias-audit-20260909.md` | `PROGRESS-rectification-domain-alias-audit-20260909.md` | 领域命名审计:健康线 `health`(账本/焦点)与 `health_pressure`(计划/引擎)在十处比较里六处未归并(holdout declined、reverse-verify、conflict probes、probeYearAlreadyCovered、引擎 oos_blind_prompts / _event_years / volunteered);职业线焦点存为 `other` 只靠 questionId 兜底。其余六领域三层同名无问题。决策:TS/Python 各一个归并函数 + 源码合同禁字面量比较 | 待执行 | `codex/rectification-domain-alias-audit-20260909`(BUG-628) |
|
||||
| `TASK-rectification-yearless-probe-downgrade-20260909.md` | `PROGRESS-rectification-yearless-probe-downgrade-20260909.md` | 产品拍板:无年月性格题(D9/D10 风格、月宿边界)降级为平局裁决——带年月题问完且候选仍分不开才问,分值减半(±1)、不计淘汰,报告标「参考」;三列卡性格描述不动;新增离线命中率测量脚本 + 导出 SQL(有出生证用户,聚合);Skill 10.0.21 | 已验收通过 | `fef54b6e`(BUG-629,Skill 10.0.21) |
|
||||
| `TASK-rectification-followups-20260909.md` | `PROGRESS-rectification-followups-20260909.md` | 验收补漏:申报时段拦截只看钟点样式,带钟点的经历(『20:00 左右分手』『3 点到 5 点被车撞』)会被吞(BUG-631);by_time 只算引擎前 9 个候选,一小时窗 17 个候选时卡片列写『还没对照』(BUG-632) | 待验收 | `codex/rectification-followups-20260909`(BUG-631~632) |
|
||||
|
||||
Reference in New Issue
Block a user