Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LutgzyJqNhPpZy1nFsJtN3
3.7 KiB
3.7 KiB
TASK · 发问准备并行修复单(issue #62,第 1 次打回)
- 日期:2026-10-14
- 原任务书:
docs/tasks/TASK-consult-prep-parallel-20261013.md - 被验 SHA:
a0e223e20cebcce3479accb60f6aec44d1caadda(codex/consult-prep-parallel-20261013) - 执行方:Grok,同一分支续做(先 merge 最新
origin/staging,不改写已推历史) - BUG 编号:沿用 BUG-1337~1339
1. 验收结论:业务逻辑通过;前端全量多出 3 条真失败
| 检查 | 结果 | 证据 |
|---|---|---|
| 开关全关时的顺序 | 通过 | turn-prep.ts 串行分支与原 route.ts 的 401→423→400→503→404→409→409→503 逐条同序 |
| 开关开时 | 通过 | 删号判定仍最先返回、在任何写库扣点之前;审核结论在 beforeReserve 内等齐,被拦不 reserve |
readVersion 缓存 |
通过 | 只缓存成功结果,invalidateLanguageModelCatalog 同时清;默认 TTL 0 |
| tsc / lint | 通过 | 0 错 / 0 error |
前端全量 npm test(与 staging 逐名比对) |
未通过:新增 3 条 | 见下 |
frontend/tests/chat-session-authority.test.ts「consult POST on a rectification session is 409, a missing id is 404」:第 65 行在route.ts源码里找/if \(!chatSession\) \{[\s\S]*status: 404/——这段判定挪进了frontend/src/lib/consult/turn-prep.ts(sessionMissing()),断言没跟着挪。frontend/tests/consultation-workflow-contract.test.ts「consultation plans are server-owned and bounded」:第 160 行找/beforeReserve: \(\{ consultationMode \}\) => createConsultationPlan\(\{/,第 161 行找reserve: () => reserveConsultationModel(——两处都改成了async函数体。frontend/tests/runtime-sources-no-test-imports.test.ts:frontend/scripts/research/consult-prep-parallel-ab.mts第 9 行从../../tests/support/stub-server-only.mjs导入。web 镜像不复制frontend/tests,推上 staging 后镜像构建会失败(BUG-1140;#58 刚因同一形状打回过一次)。
原任务书 §5 第 7 条已经列出要先 grep 的源码文本断言;这次漏的两条不在那份清单里,但属于同一类(AGENTS.md §7.8)。
2. 修法要求
- 1、2 两条:按 §7.3 写「原值 / 新值 / 原因」三栏改断言,意图不得放宽:
- 1:改为在
turn-prep.ts里锁「查不到会话 → 404」「类型不是 consultation → 409session_not_consultation」,并保留第 70 行那条「不得合并成一个判断」的反向断言(针对新文件)。 - 2:改为锁「
beforeReserve里调用createConsultationPlan」「beforeReserve在reserve之前」「reserve调用reserveConsultationModel」,允许async写法,但不得只查函数名存在。
- 1:改为在
- 第 3 条:把
consult-prep-parallel-ab.mts挪到frontend/tests/下(文件名不得以.test.ts/.test.tsx结尾),导入改相对路径;同步改 PROGRESS 与docs/testing/consult-prep-parallel-ab-20261013.md里的命令路径。frontend/scripts/research/下其它新增文件同样检查。 - 再 grep 一遍
route.ts被挪走 / 改写的语句在frontend/tests、tests里还有没有按源码文本断言的:grep -rn "chatSession\.session_type\|getUser()\|refuseWhenAccountDeletionPending\|resolveSessionLanguageModel(\|reserveConsultationModel(\|createConsultationPlan(" frontend/tests tests,命中的逐条确认。 - 业务代码不改;三个开关默认值不变。
3. 验收标准
- 前端全量
npm test失败清单与 staging 基线逐名相同(本机另有 Docker 类失败,以基线为准); git diff a0e223e2..<新 SHA> -- frontend/src为空。
4. 让步顺序
无。第 1 次打回。