12 KiB
12 KiB
title, status, created, updated, related_task, redline_evidence
| title | status | created | updated | related_task | redline_evidence |
|---|---|---|---|---|---|
| 纯软件项目自举工作流验收清单 | in_progress | 2026-09-14 | 2026-09-22 | ops/long-term/2026-09-14-software-project-bootstrap-implementation.md | ops/short-term/2026-09-22-redline-evidence.md |
纯软件项目自举工作流验收清单
不得把设计评审、stub、接口注入或静态 JSON 写成真实功能 / 真实 PI / UI PASS。
2026-09-22 红线证据批次(SHA364ed7f1):仅复验无需真实仓写的 L1–L4 子集;L5/L6 pending auth。报告:../../test-reports/2026-09-22-redline-evidence-swboot-test-report.md。SWBOOT-10 仍为 fail-closed stub。
0. 验收分层
| 层 | 范围 | 可否代替真实 UI | 2026-09-22 红线证据 |
|---|---|---|---|
| L1 | manifest、profile、模板、quality gate 单元测试 | 否 | 子集 PASS(见 §1) |
| L2 | PostgreSQL 迁移、领域服务、API、鉴权、并发 | 否 | 领域 short PASS;PG NOT RUN(无 TEST_DATABASE_URL) |
| L3 | 前端组件、类型、build | 否 | NOT RUN(本机缺 tsc/tsx) |
| L4 | stub 小队和固定输出工程测试 | 否 | stub PASS;live PI SKIP |
| L5 | 真实 PI Agent Runner | 否,仍需页面验证 | pending auth |
| L6 | Ubuntu Server 无头浏览器真实页面操作 | 是,最终验收 | pending auth |
1. 工程门禁
Manifest 与目录
software_bootstrap和software_delivery均可校验(发布/退役全路径未本轮覆盖) — 证据:L1TestValidateDefinitionV2_SoftwareManifestsPASS(2026-09-22)- 不兼容 domain 的工作流被过滤 — 证据:
TestCompatibleWithProductDomainPASS(2026-09-22) - 新版本不会改变已激活实例的 manifest/template/profile hash — 证据:NOT RUN(需 PG 激活实例)
- 医疗正式 key 仍在官方集合且软件 key 并存(非全量黄金回归) — 证据:
TestOfficialWorkflowKeysPASS(2026-09-22) - 不再依赖“仅三正式 key”硬编码 — 证据:同上 +
TestCreateSoftwareProject_NoMedicalDefaultsPASS
数据与迁移
- 空数据库从 schema 1 升级并创建项目类型、profile、source binding — 证据:NOT RUN(无
TEST_DATABASE_URL) - 旧数据库升级不误分类既有项目 — 证据:NOT RUN
- secret 只存引用,数据库、文档、日志和 prompt 无明文 — 证据:NOT RUN(本批未做 secret 扫描)
- 项目、成员、planning instance、模板账本创建具备幂等事务语义 — 证据:NOT RUN(PG)
- 应用重启后项目、来源、plan、阶段和文档版本可恢复 — 证据:NOT RUN
授权与治理
- 非成员无法列出项目、对话、来源、文档、SSE、RAG 或 Agent 结果 — 证据:NOT RUN(需 API/UI)
- 非创建者无法激活、推进、选择下一流程或终止 — 证据:NOT RUN
- 客户端伪造 task/stage/duty/repo path 被服务端拒绝 — 证据:NOT RUN(完整 API);repo path stub 见 §4
- collaborative / solo / controlled 预览规则(领域层) — 证据:
TestBuildCreationPreview_*PASS(solo acknowledgement;privacy+solo 与 controlled_patch 拒绝) - solo 页面显示“未独立评审” — 证据:NOT RUN(L3/L6)
- controlled profile / controlled_patch 禁止未授权执行 — 证据:creation preview + SWBOOT-10 stub PASS
- 激活后 workflow/template/profile/duty 不能直接修改 — 证据:NOT RUN(需激活实例)
小队与文档
- 每个 executor/template/quality gate/profile 均注册且可解析 — 证据:NOT RUN(全量 registry 未本轮枚举)
- 正式任务只能从冻结 doc_task_instance 启动 — 证据:NOT RUN
- 步骤预算、timeout、工作区边界和 manifest 生效 — 证据:NOT RUN
- 失败/stub 不改写成真实 PASS — 证据:本报告区分 stub PASS vs L5 pending;LiveMiniMax SKIP
- 纯软件项目类型目录无医疗默认术语污染 — 证据:
TestProjectTypesCatalog/CreateSoftwareProject_NoMedicalDefaultsPASS - 软件创建默认走
software_bootstrap且无医疗 device 字段 — 证据:同上
2. Ubuntu Server 真实 UI 前置(L5/L6 — pending auth)
- 占用 CURRENT 集成槽位 — 证据:pending auth
go vet ./...、go test -short ./...、前端测试/build 通过 — 证据:本批仅跑范围子集 + arch-check;全量 short/前端 pending- PostgreSQL、app、真实 PI Runner、MiniMax 均 ready — 证据:pending auth
- 明确记录 commit、schema、镜像、模型、BASE_URL 和开始时间 — 证据:pending auth
- 使用官方 Playwright Chromium 容器;宿主无需安装浏览器 — 证据:pending auth
- 若容器不可用,才执行
npx playwright install --with-deps chromium— 证据:pending auth - 禁止
page.route、mock/stub、直接写数据库或伪造 API 输出 — 证据:pending auth
推荐运行形态:
docker run --rm --network host --ipc host \
-e BASE_URL=http://127.0.0.1:3100 \
-v "$PWD:/work" -w /work \
mcr.microsoft.com/playwright:v1.63.0-noble \
npx playwright test <software-bootstrap-ui-spec>
3. 真实 UI 用例
UI-SW-00 项目类型与向导
- Input:管理员登录;打开创建项目;选择 non-medical software。
- Expected:展示七步软件字段;不出现医疗器械固定标题、临床用途或 NMPA 默认值。
- Evidence:截图、trace、console/network 日志。
- Status:NOT RUN。
UI-SW-01 既有项目单人创建
- Input:
existing_self_bootstrap + standard + solo + docs_only;页面上传允许的仓库说明和文档。 - Expected:确认页显示 creator acknowledgement 和“未独立评审”;一次提交后项目、成员、plan 和模板可见;重复提交不创建第二项目。
- Evidence:截图、项目 ID、页面列表、trace。
- Status:NOT RUN。
UI-SW-02 协作项目职责
- Input:创建 collaborative 项目并选择至少三名成员。
- Expected:逐文档分配 author/reviewer/approver;重复人员不能激活;修正后预览成功。
- Evidence:职责矩阵截图、错误提示、激活预览。
- Status:NOT RUN。
UI-SW-03 激活冻结
- Input:保存 plan、查看预览、确认激活;随后尝试修改模板、profile 或职责。
- Expected:实例引用固定版本/hash;直接修改被拒绝;409 时展示差异且不自动重试。
- Evidence:预览、实例详情、拒绝提示。
- Status:NOT RUN。
UI-SW-04 真实基线小队
- Input:在对话框输入“请基于我上传的项目资料,正式启动现状梳理并生成现状审计”。
- Expected:页面可见真实小队、角色、步骤、进度、真实助手回复;生成
current_state_audit,不是聊天长回答。 - Evidence:对话、步骤条、文档截图、trace/video。
- Status:NOT RUN。
UI-SW-05 事实等级与证据
- Input:打开现状审计和架构基线。
- Expected:confirmed/inferred/unverified 可区分;high 问题有来源;找不到的信息明确写未验证。
- Evidence:文档截图、来源清单、版本账本。
- Status:NOT RUN。
UI-SW-06 软件语义隔离
- Input:使用不含医疗内容的软件项目材料跑完整 bootstrap。
- Expected:项目、回复、模板和文档中不出现临床、注册、NMPA、GB 9706、CDMO 等默认语义。
- Evidence:页面全文搜索和截图;任何命中逐条说明来源。
- Status:NOT RUN。
UI-SW-07 文档变更链
- Input:人工编辑一个块并保存;再通过真实对话要求小队更新同一文档。
- Expected:revision 增长、刷新保留;agent candidate 有 diff、风险、项目/文档影响和开放问题;确认/拒绝行为正确。
- Evidence:版本、revision、overlay、报告截图。
- Status:NOT RUN。
UI-SW-08 阶段门禁与创建者确认
- Input:文档未批准时尝试推进;完成审核批准后等待通知;创建者确认推进。
- Expected:未批准时列出 blocker;就绪只通知一次;不自动推进;非创建者不可推进。
- Evidence:readiness 面板、通知、阶段前后截图。
- Status:NOT RUN。
UI-SW-09 Bootstrap 就绪
- Input:完成所有启用阶段并打开 readiness。
- Expected:汇总风险、依赖和未验证项;存在 high blocker 时不可批准;通过后 workflow completed。
- Evidence:readiness 文档、阶段树、审计事件。
- Status:NOT RUN。
UI-SW-10 下一工作流建议
- Input:bootstrap 完成。
- Expected:页面建议
software_delivery,但不自动创建或激活;仅创建者确认后生成新的 planning instance。 - Evidence:建议卡、确认前后实例列表。
- Status:NOT RUN。
UI-SW-11 Delivery 迭代
- Input:建立 change brief 和 implementation plan,上传外部实现的 change manifest 与真实测试报告。
- Expected:trace 到 bootstrap requirements;失败/跳过测试阻断发布;用户确认后完成迭代。
- Evidence:文档血缘、测试报告、门禁、release notes。
- Status:NOT RUN。
UI-SW-12 权限负例
- Input:非成员和 viewer 登录;篡改 URL 中 project/doc/run/source ID。
- Expected:服务端 403/404;页面无数据泄露;SSE 不先 flush 200。
- Evidence:页面错误、network、服务端审计。
- Status:NOT RUN。
UI-SW-13 刷新与重启恢复
- Input:记录项目/实例/阶段/文档版本和正文;硬刷新、退出重登;仅 restart app 后再次登录。
- Expected:对话、任务、阶段、文档、职责、风险、V/r 和正文一致恢复。
- Evidence:pre/post state 文件和截图。
- Status:NOT RUN。
UI-SW-14 Agent-System 自举黄金项目
- Input:用 Agent-System 当前仓库作为只读来源,真实执行 software_bootstrap。
- Expected:页面生成当前态审计、架构、需求/backlog、风险、路线图和测试策略;当前结论重新核验,不照抄历史审计;不修改仓库。
- Evidence:完整对话、全部文档、版本、trace/video、来源 hash。
- Status:NOT RUN。
4. 未来 controlled patch 负例(SWBOOT-10 stub — 无真实仓写)
真实 allowlist DB / patch / merge 执行器未实现。下列勾选仅表示 stub fail-closed;不得当作 SWBOOT-10 已交付。
- repo / 路径未在 stub allowlist 不能读 — 证据:
TestRepoAllowlistStub→ERR_REPO_PATH_NOT_ALLOWLISTED(2026-09-22) - 非 allowlist 路径被拒绝 — 证据:同上
.env、secret、生产 dump 排除有效 — 证据:NOT RUN(需真实执行器)- 只在 feature worktree 写入 — 证据:NOT RUN(执行器未实现;本批证据写在任务 worktree)
- 超出批准文件范围立即停止 — 证据:NOT RUN
- 测试失败不自动 merge(ApproveMerge stub) — 证据:
ApproveMerge→ERR_SWBOOT10_STUB_ONLY - 批准执行不等于批准 merge/push/deploy — 证据:同上 +
ExecuteControlledPatchstub controlled_patch创建/顾问路径被拒绝 — 证据:preview +TestPiSoftwareBootstrapAdvisor_RejectsControlledPatch- 保护分支直接 commit、force push、破坏性命令均被拒绝 — 证据:NOT RUN(需真实执行器策略)
5. 完成定义
- L1–L5 工程门禁分别记录真实结果 — 2026-09-22:L1 子集 + L4 stub 已记;L2 PG / L3 / L5 未完成
- UI-SW-00–14 全部由真实页面操作执行并留证 — L6 pending auth
- 真实 PI 回复、小队进度和所有交付文档均可在 UI 看到 — L5/L6 pending auth
- 医疗与软件两套黄金项目均无回归 — NOT RUN
- 刷新、重登、重启、并发和权限负例通过 — NOT RUN
- test-report 逐项包含 Input/Expected/Actual/Verdict/Duration — 红线 SWBOOT 报告已遵循
- 任何 NOT RUN、fallback、失败和开放风险均如实保留 — 见 2026-09-22 报告