fix(rectification): invite another dated event instead of saying the pool is closed (BUG-689)
Independent Staging Quality Gate / validate (push) Failing after 10m16s
Independent Staging Quality Gate / publish (push) Skipped

When the seven collect lines are closed, the range card still appears, but the copy asks for one more exact-day event of any kind instead of saying the questions are finished. A new dated event after delivery stales the snapshot so the session does not stay delivered.
This commit is contained in:
jesse-ux
2026-09-14 22:56:01 +08:00
parent 62803c5d01
commit a266b6b727
16 changed files with 547 additions and 23 deletions
+17 -1
View File
@@ -10722,6 +10722,22 @@
- 修复:只有真正拿得到可渲染风格题时才 holdexhausted、closed-ceiling、holdout 不可用的收口不 hold;同一 Case 最多 hold 一轮。恢复「恰好一条交付闸」和「参考题确认语不算出口」两条断言。
- 验证:`frontend/tests/rectification-tiebreak-before-card-20260914.test.ts``rectification-exhaustion-exit-20260906.test.ts``rectification-probe-pool-exhausted-20260911.test.ts`
- 防复发:任何「延迟交付」的守卫都必须带出口,且不得作用于耗尽与收口路径。验收必须比对 `npm test` 失败数与基线。不得把参考题确认语算作出载体。
- 相关记录:BUG-686、BUG-656、BUG-674、BUG-680、BUG-597
- 相关记录:BUG-686、BUG-656、BUG-674、BUG-680、BUG-597、BUG-689
- 复发自:BUG-686(风格题前置扩大到所有交付分支)
- 修复版本:待发布
## BUG-689 | 七条采集线问完后只说「能问的都问完了」,用户不知道还能补经历
- 状态:resolved
- 首次发现:2026-09-14
- 最近更新:2026-09-14
- 影响面:`rangeDeliveryCollectClosed``rangeNarrowHint`、范围交付卡、交付后补证据
- 用户现象:结婚 / 收入 / 家人等固定线答过「没有/跳过」后,范围卡只写「能问的都问完了」。用户不知道还可以再说一件带年月的经历,也不知道补了会重算。真机并列约 26% / 26% / 20%。
- 触发条件:定向补事七条线全部关闭或覆盖,随后交付区间;前两名相对可能性差 ≤ 3 个百分点。
- 根因:BUG-687 把空池收口写成终局句。采集线关闭不等于校正结束:交付后 Case 仍是 `candidate_ready`,输入框不禁用,新的带年月证据会改账本指纹并让快照过期。缺的是邀请;过期快照若仍带着 `tied_first` 停止原因,缺口状态机会继续停在 `delivered`
- 修复:空池文案改为不限领域的补充邀请:先请记得确切哪一天的事,再退年月;举七条线之外的例子;不承诺定到分钟。并列且线已关闭时,邀请出现在交付卡正文,不躺在浅色说明里。快照因新证据过期时,决策不再把 `tied_first` 等耗尽停止原因带进采集,缺口才不会停在交付态。
- 验证:`frontend/tests/rectification-open-collect-invite-20260914.test.ts`
- 防复发:采集线关闭不等于校正结束;交付卡必须给出不限领域的补充邀请,且补充必须可见地生效。不得把邀请写成「再说一件就能定到分钟」。不得把已经拒答的线再列一遍(BUG-687)。
- 相关记录:BUG-687、BUG-646、BUG-651、BUG-653、BUG-688、BUG-590
- 复发自:BUG-687(空池收口写成终局句)
- 修复版本:待发布
@@ -0,0 +1,30 @@
# 进度 · 并列时请再补一件经历(2026-09-14)
## 范围
- 分支:`codex/rectification-open-collect-invite-20260914`(基于 `origin/staging` @ `62803c5d`
- 任务单:`docs/tasks/TASK-rectification-open-collect-invite-20260914.md`
- BUG-689 resolved(复发自 BUG-687
- 未改打分、确认门、`MIN_ACCEPTANCE_EVENTS` / `MIN_ACCEPTANCE_DOMAINS`(§4b)、Skill 版本
## 完成
- T1`rangeDeliveryCollectClosed` 改为不限领域邀请:先请确切哪一天(登记结婚那天、入职第一天、手术那天、孩子出生那天、拿到录取通知那天),再退年月(换专业、出国、打官司、创业、重病、亲人离世)。`rangeNarrowHint` 空池两处返回点沿用该常量。不再写「问完了」。
- T2:前两名相对可能性差 ≤ 3 个百分点且采集线关闭时,邀请出现在交付卡正文(`rectification-range-delivery__invite`);浅色 caption 只留「现在还剩 …」。非并列或线仍开放时不显示该邀请。采用按钮仍在。
- T3:交付态后新增一件 confirmed dated evidence → 账本指纹变化、`snapshotCurrent === false``decideFromDossier` 不再交付,也不再带着 `tied_first` 停在 `delivered`。未改 BUG-682 的「GET 回落 collect_evidence + tied_first 仍算出卡」。
- D3:不得把已拒答线再写成「哪年结婚或订婚 / 哪年收入明显变过 / 家里哪年添丁」。D1b 允许用「登记结婚那天」作日精度例子。
- 未走让步。
## 验收数字
- 新测 `rectification-open-collect-invite-20260914.test.ts` 3/3
- 定向:`rectification-tiebreak-before-card-20260914.test.ts``rectification-targeted-collect-cards-20260913.test.ts``rectification-probe-pool-exhausted-20260911.test.ts``rectification-delivery-vs-collect-20260914.test.ts``rectification-surface-state.test.ts``agent-voice-copy-contract.test.ts``rectification-collection-question-pool.test.ts``rectification-convergence-budget.test.ts``rectification-range-delivery-20260907.test.ts` 全绿
- `tsc --noEmit`0 错
- `npm run lint`0 error(既有 warning 未顺手改)
- 全量 `npm test`3018 / pass 2850 / fail 154 / skip 14。失败条数与本机 Windows 基线同型(CRLF、Skill SHA、Docker/DB、无 symlink)。Linux 门禁基线 27 条,本轮未新增失败。
- `next build`:本工作树 `frontend/node_modules` 是 junction,未跑;`/` 是否仍 `○ Static` 需在有真实 `node_modules` 的树上复核
## 环境缺口
- 无 staging 登录态、无 Chrome:真机清单见 `docs/testing/rectification-open-collect-invite-20260914.md`
- `rectification-exhaustion-exit-20260906.test.ts` 本机因 Skill SHAWindows CRLF / 无软链)无法导入,Linux 门禁会跑
+1 -1
View File
@@ -190,7 +190,7 @@
| `TASK-rectification-precision-adaptive-boundary-research-20260914.md` | `PROGRESS-rectification-precision-gate-research-20260914.md` | **研究单**:出题闸门 `MIN_BOUNDARY_DAYS=45`(刷新 30)不看证据精度,而出生时间每差 1 分钟大运边界只平移约 1.1 天——20 分钟窗内的候选边界全挤在三周内被整批丢掉,这就是「六题后出不来题」的算术原因。量闸门按年/月/日分档(G0–G4)的收益,并必测答错容忍度(±3/±7/±14 天偏移下真值是否被挤出) | 待执行 | `codex/rectification-precision-gate-research-20260914` |
| `TASK-rectification-open-collect-invite-20260914.md` | `PROGRESS-rectification-open-collect-invite-20260914.md` | **P0**:固定七条采集线问完后只说「能问的都问完了」,用户不知道还能补经历、也不知道补了有用;而两轮研究证明补带年月经历是唯一有效手段。产品拍板:交付卡照出 + 卡上给不限领域的补充邀请(举七条线之外的例子),补完必须可见生效(BUG-689) | 待执行 | `codex/rectification-open-collect-invite-20260914` |
| `TASK-rectification-open-collect-invite-20260914.md` | `PROGRESS-rectification-open-collect-invite-20260914.md` | **P0**:固定七条采集线问完后只说「能问的都问完了」,用户不知道还能补经历、也不知道补了有用;而两轮研究证明补带年月经历是唯一有效手段。产品拍板:交付卡照出 + 卡上给不限领域的补充邀请(先要确切日期,再退年月;举七条线之外的例子),补完必须可见生效(BUG-689) | 待验收 | `codex/rectification-open-collect-invite-20260914` |
| `TASK-rectification-cluster-width-research-20260914.md` | `PROGRESS-rectification-cluster-width-research-20260914.md` | **研究单**:上一轮证明调权重改不动交付区间宽度——所有方案宽度中位数都等于整个搜索窗。先确认 sweep 的宽度口径是否含淘汰(M0),再画簇结构像(M1),最后量三个改法:放宽簇上限、按分差决定是否合并、交付区间改分位覆盖(M2)。真值覆盖率不得下降 | 待验收 | `codex/rectification-cluster-width-research-20260914` |
@@ -0,0 +1,11 @@
# 并列后补一件带年月经历:真机清单(2026-09-14)
分支 `codex/rectification-open-collect-invite-20260914`。本环境无 staging 登录态。
## BUG-689
- [ ] 固定七条线(结婚 / 收入 / 搬家 / 家人 / 学业 / 健康 / 职业)都答过「没有/跳过」后,范围卡仍出现。
- [ ] 前两名相对可能性相差不超过约 3 个百分点时,卡的正文(不是浅色小字)写「这两分钟按现有信息分不开」,并请再说一件记得确切哪一天的事、不限领域;例子里至少有登记结婚那天、入职第一天、手术那天、孩子出生那天、拿到录取通知那天中的两个。记不得哪一天时,才退到年月。
- [ ] 正文里不再出现「能问的都问完了」,也不再把已经说过没有的线写成「哪年结婚或订婚 / 哪年收入 / 家里哪年添丁」。
- [ ] 「更像这个」和「新建对话按此时间排盘」的出口仍可用,邀请不挡住采用。
- [ ] 并列出卡后,在输入框补一件带日期的经历(能到日更好,年月也可以):账本应记下这件事,范围或候选排序应有可见变化,或出现新的一问。不得停在「问完了」且没有任何反应。
@@ -18,4 +18,4 @@
## BUG-687
- [ ] 范围卡文案不再出现已经答过「没有/跳过」的线(结婚、收入、添丁等)。
- [ ] 能问的线都关闭时,写「能问的都问完了」,不暗示还有没问的线
- [ ] 能问的线都关闭时,不再列出已经拒答的线;后续邀请口径见 `rectification-open-collect-invite-20260914.md`BUG-689