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>
4.1 KiB
4.1 KiB
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