jsharness 1.0.0

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.
Files changed (68) hide show
  1. package/.harness/README.md +199 -0
  2. package/.harness/agents/code-reviewer/contract.yaml +64 -0
  3. package/.harness/agents/developer/contract.yaml +72 -0
  4. package/.harness/agents/gate-controller/contract.yaml +64 -0
  5. package/.harness/agents/project-manager/contract.yaml +77 -0
  6. package/.harness/agents/prompt-templates.md +352 -0
  7. package/.harness/agents/requirements-analyst/contract.yaml +64 -0
  8. package/.harness/agents/solution-designer/contract.yaml +75 -0
  9. package/.harness/agents/tester/contract.yaml +92 -0
  10. package/.harness/config/models.yaml +67 -0
  11. package/.harness/dev-map/backend/api-definition.md +131 -0
  12. package/.harness/dev-map/backend/auth-security.md +131 -0
  13. package/.harness/dev-map/backend/conventions-java.md +471 -0
  14. package/.harness/dev-map/backend/conventions.md +192 -0
  15. package/.harness/dev-map/backend/database.md +106 -0
  16. package/.harness/dev-map/backend/structure.md +140 -0
  17. package/.harness/dev-map/decisions.md +275 -0
  18. package/.harness/dev-map/frontend/api-integration.md +139 -0
  19. package/.harness/dev-map/frontend/components.md +178 -0
  20. package/.harness/dev-map/frontend/conventions.md +416 -0
  21. package/.harness/dev-map/frontend/state-management.md +170 -0
  22. package/.harness/dev-map/frontend/structure.md +103 -0
  23. package/.harness/dev-map/overview.md +267 -0
  24. package/.harness/docs/integration-test-plan.md +248 -0
  25. package/.harness/docs/team-guidelines/README.md +161 -0
  26. package/.harness/docs/team-guidelines/arch-team.md +811 -0
  27. package/.harness/docs/team-guidelines/collaboration.md +556 -0
  28. package/.harness/docs/team-guidelines/pm-team.md +337 -0
  29. package/.harness/docs/team-guidelines/qa-team.md +562 -0
  30. package/.harness/docs/team-guidelines/rd-team.md +714 -0
  31. package/.harness/docs/training-materials.md +280 -0
  32. package/.harness/gate/baseline.js +220 -0
  33. package/.harness/gate/checks/build-gates-frontend.js +152 -0
  34. package/.harness/gate/checks/build-gates-java.js +155 -0
  35. package/.harness/gate/checks/build-gates.js +119 -0
  36. package/.harness/gate/checks/engineering-consistency.js +138 -0
  37. package/.harness/gate/checks/security-quality.js +129 -0
  38. package/.harness/gate/checks/static-compliance.js +313 -0
  39. package/.harness/gate/checks/test-compliance.js +114 -0
  40. package/.harness/gate/index.js +315 -0
  41. package/.harness/mcp/config.yaml +435 -0
  42. package/.harness/rules/global/coding-standard.md +232 -0
  43. package/.harness/rules/global/commit-convention.md +165 -0
  44. package/.harness/rules/global/process-discipline.md +192 -0
  45. package/.harness/rules/global/security-baseline.md +306 -0
  46. package/.harness/rules/project/frontend-vue3.md +293 -0
  47. package/.harness/rules/project/java-backend.md +460 -0
  48. package/.harness/rules/project/web-specific.md +231 -0
  49. package/.harness/skills/build.md +192 -0
  50. package/.harness/skills/code-review.md +251 -0
  51. package/.harness/skills/docker-build.md +227 -0
  52. package/.harness/skills/docs-update.md +164 -0
  53. package/.harness/skills/java-build.md +261 -0
  54. package/.harness/skills/lint-check.md +482 -0
  55. package/.harness/skills/task-board-maintenance.md +105 -0
  56. package/.harness/skills/test-api.md +461 -0
  57. package/.harness/skills/test-e2e.md +431 -0
  58. package/.harness/skills/test-unit.md +649 -0
  59. package/.harness/skills/vue-frontend-build.md +344 -0
  60. package/.harness/specs/quality-feedback/implementation-guide.md +350 -0
  61. package/.harness/task-board.md +121 -0
  62. package/.harness/workflow/definition.yaml +504 -0
  63. package/.harness/workflow/validate.js +320 -0
  64. package/.harness/workflow/variants.yaml +253 -0
  65. package/README.md +237 -0
  66. package/bin/jsharness.js +53 -0
  67. package/lib/index.mjs +778 -0
  68. package/package.json +1 -0
@@ -0,0 +1,121 @@
1
+ # TaskBoard — 项目任务态势看板
2
+
3
+ > **维护者**: PM Agent
4
+ > **更新频率**: 每次状态变更时立即更新
5
+ > **最后更新**: 2026-05-20 22:13 (初始化)
6
+
7
+ ---
8
+
9
+ ## 📌 进行中任务
10
+
11
+ | 任务ID | 标题 | 当前阶段 | 负责Agent | 文档目录 | 上次更新 | 预计完成 |
12
+ |--------|------|----------|-----------|----------|----------|----------|
13
+ | *(暂无)* | - | - | - | - | - | - |
14
+
15
+ ## 📋 待开始任务
16
+
17
+ | 任务ID | 标题 | 优先级 | 来源 | 关联Issue/PR | 流程变体 |
18
+ |--------|------|--------|------|-------------|----------|
19
+ | *(暂无)* | - | - | - | - | - |
20
+
21
+ ### 待分配需求池
22
+
23
+ | 来源渠道 | 需求描述 | 接收时间 | 状态 |
24
+ |----------|----------|----------|------|
25
+ | *(待填充)* | - | - | 待路由 |
26
+
27
+ ## ✅ 已完成任务(本月)
28
+
29
+ | 任务ID | 标题 | 交付结论 | 归档日期 | 实际周期 |
30
+ |--------|------|----------|----------|----------|
31
+ | *(暂无)* | - | - | - | - |
32
+
33
+ ---
34
+
35
+ ## 📊 度量指标区域
36
+
37
+ ### 本周概览(自动计算)
38
+
39
+ | 指标 | 值 | 目标 | 状态 |
40
+ |------|-----|------|------|
41
+ | 新增需求 | 0 | - | - |
42
+ | 完成交付 | 0 | ≥3 | - |
43
+ | 平均交付周期(天) | - | ≤7 | - |
44
+ | 打回率 | 0% | <15% | - |
45
+ | 各阶段阻塞数 | 0 | =0 | - |
46
+ | 流程违规次数 | 0 | =0 | - |
47
+
48
+ ### 各阶段当前负载
49
+
50
+ ```
51
+ 需求分析: [░░░░░] 0 个
52
+ 方案设计: [░░░░░] 0 个
53
+ 闸门评估: [░░░░░] 0 个
54
+ 开发实现: [░░░░░] 0 个
55
+ 代码审查: [░░░░░] 0 个
56
+ 测试验证: [░░░░░] 0 个
57
+ 交付归档: [░░░░░] 0 个
58
+ ```
59
+
60
+ ---
61
+
62
+ ## 🔄 TaskBoard 维护 Skill
63
+
64
+ ### 新任务注册流程
65
+
66
+ ```yaml
67
+ 触发条件: PM 收到新需求
68
+ 步骤:
69
+ 1. 分配唯一 Task ID(格式:TASK-YYYYMMDD-NNN)
70
+ 2. 判断流程变体(标准/Bug修复/热修复/微型)
71
+ 3. 在「待开始任务」表中注册
72
+ 4. 更新度量指标中的"新增需求"
73
+ 5. 如果有相关 Issue,关联到对应列
74
+ ```
75
+
76
+ ### 状态变更规则
77
+
78
+ ```
79
+ ┌───────────┐ 需求分析完成 ┌──────────────┐
80
+ │ 待开始 │ ──────────────→ │ 进行中 │
81
+ │ │ │ │
82
+ │ │ ←────────────── │ │
83
+ │ │ 打回重做 │ │
84
+ └───────────┘ └──────┬───────┘
85
+ │ 测试通过
86
+ ┌──────▼───────┐
87
+ │ 已完成 │
88
+ │ │
89
+ └──────────────┘
90
+
91
+ 每次状态变更必须:
92
+ 1. 更新表格中该行的位置
93
+ 2. 更新"上次更新"时间戳
94
+ 3. 记录变更原因(简短)
95
+ 4. 同步更新度量指标
96
+ ```
97
+
98
+ ### 交付归档流程
99
+
100
+ ```yaml
101
+ 触发条件: 测试验证 PASS
102
+ 步骤:
103
+ 1. 将任务从「进行中」移至「已完成」
104
+ 2. 记录交付结论(PASS/CONDITIONAL_PASS + 说明)
105
+ 3. 记录实际交付周期(从进入开发到完成的天数)
106
+ 4. 归档所有阶段文档链接
107
+ 5. 更新度量指标:
108
+ - 完成交付 +1
109
+ - 平均交付周期 重算
110
+ - 如有打回 → 打回率 重算
111
+ 6. 通知相关利益方
112
+ ```
113
+
114
+ ---
115
+
116
+ ## ⚠️ 注意事项
117
+
118
+ 1. **TaskBoard 是单一数据源** — 所有任务的状态以此为准,不与其他工具冲突
119
+ 2. **PM 对准确性负责** — 过期或错误的信息会影响整个团队效率
120
+ 3. **定期 Review** — 每周一 PM Agent 清理过期条目和异常数据
121
+ 4. **与外部系统同步** — 可选地与 Jira/GitLab Issues 保持同步
@@ -0,0 +1,504 @@
1
+ # Harness 主流程状态机定义
2
+
3
+ ## 流程概览
4
+
5
+ ```mermaid
6
+ stateDiagram-v2
7
+ [*] --> 需求分析: PM路由新需求
8
+
9
+ 需求分析 --> 方案设计: 需求文档✅
10
+ 需求分析 --> 需求分析: 打回重做
11
+ 需求分析 --> [*]: 取消
12
+
13
+ 方案设计 --> 闸门评估: 设计文档✅
14
+ 方案设计 --> 方案设计: 打回重做
15
+ 方案设计 --> 需求分析: 需要澄清需求(变更请求)
16
+
17
+ 闸门评估 --> 开发实现: PASS放行
18
+ 闸门评估 --> 方案设计: BLOCK/需要修改方案
19
+ 闸门评估 --> 需求分析: HOLD/需求问题
20
+ 闸门评估 --> [*]: BLOCK且无法解决/取消
21
+
22
+ 开发实现 --> 代码审查: PR创建+自检通过✅
23
+ 开发实现 --> 开发实现: 自检未通过
24
+ 开发实现 --> 方案设计: 发现设计与实际不符
25
+
26
+ 代码审查 --> 测试验证: PASS/条件PASS通过✅
27
+ 代码审查 --> 开发实现: FAIL打回修改
28
+ 代码审查 --> 闸门评估: 安全红线问题升级
29
+
30
+ 测试验证 --> 交付归档: 全部测试PASS✅
31
+ 测试验证 --> 开发实现: 缺陷修复(P1/P2)
32
+ 测试验证 --> 方案设计: 设计缺陷导致无法验收
33
+ 测试验证 --> 闸门评估: 安全漏洞阻断
34
+
35
+ 交付归档 --> [*]: 完成
36
+ ```
37
+
38
+ ## 七个阶段完整定义
39
+
40
+ ```yaml
41
+ workflow:
42
+ name: "产研测标准流程"
43
+ version: "1.0.0"
44
+ description: "面向 Web 全栈应用的标准七阶段开发工作流"
45
+
46
+ stages:
47
+ - id: requirements-analysis
48
+ name: "需求分析"
49
+ order: 1
50
+ agent: requirements-analyst
51
+ model_tier: standard
52
+ max_turns: 10
53
+
54
+ inputs:
55
+ - name: "原始需求"
56
+ source: "pm_routing"
57
+ format: "natural_language / issue"
58
+ required: true
59
+ - name: "TaskBoard 状态"
60
+ source: "task_board"
61
+ format: "markdown"
62
+ required: true
63
+ - name: "dev-map 参考文档"
64
+ source: "dev_map"
65
+ format: "markdown"
66
+ required: true
67
+
68
+ outputs:
69
+ - name: "需求文档"
70
+ format: "markdown"
71
+ template: ".harness/templates/requirements.md"
72
+ required: true
73
+ - name: "验收标准列表"
74
+ format: "markdown"
75
+ required: true
76
+ - name: "用户故事集"
77
+ format: "markdown"
78
+ required: false
79
+
80
+ transitions:
81
+ - to: solution-design
82
+ trigger: "需求文档审核通过"
83
+ guard: "所有必需产出物齐全 + 验收标准可测"
84
+ - to: self
85
+ trigger: "打回重做"
86
+ condition: "需求不清晰 / 遗漏关键信息"
87
+ - to: cancelled
88
+ trigger: "取消需求"
89
+
90
+ rules_referenced:
91
+ - "rules/global/process-discipline.md" # 下游不得改上游
92
+
93
+ - id: solution-design
94
+ name: "方案设计"
95
+ order: 2
96
+ agent: solution-designer
97
+ model_tier: standard
98
+ max_turns: 15
99
+
100
+ inputs:
101
+ - name: "需求文档"
102
+ source: "requirements_analysis.outputs.需求文档"
103
+ required: true
104
+ - name: "验收标准"
105
+ source: "requirements_analysis.outputs.验收标准列表"
106
+ required: true
107
+ - name: "dev-map 架构参考"
108
+ source: "dev_map"
109
+ required: true
110
+ - name: "ADR 历史决策"
111
+ source: "dev-map/decisions.md"
112
+ required: false
113
+
114
+ outputs:
115
+ - name: "技术设计文档"
116
+ format: "markdown"
117
+ required: true
118
+ - name: "API 定义"
119
+ format: "yaml (OpenAPI)"
120
+ required: true
121
+ - name: "数据模型"
122
+ format: "markdown"
123
+ required: true
124
+ - name: "技术决策记录(如有新决策)"
125
+ format: "markdown (ADR)"
126
+ required: false
127
+
128
+ transitions:
129
+ - to: gate-evaluation
130
+ trigger: "设计方案完成"
131
+ guard: "所有必需产出物齐全"
132
+ - to: self
133
+ trigger: "打回重做"
134
+ condition: "方案不完整 / 不符合需求"
135
+ - to: requirements-analysis
136
+ trigger: "变更请求 — 需求澄清"
137
+ type: "upstream_request"
138
+
139
+ rules_referenced:
140
+ - "rules/global/coding-standard.md"
141
+
142
+ - id: gate-evaluation
143
+ name: "闸门评估"
144
+ order: 3
145
+ agent: gate-controller
146
+ model_tier: strong
147
+ max_turns: 8
148
+
149
+ inputs:
150
+ - name: "需求文档"
151
+ from: "requirements_analysis"
152
+ required: true
153
+ - name: "技术设计文档"
154
+ from: "solution_design"
155
+ required: true
156
+ - name: "Gate 快速检查结果"
157
+ source: "gate_scripts"
158
+ format: "json"
159
+ required: false
160
+ - name: "资源可用情况"
161
+ source: "human_input"
162
+ format: "text"
163
+ required: false
164
+
165
+ outputs:
166
+ - name: "可行性报告"
167
+ format: "markdown"
168
+ required: true
169
+ - name: "风险清单"
170
+ format: "markdown"
171
+ required: true
172
+ - name: "裁决决定"
173
+ format: "json { decision: PASS|BLOCK|HOLD, reason }"
174
+ required: true
175
+
176
+ decisions:
177
+ - outcome: PASS
178
+ to: development
179
+ condition: "无阻塞风险 + 所有中高风险有缓解措施"
180
+ - outcome: BLOCK-to-design
181
+ to: solution-design
182
+ condition: "方案层面的问题可修正"
183
+ - outcome: BLOCK-cancel
184
+ to: cancelled
185
+ condition: "根本不可行或资源永远不足"
186
+ - outcome: HOLD
187
+ to: self
188
+ condition: "需等待外部条件(POC/审批/资源)"
189
+ - outcome: BLOCK-to-requirements
190
+ to: requirements-analysis
191
+ condition: "需求层面的根本性问题"
192
+
193
+ rules_referenced:
194
+ - "rules/global/security-baseline.md"
195
+ - "rules/global/process-discipline.md"
196
+
197
+ - id: development
198
+ name: "开发实现"
199
+ order: 4
200
+ agent: developer
201
+ model_tier: standard
202
+ max_turns: 20
203
+
204
+ inputs:
205
+ - name: "技术设计文档"
206
+ from: "solution_design"
207
+ required: true
208
+ - name: "API 定义"
209
+ from: "solution_design"
210
+ required: true
211
+ - name: "Rule 规则集"
212
+ source: "harness_rules"
213
+ required: true
214
+ - name: "Skill 动作集"
215
+ source: "harness_skills"
216
+ required: true
217
+ - name: "dev-map 结构参考"
218
+ source: "dev_map"
219
+ required: true
220
+
221
+ outputs:
222
+ - name: "实现代码"
223
+ format: "source code (ts/tsx/js/jsx/java)"
224
+ location: "src/"
225
+ required: true
226
+ - name: "单元测试"
227
+ format: "source code (.test.*)"
228
+ location: "src/"
229
+ required: true
230
+ - name: "Git Commit 历史"
231
+ source: "git_log"
232
+ required: true
233
+ - name: "dev-map 更新"
234
+ format: "markdown"
235
+ location: "dev-map/"
236
+ condition: "有结构性变化时"
237
+ - name: "自检报告"
238
+ format: "markdown"
239
+ required: true
240
+ - name: "PR/MR"
241
+ source: "git_platform"
242
+ required: true
243
+
244
+ internal_steps:
245
+ - step: 1
246
+ action: "阅读设计文档 + dev-map"
247
+ skill: null
248
+ - step: 2
249
+ action: "实现核心逻辑"
250
+ skill: null
251
+ - step: 3
252
+ action: "编写/更新单元测试"
253
+ skill: "test-unit"
254
+ - step: 4
255
+ action: "运行构建 Skill(按技术栈选择)"
256
+ # 条件引用:检测 pom.xml → java-build;检测 package.json → vue-frontend-build
257
+ # 详见 skills/build.md(已废弃,保留为路由参考)
258
+ skill: "java-build | vue-frontend-build"
259
+ gate: "编译失败 → 返回 Step 2"
260
+ - step: 5
261
+ action: "运行 Test Unit Skill"
262
+ skill: "test-unit"
263
+ gate: "测试失败 → 返回 Step 2/3"
264
+ - step: 6
265
+ action: "运行 Lint Check Skill"
266
+ skill: "lint-check"
267
+ gate: "Lint 失败 → 自动修复后重新检查"
268
+ - step: 7
269
+ action: "更新 dev-map"
270
+ skill: "docs-update"
271
+ - step: 8
272
+ action: "规范 Commit + 创建 PR/MR"
273
+ gate: "Commit 格式不符合 → 修正后提交"
274
+
275
+ transitions:
276
+ - to: code-review
277
+ trigger: "PR 创建 + 三步自检全部通过"
278
+ - to: self
279
+ trigger: "自检任一步失败"
280
+ auto_retry: 3
281
+ - to: solution-design
282
+ trigger: "发现设计与实际情况严重不符"
283
+ type: "escalation"
284
+
285
+ rules_referenced:
286
+ - "rules/global/coding-standard.md"
287
+ - "rules/global/security-baseline.md"
288
+ - "rules/global/commit-convention.md"
289
+ - "rules/project/java-backend.md" # Java 后端项目级规范
290
+ - "rules/project/frontend-vue3.md" # Vue3 前端项目级规范
291
+
292
+ - id: code-review
293
+ name: "代码审查"
294
+ order: 5
295
+ agent: code-reviewer
296
+ model_tier: strong
297
+ max_turns: 12
298
+
299
+ inputs:
300
+ - name: "PR/MR Diff"
301
+ source: "git_diff"
302
+ required: true
303
+ - name: "技术设计文档"
304
+ from: "solution_design"
305
+ required: true
306
+ - name: "自检报告"
307
+ from: "development"
308
+ required: true
309
+ - name: "Gate 快速扫描"
310
+ source: "gate_scripts"
311
+ required: false
312
+ - name: "Code Review Checklist"
313
+ source: "skills/code-review.md"
314
+ required: true
315
+
316
+ outputs:
317
+ - name: "审查报告"
318
+ format: "markdown"
319
+ required: true
320
+ - name: "裁决决定"
321
+ format: "enum { PASS | CONDITIONAL_PASS | FAIL }"
322
+ required: true
323
+
324
+ decisions:
325
+ - outcome: PASS
326
+ to: testing
327
+ condition: "总分 ≥ 90% 且无安全问题和必修问题"
328
+ - outcome: CONDITIONAL_PASS
329
+ to: testing
330
+ condition: "总分 ≥ 80% 且必修问题已在 PR 中标记并确认会修"
331
+ - outcome: FAIL
332
+ to: development
333
+ condition: "安全红线 / A<60% / 无测试 / 覆盖率回归>5%"
334
+ require_fix: true
335
+ - outcome: ESCALATE
336
+ to: gate-evaluation
337
+ condition: "发现架构级安全问题"
338
+ type: "security_escalation"
339
+
340
+ review_dimensions:
341
+ - id: quality
342
+ name: "代码质量"
343
+ weight: 30
344
+ checks: ["A1-A6"]
345
+ - id: compliance
346
+ name: "规范遵循"
347
+ weight: 15
348
+ checks: ["B1-B5"]
349
+ - id: security
350
+ name: "安全与风险"
351
+ weight: 25
352
+ checks: ["C1-C5"]
353
+ - id: performance
354
+ name: "性能考量"
355
+ weight: 10
356
+ checks: ["D1-D4"]
357
+ - id: testing
358
+ name: "测试覆盖"
359
+ weight: 20
360
+ checks: ["E1-E3"]
361
+
362
+ - id: testing
363
+ name: "测试验证"
364
+ order: 6
365
+ agent: tester
366
+ model_tier: strong
367
+ max_turns: 15
368
+
369
+ inputs:
370
+ - name: "需求文档"
371
+ from: "requirements_analysis"
372
+ required: true
373
+ - name: "技术设计文档"
374
+ from: "solution_design"
375
+ required: true
376
+ - name: "实现代码"
377
+ from: "development"
378
+ required: true
379
+ - name: "验收标准"
380
+ from: "requirements_analysis"
381
+ required: true
382
+ - name: "审查报告"
383
+ from: "code_review"
384
+ required: true
385
+ - name: "Skill 测试动作集"
386
+ source: "skills/test-*.md"
387
+ required: true
388
+
389
+ outputs:
390
+ - name: "测试计划"
391
+ format: "markdown"
392
+ required: true
393
+ - name: "测试报告"
394
+ format: "markdown"
395
+ required: true
396
+ - name: "缺陷列表"
397
+ format: "markdown"
398
+ required: true
399
+ - name: "回归风险评估"
400
+ format: "markdown"
401
+ required: true
402
+ - name: "Gate 验证结果"
403
+ format: "json"
404
+ required: true
405
+
406
+ test_types:
407
+ - name: "unit_tests"
408
+ skill: "test-unit"
409
+ executor: "ci_pipeline"
410
+ required: true
411
+ # 前端: Vitest/Jest + coverage ≥80% | 后端: JUnit5/Mockito + JaCoCo ≥80%
412
+ threshold: "coverage >= baseline (前端 Vitest / 后端 JaCoCo)"
413
+ - name: "api_integration"
414
+ skill: "test-api"
415
+ executor: "tester_agent"
416
+ required: true
417
+ # 前端: Pactum | 后端: REST Assured (MockMvc) / Newman
418
+ threshold: "no breaking changes (前端 Pactum / 后端 REST Assured)"
419
+ - name: "e2e_critical_path"
420
+ skill: "test-e2e"
421
+ executor: "tester_agent"
422
+ required: true
423
+ threshold: "all critical paths pass"
424
+ - name: "security_scan"
425
+ skill: "lint-check"
426
+ executor: "gate_scripts"
427
+ required: true
428
+ threshold: "no HIGH/CRITICAL vulnerabilities"
429
+ - name: "performance_test"
430
+ executor: "tester_agent"
431
+ required: false
432
+ condition: "涉及性能 NFR 时"
433
+ - name: "regression_test"
434
+ executor: "tester_agent"
435
+ required: true
436
+ threshold: "no P0/P1 regressions"
437
+
438
+ decisions:
439
+ - outcome: PASS
440
+ to: delivery
441
+ condition: "P0=P1=0 + 核心 E2E 通过 + 无回归 + 覆盖率达标"
442
+ - output: FIX_AND_RETEST
443
+ to: development
444
+ condition: "发现 P1/P2 缺陷"
445
+ with_defects: true
446
+ - output: DESIGN_ISSUE
447
+ to: solution-design
448
+ condition: "设计缺陷导致功能无法验收"
449
+ type: "upstream_request"
450
+ - output: SECURITY_BLOCK
451
+ to: gate-evaluation
452
+ condition: "发现安全漏洞"
453
+ type: "security_escalation"
454
+
455
+ - id: delivery
456
+ name: "交付归档"
457
+ order: 7
458
+ agent: project-manager
459
+ model_tier: lite
460
+ max_turns: 5
461
+
462
+ inputs:
463
+ - name: "所有阶段产物"
464
+ from: "all_stages"
465
+ - name: "测试报告"
466
+ from: "testing"
467
+ required: true
468
+ - name: "Gate 完整验证结果"
469
+ from: "gate_scripts"
470
+ required: true
471
+
472
+ outputs:
473
+ - name: "交付摘要"
474
+ format: "markdown"
475
+ required: true
476
+ - name: "TaskBoard 归档更新"
477
+ source: "task-board"
478
+ required: true
479
+ - name: "度量数据记录"
480
+ source: "metrics_store"
481
+ required: true
482
+
483
+ actions:
484
+ - "汇总全链路交付物"
485
+ - "更新 TaskBoard 为已完成"
486
+ - "记录度量指标(周期时间、各阶段耗时、打回次数等)"
487
+ - "通知相关利益方"
488
+ - "归档所有阶段文档到交付目录"
489
+
490
+ transitions:
491
+ - to: completed
492
+ trigger: "所有归档完成"
493
+
494
+ # === 回退规则全局声明 ===
495
+ rollback_policy:
496
+ max_rollbacks_per_stage: 3 # 每阶段最大回退次数
497
+ total_max_rollbacks: 10 # 整个流程最大总回退次数
498
+ escalation_threshold: 2 # 同一阶段连续回退 N 次触发人工介入
499
+
500
+ # === 全局规则引用 ===
501
+ global_rules:
502
+ - "rules/global/process-discipline.md"
503
+ - "rules/global/coding-standard.md"
504
+ - "rules/global/security-baseline.md"