docs(tasks): acceptance fix sheet for conversational first-turn answers (BUG-1244)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
86cafe6845
commit
4ecf8ee556
@@ -424,4 +424,4 @@
|
||||
| `TASK-consult-latency-quickwins-20261005.md` | `PROGRESS-consult-latency-quickwins-20261005.md` | 普通对话耗时两项快修:咨询链校正闸不再同步白等 VedAstro 官方快照子进程(每域约 4 s,复用顶层缓存 + 负缓存,不推翻 BUG-301);补分段计时(第 0/1 步耗时、推理 token、分类耗时进日志与 usage)。推理强度/精简说明待模型 key 另单(BUG-1231、BUG-1232) | 已验收(Claude 10-05 Linux:Python 62 / 前端 24 失败与基线逐名相同,Static、gzip 0%;装 SDK 实测每领域 4.47→1.66 s,剩余 1.33 s 是保留的顶层前台等待;/admin/usage 真机欠) | 分支 `codex/consult-latency-quickwins-20261005` |
|
||||
| `TASK-rectification-nadi-seconds-research-20261005.md` | `PROGRESS-rectification-nadi-seconds-research-20261005.md` | **「纳迪秒级校准」可证伪检验(离线)**:竞品宣传「问前事到天 → 秒级」。本仓主链只用三层小运,Sookshma / Prana 与 D150 从未进评价集;v5 真值 52/77 是整 5 分钟(秒级无真值可对)。N0 五层小运 + D150 底座(前三层与主链对账 0 差)、N1 拟合率 vs 安慰剂日期(核心)、N2 留一件预测、N3 六题后区间内再细分能否提头名、N4 岁差 / 坐标 / 时间扰动的噪声地板、N5 D150 结构层(原文比对 blocked)、N6 结论 + 对外口径草稿。规则先登记再跑;不改生产代码;不得重调 BUG-1091 已关的权重 | 已验收(Claude 10-05:N1/N2/N3/N5 不过门、N4 触发文案禁令;Linux 复跑内容 0 差,结果改 LF;补 Lahiri/KP/True Chitra 对照,月亮差 0.83′ 第 5 层仍换 94%)→ 不立实现单 | 分支 `codex/rectification-nadi-seconds-research-20261005`(BUG-1240 `closed_by_design`) |
|
||||
| `TASK-rectification-delivery-dup-adopt-20261006.md` | `PROGRESS-rectification-delivery-dup-adopt-20261006.md` | **校正交付一次两段回答 + 点「改用…盘解读」被拒 `adoption_not_allowed`**(10-06 真机):收尾补位按文字子串防重,遇采用旁白 Agent 改写版失效(BUG-1153 复发);accept/GET 调 `decideFromDossier` 不带出生日期,未成年探针复活致判定与出卡时相反(BUG-598/680 同族);卡片按钮不看公开 can_adopt、拒绝码直出英文。不放宽采用门,判定入参统一 + 结构防重 + 按钮判据 + 中文提示(BUG-1241~1243) | 待领取 | — |
|
||||
| `TASK-consult-conversational-answer-20261006.md` | `PROGRESS-consult-conversational-answer-20261006.md` | **普通对话首轮去汇报骨架,改成聊天**(10-06 产品反馈「像机器在汇报」):首轮取消全部 `##`(三个固定节 + 按对象标题,多人改分段落点名)、行动不强制(盘上有具体指向才顺口一句,问「怎么办」再展开)、首轮三到六段;示范删可抄的行动句(实测被逐字照抄);思考栏去「这周可以做什么」。推翻 10-01 D2 与 D8 首轮部分(BUG-1244~1245) | 待领取 | — |
|
||||
| `TASK-consult-conversational-answer-20261006.md` | `PROGRESS-consult-conversational-answer-20261006.md` | **普通对话首轮去汇报骨架,改成聊天**(10-06 产品反馈「像机器在汇报」):首轮取消全部 `##`(三个固定节 + 按对象标题,多人改分段落点名)、行动不强制(盘上有具体指向才顺口一句,问「怎么办」再展开)、首轮三到六段;示范删可抄的行动句(实测被逐字照抄);思考栏去「这周可以做什么」。推翻 10-01 D2 与 D8 首轮部分(BUG-1244~1245) | 待验收→修复中 | 28113fa0 验收未通过:`chat-answer-detail` 合同测试新红、示范段落单换行渲染成一整块;修复单 `TASK-consult-conversational-answer-fix-20261006.md` |
|
||||
|
||||
@@ -0,0 +1,73 @@
|
||||
# TASK · 普通对话首轮改聊天 · 验收修复单(2026-10-06)
|
||||
|
||||
- 依赖分支:`codex/consult-conversational-answer-20261006` @ `28113fa0`(在此分支上继续提交,不另开分支)
|
||||
- 基线:`origin/staging` @ `86cafe68`
|
||||
- 原任务书:`docs/tasks/TASK-consult-conversational-answer-20261006.md`
|
||||
- BUG 编号:不新开号,补进 BUG-1244 记录的「验证 / 防复发」
|
||||
|
||||
## 1. 验收实证(Claude,Linux + Node 22.14,干净 `npm ci`)
|
||||
|
||||
| 项 | 基线 86cafe68 | 分支 28113fa0 | 结论 |
|
||||
| --- | --- | --- | --- |
|
||||
| `tsc --noEmit` | — | 0 错 | 通过 |
|
||||
| `npm run lint` | — | 0 error / 126 warning | 通过 |
|
||||
| `npm test` | 4936 项,fail 25 | 4939 项,fail 25 | **未通过**:失败名单不一致,见下 |
|
||||
| `next build` | `/` ○ Static | `/` ○ Static | 通过 |
|
||||
| 首屏 gzip(`index.html` 引用脚本 gzip-9 合计) | 567,642 B | 567,656 B(+14 B) | 通过 |
|
||||
| 断言三栏 | — | 每处改动都有 | 通过 |
|
||||
| `git grep "这周可以做的一件事\|骨架不可省略" frontend/src` | — | 只剩 `REPORT_HEADING.action` 兼容常量 | 通过 |
|
||||
|
||||
失败名单逐条比对:
|
||||
|
||||
- **新增失败**:`tests/chat-answer-detail.test.ts`「the model is told the answer renders inline, so it stops writing for a fold」。它断言 `product-voice.ts` 含 `Every H2 must start its own line`,这句在本分支被删了。执行方在 Windows 上这条测试没跑到,进度记录也没有和基线逐条比对,所以漏掉了。
|
||||
- 基线多出的「a lookup does not reset the answer clock…70 s」是全量并发下的计时抖动:两边单独跑 3 次都是 15/15 通过,与本单无关。
|
||||
- 其余 24 条两边同名(数据库 / 部署 / 备份类,无 Docker)。
|
||||
|
||||
## 2. 问题与根因
|
||||
|
||||
1. **P1 合同测试红**:删掉 H2 那句是对的(首轮已经没有 H2),但锁这句的测试没跟着改。这条测试会让 staging 门禁变红。
|
||||
2. **P2 示范段落之间只有一个换行**:`product-voice.ts` 的父母题、事业题 Good 示范,段与段之间是单个 `\n`。聊天渲染里 `.message p` 是 `white-space: pre-wrap`,单换行只是折行,段间距(`.message-markdown p` 的下边距)只加在空一行分开的真段落上。模型照示范写单换行的话,「几段话」会显示成一整块没有间距的文字。以前有 `##` 标题撑开,所以这个问题没暴露。
|
||||
|
||||
## 3. 决策记录
|
||||
|
||||
不涉及新的产品决策。P2 的修法(示范段落空一行 + 指令写明段落之间空一行)属于原任务书 D1「写成几段话」的实现细节,由 Claude 定。
|
||||
|
||||
## 4. 硬红线
|
||||
|
||||
沿用原任务书 §4。不改 CSS / 渲染器(不加 remark-breaks、不改 `.message p` 样式),只改提示词和测试。
|
||||
|
||||
## 5. 任务
|
||||
|
||||
### F1 修 `chat-answer-detail.test.ts`(P1)
|
||||
|
||||
把 `assert.match(voice, /Every H2 must start its own line/)` 换成符合新形状的断言(例:`assert.doesNotMatch(voice, /Every H2 must start its own line/)`,再加一条 `renders the whole answer inline` 仍在),写原值 / 新值 / 原因三栏。测试名可保留。
|
||||
|
||||
**验收**:这条测试通过;全量失败名单与基线逐条一致(只差计时抖动那条也要写明)。
|
||||
|
||||
### F2 段落空一行(P2)
|
||||
|
||||
- `product-voice.ts` 两条首轮 Good 示范:段与段之间改成空一行(`\n\n`)。
|
||||
- `NATAL_ANSWER_SHAPE_SUMMARY` 与 `natalAnswerShapeBody()` 各加一句:段落之间空一行(英文:separate paragraphs with a blank line)。
|
||||
- 合同测试:父母示范切片里「你妈妈这边」「爸爸那边」前面都是空行;首轮指令含「段落之间空一行」。
|
||||
|
||||
**验收**:上述测试通过;`tsc` / `lint` / build 不变。
|
||||
|
||||
### F3 记录
|
||||
|
||||
- BUG-1244「验证」补本次 Linux 全量对照数字;「防复发」补 F1/F2 的测试。
|
||||
- 进度记录补一节「验收修复」,写清漏掉的原因(Windows 上没跑到 + 没做基线比对)。
|
||||
|
||||
## 6. 让步顺序
|
||||
|
||||
F1 > F2 > F3。F1 不修不能推 staging。
|
||||
|
||||
## 7. 开工前置命令
|
||||
|
||||
```bash
|
||||
cd /workspace/Jyotisha/.worktrees/consult-conversational-answer-20261006
|
||||
git status -sb
|
||||
git fetch origin --prune && git log -1 --oneline # 应为 28113fa0
|
||||
cd frontend && npm test 2>&1 | grep -E "^# (tests|fail)"
|
||||
```
|
||||
|
||||
交付门同原任务书,另加:**全量失败名单必须和 `86cafe68` 逐条比对后贴进进度记录**;做不到(Windows 符号链接 EPERM)就写明,由 Claude 在 Linux 上复核。
|
||||
Reference in New Issue
Block a user