Move done DOCREV short-terms, checklists, and handoffs into archive/ops and retarget relative links after Round20 close-out. Co-authored-by: Cursor <cursoragent@cursor.com>
4.7 KiB
4.7 KiB
title, status, created, updated, severity
| title | status | created | updated | severity |
|---|---|---|---|---|
| UI-11 prelim_design 缺 output.md 导致 TASK_INTERRUPTED | in_progress | 2026-09-13 | 2026-09-13 | high |
UI-11 prelim_design 缺 output.md 导致 TASK_INTERRUPTED
现象
第11轮真实 UI(schema 30,dev@2a58674):
- Prompt 正确 POST 202,
task_key=prelim_design - 旧 intake 未再 DOC_BUSY
- 小队终态
TASK_INTERRUPTED/task_failed - 页面:
step step_01_draft missing target deliverable output.md·run_1789325979820025769
现场时序(只读 workspace / execution.log / trace)
工作区:data/dev/workspaces/bizdev/prelim_design_1789325982486234431/tasks/01_draft/execution.log
- MiniMax 第一次已流出
write(/app/data/workspaces/.../tasks/01_draft/output.md, content=...)的toolCall - 同一条 assistant message:
stopReason=error,errorMessage=terminated→ 工具未执行,磁盘无output.md - SDK
auto_retry_startattempt 1–3 均为Connection error. auto_retry_end success=false,finalError=Connection error.- 随后仍有
agent_settled - 同文件头却写
Outcome: SUCCESS/Error: None - 工作区
trace.jsonl:step_01_draft success=true,output_digest=e3b0c442...(空 SHA) - PI 子进程退出 0,runner 对上层呈成功;服务端最后因
output.md不存在才失败
禁止从该 write 参数(可能截断)拼正文或补写 output.md。
根因分层
必须区分外部瞬时故障与产品韧性缺口,二者同时成立:
| 层 | 性质 | 证据 | 问题 |
|---|---|---|---|
| MiniMax / PI SDK | 外部 provider 瞬时故障 | 同 message terminated;SDK 三次 Connection error;auto_retry_end success=false |
流式 write 未落地;in-process 重试耗尽 |
| 模板 | 产品前置条件 | .dockerignore 的 *.md 把 templates/docs/*.md 排除出 build context;即使 COPY templates /app/templates,镜像内仍无官方稿,GetDocTemplate 失败后 workspace.go 回落两段 stub「待确认」 |
writer 被迫一次性超长 write,拉长流式窗口 |
runner.mjs |
产品韧性缺口 | agent_settled 后文件头 Outcome: SUCCESS |
把 settle 当成成功;进程 0 ≠ 产物存在 |
Go runOneStep / AppendTrace |
产品韧性缺口 | trace.jsonl success=true + 空 digest |
以 backend Success / 进程 0 入账,未按目标文件 fail-closed,也未对瞬时失败做全新 step invocation |
| 映射 | 产品契约 | 绝对路径 / ./ / 重复 tasks/01_draft/output.md |
即使 write 落地,旧映射也可能认不到 |
app 日志:taskrun_status_transition run_id=run_1789325979820025769 error="step step_01_draft missing target deliverable output.md"。
成功判定契约(本轮补齐)
agent_settled在auto_retry_end success=false/terminated/Connection error之后 不是 成功- 进程退出 0 不是 成功
- 目标文件缺失或空 不是 成功
- 不得执行/回放可能截断的
write参数 - 瞬时(provider 信号或 runner
retryable):有界 全新backend.Execute(默认 1+1),最终仍 fail-closed - 永久(干净 settle 后缺产物、
prompt_empty、unauthorized、治理拦截):不得重试
严重度
high
关联整改
- Remediation: ../remediation/2026-09-13-document-revision-prelim-output.md
- Short-term: ../ops/short-term/2026-09-13-document-revision-prelim-output.md
- 分支:
fix/document-revision-pi-runner-module(由dev@55a4f39检出;前序fix/document-revision-prelim-output已合入)
证据
- Evidence root(已归档、本轮勿改勿提交):
.doc/test-reports/assets/2026-09-13-document-revision-runtime-ui/schema30-ui11-prelim-design-missing-output-failure/ - Workspace(只读):
data/dev/workspaces/bizdev/prelim_design_1789325982486234431/
开放问题
- 占槽后真实 UI-11 重跑;本任务保持
in_progress,不得标done - 本轮不执行
env-service重建;Dockerfile /.dockerignore已按/app/templates/docs读路径修好并做 context 实测。占槽后的镜像重建才带进运行中的 dev 容器 - Go 侧必须能在旧 runner 假成功时靠
execution.log识别瞬时失败并全新重试;仅修 runner 假成功只会更早 FAIL,不会单独提高成功率 - 热修(dev@55a4f39 重建后):
deploy/pi-agent/Dockerfile只 COPY 了runner.mjs,未 COPYsettle-policy.mjs;shuimu-pi-agent-dev因ERR_MODULE_NOT_FOUND file:///app/settle-policy.mjs重启循环。app 侧/app/templates/docs与 configs 已正常。