@tea-agent/loop-agent 0.26.5-beta.2 → 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/AGENTS.md +2 -2
- package/CHANGELOG.md +29 -0
- package/README.md +13 -23
- package/dist/application/dag/args.js +7 -7
- package/dist/application/dag/generate-task-dag.js +2 -2
- package/dist/application/dag/run-dag.js +3 -4
- package/dist/application/dag/validate-dag.js +1 -1
- package/dist/application/task-lifecycle/advance.js +845 -0
- package/dist/application/task-lifecycle/gates.js +80 -0
- package/dist/application/task-lifecycle/index.js +7 -0
- package/dist/application/task-lifecycle/observe.js +395 -0
- package/dist/application/task-lifecycle/plan-transitions.js +224 -0
- package/dist/application/task-lifecycle/recommendations.js +180 -0
- package/dist/application/task-lifecycle/record.js +73 -0
- package/dist/application/task-lifecycle/types.js +1 -0
- package/dist/cli/command-definitions.js +14 -111
- package/dist/cli/help.js +6 -7
- package/dist/cli/program.js +26 -90
- package/dist/cli/update/policy.js +0 -1
- package/dist/commands/dag-final-verification.js +1 -1
- package/dist/commands/dag-init-hybrid.js +1 -1
- package/dist/commands/delegate.js +2 -2
- package/dist/commands/init.js +21 -19
- package/dist/commands/run-dag-progress.js +1 -1
- package/dist/commands/status.js +18 -17
- package/dist/commands/study-init.js +2 -2
- package/dist/commands/task-advance.js +335 -0
- package/dist/commands/task-contract.js +3 -5
- package/dist/commands/task-source-prepare.js +9 -4
- package/dist/commands/task-status.js +133 -0
- package/dist/governance/manifest-types.js +2 -2
- package/dist/shared/operator/capabilities.js +1358 -243
- package/dist/task/contract/adopt.js +1 -1
- package/dist/task/contract/apply.js +1 -1
- package/dist/task/contract/import-revision.js +1 -1
- package/dist/task/contract/recover.js +2 -2
- package/dist/task/read-model.js +18 -23
- package/dist/task/runtime.js +1 -1
- package/dist/task/source-prepare/completeness.js +1 -1
- package/dist/task/source-prepare/parse-intent.js +6 -1
- package/dist/task/source-prepare/prepare.js +23 -20
- package/dist/worker/console/operator-actions.js +288 -95
- package/dist/worker/console/recovery-cta.js +4 -4
- package/dist/worker/console/static/assets/{index-CSRIhuzh.js → index-CNO7n6qB.js} +1 -1
- package/dist/worker/console/static/index.html +1 -1
- package/dist/worker/materialize/harness-task-materializer.js +6 -5
- package/dist/worker/run-task/run-task.js +204 -112
- package/dist/worker/runner/run-ready.js +1 -1
- package/dist/workflows/dag/frontend-implementation-contract.js +6 -72
- package/dist/workflows/dag/frontend-prewrite-gate.js +4 -17
- package/dist/workflows/dag/init-hybrid.js +11 -66
- package/docs/templates/evaluation/agents-map-slim-v1.md +1 -1
- package/docs/templates/evaluation/agents-map-verbose-v0.md +3 -3
- package/docs/templates/harness.schema.json +2 -2
- package/docs/templates/init-managed-agents.md +13 -16
- package/docs/templates/production-readiness-checklist.md +3 -3
- package/harness.json +4 -4
- package/package.json +1 -1
- package/scripts/kb-bootstrap-init-skeleton.sh +2 -1
- package/scripts/kb-graph-incremental-prepare.mjs +2 -2
- package/skills/loop-agent/SKILL.md +18 -13
- package/skills/loop-agent/references/README.md +1 -1
- package/skills/loop-agent/references/command-reference.md +55 -84
- package/skills/loop-agent/references/harness-policy.md +19 -23
- package/skills/loop-agent/references/hybrid-dag.md +31 -33
- package/skills/loop-agent/references/long-running-loop.md +2 -2
- package/skills/loop-agent/references/one-shot-runs.md +4 -5
- package/skills/loop-agent/references/orchestrator-and-interventions.md +3 -3
- package/skills/loop-agent/references/post-implementation-and-patterns.md +4 -4
- package/skills/loop-agent/references/source-and-plan-practice.md +45 -51
- package/skills/loop-agent/references/task-workflow.md +14 -15
|
@@ -25,7 +25,7 @@ main session 是 decision-maker 与 scheduler,**不是** implementer。稀缺
|
|
|
25
25
|
|
|
26
26
|
## 入口选择
|
|
27
27
|
|
|
28
|
-
**Agent DAG**(`
|
|
28
|
+
**Agent DAG**(`task advance` → review/writeSet → `dag execute`)为默认,用于 autonomous implementation、workflow/harness/docs governance 变更、multi-file work,或任何受益于多 executor、parallel scout、显式 write policy、shell evidence、review gate、Decision Gate 的工作。
|
|
29
29
|
|
|
30
30
|
**supervised Agent DAG** 用于 `governanceProfile=supervised`,或工作触及 loop-agent runtime、scripts/CI、schema/public contract、多个 exclusive writer、repair flow 或 high-cost path。
|
|
31
31
|
|
|
@@ -129,7 +129,7 @@ main session 编排;不是默认 implementer。in-flight run 期间:
|
|
|
129
129
|
|
|
130
130
|
好例子:
|
|
131
131
|
|
|
132
|
-
- 修 DAG JSON path / schema typo 后 `dag validate` + `
|
|
132
|
+
- 修 DAG JSON path / schema typo 后 `dag validate` + `dag execute`。
|
|
133
133
|
- 修正 doc index link 或 typo。
|
|
134
134
|
- 删除明显 out-of-scope 的生成 scratch。
|
|
135
135
|
- 补全 `source/执行约束.md` 中的 allowedPaths 列表后 regenerate DAG。
|
|
@@ -149,7 +149,7 @@ main session 编排;不是默认 implementer。in-flight run 期间:
|
|
|
149
149
|
1. dag doctor / dag report / status
|
|
150
150
|
2. 分类失败;需要时 reconcile-run 或 human gate
|
|
151
151
|
3. 仅当 source/DAG 包错误时最小修正元数据
|
|
152
|
-
4. dag validate →
|
|
152
|
+
4. dag validate → dag execute / worker 重试
|
|
153
153
|
5. shell verification
|
|
154
154
|
6. 记录 evidence;禁止主会话实现收尾
|
|
155
155
|
```
|
|
@@ -27,12 +27,12 @@ DAG run、promotion、closeout 和最终验证完成后:
|
|
|
27
27
|
|
|
28
28
|
```
|
|
29
29
|
1. new-task <id>
|
|
30
|
-
2. 有 PRD 文件:
|
|
30
|
+
2. 有 PRD 文件:task advance --prd + 工程边界 flags(默认不手写两 source)
|
|
31
31
|
3. 非微小:plan create(或挂到已有 active plan)
|
|
32
|
-
4.
|
|
32
|
+
4. task advance <id> --profile auto --strict-models
|
|
33
33
|
5. dag validate --dag .harness/tasks/<id>/dag.json --strict-models --strict-governance
|
|
34
|
-
6.
|
|
35
|
-
7.
|
|
34
|
+
6. dag execute --dag .harness/tasks/<id>/dag.json --cwd <repo-root>
|
|
35
|
+
7. task advance (promotion) / closeout / final verification
|
|
36
36
|
8. 有 plan:plan complete
|
|
37
37
|
```
|
|
38
38
|
|
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
# Source 与 Exec-plan 最佳实践
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
很多用户只跑最短 runtime 命令,**漏掉** PRD 归档纪律与 `plan create`。二者**不是** `task advance` 的硬依赖,但在「有原始 PRD / 非微小实现」场景下应成为默认纪律。本文给出**何时用、何时可跳、命令顺序与案例**。
|
|
4
4
|
|
|
5
|
-
相关命令细节:`command-reference.md`(
|
|
5
|
+
相关命令细节:`command-reference.md`(task advance / plan / status)。
|
|
6
6
|
Task 目录布局:`task-workflow.md`。
|
|
7
7
|
仓库治理全文:目标仓 `governanceRoot` 下 `feature-workflow.md`(若有)。
|
|
8
8
|
|
|
9
9
|
## 先分清三层
|
|
10
10
|
|
|
11
|
-
| 层 | 命令 / 路径 | 作用 |
|
|
11
|
+
| 层 | 命令 / 路径 | 作用 | 主路径是否强制 |
|
|
12
12
|
| --- | --- | --- | --- |
|
|
13
|
-
| Source 事实 | `
|
|
14
|
-
| Source 契约 | `task
|
|
13
|
+
| Source 事实 | `task advance --prd` → `source/references/*` + `source-manifest.json` | 原始 PRD **不可变**归档 | 否(有 PRD 文件时**强烈推荐**) |
|
|
14
|
+
| Source 契约 | `task advance` 投影 `source/需求.md`、`执行约束.md` + managed paths | DAG 生成与验收真源 | **是**(至少 `需求.md`;默认不手写) |
|
|
15
15
|
| Exec-plan | `plan create` / `plan complete` / `plan check` | 仓库级计划索引与交接 | 否(**非微小**推荐) |
|
|
16
|
-
|
|
|
16
|
+
| Task lifecycle | `task advance` → writeSet gate → `--approve-gate` → `task status` | 可执行编排与证据 | **是**(常规实现) |
|
|
17
17
|
|
|
18
18
|
规则记忆:
|
|
19
19
|
|
|
20
|
-
1. **`
|
|
21
|
-
2. **`
|
|
20
|
+
1. **`task advance` 在有 `--prd` 时会归档 PRD,但不自动绑 plan。**
|
|
21
|
+
2. **`task advance` 主要消费派生 `需求.md`**;会校验 plan **索引一致性**,但不要求当前 task 已有 active plan。
|
|
22
22
|
3. 冲突时:**`source/references/*`(原始)> 派生 `需求.md` > 聊天口述。**
|
|
23
23
|
|
|
24
|
-
##
|
|
24
|
+
## 决策:何时使用 `--prd`(原 import-prd 纪律)
|
|
25
25
|
|
|
26
26
|
### 应该用(默认「有就 import」)
|
|
27
27
|
|
|
@@ -30,11 +30,11 @@ Task 目录布局:`task-workflow.md`。
|
|
|
30
30
|
- Worker / 多人协作:后续 review 必须三方对照 references + 需求.md + 实现。
|
|
31
31
|
- 目标仓 `ai_workspace/loop-agent/` 或 `docs/` 里已有权威 PRD/spec,任务只是执行切片。
|
|
32
32
|
|
|
33
|
-
### 可以跳过
|
|
33
|
+
### 可以跳过 PRD 归档
|
|
34
34
|
|
|
35
35
|
- 真正微小:单文件 typo、一行配置、纯脚本命令说明,**没有**独立需求文档。
|
|
36
|
-
- 用户只在聊天里给了 3~5
|
|
37
|
-
- 已有 task 的 `source/references/` 与 manifest 完好,本次只是 re-run
|
|
36
|
+
- 用户只在聊天里给了 3~5 条验收点,可用 `--from-text` 并标明「来源:会话 YYYY-MM-DD」。
|
|
37
|
+
- 已有 task 的 `source/references/` 与 manifest 完好,本次只是 re-run lifecycle。
|
|
38
38
|
|
|
39
39
|
### 反模式
|
|
40
40
|
|
|
@@ -45,19 +45,17 @@ Task 目录布局:`task-workflow.md`。
|
|
|
45
45
|
### 推荐顺序(有 PRD 时)
|
|
46
46
|
|
|
47
47
|
```bash
|
|
48
|
-
loop-agent
|
|
49
|
-
|
|
50
|
-
|
|
48
|
+
loop-agent task advance <task-id> "简短标题" \
|
|
49
|
+
--prd <path-to-original-prd.md> \
|
|
50
|
+
--allowed-path "<glob>" \
|
|
51
|
+
--json
|
|
51
52
|
# 默认无 LLM 写 source;工程边界用 flags 显式给出
|
|
52
|
-
#
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
loop-agent dag run-task <task-id> --profile auto --strict-models
|
|
56
|
-
loop-agent dag validate --dag .harness/tasks/<task-id>/dag.json --strict-models --strict-governance
|
|
57
|
-
loop-agent run-dag --dag .harness/tasks/<task-id>/dag.json --cwd <repo-root>
|
|
53
|
+
# 内部投影:source/需求.md、source/执行约束.md、task.json paths/verify
|
|
54
|
+
loop-agent task advance <task-id> --approve-gate "write-set-review:<digest>" --json
|
|
55
|
+
loop-agent task status <task-id> --json
|
|
58
56
|
```
|
|
59
57
|
|
|
60
|
-
|
|
58
|
+
首次 advance 后用 `task status` 确认 lifecycle / gate;不要再拼已删除的 import-prd / prepare / run-task 命令串。
|
|
61
59
|
|
|
62
60
|
## 决策:何时 `plan create`
|
|
63
61
|
|
|
@@ -86,21 +84,17 @@ loop-agent run-dag --dag .harness/tasks/<task-id>/dag.json --cwd <repo-root>
|
|
|
86
84
|
```bash
|
|
87
85
|
loop-agent plan create <plan-id> "<title>"
|
|
88
86
|
# 在 plan 中写清范围、非目标、验证、允许路径(人类/agent 共读)
|
|
89
|
-
loop-agent
|
|
90
|
-
loop-agent
|
|
91
|
-
|
|
92
|
-
loop-agent dag run-task <task-id> --profile auto --strict-models
|
|
93
|
-
# … validate → run-dag → promote-run → closeout …
|
|
87
|
+
loop-agent task advance <task-id> "切片标题" --prd <prd> --allowed-path "<glob>" --json
|
|
88
|
+
loop-agent task advance <task-id> --approve-gate "write-set-review:<digest>" --json
|
|
89
|
+
loop-agent task status <task-id> --json
|
|
94
90
|
loop-agent plan complete <plan-id> --summary "结果导向摘要 + 验证证据"
|
|
95
91
|
```
|
|
96
92
|
|
|
97
93
|
微小 escape hatch(须在 handoff / plan 或 task 备注写明边界):
|
|
98
94
|
|
|
99
95
|
```bash
|
|
100
|
-
loop-agent
|
|
101
|
-
|
|
102
|
-
loop-agent dag run-task <task-id> --profile auto --strict-models
|
|
103
|
-
# …
|
|
96
|
+
loop-agent task advance <task-id> "微小修复" --from-text "..." --allowed-path "<glob>" --json
|
|
97
|
+
loop-agent task advance <task-id> --approve-gate "write-set-review:<digest>" --json
|
|
104
98
|
```
|
|
105
99
|
|
|
106
100
|
## 实践案例
|
|
@@ -108,55 +102,55 @@ loop-agent dag run-task <task-id> --profile auto --strict-models
|
|
|
108
102
|
### 案例 A — 用户丢来一份 PRD 文件(默认完整路径)
|
|
109
103
|
|
|
110
104
|
**信号**:`帮我按这个 PRD 实现…` + 附件/路径。
|
|
111
|
-
**做法**:非微小则先 `plan create`(或复用 active plan)→
|
|
105
|
+
**做法**:非微小则先 `plan create`(或复用 active plan)→ **`task advance --prd`** → 审查 writeSet gate → `--approve-gate`。
|
|
112
106
|
**验收**:`source/references/` 有原文;manifest hash 在;review 能三方对照。
|
|
113
107
|
|
|
114
|
-
### 案例 B — 聊天里三句话小需求(可跳过
|
|
108
|
+
### 案例 B — 聊天里三句话小需求(可跳过 PRD + plan)
|
|
115
109
|
|
|
116
110
|
**信号**:`把 X 按钮文案改成 Y`,单文件。
|
|
117
|
-
**做法**:`
|
|
118
|
-
|
|
111
|
+
**做法**:`task advance --from-text` → approve gate…
|
|
112
|
+
**不要**:为了「流程完整」空跑不存在的 PRD 文件步骤或堆一个空洞 plan。
|
|
119
113
|
|
|
120
114
|
### 案例 C — 源仓改 CLI 默认行为(必须 plan,PRD 视情况)
|
|
121
115
|
|
|
122
116
|
**信号**:行为变更、CHANGELOG、skills/init 多表面。
|
|
123
|
-
**做法**:**`plan create`** 先冻结契约与工作块 → 按块 `
|
|
124
|
-
**验收**:active/completed 索引与 plan 正文一致;`plan check` / `
|
|
117
|
+
**做法**:**`plan create`** 先冻结契约与工作块 → 按块 `task advance` → 定向验证 → `plan complete`。
|
|
118
|
+
**验收**:active/completed 索引与 plan 正文一致;`plan check` / `task advance` 索引 preflight 不红。
|
|
125
119
|
|
|
126
120
|
### 案例 D — agent-worker / Feature 已 materialize source_docs
|
|
127
121
|
|
|
128
122
|
**信号**:TaskSpec 已把 `source_docs` 拷进 `source/references/`。
|
|
129
|
-
**做法**:通常 **不必再 import
|
|
123
|
+
**做法**:通常 **不必再 import 同一文件**;检查 references + 派生 `需求.md` 顶部「冲突以 references 为准」→ 补边界 → `task advance`。
|
|
130
124
|
**仍建议**:产品线级大功能在 Feature / 仓库层有 plan 或 Feature Packet 记录。
|
|
131
125
|
|
|
132
126
|
### 案例 E — 用户说「loop-agent 帮我完成 XXX」无附件
|
|
133
127
|
|
|
134
128
|
**信号**:强路由进 DAG,但无 PRD 路径。
|
|
135
|
-
**做法**:主会话 **先问清**是否有 PRD 文件;有则
|
|
136
|
-
**禁止**:主会话直接写业务代码代替
|
|
129
|
+
**做法**:主会话 **先问清**是否有 PRD 文件;有则 `--prd`;无则 `--from-text` 写入共识并标来源 → 判断微小 vs 非微小决定是否 `plan create` → 再 `task advance`。
|
|
130
|
+
**禁止**:主会话直接写业务代码代替 lifecycle。
|
|
137
131
|
|
|
138
132
|
## 宿主 agent 检查清单(编排时)
|
|
139
133
|
|
|
140
|
-
在第一次 `
|
|
134
|
+
在第一次 `task advance` 前快速自问:
|
|
141
135
|
|
|
142
|
-
1. 是否存在用户/仓库原始需求文件?→ **有则
|
|
143
|
-
2. `source/需求.md` 是否含目标、非目标、可验证验收?→
|
|
144
|
-
3. `allowedPaths` / `forbiddenPaths` 是否已结构化?→
|
|
136
|
+
1. 是否存在用户/仓库原始需求文件?→ **有则 `--prd`**。
|
|
137
|
+
2. `source/需求.md` 是否含目标、非目标、可验证验收?→ **无则由 advance 投影或补 flags**。
|
|
138
|
+
3. `allowedPaths` / `forbiddenPaths` 是否已结构化?→ **无则先写 flags**。
|
|
145
139
|
4. 是否非微小 / 跨会话 / 高 blast-radius?→ **`plan create` 或更新已有 active plan**。
|
|
146
140
|
5. 是否仅聊天约束?→ **落盘到 source 或 plan**,不要只留在对话。
|
|
147
141
|
|
|
148
|
-
##
|
|
142
|
+
## 与「主路径」文档的关系
|
|
149
143
|
|
|
150
|
-
`SKILL.md` / `command-reference.md` 的
|
|
144
|
+
`SKILL.md` / `command-reference.md` 的 **主路径** 仍是最短 runtime 闭环(便于抄命令)。
|
|
151
145
|
**系统化默认**应读作:
|
|
152
146
|
|
|
153
147
|
```text
|
|
154
148
|
[非微小?] plan create(或复用 active plan)
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
149
|
+
task advance [--prd | --from-text] + 工程边界 flags
|
|
150
|
+
审查 writeSet gate
|
|
151
|
+
task advance --approve-gate
|
|
152
|
+
task status
|
|
159
153
|
[有 plan?] plan complete
|
|
160
154
|
```
|
|
161
155
|
|
|
162
|
-
不要把
|
|
156
|
+
不要把 PRD 归档 / `plan create` 伪造成「无文件也必须执行」的假步骤;用本节决策表选择,而不是一律省略。
|
|
@@ -4,20 +4,19 @@
|
|
|
4
4
|
|
|
5
5
|
## 当前执行入口
|
|
6
6
|
|
|
7
|
-
所有需要可恢复、可验证、可交接的实现工作都走 DAG
|
|
7
|
+
所有需要可恢复、可验证、可交接的实现工作都走 `task advance` lifecycle(内部驱动 Agent DAG):
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
|
-
loop-agent new-task <task-id> "Task Title"
|
|
11
|
-
# 推荐:详细 PRD → import → prepare(无需手写两 source)
|
|
12
|
-
loop-agent import-prd <task-id> --file <prd>
|
|
13
|
-
loop-agent task source prepare <task-id> --use-imported-prd --allowed-path "<glob>" --apply --json
|
|
14
10
|
# 非微小:loop-agent plan create <plan-id> "<title>"(可与 task 解耦,见 source-and-plan-practice.md)
|
|
15
|
-
loop-agent
|
|
16
|
-
|
|
17
|
-
|
|
11
|
+
loop-agent task advance <task-id> "Task Title" \
|
|
12
|
+
--prd <prd> \
|
|
13
|
+
--allowed-path "<glob>" \
|
|
14
|
+
--json
|
|
15
|
+
loop-agent task advance <task-id> --approve-gate "write-set-review:<digest>" --json
|
|
16
|
+
loop-agent task status <task-id> --json
|
|
18
17
|
```
|
|
19
18
|
|
|
20
|
-
默认 DAG
|
|
19
|
+
默认 DAG 草稿仍为 `.harness/tasks/<task-id>/dag.json`。repo-relative 示例用 `/`;Windows 由 Node 解析本地路径。何时必须 PRD / `plan create`:见 `source-and-plan-practice.md`。
|
|
21
20
|
|
|
22
21
|
当目标仓库是 loop-agent 本仓库时,`loop-agent` 命令必须来自 npm 上已发布的安装包。首次安装或有意升级可用 `@tea-agent/loop-agent@latest`,但一次自举任务启动后不要中途升级控制器,并记录 `npm list -g @tea-agent/loop-agent --depth=0` 显示的实际版本。不要用当前工作区的 `npm link` 或 `npm run dev` 控制会改动 CLI、DAG runtime、executor、package metadata 或 build output 的任务;源码开发和 focused debugging 才使用 `npm run dev -- <args>`。
|
|
23
22
|
|
|
@@ -25,22 +24,22 @@ loop-agent run-dag --dag .harness/tasks/<task-id>/dag.json --cwd <repo-root>
|
|
|
25
24
|
|
|
26
25
|
## Source Materials
|
|
27
26
|
|
|
28
|
-
`
|
|
27
|
+
`task advance` 创建 task 后至少维护:
|
|
29
28
|
|
|
30
29
|
```text
|
|
31
30
|
.harness/tasks/<task-id>/
|
|
32
31
|
source/
|
|
33
32
|
references/ # 原始 PRD / design / acceptance(不可变)
|
|
34
|
-
source-manifest.json #
|
|
33
|
+
source-manifest.json # task advance --prd 写入的 hash 清单
|
|
35
34
|
需求.md # 派生执行契约
|
|
36
35
|
执行约束.md
|
|
37
36
|
task.json
|
|
38
37
|
```
|
|
39
38
|
|
|
40
|
-
- 用户原始 PRD 用 `
|
|
41
|
-
- 默认用 `task
|
|
42
|
-
- 无独立 PRD 的微小任务可用 `task
|
|
43
|
-
- 若 `ai_workspace/loop-agent/` 已有权威 plan/spec/PRD,优先 `
|
|
39
|
+
- 用户原始 PRD 用 `task advance --prd <prd>` 归档到 `source/references/`,禁止 AI 改写。**有文件就归档**。
|
|
40
|
+
- 默认用 `task advance`(带 `--allowed-path` / `--verify`)投影 `需求.md` / `执行约束.md` 与 managed paths;**不要**默认让 LLM/主会话手写两 source。
|
|
41
|
+
- 无独立 PRD 的微小任务可用 `task advance --from-text ...` escape hatch(见 `source-and-plan-practice.md`)。
|
|
42
|
+
- 若 `ai_workspace/loop-agent/` 已有权威 plan/spec/PRD,优先 `task advance --prd` 归档并派生薄契约;避免把长 PRD 直接改写成唯一 source。
|
|
44
43
|
- 仓库级 exec-plan(`plan create`)与 harness task **解耦**:非微小实现应有 plan 或复用 active plan;微小任务可不建 plan。
|
|
45
44
|
- Worker / TaskSpec materialize 路径会把 `source_docs` 复制到 `source/references/`,并在派生 `需求.md` 顶部声明“冲突以 references 为准”;`acceptance_refs` 应展开为短摘要而不只写 ID。
|
|
46
45
|
- review 节点必须三方对照:`source/references/*`(尤其 requirement/acceptance)、派生 `需求.md`、以及实现/验证证据。
|