fix(rectification): refresh remaining probes and targeted collect before delivering range (BUG-653/654)
Independent Staging Quality Gate / validate (push) Successful in 13m54s
Independent Staging Quality Gate / publish (push) Successful in 10m50s

Dated-choice exhaustion is not convergence. Refresh probes from remaining
active candidates, then ask a targeted collect, then deliver. Skill 10.0.24.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Jesse_Chen
2026-09-11 18:28:39 +08:00
co-authored by Cursor
parent 9941c34d4b
commit 6c9a089620
58 changed files with 2109 additions and 295 deletions
+32
View File
@@ -10133,6 +10133,38 @@
- 复发自:BUG-629(性格题降权后仍被当成必答区分题)
- 修复版本:`66f63c76`;门禁跟进 `f870d3d7`
## BUG-653 | 带年月题池空必须按剩余候选刷新探针,不得直接出卡
- 状态:resolved
- 首次发现:2026-09-11
- 最近更新:2026-09-11
- 影响面:`refreshDiscriminatorProbes``persistNextInterviewIfIdle` / `AfterChoice``event_probes.py`
- 用户现象:六道带年月选择题答完后,范围仍是约 20 分钟、头名约 29%,系统却直接出三列区间卡。
- 触发条件:训练门已开、引擎一次性生成的带年月探针问完、TypeScript 侧只更新分数、未再拿剩余活跃候选去引擎生成探针。
- 根因:区分探针只在引擎跑账本时按初始簇生成一次。选择题答完后不刷新。`MAX_PROBES=8`、每域每年一道、家人存在题被 0.85 先验整域丢弃,把还能切开剩余簇的题掐掉。
- 修复:池空且未收敛时 `refreshDiscriminatorProbes` 用活跃候选 `column_times`、全部已答键 `asked_probe_keys``refresh_probes=true` 调引擎,探针并入 `inference_state.probes`,不改 `candidate_set_id` / 已答题。每个候选集最多刷新 2 次。剩余候选 ≤5 时刷新上限 12/4。带月份的家人 `dasha_boundary` 不再因先验丢弃,只用于排序。
- 验证:`frontend/tests/rectification-probe-pool-exhausted-20260911.test.ts` T0/T1`tests/test_candidate_discriminator_contract.py` 刷新上限与家人月级边界。
- 防复发:刷新必须走现有 `keepAnswers` 回放路径(BUG-587 / BUG-594);`asked_probe_keys` 带全部已答键,同域同年去重(BUG-559)。性格题不得进刷新池(BUG-651)。
- 相关记录:BUG-651、BUG-654、BUG-629、BUG-559、BUG-587、BUG-594
- 复发自:BUG-651(池空即交付,未先按剩余候选再出题)
- 修复版本:待发布
## BUG-654 | 刷新后仍无带年月题须定向补事,卡片标题为目前范围
- 状态:resolved
- 首次发现:2026-09-11
- 最近更新:2026-09-11
- 影响面:`targetedCollectPool``decideRectification`、区间卡 `RectificationRangeDelivery`
- 用户现象:带年月题问完后直接出卡,标题写成「这次给出的范围」,没有「还能再收窄」;家人 / 财务 / 迁居等能切开 05:00 换升的线从未被问。
- 触发条件:刷新后带年月池仍空,或用户尚未说「没有了」;交付文案把当前范围写成结束。
- 根因:S1 锚定追问在训练门开后停;S2 池空直接 S3。交付条件把「池空」当成结束。卡片标题用「这次给出的范围」,BUG-651 的「再补什么」句只在 persist 旁白、不在卡上。
- 修复:刷新后仍无带年月题则出定向补事口述题(剩余换升层映射到领域,≥2 个具体例子,不带推算年份)。答新事则重算回 S2;答「没有了」才交付。交付条件改为收敛,或刷新与定向补事都用尽,或用户主动停。卡片标题「目前范围」,卡下「还能再收窄」取定向补事首条。禁用「这次给出」「最终」。
- 验证:`frontend/tests/rectification-probe-pool-exhausted-20260911.test.ts` T3/T4`rectification-collection-question-pool.test.ts` 定向补事;`agent-voice-copy-contract.test.ts` 禁词。
- 防复发:`!separation.sufficient && !probe``refreshExhausted && targetedCollectExhausted` 之前不得 `completeWithRange` / `finish`。不得静默空载体(BUG-652)。
- 相关记录:BUG-653、BUG-651、BUG-652、BUG-629
- 复发自:BUG-651(池空即交付,未做定向补事)
- 修复版本:待发布
## BUG-652 | 答题事务有决策无载体时必须回落到交付或缺口句
- 状态:resolved
@@ -0,0 +1,35 @@
# 进度 · 带年月题问完不等于收敛:交付前先刷新再定向补事(2026-09-11)
## 范围
- 分支:`codex/rectification-narrow-before-deliver-20260911`(基于 `origin/staging` @ `9941c34d`
- BUG-653:带年月池空先按剩余活跃候选刷新探针
- BUG-654:刷新后仍无题则定向补事;卡片「目前范围」+「还能再收窄」
- 不改确认门、`SCORE_DELTA``MIN_ACCEPTANCE_*`
- Skill 10.0.23 → 10.0.24
## T0
真机事故是第六题后直接出 04:4805:07 三列卡。BUG-651 T5「再补什么」只在 persist 旁白,不在卡片标题。本单把交付推迟到刷新与定向补事用尽。
## 完成
- T1 `refreshDiscriminatorProbes`:每个 `candidate_set_id` 最多 2 次;不改已答题
- T2 刷新上限 12/4(剩余 ≤5);家人月级 `dasha_boundary` 不因 0.85 先验丢弃
- T3 `targetedCollectPool` / 答「没有了」进 S3
- T4 交付条件与卡片文案;卡下 `rectification-range-delivery__narrow` 有 CSS 规则
- T5 BUG-653/654、CHANGELOG、场景 0b、Skill 10.0.24
## 验收(本机,未部署)
- `frontend` `tsc --noEmit` 0 错
- `npm run lint` 0 error(既有 warning 仍在)
- 相关 TAP `tests/rectification-*.test.ts` + `agent-voice-copy-contract` + `skill-registry`**1197 / 1197**
- Python`test_candidate_discriminator_contract.py` 11 + `test_rectification_event_probes.py` 35fail=0
- `run_quality_gate.py --profile quick`Python 段 734 passed;随后整仓 `npm test` 曾因并行 Docker 超时失败 3 条(foundation DML / personal report job / v9 新鲜库迁移),另 1 条 CSS 合同已修
- `next build --webpack``/``○ Static`Next 16 路由表不再印 First Load JS`rootMainFiles` gzip 130934 B
## 未做
- 部署后真机按场景 0b 走一遍(验收方 Claude)
- 未 commit / 未 push
@@ -19,7 +19,7 @@
- 点「先这样,先看当前范围」后必须出现候选卡或当前范围,不得只剩「没有拿到下一个问题」
- 停止后卡片数字必须等于答题后的支持度(不是引擎刚算出来的裸相对支持度),范围不得比答题后更宽,点采用必须成功
## 0b. 六道选择题答完必须出卡
## 0b. 六道选择题答完必须先刷新再补事再出卡
资料:家人记得大概时间,钟点任意,范围「差不多准」。地点任意公开城市。
@@ -27,8 +27,10 @@
期望:
- 第六题答完必须看到三列区间卡,正文有一句还可以再想起什么来再收一截
- 不得出现「没有拿到下一个问题」
- 第六题答完不得直接出卡;先出现新的带年月题(家人 / 财务 / 迁居等换运边界),或一条定向补事口述题
- 答一件家人事后应重算并回到带年月题;答「没有了 / 就这些」后才出卡
- 卡片标题为「目前范围 …(对照了 N 件经历)」,卡下有「还能再收窄:如果记得 …」
- 不得出现「这次给出」「最终」「没有拿到下一个问题」
- 不得先出 D9/D10 性格对照卡挡住结果
- 时间线有卡时写「选择题已问完,下面是当前范围」,不得写「才会变」