docs(rectification): records for message cleanup — BUG-1135..1137, BUG-917 revision, changelog, design, voice, checklist, progress

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
This commit is contained in:
Jesse_Chen
2026-10-01 10:40:29 +08:00
co-authored by Claude Opus 5.5
parent 9d302e515c
commit c968c904e6
7 changed files with 138 additions and 1 deletions
@@ -0,0 +1,58 @@
# PROGRESS · 生时校正消息清理(2026-10-01,BUG-1135~1137)
任务书:`TASK-rectification-message-cleanup-20261001.md`。执行:Claude fork 子代理。分支 `codex/rectification-message-cleanup-20261001`,基线 `origin/staging` @ `437dcecb`。未推送。
## 环境
Linux,Node 22.14(`/exec-daemon/node`),Python 3.13。`frontend/node_modules` 由主检出 `cp -al` 硬链(同一 lockfile;Turbopack 不接受软链),未跑 `npm ci`。无 Docker(DB 套件跳过 / 环境失败,同基线)。基线 `next build` 首次因本机内存紧张类型检查中断,单独重跑通过(`/` Static),gzip 以重跑产物为准。
## 交付
| T | 内容 | 提交 |
| --- | --- | --- |
| T1 一屏一题干(BUG-1135) | GET `attachQuestionsToTurns` 与客户端 `placePersistedQuestion` 让活焦点替换「superseded 且无答案」的死焦点;挂题时复用 `stripQuestionSentences` 剥正文题干;死题 / 被替换的未答题在消息上不画任何东西(当前焦点 busy / 只读时保留题干);Case 另有活题时死题不再判 unavailable;复制文本跳过死题 | `9ec908d3` |
| T3 结算后无回执(BUG-1137) | 校正消息结算后 `timeline=[]`、无分盘说明句;写作中照旧;普通对话不变 | `6e11a8f0` |
| T2 复述变短(BUG-1136) | 批次有入账条目时证据轮正文 = 服务器复述(≤2 件列出,>2 件「记下了 N 件事。」);快照每条助手回复带 `recorded_evidence`(证据账本,排除 rejected / superseded);>2 件时消息内 `<details>` 收起清单;两套 Agent 提示删逐条复述;中文日期标签直接接事件 | `b8dac9c1` |
| T4 记录 | BUG-1135~1137、BUG-917 修订注、CHANGELOG、DESIGN、VOICE、真机清单、本进度、README | 本提交 |
## 复现与修复证据
- 形状 B(同题重新出题):`C · a superseded focus with the same stem on the latest message…`、`C · client guard: a message still carrying a dead focus…`——修复前 0 个可点选项(死题只剩题干 + 「没有拿到下一个问题」),修复后题干 1 次、4 个可点选项。
- 形状 A(正文残留题干):`C · a stem left in the body of the message that receives the persisted question shows once`——修复前题干 2 次,修复后 1 次。
- T3:`a settled rectification reply renders no step receipt` 在改动前红(临时回退组件验证),改后绿。
- 「1.」来源:步骤列表是 `<ol>`,收起后仍在 DOM;按纯文本复制时浏览器为有序列表项补序号(屏幕上 `list-style: none` 不显示)。**推断,未在浏览器复现**;回执结算后不再渲染,该来源消失。
## T2 一次 12 件的结果
服务端:12 条入账 → 正文与落库都是「记下了 12 件事。」(`rectification-v9-agent.test.ts` 新测试)。前端:正文一行,其下收起的「看记下的 12 件」,展开 12 个 `<li>`(如「2000年虚构事件1」),默认不展开;2 件时正文直接列出、无清单。
## 既有断言改动(原值 / 新值 / 原因)
| 文件 | 原值 | 新值 | 原因 |
| --- | --- | --- | --- |
| `rectification-timeline-adapter.test.ts` | `/timeline: rectificationTimelineRows/` | `/timeline: settled \? \[\] : rectificationTimelineRows/` | BUG-1137 结算后不派生步骤 |
| `rectification-opening-plain-20260926.test.tsx` | turn 以「已完成 2 步」开头;两条步骤名各 1 次 | turn 以开场正文开头;无「已完成」;步骤名 0 次 | BUG-1137 |
| `agent-voice-copy-contract.test.ts` | `/证据轮正文只写一句复述/`、「记下了:2016 年 9 月入学、2020 年 6 月毕业」为好例 | `/证据轮的复述由服务器写/`、该句为坏例 | BUG-1136 |
| `rectification-v9-agent.test.ts` | `/证据轮正文只写一句复述/`;`answerText`/落库 `/^记下了:2016 年 9 月入学、2020 年 6 月毕业。/` | `/证据轮的复述由服务器写/`;整句等于服务器复述 | BUG-1136 |
| `rectification-agentic-entry.test.ts` | `/证据轮正文只写一句复述/` | `/证据轮的复述由服务器写/` | BUG-1136 |
| `rectification-adopt-flow-20260902.test.ts` | `/必须先用一句话承接用户本轮给出的事实(年份\+事件)/` | `/证据轮的复述由服务器写:「记下了 N 件事」/` | BUG-1136 |
| `rectification-host-fallback.test.ts` | 「2016年9月 入学、2020年6月 毕业」「2018年7月 入职」 | 无空格 | 中文日期标签直接接事件 |
| `rectification-grounding-20260927.test.ts`、`rectification-unwritten-evidence.test.ts`、`rectification-v9-stream.test.ts` | 同上四处带空格 | 无空格 | 同上 |
## 门禁(基线 `437dcecb` vs 最终)
| 项 | 基线 | 最终 |
| --- | --- | --- |
| tsc | 0 | 0 |
| lint | 0 error / 126 warning | 0 error / 126 warning |
| npm test | 4809 / pass 4744 / fail 24 / cancel 0 / skip 41 | 4820 / pass 4755 / fail 24 / cancel 0 / skip 41;失败清单逐名一致;基线名 0 丢失,新增 11 |
| `/` | Static | Static |
| 首屏 gzip | JS 555,325 / CSS 68,764 | JS 555,587(+0.05%)/ CSS 68,813(+0.07%) |
| 快速门 | — | Python 1036 passed / 1 skipped / 0 failed;npm 步同 24 条环境失败 |
## 缺口
- 「1.」来源为推断,未在浏览器复现。
- 真机清单 `docs/testing/rectification-message-cleanup-20261001.md` 未执行。
- 无 Docker:本单不改库,DB 套件未跑。
- Skill 未 bump(只改系统提示与服务端文案)。
+2
View File
@@ -263,6 +263,8 @@
| `TASK-rectification-message-cleanup-20261001.md` | — | **校正消息清理**:题干两遍(作废旧焦点仍打印题干 + 独立问题块再打印一次)→ 一屏一题干;证据轮正文改为「记下了 N 件事」+ 服务端清单可展开;校正结算后不显示「已完成 N 步」与「1.」泄漏。推翻 BUG-917 作废题留题干、VOICE 逐条复述 | 待领取 | BUG-1135~1137 |
| `TASK-rectification-chart-tier-caveats-20261001.md` | `PROGRESS-rectification-chart-tier-caveats-20261001.md` | **报告与聊天标注判断不了的分盘**:采用后读 `active_birth_provenance`(segment-v1)→ 结果 `segment_summary` 档位,blocked/indistinct 的 D9/D10 在聊天 answer_policy 与一句说明、报告章节顶部提示 + 主题降级;旧资料逐字节不变;不改库、不改 consult/route.ts | 已验收(Claude 10-01:存盘分钟头段判定修正后全套门禁对 staging 一致;主题段降级未做——引擎正文无主题→分盘映射,另议;写作模型报告路径生产关闭未接入) | BUG-1138~1139 |
| `TASK-rectification-angle-timing-research-20261001.md` | — | **角度类时间技法研究(离线)**:行运土木罗压本命上升 / 天顶度数、次限推运角、太阳弧角(1° ≈ 4 分钟出生时间),77 例 v5;乱序日期对照 ≥ 50 次必做、留一法、不得挤出真值;显著才叠加到六题后验比头段命中与区间宽度 | 待领取 | BUG-1141 |
| `TASK-rectification-message-cleanup-20261001.md` | `PROGRESS-rectification-message-cleanup-20261001.md` | **校正消息清理**:题干两遍(作废旧焦点仍打印题干 + 独立问题块再打印一次)→ 一屏一题干;证据轮正文改为「记下了 N 件事」+ 服务端清单可展开;校正结算后不显示「已完成 N 步」与「1.」泄漏。推翻 BUG-917 作废题留题干、VOICE 逐条复述 | 已实现待验收(分支 codex/rectification-message-cleanup-20261001,未推送) | BUG-1135~1137 |
| `TASK-rectification-chart-tier-caveats-20261001.md` | — | **报告与聊天标注判断不了的分盘**:采用后读 `active_birth_provenance`(segment-v1)→ 结果 `segment_summary` 档位,blocked/indistinct 的 D9/D10 在聊天 answer_policy 与一句说明、报告章节顶部提示 + 主题降级;旧资料逐字节不变;不改库、不改 consult/route.ts | 待领取 | BUG-1138~1139 |
| `TASK-rectification-typed-event-scoring-research-20260929.md` | `PROGRESS-rectification-typed-event-research-20260929.md` | **打字经历按选择题规则计分(离线研究,不上线)**:计分通道不对称 + 已入账年份挡题;R0 学业质量题措辞 / 年精度显示成 1 月(冻结文件,需重新冻结) | 已验收(Claude 2026-09-29 合并验收:全量前端 4302/24 与基线同 24 条环境失败、tsc 0、lint 0 error、`/` Static、gzip +0.16%、快速门 pytest 1001 passed、两份回放复跑一致),待部署核对 | BUG-1088、1089 |
| `TASK-report-reader-polish-20260929.md` | `PROGRESS-report-reader-polish-20260929.md` | **报告页打磨**:生成入口挪进页面主体(删标题栏按钮)、详情页到底部按钮(懒渲染一次到底)、导出按钮带文字、目录一级/二级分层、去掉「字段」与 RL/NL 缩写表头、状态列同义重复去重、报告表格淡底色、分块导出显示真实文件大小 | Claude 直接执行并自验(tsc 0、lint 0 error、全量 fail 与基线同 24 条、`/` Static、gzip +7 B、快速门 Python 1000 passed),已部署 staging `d7772011`,真机欠 | BUG-1092~1094 |
| `TASK-report-english-edition-20260929.md` | `PROGRESS-report-english-edition-20260929.md` | **报告中英两版**:同一次引擎计算渲染 zh/en 两遍(不用模型翻译),瑜伽库 477 条补英文、模板与前端表头英文化;中文逐字节不变、英文零汉字、两版数字序列一致;阅读页 `?lang=en` 切换,导出当前语言 + 「问 AI 建议导出英文版」提示;旧报告不补英文 | Claude 直接执行(含两个 fork 子代理)并自验(tsc 0、lint 0 error、全量 fail 与基线同 24 条、`/` Static、gzip +0.06%、Python 定向全绿),已部署 staging `d7772011`,真机欠 | — |