Files
Agent-System/.doc/ops/checklists/2026-09-14-software-project-bootstrap-acceptance.md
T

12 KiB
Raw Blame History

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 红线证据批次(SHA 364ed7f1):仅复验无需真实仓写的 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 均可校验(发布/退役全路径未本轮覆盖) — 证据:L1 TestValidateDefinitionV2_SoftwareManifests PASS(2026-09-22)
  • 不兼容 domain 的工作流被过滤 — 证据:TestCompatibleWithProductDomain PASS(2026-09-22)
  • 新版本不会改变已激活实例的 manifest/template/profile hash — 证据:NOT RUN(需 PG 激活实例)
  • 医疗正式 key 仍在官方集合且软件 key 并存(非全量黄金回归) — 证据:TestOfficialWorkflowKeys PASS(2026-09-22)
  • 不再依赖“仅三正式 key”硬编码 — 证据:同上 + TestCreateSoftwareProject_NoMedicalDefaults PASS

数据与迁移

  • 空数据库从 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_NoMedicalDefaults PASS
  • 软件创建默认走 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 — 证据:同上 + ExecuteControlledPatch stub
  • 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 报告