@guanlin4924/devflow-pi 0.1.20 → 0.1.22
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/README.md +7 -4
- package/package.json +1 -2
- package/plugins/devflow-core/extensions/devflow-core.ts +11 -4
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/init_workflow.rb +1 -1
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/validate_state.rb +9 -10
- package/plugins/devflow-core/skills/workflow-orchestrator/templates/acceptance-remediation.yaml +87 -0
- package/plugins/devflow-core/skills/workflow-orchestrator/templates/feature-development.yaml +29 -98
- package/plugins/devflow-core/skills/workflow-pipeline/SKILL.md +1 -1
- package/plugins/devflow-core/skills/workflow-pipeline/references/pipeline-flow.md +9 -22
- package/plugins/devflow-core/skills/workflow-pipeline/references/slice-safety-guide.md +1 -1
- package/plugins/devflow-core/skills/workflow-project-context/SKILL.md +17 -0
- package/plugins/devflow-implementation/skills/workflow-change-plan/references/output-template.md +2 -2
- package/plugins/devflow-implementation/skills/workflow-execute-phase/references/execute-phase.md +52 -1221
- package/plugins/devflow-intel/skills/workflow-context-sync/SKILL.md +1 -1
- package/plugins/devflow-intel/skills/workflow-update-navigation/SKILL.md +1 -1
- package/plugins/devflow-quality/agents/verification-runner.md +1 -1
- package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/SKILL.md +1 -1
- package/plugins/devflow-quality/skills/workflow-release-closeout/SKILL.md +48 -0
- package/plugins/devflow-quality/skills/workflow-run-acceptance-tests/SKILL.md +2 -2
- package/src/constants.ts +1 -1
- package/src/doctor.ts +6 -2
- package/src/project-context.ts +11 -1
- package/src/runtime.ts +7 -0
- package/src/usage-stats.ts +3 -3
- package/templates/commands/start.md +2 -2
- package/templates/omp/config.yml +1 -3
- package/docs/OMP-NATIVE-ARCHITECTURE.md +0 -104
- package/plugins/devflow-core/skills/workflow-orchestrator/templates/uat-remediation.yaml +0 -176
- package/plugins/devflow-quality/skills/workflow-audit-milestone/SKILL.md +0 -31
- package/plugins/devflow-quality/skills/workflow-audit-milestone/references/audit-milestone.md +0 -328
- package/plugins/devflow-quality/skills/workflow-complete-milestone/SKILL.md +0 -132
- package/plugins/devflow-quality/skills/workflow-complete-milestone/assets/milestone-archive.md +0 -123
- package/plugins/devflow-quality/skills/workflow-complete-milestone/references/complete-milestone.md +0 -775
- package/plugins/devflow-quality/skills/workflow-complete-milestone/references/milestone-archive.md +0 -123
- package/plugins/devflow-quality/skills/workflow-verify-work/SKILL.md +0 -112
- package/plugins/devflow-quality/skills/workflow-verify-work/assets/UAT.md +0 -265
- package/plugins/devflow-quality/skills/workflow-verify-work/references/verify-work.md +0 -759
package/README.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# Devflow for Oh My Pi
|
|
2
2
|
|
|
3
|
-
面向项目代码开发的 OMP
|
|
3
|
+
面向项目代码开发的 OMP 原生 Devflow 能力仓库。仓库同时提供 Agent Skills、运行时 extension、task agents、项目配置模板和 marketplace 插件目录。Devflow 的流程真相由需求图谱、冻结测试集、机器证据和控制面状态组成,Markdown 只负责展示。
|
|
4
4
|
|
|
5
|
-
完整的第一性原理拆分、控制面不变量和对抗式审查见 [`docs/OMP-NATIVE-ARCHITECTURE.md`](docs/OMP-NATIVE-ARCHITECTURE.md)
|
|
5
|
+
完整的第一性原理拆分、控制面不变量和对抗式审查见 [`docs/OMP-NATIVE-ARCHITECTURE.md`](docs/OMP-NATIVE-ARCHITECTURE.md)。本项目不依赖外部 UAT 或里程碑工作流;验收和版本收口均由 Devflow 自有节点完成。
|
|
6
6
|
|
|
7
7
|
## Devflow 专项 Pi(当前功能分支)
|
|
8
8
|
|
|
@@ -128,13 +128,16 @@ bash .skills/install.sh --apply --force-config
|
|
|
128
128
|
↓
|
|
129
129
|
CP-3:校验候选绑定 → 冻结 TC → 写入 Core attestation
|
|
130
130
|
↓
|
|
131
|
-
RED / GREEN / REGRESSION 证据 → 按冻结 TC 执行 API / 页面 / 专项测试 →
|
|
131
|
+
RED / GREEN / REGRESSION 证据 → 按冻结 TC 执行 API / 页面 / 专项测试 → CP-4 → 版本收口
|
|
132
132
|
```
|
|
133
133
|
|
|
134
134
|
- `TC-*` 的步骤和 oracle 在代码出现前冻结;CP-3 在同一次确认中先校验候选绑定,再冻结 TC 并固定绑定哈希。需求或契约变化会使它 stale,不能继续以旧测试集宣称通过。
|
|
135
135
|
- `tdd_required` 任务必须先由 Core 记录准备快照,再记录 RED(命中预期失败)、同一目标的 GREEN 和回归;缺失或环境失败不算完成。
|
|
136
136
|
- API、跨数据域、边界、迁移、工作负载与架构风险会派生相应的 `api`、`permission`、`boundary`、`migration`、`performance`、`resilience` TC 义务。
|
|
137
137
|
- 代码完成后,`workflow-run-acceptance-tests` 只能运行绑定到冻结 TC、且已在初始化 `.planning/toolchain.md` 发现的测试运行器命令。任何失败、未执行、人工待执行或环境阻塞用例都会阻止 CP-4。
|
|
138
|
+
- 验收不是代码完成后的临时 UAT。它是需求基线在编码前派生并冻结的完整测试集,覆盖主流程、异常、边界、权限、迁移、兼容、韧性和工作负载义务;代码只能补充执行适配信息,不能改变测试意图。
|
|
139
|
+
- 验收失败不会创建另一套人工台账,而是进入 `acceptance-remediation`:诊断 → 修复 → code-index 刷新 → 原冻结 `TC-*` 重跑。
|
|
140
|
+
- CP-4 通过后只进入一个 `workflow-release-closeout` 步骤,统一写入 `.planning/milestones/current-CLOSEOUT.md` 并更新项目状态、导航和版本记录。
|
|
138
141
|
|
|
139
142
|
正常使用不需要记忆底层命令:在 Devflow 工作流中按步骤继续即可。需要排查时,可用 `devflow_acceptance_tests` 查看冻结套件,或由工作流调用 `devflow_tdd_evidence` 与 `devflow_run_acceptance_tests` 生成 Core-owned 证据;不要手写“已测试”来替代结果文件。
|
|
140
143
|
|
|
@@ -163,7 +166,7 @@ omp plugin install --scope project devflow-quality@devflow
|
|
|
163
166
|
| `devflow-requirements` | 需求决策 | 分诊、探索、领域建模、可行性、需求基线、对抗审查 |
|
|
164
167
|
| `devflow-design` | 契约设计 | API/UI/前后端方案、功能拆解、集成一致性 |
|
|
165
168
|
| `devflow-implementation` | 代码变更 | 变更计划、隔离执行、Bug 修复 |
|
|
166
|
-
| `devflow-quality` |
|
|
169
|
+
| `devflow-quality` | 质量与收口 | 代码审查、主流程适配、冻结 TC 执行、失败修复编排与版本收口 |
|
|
167
170
|
|
|
168
171
|
每个 skill 恰好归属一个插件,插件目录中的实体文件是唯一真本;仓库根目录的同名入口只是兼容现有脚本和人工浏览的相对链接。marketplace 因而可以独立缓存单个插件,而不会留下指向缓存外部的断链。
|
|
169
172
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@guanlin4924/devflow-pi",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.22",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Devflow 专项研发 Pi,基于固定版本 OMP Runtime 组装研发状态机、代码智能、设计、实现与质量门禁。",
|
|
6
6
|
"license": "UNLICENSED",
|
|
@@ -32,7 +32,6 @@
|
|
|
32
32
|
"!plugins/**/*.pyc",
|
|
33
33
|
"!plugins/**/tests",
|
|
34
34
|
"templates",
|
|
35
|
-
"docs",
|
|
36
35
|
"README.md"
|
|
37
36
|
],
|
|
38
37
|
"publishConfig": {
|
|
@@ -362,12 +362,10 @@ const REQUIRED_SKILLS = [
|
|
|
362
362
|
"workflow-api-contract",
|
|
363
363
|
"workflow-api-supplement",
|
|
364
364
|
"workflow-acceptance-test-design",
|
|
365
|
-
"workflow-audit-milestone",
|
|
366
365
|
"workflow-backend-tech-spec",
|
|
367
366
|
"workflow-bug-fix",
|
|
368
367
|
"workflow-change-plan",
|
|
369
368
|
"workflow-code-index",
|
|
370
|
-
"workflow-complete-milestone",
|
|
371
369
|
"workflow-context-sync",
|
|
372
370
|
"workflow-demand-clarify",
|
|
373
371
|
"workflow-design-rule-pack",
|
|
@@ -381,11 +379,11 @@ const REQUIRED_SKILLS = [
|
|
|
381
379
|
"workflow-pipeline",
|
|
382
380
|
"workflow-project-context",
|
|
383
381
|
"workflow-run-acceptance-tests",
|
|
382
|
+
"workflow-release-closeout",
|
|
384
383
|
"workflow-requirement-baseline",
|
|
385
384
|
"workflow-requirement-triage",
|
|
386
385
|
"workflow-ui-spec",
|
|
387
386
|
"workflow-update-navigation",
|
|
388
|
-
"workflow-verify-work",
|
|
389
387
|
"workflow-wayfinder",
|
|
390
388
|
];
|
|
391
389
|
|
|
@@ -512,12 +510,21 @@ function assertRuntimeProjectBoundary(cwd: string): void {
|
|
|
512
510
|
if (!canonical.startsWith(`${resolvedCwd}${path.sep}`)) {
|
|
513
511
|
throw new Error(`Devflow control path escapes project boundary: ${canonical}`);
|
|
514
512
|
}
|
|
513
|
+
if (lstatSync(target).isDirectory()) assertNoSymlinkDescendantsSync(target);
|
|
515
514
|
} catch (error) {
|
|
516
515
|
if ((error as NodeJS.ErrnoException).code !== "ENOENT") throw error;
|
|
517
516
|
}
|
|
518
517
|
}
|
|
519
518
|
}
|
|
520
519
|
|
|
520
|
+
function assertNoSymlinkDescendantsSync(target: string): void {
|
|
521
|
+
for (const entry of readdirSync(target, { withFileTypes: true })) {
|
|
522
|
+
const child = path.join(target, entry.name);
|
|
523
|
+
if (entry.isSymbolicLink()) throw new Error(`Refusing symlinked Devflow control path: ${child}`);
|
|
524
|
+
if (entry.isDirectory()) assertNoSymlinkDescendantsSync(child);
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
|
|
521
528
|
function safeControlPath(cwd: string, raw: string | undefined, kind: "state" | "workflow"): string | undefined {
|
|
522
529
|
if (raw === undefined) return undefined;
|
|
523
530
|
if (path.isAbsolute(raw)) throw new Error(`${kind} path must be project-relative`);
|
|
@@ -2271,7 +2278,7 @@ export default function devflowCore(pi: ExtensionAPI) {
|
|
|
2271
2278
|
pi.registerTool({
|
|
2272
2279
|
name: "devflow_skill_script",
|
|
2273
2280
|
label: "Devflow Skill Script",
|
|
2274
|
-
description: "Run an allowlisted deterministic script bundled with a Devflow skill
|
|
2281
|
+
description: "Run an allowlisted deterministic script bundled with a Devflow skill. project-context-validate is a final initialization gate: call it only after all manifest outputs and current-run markers are written.",
|
|
2275
2282
|
parameters: z.object({
|
|
2276
2283
|
script: z.enum([
|
|
2277
2284
|
"project-context-validate",
|
|
@@ -58,7 +58,7 @@ end
|
|
|
58
58
|
|
|
59
59
|
targets = {
|
|
60
60
|
"feature-development.yaml" => ".planning/workflows/feature-development.yaml",
|
|
61
|
-
"
|
|
61
|
+
"acceptance-remediation.yaml" => ".planning/workflows/acceptance-remediation.yaml",
|
|
62
62
|
"workflows-README.md" => ".planning/workflows/README.md"
|
|
63
63
|
}
|
|
64
64
|
|
|
@@ -79,7 +79,7 @@ module WorkflowStateValidator
|
|
|
79
79
|
validate_waiting_checkpoint(issues, root, state, step_by_id, artifact_by_path, strict_artifact_status)
|
|
80
80
|
validate_current_in_progress_output_drift(issues, root, state, step_by_id, artifact_by_path)
|
|
81
81
|
graph_gate = workflow.dig("governance", "requirement_graph_gate").to_s
|
|
82
|
-
governed_steps = %w[requirement-baseline api-contract architecture-feasibility integration-verify change-plan execute
|
|
82
|
+
governed_steps = %w[requirement-baseline api-contract architecture-feasibility integration-verify change-plan execute run-acceptance-tests]
|
|
83
83
|
# A historical completed state is never rolled back solely because it has
|
|
84
84
|
# no v2 graph/evidence. Its first new governed step, however, must satisfy
|
|
85
85
|
# the new contract before it can advance.
|
|
@@ -695,18 +695,17 @@ module WorkflowStateValidator
|
|
|
695
695
|
end
|
|
696
696
|
|
|
697
697
|
def validate_verification_gate(issues, step, data)
|
|
698
|
-
return unless step["id"] == "
|
|
698
|
+
return unless step["id"] == "run-acceptance-tests"
|
|
699
699
|
|
|
700
|
-
|
|
701
|
-
|
|
700
|
+
failed = data["acceptance_tc_failed"].to_i
|
|
701
|
+
blocked = data["acceptance_tc_blocked"].to_i
|
|
702
|
+
if failed.positive? || blocked.positive?
|
|
703
|
+
issues << issue("error", "acceptance_tests_not_passed", "Frozen acceptance tests contain failed or blocked cases", step: step["id"], failed: failed, blocked: blocked)
|
|
702
704
|
end
|
|
703
705
|
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
issues << issue("error", "verification_gate_total_zero", "Verification meta gate_total must be greater than zero", step: step["id"])
|
|
708
|
-
elsif gate_passed != gate_total
|
|
709
|
-
issues << issue("error", "verification_gates_not_all_passed", "Verification meta reports incomplete gates", step: step["id"], gate_passed: gate_passed, gate_total: gate_total)
|
|
706
|
+
passed = data["acceptance_tc_passed"].to_i
|
|
707
|
+
if passed.zero?
|
|
708
|
+
issues << issue("error", "acceptance_tests_empty", "Acceptance result must contain at least one passed TC", step: step["id"])
|
|
710
709
|
end
|
|
711
710
|
end
|
|
712
711
|
|
package/plugins/devflow-core/skills/workflow-orchestrator/templates/acceptance-remediation.yaml
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
schema_version: 1
|
|
2
|
+
id: acceptance-remediation
|
|
3
|
+
name: Acceptance Failure Remediation
|
|
4
|
+
description: >
|
|
5
|
+
修复冻结需求验收测试失败或阻塞的问题,刷新 code_index 后重新执行同一套 TC-*。
|
|
6
|
+
|
|
7
|
+
entry:
|
|
8
|
+
from_flow: feature-development
|
|
9
|
+
from_step: run-acceptance-tests
|
|
10
|
+
initial_step: diagnose
|
|
11
|
+
|
|
12
|
+
state_contract:
|
|
13
|
+
source: ".planning/STATE.md"
|
|
14
|
+
suggested_transition:
|
|
15
|
+
current_flow: acceptance-remediation
|
|
16
|
+
current_step: diagnose
|
|
17
|
+
status: in_progress
|
|
18
|
+
completed_steps: []
|
|
19
|
+
pending_steps:
|
|
20
|
+
- diagnose
|
|
21
|
+
- execute-fix
|
|
22
|
+
- code-index-refresh
|
|
23
|
+
- run-acceptance-tests
|
|
24
|
+
|
|
25
|
+
variables:
|
|
26
|
+
feature:
|
|
27
|
+
source: state.current_feature
|
|
28
|
+
phase:
|
|
29
|
+
source: state.current_phase
|
|
30
|
+
|
|
31
|
+
steps:
|
|
32
|
+
- id: diagnose
|
|
33
|
+
order: 10
|
|
34
|
+
label: Diagnose acceptance failure
|
|
35
|
+
skill: workflow-bug-fix
|
|
36
|
+
depends_on: []
|
|
37
|
+
inputs:
|
|
38
|
+
- ".planning/test-runs/{feature}/acceptance-results.json"
|
|
39
|
+
- ".planning/features/{feature}/acceptance-test-bindings.json"
|
|
40
|
+
outputs:
|
|
41
|
+
- path: ".planning/features/{feature}/acceptance-remediation.md"
|
|
42
|
+
type: acceptance-remediation
|
|
43
|
+
required: true
|
|
44
|
+
|
|
45
|
+
- id: execute-fix
|
|
46
|
+
order: 20
|
|
47
|
+
label: Execute fix
|
|
48
|
+
skill: workflow-execute-phase
|
|
49
|
+
depends_on:
|
|
50
|
+
- diagnose
|
|
51
|
+
inputs:
|
|
52
|
+
- ".planning/features/{feature}/acceptance-remediation.md"
|
|
53
|
+
- ".planning/features/{feature}/变更清单.md"
|
|
54
|
+
|
|
55
|
+
- id: code-index-refresh
|
|
56
|
+
order: 30
|
|
57
|
+
label: Refresh code index
|
|
58
|
+
skill: workflow-code-index
|
|
59
|
+
depends_on:
|
|
60
|
+
- execute-fix
|
|
61
|
+
inputs:
|
|
62
|
+
- ".planning/features/{feature}/acceptance-remediation.md"
|
|
63
|
+
outputs:
|
|
64
|
+
- path: ".planning/code-index/AUDIT.md"
|
|
65
|
+
type: code-index-audit
|
|
66
|
+
required: true
|
|
67
|
+
|
|
68
|
+
- id: run-acceptance-tests
|
|
69
|
+
order: 40
|
|
70
|
+
label: Re-run frozen acceptance tests
|
|
71
|
+
skill: workflow-run-acceptance-tests
|
|
72
|
+
depends_on:
|
|
73
|
+
- code-index-refresh
|
|
74
|
+
inputs:
|
|
75
|
+
- ".planning/requirements/{feature}/tests.json"
|
|
76
|
+
- ".planning/features/{feature}/acceptance-test-bindings.json"
|
|
77
|
+
- ".planning/code-index/AUDIT.md"
|
|
78
|
+
outputs:
|
|
79
|
+
- path: ".planning/test-runs/{feature}/acceptance-results.json"
|
|
80
|
+
type: acceptance-test-results
|
|
81
|
+
required: true
|
|
82
|
+
|
|
83
|
+
return_to:
|
|
84
|
+
flow: feature-development
|
|
85
|
+
step: run-acceptance-tests
|
|
86
|
+
status: waiting_checkpoint
|
|
87
|
+
checkpoint: CP-4
|
package/plugins/devflow-core/skills/workflow-orchestrator/templates/feature-development.yaml
CHANGED
|
@@ -67,7 +67,7 @@ governance:
|
|
|
67
67
|
- test-coverage-check
|
|
68
68
|
- acceptance-test-results-check
|
|
69
69
|
- change-impact-check
|
|
70
|
-
|
|
70
|
+
run-acceptance-tests:
|
|
71
71
|
- acceptance-coverage-check
|
|
72
72
|
- acceptance-test-results-check
|
|
73
73
|
- change-impact-check
|
|
@@ -132,11 +132,11 @@ parallel_windows:
|
|
|
132
132
|
- ".planning/features/{feature}/前端技术方案.md"
|
|
133
133
|
|
|
134
134
|
failure_branches:
|
|
135
|
-
|
|
136
|
-
id:
|
|
137
|
-
label:
|
|
138
|
-
workflow:
|
|
139
|
-
workflow_config: ".planning/workflows/
|
|
135
|
+
run-acceptance-tests:
|
|
136
|
+
id: acceptance-failed-remediation
|
|
137
|
+
label: Acceptance failure remediation
|
|
138
|
+
workflow: acceptance-remediation
|
|
139
|
+
workflow_config: ".planning/workflows/acceptance-remediation.yaml"
|
|
140
140
|
trigger_conditions:
|
|
141
141
|
state_statuses:
|
|
142
142
|
- failed
|
|
@@ -147,7 +147,7 @@ failure_branches:
|
|
|
147
147
|
- failed
|
|
148
148
|
resume_after_success:
|
|
149
149
|
flow: feature-development
|
|
150
|
-
step:
|
|
150
|
+
step: run-acceptance-tests
|
|
151
151
|
status: waiting_checkpoint
|
|
152
152
|
checkpoint: CP-4
|
|
153
153
|
|
|
@@ -306,28 +306,23 @@ checkpoints:
|
|
|
306
306
|
skip_policy: never
|
|
307
307
|
resume_behavior: "user confirms, then continue with phase-structure"
|
|
308
308
|
CP-4:
|
|
309
|
-
name: Acceptance confirmation
|
|
310
|
-
gate_after:
|
|
311
|
-
producing_step:
|
|
309
|
+
name: Acceptance result confirmation
|
|
310
|
+
gate_after: run-acceptance-tests
|
|
311
|
+
producing_step: run-acceptance-tests
|
|
312
312
|
required_outputs:
|
|
313
|
-
- ".planning/
|
|
314
|
-
- ".planning/phases/{phase}/01-VERIFICATION.md"
|
|
315
|
-
required_meta_output: ".planning/phases/{phase}/01-VERIFICATION.meta.json"
|
|
313
|
+
- ".planning/test-runs/{feature}/acceptance-results.json"
|
|
316
314
|
required_meta_fields:
|
|
317
|
-
-
|
|
318
|
-
-
|
|
319
|
-
-
|
|
320
|
-
-
|
|
321
|
-
-
|
|
322
|
-
- known_issues
|
|
315
|
+
- acceptance_tc_passed
|
|
316
|
+
- acceptance_tc_failed
|
|
317
|
+
- acceptance_tc_blocked
|
|
318
|
+
- acceptance_suite_graph_revision
|
|
319
|
+
- acceptance_results_fingerprint
|
|
323
320
|
summary_fields:
|
|
324
|
-
-
|
|
325
|
-
-
|
|
326
|
-
-
|
|
327
|
-
-
|
|
328
|
-
|
|
329
|
-
- known_issues
|
|
330
|
-
prompt: "确认 UAT、主流程、规则、兼容性和工具链验证已通过,并允许进入审计归档。"
|
|
321
|
+
- acceptance_tc_passed
|
|
322
|
+
- acceptance_tc_failed
|
|
323
|
+
- acceptance_tc_blocked
|
|
324
|
+
- acceptance_results_fingerprint
|
|
325
|
+
prompt: "确认冻结的 TC-* 已全部执行并通过,允许进入版本收口与里程碑归档。"
|
|
331
326
|
confirm_options:
|
|
332
327
|
- approve
|
|
333
328
|
- needs_fix
|
|
@@ -907,84 +902,20 @@ steps:
|
|
|
907
902
|
type: acceptance-test-results
|
|
908
903
|
required: true
|
|
909
904
|
|
|
910
|
-
- id:
|
|
911
|
-
order:
|
|
912
|
-
label:
|
|
913
|
-
skill: workflow-
|
|
905
|
+
- id: release-closeout
|
|
906
|
+
order: 100
|
|
907
|
+
label: Release closeout and milestone archive
|
|
908
|
+
skill: workflow-release-closeout
|
|
914
909
|
depends_on:
|
|
915
|
-
- code-review
|
|
916
|
-
- generate-mainflow-cases
|
|
917
910
|
- run-acceptance-tests
|
|
918
911
|
inputs:
|
|
919
|
-
- ".planning/features/{feature}/PROGRESS.md"
|
|
920
|
-
- ".planning/phases/{phase}/SUMMARY.md"
|
|
921
|
-
- ".planning/phases/{phase}/MAINFLOW-CASES.md"
|
|
922
|
-
- ".planning/generated-cases/{feature}/validation-report.md"
|
|
923
|
-
- ".planning/generated-cases/{feature}/case-import-payloads.json"
|
|
924
912
|
- ".planning/test-runs/{feature}/acceptance-results.json"
|
|
925
|
-
|
|
926
|
-
-
|
|
927
|
-
type: uat-report
|
|
928
|
-
required: true
|
|
929
|
-
- path: ".planning/phases/{phase}/01-VERIFICATION.md"
|
|
930
|
-
type: verification-report
|
|
931
|
-
required: true
|
|
932
|
-
meta_output:
|
|
933
|
-
path: ".planning/phases/{phase}/01-VERIFICATION.meta.json"
|
|
934
|
-
fields:
|
|
935
|
-
uat_passed: { type: integer, required: true }
|
|
936
|
-
uat_failed: { type: integer, required: true }
|
|
937
|
-
uat_skipped: { type: integer, required: true }
|
|
938
|
-
gate_passed: { type: integer, required: true }
|
|
939
|
-
gate_total: { type: integer, required: true }
|
|
940
|
-
acceptance_tc_passed: { type: integer, required: true }
|
|
941
|
-
acceptance_tc_failed: { type: integer, required: true }
|
|
942
|
-
acceptance_tc_blocked: { type: integer, required: true }
|
|
943
|
-
acceptance_suite_graph_revision: { type: integer, required: true }
|
|
944
|
-
acceptance_results_fingerprint: { type: string, required: true }
|
|
945
|
-
known_issues: { type: array, required: true }
|
|
946
|
-
checkpoint: CP-4
|
|
947
|
-
|
|
948
|
-
- id: audit
|
|
949
|
-
order: 100
|
|
950
|
-
label: Audit
|
|
951
|
-
skill: workflow-audit-milestone
|
|
952
|
-
depends_on:
|
|
953
|
-
- verify
|
|
954
|
-
inputs:
|
|
955
|
-
- ".planning/phases/{phase}/01-UAT.md"
|
|
956
|
-
- ".planning/phases/{phase}/01-VERIFICATION.md"
|
|
957
|
-
- ".planning/features/{feature}/PROGRESS.md"
|
|
958
|
-
outputs:
|
|
959
|
-
- path: ".planning/milestone-audit.md"
|
|
960
|
-
type: milestone-audit
|
|
961
|
-
required: true
|
|
962
|
-
|
|
963
|
-
- id: update-navigation
|
|
964
|
-
order: 110
|
|
965
|
-
label: Update navigation
|
|
966
|
-
skill: workflow-update-navigation
|
|
967
|
-
depends_on:
|
|
968
|
-
- audit
|
|
969
|
-
inputs:
|
|
970
|
-
- "."
|
|
971
|
-
outputs:
|
|
972
|
-
- path: ".planning/navigation/INDEX.md"
|
|
973
|
-
type: navigation-index
|
|
974
|
-
required: true
|
|
975
|
-
|
|
976
|
-
- id: archive
|
|
977
|
-
order: 120
|
|
978
|
-
label: Archive
|
|
979
|
-
skill: workflow-complete-milestone
|
|
980
|
-
depends_on:
|
|
981
|
-
- update-navigation
|
|
982
|
-
inputs:
|
|
983
|
-
- ".planning/milestone-audit.md"
|
|
913
|
+
- ".planning/code-index/AUDIT.md"
|
|
914
|
+
- ".planning/features/{feature}/变更清单.md"
|
|
984
915
|
- ".planning/navigation/INDEX.md"
|
|
985
916
|
outputs:
|
|
986
|
-
- path: ".planning/milestones/current-
|
|
987
|
-
type:
|
|
917
|
+
- path: ".planning/milestones/current-CLOSEOUT.md"
|
|
918
|
+
type: release-closeout
|
|
988
919
|
required: true
|
|
989
920
|
|
|
990
921
|
resume_rules:
|
|
@@ -42,7 +42,7 @@ pipeline 本身不包含执行规则——所有门禁、CP 协议、失败分
|
|
|
42
42
|
| 84 | code-index-refresh | 刷新机器代码索引并审查 |
|
|
43
43
|
| 85 | code-review | 代码审查(完成标准验证) |
|
|
44
44
|
| 86 | generate-mainflow-cases | 主流程自动化用例生成 |
|
|
45
|
-
| 90 |
|
|
45
|
+
| 90 | run-acceptance-tests | 冻结 TC 验收执行 |
|
|
46
46
|
| 100 | audit | 里程碑审计 |
|
|
47
47
|
| 110 | update-navigation | 更新导航 |
|
|
48
48
|
| 120 | archive | 里程碑归档 |
|
|
@@ -102,38 +102,25 @@ workflow-pipeline 启动
|
|
|
102
102
|
│ ↑
|
|
103
103
|
▼ │ 审查失败/用例生成失败
|
|
104
104
|
┌─────────────────────────────────────┐
|
|
105
|
-
│ Step 6:
|
|
106
|
-
│ workflow-
|
|
107
|
-
│
|
|
108
|
-
│
|
|
105
|
+
│ Step 6: 需求验收测试执行 │
|
|
106
|
+
│ workflow-run-acceptance-tests │
|
|
107
|
+
│ 执行冻结的 TC-* │
|
|
108
|
+
│ 失败/阻塞 → 修复 → 重跑 │
|
|
109
109
|
└──────────────┬──────────────────────┘
|
|
110
110
|
│ ↑
|
|
111
111
|
▼ │ 用户拒绝
|
|
112
112
|
┌─────────────────────────────────────┐
|
|
113
|
-
│ 🔴 CP-4:
|
|
113
|
+
│ 🔴 CP-4: 验收结果确认 │
|
|
114
114
|
│ ask 强制暂停 │
|
|
115
115
|
│ 不可跳过 │
|
|
116
|
-
│ 确认:
|
|
116
|
+
│ 确认: TC-* 全部通过,允许版本收口 │
|
|
117
117
|
└──────────────┬──────────────────────┘
|
|
118
118
|
│ 用户确认
|
|
119
119
|
▼
|
|
120
120
|
┌─────────────────────────────────────┐
|
|
121
|
-
│ Step 7:
|
|
122
|
-
│ workflow-
|
|
123
|
-
│
|
|
124
|
-
└──────────────┬──────────────────────┘
|
|
125
|
-
│ ↑
|
|
126
|
-
▼ │ 补齐后重试
|
|
127
|
-
┌─────────────────────────────────────┐
|
|
128
|
-
│ Step 7.5: 更新导航 │
|
|
129
|
-
│ workflow-update-navigation │
|
|
130
|
-
│ 增量同步 navigation 到代码结构 │
|
|
131
|
-
└──────────────┬──────────────────────┘
|
|
132
|
-
▼
|
|
133
|
-
┌─────────────────────────────────────┐
|
|
134
|
-
│ Step 8: 里程碑归档 │
|
|
135
|
-
│ workflow-complete-milestone │
|
|
136
|
-
│ 归档 → 更新 PROJECT.md → git tag │
|
|
121
|
+
│ Step 7: 版本收口与里程碑归档 │
|
|
122
|
+
│ workflow-release-closeout │
|
|
123
|
+
│ 校验 TC/code-index → 归档 → 更新状态 │
|
|
137
124
|
└─────────────────────────────────────┘
|
|
138
125
|
│
|
|
139
126
|
▼
|
|
@@ -53,7 +53,7 @@ Write this table into the baseline and carry `SL-*` IDs downstream:
|
|
|
53
53
|
|
|
54
54
|
| Slice ID | Name | Outcome | Included FP/BR/BC | Depends on | Entry/chain | Excluded/deferred | Gate |
|
|
55
55
|
|----------|------|---------|-------------------|------------|-------------|-------------------|------|
|
|
56
|
-
| SL-001 | Core path | User can complete X | FP-001, BR-001, BC-001 | none | page -> API -> table -> list | reporting |
|
|
56
|
+
| SL-001 | Core path | User can complete X | FP-001, BR-001, BC-001 | none | page -> API -> table -> list | reporting | TC acceptance path |
|
|
57
57
|
|
|
58
58
|
Rules:
|
|
59
59
|
|
|
@@ -72,6 +72,18 @@ This skill combines three patterns:
|
|
|
72
72
|
|
|
73
73
|
Load bundled resources only when needed:
|
|
74
74
|
|
|
75
|
+
**Internal resource URL rule (mandatory):** `skill://` URLs identify one exact
|
|
76
|
+
resource. Never pass a `skill://` URL to Glob or Grep and never append `*`,
|
|
77
|
+
`**`, or other wildcard syntax to it. First choose a concrete template name
|
|
78
|
+
from the inventory below, then use Read with the complete URL. A generated
|
|
79
|
+
project file such as `.context/spec/frontend/index.md` is an output and is not
|
|
80
|
+
the same thing as a source template under `assets/`.
|
|
81
|
+
|
|
82
|
+
Available depth templates:
|
|
83
|
+
|
|
84
|
+
- frontend: `api-client`, `case-editor`, `components`, `directory-structure`, `forms`, `routing`, `state`, `testing`
|
|
85
|
+
- backend: `directory-structure`, `engine`, `errors`, `locator`, `model`, `repository`, `router`, `scheduler`, `schema`, `service`, `testing`
|
|
86
|
+
|
|
75
87
|
- Read `assets/project-initialization-template.md` before writing `PROJECT.md`.
|
|
76
88
|
- Read `assets/codebase-navigation-template.md` before writing each codebase navigation file.
|
|
77
89
|
- Read `assets/navigation-index-template.md` before writing `.planning/navigation/INDEX.md`.
|
|
@@ -806,6 +818,11 @@ Check:
|
|
|
806
818
|
- `STATE.md` includes completion statuses and next action for each codebase.
|
|
807
819
|
- Generated files include an initialization quality summary.
|
|
808
820
|
|
|
821
|
+
Run **only after every manifest-declared output has been written and all four
|
|
822
|
+
current-run status markers have been added**. This is a final gate, not a
|
|
823
|
+
planning or progress check. Do not call it while the preceding steps are still
|
|
824
|
+
describing or planning file updates.
|
|
825
|
+
|
|
809
826
|
Run:
|
|
810
827
|
|
|
811
828
|
```text
|
package/plugins/devflow-implementation/skills/workflow-change-plan/references/output-template.md
CHANGED
|
@@ -164,8 +164,8 @@ Redis / MQ 等变更(如有)。
|
|
|
164
164
|
| 阶段 | 负责 | 不负责 |
|
|
165
165
|
|------|------|--------|
|
|
166
166
|
| workflow-change-plan | 规划任务级测试策略、范围、规划级命令、跳过自动化测试分级 | 不执行测试 |
|
|
167
|
-
| workflow-execute-phase | 新增/更新任务级单元、集成、组件、API、迁移验证;补充执行级命令并运行 |
|
|
168
|
-
| workflow-
|
|
167
|
+
| workflow-execute-phase | 新增/更新任务级单元、集成、组件、API、迁移验证;补充执行级命令并运行 | 不替代冻结 TC 的需求验收执行 |
|
|
168
|
+
| workflow-run-acceptance-tests | 执行冻结 TC、全局工具链、E2E/浏览器验证、兼容性、回归、需求覆盖 | 不重新设计每个任务的单元/集成策略 |
|
|
169
169
|
|
|
170
170
|
### 5.2 任务测试策略矩阵
|
|
171
171
|
|