@xulthekl/team-flow 0.26.0 → 0.27.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.
- package/.claude/always/phase-guard.md +1 -1
- package/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +1 -1
- package/.cursor-plugin/marketplace.json +1 -1
- package/.cursor-plugin/plugin.json +1 -1
- package/.github/plugin/marketplace.json +2 -2
- package/.zcode/hooks.json +8 -0
- package/.zcode/rules/phase-guard.mdc +33 -0
- package/.zcode/skills/workflow-start/SKILL.md +175 -0
- package/AGENTS.md +1 -1
- package/GEMINI.md +1 -1
- package/HANDOFF.md +1 -1
- package/INSTALL.md +1 -1
- package/README.md +1 -1
- package/docs/README_en.md +1 -1
- package/docs/solutions/INDEX.md +1 -0
- package/docs/solutions/cross-phase/2026-07-30-no-summary.md +17 -0
- package/gemini-extension.json +1 -1
- package/hooks/session-start +59 -1
- package/llms.txt +1 -1
- package/package.json +1 -1
- package/plugin.json +1 -1
- package/scripts/check-version-consistency.mjs +11 -51
- package/scripts/install-zcode.mjs +6 -4
- package/scripts/lib/cmd-doctor.mjs +1 -1
- package/skills/bug-investigator/SKILL.md +1 -1
- package/skills/build-executor/SKILL.md +19 -19
- package/skills/build-executor/implementer-prompt.md +1 -1
- package/skills/build-executor/references/execution-modes.md +6 -6
- package/skills/build-executor/task-reviewer-prompt.md +1 -1
- package/skills/ce-brainstorm/SKILL.md +27 -2
- package/skills/ce-brainstorm/references/brainstorm-sections.md +14 -0
- package/skills/code-reviewer/SKILL.md +2 -2
- package/skills/code-reviewer/code-reviewer-prompt.md +1 -1
- package/skills/contract-builder/SKILL.md +6 -6
- package/skills/need-explorer/SKILL.md +2 -2
- package/skills/release-archivist/SKILL.md +12 -12
- package/skills/release-archivist/references/closing-procedures.md +8 -8
- package/skills/spec-merger/SKILL.md +2 -2
- package/skills/spec-writer/SKILL.md +3 -3
- package/skills/workflow-orchestrator/SKILL.md +89 -1
- package/skills/workflow-orchestrator/references/s2-prd-prototype-loop.md +34 -1
- package/skills/workflow-orchestrator/references/s4-split-validate.md +1 -1
- package/skills/workflow-orchestrator/references/s5-monitoring.md +1 -1
- package/skills/workflow-start/SKILL.md +16 -16
- package/skills/workflow-start/references/routing-rules.md +17 -17
- package/tests/lib/platform-runtime-distribution.test.mjs +17 -10
|
@@ -15,18 +15,18 @@ When `architecture/sql/` exists, also read:
|
|
|
15
15
|
- `architecture/sql/ddl/*.sql` — executable DDL scripts; reference directly for DB schema change tasks instead of hand-writing DDL
|
|
16
16
|
- `architecture/sql/migration/*.sql` — data migration scripts; execute as-is for data transformation tasks
|
|
17
17
|
|
|
18
|
-
Check workflow mode first: `
|
|
18
|
+
Check workflow mode first: `tf state get <change-dir> workflow`. If `tweak` → direct edit mode. If `hotfix` or `full` → standard contract-first discipline.
|
|
19
19
|
|
|
20
20
|
Branch/worktree preflight before ANY implementation edit (mandatory — do not skip):
|
|
21
21
|
1. Run the isolation check:
|
|
22
22
|
```bash
|
|
23
|
-
|
|
23
|
+
tf isolate <change-dir>
|
|
24
24
|
```
|
|
25
25
|
This script enforces git isolation: if you are on `main`/`master` it creates a
|
|
26
26
|
git worktree (preferred) or a new branch, and exits non-zero if it cannot and you
|
|
27
27
|
have not approved `--force`.
|
|
28
|
-
2. If `
|
|
29
|
-
Ask the user for explicit approval (and re-run with `
|
|
28
|
+
2. If `tf isolate` exits non-zero: STOP. Do not edit `main`/`master` in place.
|
|
29
|
+
Ask the user for explicit approval (and re-run with `tf isolate <change-dir> --force`
|
|
30
30
|
only after they approve).
|
|
31
31
|
3. If it succeeds, report the chosen branch/worktree and make all implementation
|
|
32
32
|
edits there.
|
|
@@ -52,15 +52,15 @@ Return to `specifying` or `bridging` if: new behavior appears, interfaces change
|
|
|
52
52
|
For `full`/`hotfix`, generate proposed waves from the approved contract, then use the recommendation as a decision aid rather than silently defaulting a mode:
|
|
53
53
|
|
|
54
54
|
```bash
|
|
55
|
-
|
|
55
|
+
tf execution recommend <change-dir> \
|
|
56
56
|
--wave <wave-id>:<parallel|serial>:<task,...>[:<depends-on,...>] --json
|
|
57
57
|
# Show every available mode, the observed facts, and the recommendation to the user.
|
|
58
58
|
# The command writes a receipt tied to the artifacts, contract, and waves. After the user chooses, record that explicit confirmation:
|
|
59
|
-
|
|
59
|
+
tf execution plan <change-dir> \
|
|
60
60
|
--mode <selected-mode> --confirm --reason "user-selected execution mode" \
|
|
61
61
|
--wave <wave-id>:<parallel|serial>:<task,...>[:<depends-on,...>]
|
|
62
62
|
# Add --acknowledge-recommendation when the selection differs from the recommendation.
|
|
63
|
-
|
|
63
|
+
tf execution show <change-dir> --json
|
|
64
64
|
```
|
|
65
65
|
|
|
66
66
|
The optional fourth `--wave` segment names prerequisite wave IDs. `execution show --json` reports `current`, plus each wave's `depends_on`, `receipt`, `blockers`, `retryable`, and `eligible` status. A wave with `retryable: true` has a current `fail` receipt and is eligible only for its focused repair and re-review; its dependents remain blocked until its replacement `pass` receipt. Report the saved plan revision, selected mode, ordered waves, dependencies, and whether every `parallel` wave can actually be dispatched concurrently on the current platform. If concurrency is unavailable, state the capability and reason plainly; retain the planned `parallel` strategy and do not silently execute it as a serial or Batch Inline plan.
|
|
@@ -73,7 +73,7 @@ The recommendation uses task count, configured `execution.inlineThreshold`, and
|
|
|
73
73
|
| **Inline** | Recommended for a single sequential task; always available for a user-confirmed choice |
|
|
74
74
|
| **Batch Inline** | Recommended for a bounded sequential batch; it remains serial and is never presented as parallel |
|
|
75
75
|
|
|
76
|
-
Do not transition to `executing` until `execution show` reports `current: true` and the phase guard passes. A revised plan must repeat `
|
|
76
|
+
Do not transition to `executing` until `execution show` reports `current: true` and the phase guard passes. A revised plan must repeat `tf execution recommend` and use `tf execution revise --confirm`; it creates a new revision and invalidates receipts from the prior revision.
|
|
77
77
|
|
|
78
78
|
## Batch Inline Execution
|
|
79
79
|
|
|
@@ -88,21 +88,21 @@ Boundaries: if any task touches >1 module, involves schema/API/config changes, o
|
|
|
88
88
|
For full/hotfix by default. Dispatch according to the persisted plan, review each planned wave, and run a final broad review after all waves.
|
|
89
89
|
|
|
90
90
|
### Planned-Wave Loop
|
|
91
|
-
1. Read the current plan with `
|
|
91
|
+
1. Read the current plan with `tf execution show <change-dir> --json`; only waves shown with `current: true` and `eligible: true` may start. A `retryable: true` wave may only be repaired and re-reviewed; do not dispatch its dependents until its replacement receipt is `pass`. The CLI encodes dependencies in `--wave <id>:<strategy>:<tasks>[:<depends-on,...>]` and rejects a review receipt for a wave whose prerequisites lack current `pass` receipts.
|
|
92
92
|
2. A `parallel` wave may dispatch independent tasks simultaneously only when the platform supports concurrent dispatch. If it does not, disclose the unavailable capability and execute the same wave one task at a time without changing its stored strategy.
|
|
93
93
|
3. A `serial` wave dispatches one task at a time in listed order.
|
|
94
94
|
4. After every wave, write a non-empty persisted regular-file review report (separate from the implementer's report), then record exactly one receipt that names that review report:
|
|
95
95
|
```bash
|
|
96
|
-
|
|
96
|
+
tf execution review <change-dir> \
|
|
97
97
|
--wave <wave-id> --base <sha> --head <sha> --report <review-report-path> --verdict <pass|fail>
|
|
98
98
|
```
|
|
99
99
|
Do not begin a dependent wave until its predecessor receipt is `pass`.
|
|
100
100
|
5. Critical/Important findings require a `fail` receipt, a focused repair, re-review, then a replacement `pass` receipt. Never advance or close with a missing or failed receipt.
|
|
101
101
|
|
|
102
102
|
### Per-Task Loop
|
|
103
|
-
1. **Dispatch implementer**: Load the template with `
|
|
103
|
+
1. **Dispatch implementer**: Load the template with `tf runtime asset read skills/build-executor/implementer-prompt.md`. Extract task brief with `scripts/task-brief PLAN_FILE N`. Include: where task fits, brief path, interfaces from prior tasks, report file path.
|
|
104
104
|
2. **Handle response**: DONE → generate review package + dispatch reviewer. DONE_WITH_CONCERNS → assess. NEEDS_CONTEXT → provide context. BLOCKED → re-dispatch with better model or escalate.
|
|
105
|
-
3. **Review**: Load `
|
|
105
|
+
3. **Review**: Load `tf runtime asset read skills/build-executor/task-reviewer-prompt.md`. Reviewer returns spec compliance + code quality verdicts with the wave ID, git range, report path, and `pass`/`fail` receipt command.
|
|
106
106
|
4. **Fix**: If Critical or Important issues, write the `fail` receipt, dispatch fix subagent, re-review, and write the replacement `pass` receipt.
|
|
107
107
|
5. **Mark complete**: Append to `.superpowers/sdd/progress.md`: `Task N: complete (commits <base7>..<head7>, review clean)`
|
|
108
108
|
|
|
@@ -110,7 +110,7 @@ For full/hotfix by default. Dispatch according to the persisted plan, review eac
|
|
|
110
110
|
Use the configured profile that matches the task role. Resolve it before dispatch:
|
|
111
111
|
|
|
112
112
|
```bash
|
|
113
|
-
|
|
113
|
+
tf runtime config --resolve-model <profile>
|
|
114
114
|
```
|
|
115
115
|
|
|
116
116
|
| Profile | Role |
|
|
@@ -123,11 +123,11 @@ npx --yes --package @xulthekl/team-flow@0.26.0 tf runtime config --resolve-model
|
|
|
123
123
|
For platforms whose dispatch supports a `model` field, explicitly pass the resolved `model` value. If the result is `configured: false`, automatic selection is unavailable: do not invent a provider model and do not bypass the existing requirement to specify `model` explicitly. Resolution only reads configuration; it does not switch models.
|
|
124
124
|
|
|
125
125
|
### Progress Ledger
|
|
126
|
-
Track in `.superpowers/sdd/progress.md`. Check for existing ledger — completed tasks are done. After each batch: `
|
|
126
|
+
Track in `.superpowers/sdd/progress.md`. Check for existing ledger — completed tasks are done. After each batch: `tf state set <change-dir> batches_completed <N>`.
|
|
127
127
|
|
|
128
128
|
## Inline Execution Mode
|
|
129
129
|
|
|
130
|
-
Only after a user-confirmed `inline` selection is recorded by `
|
|
130
|
+
Only after a user-confirmed `inline` selection is recorded by `tf execution plan --confirm`; a non-recommended selection also records `--acknowledge-recommendation`. Executes in the current session and still writes one review receipt per planned wave.
|
|
131
131
|
|
|
132
132
|
Per-task: extract brief → write failing test → confirm failure → implement → confirm green → checkpoint review (done-when criteria, SHALL/MUST verification) → commit → save a task-level recovery checkpoint when another task remains → append to progress ledger.
|
|
133
133
|
|
|
@@ -135,7 +135,7 @@ After a task is committed and reviewed, when another task remains, save the
|
|
|
135
135
|
recovery context with real evidence:
|
|
136
136
|
|
|
137
137
|
```bash
|
|
138
|
-
|
|
138
|
+
tf checkpoint save <change-dir> \
|
|
139
139
|
--task <completed-task-id> --next "<next task>" --completed "<completed work>" \
|
|
140
140
|
--verification "<verification report path>" --review "<review report path>" \
|
|
141
141
|
--risk "<open risk or None>" --commit-start <base-sha> --commit-end <head-sha>
|
|
@@ -143,7 +143,7 @@ npx --yes --package @xulthekl/team-flow@0.26.0 tf checkpoint save <change-dir> \
|
|
|
143
143
|
|
|
144
144
|
This augments `.superpowers/sdd/progress.md`; it does not replace the progress
|
|
145
145
|
ledger or add a new core workflow state. Do not claim a checkpoint is current
|
|
146
|
-
when `
|
|
146
|
+
when `tf checkpoint list` reports it as stale.
|
|
147
147
|
|
|
148
148
|
If task hits BLOCKED (3+ fix failures or changes outside declared scope), escalate to SDD.
|
|
149
149
|
|
|
@@ -153,8 +153,8 @@ Skip TDD. Apply changes directly. Verify file integrity (exists, non-empty, vali
|
|
|
153
153
|
|
|
154
154
|
## DP Records
|
|
155
155
|
|
|
156
|
-
DP-4 is written by `
|
|
157
|
-
DP-5 (debug escalation): `
|
|
156
|
+
DP-4 is written by `tf execution plan`; do not write it with raw `state set`.
|
|
157
|
+
DP-5 (debug escalation): `tf state set <change-dir> dp_5_result "<resolution>"` + timestamp.
|
|
158
158
|
|
|
159
159
|
## Completion Standard
|
|
160
160
|
|
|
@@ -22,7 +22,7 @@ Subagent (general-purpose):
|
|
|
22
22
|
## Planned Wave
|
|
23
23
|
|
|
24
24
|
You are assigned to planned wave [WAVE_ID] with strategy [WAVE_STRATEGY].
|
|
25
|
-
Read `
|
|
25
|
+
Read `tf execution show <change-dir> --json` before editing. Do not start
|
|
26
26
|
unless all declared dependencies have `pass` review receipts. A `parallel`
|
|
27
27
|
label permits concurrent dispatch only when the controller confirms the
|
|
28
28
|
platform supports it; never change the saved wave strategy yourself.
|
|
@@ -7,14 +7,14 @@
|
|
|
7
7
|
For `full`/`hotfix`, generate proposed waves from the approved contract, then use the recommendation as a decision aid:
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
|
-
|
|
10
|
+
tf execution recommend <change-dir> \
|
|
11
11
|
--wave <wave-id>:<parallel|serial>:<task,...>[:<depends-on,...>] --json
|
|
12
12
|
# Show every available mode, the observed facts, and the recommendation to the user.
|
|
13
|
-
|
|
13
|
+
tf execution plan <change-dir> \
|
|
14
14
|
--mode <selected-mode> --confirm --reason "user-selected execution mode" \
|
|
15
15
|
--wave <wave-id>:<parallel|serial>:<task,...>[:<depends-on,...>]
|
|
16
16
|
# Add --acknowledge-recommendation when the selection differs from the recommendation.
|
|
17
|
-
|
|
17
|
+
tf execution show <change-dir> --json
|
|
18
18
|
```
|
|
19
19
|
|
|
20
20
|
The optional fourth `--wave` segment names prerequisite wave IDs. `execution show --json` reports `current`, plus each wave's `depends_on`, `receipt`, `blockers`, `retryable`, and `eligible` status.
|
|
@@ -37,7 +37,7 @@ Dispatch according to the persisted plan, review each planned wave, and run a fi
|
|
|
37
37
|
3. A `serial` wave dispatches one task at a time in listed order.
|
|
38
38
|
4. After every wave, write a review report, then record one receipt:
|
|
39
39
|
```bash
|
|
40
|
-
|
|
40
|
+
tf execution review <change-dir> \
|
|
41
41
|
--wave <wave-id> --base <sha> --head <sha> --report <review-report-path> --verdict <pass|fail>
|
|
42
42
|
```
|
|
43
43
|
5. Critical/Important findings require a `fail` receipt, focused repair, re-review, then replacement `pass` receipt.
|
|
@@ -66,7 +66,7 @@ Per-task: extract brief → write failing test → confirm failure → implement
|
|
|
66
66
|
## Model Selection
|
|
67
67
|
|
|
68
68
|
```bash
|
|
69
|
-
|
|
69
|
+
tf runtime config --resolve-model <profile>
|
|
70
70
|
```
|
|
71
71
|
|
|
72
72
|
| Profile | Role |
|
|
@@ -79,7 +79,7 @@ npx --yes --package @xulthekl/team-flow@0.26.0 tf runtime config --resolve-model
|
|
|
79
79
|
## Recovery Checkpoint
|
|
80
80
|
|
|
81
81
|
```bash
|
|
82
|
-
|
|
82
|
+
tf checkpoint save <change-dir> \
|
|
83
83
|
--task <completed-task-id> --next "<next task>" --completed "<completed work>" \
|
|
84
84
|
--verification "<verification report path>" --review "<review report path>" \
|
|
85
85
|
--risk "<open risk or None>" --commit-start <base-sha> --commit-end <head-sha>
|
|
@@ -146,7 +146,7 @@ Subagent (general-purpose):
|
|
|
146
146
|
command for the controller:
|
|
147
147
|
|
|
148
148
|
```bash
|
|
149
|
-
|
|
149
|
+
tf execution review <change-dir> --wave [WAVE_ID] --base [BASE_SHA] --head [HEAD_SHA] --report [REVIEW_REPORT_FILE] --verdict <pass|fail>
|
|
150
150
|
```
|
|
151
151
|
|
|
152
152
|
Use `fail` for any Critical/Important finding. A repair must be re-reviewed
|
|
@@ -81,13 +81,22 @@ Determine `OUTPUT_FORMAT` (md or html). For the full 5-level precedence, read `r
|
|
|
81
81
|
2. **降级逻辑(tf 不可用时)**:
|
|
82
82
|
- 通知用户:`tf` 命令不可用,将使用默认配置
|
|
83
83
|
- **询问用户**:默认模板 or 自定义路径?
|
|
84
|
-
-
|
|
84
|
+
- 默认模板:**直接 cp skill 内置模板到项目目录**(见下方步骤)
|
|
85
85
|
- 自定义路径:验证文件存在,在项目工作区记录配置
|
|
86
|
-
- 在 `.team-flow/templates/` 目录创建/使用模板(绝不在 skill 目录写入)
|
|
87
86
|
- **维护配置文件**:在 `.team-flow/team-flow.config.json` 中记录配置(如文件不存在则创建)
|
|
88
87
|
|
|
88
|
+
3. **默认模板处理步骤(重要)**:
|
|
89
|
+
- **源文件**:skill 内置 `templates/prd.md`(相对于 skill 基础目录)
|
|
90
|
+
- **目标目录**:`.team-flow/templates/`(项目工作区)
|
|
91
|
+
- **操作**:直接 `cp` 源文件到目标目录,**不要自行创建简化版本**
|
|
92
|
+
- **验证**:检查目标文件是否存在且包含完整的11个章节
|
|
93
|
+
|
|
89
94
|
Built-in `templates/prd.md` is relative to the skill's base directory. Custom paths are relative to project root.
|
|
90
95
|
|
|
96
|
+
**⛔ 关键约束**:
|
|
97
|
+
- **错误行为**:自行创建简化版本的PRD模板
|
|
98
|
+
- **正确行为**:直接 cp 原始 PRD 模板到项目目录,保持模板完整性
|
|
99
|
+
|
|
91
100
|
**Resolve brainstorm profile.** After template resolution, look for `<template-name>-brainstorm-profile.md` in the same directory. Store as `BRAINSTORM_PROFILE_PATH`. Fall back to built-in `templates/prd-brainstorm-profile.md`.
|
|
92
101
|
|
|
93
102
|
#### 0.1–0.5 Routing Sub-phases
|
|
@@ -126,6 +135,22 @@ Propose **2-3 approaches** (or recommend directly if one is clearly best). Use n
|
|
|
126
135
|
|
|
127
136
|
### Phase 3: Generate PRD Document
|
|
128
137
|
|
|
138
|
+
**⛔ MANDATORY:生成PRD文档前,必须先读取 `references/brainstorm-sections.md`**
|
|
139
|
+
|
|
140
|
+
**§8.4 功能模块提取规则(关键规则,必须遵守)**:
|
|
141
|
+
- **详细程度**:保留原始需求文档中的关键细节,不要过度概括
|
|
142
|
+
- **必须保留的内容**:
|
|
143
|
+
- 页面布局(上下分栏、标准列表等)
|
|
144
|
+
- 搜索模块(具体字段)
|
|
145
|
+
- 表格列定义(完整字段列表)
|
|
146
|
+
- 交互规则(默认选中、点击切换、筛选联动等)
|
|
147
|
+
- 按领域动态字段(如有)
|
|
148
|
+
- 动态列名说明
|
|
149
|
+
- 操作说明(已发布/草稿状态等)
|
|
150
|
+
- 级联选择逻辑(如有)
|
|
151
|
+
- **⛔ 错误行为**:只提取输入/输出/业务规则,丢失原始需求文档中的大量关键细节
|
|
152
|
+
- **⛔ 正确行为**:充分利用原始需求文档的详细内容,保持信息完整性
|
|
153
|
+
|
|
129
154
|
Read `references/brainstorm-sections.md` for doc-warranted criteria. If warranted: read template from `PRD_TEMPLATE_PATH`, fill via `references/prd-mapping.md`, write to `prd/{ITERATION_VERSION}/prd.md`. Vocabulary capture: update `CONCEPTS.md` with resolved domain terms (only if it exists).
|
|
130
155
|
|
|
131
156
|
### Phase 3.5: Prototype Inner Loop
|
|
@@ -223,6 +223,20 @@ as template placeholder.
|
|
|
223
223
|
Skip §8.3 (hardware/network) and §8.5 (non-functional) unless the brainstorm
|
|
224
224
|
explicitly covered these.
|
|
225
225
|
|
|
226
|
+
**§8.4 功能模块提取规则**:
|
|
227
|
+
- **详细程度**:保留原始需求文档中的关键细节,不要过度概括
|
|
228
|
+
- **必须保留的内容**:
|
|
229
|
+
- 页面布局(上下分栏、标准列表等)
|
|
230
|
+
- 搜索模块(具体字段)
|
|
231
|
+
- 表格列定义(完整字段列表)
|
|
232
|
+
- 交互规则(默认选中、点击切换、筛选联动等)
|
|
233
|
+
- 按领域动态字段(如有)
|
|
234
|
+
- 动态列名说明
|
|
235
|
+
- 操作说明(已发布/草稿状态等)
|
|
236
|
+
- 级联选择逻辑(如有)
|
|
237
|
+
- **错误行为**:只提取输入/输出/业务规则,丢失原始需求文档中的大量关键细节
|
|
238
|
+
- **正确行为**:充分利用原始需求文档的详细内容,保持信息完整性
|
|
239
|
+
|
|
226
240
|
## Agent agency
|
|
227
241
|
|
|
228
242
|
The chapter catalog is a floor, not a ceiling. When the brainstorm's content
|
|
@@ -16,7 +16,7 @@ Two responsibilities: requesting review (dispatching a reviewer subagent) and re
|
|
|
16
16
|
1. Get SHAs: `BASE_SHA=$(git rev-parse HEAD~1)` and `HEAD_SHA=$(git rev-parse HEAD)`
|
|
17
17
|
2. Dispatch `general-purpose` subagent using template at `skills/code-reviewer/code-reviewer-prompt.md`
|
|
18
18
|
3. Fill placeholders: `[DESCRIPTION]` (what was built), `[PLAN_OR_REQUIREMENTS]` (contract/spec reference), `[BASE_SHA]`, `[HEAD_SHA]`, `[WAVE_ID]`, and a distinct `[REVIEW_REPORT_FILE]`.
|
|
19
|
-
4. Require the reviewer to write a non-empty persisted review report at `[REVIEW_REPORT_FILE]`, then record that exact path in the wave receipt: `
|
|
19
|
+
4. Require the reviewer to write a non-empty persisted review report at `[REVIEW_REPORT_FILE]`, then record that exact path in the wave receipt: `tf execution review <change-dir> --wave <id> --base <sha> --head <sha> --report <review-report-path> --verdict <pass|fail>`.
|
|
20
20
|
5. Act on feedback: Critical/Important findings require a `fail` receipt, focused repair, re-review, and replacement `pass` receipt before a dependent wave or closing can proceed. Note Minor for later, push back with reasoning if reviewer is wrong.
|
|
21
21
|
|
|
22
22
|
### Minimality And Scope
|
|
@@ -76,7 +76,7 @@ Suggestion breaks existing functionality, reviewer lacks context, violates YAGNI
|
|
|
76
76
|
| Performative agreement | State requirement or just act |
|
|
77
77
|
| Blind implementation | Verify against codebase first |
|
|
78
78
|
| Batch without testing | One at a time, test each |
|
|
79
|
-
| Proceeding without a wave receipt | Record `pass`/`fail` via `
|
|
79
|
+
| Proceeding without a wave receipt | Record `pass`/`fail` via `tf execution review` before the next dependent wave |
|
|
80
80
|
| Assuming reviewer is right | Check if breaks things |
|
|
81
81
|
| Avoiding pushback | Technical correctness > comfort |
|
|
82
82
|
| Partial implementation | Clarify all items first |
|
|
@@ -93,7 +93,7 @@ Subagent (general-purpose):
|
|
|
93
93
|
report path. End with the exact receipt command:
|
|
94
94
|
|
|
95
95
|
```bash
|
|
96
|
-
|
|
96
|
+
tf execution review <change-dir> --wave [WAVE_ID] --base [BASE_SHA] --head [HEAD_SHA] --report [REVIEW_REPORT_FILE] --verdict <pass|fail>
|
|
97
97
|
```
|
|
98
98
|
|
|
99
99
|
Use `fail` when any Critical or Important finding remains. A repair needs
|
|
@@ -5,9 +5,9 @@ description: Convert approved planning artifacts into an execution contract. Inv
|
|
|
5
5
|
|
|
6
6
|
# Contract Builder
|
|
7
7
|
|
|
8
|
-
Converts planning artifacts into a single execution handshake: `execution-contract.md`. Load the baseline with `
|
|
8
|
+
Converts planning artifacts into a single execution handshake: `execution-contract.md`. Load the baseline with `tf runtime asset read templates/execution-contract.md`.
|
|
9
9
|
|
|
10
|
-
Read before generating: `proposal.md`, `specs/`, `design.md`, `tasks.md`, then load `docs/artifact-contract.md` with `
|
|
10
|
+
Read before generating: `proposal.md`, `specs/`, `design.md`, `tasks.md`, then load `docs/artifact-contract.md` with `tf runtime asset read docs/artifact-contract.md`.
|
|
11
11
|
|
|
12
12
|
**Architecture Design Outputs (v0.9 §26)**: 若 `architecture/` 目录存在,同时读取 `architecture/architecture.md` / `database.md` / `api.md`,作为执行契约的架构约束补充输入——确保 execution-contract.md 的 Implementation Constraints 段包含架构设计的关键约束(聚合边界/CQRS 分流/API 契约/schema 变更)。`architecture/` 不存在时跳过。
|
|
13
13
|
|
|
@@ -38,8 +38,8 @@ Must make obvious: approved behavior, out-of-scope, constraints, batches, test o
|
|
|
38
38
|
|
|
39
39
|
After drafting: summarize handoff rules, identify ambiguity, flag unmapped requirements, ask user to approve explicitly. After approval:
|
|
40
40
|
```bash
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
tf state set <change-dir> dp_3_result "approved: <summary>"
|
|
42
|
+
tf state set <change-dir> dp_3_timestamp $(date -u +%Y-%m-%dT%H:%M:%SZ)
|
|
43
43
|
```
|
|
44
44
|
DP-3 is a hard gate — no implementation without this record.
|
|
45
45
|
|
|
@@ -60,9 +60,9 @@ Generate minimal contract: Intent Lock (one sentence), Task List (numbered), App
|
|
|
60
60
|
|
|
61
61
|
## Post-Generation
|
|
62
62
|
|
|
63
|
-
Run `
|
|
63
|
+
Run `tf state init <change-dir>` to create `.team-flow.yaml` with hashes.
|
|
64
64
|
|
|
65
|
-
For hotfix, after writing the minimal contract, run `
|
|
65
|
+
For hotfix, after writing the minimal contract, run `tf state init <change-dir>` or `tf state rebuild <change-dir>` so `contract_hash` is recorded. DP-3 remains mandatory before build.
|
|
66
66
|
|
|
67
67
|
## Exception Handling
|
|
68
68
|
|
|
@@ -41,8 +41,8 @@ Restate what you heard: "Here's what I'm hearing: [problem, scope, non-goals, su
|
|
|
41
41
|
|
|
42
42
|
After user confirms the summary:
|
|
43
43
|
```bash
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
tf state set <change-dir> dp_1_result "confirmed: <one-line summary>"
|
|
45
|
+
tf state set <change-dir> dp_1_timestamp $(date -u +%Y-%m-%dT%H:%M:%SZ)
|
|
46
46
|
```
|
|
47
47
|
DP-1 confirms scope, non-goals, and success criteria before artifact creation.
|
|
48
48
|
|
|
@@ -72,12 +72,12 @@ If an `e2e/` suite exists for the change, fold its report into verification (see
|
|
|
72
72
|
- Scope added without artifact updates?
|
|
73
73
|
- Unresolved blockers or known risks?
|
|
74
74
|
- Delta specs exist that need merging?
|
|
75
|
-
- Run `
|
|
75
|
+
- Run `tf audit <change-dir>` — include `decision-point-audit.md` in archive
|
|
76
76
|
|
|
77
77
|
### DP-6 (Verification Outcome)
|
|
78
78
|
```bash
|
|
79
|
-
|
|
80
|
-
|
|
79
|
+
tf state set <change-dir> dp_6_result "<pass|conditional|fail>: <summary>"
|
|
80
|
+
tf state set <change-dir> dp_6_timestamp $(date -u +%Y-%m-%dT%H:%M:%SZ)
|
|
81
81
|
```
|
|
82
82
|
If FAIL, do NOT proceed to DP-7. Route back or ask about abandonment.
|
|
83
83
|
|
|
@@ -85,13 +85,13 @@ After recording a PASS outcome, also record it as the verification gate so the
|
|
|
85
85
|
`executing → closing` transition is allowed (the guard accepts either
|
|
86
86
|
`test_result: pass` or a `dp_6_result` starting with `pass`):
|
|
87
87
|
```bash
|
|
88
|
-
|
|
88
|
+
tf state set <change-dir> test_result pass
|
|
89
89
|
```
|
|
90
90
|
|
|
91
91
|
### DP-7 (Archive Confirmation)
|
|
92
92
|
```bash
|
|
93
|
-
|
|
94
|
-
|
|
93
|
+
tf state set <change-dir> dp_7_result "confirmed: <archive summary>"
|
|
94
|
+
tf state set <change-dir> dp_7_timestamp $(date -u +%Y-%m-%dT%H:%M:%SZ)
|
|
95
95
|
```
|
|
96
96
|
Verify DP-0 through DP-6 are recorded before DP-7.
|
|
97
97
|
|
|
@@ -101,14 +101,14 @@ If implementation diverged from the contract, return to `bridging` before closur
|
|
|
101
101
|
|
|
102
102
|
## Post-Verification
|
|
103
103
|
|
|
104
|
-
Run `
|
|
104
|
+
Run `tf state transition <change-dir> closing`. If delta specs exist, route to `spec-merger`.
|
|
105
105
|
|
|
106
106
|
### Architecture Merge (v0.10 §28-§31) — MUST run first
|
|
107
107
|
|
|
108
108
|
Merge change-level architecture artifacts to the global `docs/architecture/` baseline **before** any other post-verification step:
|
|
109
109
|
|
|
110
110
|
```bash
|
|
111
|
-
|
|
111
|
+
tf arch-merge <change-dir>
|
|
112
112
|
```
|
|
113
113
|
|
|
114
114
|
This merges `architecture/{architecture,database,api}.md` and `architecture/sql/` into the global architecture docs. Skip silently when `architecture/` does not exist (architecture-design was `skipped`).
|
|
@@ -120,7 +120,7 @@ This merges `architecture/{architecture,database,api}.md` and `architecture/sql/
|
|
|
120
120
|
After `arch-merge` completes, run prototype-sync to merge UX deltas back to the global prototype:
|
|
121
121
|
|
|
122
122
|
```bash
|
|
123
|
-
|
|
123
|
+
tf prototype-sync <change-dir>
|
|
124
124
|
```
|
|
125
125
|
|
|
126
126
|
**Write-back order (mandatory)**: `arch-merge` → `prototype-sync` → `compound promotion` must be executed **sequentially** within the same change closing. Do not run them in parallel — the global `docs/architecture/` and `prototype/` must not be in a half-updated state when the next change grounds on them.
|
|
@@ -134,7 +134,7 @@ If `prototype-sync` reports conflicts, list them in the closing summary and flag
|
|
|
134
134
|
During closing, promote change-level learnings to the global solutions library:
|
|
135
135
|
|
|
136
136
|
```bash
|
|
137
|
-
|
|
137
|
+
tf solutions promote <change-dir>
|
|
138
138
|
```
|
|
139
139
|
|
|
140
140
|
This checks `specs/<cap>/learnings.md` for entries meeting promotion criteria:
|
|
@@ -154,7 +154,7 @@ Before finalizing the closing, check if this change produced any learnable momen
|
|
|
154
154
|
|
|
155
155
|
If any of the above occurred, capture the learning:
|
|
156
156
|
```bash
|
|
157
|
-
|
|
157
|
+
tf solutions capture \
|
|
158
158
|
--phase cross-phase --domain <domain> --type pitfall \
|
|
159
159
|
--severity medium --summary "<what happened and how to prevent it>"
|
|
160
160
|
```
|
|
@@ -176,6 +176,6 @@ Verify files exist and are non-empty, run `node --check` on code files, skip 5-s
|
|
|
176
176
|
## Exception Handling
|
|
177
177
|
|
|
178
178
|
- **Parse failures**: Report exact file and section
|
|
179
|
-
- **Missing files**: If audit can't generate, run `
|
|
179
|
+
- **Missing files**: If audit can't generate, run `tf audit` manually
|
|
180
180
|
- **User interruption**: Re-run verification from the beginning on resume
|
|
181
181
|
- **DP gaps**: Flag missing DPs during DP-6; ask user whether to proceed or return
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
After `arch-merge` completes, run prototype-sync to merge UX deltas back to the global prototype:
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
|
-
|
|
10
|
+
tf prototype-sync <change-dir>
|
|
11
11
|
```
|
|
12
12
|
|
|
13
13
|
**Write-back order (mandatory)**: `arch-merge` → `prototype-sync` → `compound promotion` must be executed **sequentially** within the same change closing. Do not run them in parallel — the global `docs/architecture/` and `prototype/` must not be in a half-updated state when the next change grounds on them.
|
|
@@ -21,7 +21,7 @@ If `prototype-sync` reports conflicts, list them in the closing summary and flag
|
|
|
21
21
|
During closing, promote change-level learnings to the global solutions library:
|
|
22
22
|
|
|
23
23
|
```bash
|
|
24
|
-
|
|
24
|
+
tf solutions promote <change-dir>
|
|
25
25
|
```
|
|
26
26
|
|
|
27
27
|
Promotion criteria:
|
|
@@ -41,7 +41,7 @@ Before finalizing the closing, check if this change produced any learnable momen
|
|
|
41
41
|
|
|
42
42
|
If any occurred, capture the learning:
|
|
43
43
|
```bash
|
|
44
|
-
|
|
44
|
+
tf solutions capture \
|
|
45
45
|
--phase cross-phase --domain <domain> --type pitfall \
|
|
46
46
|
--severity medium --summary "<what happened and how to prevent it>"
|
|
47
47
|
```
|
|
@@ -51,22 +51,22 @@ Advisory — skip silently if no learnable moments detected.
|
|
|
51
51
|
## DP-6 (Verification Outcome)
|
|
52
52
|
|
|
53
53
|
```bash
|
|
54
|
-
|
|
55
|
-
|
|
54
|
+
tf state set <change-dir> dp_6_result "<pass|conditional|fail>: <summary>"
|
|
55
|
+
tf state set <change-dir> dp_6_timestamp $(date -u +%Y-%m-%dT%H:%M:%SZ)
|
|
56
56
|
```
|
|
57
57
|
|
|
58
58
|
If FAIL, do NOT proceed to DP-7. Route back or ask about abandonment.
|
|
59
59
|
|
|
60
60
|
After PASS, also record the verification gate:
|
|
61
61
|
```bash
|
|
62
|
-
|
|
62
|
+
tf state set <change-dir> test_result pass
|
|
63
63
|
```
|
|
64
64
|
|
|
65
65
|
## DP-7 (Archive Confirmation)
|
|
66
66
|
|
|
67
67
|
```bash
|
|
68
|
-
|
|
69
|
-
|
|
68
|
+
tf state set <change-dir> dp_7_result "confirmed: <archive summary>"
|
|
69
|
+
tf state set <change-dir> dp_7_timestamp $(date -u +%Y-%m-%dT%H:%M:%SZ)
|
|
70
70
|
```
|
|
71
71
|
|
|
72
72
|
Verify DP-0 through DP-6 are recorded before DP-7.
|
|
@@ -10,7 +10,7 @@ After a change completes, delta specs (ADDED/MODIFIED/REMOVED/RENAMED) must be m
|
|
|
10
10
|
## Pre-Flight Checks
|
|
11
11
|
|
|
12
12
|
### Conflict Detection
|
|
13
|
-
Run `
|
|
13
|
+
Run `tf sync <change-dir>`. If conflicts are detected (same requirement modified by multiple changes), present the conflict list to the user for resolution order.
|
|
14
14
|
|
|
15
15
|
### Abandoned Change Guard
|
|
16
16
|
Check if the change is `abandoned`. If so → STOP: "Abandoned changes cannot be synced. Delta specs are preserved for reference but must not be merged."
|
|
@@ -55,7 +55,7 @@ Output sync report table: Capability, ADDED/MODIFIED/REMOVED/RENAMED counts, Sta
|
|
|
55
55
|
2. Change folder (including deltas) remains for traceability.
|
|
56
56
|
3. Record that merging is complete so the `executing → closing` guard allows closure:
|
|
57
57
|
```bash
|
|
58
|
-
|
|
58
|
+
tf state set <change-dir> spec_merged true
|
|
59
59
|
```
|
|
60
60
|
(If the change had no delta sections, still set `spec_merged true` — there was nothing to merge.)
|
|
61
61
|
|
|
@@ -55,7 +55,7 @@ Read `docs/solutions/INDEX.md` if it exists. Filter entries where `phase = spec
|
|
|
55
55
|
|
|
56
56
|
## Config Check
|
|
57
57
|
|
|
58
|
-
Run: `
|
|
58
|
+
Run: `tf runtime config --get artifacts.order` — generate in configured order (default: proposal → specs → design → tasks). Run with `artifacts.skip` — skip any listed artifacts.
|
|
59
59
|
|
|
60
60
|
## Artifact Roles
|
|
61
61
|
|
|
@@ -135,8 +135,8 @@ Generate one at a time. Confirm each before next. This prevents scope drift —
|
|
|
135
135
|
|
|
136
136
|
Present summary of all 4 artifacts (2-3 sentences each). Ask user for adjustments. After approval:
|
|
137
137
|
```bash
|
|
138
|
-
|
|
139
|
-
|
|
138
|
+
tf state set <change-dir> dp_2_result "approved: <summary>"
|
|
139
|
+
tf state set <change-dir> dp_2_timestamp $(date -u +%Y-%m-%dT%H:%M:%SZ)
|
|
140
140
|
```
|
|
141
141
|
|
|
142
142
|
## Handoff Rule
|
|
@@ -40,13 +40,101 @@ Do NOT invoke for:
|
|
|
40
40
|
**先做需求选择**(v0.15.0 多需求):读 `.team-flow/registry.yaml`,确定 `active_requirement`(多需求则询问操作哪个/新建)。再判断 7 种入口路径之一;检查 baseline.md / CONCEPTS.md 并注入;复利注入(INDEX.md top-5)。**路由结果必须向用户显式确认**(路由是建议非决定)。详见 `references/s1-path-router.md`。
|
|
41
41
|
|
|
42
42
|
### S2: PRD + 原型阶段
|
|
43
|
+
|
|
44
|
+
**⛔ MANDATORY:执行S2阶段前,必须先读取 `references/s2-prd-prototype-loop.md`**
|
|
45
|
+
|
|
46
|
+
**S2阶段状态管理(关键规则,必须遵守)**:
|
|
47
|
+
```
|
|
48
|
+
prd_draft → user_review → prototype_loop → prd_frozen → completed
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
| 子阶段 | 说明 | 是否阻塞 |
|
|
52
|
+
|--------|------|---------|
|
|
53
|
+
| `prd_draft` | PRD草稿生成完成 | ⛔ 是(等待用户确认) |
|
|
54
|
+
| `user_review` | 用户查看PRD文档 | ⛔ 是(等待用户确认) |
|
|
55
|
+
| `prototype_loop` | 原型循环(如需要) | 否(自动执行) |
|
|
56
|
+
| `prd_frozen` | PRD冻结 | 否(自动执行) |
|
|
57
|
+
| `completed` | S2阶段完成 | 否(自动执行) |
|
|
58
|
+
|
|
59
|
+
**⛔ 关键约束**:
|
|
60
|
+
- `prd_draft` 完成后**必须等待用户确认**,不能自动进入 `prototype_loop`
|
|
61
|
+
- 只有用户确认后,才能进入原型循环
|
|
62
|
+
- PRD冻结后,才能进入S3阶段
|
|
63
|
+
- **错误行为**:PRD草稿完成后直接标记S3阶段完成
|
|
64
|
+
- **正确行为**:PRD草稿完成后等待用户查看,确认后继续S2阶段的后续步骤
|
|
65
|
+
|
|
43
66
|
调用 `/ce-brainstorm`(mode: orchestrated)产出 PRD 草稿;**冻结前派 `prd-completeness-reviewer` 子代理做 PRD 完整性评审**(v0.15.0,管"说得全不全");原型循环由编排层直接编排(prototype skill 内部编排产出 → prototype-reviewer 自动评审 → 人工评审 → 冻结);冻结语义为 `frozen_downstream`(迭代内变更不升版)。反馈环路检查点:scope 是否合理。详见 `references/s2-prd-prototype-loop.md`。
|
|
44
67
|
|
|
45
68
|
### S3: 计划阶段
|
|
46
69
|
**入口一次性问定计划模式**(业务/一人公司),调用 `/ce-plan`(`pipeline_mode: orchestrator` + `plan_mode: business|solo`,跳过仪式开销、保留 repo research + change splitting + 依赖 DAG + 技术方向)产出 `prd/vN/plan.md`。plan 只到产品级策略 + 高阶技术设计,**不含接口清单**(属各 change 的 spec-writer)。反馈环路检查点:plan 是否暴露 PRD scope 问题(是→回退 S2)。详见 `references/s3-plan-pipeline.md`。
|
|
47
70
|
|
|
48
71
|
### S4: 拆分验证与分发
|
|
49
|
-
|
|
72
|
+
|
|
73
|
+
**⛔ MANDATORY:执行S4阶段前,必须先读取 `references/s4-split-validate.md`**
|
|
74
|
+
|
|
75
|
+
**S4 步骤清单(必须按顺序执行,不可跳过)**:
|
|
76
|
+
|
|
77
|
+
- [ ] **Step 1: 拆分质量审计**(必选门禁,不可跳过)
|
|
78
|
+
- 调用 `change-split-auditor` agent 对 plan.md 做拆分质量审计
|
|
79
|
+
- 质量维度:覆盖矩阵 / DAG 无环 / 粒度均衡 / 字段完整 / 拆分维度合规(D5 硬门禁)
|
|
80
|
+
- **verdict = PASS 是后续步骤的硬前置条件**
|
|
81
|
+
- verdict = FAIL → 必须回退 S3 调整拆分后重新审计,**不可绕过直接创建 change**
|
|
82
|
+
|
|
83
|
+
- [ ] **Step 2: 反馈环路检查点**
|
|
84
|
+
- 依赖图是否可执行?粒度是否合理?
|
|
85
|
+
- **否** → 回退 S3 调整拆分策略(详见 `references/feedback-loops.md`)
|
|
86
|
+
- **是** → 继续
|
|
87
|
+
|
|
88
|
+
- [ ] **Step 3: 创建 change 脚手架**
|
|
89
|
+
- 为每个 change 执行 `tf state init changes/<change-name>`
|
|
90
|
+
- 验证 `.team-flow.yaml` 已创建在 `changes/<change-name>/` 下
|
|
91
|
+
- ⚠️ 路径约束:项目根 `changes/`,非 `.team-flow/` 或 `specs/`
|
|
92
|
+
|
|
93
|
+
- [ ] **Step 3.5: 落盘 change-brief.md**(产品级→变更级交接物)
|
|
94
|
+
- 为每个 change 写 `changes/<change-name>/change-brief.md`(已存在则覆盖更新)
|
|
95
|
+
- 必须包含 YAML frontmatter(见下方规范)
|
|
96
|
+
- 验证文件存在且格式正确
|
|
97
|
+
|
|
98
|
+
- [ ] **Step 4: 写入 change_dag**
|
|
99
|
+
- 更新 `.team-flow/requirements/<req-id>/orchestrator.yaml` 的 `change_dag` 字段
|
|
100
|
+
- 格式规范:`[{id, change_dir, state_file, depends_on, priority, parallel_group, status}]`
|
|
101
|
+
- **同步更新** orchestrator.yaml 顶层 `workflow_phase` 为 `s4_split`(单一真相源)
|
|
102
|
+
|
|
103
|
+
- [ ] **Step 5: 分发**
|
|
104
|
+
- 告知用户各 change 已就绪及执行顺序建议
|
|
105
|
+
- 示例:`Change C1 已就绪,运行 /workflow-start 进入变更级流程。执行顺序:C1 → (C2 ∥ C3) → C4`
|
|
106
|
+
|
|
107
|
+
**S4 完成校验(必须全部通过才能标记 completed)**:
|
|
108
|
+
|
|
109
|
+
1. ✅ change-split-auditor verdict = PASS(审计报告已生成)
|
|
110
|
+
2. ✅ 所有 change 目录存在于 `changes/` 下(非 `.team-flow/`)
|
|
111
|
+
3. ✅ 每个 change 目录包含 `.team-flow.yaml`(`tf state init` 已执行)
|
|
112
|
+
4. ✅ 每个 change 目录包含 `change-brief.md`(含 YAML frontmatter)
|
|
113
|
+
5. ✅ orchestrator.yaml 的 `change_dag` 已填充(格式正确)
|
|
114
|
+
6. ✅ orchestrator.yaml 顶层 `workflow_phase` 已更新为 `s4_split`
|
|
115
|
+
|
|
116
|
+
**change-brief.md 规范(v0.27.0 强化)**:
|
|
117
|
+
|
|
118
|
+
必要字段(YAML frontmatter):
|
|
119
|
+
```yaml
|
|
120
|
+
upstream_source: orchestrator # orchestrator | manual | null
|
|
121
|
+
upstream_req_id: <req-id> # 对应 requirement ID
|
|
122
|
+
upstream_plan_ref: prd/vN/plan.md # hotfix/快速通道为 null
|
|
123
|
+
upstream_change_id: C2 # 对应 change_dag.id
|
|
124
|
+
plan_hash: sha256:<plan.md 内容摘要> # 检测产品层改动后变更层未同步
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
内容段:Scope / 约束 / AC 列表(取自 auditor 报告 Dim1 覆盖矩阵)/ 全局技术方向(指针,非完整设计)/ PRD & plan 引用
|
|
128
|
+
|
|
129
|
+
**⛔ 反模式(禁止)**:
|
|
130
|
+
- 使用 CLAUDE.md 替代 change-brief.md(team-flow 从不读取 CLAUDE.md)
|
|
131
|
+
- 在 change-brief 中写完整文件清单(这是 spec-writer 的职责,不属于编排层)
|
|
132
|
+
- 省略 YAML frontmatter
|
|
133
|
+
|
|
134
|
+
**workflow_phase 同步规则**:
|
|
135
|
+
- **单一真相源**:`orchestrator.yaml` 顶层 `workflow_phase` 字段
|
|
136
|
+
- **阶段转换时**:必须同步更新顶层 `workflow_phase` + 对应 phase 子节点的 `status`
|
|
137
|
+
- **registry.yaml**:引用 `orchestrator.yaml` 的 `workflow_phase`,不独立维护
|
|
50
138
|
|
|
51
139
|
### S5: 全局监控(change ≥ 2 必选)
|
|
52
140
|
跟踪各 change 进度;cross-change-consistency-checker 检测跨 change 冲突;change closing 时复利晋升;必要时触发动态重规划。详见 `references/s5-monitoring.md`。
|