Files
Agent-System/.doc/adr/2026-09-16-software-project-bootstrap-keys.md
T
weichenandCursor a30931349a docs(adr): SWBOOT-00 software_bootstrap/delivery keys and domain boundary
Freeze selectable workflow keys, domain/compliance separation, solo policy,
and SWBOOT-10 fail-closed stub contract without touching medical three.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-16 15:36:08 +00:00

4.1 KiB
Raw Blame History

ADR:纯软件工作流 key 与领域边界(SWBOOT-00)

状态

已接受(2026-09-16)

背景

工作流引擎已声明 non_medical_software 产品域,但正式目录、创建入口与模板仍以医疗器械三工作流(main / product_manager / test_manager)为硬编码白名单。继续复用医疗 manifest 会造成临床/注册/CDO 语义污染;直接改写既有三 key 会破坏已激活医疗实例。

详细设计见 software-project-bootstrap-workflow。

决策

1. 新增正式可选工作流 key

key 定位 默认产品域 可重复实例
software_bootstrap 一次性建立项目事实、需求、架构、风险、路线与验证基线 non_medical_software 否(默认一次;终止后可重建并保留旧证据)
software_delivery 按里程碑/发布重复交付,承接 change brief → 证据 → 验证 → 发布 → 复盘 non_medical_software 是

医疗三 key 保持不变,仍为正式可选;不得在其 published hash 上替换为软件语义。

2. 目录策略:published + selectable,而非“仅三 key”

项目可选工作流 = 已发布 (latest_published_version > 0) ∩ project_selectable=true ∩ 策略白名单。

白名单扩展为:

main | product_manager | test_manager | software_bootstrap | software_delivery

固定文档数量校验 仅 继续约束医疗三 key;软件工作流按 manifest 自身完整性校验,不强制医疗文档数。

3. 领域与合规分离

  • product_domain=non_medical_software 只说明非医疗器械,不关闭鉴权/审计/安全基线。
  • compliance_profile / governance_profile / execution_mode / team_mode 为项目级独立字段。
  • 首期默认:governance=standard,compliance=internal_control+security_baseline,execution_mode=docs_only。
  • controlled_patch 在 SWBOOT-10 受控执行器就绪前 不可真正启用;仅保留 allowlist stub。

4. 串联而非回环

software_bootstrap(完成 + 创建者确认)
  → 仅建议 software_delivery
  → 创建者确认后新建 planning/激活实例

bootstrap 完成不得自动创建或激活 delivery。

5. Solo 审批策略(契约)

  • collaborative:独立三权(author/reviewer/approver 不同人)。
  • solo:creator_acknowledgement;页面与审计持续标注“未独立评审”。
  • controlled 或要求独立审查的 compliance profile:禁止 solo。

6. 错误码(首期)

code 含义
ERR_WORKFLOW_NOT_SELECTABLE key 不在正式可选白名单或未 published
ERR_DOMAIN_INCOMPATIBLE 工作流与项目 product_domain / project_type 不兼容
ERR_COMPLIANCE_PROFILE 合规配置非法或与治理冲突(如 controlled+solo)
ERR_EXECUTION_MODE_DISABLED 请求 controlled_patch 但受控执行器未启用
ERR_REPO_PATH_NOT_ALLOWLISTED 仓库路径不在管理员 allowlist(SWBOOT-10 stub)
ERR_CREATION_PREVIEW_STALE creation token / plan_hash 过期或不匹配(409)

7. 运行时权威不变

继续遵守 workflow-runtime-authority:任务只能从冻结 doc_task_instance 启动;禁止客户端 task_key/duty/stage 旁路。

后果

  • Bootstrap seed 与 catalog API 必须同时暴露软件两 key,且按 product_domain 过滤时不把医疗默认话术塞进软件项目。
  • 项目表 additive 增加 project_type_key / compliance_profile_key 等字段;旧项目不自动分类为医疗或软件。
  • SWBOOT-10 仅落地 allowlist stub:任何真实 patch/merge/push 必须 fail closed,直到独立 Epic 验收。
  • 医疗三工作流黄金用例与固定文档数门禁保持回归基线。

关联

  • 实施任务:.doc/ops/short-term/2026-09-16-software-project-bootstrap.md
  • Backlog:.doc/ops/long-term/2026-09-14-software-project-bootstrap-implementation.md
  • 验收清单:.doc/ops/checklists/2026-09-14-software-project-bootstrap-acceptance.md