fix(rectification): D9 判别题不再借 D24 探针,性格描述一列一句
Independent Staging Quality Gate / validate (push) Failing after 13m34s
Independent Staging Quality Gate / publish (push) Skipped

This commit is contained in:
jesse-ux
2026-09-17 01:06:17 +08:00
parent daacaab9e9
commit 227a75719b
17 changed files with 741 additions and 13 deletions
+50 -2
View File
@@ -5894,8 +5894,8 @@
- 根因:(1) `stampChoiceSchemaWithProbe` 用引擎最高增益探针盖 schema,把对比探针换成已答教育题;`event_probe``probe_id` 时被当成已答,不建焦点。GET 投影不传 `contrastPacket` / `userStopped`。(2) 对比探针按整窗 D10 星座建题,`supportsCandidateIds` 是星座名不是分钟;`askedKeys` 不含自然语言答过的职责倾向。(3) 质量探针先占领域,挡住 dasha 年界;代表对取整窗第一次换升。`answersFromEvidence` 把同年入学当成考试失常。(4) 停问词匹配不到「没有了」。
- 修复:对比探针用自己的 `semantic_key` 盖戳,缺引擎 `probe_id` 时仍建焦点;GET 与工具侧同一套 plan 输入。剩余候选按 D24/D10 分钟切开;职责倾向记入 `askedKeys`。质量探针不得挡住 dasha;代表对取当前候选集。入学不再自动回答质量探针。停问词加上「没有了」等,停问且可出牌时出并列区间。不把 `occupation_note` 改成主评分事件,不打开 `confirmation_allowed`,不改 Skill `10.0.11`
- 验证:`rectification-spoken-answer``rectification-server-focus``rectification-choice-card``rectification-decide-next-action``rectification-eight-method``rectification-inference-machine``tests/test_rectification_event_probes.py`
- 防复发:覆盖已齐且候选并列时必须落 A/B/C/D;对比探针的 `supports/conflicts` 必须是剩余候选分钟。点选必须改后验。停问且可出牌时走 `offer_provisional_range`,不得再问已答职责题。
- 相关记录:BUG-348、BUG-350、BUG-351、BUG-366、BUG-373、BUG-374
- 防复发:覆盖已齐且候选并列时必须落 A/B/C/D;对比探针的 `supports/conflicts` 必须是剩余候选分钟。点选必须改后验。停问且可出牌时走 `offer_provisional_range`,不得再问已答职责题。2026-09-16 复发(BUG-912):无探针的分盘风格题借最高增益探针。
- 相关记录:BUG-348、BUG-350、BUG-351、BUG-366、BUG-373、BUG-374、BUG-912
- 复发自:BUG-348 / BUG-366(区分卡与覆盖≠收敛已写过,焦点持久化和剩余候选切开未接到这条会话)
- 修复版本:d7afe5b50de488d98a2ca666763784158e7c3be2
@@ -11843,4 +11843,52 @@
- 复发自:无
- 修复版本:待发布
## BUG-912 | D9 感情判别题借 D24 对照探针:错分 + 无卡
- 状态:resolved
- 首次发现:2026-09-16
- 最近更新:2026-09-16
- 影响面:`stampChoiceSchemaWithProbe``varga-distinguish-probe.ts``projectRectificationChoiceCard``persistNextInterviewIfIdle`
- 用户现象:正文念了感情判别题,下面没有 A/B/C/D;打字答「没有」后区间被收窄。
- 触发条件:D9 风格 followup 没有自己的 `semantic_key`inference_state 里另有高增益 D24 对照探针。
- 根因:`stampChoiceSchemaWithProbe` 在无 preferred key 时退到 `selectHighestGainProbe`。BUG-375 只堵住了对比探针被已答教育题盖掉,没堵住「无探针的分盘风格题借最高增益探针」。
- 修复:不再退到最高增益探针。D9/D10 等风格题按剩余候选的分盘上升自建探针。GET 从落库副本投影;过期焦点 `superseded` 后落下一问。
- 验证:`frontend/tests/rectification-dead-d9-choice-20260916.test.ts`BUG-375 原断言仍绿。
- 防复发:无 `semantic_key` 的计分题不得盖上别的分盘探针。宁可不落库(走 BUG-674)也不错分。
- 相关记录:BUG-375、BUG-578、BUG-582、BUG-674
- 复发自:BUG-375
- 修复版本:待发布
## BUG-913 | 答「没有」后平局直接出交付卡
- 状态:closed_by_design
- 首次发现:2026-09-16
- 最近更新:2026-09-16
- 影响面:`yearlessPersonalityCanAsk``shouldHoldForTieBreak``tieBreakPersonalityFollowup`
- 用户现象:感情判别题打字答「没有」后出现三列交付卡。
- 触发条件:已有多件带年月经历、候选并列、采集进度 `missing:0`
- 根因:回放。`yearlessPersonalityCanAsk``datedCount > 0` 时为假;平局参考题只认 `varga.d9` / `varga.d10` 性格探针。线问完后的并列出卡是 BUG-689 设计出口,不是 BUG-751 / BUG-688 复发。
- 修复:不改出卡门槛。
- 验证:`yearlessPersonalityCanAsk({ datedCount: 5 }) === false`
- 防复发:有带年月经历时不得把平局交付改成强制性格题。
- 相关记录:BUG-689、BUG-688、BUG-751、BUG-912
- 复发自:无
- 修复版本:待发布
## BUG-914 | 交付卡把一对相反性格都列成共同点
- 状态:resolved
- 首次发现:2026-09-16
- 最近更新:2026-09-16
- 影响面:`scripts/rectification/refinement_packet.py` `NAKSHATRA_TRAITS` 选项、`buildRangeDelivery` `shared_traits`
- 用户现象:三列卡头同时出现「希望两边都能说得过去」和「必要时会直接选边」。
- 触发条件:升点靠近月宿交界,代表分钟是最晚一列,三列都拿 earlier 那一对。
- 根因:每个 option 把相反两极整对塞进 `traits``splitSharedTraits` 把两句都判成共同点。
- 修复:每个 option 只取第一极;`user_meaning` 写成「A{earlier[0]}。B{later[0]}。」
- 验证:Python `test_rectification_refinement_packet` 断言 `traits` 长度为 1 且两 option 不同句;前端断言两极不得同时出现在 `shared_traits`
- 防复发:一列只写一句,不得自相矛盾。
- 相关记录:BUG-912
- 复发自:无
- 修复版本:待发布
@@ -0,0 +1,28 @@
# 进度 · D9 判别题借探针 + 性格两极(2026-09-16
基线:`origin/staging` @ `daacaab9`(任务书含 BUG-375 复发定性)。
分支:`codex/rectification-dead-d9-choice-20260916`
BUG912914。Skill 未 bump。
## 做了什么
- **T1 / BUG-912**`stampChoiceSchemaWithProbe` 不再退到最高增益探针。`varga-distinguish-probe.ts` 按剩余候选的分盘上升给 D9/D10 等风格题自建 `semantic_key = method:ask_theme`。GET `persistedDistinguishCard` 从落库副本投影。过期焦点在 idle persist 里 `superseded` 后落下一问。
- **T2 / BUG-913**:回放为 **closed_by_design**。已有带年月经历时 `yearlessPersonalityCanAsk` 为假;平局参考题只认 `varga.d9` / `varga.d10`。线问完后的并列出卡是 BUG-689 出口,不是 BUG-751 / BUG-688 复发。未改门槛。
- **T3 / BUG-914**`NAKSHATRA_TRAITS` 每个 option 只取第一极。
- **T4**BUG_HISTORY / CHANGELOG / 真机清单 / 本进度。CHANGELOG 写明 2026-09-16 前分盘风格题答案可能计错分。
## 测试
| 项 | 结果 |
| --- | --- |
| `tsc --noEmit` | 0 错 |
| 改动文件 eslint | **0 error** / 5 warning(既有 unused |
| `rectification-dead-d9-choice-20260916` + BUG-375 相关套件 | **62 passed / 0 fail** |
| `pytest tests/test_rectification_refinement_packet.py tests/test_rectification_event_probes.py` | 全绿 |
| Python 快速门 | 本机缺 `mcp` 模块,compile 段之后失败。定向 pytest 已绿。 |
| `next build` | worktree `node_modules` junction,与上一单相同环境缺口,留给 Gitea。 |
## 环境缺口
- 事发 Case 的 04:48–04:59 建立在错分上,不要采用;部署后补一件带年月的事或新开 Case。
- 真机:`docs/testing/rectification-dead-d9-choice-20260916.md`
+1 -1
View File
@@ -102,7 +102,7 @@
| `TASK-rectification-exhausted-gate-exit-20260910.md` | `PROGRESS-rectification-exhausted-gate-exit-20260910.md` | 五领域全拒答 + 三件带月经历:门槛句后无载体、客户端误报「没有拿到下一个问题」并循环「接着问」(BUG-646);第三件被留作 holdout 导致永远没有选择题(BUG-647)。含产品建议:一次性开放追问 + 终态标记 + 穷尽后释放 holdout | 已被取代(并入采集重设计单) | — |
| `TASK-rectification-collection-redesign-20260910.md` | `PROGRESS-rectification-collection-redesign-20260910.md` | 产品口径:用户先说、系统从已说的事锚定追问、不得用生日推年份、不得说「领域」、永远交付结果。无固定题数:收集问题池按信息价值排序问到训练门开;选择题问到收敛门开或增益见底;门关不出结果只出精确缺口句并保持开放;≥4 件才留 holdout;撤回 BUG-642 年份线索、BUG-646 单终态与「暂定采用」;Skill 10.0.23BUG-646648 | 待验收 | `dd8f35f7` |
| `TASK-rectification-year-focus-overlay-20260916.md` | `PROGRESS-rectification-year-focus-overlay-20260916.md` | 真机:定向健康题选 A 后打字给年月,助手追问「是你本人做的吗」,追问句下面挂着录入卡(`set-focus` 同号覆盖年月焦点题干、`event_date_entry` 仍在,BUG-908);事件入账后年月焦点没关(BUG-909,回放定 resolve 还是计划层);答短句撞「本轮达到步骤上限」(BUG-910,host 前置接无年月短句,先 investigating);persisted 问题块无 `--assistant-content-inset`(BUG-911)。**产品追加拍板:「哪一类事 + 发生年月」录入卡整个删掉,年月阶段直接打字(推翻 precision-gate 单 T3 与 SKILL.md:84**。主体默认本人不追问,Skill 10.0.29 | 待验收 | `codex/rectification-year-focus-overlay-20260916` |
| `TASK-rectification-dead-d9-choice-20260916.md` | `PROGRESS-rectification-dead-d9-choice-20260916.md` | 真机(6aabbe38):删卡流程已通,但**P0** D9 感情题没有自己的探针,`stampChoiceSchemaWithProbe` 退到最高增益探针,盖上了 **D24 学业六星座对照探针**BUG-375 (1) 复发):答「没有」按 D24 计分,04:48–04:59 收窄不可信;GET 投影又匹配不上 → 无卡(BUG-912);打字答「没有」后平局直接出交付卡待回放定性(BUG-913);`NAKSHATRA_TRAITS` 整对塞进一个 option,卡头把相反两极列成共同点(BUG-914)。**串行在 year-focus-overlay 验收之后** | 待领取 | |
| `TASK-rectification-dead-d9-choice-20260916.md` | `PROGRESS-rectification-dead-d9-choice-20260916.md` | 真机(6aabbe38):删卡流程已通,但**P0** D9 感情题没有自己的探针,`stampChoiceSchemaWithProbe` 退到最高增益探针,盖上了 **D24 学业六星座对照探针**BUG-375 (1) 复发):答「没有」按 D24 计分,04:48–04:59 收窄不可信;GET 投影又匹配不上 → 无卡(BUG-912);打字答「没有」后平局直接出交付卡待回放定性(BUG-913);`NAKSHATRA_TRAITS` 整对塞进一个 option,卡头把相反两极列成共同点(BUG-914)。**串行在 year-focus-overlay 验收之后** | 待验收 | `codex/rectification-dead-d9-choice-20260916` |
### 聊天主链路与首页
@@ -0,0 +1,8 @@
# 真机清单 · D9 判别题有卡、性格不自相矛盾(2026-09-16)
在 staging 已登录账号上走。不要用真实生产用户。事发那段 04:48–04:59 **不要采用**——它建立在错分上;补一件带年月的事或新开一段。
1. 开一段新的生时校正,走到能出现「有没有…」判别题(感情/事业一类)。
2. 题干下面必须有 A/B/C/D,不能只剩一句题干和「没有拿到下一个问题」。
3. 点一个选项或打字回答后,助手只承接本题,不把学业盘的对照拿来打感情题的分。
4. 若出三列交付卡:每一列性格只有一句;卡头共同点里不能同时出现一对相反的话(例如「希望两边都能说得过去」和「必要时会直接选边」)。