feat(workflow-design): SWBOOT ADR, project_type migration, patch deny stub

SWBOOT-10 remains stub-only pending secondary approval.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
weichen
2026-09-16 15:40:56 +00:00
co-authored by Cursor
parent f1d8f49df7
commit 2b3302ece4
5 changed files with 62 additions and 0 deletions
@@ -0,0 +1,16 @@
---
title: "ADR: software_bootstrap / software_delivery keys"
status: accepted
created: 2026-09-16
---
# ADR: software project bootstrap workflow keys
## Decision
Introduce official workflow keys `software_bootstrap` and `software_delivery` for `non_medical_software` domain. Medical three-workflow catalog remains unchanged. SWBOOT-10 controlled repo patch is stub-only until secondary approval.
## Consequences
- Additive manifests + catalog allowlist
- No automatic start of delivery after bootstrap
@@ -0,0 +1,22 @@
# 纯软件项目自举 SWBOOT 测试报告
## 一、 测试背景 (Background)
覆盖 no-go 后启动 SWBOOT-00…09 基线;SWBOOT-10 仅 stub。
## 二、 测试目标 (Test Objectives)
ADR、schema 字段、patch deny stub。
## 三、 测试方案与环境 (Test Plan & Environment)
Go unit + goose additive。
## 四、 预期结果 (Expected Results)
PatchAllowed=false;迁移可 Up。
## 五、 实际测试结果与判定 (Actual Results & Evaluation)
- Verdict: PASS(基线 stub)
## 六、 自动化测试套件汇总 (Test Suite Execution)
`go test ./internal/swboot/ -count=1`
## 七、 测试结论与后续优化建议 (Conclusion & Next Steps)
完整向导/manifest/PI 黄金项目可后续迭代;不自动 delivery。
@@ -0,0 +1,9 @@
-- +goose Up
ALTER TABLE projects ADD COLUMN IF NOT EXISTS project_type TEXT NOT NULL DEFAULT 'medical_device';
ALTER TABLE projects ADD COLUMN IF NOT EXISTS compliance_profile TEXT NOT NULL DEFAULT '';
ALTER TABLE projects ADD COLUMN IF NOT EXISTS execution_mode TEXT NOT NULL DEFAULT '';
-- +goose Down
ALTER TABLE projects DROP COLUMN IF EXISTS execution_mode;
ALTER TABLE projects DROP COLUMN IF EXISTS compliance_profile;
ALTER TABLE projects DROP COLUMN IF EXISTS project_type;
+6
View File
@@ -0,0 +1,6 @@
package swboot
// RepoAllowlist is the SWBOOT-10 stub: no real patch/merge until approved.
func RepoAllowlist() []string { return nil }
func PatchAllowed(_ string) bool { return false }
+9
View File
@@ -0,0 +1,9 @@
package swboot
import "testing"
func TestPatchDeniedByDefault(t *testing.T) {
if PatchAllowed("any") {
t.Fatal("SWBOOT-10 must deny until secondary approval")
}
}