Record real Playwright ledgers, mark 20 audits and 9 remediations done, and leave management-implementation-plan as plan-only.
3.9 KiB
3.9 KiB
title, status, created, updated, severity
| title | status | created | updated | severity |
|---|---|---|---|---|
| UI-03 质量修复子工作区越界改写根 output.md | done | 2026-09-13 | 2026-09-22 | high |
UI-03 质量修复子工作区越界改写根 output.md
W3 UI-rerun 关闭(2026-09-22):
status=done。真实 Playwright 账本 PASS:ui-acceptance-results.json(main UI-00..16)+ui-acceptance-results-post-restart.json(UI-15)。任务 tip 已合入本地dev;详见 short-term 与 测试报告。
现象
第13轮 Antigravity 完整 UI(schema 30,dev@8b1a531 基线):UI00–02 PASS,UI-03 真实 PI 终态 quality_failed,页面 70 分、缺少必填章节「阻塞信息 / 非阻塞信息」。
真实工作区 /app/data/workspaces/bizdev/intake_1789329815528283509:
tasks/03_review/output.md于 20:07:02 确实没有两个章节;质量门禁判定正确,不得放宽必填章节。EnsureQualityOrRepair创建tasks/repair_1,TASK.md 同时写「参考../../template.md、基于../../output.md、输出到output.md」。- 真实模型读取父级文件后,
edit写了tasks/repair_1/../../output.md(根output.md);根文件 20:07:24 已补齐两章节。 tasks/repair_1/output.md从未生成;runner 目标仍是本地output.md→missing target→runOneStep失败 →EnsureQualityOrRepairbreak → manifest 保留原 70 分。- runner
execution.log的Outcome: SUCCESS只是模型 settle,不代表目标契约成功。
根因分析
| 层 | 问题 | 后果 |
|---|---|---|
| TASK 契约 | 修复步骤把输入写成 ../../output.md / ../../template.md |
模型按字面去 edit 父级 |
| 沙箱 | buildSubWorkspaces 对 template/blackboard 建 symlink |
子目录写同名文件会打穿父级 |
| Needs | 只在 TASK 里列 ../../need,不把原稿快照成非目标文件名 |
若复制成本地 output.md 会假成功;当前则诱导越界 |
| 成功判定 | 只认本地 output.md(正确),但失败后不恢复被改的根文件 |
根文件「看起来更好」却不覆盖/不重验,页面仍 70 |
| 提升谓词(独立审查) | 曾在 runErr != nil 或 containment 后仍因 localOK 提升 |
截断产物或越界轮次会被当成修复成功 |
| settle | 内部 Outcome SUCCESS ≠ 本地目标存在 | 不得把 settle 当交付 |
MatchDeliverableRel 已拒绝 ../,因此 missing-target fail-closed 正确,不能因此把越界根文件当成功。
严重度
high
自动修复轮空转:模型可能已经写好章节,契约失败导致任务 quality_failed。
关联整改
- Remediation: ../remediation/2026-09-13-document-revision-quality-repair-workspace-contract.md
- Short-term: ../ops/short-term/2026-09-13-document-revision-quality-repair-workspace-contract.md
- 分支:
fix/document-revision-quality-repair-workspace-contract
证据
- 失败证据(根代理保留、本轮不得改/移/删/提交):
.doc/test-reports/assets/2026-09-13-document-revision-runtime-ui/schema30-ui03-required-sections-quality-failure/
开放问题
- 本轮不跑真实 UI-03;不得标 E2E 通过或任务
done - 默认子步骤仍可用
../../+ symlink(未改正常步骤读本地 context 的路径) - 剩余风险(保护范围):containment 只快照/恢复
output.md/template.md/blackboard.json。模型改写其它父级文件(如PLAN.md、其它tasks/*)检测不到、不会回滚。创建/删除这三份受保护输入已计入 mutation。