diff --git a/.doc/audit/2026-09-13-document-revision-prelim-output.md b/.doc/audit/2026-09-13-document-revision-prelim-output.md new file mode 100644 index 00000000..e3e16c74 --- /dev/null +++ b/.doc/audit/2026-09-13-document-revision-prelim-output.md @@ -0,0 +1,49 @@ +--- +title: "UI-11 prelim_design 缺 output.md 导致 TASK_INTERRUPTED" +status: in_progress +created: 2026-09-13 +updated: 2026-09-13 +severity: 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` + +## 根因分析 + +| 层 | 证据 | 问题 | +|---|---|---| +| 模板 | 容器 `/app` 无 `templates/`;工作区 `template.md` 为两段 stub「待确认」 | `GetDocTemplate` 按 cwd 找盘上文件失败后静默回落;writer 只好一次性 `write` 整篇长文 | +| Runner | `tasks/01_draft/execution.log`:`write` 绝对路径 `.../01_draft/output.md` 后 `terminated`;`auto_retry_end success:false`;仍出现 `agent_settled`;文件头 `Outcome: SUCCESS` | `runner.mjs` 把任意 `agent_settled` 当成成功,缺产物仍 `ok:true` | +| 映射 | `internal/agent/piagent.go` 用 `rel_path` 原样做 Patches 键;`workflow.go` 只认 `Patches["output.md"]` 与 `subDir/output.md` | 绝对路径 / `./output.md` / 重复 `tasks/01_draft/output.md` 会被当成缺失 | +| 工作区 | `data/dev/workspaces/bizdev/prelim_design_1789325982486234431` 无任何 `output.md` | 写未落地;不得从截断 write 参数伪造正文 | + +app 日志:`taskrun_status_transition run_id=run_1789325979820025769 error="step step_01_draft missing target deliverable output.md"`。 + +## 严重度 + +`high` + +## 关联整改 + +- Remediation: [../remediation/2026-09-13-document-revision-prelim-output.md](../remediation/2026-09-13-document-revision-prelim-output.md) +- Short-term: [../ops/short-term/2026-09-13-document-revision-prelim-output.md](../ops/short-term/2026-09-13-document-revision-prelim-output.md) +- 分支: `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` +- 本轮不重建容器;embed + 契约修复随下次镜像生效 diff --git a/.doc/ops/CURRENT.md b/.doc/ops/CURRENT.md index 7beda461..771d2da8 100644 --- a/.doc/ops/CURRENT.md +++ b/.doc/ops/CURRENT.md @@ -1,11 +1,11 @@ # 当前焦点 **更新**: 2026-09-13 -**production_ready**: no(DOCREV:schema **30**;第十轮 UI-11 路由+lease;不操作容器) +**production_ready**: no(DOCREV:schema **30**;第11轮 UI-11 prelim output 契约;不操作容器) ## 焦点 -1. **DOCREV-RT**: [UI-11 点名优先路由 + PATCH 请求级释租](short-term/2026-09-13-document-revision-second-doc-routing-lease.md)(`fix/document-revision-second-doc-routing-lease`:不改 prompt / 不重跑 E2E / 不操作容器;仍 `in_progress`) +1. **DOCREV-RT**: [prelim_design 缺 output.md 产物契约修复](short-term/2026-09-13-document-revision-prelim-output.md)(`fix/document-revision-prelim-output`:不伪造产物 / 不改 prompt / 不重跑 E2E / 不重建容器;仍 `in_progress`) 2. **CHAT**: [刷新恢复整改已实施](short-term/2026-09-13-chat-history-refresh-remediation.md)(待合 dev + PI E2E 补录) 3. **CI**: `TEST_DATABASE_URL` + 真实 PI E2E 实录;INTENT 发布 blocker 见 conversation-intent short-term @@ -27,6 +27,7 @@ | Cursor-Auto | document-revision-e2e-overlay-selector | fix/document-revision-e2e-overlay-selector | - | document-revision-overlay-selector | in_progress | | Cursor-Auto | document-revision-e2e-overlay-transition | fix/document-revision-e2e-overlay-transition | - | document-revision-overlay-transition | in_progress | | Cursor-Auto | document-revision-second-doc-routing-lease | fix/document-revision-second-doc-routing-lease | - | document-revision-second-doc-routing-lease | in_progress | +| Cursor-Auto | document-revision-prelim-output | fix/document-revision-prelim-output | - | document-revision-prelim-output | in_progress | > 新任务开始前登记。`branch` 必须为 `feature/` 或 `fix/`,**禁止** `dev` / `test` / `main`。同一 `mutex` 同时仅一个 `in_progress`。 @@ -71,3 +72,4 @@ | UI-07 纯净阅读取样失败审计 | [../audit/2026-09-13-document-revision-overlay-selector.md](../audit/2026-09-13-document-revision-overlay-selector.md) | | UI-07 transition 中间帧取样审计 | [../audit/2026-09-13-document-revision-overlay-transition.md](../audit/2026-09-13-document-revision-overlay-transition.md) | | UI-11 第二份文档路由与 lease 审计 | [../audit/2026-09-13-document-revision-second-doc-routing-lease.md](../audit/2026-09-13-document-revision-second-doc-routing-lease.md) | +| UI-11 prelim_design 缺 output.md 审计 | [../audit/2026-09-13-document-revision-prelim-output.md](../audit/2026-09-13-document-revision-prelim-output.md) | diff --git a/.doc/ops/short-term/2026-09-13-document-revision-prelim-output.md b/.doc/ops/short-term/2026-09-13-document-revision-prelim-output.md new file mode 100644 index 00000000..b5bef611 --- /dev/null +++ b/.doc/ops/short-term/2026-09-13-document-revision-prelim-output.md @@ -0,0 +1,51 @@ +--- +title: "prelim_design 缺 output.md 产物契约修复" +status: in_progress +created: 2026-09-13 +updated: 2026-09-13 +owner: Cursor-Auto +branch: fix/document-revision-prelim-output +worktree: "-" +mutex: document-revision-prelim-output +--- + +# prelim_design 缺 output.md 产物契约修复 + +## 目标 + +第11轮 UI-11:202 + `prelim_design` 已正确,但 `step_01_draft` 缺真实 `output.md`。embed 官方模板、归一化 runner 路径、缺产物 fail-closed。不得标 `done`。 + +## 范围 + +- `internal/template` embed + loader +- `internal/agent` 路径映射与目标强制 +- `deploy/pi-agent/runner.mjs` settle 契约 +- `deploy/app/Dockerfile` COPY templates/configs(下次镜像) +- 文档:audit / remediation / CURRENT + +## 非目标 + +- 不伪造 `output.md`;不改 E2E prompt;不放宽缺失校验 +- 不触碰/提交证据目录;不操作/重建容器;本轮不重跑 E2E +- 不改 FEATURE-MATRIX;不合 `dev`;不 push + +## 步骤 + +1. [x] 从 `dev@2a58674` 开 `fix/document-revision-prelim-output` 并认领 mutex +2. [x] 定位:stub 模板 + `agent_settled` 假成功 + 只认精确 `output.md` 键 +3. [x] embed / 映射 / runner fail-closed + 单测 + 门禁 +4. [ ] 占槽后真实 UI 重跑(本轮不做) + +## 验收标准 + +- [ ] 无盘模板时 `prelim_design` 仍为官方「系统初步设计方案」 +- [ ] 绝对/`./`/重复子目录 `rel_path` 能落到目标文件 +- [ ] `ok:true` 但无非空目标 → 失败,不发明正文 +- [ ] intake 工作流单测仍绿 +- [ ] 真实 UI-11 PASS 后才可标 `done` + +## 相关链接 + +- Audit: [../../audit/2026-09-13-document-revision-prelim-output.md](../../audit/2026-09-13-document-revision-prelim-output.md) +- Remediation: [../../remediation/2026-09-13-document-revision-prelim-output.md](../../remediation/2026-09-13-document-revision-prelim-output.md) +- Evidence: [../../test-reports/assets/2026-09-13-document-revision-runtime-ui/schema30-ui11-prelim-design-missing-output-failure](../../test-reports/assets/2026-09-13-document-revision-runtime-ui/schema30-ui11-prelim-design-missing-output-failure) diff --git a/.doc/remediation/2026-09-13-document-revision-prelim-output.md b/.doc/remediation/2026-09-13-document-revision-prelim-output.md new file mode 100644 index 00000000..16f4a586 --- /dev/null +++ b/.doc/remediation/2026-09-13-document-revision-prelim-output.md @@ -0,0 +1,39 @@ +--- +title: "prelim_design 真实产物契约:embed 模板 + 路径映射 + 缺产物 fail-closed" +status: in_progress +created: 2026-09-13 +updated: 2026-09-13 +--- + +# prelim_design 真实产物契约 + +## 背景 + +链到 [../audit/2026-09-13-document-revision-prelim-output.md](../audit/2026-09-13-document-revision-prelim-output.md)。 + +## 目标 + +通用、fail-safe 的产物契约:成功步必须有真实、非空的目标文件。不得伪造 `output.md`、不得改 E2E prompt、不得放宽缺失校验。intake 与其他 `task_key` 不回归。 + +## 分波次计划 + +| 波次 | 内容 | 验收 | +|------|------|------| +| Wave 0 | `//go:embed` 官方 `templates/docs/*.md`;`GetDocTemplate` 先读 embed | 无盘上 `templates/` 时 `prelim_design` / `intake` 仍是正式模板,不是两段 stub | +| Wave 0 | Runner `rel_path` 归一化到目标名;缺产物则 `Success=false` | 绝对路径 / `./` / 重复子目录仍能落盘;空 patches 仍失败 | +| Wave 0 | `runner.mjs`:`auto_retry_end` 失败或目标文件不存在不得 `ok:true` | 与现场 `agent_settled` 假成功对齐 | + +## 取舍 + +- 不从 `execution.log` 截断的 `write` 参数拼出正文。 +- 不改 UI-11 prompt。Dockerfile 补 `COPY templates/configs` 仅供下次镜像,本轮不 rebuild。 + +## 验收标准 + +- [x] embed + 路径映射 + runner fail-closed + 单测(门禁见提交说明) +- [ ] 占槽后真实 UI-11 PASS 才可将本任务标 `done` + +## 相关链接 + +- Audit: [../audit/2026-09-13-document-revision-prelim-output.md](../audit/2026-09-13-document-revision-prelim-output.md) +- Short-term: [../ops/short-term/2026-09-13-document-revision-prelim-output.md](../ops/short-term/2026-09-13-document-revision-prelim-output.md)