team-skills 1.4.0 → 1.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -7,6 +7,51 @@
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [1.5.1] - 2026-06-28
11
+
12
+ ### 修复
13
+
14
+ - team-orchestrator: slug RESOLVE 链修复——READ 动作从 RESOLVE 中独立,消除 LLM"首个命中即停"导致的重复序号 bug
15
+ - team-orchestrator: Step 7.3.1 分期任务去掉独立 slug 解析,统一由 Step 1 处理(消除双重解析冲突)
16
+ - team-orchestrator: Step 1 步骤编号连续性修复(5,6 重复→7,8)
17
+
18
+ ### 变更
19
+
20
+ - 共享内容一致性同步:verify_cmd RESOLVE 5 步链(5 个 skill)、slug 解析流程(3 个 skill)、回退四要素(2 个 skill)、失败模式表 4→10 行(verification-protocol + team-verify)——全部与 canonical source 完全一致
21
+ - CLAUDE.md §2.2:明确 REF 仅用于声明性章节(CONSTITUTIONAL_RULES/COMPLETION),STEPS 中操作性内容必须内联
22
+ - 5 个 skill 补充 spec-driven-workflow.md 声明性 REF(team-test/review/orchestrator/debug/feedback)
23
+ - 4 个 skill 补充 verification-protocol.md / task-lifecycle.md / ai-collaboration-standards.md 声明性 REF
24
+
25
+ ## [1.5.0] - 2026-06-28
26
+
27
+ ### 新增
28
+
29
+ - team-spec: `01-plan.md` 骨架新增"容量与成本预估"章节(数据量级/QPS/API 成本/存储增长)
30
+ - team-spec: `03-sdd.md` §八 异常场景后新增并发和兼容性 SIGNAL 提示
31
+ - team-spec: Phase 3 自检新增容量成本检查项
32
+ - team-test: 功能覆盖维度补充跨模块/跨服务集成路径端到端测试要求
33
+ - team-test: 新增 E2E/集成测试遗漏 TRAP
34
+ - team-impl: RED 阶段新增集成测试遗漏 TRAP
35
+ - team-review: 正确性维度新增向后兼容性检查(API 签名、数据格式、配置项破坏性变更)
36
+ - team-review: 性能维度新增并发安全、数据量级评估、成本影响评估
37
+ - team-orchestrator: 精简模式等效证据映射表(D2 五项 + G1/G6/G7 硬门槛映射)
38
+ - team-debug: Phase 4 补充 `debug-report.md` WRITE 指令,QUALITY 表同步更新
39
+ - ai-collaboration-standards: 三层体系项目级新增 AGENTS.md,§1.4 Review 标准和交付要求新增 checklist 文件引用
40
+ - spec-driven-workflow: §七 边界条件新增"兼容性变更"
41
+
42
+ ### 变更
43
+
44
+ - team-score: D3 TDD 流程正确分值 5→8(对齐 L2 workshop 标准),移除 D4 评委自定(3),D3 总分 27→30,D4 总分 13→10,总分保持 100
45
+ - team-orchestrator: Step 8 D3/D4 分值标注同步(27→30, 13→10)
46
+ - team-orchestrator: 精简模式 D2.2/D2.3/D2.5 从"跳过"改为等效证据 ASSERT 检查
47
+ - team-security: 一级红线标识 RL-1~6 → RED_LINE_1~6,二级红线 HR-1~4 → HIGH_RISK_1~4(遵循"缩写即缺陷"命名规范)
48
+ - 消费方引用格式统一:`(红线 RL-N)` → ``(`team-security: RED_LINE_N`)``(team-review/team-spec/team-impl/team-finish)
49
+
50
+ ### 修复
51
+
52
+ - team-review: 复盘模板§编号对齐(§二.5→§三, §三→§四,与 13-retrospective-template.md 一致)
53
+ - ai-collaboration-standards: §1.4 代码结构引用计数修正("17 文件"→"任务目录结构")
54
+
10
55
  ## [1.4.0] - 2026-06-27
11
56
 
12
57
  ### 新增
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "team-skills",
3
- "version": "1.4.0",
3
+ "version": "1.5.1",
4
4
  "description": "AI Agent Skills framework — Spec-Driven development with directed-graph rollback and quality gates",
5
5
  "type": "module",
6
6
  "bin": {
@@ -7,7 +7,7 @@
7
7
  ### 1.1 三层规则体系
8
8
 
9
9
  ```
10
- 项目级 CLAUDE.md / .cursor/rules/ ← 全局规则,所有任务继承
10
+ 项目级 CLAUDE.md / .cursor/rules/ / AGENTS.md全局规则 + 架构说明,所有任务继承
11
11
  └─ 模块级 {module}/CLAUDE.md ← 模块特有规则
12
12
  └─ 任务级 task-rules.md ← 仅本任务适用
13
13
  ```
@@ -47,12 +47,12 @@
47
47
  | ----------- | ------------------------------------------------------------------------- |
48
48
  | 业务术语 | `team-spec` `02-context.md` 模板(术语表) |
49
49
  | 系统架构 | `team-orchestrator` 有向图流程图 + `team-spec` `03-sdd.md` §四 数据流 |
50
- | 代码结构 | `_team-rules/task-lifecycle.md` §1(17 文件目录结构) |
50
+ | 代码结构 | `_team-rules/task-lifecycle.md` §1(任务目录结构) |
51
51
  | 接口约定 | `team-spec` `02-context.md`(接口约束表)+ `03-sdd.md` §五/§六 |
52
52
  | 编码规范 | `_team-rules/spec-driven-workflow.md` §2 TDD + 本文件 §2.3 输出质量约束 + `team-impl` 各阶段禁止项 |
53
53
  | 测试要求 | `_team-rules/verification-protocol.md` + `team-test` 四维测试矩阵 |
54
- | Review 标准 | `team-review` 五维度审查 + 严重级别校准(P0-P3 实例) |
55
- | 交付要求 | `team-orchestrator` Step 8 完整性检查 |
54
+ | Review 标准 | `team-review` 五维度审查 + 严重级别校准(P0-P3 实例)+ `docs/review-checklist.md`(由 `team-review` 产出并维护) |
55
+ | 交付要求 | `team-orchestrator` Step 8 完整性检查 + `docs/delivery-checklist.md`(由 `team-review` 产出并维护) |
56
56
 
57
57
  ## §2 Prompt 工程规范
58
58
 
@@ -22,7 +22,7 @@
22
22
  | §四 数据流总览 | ASCII 架构图 | `team-impl` → 理解调用链路 |
23
23
  | §五 输入规格 | 参数类型、约束、默认值、示例 | `team-impl` + `team-test` |
24
24
  | §六 输出规格 | 场景、HTTP 状态、输出结构、示例 | `team-impl` + `team-test` |
25
- | §七 边界条件 | 空值、极值、并发、格式异常 | `team-test` → 边界测试 |
25
+ | §七 边界条件 | 空值、极值、并发、兼容性变更、格式异常 | `team-test` → 边界测试 |
26
26
  | §八 异常场景 | 错误码、错误消息、HTTP 状态 | `team-test` → 异常测试 |
27
27
  | §九 验收 Checklist | 验收条件、验证方式、预期结果 | `team-review` → 验收检查 |
28
28
 
@@ -33,11 +33,24 @@ docs/tasks/{NNNN}-{keyword}/
33
33
 
34
34
  格式:`{NNNN}-{keyword}`
35
35
 
36
- - 序号:扫描 `docs/tasks/` 已有目录取最大序号 +1,从 `0001` 起
37
36
  - 关键词:从任务描述提取,kebab-case
38
37
  - 整体 ≤ 50 字符
39
38
  - 示例:`0001-add-tooltip`、`0012-refactor-auth`
40
- - 分期继承任务:在上期关键词后追加 `-p{N}`(N 从 2 起),使用新序号。如 `0001-add-tooltip`(P1)→ `0002-add-tooltip-p2`(P2)→ `0005-add-tooltip-p3`(P3)
39
+ - 分期继承任务:使用新序号,在上期关键词后追加 `-p{N}`(N 从 2 起)。如 `0001-add-tooltip`(P1)→ `0002-add-tooltip-p2`(P2)→ `0005-add-tooltip-p3`(P3)
40
+
41
+ #### Slug 解析流程
42
+
43
+ > 所有需要生成 slug 的 Skill(`team-orchestrator`、`team-spec`、`team-brainstorm`)统一遵循此流程,不可自行实现序号计算。
44
+
45
+ 1. **IF** `docs/tasks/` NOT_EXISTS → 创建目录,最大序号 = 0
46
+ **ELSE** → **READ** `docs/tasks/` 已有目录 → 提取所有匹配 `NNNN-*` 格式的目录名中的四位数字前缀 → 取最大值记为最大序号(无匹配目录则最大序号 = 0)
47
+ 2. **RESOLVE** `slug`(首个命中即停):
48
+ 1. **IF** 用户传入已有 slug 且 `docs/tasks/{slug}/` EXISTS → 复用该 slug
49
+ 2. **IF** 分期继承任务(上下文含 `parent_slug`)→ 最大序号 +1,零填充四位,关键词追加 `-p{N}` 后缀
50
+ 3. *DEFAULT* → 最大序号 +1,零填充四位,拼接 `{NNNN}-{keyword}`
51
+ 3. **EXEC** 创建 `docs/tasks/{slug}/` 目录(**IF** 已存在 → 跳过)→ **ASSERT** `exit_code == 0`
52
+
53
+ > TRAP:序号计算必须基于目录扫描结果,不可硬编码 `0001`。"从 `0001` 起"仅指无已有目录时的初始值(最大序号 0 + 1 = 1)。
41
54
 
42
55
  ### 1.3 信息来源标签
43
56
 
@@ -2,16 +2,23 @@
2
2
 
3
3
  > 共享规则文件。任何"测试通过""CI 通过""lint 通过"的声明 MUST 基于此协议。
4
4
 
5
+ ## verify_cmd 解析流程
6
+
7
+ > 所有需要执行验证的 Skill(`team-impl`、`team-test`、`team-verify`、`team-feedback`、`team-finish`)统一遵循此流程解析验证命令,不可自行实现。
8
+
9
+ **RESOLVE** `verify_cmd`(首个命中即停):
10
+
11
+ 1. `READ("05-risk.md", "§一验证计划")`(精简模式下不存在属于正常)
12
+ 2. `READ("CLAUDE.md").verify_cmd` / `READ(".cursor/rules/")`
13
+ 3. `READ("package.json").scripts.test` / `READ("Makefile")` / `READ("Cargo.toml")` / `READ("CI 配置")`
14
+ 4. 手动验证可行(截图 / curl / 日志对比)→ 标注验证方式,继续
15
+ 5. *NONE* → **NEEDS_CONTEXT**:请用户提供验证命令
16
+
5
17
  ## 5 步验证流程
6
18
 
7
19
  ```
8
20
 
9
- 1. 确定验证命令(优先级从高到低):
10
- - 05-risk.md §一验证计划
11
- - CLAUDE.md / .cursor/rules/
12
- - package.json scripts / Makefile / Cargo.toml
13
- - 以上均无 → NEEDS_CONTEXT,请求用户提供
14
- - 项目无自动化验证 → 10-test-report.md 标注,改用手动验证(截图/curl/日志对比),不可跳过
21
+ 1. 确定验证命令 → 执行上方 verify_cmd 解析流程
15
22
  2. 执行命令——不用缓存,不引用上一轮输出
16
23
  3. 完整阅读输出——不截断,不跳过 warning。Warning 处理:退出码 = 0 时 warning 不阻塞通过声明,但必须在验证报告中列出 warning 内容供人类判断
17
24
  4. 退出码 = 0 且失败数 = 0
@@ -51,7 +58,13 @@ NO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE
51
58
 
52
59
  | 声明 | 充分证据 | 不充分 |
53
60
  | ---- | -------- | ------ |
54
- | 测试通过 | 0 failures + 退出码 0 | 上一轮运行、"应该能过" |
55
- | Lint 干净 | 0 errors + 退出码 0 | 部分检查、推测 |
56
- | 构建成功 | exit 0 + 无 error | Lint 通过、日志看起来对 |
57
- | Bug 修复 | 原始症状通过 + 回归通过 | 代码改了、假设修好了 |
61
+ | 测试通过 | `failures == 0` + `exit_code == 0` | 上一轮运行、"应该能过" |
62
+ | Lint 干净 | `errors == 0` + `exit_code == 0` | 部分检查、推测 |
63
+ | 构建成功 | `exit_code == 0` + 无 error | Lint 通过、日志看起来对 |
64
+ | Bug 修复 | 原始症状复现测试通过 + 回归通过 | 代码改了、假设修好了 |
65
+ | 回归测试通过 | 红-绿循环验证通过 | 测试通过一次 |
66
+ | Agent 完成 | `git diff` 显示变更 | Agent 报告"成功了" |
67
+ | 需求满足 | 逐条对照 checklist | 测试通过了 |
68
+ | 性能达标 | benchmark 通过 + baseline 对比 | "看起来快了"、仅 CI 通过 |
69
+ | 向后兼容 | 回归全通过 + 无 breaking API | "没改公共接口"但未运行旧版测试 |
70
+ | 文档已更新 | `git diff` 显示文档变更 + 链接检查通过 | "代码改了,文档应该也对" |
@@ -81,10 +81,13 @@ NO IMPLEMENTATION WITHOUT USER APPROVED DESIGN FIRST
81
81
  1. 从用户需求提取核心关键词(kebab-case)
82
82
  2. 从项目上下文推断关键词
83
83
  3. *NONE* → **NEEDS_CONTEXT**:请用户提供任务关键词
84
- 6. **IF** `docs/tasks/ NOT_EXISTS`创建 `docs/tasks/`
85
- 7. **READ** `docs/tasks/` 已有目录列表取最大序号 +1(从 `0001` 起)→ 拼接 `slug` = `{序号}-{keyword}`(整体 ≤ 50 字符)
84
+ 6. **IF** `docs/tasks/` NOT_EXISTS → 创建目录,最大序号 = 0
85
+ **ELSE** **READ** `docs/tasks/` 已有目录提取所有匹配 `NNNN-*` 格式的目录名中的四位数字前缀 取最大值记为最大序号(无匹配目录则最大序号 = 0)
86
+ 7. 最大序号 +1,零填充四位,拼接 `slug` = `{NNNN}-{keyword}`(整体 ≤ 50 字符)
86
87
  8. **EXEC** 创建 `docs/tasks/{slug}/` 目录(**IF** 已存在 → 跳过)→ **ASSERT** `exit_code == 0`
87
88
 
89
+ > TRAP:序号计算必须基于目录扫描结果,不可硬编码 `0001`。
90
+
88
91
  ### Phase 2:需求澄清(一次性提问)
89
92
 
90
93
  > 挖出用户未说出的假设和隐性约束。好问题比好答案更有价值——问错问题意味着后续全部方向偏移。
@@ -41,7 +41,7 @@ NO FIXES WITHOUT ROOT CAUSE INVESTIGATION FIRST
41
41
 
42
42
  | 质量维度 | 产出文件 |
43
43
  | -------- | -------- |
44
- | 根因调查记录 | 调试日志(对话中) |
44
+ | 根因调查记录 | 调试日志(对话中);编排模式另写 `debug-report.md` |
45
45
  | 假设验证记录 | 调试日志(对话中) |
46
46
  | 修复验证 | 测试通过确认 |
47
47
 
@@ -125,7 +125,7 @@ NO FIXES WITHOUT ROOT CAUSE INVESTIGATION FIRST
125
125
 
126
126
  > SIGNAL:修复通过但不同测试失败 → 修复停留在症状层面,根因仍在。回到 Phase 1 重新调查。
127
127
 
128
- 4. **IF** 编排模式(任务目录存在)→ **WRITE** 修复循环到 `06-tdd-log.md` + 决策到 `08-ai-decisions.md`
128
+ 4. **IF** 编排模式(任务目录存在)→ **WRITE** 修复循环到 `06-tdd-log.md` + 决策到 `08-ai-decisions.md` + 调试报告到 `debug-report.md`(按 OUTPUT_TEMPLATE 骨架填充)
129
129
  5. 修复成功 → 退出 `REPEAT`,进入自检门禁
130
130
 
131
131
  - *REPEAT_EXHAUSTED* → **BLOCKED**,触发 **ASK_HUMAN**,提交以下信息:
@@ -207,6 +207,7 @@ NO FIXES WITHOUT ROOT CAUSE INVESTIGATION FIRST
207
207
  **REF** `_team-rules/constitutional-rules.md` — 9 条 Constitutional Rules
208
208
  **REF** `_team-rules/first-principles.md` — 4 条第一性原理(First Principle #1 ~ #4)
209
209
  **REF** `_team-rules/verification-protocol.md` — 5 步验证协议
210
+ **REF** `_team-rules/spec-driven-workflow.md` — TDD 修复循环与有向图回退规则
210
211
 
211
212
  调试阶段尤其注意:
212
213
 
@@ -135,10 +135,11 @@ NO IMPLEMENTATION WITHOUT TECHNICAL VERIFICATION FIRST
135
135
 
136
136
  **RESOLVE** `verify_cmd`(首个命中即停):
137
137
 
138
- 1. `READ("05-risk.md", "§一验证计划")`
138
+ 1. `READ("05-risk.md", "§一验证计划")`(精简模式下不存在属于正常)
139
139
  2. `READ("CLAUDE.md").verify_cmd` / `READ(".cursor/rules/")`
140
- 3. `READ("package.json").scripts.test` / `READ("Makefile")` / `READ("Cargo.toml")`
141
- 4. *NONE* **NEEDS_CONTEXT**:请用户提供验证命令
140
+ 3. `READ("package.json").scripts.test` / `READ("Makefile")` / `READ("Cargo.toml")` / `READ("CI 配置")`
141
+ 4. 手动验证可行(截图 / curl / 日志对比)→ 标注验证方式,继续
142
+ 5. *NONE* → **NEEDS_CONTEXT**:请用户提供验证命令
142
143
 
143
144
  实施顺序:
144
145
 
@@ -222,6 +223,8 @@ NO IMPLEMENTATION WITHOUT TECHNICAL VERIFICATION FIRST
222
223
 
223
224
  **REF** `_team-rules/constitutional-rules.md` — 9 条 Constitutional Rules
224
225
  **REF** `_team-rules/first-principles.md` — 4 条第一性原理(First Principle #1 ~ #4)
226
+ **REF** `_team-rules/spec-driven-workflow.md` — TDD 逐项验证与有向图回退规则
227
+ **REF** `_team-rules/verification-protocol.md` — verify_cmd 解析流程与 5 步验证协议
225
228
 
226
229
  反馈处理阶段尤其注意:
227
230
 
@@ -66,9 +66,15 @@ NO BRANCH COMPLETION WITHOUT TEST VERIFICATION FIRST
66
66
 
67
67
  > TRAP:你会倾向于引用上一轮的测试结果来跳过重新执行。Iron Law 不允许——每次进入 finish 都必须重新运行。
68
68
 
69
- **EXEC** 项目测试命令 — 声明"通过"前须执行验证协议 `_team-rules/verification-protocol.md: 验证执行步骤`
69
+ **RESOLVE** `verify_cmd`(首个命中即停):
70
70
 
71
- **ASSERT** `exit_code == 0` && `failures == 0`
71
+ 1. `READ("05-risk.md", "§一验证计划")`(精简模式下不存在属于正常)
72
+ 2. `READ("CLAUDE.md").verify_cmd` / `READ(".cursor/rules/")`
73
+ 3. `READ("package.json").scripts.test` / `READ("Makefile")` / `READ("Cargo.toml")` / `READ("CI 配置")`
74
+ 4. 手动验证可行(截图 / curl / 日志对比)→ 标注验证方式,继续
75
+ 5. *NONE* → **NEEDS_CONTEXT**:请用户提供验证命令
76
+
77
+ **EXEC** `verify_cmd` → **ASSERT** `exit_code == 0` && `failures == 0`
72
78
 
73
79
  - 通过 → **GOTO** Step 1.5
74
80
  - 失败 → **MATCH** `mode`:
@@ -81,7 +87,7 @@ NO BRANCH COMPLETION WITHOUT TEST VERIFICATION FIRST
81
87
 
82
88
  > 推送前最后一道安全防线。凭证泄露一旦进入远程仓库,撤回成本极高。
83
89
 
84
- **EXEC** `grep -rn -E '(AK|SK|access[_-]?key|secret[_-]?key|api[_-]?key|token|password|passwd|credential)\s*[:=]' .` — 推送前凭证扫描(RL-2)
90
+ **EXEC** `grep -rn -E '(AK|SK|access[_-]?key|secret[_-]?key|api[_-]?key|token|password|passwd|credential)\s*[:=]' .` — 推送前凭证扫描(`team-security: RED_LINE_2`)
85
91
 
86
92
  - **IF** `exit_code == 0` → 逐条排除占位符/测试值/注释 → 真实凭证 → **BLOCKED**,**WRITE**(对话中)凭证位置,要求修复后重新验证
87
93
  - **ELSE** → **GOTO** Step 2
@@ -281,6 +287,8 @@ NO BRANCH COMPLETION WITHOUT TEST VERIFICATION FIRST
281
287
 
282
288
  **REF** `_team-rules/constitutional-rules.md` — 9 条 Constitutional Rules
283
289
  **REF** `_team-rules/first-principles.md` — 4 条第一性原理(First Principle #1 ~ #4)
290
+ **REF** `_team-rules/verification-protocol.md` — verify_cmd 解析流程与 5 步验证协议
291
+ **REF** `_team-rules/task-lifecycle.md` — 进度追踪与知识合并(§3)
284
292
 
285
293
  分支完成阶段尤其注意:
286
294
 
@@ -126,6 +126,8 @@ NO PRODUCTION CODE WITHOUT A FAILING TEST FIRST
126
126
 
127
127
  > TRAP:只写 Happy Path 测试就急着进 GREEN。SDD §七(边界条件)和 §八(异常场景)的测试必须在 RED 阶段一起写,不是"以后再补"。
128
128
 
129
+ > TRAP:仅写单元测试而遗漏集成测试——如果 SDD §四 数据流涉及跨模块调用,RED 阶段应包含跨模块集成测试,否则单元测试全绿但集成路径未验证。
130
+
129
131
  3. **EXEC** 项目测试命令 → **ASSERT** `exit_code != 0`(尚无实现,测试必须失败)
130
132
 
131
133
  > SIGNAL:`output CONTAINS "0 tests found"` → 测试文件路径或命名不符合项目 test pattern,先检查 glob 配置再下结论。
@@ -142,20 +144,28 @@ NO PRODUCTION CODE WITHOUT A FAILING TEST FIRST
142
144
  - 时间:{YYYY-MM-DD HH:MM}
143
145
  ```
144
146
 
145
- 5. **EXEC** `git commit -m "test: {功能点} (RED)"`
146
- - **ASSERT** `exit_code == 0`(commit 失败 → 检查 pre-commit hook 输出,修复后重试)
147
+ 5. **EXEC** `git add {测试文件路径}` — 仅暂存测试文件
148
+ - **ASSERT** `git diff --cached --name-only` 仅包含测试文件,不含生产代码
149
+ - **IF** 暂存区包含非测试文件 → `git reset HEAD {非测试文件}` 移出暂存区
150
+ 6. **EXEC** `git commit -m "test: {功能点} (RED)"` → **ASSERT** `exit_code == 0`
151
+ - commit 失败 → 检查 pre-commit hook 输出,修复后重试
152
+
153
+ > TRAP:你会倾向于在 RED 阶段"顺手"写几行实现代码。RED commit 是 TDD 顺序的**不可篡改证据**——一旦 commit 中混入生产代码,整个 TDD 证据链失效。编排器会通过 `git show --stat` 验证每个 RED commit 仅包含测试文件。
147
154
 
148
155
  **GATE** RED 完成检查(全部通过才放行):
149
156
 
150
157
  - [ ] **ASSERT** `06-tdd-log.md CONTAINS "RED 记录"`
151
- - [ ] **ASSERT** `git log CONTAINS "RED commit"`
158
+ - [ ] **ASSERT** `git log CONTAINS "test: ... (RED)" commit`
159
+ - [ ] **ASSERT** `git show --stat HEAD` 仅包含测试文件变更(不含生产代码)
152
160
  - [ ] 我是否因为"应该没问题"跳过了 SDD §七/§八 中某个边界条件或异常场景的测试?
153
161
 
154
162
  #### 循环 2:绿(Green)— 写实现
155
163
 
156
164
  > TRAP:你会倾向于在 GREEN 阶段写"正确且优雅"的代码。抑制这个冲动——GREEN 只需让当前测试通过的最小代码量。三行重复优于过早抽象,优雅留给 REFACTOR。
157
165
 
158
- 1. **WRITE** 最少代码让测试通过
166
+ 1. **EXEC** `git diff --name-only` → **ASSERT** 工作区无生产代码变更(仅允许 `06-tdd-log.md` 等文档变更)
167
+ - **IF** 发现已存在实现代码文件 → 违反 TDD 纪律(先写实现后写测试)→ 删除实现代码 → **GOTO** 循环 1 重新开始
168
+ 2. **WRITE** 最少代码让测试通过
159
169
  2. **EXEC** 项目测试命令 → **ASSERT** `exit_code == 0`
160
170
  - **IF** `exit_code == 0` → **WRITE** `06-tdd-log.md` GREEN 记录
161
171
  - **IF** `exit_code != 0` → 修改实现(非测试)→ 重新执行步骤 1-2
@@ -186,7 +196,7 @@ NO PRODUCTION CODE WITHOUT A FAILING TEST FIRST
186
196
  3. **WRITE** `06-tdd-log.md` REFACTOR 记录
187
197
  4. **EXEC** `git commit -m "refactor: {功能点}"` → **ASSERT** `exit_code == 0`
188
198
 
189
- **提交纪律**(Constitutional Rule #9):每个功能点的 RED → GREEN → REFACTOR 各自独立 commit(`test:` → `feat:/fix:` → `refactor:`)。RED commit 必须在写实现代码之前完成。编排器通过 `git log` 验证时序。违反 → 删除实现,从 RED 重新开始。
199
+ **提交纪律**(Constitutional Rule #9):每个功能点的 RED → GREEN → REFACTOR 各自独立 commit(`test:` → `feat:/fix:` → `refactor:`)。RED commit **仅包含测试文件**,不得混入任何生产代码——git history 是 TDD 顺序的不可篡改证据。编排器通过 `git show --stat` 验证每个 RED commit 的文件列表。违反 → 删除实现,从 RED 重新开始。
190
200
 
191
201
  #### Bug 修复验证模式
192
202
 
@@ -280,10 +290,11 @@ NO PRODUCTION CODE WITHOUT A FAILING TEST FIRST
280
290
  > 用独立的全量验证确认实现正确。此阶段的每个"通过"声明必须基于刚执行的命令输出,不是 Phase 1 的记忆。
281
291
 
282
292
  1. **RESOLVE** `verify_cmd`(首个命中即停):
283
- 1. `READ("05-risk.md", "§一验证计划")`
293
+ 1. `READ("05-risk.md", "§一验证计划")`(精简模式下不存在属于正常)
284
294
  2. `READ("CLAUDE.md").verify_cmd` / `READ(".cursor/rules/")`
285
295
  3. `READ("package.json").scripts.test` / `READ("Makefile")` / `READ("Cargo.toml")` / `READ("CI 配置")`
286
- 4. *NONE* **NEEDS_CONTEXT**:请用户提供验证命令,记录到 `06-tdd-log.md`
296
+ 4. 手动验证可行(截图 / curl / 日志对比)→ 标注验证方式,继续
297
+ 5. *NONE* → **NEEDS_CONTEXT**:请用户提供验证命令,记录到 `06-tdd-log.md`
287
298
 
288
299
  2. **EXEC** `verify_cmd`(测试)→ **ASSERT** `exit_code == 0` && `failures == 0`
289
300
  3. **EXEC** 项目 lint 命令 → **ASSERT** `exit_code == 0`
@@ -360,8 +371,8 @@ NO PRODUCTION CODE WITHOUT A FAILING TEST FIRST
360
371
  - [ ] **EXEC** 项目测试命令 → **ASSERT** `failures == 0`
361
372
  - [ ] **EXEC** 项目 lint 命令 → **ASSERT** `exit_code == 0`
362
373
  - [ ] **EXEC** `git diff --name-only` → **ASSERT** `未修改 04-boundary.md deny 文件`
363
- - [ ] **EXEC** `grep -rn -E '(AK|SK|access[_-]?key|secret[_-]?key|api[_-]?key|password|passwd|credential)\s*[:=]' .` → **ASSERT** 无真实凭证硬编码(RL-2,排除占位符/测试值/注释)
364
- - [ ] **IF** 代码调用外部 AI 服务 → **ASSERT** `输入数据已脱敏或确认为非敏感`(RL-1)
374
+ - [ ] **EXEC** `grep -rn -E '(AK|SK|access[_-]?key|secret[_-]?key|api[_-]?key|password|passwd|credential)\s*[:=]' .` → **ASSERT** 无真实凭证硬编码(`team-security: RED_LINE_2`,排除占位符/测试值/注释)
375
+ - [ ] **IF** 代码调用外部 AI 服务 → **ASSERT** `输入数据已脱敏或确认为非敏感`(`team-security: RED_LINE_1`)
365
376
  - [ ] **ASSERT** `实际消耗 <= 01-plan.md 自我约束预算`
366
377
  - [ ] **ASSERT** `所有困惑已显式记录于 06-tdd-log.md 审计段落`
367
378
  - [ ] **ASSERT** `无占位符残留({N}、{slug} 等已被实际值替换)`
@@ -269,6 +269,18 @@ NO AGENT DISPATCH WITHOUT CONFIRM_GOAL HUMAN CONFIRMATION FIRST
269
269
  | 团队证据 14-15 | ✅ | ❌ |
270
270
  | 归档合并 | ✅ | ✅ |
271
271
 
272
+ **精简模式等效证据映射**(team-score 评分时使用相同映射):
273
+
274
+ | 评分项 | 完整模式证据 | 精简模式等效证据 |
275
+ | ------ | ----------- | --------------- |
276
+ | D2.1 目标澄清 | `01-plan.md` §一 | `03-sdd.md` §一 背景与动机 |
277
+ | D2.2 上下文选择 | `02-context.md` | `04-boundary.md` 引用文件列表 |
278
+ | D2.3 任务拆分 | `01-plan.md` §二 分期 | `03-sdd.md` 分期说明或阶段划分 |
279
+ | D2.5 验证与风险 | `05-risk.md` | `03-sdd.md` §三 设计决策 + `11-review.md` §四 剩余风险 |
280
+ | G1 任务规划 | `01-plan.md` 全文 | `03-sdd.md` 含目标和设计决策 |
281
+ | G6 风险说明 | `05-risk.md` + `11-review.md` | `11-review.md` §四 |
282
+ | G7 关键决策 | `08-ai-decisions.md` + `15-brief.md` | `08-ai-decisions.md` |
283
+
272
284
  ## INPUT
273
285
 
274
286
  | 来源 | 必需 | 说明 |
@@ -330,7 +342,7 @@ NO AGENT DISPATCH WITHOUT CONFIRM_GOAL HUMAN CONFIRMATION FIRST
330
342
 
331
343
  **MATCH** `checkpoint.status`:
332
344
 
333
- - `IN_PROGRESS` → 从 `next_step` 对应的 Step 继续
345
+ - `IN_PROGRESS` → 从 `current_step` 对应的 Step 继续
334
346
  - `DONE` || `DONE_WITH_CONCERNS` → 提示用户"该任务已完成",询问是否新建变体任务
335
347
  - `BLOCKED` → 触发 **ASK_HUMAN** 展示 `blocked_reason`
336
348
  - `NEEDS_CONTEXT` → 展示缺失信息,请求用户补充
@@ -358,20 +370,24 @@ NO AGENT DISPATCH WITHOUT CONFIRM_GOAL HUMAN CONFIRMATION FIRST
358
370
  > 确保任务目标被准确理解,用户对方案方向有明确确认。跳过 CONFIRM_GOAL 是编排器最危险的错误——后续所有 Agent 的工作都建立在这个确认之上。
359
371
 
360
372
  1. **READ** 用户参数 → 提取任务描述
361
- 2. **RESOLVE** `slug`(首个命中即停):
362
- 1. **READ** `docs/tasks/` 已有目录(**IF** NOT_EXISTS创建)
363
- 2. **IF** 用户传入已有 slug 且 `docs/tasks/{slug}/00-design-brief.md EXISTS` → 复用该 slug
364
- 3. **IF** 分期任务(HUMAN_ACCEPT 后续分期触发)→ slug 包含 `-p{N}` 后缀,checkpoint 记录 `parent_slug`
365
- 4. *DEFAULT* 取最大序号 +1(从 `0001` 起),拼接 `{NNNN}-{关键词}`(kebab-case,≤ 50 字符)
366
- 3. **EXEC** 创建 `docs/tasks/{slug}/` 目录(**IF** 已存在 跳过)→ **ASSERT** `exit_code == 0`
367
- 4. **WRITE** checkpoint:`current_step=Step 1, next_step=CONFIRM_GOAL, phase=init, status=IN_PROGRESS`
368
- 5. **READ** `docs/tasks/progress.md`(**IF** NOT_EXISTS 创建含表头)→ **ASSERT** `{slug} 不在 progress.md 已完成列表中`
373
+ 2. **IF** `docs/tasks/` NOT_EXISTS → 创建目录,最大序号 = 0
374
+ **ELSE** **READ** `docs/tasks/` 已有目录 提取所有匹配 `NNNN-*` 格式的目录名中的四位数字前缀 取最大值记为最大序号(无匹配目录则最大序号 = 0)
375
+ 3. **RESOLVE** `slug`(首个命中即停):
376
+ 1. **IF** 用户传入已有 slug `docs/tasks/{slug}/00-design-brief.md EXISTS` 复用该 slug
377
+ 2. **IF** 分期继承任务(checkpoint `parent_slug`)→ 最大序号 +1,零填充四位,关键词追加 `-p{N}` 后缀
378
+ 3. *DEFAULT*最大序号 +1,零填充四位,拼接 `{NNNN}-{keyword}`(kebab-case,≤ 50 字符)
379
+
380
+ > TRAP:序号计算必须基于目录扫描结果,不可硬编码 `0001`。"从 `0001` 起"仅指无已有目录时的初始值(最大序号 0 + 1 = 1)。
381
+
382
+ 4. **EXEC** 创建 `docs/tasks/{slug}/` 目录(**IF** 已存在 → 跳过)→ **ASSERT** `exit_code == 0`
383
+ 5. **WRITE** checkpoint:`current_step=Step 1, next_step=CONFIRM_GOAL, phase=init, status=IN_PROGRESS`
384
+ 6. **READ** `docs/tasks/progress.md`(**IF** NOT_EXISTS → 创建含表头)→ **ASSERT** `{slug} 不在 progress.md 已完成列表中`
369
385
  - **IF** 已存在且状态 `DONE` → 提示用户,询问是否新建变体任务
370
386
 
371
387
  > progress.md 是跨任务进度索引,位于 `docs/tasks/` 根目录,不在 slug 子目录中。
372
388
 
373
- 6. **WRITE** checkpoint:`current_step=CONFIRM_GOAL, next_step=Step 1.5, status=IN_PROGRESS, pending_decision=确认目标理解`
374
- 7. **WRITE**(对话中)向用户展示:任务理解 + 初步方案 + 风险预判 + 分期建议
389
+ 7. **WRITE** checkpoint:`current_step=CONFIRM_GOAL, next_step=Step 1.5, status=IN_PROGRESS, pending_decision=确认目标理解`
390
+ 8. **WRITE**(对话中)向用户展示:任务理解 + 初步方案 + 风险预判 + 分期建议
375
391
  - **IF** `00-design-brief.md EXISTS` → **READ** 并将摘要纳入展示
376
392
 
377
393
  **MATCH** `user_response`:
@@ -439,6 +455,8 @@ NO AGENT DISPATCH WITHOUT CONFIRM_GOAL HUMAN CONFIRMATION FIRST
439
455
  - (b) 由编排器手动编写规格,但承诺补全 01-05 规划文档
440
456
  - (c) 终止任务
441
457
 
458
+ **WRITE** checkpoint:`current_step=Step 2, phase=spec-dispatching, status=IN_PROGRESS`
459
+
442
460
  **ROUTE** `team-spec`
443
461
 
444
462
  调用方式取决于工具能力:
@@ -508,6 +526,8 @@ NO AGENT DISPATCH WITHOUT CONFIRM_GOAL HUMAN CONFIRMATION FIRST
508
526
  - (c) 终止任务
509
527
  - **IF** 用户选择 (b) → 编排器执行实现,但**必须**在进入 Step 4 前产出 06-08
510
528
 
529
+ **WRITE** checkpoint:`current_step=Step 3, phase=impl-dispatching, status=IN_PROGRESS`
530
+
511
531
  **ROUTE** `team-impl`
512
532
 
513
533
  调用方式取决于工具能力:
@@ -553,11 +573,16 @@ TDD 强制要求:每个功能点必须先 git commit 失败测试(test: {功
553
573
  3. **ASSERT** `GREEN.通过输出` NOT_EMPTY && `GREEN.通过输出` CONTAINS `PASS|pass|OK|✓|✅|passed`
554
574
  4. **ASSERT** `RED.时间 <= GREEN.时间` && `GREEN.时间 <= REFACTOR.时间`
555
575
  5. **EXEC** `git log --oneline` → **ASSERT** `exit_code == 0` && `test: 提交数 >= 功能点数`
576
+ 6. **FOR** `red_commit` **IN** `test: ... (RED) commits`:**EXEC** `git show --stat {red_commit}` → **ASSERT** 仅包含测试文件变更,不含生产代码
556
577
 
557
578
  任一项不通过 → **ROLLBACK** team-impl,附具体不合格项及期望修正行为。
558
579
 
580
+ **WRITE**(对话中)team-impl 产出摘要:代码变更文件列表 + TDD 循环数 + 测试通过状态。
581
+
559
582
  **WRITE** checkpoint:`current_step=Step 4, next_step=Step 5, phase=impl, completed_steps 追加 Step 3`
560
583
 
584
+ → **GOTO** Step 4
585
+
561
586
  ### Step 4:调度 team-test
562
587
 
563
588
  > 测试审计是独立于实现的质量验证。编排器必须完整传递 team-test 的路由决策(回退 team-impl/回退 team-spec),不可自行过滤或降级。
@@ -569,6 +594,8 @@ TDD 强制要求:每个功能点必须先 git commit 失败测试(test: {功
569
594
  - CHECK `team-test` skill 是否存在
570
595
  - **IF** 不可用 → **ASK_HUMAN**,展示选项:(a) 安装后继续 (b) 编排器手动执行但承诺补全 09-10 (c) 终止
571
596
 
597
+ **WRITE** checkpoint:`current_step=Step 4, phase=test-dispatching, status=IN_PROGRESS`
598
+
572
599
  **ROUTE** `team-test`
573
600
 
574
601
  调用方式取决于工具能力:
@@ -597,6 +624,8 @@ TDD 强制要求:每个功能点必须先 git commit 失败测试(test: {功
597
624
 
598
625
  **READ** `10-test-report.md` 中 team-test 路由决策(→ team-review / → team-impl / → team-spec / → **ASK_HUMAN**)
599
626
 
627
+ **WRITE**(对话中)team-test 产出摘要:测试矩阵覆盖率 + 新增/修改测试数 + 路由决策(继续/回退)。
628
+
600
629
  **WRITE** checkpoint:`current_step=Step 5, next_step=Step 6, phase=test, completed_steps 追加 Step 4`
601
630
 
602
631
  **回退检查**(Constitutional Rule #7:同一 source→target 对回退 ≤ 2 次):
@@ -610,9 +639,9 @@ TDD 强制要求:每个功能点必须先 git commit 失败测试(test: {功
610
639
  - `同一对第 3 次回退` → **WRITE** checkpoint:`status=BLOCKED` → 强制 **ASK_HUMAN**
611
640
  - `Kill Switch`(任务不可行)→ **WRITE** checkpoint:`status=BLOCKED` → **ASK_HUMAN**
612
641
  - `人类需决策` → **WRITE** checkpoint:`status=BLOCKED` → **ASK_HUMAN**
613
- - *DEFAULT* → 记录问题,继续下一步
642
+ - *DEFAULT* → 记录问题 → **GOTO** Step 5
614
643
 
615
- **ELSE** → 测试全部通过,继续下一步
644
+ **ELSE** → 测试全部通过 → **GOTO** Step 5
616
645
 
617
646
  > SIGNAL:同一 `source→target` 对回退达到 2 次时,第 3 次不是"再试一次"——是系统性问题(SDD 不完整、架构不适配等),必须触发 `ASK_HUMAN` 让用户介入。
618
647
 
@@ -627,6 +656,8 @@ TDD 强制要求:每个功能点必须先 git commit 失败测试(test: {功
627
656
  - CHECK `team-review` skill 是否存在
628
657
  - **IF** 不可用 → **ASK_HUMAN**,展示选项:(a) 安装后继续 (b) 编排器手动执行但承诺补全 11-13 + task-rules (c) 终止
629
658
 
659
+ **WRITE** checkpoint:`current_step=Step 5, phase=review-dispatching, status=IN_PROGRESS`
660
+
630
661
  **ROUTE** `team-review`
631
662
 
632
663
  调用方式取决于工具能力:
@@ -656,6 +687,8 @@ TDD 强制要求:每个功能点必须先 git commit 失败测试(test: {功
656
687
 
657
688
  **READ** `11-review.md` 中 team-review 修复/回退决策
658
689
 
690
+ **WRITE**(对话中)team-review 产出摘要:五维度审查结论 + P0/P1 问题数 + 路由决策(继续/回退)。**IF** `status == DONE_WITH_CONCERNS` → 完整展示 concerns 给用户。
691
+
659
692
  **WRITE** checkpoint:`current_step=Step 6, next_step=Step 7, phase=review, completed_steps 追加 Step 5`
660
693
 
661
694
  **回退检查**(Constitutional Rule #7:同一 source→target 对回退 ≤ 2 次):
@@ -669,9 +702,9 @@ TDD 强制要求:每个功能点必须先 git commit 失败测试(test: {功
669
702
  - `同一对第 3 次回退` → **WRITE** checkpoint:`status=BLOCKED` → 强制 **ASK_HUMAN**
670
703
  - `Kill Switch` → **WRITE** checkpoint:`status=BLOCKED` → **ASK_HUMAN**
671
704
  - `人类需决策` → **WRITE** checkpoint:`status=BLOCKED` → **ASK_HUMAN**
672
- - *DEFAULT* → 记录问题,继续下一步
705
+ - *DEFAULT* → 记录问题 → **GOTO** Step 6
673
706
 
674
- **ELSE** → 审查全部通过,继续下一步
707
+ **ELSE** → 审查全部通过 → **GOTO** Step 6
675
708
 
676
709
  ### Step 6:补全团队级证据
677
710
 
@@ -825,10 +858,8 @@ TDD 强制要求:每个功能点必须先 git commit 失败测试(test: {功
825
858
 
826
859
  1. **WRITE**(对话中)候选项 + 触发条件给用户
827
860
  2. **IF** 用户批准:
828
- - **RESOLVE** slug:取最大序号 +1,关键词追加 `-p{N}`
829
- - **EXEC** 创建新目录 `docs/tasks/{新slug}/` **ASSERT** `exit_code == 0`
830
- - **WRITE** 新 `.checkpoint.json`,含 `parent_slug` 指向上期
831
- - **GOTO** Step 1(CONFIRM_GOAL 简化为单句确认)
861
+ - **WRITE** checkpoint:`phase=phasing, parent_slug={当前slug}, next_phase_n={N}`
862
+ - **GOTO** Step 1(CONFIRM_GOAL 简化为单句确认;Step 1 的 RESOLVE `slug` 将检测 checkpoint `parent_slug` 触发分期任务分支,自动扫描目录生成新序号)
832
863
  - team-spec 调度时额外传递上期 `01-plan.md` 候选表和 `03-sdd.md` 路径
833
864
 
834
865
  **ELSE** → 记录用户决策,流程结束
@@ -904,12 +935,12 @@ TDD 强制要求:每个功能点必须先 git commit 失败测试(test: {功
904
935
  **D2 AI 协作任务规划(25 分):**
905
936
 
906
937
  - [ ] D2.1 `[完整模式]` **ASSERT** `01-plan.md 有成功标准 >= 3 条` && `非目标 >= 2 条`。`[精简替代]` **ASSERT** `03-sdd.md §一 有明确目标`
907
- - [ ] D2.2 `[完整模式]` **ASSERT** `02-context.md 有必要引用 + 已排除上下文`。`[精简替代]` 跳过
908
- - [ ] D2.3 `[完整模式]` **ASSERT** `01-plan.md 有 >= 5 阶段拆分`。`[精简替代]` 跳过
938
+ - [ ] D2.2 `[完整模式]` **ASSERT** `02-context.md 有必要引用 + 已排除上下文`。`[精简替代]` **ASSERT** `04-boundary.md 有引用文件列表`
939
+ - [ ] D2.3 `[完整模式]` **ASSERT** `01-plan.md 有 >= 5 阶段拆分`。`[精简替代]` **ASSERT** `03-sdd.md 有分期说明或阶段划分`
909
940
  - [ ] D2.4 **ASSERT** `04-boundary.md 有 allow/deny + 依赖约束`
910
- - [ ] D2.5 `[完整模式]` **ASSERT** `05-risk.md 有验证计划` && `停下来问人条件 >= 3 个`。`[精简替代]` 跳过
941
+ - [ ] D2.5 `[完整模式]` **ASSERT** `05-risk.md 有验证计划` && `停下来问人条件 >= 3 个`。`[精简替代]` **ASSERT** `03-sdd.md §三 有风险相关设计决策` || `11-review.md §四 有剩余风险说明`
911
942
 
912
- **D3 AI 交付质量保障(27 分):**
943
+ **D3 AI 交付质量保障(30 分):**
913
944
 
914
945
  - [ ] D3.1 **ASSERT** `03-sdd.md 含输入/输出/边界/异常/验收 Checklist`
915
946
  - [ ] D3.2 **READ** `06-tdd-log.md` → **ASSERT** `RED 失败输出在前` && `GREEN 通过输出在后` && `git log 中 test: 提交早于 feat:/fix:`
@@ -917,7 +948,7 @@ TDD 强制要求:每个功能点必须先 git commit 失败测试(test: {功
917
948
  - [ ] D3.4 **ASSERT** `06-tdd-log.md 有修复记录` && `11-review.md 有修复记录`
918
949
  - [ ] D3.5 **ASSERT** `11-review.md 含五维度审查` && `§四 剩余风险 EXISTS`
919
950
 
920
- **D4 AI 使用过程与复盘(13 分):**
951
+ **D4 AI 使用过程与复盘(10 分):**
921
952
 
922
953
  - [ ] D4.1 **ASSERT** `07-prompt-log.md 每条含五要素`
923
954
  - [ ] D4.2 **ASSERT** `07-prompt-log.md 每条含效果记录`;**IF** 存在偏离 → **ASSERT** `有纠偏前后对比`
@@ -953,6 +984,7 @@ TDD 强制要求:每个功能点必须先 git commit 失败测试(test: {功
953
984
  **REF** `_team-rules/constitutional-rules.md` — 9 条 Constitutional Rules
954
985
  **REF** `_team-rules/first-principles.md` — 4 条第一性原理(First Principle #1 ~ #4)
955
986
  **REF** `_team-rules/ai-collaboration-standards.md` — AI 协作资产与 Prompt 工程规范
987
+ **REF** `_team-rules/spec-driven-workflow.md` — 有向图回退规则与回退次数上限
956
988
 
957
989
  编排阶段尤其注意:
958
990
 
@@ -106,9 +106,9 @@ NO COMPLETION CLAIMS WITHOUT CONSTITUTIONAL COMPLIANCE CHECK FIRST
106
106
 
107
107
  | 维度 | 检查内容 |
108
108
  | ------------ | -------------------------------------------------------------- |
109
- | **正确性** | 逻辑是否正确?边界条件是否处理?异常路径是否覆盖? |
109
+ | **正确性** | 逻辑是否正确?边界条件是否处理?异常路径是否覆盖?向后兼容性是否保持(API 签名、数据格式、配置项的破坏性变更)? |
110
110
  | **可维护性** | 命名是否清晰?函数是否过长?是否有重复代码?是否遵循项目约定? |
111
- | **性能** | 是否有不必要的循环?是否有内存泄漏风险?是否有不必要的渲染? |
111
+ | **性能** | 是否有不必要的循环?是否有内存泄漏风险?是否有不必要的渲染?并发安全(竞态条件、死锁、资源争用)?数据量级评估(大表扫描、批量操作)?成本影响评估(外部 API 调用频次、存储增长)? |
112
112
  | **安全** | 注入风险?凭证泄露?权限检查遗漏?外部 AI 数据脱敏?高风险操作 HITL? |
113
113
  | **测试覆盖** | 测试是否覆盖了所有边界?测试命名是否清晰?测试是否可重复? |
114
114
 
@@ -116,16 +116,16 @@ NO COMPLETION CLAIMS WITHOUT CONSTITUTIONAL COMPLIANCE CHECK FIRST
116
116
 
117
117
  #### 安全硬检查(安全维度强制执行,不可仅靠人眼)
118
118
 
119
- 1. **EXEC** `grep -rn -E '(AK|SK|access[_-]?key|secret[_-]?key|api[_-]?key|token|password|passwd|credential)\s*[:=]' .` — 凭证泄露扫描(RL-2)
119
+ 1. **EXEC** `grep -rn -E '(AK|SK|access[_-]?key|secret[_-]?key|api[_-]?key|token|password|passwd|credential)\s*[:=]' .` — 凭证泄露扫描(`team-security: RED_LINE_2`)
120
120
  - **IF** `exit_code == 0` → 逐条排除占位符/测试值/注释 → 真实凭证 → **P0 安全漏洞**
121
121
  - **ELSE** → 记录"凭证扫描通过"
122
122
 
123
123
  2. **IF** 项目配置了 SAST/SCA 工具(`npm audit` / `safety check` / `cargo audit` / `gosec` / `semgrep`)→ **EXEC** 对应扫描命令 → **IF** `exit_code != 0` → 高危 → **P1**,中低危 → **P2**
124
124
  **ELSE** → 标注"项目未配置 SAST/SCA,仅人工安全审查"
125
125
 
126
- 3. **IF** 代码涉及高风险操作(资金划转 / 权限变更 / 数据删除 / 对外发布)→ **ASSERT** `人工确认机制已实现`(RL-3) — 未实现 → **P0 安全漏洞**
126
+ 3. **IF** 代码涉及高风险操作(资金划转 / 权限变更 / 数据删除 / 对外发布)→ **ASSERT** `人工确认机制已实现`(`team-security: RED_LINE_3`) — 未实现 → **P0 安全漏洞**
127
127
 
128
- 4. **IF** 代码调用外部 AI 服务 → **ASSERT** `输入数据已脱敏或确认为非敏感`(RL-1) — 敏感数据直接输入 → **P0 安全漏洞**
128
+ 4. **IF** 代码调用外部 AI 服务 → **ASSERT** `输入数据已脱敏或确认为非敏感`(`team-security: RED_LINE_1`) — 敏感数据直接输入 → **P0 安全漏洞**
129
129
 
130
130
  ### Phase 1.5:Constitutional 合规检查
131
131
 
@@ -192,7 +192,7 @@ NO COMPLETION CLAIMS WITHOUT CONSTITUTIONAL COMPLIANCE CHECK FIRST
192
192
 
193
193
  - 问题 ID 和严重级别
194
194
  - 具体位置(文件 + 行号)
195
- - 问题描述
195
+ - 问题描述(不是"有 bug",而是"第 42 行空指针")
196
196
  - 建议的修复方案
197
197
  - **IF** 回退到 team-impl → 提供修复后的期望测试用例
198
198
 
@@ -363,13 +363,13 @@ NO COMPLETION CLAIMS WITHOUT CONSTITUTIONAL COMPLIANCE CHECK FIRST
363
363
 
364
364
  1. **本次任务回顾**:做得好的 + 可以改进的 + 意外发现(具体事例,不是泛泛而谈)
365
365
  2. **AI 协作经验**:提示词优化经验 + 团队协作改进建议
366
- 3. **新规则沉淀**(§二.5):列出可固化规则,注明写入位置。**固化门槛**:同类问题出现 ≥ 2 次(模式),或可在未来导致 P0/P1(严重性)。一次性 P2/P3 仅记录到 task-rules.md
366
+ 3. **新规则沉淀**(§三):列出可固化规则,注明写入位置。**固化门槛**:同类问题出现 ≥ 2 次(模式),或可在未来导致 P0/P1(严重性)。一次性 P2/P3 仅记录到 task-rules.md
367
367
  - **FOR** `new_rule`:
368
368
  1. **WRITE** 追加到目标文件(项目 AI 规范 / 模块 AI 规范 / task-rules.md)
369
369
  2. **WRITE** 变更记录到 `12-asset-update.md`
370
- 4. **改进承诺**(§三):具体行动 + 预期效果
370
+ 4. **改进承诺**(§四):具体行动 + 预期效果
371
371
 
372
- **ASSERT** `新规则沉淀段落 EXISTS` — §二.5 是质量检查 D4.4 的关键证据。"发现规则但未写入目标文件"视为未完成
372
+ **ASSERT** `新规则沉淀段落 EXISTS` — §三 是质量检查 D4.4 的关键证据。"发现规则但未写入目标文件"视为未完成
373
373
 
374
374
  ## OUTPUT_TEMPLATE
375
375
 
@@ -459,6 +459,9 @@ NO COMPLETION CLAIMS WITHOUT CONSTITUTIONAL COMPLIANCE CHECK FIRST
459
459
 
460
460
  **REF** `_team-rules/constitutional-rules.md` — 9 条 Constitutional Rules
461
461
  **REF** `_team-rules/first-principles.md` — 4 条第一性原理(First Principle #1 ~ #4)
462
+ **REF** `_team-rules/spec-driven-workflow.md` — SDD 验证链与有向图回退规则
463
+ **REF** `_team-rules/task-lifecycle.md` — 来源标签规范(§1.3)
464
+ **REF** `_team-rules/ai-collaboration-standards.md` — 消费方契约原则(§1.2)与资产维护机制(§1.3)
462
465
 
463
466
  审查阶段尤其注意:
464
467
 
@@ -128,17 +128,17 @@ NO SCORE WITHOUT EVIDENCE FIRST
128
128
  | 执行约束 | 5 | 明确哪些文件可改,哪些不能改;明确依赖、接口、数据结构、兼容性约束 | 边界说明、修改文件清单 |
129
129
  | 验证与风险控制 | 5 | 每一步有可检查完成标准;能识别什么时候该让 AI 停下来问人 | 验证计划、风险项、停下来问人条件 |
130
130
 
131
- ### 三、AI 交付质量保障(27 分)
131
+ ### 三、AI 交付质量保障(30 分)
132
132
 
133
133
  | 二级验收项 | 分值 | 验收标准 | 需检查的证据 |
134
134
  | ----------------- | ---- | -------------------------------------------------------------------- | -------------------------------------- |
135
135
  | SDD 规格清晰 | 5 | 业务规则结构化(输入/输出/边界条件/异常场景);关键设计决策有选择理由和拒绝理由 | SDD 规格说明 |
136
- | TDD 流程正确 | 5 | 先写测试再写实现(git log 提交顺序可验证);测试在修复前失败、修复后通过 | 测试提交记录、失败/通过截图或代码 diff |
136
+ | TDD 流程正确 | 8 | 先写测试再写实现(git log 提交顺序可验证);测试在修复前失败、修复后通过。证据链:(1) `test:` commit 时间戳早于 `feat:`/`fix:` commit (2) 06-tdd-log.md RED 记录含 FAIL 输出 (3) GREEN 记录含 PASS 输出且时间戳晚于 RED | 测试提交记录、06-tdd-log.md RED/GREEN 时间戳对、失败/通过截图或代码 diff |
137
137
  | 测试覆盖充分 | 7 | 正向路径(2) + 边界条件(2) + 异常场景(2) + 回归测试(1);仅 happy path ≤ 2 分 | 测试用例列表、代码 diff、改动测试结果 |
138
138
  | 缺陷修复正确 | 5 | 修复符合业务规则;没有引入新的硬编码或副作用;没有破坏已有功能。零缺陷场景(全流程无 bug):检查代码质量而非修复记录——测试一次通过 + Review 无 P0/P1 = 满分 | 代码 diff、改动测试结果 |
139
139
  | Review 与风险识别 | 5 | 能识别脆弱性、数据、安全、性能、兼容性问题;说明剩余风险和未覆盖部分 | Review 记录、风险识别记录 |
140
140
 
141
- ### 四、AI 使用过程与复盘(13 分)
141
+ ### 四、AI 使用过程与复盘(10 分)
142
142
 
143
143
  | 二级验收项 | 分值 | 验收标准 | 需检查的证据 |
144
144
  | -------------- | ---- | ---------------------------------------------------------- | --------------------- |
@@ -146,7 +146,6 @@ NO SCORE WITHOUT EVIDENCE FIRST
146
146
  | 能迭代纠偏 | 3 | AI 输出偏离时,能指出问题并调整提示;不是复制粘贴结果 | AI 对话摘要、纠偏记录 |
147
147
  | 过程可追溯 | 2 | 保留关键 AI 对话摘要;能说明为什么采纳或拒绝 AI 建议 | AI 协作过程记录 |
148
148
  | 个人复盘有效 | 2 | 每位成员能总结本次沉淀的新规则,并说明下次如何提升协作质量 | 个人复盘文档 |
149
- | (评委自定) | 3 | 评委根据答辩表现酌情加分。评估维度:技术决策解释清晰度、trade-off 理解深度、遗留风险坦诚程度。无答辩环节时此项不评分,D4 得分 = 其他 4 项实得分 ÷ 10 × 13 | 答辩现场 / 书面答辩 |
150
149
 
151
150
  ### 五、团队协作表现(10 分)
152
151
 
@@ -276,7 +275,7 @@ NO SCORE WITHOUT EVIDENCE FIRST
276
275
 
277
276
  > SIGNAL:得分 >= 80% 但交付物清单有缺失项 → 评分标准与交付标准不一致。降分或补充说明。
278
277
 
279
- **FOR** `验收项`(5 个维度,共 24 项):
278
+ **FOR** `验收项`(5 个维度,共 23 项):
280
279
 
281
280
  1. **ASSERT** `该项证据来源 != 空` → 找不到证据 = 0 分,记录"未找到:`{搜索过的路径}`"
282
281
  2. 根据验收标准给出得分(0 ~ 满分),附带具体文件路径和内容片段
@@ -301,8 +300,8 @@ NO SCORE WITHOUT EVIDENCE FIRST
301
300
  - **40%**: 有意识但执行不足
302
301
  - **0分**: 完全缺失
303
302
 
304
- > GOOD:`D3.2 TDD 流程:3/5。证据:06-tdd-log.md 第 12-45 行记录了 3 个功能点的 RED→GREEN 循环,时间戳顺序正确(RED 14:02 → GREEN 14:18)。但 git log 显示第 4 个功能点 feat: 提交早于 test: 提交,TDD 顺序违反。扣 2 分。`
305
- > BAD:`D3.2 TDD 流程:3/5。基本遵循了 TDD 流程,有些地方可以改进。`
303
+ > GOOD:`D3.2 TDD 流程:5/8。证据:06-tdd-log.md 第 12-45 行记录了 3 个功能点的 RED→GREEN 循环,时间戳顺序正确(RED 14:02 → GREEN 14:18)。但 git log 显示第 4 个功能点 feat: 提交早于 test: 提交,TDD 顺序违反。扣 3 分。`
304
+ > BAD:`D3.2 TDD 流程:5/8。基本遵循了 TDD 流程,有些地方可以改进。`
306
305
 
307
306
  > GOOD:`D1.3 规则可执行:0/5。未找到。已搜索路径:CLAUDE.md(不存在)、.cursorrules(不存在)、docs/ai/(目录不存在)、README.md(无 AI 规则章节)。`
308
307
  > BAD:`D1.3 规则可执行:2/5。项目有一定的规范意识。`
@@ -338,10 +337,10 @@ NO SCORE WITHOUT EVIDENCE FIRST
338
337
  ### 二、AI 协作任务规划(得分/25)
339
338
  ...
340
339
 
341
- ### 三、AI 交付质量保障(得分/27
340
+ ### 三、AI 交付质量保障(得分/30
342
341
  ...
343
342
 
344
- ### 四、AI 使用过程与复盘(得分/13
343
+ ### 四、AI 使用过程与复盘(得分/10
345
344
  ...
346
345
 
347
346
  ### 五、团队协作表现(得分/10)
@@ -411,8 +410,8 @@ NO SCORE WITHOUT EVIDENCE FIRST
411
410
  |------|------|---------|---------|
412
411
  | D1 AI 协作资产 | {n}/25 | {evidence} | {suggestion} |
413
412
  | D2 任务规划 | {n}/25 | {evidence} | {suggestion} |
414
- | D3 交付质量 | {n}/27 | {evidence} | {suggestion} |
415
- | D4 过程复盘 | {n}/13 | {evidence} | {suggestion} |
413
+ | D3 交付质量 | {n}/30 | {evidence} | {suggestion} |
414
+ | D4 过程复盘 | {n}/10 | {evidence} | {suggestion} |
416
415
  | D5 团队协作 | {n}/10 | {evidence} | {suggestion} |
417
416
  ```
418
417
 
@@ -178,9 +178,9 @@ NO AI OPERATIONS WITHOUT RED LINE CHECK FIRST
178
178
 
179
179
  > 以下 6 条红线绝对禁止,不受业务需求、紧急程度或管理层级影响。
180
180
 
181
- **FOR** `red_line` **IN** [`RL-1`, `RL-2`, `RL-3`, `RL-4`, `RL-5`, `RL-6`]:
181
+ **FOR** `red_line` **IN** [`RED_LINE_1`, `RED_LINE_2`, `RED_LINE_3`, `RED_LINE_4`, `RED_LINE_5`, `RED_LINE_6`]:
182
182
 
183
- #### RL-1:敏感数据输入外部 AI
183
+ #### RED_LINE_1:敏感数据输入外部 AI
184
184
 
185
185
  1. **EXEC** `grep -rn -E '(api\.openai|api\.anthropic|api\.google|generativelanguage|azure\.com/openai|外部AI|external[_-]?ai|third[_-]?party)' .` — 检测外部 AI 服务调用
186
186
  - **IF** `exit_code == 0` → 发现外部 AI 调用 → 检查输入数据
@@ -189,9 +189,9 @@ NO AI OPERATIONS WITHOUT RED LINE CHECK FIRST
189
189
  - 个人信息(客户数据、员工信息)→ **违规**
190
190
  - 商业秘密 → **违规**
191
191
  - 核心仓库代码 → **违规**
192
- - 违规 → 标记 `RL-1 VIOLATION`,继续检查下一条红线
192
+ - 违规 → 标记 `RED_LINE_1 VIOLATION`,继续检查下一条红线
193
193
 
194
- #### RL-2:凭证泄露
194
+ #### RED_LINE_2:凭证泄露
195
195
 
196
196
  > SIGNAL:`grep` 命中硬编码凭证 → 立即 P0,不等其他检查完成。凭证一旦入库(即使后续 commit 删除),git history 中永久存在。
197
197
 
@@ -202,9 +202,9 @@ NO AI OPERATIONS WITHOUT RED LINE CHECK FIRST
202
202
  - 硬编码真实 AK/SK/Token/API Key/密码 → **违规**
203
203
  - 凭证通过 Prompt 输入 AI → **违规**
204
204
  - 账号外借/共享 → **违规**
205
- - 违规 → 标记 `RL-2 VIOLATION`,继续检查下一条红线
205
+ - 违规 → 标记 `RED_LINE_2 VIOLATION`,继续检查下一条红线
206
206
 
207
- #### RL-3:AI 直接执行高风险操作
207
+ #### RED_LINE_3:AI 直接执行高风险操作
208
208
 
209
209
  > TRAP:"内部 API 不需要授权检查"是最常见的安全假设错误。内部 ≠ 可信——横向移动攻击正是利用这一点。
210
210
 
@@ -216,32 +216,32 @@ NO AI OPERATIONS WITHOUT RED LINE CHECK FIRST
216
216
  - 数据删除 → **ASSERT** `人工确认记录 EXISTS`
217
217
  - 对外发布 → **ASSERT** `人工确认记录 EXISTS`
218
218
  - *DEFAULT* → 继续下一项
219
- 3. **IF** 任一高风险操作无人工确认 → 标记 `RL-3 VIOLATION`,继续检查下一条红线
219
+ 3. **IF** 任一高风险操作无人工确认 → 标记 `RED_LINE_3 VIOLATION`,继续检查下一条红线
220
220
 
221
- #### RL-4:未审批接入外部 AI 或 API
221
+ #### RED_LINE_4:未审批接入外部 AI 或 API
222
222
 
223
223
  1. **READ** 项目依赖(`package.json` / `go.mod` / `requirements.txt` / `pom.xml`)+ 代码中的外部服务调用
224
224
  2. **EXEC** `grep -rn -E '(import|require|from)\s.*(openai|anthropic|google\.generativeai|azure.*openai|cohere|mistral|replicate)' .` — 检测外部 AI SDK 引入
225
225
  - **IF** `exit_code == 0` → 检查是否经过审批
226
226
  3. **ASSERT** `外部 AI 服务已审批`
227
- - 未经审批的外部 AI 接入 → 标记 `RL-4 VIOLATION`,继续检查下一条红线
227
+ - 未经审批的外部 AI 接入 → 标记 `RED_LINE_4 VIOLATION`,继续检查下一条红线
228
228
 
229
- #### RL-5:使用公司数据训练外部模型
229
+ #### RED_LINE_5:使用公司数据训练外部模型
230
230
 
231
231
  1. **READ** 代码中的模型训练/微调逻辑
232
232
  2. **EXEC** `grep -rn -E '(fine[_-]?tun|train|finetune|lora|qlora|sft)\b' .` — 检测训练相关代码
233
233
  - **IF** `exit_code == 0` → 检查数据来源和模型目标
234
234
  3. **ASSERT** `公司数据未用于训练外部模型`
235
- - 公司数据输出到第三方训练平台 → 标记 `RL-5 VIOLATION`,继续检查下一条红线
235
+ - 公司数据输出到第三方训练平台 → 标记 `RED_LINE_5 VIOLATION`,继续检查下一条红线
236
236
 
237
- #### RL-6:滥用公司 AI 资源
237
+ #### RED_LINE_6:滥用公司 AI 资源
238
238
 
239
239
  1. **READ** AI 资源使用记录/代码逻辑
240
240
  2. **ASSERT** `AI 资源用于工作职责范围内`
241
- - 与工作无关的用途 → 标记 `RL-6 VIOLATION`
242
- - 未授权的商业经营/外部服务/数据处理 → 标记 `RL-6 VIOLATION`
241
+ - 与工作无关的用途 → 标记 `RED_LINE_6 VIOLATION`
242
+ - 未授权的商业经营/外部服务/数据处理 → 标记 `RED_LINE_6 VIOLATION`
243
243
 
244
- **IF** 存在任何 `RL-* VIOLATION` → **GOTO** Phase 7(携带全部违规记录)
244
+ **IF** 存在任何 `RED_LINE_* VIOLATION` → **GOTO** Phase 7(携带全部违规记录)
245
245
 
246
246
  ### Phase 3:二级红线检查(高风险限制)
247
247
 
@@ -251,49 +251,49 @@ NO AI OPERATIONS WITHOUT RED LINE CHECK FIRST
251
251
 
252
252
  > 以下 4 条为高风险操作,必须满足控制条件后方可执行。
253
253
 
254
- **FOR** `high_risk` **IN** [`HR-1`, `HR-2`, `HR-3`, `HR-4`]:
254
+ **FOR** `high_risk` **IN** [`HIGH_RISK_1`, `HIGH_RISK_2`, `HIGH_RISK_3`, `HIGH_RISK_4`]:
255
255
 
256
- #### HR-1:AI 自动化执行
256
+ #### HIGH_RISK_1:AI 自动化执行
257
257
 
258
258
  **IF** 存在 AI 自动化执行逻辑:
259
259
 
260
260
  - **ASSERT** `人机协同控制机制 已配置`
261
261
  - **ASSERT** `关键执行节点有人工确认`
262
- - 未满足 → 标记 `HR-1 NON_COMPLIANT`
262
+ - 未满足 → 标记 `HIGH_RISK_1 NON_COMPLIANT`
263
263
 
264
- **ELSE**:标注 `HR-1 N/A`
264
+ **ELSE**:标注 `HIGH_RISK_1 N/A`
265
265
 
266
- #### HR-2:Agent 多系统调用
266
+ #### HIGH_RISK_2:Agent 多系统调用
267
267
 
268
268
  **IF** 存在 Agent 跨系统调用:
269
269
 
270
270
  - **ASSERT** `安全评估 已完成`
271
271
  - **ASSERT** `系统间调用权限边界 已明确`
272
272
  - **ASSERT** `审计监控(日志记录) 已纳入`
273
- - 未满足 → 标记 `HR-2 NON_COMPLIANT`
273
+ - 未满足 → 标记 `HIGH_RISK_2 NON_COMPLIANT`
274
274
 
275
- **ELSE**:标注 `HR-2 N/A`
275
+ **ELSE**:标注 `HIGH_RISK_2 N/A`
276
276
 
277
- #### HR-3:Workflow 自动决策
277
+ #### HIGH_RISK_3:Workflow 自动决策
278
278
 
279
279
  **IF** 存在 Workflow 自动决策逻辑:
280
280
 
281
281
  - **ASSERT** `决策阈值 已定义`
282
282
  - **ASSERT** `回退机制 已配置`
283
283
  - **ASSERT** `决策结果 可追溯、可复核`
284
- - 未满足 → 标记 `HR-3 NON_COMPLIANT`
284
+ - 未满足 → 标记 `HIGH_RISK_3 NON_COMPLIANT`
285
285
 
286
- **ELSE**:标注 `HR-3 N/A`
286
+ **ELSE**:标注 `HIGH_RISK_3 N/A`
287
287
 
288
- #### HR-4:AI 辅助决策(影响业务结果)
288
+ #### HIGH_RISK_4:AI 辅助决策(影响业务结果)
289
289
 
290
290
  **IF** 存在 AI 辅助决策影响业务:
291
291
 
292
292
  - **ASSERT** `AI 建议角色定位 已明确`
293
293
  - **ASSERT** `最终决策由授权人员做出并确认`
294
- - 未满足 → 标记 `HR-4 NON_COMPLIANT`
294
+ - 未满足 → 标记 `HIGH_RISK_4 NON_COMPLIANT`
295
295
 
296
- **ELSE**:标注 `HR-4 N/A`
296
+ **ELSE**:标注 `HIGH_RISK_4 N/A`
297
297
 
298
298
  ### Phase 4:分场景安全控制检查
299
299
 
@@ -428,21 +428,21 @@ NO AI OPERATIONS WITHOUT RED LINE CHECK FIRST
428
428
 
429
429
  | 编号 | 红线 | 状态 | 说明 |
430
430
  | ---- | ---- | ---- | ---- |
431
- | RL-1 | 敏感数据输入外部 AI | ✅ 合规 / ❌ 违规 / N/A | {detail} |
432
- | RL-2 | 凭证泄露 | ✅ 合规 / ❌ 违规 / N/A | {detail} |
433
- | RL-3 | AI 直接执行高风险操作 | ✅ 合规 / ❌ 违规 / N/A | {detail} |
434
- | RL-4 | 未审批接入外部 AI 或 API | ✅ 合规 / ❌ 违规 / N/A | {detail} |
435
- | RL-5 | 使用公司数据训练外部模型 | ✅ 合规 / ❌ 违规 / N/A | {detail} |
436
- | RL-6 | 滥用公司 AI 资源 | ✅ 合规 / ❌ 违规 / N/A | {detail} |
431
+ | RED_LINE_1 | 敏感数据输入外部 AI | ✅ 合规 / ❌ 违规 / N/A | {detail} |
432
+ | RED_LINE_2 | 凭证泄露 | ✅ 合规 / ❌ 违规 / N/A | {detail} |
433
+ | RED_LINE_3 | AI 直接执行高风险操作 | ✅ 合规 / ❌ 违规 / N/A | {detail} |
434
+ | RED_LINE_4 | 未审批接入外部 AI 或 API | ✅ 合规 / ❌ 违规 / N/A | {detail} |
435
+ | RED_LINE_5 | 使用公司数据训练外部模型 | ✅ 合规 / ❌ 违规 / N/A | {detail} |
436
+ | RED_LINE_6 | 滥用公司 AI 资源 | ✅ 合规 / ❌ 违规 / N/A | {detail} |
437
437
 
438
438
  ## 三、二级红线检查结果
439
439
 
440
440
  | 编号 | 行为类型 | 状态 | 控制条件满足情况 |
441
441
  | ---- | -------- | ---- | ---------------- |
442
- | HR-1 | AI 自动化执行 | ✅ 合规 / ⚠️ 不合规 / N/A | {detail} |
443
- | HR-2 | Agent 多系统调用 | ✅ 合规 / ⚠️ 不合规 / N/A | {detail} |
444
- | HR-3 | Workflow 自动决策 | ✅ 合规 / ⚠️ 不合规 / N/A | {detail} |
445
- | HR-4 | AI 辅助决策 | ✅ 合规 / ⚠️ 不合规 / N/A | {detail} |
442
+ | HIGH_RISK_1 | AI 自动化执行 | ✅ 合规 / ⚠️ 不合规 / N/A | {detail} |
443
+ | HIGH_RISK_2 | Agent 多系统调用 | ✅ 合规 / ⚠️ 不合规 / N/A | {detail} |
444
+ | HIGH_RISK_3 | Workflow 自动决策 | ✅ 合规 / ⚠️ 不合规 / N/A | {detail} |
445
+ | HIGH_RISK_4 | AI 辅助决策 | ✅ 合规 / ⚠️ 不合规 / N/A | {detail} |
446
446
 
447
447
  ## 四、分场景安全控制
448
448
 
@@ -465,8 +465,8 @@ NO AI OPERATIONS WITHOUT RED LINE CHECK FIRST
465
465
 
466
466
  | 优先级 | 问题 | 红线编号 | 整改要求 | 责任方 | 期限 |
467
467
  | ------ | ---- | -------- | -------- | ------ | ---- |
468
- | P0 | {issue} | RL-{N} | {action} | {owner} | 立即 |
469
- | P1 | {issue} | HR-{N} | {action} | {owner} | {date} |
468
+ | P0 | {issue} | RED_LINE_{N} | {action} | {owner} | 立即 |
469
+ | P1 | {issue} | HIGH_RISK_{N} | {action} | {owner} | {date} |
470
470
 
471
471
  ## 七、审计结论
472
472
 
@@ -483,8 +483,8 @@ NO AI OPERATIONS WITHOUT RED LINE CHECK FIRST
483
483
  - **人机协同要求**:{从 Phase 5 提取的必须插入人工确认的操作列表}
484
484
  ```
485
485
 
486
- > GOOD:`RL-2 ✅ 合规 — grep 扫描 src/ 和 config/ 共 3 处命中:(1) config/example.env 为占位符 "YOUR_API_KEY",(2) src/auth.ts:12 从环境变量读取 process.env.SECRET_KEY 未硬编码,(3) tests/mock.ts:5 为测试 mock 值。逐一排查后确认无真实凭证泄露。`
487
- > BAD:`RL-2 ✅ 合规 — 未发现硬编码凭证。`
486
+ > GOOD:`RED_LINE_2 ✅ 合规 — grep 扫描 src/ 和 config/ 共 3 处命中:(1) config/example.env 为占位符 "YOUR_API_KEY",(2) src/auth.ts:12 从环境变量读取 process.env.SECRET_KEY 未硬编码,(3) tests/mock.ts:5 为测试 mock 值。逐一排查后确认无真实凭证泄露。`
487
+ > BAD:`RED_LINE_2 ✅ 合规 — 未发现硬编码凭证。`
488
488
  > (缺少扫描范围、命中数量、逐条排查过程——无法判断是真合规还是扫描不充分)
489
489
 
490
490
  ### Phase 7:违规路由与回退
@@ -495,12 +495,12 @@ NO AI OPERATIONS WITHOUT RED LINE CHECK FIRST
495
495
 
496
496
  **MATCH** `violation_level`:
497
497
 
498
- - `RL-*`(一级红线违规):
498
+ - `RED_LINE_*`(一级红线违规):
499
499
  1. **WRITE** `docs/security-audit.md` — 写入已完成的检查结果 + 违规详情
500
500
  2. **WRITE**(对话中)违规详情:
501
501
 
502
502
  ```
503
- 🚨 红线违规:{RL-N} {红线名称}
503
+ 🚨 红线违规:{RED_LINE_N} {红线名称}
504
504
  违规行为:{具体行为描述}
505
505
  涉及位置:{文件路径:行号}
506
506
  证据:{grep/代码片段}
@@ -512,7 +512,7 @@ NO AI OPERATIONS WITHOUT RED LINE CHECK FIRST
512
512
  - 规格层问题(SDD 设计违反安全原则、缺少安全约束)→ **ROLLBACK** team-spec,附:缺失的安全要求 + 建议补充内容
513
513
  - 流程/审批问题(未审批接入外部 AI、资源滥用)→ **ASK_HUMAN**:人类立即介入
514
514
  - *DEFAULT* → **BLOCKED** + **ASK_HUMAN**
515
- - `HR-*`(二级红线不合规):
515
+ - `HIGH_RISK_*`(二级红线不合规):
516
516
  1. **WRITE** 整改建议到 `docs/security-audit.md` §六
517
517
  2. **MATCH** `hr_source`:
518
518
  - 实现层缺失控制机制 → **ROLLBACK** team-impl,附:需补充的控制机制
@@ -556,7 +556,7 @@ NO AI OPERATIONS WITHOUT RED LINE CHECK FIRST
556
556
  - [ ] **ASSERT** `high_risk_checked == 4` — 4 条二级红线全部检查(含 N/A 标注)
557
557
  - [ ] **ASSERT** `RL_violation == 0` || `ASK_HUMAN 已触发` — 一级红线违规已触发人类介入
558
558
  - [ ] **ASSERT** `docs/security-audit.md EXISTS` && CONTAINS 八个章节(含 §八 安全约束参考)
559
- - [ ] **EXEC** `grep -cE 'RL-[1-6]|HR-[1-4]' docs/security-audit.md` → **ASSERT** `output >= 10` — 红线编号均已记录
559
+ - [ ] **EXEC** `grep -cE 'RED_LINE_[1-6]|HIGH_RISK_[1-4]' docs/security-audit.md` → **ASSERT** `output >= 10` — 红线编号均已记录
560
560
  - [ ] **ASSERT** `整改清单` NOT_EMPTY(如有不合规项)|| `全部合规`
561
561
  - [ ] **ASSERT** `无占位符残留({N}、{slug} 等已被实际值替换)`
562
562
  - [ ] **ASSERT** `IRON_LAW 遵守` — 一级红线违规已触发 ASK_HUMAN,未擅自降级
@@ -67,8 +67,13 @@ NO CODE WITHOUT SPEC FIRST
67
67
 
68
68
  **RESOLVE** `slug`(首个命中即停):
69
69
 
70
- 1. 扫描 `docs/tasks/` 取最大序号 +1(从 `0001` 起),拼接 kebab-case 关键词,整体 ≤ 50 字符
71
- 2. *NONE*(`docs/tasks/` 不存在)→ 创建目录,序号从 `0001`
70
+ 1. **IF** `docs/tasks/` NOT_EXISTS 创建目录,最大序号 = 0
71
+ **ELSE** → **READ** `docs/tasks/` 已有目录 提取所有匹配 `NNNN-*` 格式的目录名中的四位数字前缀 → 取最大值记为最大序号(无匹配目录则最大序号 = 0)
72
+ 2. **IF** 用户传入已有 slug 且 `docs/tasks/{slug}/` EXISTS → 复用该 slug
73
+ 3. *DEFAULT* → 最大序号 +1,零填充四位,拼接 `{NNNN}-{keyword}`(kebab-case,≤ 50 字符)
74
+ 4. **EXEC** 创建 `docs/tasks/{slug}/` 目录(**IF** 已存在 → 跳过)→ **ASSERT** `exit_code == 0`
75
+
76
+ > TRAP:序号计算必须基于目录扫描结果,不可硬编码 `0001`。
72
77
 
73
78
  产出到 `docs/tasks/{slug}/`。
74
79
 
@@ -202,6 +207,9 @@ NO CODE WITHOUT SPEC FIRST
202
207
  | E{N} | {异常名} | {何时发生} | {code} | {message} | {status} |
203
208
  ```
204
209
 
210
+ > SIGNAL:§八 异常场景中没有并发相关条目(竞态条件、死锁、重复提交)→ 若系统有并发访问,需补充并发异常场景。
211
+ > SIGNAL:§七/§八 中没有兼容性条目(旧版客户端、旧格式数据、API 版本迁移)→ 若涉及接口变更或数据格式变更,需补充向后兼容场景。
212
+
205
213
  `01-plan.md` 核心骨架:
206
214
 
207
215
  ```markdown
@@ -221,6 +229,15 @@ NO CODE WITHOUT SPEC FIRST
221
229
  |----|------|-----------------|
222
230
  | P1 | {最小闭环} | {何时放弃} |
223
231
  | P2 | {增强功能} | {何时放弃} |
232
+
233
+ ## 容量与成本预估(如适用)
234
+
235
+ | 维度 | 当前/预估值 | 约束 |
236
+ |------|-----------|------|
237
+ | 数据量级 | {行数/文档数/日增量} | {上限或增长趋势} |
238
+ | QPS/并发 | {峰值请求量} | {系统承载能力} |
239
+ | 外部 API 成本 | {调用频次 × 单价} | {月度预算上限} |
240
+ | 存储增长 | {月增量} | {存储配额} |
224
241
  ```
225
242
 
226
243
  #### 占位符零容忍
@@ -252,9 +269,9 @@ NO CODE WITHOUT SPEC FIRST
252
269
  - [ ] **ASSERT** `来源标签({extracted}/{inferred}/{ambiguous})标注数 >= 1`
253
270
  - [ ] **ASSERT** `修改类任务用 Delta Spec` || `新建类任务用完整 SDD`
254
271
  - [ ] **ASSERT** `"TBD"/"TODO"/"待补充" 匹配数 == 0`
255
- - [ ] **IF** SDD 涉及外部 AI 服务调用 → **ASSERT** `§五 输入/输出规格中标注数据分类和脱敏策略`(RL-1)
256
- - [ ] **IF** SDD 涉及高风险操作(资金/权限/数据删除/对外发布)→ **ASSERT** `§二 业务规则中 CONTAINS 人工确认机制设计`(RL-3)
257
- - [ ] **IF** SDD 引入新的外部 AI 模型/服务 → **ASSERT** `§三 关键设计决策中记录审批状态`(RL-4)
272
+ - [ ] **IF** SDD 涉及外部 AI 服务调用 → **ASSERT** `§五 输入/输出规格中标注数据分类和脱敏策略`(`team-security: RED_LINE_1`)
273
+ - [ ] **IF** SDD 涉及高风险操作(资金/权限/数据删除/对外发布)→ **ASSERT** `§二 业务规则中 CONTAINS 人工确认机制设计`(`team-security: RED_LINE_3`)
274
+ - [ ] **IF** SDD 引入新的外部 AI 模型/服务 → **ASSERT** `§三 关键设计决策中记录审批状态`(`team-security: RED_LINE_4`)
258
275
  - [ ] 如果把这份 SDD 交给一个完全不了解项目的开发者,他能否仅凭 SDD 写出实现?哪部分他会困惑?
259
276
  - [ ] 我是否因为"显而易见"而跳过了某个边界条件的描述?
260
277
 
@@ -266,6 +283,7 @@ NO CODE WITHOUT SPEC FIRST
266
283
  | 分期 | P1 最小闭环 + 后续候选 + Kill Switch 条件、阶段拆分 ≥ 5 |
267
284
  | 上下文 | 术语表 ≥ 3 个(标注模块)、引用 ≥ 3 文件、排除 ≥ 1 文件 |
268
285
  | 风险 | 风险 ≥ 2 条(含缓解措施)、Kill Switch ≥ 2 个、停下来问人 ≥ 3 条 |
286
+ | 容量成本 | 涉及数据存储/外部 API/高并发场景时,容量与成本预估已声明(无相关场景则标注 N/A) |
269
287
  | 架构 | SDD 含 ASCII 数据流图 |
270
288
  | 工具 | prompt-template.md 独立产出(五要素)、pm-truth-ledger 已追加(`IF` EXISTS) |
271
289
 
@@ -281,6 +299,7 @@ NO CODE WITHOUT SPEC FIRST
281
299
  **REF** `_team-rules/constitutional-rules.md` — 9 条 Constitutional Rules
282
300
  **REF** `_team-rules/first-principles.md` — 4 条第一性原理(First Principle #1 ~ #4)
283
301
  **REF** `_team-rules/spec-driven-workflow.md` — Spec-Driven 开发原则与 TDD 工作流
302
+ **REF** `_team-rules/task-lifecycle.md` — 来源标签规范(§1.3)
284
303
 
285
304
  规格制定阶段尤其注意:
286
305
 
@@ -103,13 +103,15 @@ Phase 1 只分析,不写测试代码。
103
103
 
104
104
  | 维度 | 覆盖要求 | 检查方法 |
105
105
  | ------------ | ------------------------------------------ | ------------------------------------- |
106
- | **功能覆盖** | SDD 中每个输入、输出、业务规则至少一个测试 | 逐条对照 03-sdd.md §五/§六 |
106
+ | **功能覆盖** | SDD 中每个输入、输出、业务规则至少一个测试;跨模块/跨服务集成路径至少一个端到端测试(SDD §四 数据流有跨模块调用时) | 逐条对照 03-sdd.md §五/§六 |
107
107
  | **边界覆盖** | SDD §七 每个边界条件至少一个测试 | 逐条对照 03-sdd.md §七 |
108
108
  | **异常覆盖** | SDD §八 每个异常场景至少一个测试 | 逐条对照 03-sdd.md §八 |
109
109
  | **代码覆盖** | 有覆盖率工具 → 运行报告分支覆盖率;无 → 手动列出 if/else/match/try-catch 分支确认覆盖 | 覆盖率工具 或 逐分支确认 |
110
110
 
111
111
  矩阵中每个测试用例必须标注覆盖维度(功能/边界/异常/代码),一个用例可覆盖多个维度。
112
112
 
113
+ > TRAP:只设计了单元测试而遗漏了集成/E2E 测试——当 SDD §四 数据流涉及跨模块调用或外部服务交互时,功能覆盖维度必须包含端到端集成路径的测试用例。测试矩阵中"功能覆盖"全是单函数级别 → 集成路径可能无测试。
114
+
113
115
  **WRITE** `09-test-matrix.md` 输出骨架:
114
116
 
115
117
  | 用例 ID | 场景描述 | 期望结果 | 覆盖维度 | SDD 追踪 | 来源标签 | 状态 |
@@ -124,8 +126,9 @@ Phase 1 只分析,不写测试代码。
124
126
 
125
127
  1. `READ("05-risk.md", "§一验证计划")`(精简模式下不存在属于正常)
126
128
  2. `READ("CLAUDE.md").verify_cmd` / `READ(".cursor/rules/")`
127
- 3. `READ("package.json").scripts.test` / `READ("Makefile")` / `READ("Cargo.toml")`
128
- 4. *NONE* **NEEDS_CONTEXT**:请用户提供测试命令
129
+ 3. `READ("package.json").scripts.test` / `READ("Makefile")` / `READ("Cargo.toml")` / `READ("CI 配置")`
130
+ 4. 手动验证可行(截图 / curl / 日志对比)→ 标注验证方式,继续
131
+ 5. *NONE* → **NEEDS_CONTEXT**:请用户提供测试命令
129
132
 
130
133
  ### Phase 4:补充测试(填补缺口)
131
134
 
@@ -222,9 +225,9 @@ Phase 1 只分析,不写测试代码。
222
225
 
223
226
  **回退时 MUST 提供**:
224
227
 
225
- - 具体问题描述
228
+ - 具体问题描述(不是"有 bug",而是"第 42 行空指针")
226
229
  - 复现步骤(包括命令和输出)
227
- - 期望行为(引用 03-sdd.md 中的规格)
230
+ - 期望行为(引用 SDD 条目编号)
228
231
  - 建议修复方向
229
232
 
230
233
  ## OUTPUT_TEMPLATE
@@ -245,8 +248,9 @@ Phase 1 只分析,不写测试代码。
245
248
 
246
249
  **REF** `_team-rules/constitutional-rules.md` — 9 条 Constitutional Rules
247
250
  **REF** `_team-rules/first-principles.md` — 4 条第一性原理(First Principle #1 ~ #4)
248
-
249
- 测试审计阶段尤其注意:
251
+ **REF** `_team-rules/spec-driven-workflow.md` — SDD 验证链与有向图回退规则
252
+ **REF** `_team-rules/verification-protocol.md` — verify_cmd 解析流程与 5 步验证协议
253
+ **REF** `_team-rules/task-lifecycle.md` — 来源标签规范(§1.3)
250
254
 
251
255
  - **Rule #8 验证先行**:覆盖率声明必须基于当次新鲜执行的完整输出,不可引用缓存结果 `_team-rules/first-principles.md: First Principle #4`
252
256
  - **Rule #3 产出必须验证**:测试矩阵中的每个覆盖声明必须有对应的测试运行证据 `_team-rules/first-principles.md: First Principle #4`
@@ -60,10 +60,9 @@ NO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE FIRST
60
60
 
61
61
  1. `READ("05-risk.md", "§一验证计划")`
62
62
  2. `READ("CLAUDE.md").verify_cmd` / `READ(".cursor/rules/")`
63
- 3. `READ("package.json").scripts.test` / `READ("Makefile")` / `READ("Cargo.toml")`
64
- 4. *NONE*:
65
- - 手动验证可行(`截图` / `curl` / `日志对比`)→ 标注验证方式
66
- - *DEFAULT* → **NEEDS_CONTEXT**:请用户提供验证命令
63
+ 3. `READ("package.json").scripts.test` / `READ("Makefile")` / `READ("Cargo.toml")` / `READ("CI 配置")`
64
+ 4. 手动验证可行(截图 / curl / 日志对比)→ 标注验证方式,继续
65
+ 5. *NONE* **NEEDS_CONTEXT**:请用户提供验证命令
67
66
 
68
67
  ### Step 2:执行验证
69
68
 
@@ -148,7 +147,7 @@ NO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE FIRST
148
147
  | 测试通过 | `failures == 0` + `exit_code == 0` | 上一轮运行、"应该能过" |
149
148
  | Lint 干净 | `errors == 0` + `exit_code == 0` | 只检查部分文件、推测 |
150
149
  | 构建成功 | `exit_code == 0` + 无 error | Lint 通过了、日志看起来对 |
151
- | Bug 已修复 | 原始症状复现测试通过 | 代码改了、假设修好了 |
150
+ | Bug 已修复 | 原始症状复现测试通过 + 回归通过 | 代码改了、假设修好了 |
152
151
  | 回归测试通过 | 红-绿循环验证通过 | 测试通过一次 |
153
152
  | Agent 完成 | `git diff` 显示变更 | Agent 报告"成功了" |
154
153
  | 需求满足 | 逐条对照 checklist | 测试通过了 |