Files
Agent-System/.doc/test-reports/2026-09-26-swboot-closeout-test-report.md

5.0 KiB
Raw Permalink Blame History

workflow-swboot 收口:SWBOOT-10 非 stub + L5 真实 PI + L6 UI 二次验收 测试报告

一、 测试背景 (Background)

swboot 行剩余关闭条件:SWBOOT-10 非 stub(受控补丁执行器)+ L5 真实 PI + L6 UI 二次验收(W5 关闭条件,本轮用户指令授权)。此前 controlled_patch 双门禁拒绝、repo_path_allowlist/project_source_bindings 零运行时读写、ExecuteControlledPatch/ApproveMerge 恒拒。

二、 测试目标 (Test Objectives)

  1. SWBOOT-10:DB allowlist(deny-all 默认)+ 隔离 worktree 补丁执行 + 管理员命令白名单 + 证据记录;merge/push/deploy 永不执行(类型化边界)
  2. 门禁:controlled_patch 创建/预览仅在绑定 allowlist 仓库时放行(fail-closed 不变)
  3. L5:真实 PI docs_only advisor 建议 software_delivery 且不自动激活
  4. L6:Playwright 真实栈软件向导二次验收(含医疗去污染抽查)

三、 测试方案与环境 (Test Plan & Environment)

  • 单元:executor 真实临时 git 仓 6 用例;projectworkflow 门禁 1 用例;catalog 预览 1 用例;既有 stub 断言更新为边界契约
  • 工程:arch-check --mode block(含 app→swboot 组合根边界登记)、go vet、go test -short ./...
  • 运行时:no-docker dev(86e0cf46,schema 75 = goose 74/75 已应用);演示仓 /tmp/swboot-demo/repo
  • L6:docker mcr.microsoft.com/playwright:v1.63.0-noble --network host 真实 dev 栈
  • 证据:assets/2026-09-26-swboot-closeout/

四、 预期结果 (Expected Results)

用例 预期
预览/创建 controlled_patch(无绑定或未过 allowlist) 拒绝(fail-closed 保持)
预览/创建 controlled_patch(allowlist 绑定) 放行 + project_source_bindings 落库
执行:补丁+白名单命令 201 succeeded;隔离分支;文件 hash+命令证据;仓库工作树不变
执行:非白名单命令/路径、非创建者 403/400;失败留证不留工作树
merge 恒拒(ERR_MERGE_REQUIRES_SEPARATE_AUTHORIZATION)
L5/L6 见 §二 3/4

五、 实际测试结果与判定 (Actual Results & Evaluation)

5.1 单元/工程

  • go test ./internal/swboot/:8 项 PASS(allowlist 拒绝 / 隔离落补丁+hash / 白名单命令执行+非白名单拒绝 / 坏补丁留证 / 命令失败即停 / merge 边界 / 预览门禁);./internal/projectworkflow/ 门禁 PASS
  • arch-check/vet/-short 全 PASS(候选 4965e74d、70f3028c、86e0cf46)

5.2 dev 运行时(真实 API,runtime-evidence.txt)

  • 种子 allowlist(/tmp/swboot-demo,test_commands=go,echo)→ 预览 valid → 创建 6638:HTTP 201 execution_mode=controlled_patch 且绑定同批落库
  • 执行成功:HTTP 201 status=succeeded,隔离分支 feature/swboot-p6635-*,main.go sha256 证据,echo demo-ok exit 0;仓库工作树保持 v1 未动
  • 负例:非白名单命令 403(未启动执行);非白名单路径 400 + 失败证据记录(无 worktree);非创建者 403

5.3 L5 真实 PI

RUN_PI_E2E=1 LiveMiniMax PASS(9.8s):建议 software_delivery 并明确「禁止自动激活」——auto_activate=false 语义在当前 HEAD 成立。

5.4 L6 UI 二次验收

docker Playwright 真实栈 swboot-wizard.spec.ts 1 passed (1.2s):软件域切换 / solo 未独立评审横幅 / catalog「绿地立项」/ 必填三要素 / 创建进入项目 / 页面无「注册检验、GB 9706、器械分类」污染词。playwright --list:33 tests in 10 files(新 spec 已登记 README 矩阵 + npm 脚本)。

5.5 过程缺陷与修复

  1. 绑定写入列名错误(repo_path → 实际列 source_ref):创建 500 且留下部分创建残留(项目 6635);修复后创建+绑定原子落库(6638 验证)。已知限制:绑定失败时项目行已插入(非同一事务),可用绑定端点补齐——登记后续增强。
  2. 同类错误存在于执行端点绑定读取(409 误报);一并修复。

六、 自动化测试套件汇总 (Test Suite Execution)

套件 结果
go test ./internal/swboot/ ./internal/projectworkflow/ PASS
arch-check --mode block / go vet / go test -short ./...(候选) PASS
dev 运行时 SWBOOT-10 全链 + 三负例 PASS
L5 RUN_PI_E2E=1 LiveMiniMax PASS
L6 docker Playwright swboot-wizard PASS

七、 测试结论与后续优化建议 (Conclusion & Next Steps)

结论:W5 关闭条件全满足——SWBOOT-10 以 fail-closed 受控执行器形态非桩化(DB allowlist / 隔离 worktree / 命令白名单 / 证据记录 / merge 永不执行),L5/L6 在当前 HEAD 真实链路 PASS。FEATURE-MATRIX 行可升 done。

后续:①创建+绑定同事务化;②执行记录管理台只读视图;③admin allowlist 维护 UI;④更广命令白名单形态(如按项目授予)。