@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.
Files changed (71) hide show
  1. package/AGENTS.md +2 -2
  2. package/CHANGELOG.md +29 -0
  3. package/README.md +13 -23
  4. package/dist/application/dag/args.js +7 -7
  5. package/dist/application/dag/generate-task-dag.js +2 -2
  6. package/dist/application/dag/run-dag.js +3 -4
  7. package/dist/application/dag/validate-dag.js +1 -1
  8. package/dist/application/task-lifecycle/advance.js +845 -0
  9. package/dist/application/task-lifecycle/gates.js +80 -0
  10. package/dist/application/task-lifecycle/index.js +7 -0
  11. package/dist/application/task-lifecycle/observe.js +395 -0
  12. package/dist/application/task-lifecycle/plan-transitions.js +224 -0
  13. package/dist/application/task-lifecycle/recommendations.js +180 -0
  14. package/dist/application/task-lifecycle/record.js +73 -0
  15. package/dist/application/task-lifecycle/types.js +1 -0
  16. package/dist/cli/command-definitions.js +14 -111
  17. package/dist/cli/help.js +6 -7
  18. package/dist/cli/program.js +26 -90
  19. package/dist/cli/update/policy.js +0 -1
  20. package/dist/commands/dag-final-verification.js +1 -1
  21. package/dist/commands/dag-init-hybrid.js +1 -1
  22. package/dist/commands/delegate.js +2 -2
  23. package/dist/commands/init.js +21 -19
  24. package/dist/commands/run-dag-progress.js +1 -1
  25. package/dist/commands/status.js +18 -17
  26. package/dist/commands/study-init.js +2 -2
  27. package/dist/commands/task-advance.js +335 -0
  28. package/dist/commands/task-contract.js +3 -5
  29. package/dist/commands/task-source-prepare.js +9 -4
  30. package/dist/commands/task-status.js +133 -0
  31. package/dist/governance/manifest-types.js +2 -2
  32. package/dist/shared/operator/capabilities.js +1358 -243
  33. package/dist/task/contract/adopt.js +1 -1
  34. package/dist/task/contract/apply.js +1 -1
  35. package/dist/task/contract/import-revision.js +1 -1
  36. package/dist/task/contract/recover.js +2 -2
  37. package/dist/task/read-model.js +18 -23
  38. package/dist/task/runtime.js +1 -1
  39. package/dist/task/source-prepare/completeness.js +1 -1
  40. package/dist/task/source-prepare/parse-intent.js +6 -1
  41. package/dist/task/source-prepare/prepare.js +23 -20
  42. package/dist/worker/console/operator-actions.js +288 -95
  43. package/dist/worker/console/recovery-cta.js +4 -4
  44. package/dist/worker/console/static/assets/{index-CSRIhuzh.js → index-CNO7n6qB.js} +1 -1
  45. package/dist/worker/console/static/index.html +1 -1
  46. package/dist/worker/materialize/harness-task-materializer.js +6 -5
  47. package/dist/worker/run-task/run-task.js +204 -112
  48. package/dist/worker/runner/run-ready.js +1 -1
  49. package/dist/workflows/dag/frontend-implementation-contract.js +6 -72
  50. package/dist/workflows/dag/frontend-prewrite-gate.js +4 -17
  51. package/dist/workflows/dag/init-hybrid.js +11 -66
  52. package/docs/templates/evaluation/agents-map-slim-v1.md +1 -1
  53. package/docs/templates/evaluation/agents-map-verbose-v0.md +3 -3
  54. package/docs/templates/harness.schema.json +2 -2
  55. package/docs/templates/init-managed-agents.md +13 -16
  56. package/docs/templates/production-readiness-checklist.md +3 -3
  57. package/harness.json +4 -4
  58. package/package.json +1 -1
  59. package/scripts/kb-bootstrap-init-skeleton.sh +2 -1
  60. package/scripts/kb-graph-incremental-prepare.mjs +2 -2
  61. package/skills/loop-agent/SKILL.md +18 -13
  62. package/skills/loop-agent/references/README.md +1 -1
  63. package/skills/loop-agent/references/command-reference.md +55 -84
  64. package/skills/loop-agent/references/harness-policy.md +19 -23
  65. package/skills/loop-agent/references/hybrid-dag.md +31 -33
  66. package/skills/loop-agent/references/long-running-loop.md +2 -2
  67. package/skills/loop-agent/references/one-shot-runs.md +4 -5
  68. package/skills/loop-agent/references/orchestrator-and-interventions.md +3 -3
  69. package/skills/loop-agent/references/post-implementation-and-patterns.md +4 -4
  70. package/skills/loop-agent/references/source-and-plan-practice.md +45 -51
  71. 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**(`dag run-task` → review/writeSet → `run-dag`)为默认,用于 autonomous implementation、workflow/harness/docs governance 变更、multi-file work,或任何受益于多 executor、parallel scout、显式 write policy、shell evidence、review gate、Decision Gate 的工作。
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` + `run-dag`。
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 → run-dag / worker 重试
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 文件:import-prd → task source prepare --use-imported-prd --apply(默认不手写两 source)
30
+ 2. 有 PRD 文件:task advance --prd + 工程边界 flags(默认不手写两 source)
31
31
  3. 非微小:plan create(或挂到已有 active plan)
32
- 4. dag run-task <id> --profile auto --strict-models
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. run-dag --dag .harness/tasks/<id>/dag.json --cwd <repo-root>
35
- 7. promote-run / closeout / final verification
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
- 很多用户只跑「主路径 DAG」四步,**漏掉** `import-prd` `plan create`。二者**不是** `dag run-task` 的硬依赖,但在「有原始 PRD / 非微小实现」场景下应成为默认纪律。本文给出**何时用、何时可跳、命令顺序与案例**。
3
+ 很多用户只跑最短 runtime 命令,**漏掉** PRD 归档纪律与 `plan create`。二者**不是** `task advance` 的硬依赖,但在「有原始 PRD / 非微小实现」场景下应成为默认纪律。本文给出**何时用、何时可跳、命令顺序与案例**。
4
4
 
5
- 相关命令细节:`command-reference.md`(import-prd / plan / status)。
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
- | 层 | 命令 / 路径 | 作用 | 主路径 DAG 是否强制 |
11
+ | 层 | 命令 / 路径 | 作用 | 主路径是否强制 |
12
12
  | --- | --- | --- | --- |
13
- | Source 事实 | `import-prd` → `source/references/*` + `source-manifest.json` | 原始 PRD **不可变**归档 | 否(有 PRD 文件时**强烈推荐**) |
14
- | Source 契约 | `task source prepare --apply` 投影 `source/需求.md`、`执行约束.md` + managed paths | DAG 生成与验收真源 | **是**(至少 `需求.md`;默认不手写) |
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
- | DAG 运行时 | `dag run-task` → `dag validate` → `run-dag` | 可执行编排 | **是**(常规实现) |
16
+ | Task lifecycle | `task advance` → writeSet gate → `--approve-gate` → `task status` | 可执行编排与证据 | **是**(常规实现) |
17
17
 
18
18
  规则记忆:
19
19
 
20
- 1. **`new-task` 不自动 import-prd,也不自动绑 plan。**
21
- 2. **`dag run-task` 主要消费派生 `需求.md`**;会校验 plan **索引一致性**,但不要求当前 task 已有 active plan。
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
- ## 决策:何时 `import-prd`
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
- ### 可以跳过 import-prd
33
+ ### 可以跳过 PRD 归档
34
34
 
35
35
  - 真正微小:单文件 typo、一行配置、纯脚本命令说明,**没有**独立需求文档。
36
- - 用户只在聊天里给了 3~5 条验收点,且你当场写入 `需求.md` 并标明「来源:会话 YYYY-MM-DD」(仍建议短小、可验证)。
37
- - 已有 task 的 `source/references/` 与 manifest 完好,本次只是 re-run DAG
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 new-task <task-id> "简短标题"
49
- loop-agent import-prd <task-id> --file <path-to-original-prd.md> [--json]
50
- loop-agent task source prepare <task-id> --use-imported-prd --allowed-path "<glob>" --apply --json
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
- # .harness/tasks/<task-id>/source/需求.md
53
- # .harness/tasks/<task-id>/source/执行约束.md
54
- # 同步 task.json.allowedPaths / forbiddenPaths
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
- `import-prd` 后用 `status` / `instructions source` 确认 source readiness,再生成 DAG。
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 new-task <task-id> "切片标题"
90
- loop-agent import-prd <task-id> --file <prd>
91
- # 需求.md / 执行约束.md / task.json 边界
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 new-task <task-id> "微小修复"
101
- # 直接 需求.md(可选 import-prd)
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)→ `new-task` **`import-prd`** → 派生 `需求.md`(目标/非目标/AC,锚回 references)→ 路径边界 DAG。
105
+ **做法**:非微小则先 `plan create`(或复用 active plan)→ **`task advance --prd`** → 审查 writeSet gate`--approve-gate`。
112
106
  **验收**:`source/references/` 有原文;manifest hash 在;review 能三方对照。
113
107
 
114
- ### 案例 B — 聊天里三句话小需求(可跳过 import + plan)
108
+ ### 案例 B — 聊天里三句话小需求(可跳过 PRD + plan)
115
109
 
116
110
  **信号**:`把 X 按钮文案改成 Y`,单文件。
117
- **做法**:`new-task` → `需求.md`(写清唯一验收)→ `dag run-task`…
118
- **不要**:为了「流程完整」空跑 `import-prd`(无文件)或堆一个空洞 plan。
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`** 先冻结契约与工作块 → 按块 `new-task` → 有设计文档则 import → DAG → 定向验证 → `plan complete`。
124
- **验收**:active/completed 索引与 plan 正文一致;`plan check` / `dag run-task` 索引 preflight 不红。
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-prd** 同一文件;检查 references + 派生 `需求.md` 顶部「冲突以 references 为准」→ 补边界 → DAG。
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 文件;有则 import;无则把会话共识写入 `需求.md` 并标来源 → 判断微小 vs 非微小决定是否 `plan create` → 再 `dag run-task`。
136
- **禁止**:主会话直接写业务代码代替 DAG
129
+ **做法**:主会话 **先问清**是否有 PRD 文件;有则 `--prd`;无则 `--from-text` 写入共识并标来源 → 判断微小 vs 非微小决定是否 `plan create` → 再 `task advance`。
130
+ **禁止**:主会话直接写业务代码代替 lifecycle
137
131
 
138
132
  ## 宿主 agent 检查清单(编排时)
139
133
 
140
- 在第一次 `dag run-task` 前快速自问:
134
+ 在第一次 `task advance` 前快速自问:
141
135
 
142
- 1. 是否存在用户/仓库原始需求文件?→ **有则 `import-prd`**。
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
- ## 与「主路径 DAG」文档的关系
142
+ ## 与「主路径」文档的关系
149
143
 
150
- `SKILL.md` / `command-reference.md` 的 **主路径 DAG** 仍是最短 runtime 闭环(便于抄命令)。
144
+ `SKILL.md` / `command-reference.md` 的 **主路径** 仍是最短 runtime 闭环(便于抄命令)。
151
145
  **系统化默认**应读作:
152
146
 
153
147
  ```text
154
148
  [非微小?] plan create(或复用 active plan)
155
- new-task
156
- [有 PRD?] import-prd
157
- 派生 需求.md / 执行约束.md / task.json 路径边界
158
- dag run-task → validate → run-dag → promote/closeout
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
- 不要把 `import-prd` / `plan create` 伪造成「无文件也必须执行」的假步骤;用本节决策表选择,而不是一律省略。
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 dag run-task <task-id> --profile auto --strict-models
16
- loop-agent dag validate --dag .harness/tasks/<task-id>/dag.json --strict-models --strict-governance
17
- loop-agent run-dag --dag .harness/tasks/<task-id>/dag.json --cwd <repo-root>
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 草稿为 `.harness/tasks/<task-id>/dag.json`。repo-relative 示例用 `/`;Windows 由 Node 解析本地路径。何时必须 `import-prd` / `plan create`:见 `source-and-plan-practice.md`。
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
- `new-task` 后至少维护:
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 # import-prd 写入的 hash 清单
33
+ source-manifest.json # task advance --prd 写入的 hash 清单
35
34
  需求.md # 派生执行契约
36
35
  执行约束.md
37
36
  task.json
38
37
  ```
39
38
 
40
- - 用户原始 PRD 用 `loop-agent import-prd <task-id> --file <prd>` 归档到 `source/references/`,禁止 AI 改写。**有文件就 import**。
41
- - 默认用 `task source prepare --use-imported-prd --apply` 投影 `需求.md` / `执行约束.md` 与 managed paths;**不要**默认让 LLM/主会话手写两 source。
42
- - 无独立 PRD 的微小任务可用 `task source prepare --from-text ... --apply` escape hatch(见 `source-and-plan-practice.md`)。
43
- - 若 `ai_workspace/loop-agent/` 已有权威 plan/spec/PRD,优先 `import-prd` 复制,再 prepare 派生薄契约;避免把长 PRD 直接改写成唯一 source。
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`、以及实现/验证证据。