docs(tasks): targeted collect cards brief (BUG-661~663) and probe-supply research brief after product decision

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0193vBv6w5MV2cifdTUu9H5P
This commit is contained in:
Jesse_Chen
2026-09-13 04:10:38 +00:00
co-authored by Claude Fable 5.1
parent 4e93ca1587
commit da048676ba
3 changed files with 84 additions and 1 deletions
+3 -1
View File
@@ -175,7 +175,9 @@
| `TASK-rectification-targeted-collect-persist-20260911.md` | `PROGRESS-rectification-targeted-collect-persist-20260911.md` | 09-11 真机:6c9a0896 后六题答完又无题无卡——定向/锚定/通用采集题 `kind_hint` 违反 `target_kind` CHECK 落不了库、引擎刷新用整网格空转、`targetedCollectExhausted` 按池非空判定成永久等待。执行方只拿到 T0/T3 片段,做成 BUG-655(刷新空题不写库) | 部分实现 `512be9b7`;余项见修复单 | `codex/rectification-targeted-collect-persist-20260911` |
| `TASK-rectification-targeted-collect-persist-fix-20260911.md` | `PROGRESS-rectification-targeted-collect-persist-fix-20260911.md` | 修复单:BUG-656 采集焦点 kind 映射到 CHECK 枚举;BUG-657 引擎刷新按 `column_times` 取剩余候选;BUG-658 刷新尝试持久化 + 等待收窄以已问过判定(512be9b7 让无新题时 GET 永远等待且每轮重调引擎) | 已实现 `eae049d0` + `529fcc09`,已部署;静态验收通过,真机六题流程待走 | `codex/rectification-targeted-collect-persist-fix-20260911` |
| `TASK-rectification-set-focus-tool-failed-20260912.md` | `PROGRESS-rectification-set-focus-tool-failed-20260912.md` | 09-12 真机:记完两件学业后 `rectification-set-focus` 连续六次 `tool_failed`(兜底码,原始错误无处记录;焦点其实已由 batch 工具落下)、宿主兜底正文日期重复(BUG-659/660 | 待验收 | `codex/rectification-set-focus-tool-failed-20260912` |
| `TASK-rectification-after-pool-empty-decision-20260913.md` | — | 决策单草案:六道带年月题问完、引擎刷新无新题后,定向补事是开放式口述题,体感死板。给出 A 逐条点选 / B 放宽引擎出题(先离线量收益)/ C 参考题可选入口 / D 文案 四个方案,建议 A+D(+C) | 待产品拍板,未拍板不开工 | — |
| `TASK-rectification-after-pool-empty-decision-20260913.md` | — | 决策单草案:六道带年月题问完、引擎刷新无新题后,定向补事是开放式口述题,体感死板。给出 A 逐条点选 / B 放宽引擎出题(先离线量收益)/ C 参考题可选入口 / D 文案 四个方案,建议 A+D(+C) | 已拍板 2026-09-13A+D+C 进 `TASK-rectification-targeted-collect-cards-20260913.md`B 进研究单 | — |
| `TASK-rectification-targeted-collect-cards-20260913.md` | `PROGRESS-rectification-targeted-collect-cards-20260913.md` | 定向补事改逐条点选卡(有/没有/记不清 → 有则口述年月;没有不计分只防复问;全没有出卡)+ 文案说清剩余候选与线 + 卡下「再答两道参考题」入口(BUG-661663Skill 10.0.25 | 待执行 | `codex/rectification-targeted-collect-cards-20260913` |
| `TASK-rectification-probe-supply-research-20260913.md` | — | 研究单:六题后引擎在剩余候选上再出带年月题的四种放宽规则,20 例公开 AA 数据离线量收益,有收益才立实现单 | 待执行(离线,不改线上) | `codex/rectification-probe-supply-research-20260913` |
## 命名与归档
@@ -0,0 +1,27 @@
# 研究单 · 六题之后引擎还能不能多出带年月的选择题(2026-09-13)
- 基线:`origin/staging` @ `4e93ca15`(代码 `5d54d059`
- 分支:`codex/rectification-probe-supply-research-20260913`
- 性质:**离线测量,不改线上行为**。有收益才另立实现单。
- 决策来源:`TASK-rectification-after-pool-empty-decision-20260913.md` 方案 B,产品负责人 2026-09-13 拍板「单独研究,先量收益」。
## 1. 问题
真机六道带年月题答完后,引擎对剩余 5 个候选刷新得到 `no_new_probes`。原因在 `scripts/rectification/event_probes.py`:换运边界要跨 45 天或跨年(`MIN_BOUNDARY_DAYS`)、同上升的 Narayana 边界完全相同、已问年份与已知事件前后一年封锁(`EXISTENCE_NEARBY_YEARS`)、每域每年只留一道。
## 2. 要量的东西
对 20 例公开 AA 数据(`minute_rectification_fact_ranker_v4_holdout_v3`),模拟「六题后剩余 ≤5 候选」的状态,分别按下面四种放宽规则再生成题,统计:新增题数、每道题对真实分钟所在簇的分辨(真实簇落在 yes 组还是 no 组、与其它簇是否被分开)、按最优答案回放后头名命中率与范围宽度的变化。
| 放宽项 | 改法 |
| --- | --- |
| R1 | 刷新阶段去掉 `EXISTENCE_NEARBY_YEARS` 封锁(只封已问过的确切年) |
| R2 | 同域同年按不同事件家族再出一道(入职 / 升职 / 离职;结婚 / 分手) |
| R3 | `MIN_BOUNDARY_DAYS` 45 → 30(只刷新阶段) |
| R4 | 边界来源加 Vimshottari 第三级(pratyantar)与分盘 NarayanaD9 / D10 上升) |
## 3. 交付
- `scripts/research/probe_supply_after_six.py` + 结果表 `docs/research/probe_supply_after_six_2026_09_13.md`:每个放宽项单独与组合的四个指标。
- 结论只写三种:有收益(命中率不降、平均多 ≥1 道有分辨力的题)→ 立实现单;无收益 → 关闭;不确定 → 说明缺什么数据。
- 不得动线上 `event_probes.py` 默认行为;不得把研究脚本接进生产路径。
@@ -0,0 +1,54 @@
# TASK · 定向补事改成逐条点选卡 + 文案 + 参考题入口(2026-09-13
- 基线:`origin/staging` @ `4e93ca15`(代码 `5d54d059`,已部署;含 BUG-646660Skill 10.0.24
- 分支:`codex/rectification-targeted-collect-cards-20260913`,基于 `origin/staging`
- 执行方:coding agent;验收:Claude
- BUG 编号起点:**BUG-661**(开工时核对 `docs/BUG_HISTORY.md` 最大号,应为 660
- 决策来源:`TASK-rectification-after-pool-empty-decision-20260913.md`,产品负责人 2026-09-13 拍板:**做 A + D,顺带 C;B 单独研究单**(`TASK-rectification-probe-supply-research-20260913.md`),不与本单混做。
- 不改引擎计分、不改确认门;Skill 若改用户可见流程升 10.0.25(本单预计要升:定向补事的问法变了)。
## 1. 现状(2026-09-13 真机,5d54d059
六道带年月题答完 → 刷新 `no_new_probes` → 落下定向补事口述题:「还有4条线能把 04:51 和 05:06 分开:哪年结婚或订婚、哪年收入明显变过、哪年搬家、家里哪年添丁。记得哪件说哪件,年月大概就行。」范围 04:48–05:07,5 簇,头名 32%。流程正确但体感死板:一道开放题堆四条线,没有可点的东西;「04:51 和 05:06」是范围两端而不是剩余候选的说明。
## 2. 决策记录(产品负责人 2026-09-13
1. **A**:定向补事拆成一次一条的点选卡。每条线先问「有没有」(有 / 没有 / 记不清),答「有」再口述年月;答「没有」记为该线近年无事(**不计分**,只用于不再问);答「记不清」同「没有」处理但话题状态记 skipped;所有线都问完仍无新事 → 出「目前范围」卡(现有 S3)。
2. **D**:题干与卡下提示说清「现在还剩 04:48–05:07 里 N 个候选,能把它们分开的是这几条线」;不再写「04:51 和 05:06」这类范围端点。
3. **C**:「目前范围」卡下加入口「再答两道参考题微调排序」,点了才出 D9 / D10 性格卡,按 BUG-629 的 `tie_break`(±1、不淘汰、不改 `can_adopt`)。不点不出。
4. 「没有」的信息价值:不计分、不淘汰、不进引擎;只在账本话题里记 `collect:targeted:<domain>` declined,防复问;与 BUG-629「无年月否定不参与打分」一致。
5. 四条线都「没有」后直接出卡:接受(现有行为)。
## 3. 硬红线
- 不改 `SCORE_DELTA``MIN_ACCEPTANCE_*`、收敛门;性格题不得回到计分池(BUG-629 防复发)。
- 每条线只问一次;「有」之后的年月追问只问一次,答不出则该线记 skipped。
- 焦点落库走服务端(`persistServerOwnedFocus`),`target_kind` 走 BUG-656 的映射;不得再出现「决策有题、库里无题」(BUG-652 / 657 不变量测试照跑)。
- 文案禁词照旧(领域、任何领域、做不了、材料不够、还差 N 件、才会变、这次给出、最终)。
- 既有测试总数不降;改断言写原值 / 新值 / 原因;记录只用脱敏领域 + 年月。
## 4. 任务分解
- **T1 逐条点选(BUG-661**`collection-question-pool.ts` `targetedCollectPool` 改为按 `remainingLayers → REMAINING_LAYER_DOMAIN` 逐条产出 `{domain, existence_prompt, year_prompt}`,排除已覆盖 / 已 declined / 已 skipped 的线;`method-followup.ts` `targetedCollectFollowup` 产出带 `choice_frame``collect:targeted:<domain>`(选项 A 有 / B 没有 / C 记不清,`scoring:false`);`answer-choice.ts` 处理:A → 落 `collect:targeted:<domain>:year` 口述焦点(题干「大概哪年几月?」);B → 话题 declined、下一条;C → 话题 skipped、下一条;口述年月 → 走现有 batch 写证据 → 引擎重算 → 回到 S2。验收:§1 序列六题答完后出第一条卡「结过婚或订过婚吗?」;答 B → 下一条卡;答 A → 「大概哪年几月?」;答「2022 年 5 月」→ 账本多一条 relationship 事件、引擎重算、出现新的带年月题或范围句变化;四条都 B → 「目前范围」卡;全程不出现「没有拿到下一个问题」。
- **T2 文案(BUG-662**`rangeNarrowHint` / 定向卡题干 / 时间轴行:「现在还剩 04:48–05:07 里 5 个候选,能把它们分开的是这几条线:…」;卡下提示「还能再收窄:如果记得…」保留。`agent-voice-copy-contract` 加禁词「能把 HH:MM 和 HH:MM 分开」(正则)。验收:文案合同测试。
- **T3 参考题入口(BUG-663**`rectification-range-delivery.tsx` 卡下入口「再答两道参考题微调排序」→ 点击调用 `set-focus` 落 D9 / D10 `varga_style` 卡(复用 BUG-629 `tie_break` 路径);答完刷新卡,`can_adopt` 不变。验收:不点不出;点后出 D9 卡、答后 `rounds.kind=tie_break`、头名可变但无淘汰。
- **T4 Skill 10.0.25 + 记录**SKILL.md 与 `references/conversation-strategy.md` 里「定向补事」改为逐条点选;registry;`case-status.ts`;部署后先验 10.0.24 历史可打开(BUG-621);BUG-661663 入历史;CHANGELOGPROGRESS`docs/testing/rectification-scenarios-20260907.md` 加场景 0d。
## 5. 让步顺序
T3 可拆下一单;T1 + T2 不可省。
## 6. 开工前置命令
```bash
git fetch origin --prune
git worktree add -b codex/rectification-targeted-collect-cards-20260913 .worktrees/rectification-targeted-collect-cards-20260913 origin/staging
grep -o "^## BUG-[0-9]*" docs/BUG_HISTORY.md | sort -t- -k2 -n | tail -1 # 应为 660
cd frontend && npm test -- tests/rectification-collection-question-pool.test.ts tests/rectification-probe-pool-exhausted-20260911.test.ts tests/rectification-replay-20260911.test.ts tests/rectification-yearless-probe-downgrade-20260909.test.ts tests/agent-voice-copy-contract.test.ts
```
## 7. 验收口径
- 前端 `tsc --noEmit` 0 错、`npm run lint` 0 error、相关套件 fail=0、测试总数 ≥ 基线;`next build``/` 仍 Static、首屏 gzip ±2%。
- Skill 升版后 `skill-registry.test.ts` 通过,旧版本哈希不变。
- 部署后真机按 §4 T1 验收序列走一遍。