5.0 KiB
5.0 KiB
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)
- SWBOOT-10:DB allowlist(deny-all 默认)+ 隔离 worktree 补丁执行 + 管理员命令白名单 + 证据记录;merge/push/deploy 永不执行(类型化边界)
- 门禁:
controlled_patch创建/预览仅在绑定 allowlist 仓库时放行(fail-closed 不变) - L5:真实 PI docs_only advisor 建议
software_delivery且不自动激活 - 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/门禁 PASSarch-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.gosha256 证据,echo demo-okexit 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 过程缺陷与修复
- 绑定写入列名错误(
repo_path→ 实际列source_ref):创建 500 且留下部分创建残留(项目 6635);修复后创建+绑定原子落库(6638 验证)。已知限制:绑定失败时项目行已插入(非同一事务),可用绑定端点补齐——登记后续增强。 - 同类错误存在于执行端点绑定读取(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;④更广命令白名单形态(如按项目授予)。