Files
Jyotisha/docs/tasks/PROGRESS-rectification-duplicate-narration-20260907.md
T
Jesse_Chen 9d1c08cab1
Independent Staging Quality Gate / validate (push) Successful in 9m48s
Independent Staging Quality Gate / publish (push) Successful in 7m33s
fix(rectification): keep one spoken paragraph and strip body questions (BUG-584, BUG-585)
Set-focus must not append a second narration, and a server-owned stem must not also appear as a question in the assistant body.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-08 09:05:01 +08:00

42 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# PROGRESS · 同一轮旁白说两遍、题干出现两次(2026-09-07)
工作树:`.worktrees/rectification-duplicate-narration-20260907`
分支:`codex/rectification-duplicate-narration-20260907`
任务书:`docs/tasks/TASK-rectification-duplicate-narration-20260907.md`
基线:`origin/staging` @ `6c7a8b02`(任务书写 `f3e72702` / 代码头 `ab57d03f`;其后 `a00b069d` 已合入,tsc 不再报 `rectification-agentic-chat.tsx` L1655
本单状态:**待验收**。未 commit、未 push。
未改:提示词、Skill 版本(仍 10.0.15)、采用门、确认门、`MIN_SEPARATION_LEAD``_relative_support``minute_step=1``page.tsx`
并行:`codex/rectification-other-collect-fallback-20260908`BUG-586)也改 `user-copy.ts``agent-voice-copy-contract.test.ts`。本单只加 `collectHandoff`;谁后合谁 rebase。
## 做了什么
- **4.2 / BUG-585** `stripQuestionSentences`:按句删掉与题干相同、题干前 12 字开头、或以问号结尾的句子;问号后的非叙事尾巴一并丢掉。`composeCollectSpokenAssistantText` 改调它。agent-run 在 `answer.composed` 前复用 discriminator 那次 `loadV9CaseDossier`:本轮 focus 有 spokenPrompt 则剪,剪空用 `collectHandoff`,变化时 `replace:true``attachQuestionsToTurns` 同样剪。删除 `collectSpokenEmitted`
- **4.1 / BUG-584** `StepAnswerState` 增加 `stemAttached``publishedAny`,不随 `resetBuffers` 清。set-focus 之后若本轮已发布正文,后续 `text-delta` discard。
- **决策 3** set-focus `tool-call` 把未直播的中文半句 `publish`;无 CJK 的规划稿 discard。未后置为 P3。
## 三栏(被触碰断言)
| 用例 | 原值 | 新值 | 理由 |
| --- | --- | --- | --- |
| set-focus 后第二段正文 | `live` 发布 | `discard` | 决策 2,丢掉工具结果后的复述 |
| set-focus 前无正文、后有一段 | (原测试未覆盖) | 后段 `live` | BUG-533 开场仍通 |
| 无句末标点的中文半句 + set-focus | 静默丢掉 | `publish` | 决策 3 |
| 英文规划稿 + set-focus | 不直播 | `discard` | 维持原 discard |
| `collectSpokenEmitted` | 恒 `false` | 字段删除 | 决策 4 |
| 历史回看剥题干 | 只剥 `\n\n` 后缀 | `stripQuestionSentences` | 决策 1 |
## 测试
- `frontend` `./node_modules/.bin/tsc --noEmit`exit 0
- 任务书指定 TS 切片(`tests/rectification-*.test.ts` + `agent-voice-copy-contract.test.ts`,排除 database):**988 passed / 0 failed**
- Docker `database-rectification-*.test.ts`:本机未跑,记 blocked
- 浏览器真人走查:无登录态,记环境缺口,见 `docs/testing/rectification-scenarios-20260907.md` §6
## 偏离
1. 任务书点名的 `rectification-v9-agent-run*.test.ts` 不存在;agent-run 序列写在既有 `rectification-v9-agent.test.ts`
2. 问号后的「有年份就行。」按非叙事续句丢掉,否则验收 (a) 会留下这半句。