docs(tasks): invite one more dated event instead of saying the pool is closed

两轮研究定论:候选并列靠调打分拉不开,唯一有效手段是用户再给带年月的经历。
但七条固定采集线问完后,卡上只说「能问的都问完了」(BUG-687 引入),用户读完
就走——而交付后 case 仍是 candidate_ready,补经历本来就会重算收窄。产品拍板:
交付卡照出,卡上换成不限领域的补充邀请并举七条线之外的例子;不采用「并列时
先不出卡」(接近 BUG-646 禁止的门关不出结果)。补完必须可见生效,有行为测试守。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0155nFCgCHtoA7jhSDGmZmMu
This commit is contained in:
Jesse_Chen
2026-09-14 14:24:01 +00:00
co-authored by Claude Fable 5
parent a643452b44
commit 558d43c853
2 changed files with 84 additions and 0 deletions
+2
View File
@@ -186,6 +186,8 @@
| `TASK-rectification-tiebreak-hold-exit-fix-20260914.md` | `PROGRESS-rectification-tiebreak-hold-exit-20260914.md` | **P0 回归修复单**:BUG-686 的风格题前置把耗尽与收口路径的交付也压住了,`npm test` 由 27 红涨到 33(6 条「该交付却不交付」)。后续 `6fd7925a` 只改断言把它们改绿:4 条文案放宽可接受,2 条实质弱化(「恰好一条交付闸」退化成短路、参考题确认语被算作出口载体)必须恢复;行为层根因未动。hold 要带出口、不得作用于 exhausted/closed-ceiling,最多 hold 一次(BUG-688)。尚未部署,未影响线上 | 待验收 | `codex/rectification-tiebreak-hold-exit-20260914` | | `TASK-rectification-tiebreak-hold-exit-fix-20260914.md` | `PROGRESS-rectification-tiebreak-hold-exit-20260914.md` | **P0 回归修复单**:BUG-686 的风格题前置把耗尽与收口路径的交付也压住了,`npm test` 由 27 红涨到 33(6 条「该交付却不交付」)。后续 `6fd7925a` 只改断言把它们改绿:4 条文案放宽可接受,2 条实质弱化(「恰好一条交付闸」退化成短路、参考题确认语被算作出口载体)必须恢复;行为层根因未动。hold 要带出口、不得作用于 exhausted/closed-ceiling,最多 hold 一次(BUG-688)。尚未部署,未影响线上 | 待验收 | `codex/rectification-tiebreak-hold-exit-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` | | `TASK-rectification-cluster-width-research-20260914.md` | `PROGRESS-rectification-cluster-width-research-20260914.md` | **研究单**:上一轮证明调权重改不动交付区间宽度——所有方案宽度中位数都等于整个搜索窗。先确认 sweep 的宽度口径是否含淘汰(M0),再画簇结构像(M1),最后量三个改法:放宽簇上限、按分差决定是否合并、交付区间改分位覆盖(M2)。真值覆盖率不得下降 | 待验收 | `codex/rectification-cluster-width-research-20260914` |
| `TASK-rectification-minute-resolution-research-20260914.md` | `PROGRESS-rectification-minute-resolution-research-20260914.md` | **研究单**:候选分不开的根因是打分尺度——窗口内恒定项 11.5 分 vs 随分钟变化项 2.125 分(≈5:1)。先修封存基准(v3 每例仅 3 件事且被标 invalidated)出 v4,再离线量五个改法:分盘除数、去底座、**KP 宫头子主计分(产品 09-14 拍板,推翻 BUG-325 一条红线)**、年精度事件改边际似然、聚类签名层对齐。有收益才立实现单 | 待验收 | `codex/rectification-minute-resolution-research-20260914` | | `TASK-rectification-minute-resolution-research-20260914.md` | `PROGRESS-rectification-minute-resolution-research-20260914.md` | **研究单**:候选分不开的根因是打分尺度——窗口内恒定项 11.5 分 vs 随分钟变化项 2.125 分(≈5:1)。先修封存基准(v3 每例仅 3 件事且被标 invalidated)出 v4,再离线量五个改法:分盘除数、去底座、**KP 宫头子主计分(产品 09-14 拍板,推翻 BUG-325 一条红线)**、年精度事件改边际似然、聚类签名层对齐。有收益才立实现单 | 待验收 | `codex/rectification-minute-resolution-research-20260914` |
@@ -0,0 +1,82 @@
# TASK · 并列时不说「问完了」,改成请用户补一件带年月的经历 — 2026-09-14
- 基线:`origin/staging` @ `a643452b`(代码最新 `963c147c`staging 已部署该 SHA)。
- 分支:`codex/rectification-open-collect-invite-20260914`worktree `.worktrees/rectification-open-collect-invite-20260914`
- 关联:BUG-687(引入「能问的都问完了」这句收口文案)、BUG-646/651/653(门关不出结果是禁止的、必须有出口)、BUG-590、BUG-688。研究背景见 `docs/research/rectification_minute_resolution_closure_2026_09_14.md`
- 串行:改 `user-copy.ts``collection-question-pool.ts` 文案层与 `rectification-range-delivery.tsx` 卡片一处;与在途分支无重叠。
## 1. 问题
两轮离线研究(定论页见上)证明:候选并列**靠调打分尺度拉不开**,目前唯一被证明有效的信息源是**用户再给一件带年月的经历**。
但产品现在的表现正好相反:
- 定向补事只覆盖固定七条线(结婚 / 收入 / 搬家 / 家人 / 学业 / 健康 / 职业)。用户答「没有发生过」就关闭该线,七条关完后,`rangeNarrowHint``collection-question-pool.ts:845-849`)输出 **「能问的都问完了」**`RECTIFICATION_USER_COPY.rangeDeliveryCollectClosed``user-copy.ts:152`BUG-687 引入)。
- 这句是终局口吻。用户读完就走了,**而他其实完全可能有第八类经历**——换专业、出国、打官司、创业、重病、亲人离世、搬迁工作城市……系统从来没请他说过。
- 真机实证:用户对结婚 / 收入 / 家人三条都答「没有 / 跳过」,只答了搬家,随即出卡 26% / 26% / 20%,然后被告知"问完了"。
**能力其实已经在了**:交付后 case 状态是 `candidate_ready`,属于 `RESUMABLE_CASE_STATUSES``v9/case-status.ts:26`),输入框不禁用;此时用户补一件带年月的经历会进账本、触发重算、候选重新打分、范围可以再收窄。**缺的只是邀请与保证。**
## 2. 决策记录
| 决策 | 内容 |
| --- | --- |
| D1 | **产品拍板(2026-09-14):并列且固定七条线问完时,交付卡照出,但卡上把「能问的都问完了」换成明确邀请。** 文案要点:①说清这两分钟按现有信息分不开;②请用户再说一件**记得年月的事,不限领域**;③给几个七条线之外的例子(换专业、出国、打官司、创业、重病、亲人离世);④说明补完会接着算。措辞对照 `frontend/docs/VOICE.md`。 |
| D2 | **不采用"并列时先不出卡、再要一轮经历"**(评估时的方案 B)。理由:接近 BUG-646 明令禁止的「门关不出结果」;用户真没有可说的时候会多一道无效问答,并可能退回开放式追问的死角。**交付卡必须照出,用户随时可以停。** |
| D3 | **邀请不得退回列举已拒答的线**(BUG-687 的修复保持有效)。邀请语是"不限领域 + 举例",不是把结婚 / 收入 / 家人再问一遍。 |
| D4 | **补完必须可见地生效。** 用户在交付卡之后说出的带年月经历,必须进账本、重算、并在界面上有可见变化(范围卡更新,或给出新一轮题)。补了没反应属于缺陷——本单要有行为测试守住。 |
| D5 | 不改判据、不改打分、不放宽置信度或确认门控;不新增卡片组件;Skill 版本按是否改用户可见话术决定是否 bump(改了就 bump 并在 `CHANGELOG.md` 写明)。 |
## 3. 硬红线
1. `tsc --noEmit` 0 错;`npm run lint` 0 error`npm test` 失败数 = 基线 27 条;`next build` 通过且 `/``○ Static`;首屏 gzip ±2%。
2. 新增断言必须是行为断言。
3. 不得让邀请变成阻塞:交付卡、采用入口、"新建对话按此时间排盘"的出口都要照常可用。
4. 不得把邀请写成承诺(「再说一件就能定到分钟」这类)。实话是"能不能再收窄取决于这件事落在哪段大运边界上"。
## 4. 任务分解
### 任务 1 · 文案(P0
- `user-copy.ts:152``rangeDeliveryCollectClosed` 改成邀请语(按 D1 四要点);保留一个独立常量名以便测试与 VOICE 对照。
- `collection-question-pool.ts:845-849` 两处返回点同步;`现在还剩 XY 里 N 个候选。` 这半句保留。
- 验收标准:行为单测——七条线全部 declined 时,`rangeNarrowHint` 的输出**不含**「问完了」类终局措辞,**包含**"不限领域"的邀请与至少两个七条线之外的例子;且不含结婚 / 收入 / 添丁等已拒答线的字样(BUG-687 回归)。
### 任务 2 · 交付卡把邀请放在看得见的位置(P0)
- `frontend/src/components/rectification-range-delivery.tsx`:并列(前两名相对可能性差 ≤ 3 个百分点)且采集线已关闭时,邀请语要出现在卡片正文区,不能只躺在时间轴那行浅色小字里。
- 不新增组件、不新增第二套卡片路径(§6 红线)。
- 同一提交更新 `frontend/DESIGN.md` 的交付卡条目。
- 验收标准:行为单测/快照——该状态下卡片渲染包含邀请文本;非并列或采集线仍开放时不显示该邀请。
### 任务 3 · 补完必须生效(P0)
- 走查并用行为测试固定:交付卡之后用户输入一件带年月的经历 → 证据入账 → 重算 → 快照的 `credible_range` / 候选分数有变化,或给出新一轮题。
- 验收标准:行为单测(可用既有 fakeAccounting 套路)——交付态 + 新增一件 confirmed dated evidence → `decideFromDossier` 的结果不再是同一份快照(`snapshotCurrent === false` 或候选分数变化),且界面状态不停在 `delivered`
### 任务 4 · 记录
- `docs/BUG_HISTORY.md` 新增 **BUG-689**`resolved`):现象写"七条线问完后只说『能问的都问完了』,用户不知道还能补经历,也不知道补了有用";防复发条写明:**采集线关闭不等于校正结束;交付卡必须给出不限领域的补充邀请,且补充必须可见地生效。**
- `CHANGELOG.md` 一行;`PROGRESS-rectification-open-collect-invite-20260914.md``docs/testing/` 清单:并列出卡后补一件带年月的经历 → 范围或排序应有可见变化。
## 5. 让步顺序
1. 任务 1、任务 3 必做(文案 + 补完真的有用)。
2. 任务 2 若卡片布局改动风险大,可先只改文案位置不改结构,写进进度记录。
## 6. 开工前置命令
```bash
git fetch origin --prune
git worktree add -b codex/rectification-open-collect-invite-20260914 \
.worktrees/rectification-open-collect-invite-20260914 origin/staging
cd .worktrees/rectification-open-collect-invite-20260914
ln -s /workspace/Jyotisha/.venv .venv
cd frontend && npm ci
```
开工前读:`docs/research/rectification_minute_resolution_closure_2026_09_14.md`(为什么"补经历"是唯一有效手段)、`docs/BUG_HISTORY.md` 的 BUG-687、646、651、653、688,以及 `frontend/docs/VOICE.md`
## 7. BUG 编号起点
- 起点 **BUG-689**(当前最大号 688)。