Files
Jyotisha/docs/tasks/PROGRESS-consult-pass4-streaming-20260918.md
T
jesse-ux 9cdcf96b18
Independent Staging Quality Gate / validate (push) Successful in 10m24s
Independent Staging Quality Gate / publish (push) Successful in 13m30s
docs: 回填 BUG-950~953 修复版本 cd4775ae
2026-09-18 14:09:00 +08:00

47 lines
3.6 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 · Pass 4 按句放行与思考死链清理(2026-09-18 第三轮)
工作树:`.worktrees/consult-pass4-streaming-20260918`
分支:`codex/consult-pass4-streaming-20260918`
基线:`origin/staging` @ `24a6fc98`(任务书写 `1e553976`,其后一笔纯文档已快进)
合入提交:`cd4775ae`
任务书:`docs/tasks/TASK-consult-pass4-streaming-20260918.md`
## 任务状态
| 任务 | 状态 | 说明 |
| --- | --- | --- |
| BUG-950 按句放行 | 完成 | 只缓冲当前句;无 reject 立刻 send;observe 不阻塞 |
| BUG-951 按句丢弃 | 完成 | `dropRejectedClauses`;全丢才用兜底句 |
| BUG-952 无分钟日期 observe | 完成 | `general_no_birth_time` 下 exact-timing 记 observe |
| BUG-953 删除 token 级 thinking | 完成 | 死链删除,测试翻转成否定合同 |
## 950 / 951 分界
Pass 4 是句门不是刀。闭合句整句发或整句不发,不对句内动刀。整篇重写(methodology,或 compose 在一句都还没发出时的退回)只允许发生在第一条 `answer.delta` 之前;已经发出过句子,后续命中句只丢不撤。这就是「不闪两次」和「要流式」的分界,写在 `stream-agent-response.ts` 注释里。
## 断言三栏(既有测试)
| 测试 | 原值 | 新值 | 原因 |
| --- | --- | --- | --- |
| `pass4 holds verified dates…` | 1 条 `answer.delta` | ≥3 条,日期句照发 + observe | BUG-950 按句放行 |
| `pass4 retries compose once…` | compose 2 次,整段 hold 后一次发出 | compose 1 次;保证句不在任何 delta 里 | 已发出过句子不再整篇重写 |
| `pass4 general mode second-pass replaces…` | 整段换成拒绝句 | 知识句发出,个人盘句不发,不出现兜底句 | BUG-951 按句丢弃 |
| `general mode … preserving general knowledge` | 二次整段 `GENERAL_NO_BIRTH_TIME_REFUSAL` | 知识句仍在,个人盘/保证句不在,无 `。。` | 恢复被 948 改掉的口径 |
| `output guards … stay byte-stable` 混合文本 | 二次整段拒绝 | 知识句保留,个人盘句丢掉 | 同上 |
| `never publishes reasoning-delta` | `mapStreamChunkToThinking` 能变成 thinking 行 | 源码不得有该函数;运行时丢弃 | BUG-953 否定合同 |
| `consecutive Chinese reasoning fragments…` | assembler 拼出可见行 | assembler 删除;连续分片仍丢弃 | 同上,测试不删只翻转 |
| `Chinese thinking stays internal…` | 内部 thinking.delta 对象 | 源码不得映射;`safePublicEvent` 仍丢 | 同上 |
## 测试
| 项 | 结果 |
| --- | --- |
| `tsc --noEmit` | 0 错 |
| `npm run lint` | 0 error(120 warning,基线 121 量级) |
| 定向 | timing-output-guard / birth-time-mode / birth-accuracy / agentic-runtime Pass 4 / rectification-step-answer / v9-stream 全绿(Windows 上 skill symlink EPERM 两条与基线相同,不是本单) |
| 全量 `npm test`(本机 Windows) | tests 3453 / pass 3375 / fail 78。较上一轮 Windows 实测 3449 / 3371 / 78 **+4 条绿、失败数不变**。78 条全是 symlink/EPERM、bash、无 Docker 的既有缺口,清单与上一轮同组 |
| Linux 门禁目标 | 基线 3491 / 3445 / 31;本单 +4 条,预期 3495 / 3449 / 31 |
| `next build --webpack` | 编译成功(71s)。收集 page data 时 `/api/daily-starlanguage` 撞 skill symlink EPERM,与测试同一环境缺口。改动全在服务端 `stream-agent-response` / `timing-output-guard` / 校正 mapping,不进 `/` 客户端包;`/` Static 与 468,388 B gzip 留给 Linux 门禁 |
本单新增:三 `text-delta` ≥3 条 delta;全丢才兜底;无分钟日期 observe 流式合同。