@tea-agent/loop-agent 0.8.0 → 0.10.0-alpha.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 (188) hide show
  1. package/AGENTS.md +10 -0
  2. package/CHANGELOG.md +101 -1
  3. package/README.md +69 -5
  4. package/dist/application/dag/args.js +13 -16
  5. package/dist/application/dag/generate-task-dag.js +32 -2
  6. package/dist/application/dag/run-dag.js +1 -27
  7. package/dist/application/dag/validate-dag.js +2 -2
  8. package/dist/application/loop/run-action.js +0 -4
  9. package/dist/cli/command-definitions.js +7 -11
  10. package/dist/cli/program.js +9 -21
  11. package/dist/commands/cursor-prompt.js +42 -82
  12. package/dist/commands/dag-approve.js +36 -0
  13. package/dist/commands/dag-reconcile-run.js +118 -0
  14. package/dist/commands/delegate.js +75 -77
  15. package/dist/commands/doctor.js +0 -18
  16. package/dist/commands/init.js +60 -40
  17. package/dist/commands/instructions.js +7 -10
  18. package/dist/commands/loop.js +4 -20
  19. package/dist/executors/config-core.js +0 -51
  20. package/dist/executors/dag-pi-executor.js +1 -1
  21. package/dist/executors/dag.js +0 -1
  22. package/dist/executors/index.js +0 -2
  23. package/dist/executors/model-routing.js +9 -9
  24. package/dist/executors/shell-executor.js +75 -9
  25. package/dist/governance/checks.js +6 -3
  26. package/dist/governance/manifest-types.js +33 -2
  27. package/dist/infrastructure/harness/loop-action-store.js +0 -3
  28. package/dist/records/harvest.js +2 -23
  29. package/dist/records/one-shot-runs.js +1 -1
  30. package/dist/shared/artifacts-core.js +24 -5
  31. package/dist/shared/output-truncation.js +37 -0
  32. package/dist/shared/package-metadata.js +353 -0
  33. package/dist/shared/reference-context.js +48 -22
  34. package/dist/{executors/cursor-executor.js → sidecars/cursor-prompt/executor.js} +2 -42
  35. package/dist/sidecars/cursor-prompt/index.js +3 -0
  36. package/dist/sidecars/cursor-prompt/stream.js +121 -0
  37. package/dist/task/config-types.js +30 -13
  38. package/dist/task/delegate.js +9 -21
  39. package/dist/task/runtime.js +2 -3
  40. package/dist/worker/cli.js +243 -0
  41. package/dist/worker/closeout/apply.js +73 -0
  42. package/dist/worker/closeout/preview.js +30 -0
  43. package/dist/worker/delivery/final-verification.js +194 -0
  44. package/dist/worker/delivery/git-transaction.js +354 -0
  45. package/dist/worker/delivery/package.js +502 -0
  46. package/dist/worker/feature/decision-loader.js +68 -0
  47. package/dist/worker/feature/discover.js +14 -0
  48. package/dist/worker/feature/next-action.js +74 -0
  49. package/dist/worker/feature/reducer.js +133 -0
  50. package/dist/worker/feature/review.js +502 -0
  51. package/dist/worker/feature/run.js +365 -0
  52. package/dist/worker/feature/types.js +1 -0
  53. package/dist/worker/follow-up/approve.js +270 -0
  54. package/dist/worker/follow-up/factory.js +234 -0
  55. package/dist/worker/follow-up/paths.js +25 -0
  56. package/dist/worker/follow-up/policy.js +26 -0
  57. package/dist/worker/follow-up/schema.js +93 -0
  58. package/dist/worker/follow-up/store.js +96 -0
  59. package/dist/worker/loop-agent/loop-agent-client.js +345 -101
  60. package/dist/worker/metrics/projector.js +139 -0
  61. package/dist/worker/observability/read-model.js +282 -15
  62. package/dist/worker/observe/paths.js +17 -5
  63. package/dist/worker/observe/routes.js +78 -20
  64. package/dist/worker/observe/server.js +8 -6
  65. package/dist/worker/observe/static/app.js +1045 -177
  66. package/dist/worker/observe/static/index.html +70 -43
  67. package/dist/worker/observe/static/styles.css +553 -610
  68. package/dist/worker/pool/run-store.js +14 -2
  69. package/dist/worker/pool/validation.js +59 -0
  70. package/dist/worker/preflight.js +49 -1
  71. package/dist/worker/report/morning-report.js +41 -6
  72. package/dist/worker/run-task/run-task.js +23 -13
  73. package/dist/worker/runner/run-ready.js +89 -11
  74. package/dist/worker/task-spec/schema.js +0 -1
  75. package/dist/workflows/dag/convergence/controller.js +1 -1
  76. package/dist/workflows/dag/executor-registry.js +0 -2
  77. package/dist/workflows/dag/governance-profile.js +10 -0
  78. package/dist/workflows/dag/init-hybrid.js +601 -26
  79. package/dist/workflows/dag/lifecycle.js +146 -0
  80. package/dist/workflows/dag/node-execution.js +64 -7
  81. package/dist/workflows/dag/prompt.js +16 -0
  82. package/dist/workflows/dag/report.js +2 -0
  83. package/dist/workflows/dag/runner.js +176 -119
  84. package/dist/workflows/dag/scheduler.js +7 -2
  85. package/dist/workflows/dag/skill-snapshot.js +527 -0
  86. package/dist/workflows/dag/types.js +45 -9
  87. package/dist/workflows/dag/validate.js +5 -8
  88. package/dist/workflows/loop/actions/dag-action.js +0 -2
  89. package/dist/workflows/loop/actions/shared.js +1 -1
  90. package/dist/workflows/loop/actions.js +14 -31
  91. package/dist/workflows/loop/benchmark.js +1 -1
  92. package/dist/workflows/loop/index.js +1 -1
  93. package/dist/workflows/loop/policy/auto-policy.js +22 -14
  94. package/dist/workflows/loop/policy/path-patterns.js +13 -0
  95. package/docs/README.md +35 -12
  96. package/docs/agent-dag-recovery-playbook.md +1 -1
  97. package/docs/architecture/README.md +26 -0
  98. package/docs/architecture/dag-execution.md +134 -0
  99. package/docs/architecture/evolution.md +52 -0
  100. package/docs/architecture/facts-and-state.md +58 -0
  101. package/docs/architecture/runtime-boundaries.md +41 -15
  102. package/docs/architecture/system-overview.md +93 -0
  103. package/docs/architecture/worker-and-feature.md +81 -0
  104. package/docs/cursor-prompt-sidecar.md +36 -0
  105. package/docs/decisions/README.md +13 -1
  106. package/docs/design/README.md +39 -13
  107. package/docs/development-principles.md +1 -1
  108. package/docs/exec-plans/active/README.md +2 -2
  109. package/docs/exec-plans/completed/README.md +21 -0
  110. package/docs/feature-workflow.md +44 -4
  111. package/docs/init-surface.manifest.json +63 -1
  112. package/docs/loop-agent-harness.md +65 -3
  113. package/docs/progress/README.md +27 -0
  114. package/docs/reports/README.md +74 -5
  115. package/docs/skills/README.md +2 -1
  116. package/docs/skills/vetted-skill-registry.md +2 -1
  117. package/docs/templates/agent-dag-report.schema.json +4 -2
  118. package/docs/templates/agent-dag.base.json +0 -5
  119. package/docs/templates/agent-dag.final-verification.json +0 -5
  120. package/docs/templates/agent-dag.schema.json +1 -2
  121. package/docs/templates/agent-dag.supervised-implementation.json +1 -6
  122. package/docs/templates/backend-test-dag.generate-pytest.prompt.md +131 -0
  123. package/docs/templates/backend-test-dag.json +213 -0
  124. package/docs/templates/backend-test-dag.retrospect.prompt.md +128 -0
  125. package/docs/templates/backend-test-dag.review-cases.prompt.md +85 -0
  126. package/docs/templates/frontend-design-contract.md +33 -0
  127. package/docs/templates/frontend-task-constraints.md +25 -0
  128. package/docs/templates/frontend-task-requirement.md +61 -0
  129. package/docs/templates/harness.schema.json +8 -5
  130. package/docs/templates/hybrid-dag.json +1 -6
  131. package/docs/templates/init-evolution-review.md +4 -2
  132. package/docs/templates/interactive-ui-round2-experiment.md +1 -1
  133. package/docs/templates/product-line/task.yaml +0 -1
  134. package/docs/templates/worker-dogfood-evidence.md +28 -0
  135. package/docs/templates/worker-dogfood-setup.md +20 -0
  136. package/docs/verification-matrix.md +17 -0
  137. package/examples/decision-gate-agent-dag.json +87 -33
  138. package/examples/example-dag.json +0 -5
  139. package/examples/hybrid-loop-agent-dag.json +0 -5
  140. package/harness.json +6 -11
  141. package/package.json +22 -44
  142. package/scripts/check-product-line-docs.sh +10 -3
  143. package/scripts/check-task-pool-root.sh +1 -1
  144. package/skills/agent-worker/SKILL.md +37 -0
  145. package/skills/agent-worker/references/agent-worker-operator.md +43 -0
  146. package/skills/frontend-design-review/SKILL.md +59 -0
  147. package/skills/frontend-design-review/references/review-checklist.md +37 -0
  148. package/skills/frontend-implementation/SKILL.md +48 -0
  149. package/skills/frontend-implementation/references/code-standards.md +34 -0
  150. package/skills/frontend-implementation/references/design-spec.md +46 -0
  151. package/skills/frontend-implementation/references/node-contracts.md +32 -0
  152. package/skills/frontend-review/SKILL.md +53 -0
  153. package/skills/frontend-review/references/review-findings.md +42 -0
  154. package/skills/frontend-verification/SKILL.md +40 -0
  155. package/skills/frontend-verification/references/verification-checklist.md +56 -0
  156. package/skills/grill-me/SKILL.md +10 -0
  157. package/skills/grill-with-docs/SKILL.md +88 -0
  158. package/skills/grill-with-docs/adr-format.md +47 -0
  159. package/skills/grill-with-docs/context-format.md +60 -0
  160. package/skills/init-capability-evolution/SKILL.md +1 -0
  161. package/skills/loop-agent/SKILL.md +11 -9
  162. package/skills/loop-agent/references/command-reference.md +28 -15
  163. package/skills/loop-agent/references/docs-converge.md +126 -0
  164. package/skills/loop-agent/references/harness-policy.md +7 -7
  165. package/skills/loop-agent/references/hybrid-dag.md +13 -15
  166. package/skills/loop-agent/references/long-running-loop.md +4 -6
  167. package/skills/loop-agent/references/multi-worktree.md +6 -6
  168. package/skills/loop-agent/references/orchestrator-and-interventions.md +3 -3
  169. package/skills/loop-agent/references/pi-subagent-assisted-mode.md +14 -11
  170. package/skills/loop-agent/references/verification-and-failure-handling.md +8 -3
  171. package/skills/using-git-worktrees/SKILL.md +215 -0
  172. package/dist/commands/cursor-worker.js +0 -43
  173. package/dist/cursor-worker-entry.js +0 -8
  174. package/dist/executors/cursor-artifacts.js +0 -33
  175. package/dist/executors/cursor-execution-log.js +0 -81
  176. package/dist/executors/cursor-executor-artifacts.js +0 -134
  177. package/dist/executors/cursor-run.js +0 -115
  178. package/dist/executors/cursor-tool.js +0 -94
  179. package/dist/executors/cursor-worker-client.js +0 -223
  180. package/dist/executors/cursor-worker-protocol.js +0 -18
  181. package/dist/executors/cursor-worker-server.js +0 -54
  182. package/dist/executors/cursor-worker.js +0 -3
  183. package/dist/executors/cursor.js +0 -6
  184. package/dist/executors/dag-cursor-executor.js +0 -87
  185. package/dist/workflows/loop/actions/cursor-fix.js +0 -191
  186. package/dist/workflows/loop/policy/cursor-fix-policy.js +0 -31
  187. package/docs/cursor-executor-usage.md +0 -25
  188. package/docs/dynamic-workflow-dag-engine-roadmap.md +0 -1749
@@ -0,0 +1,60 @@
1
+ # CONTEXT.md Format
2
+
3
+ ## Structure
4
+
5
+ ```md
6
+ # {Context Name}
7
+
8
+ {One or two sentence description of what this context is and why it exists.}
9
+
10
+ ## Language
11
+
12
+ **Order**:
13
+ {A one or two sentence description of the term}
14
+ _Avoid_: Purchase, transaction
15
+
16
+ **Invoice**:
17
+ A request for payment sent to a customer after delivery.
18
+ _Avoid_: Bill, payment request
19
+
20
+ **Customer**:
21
+ A person or organization that places orders.
22
+ _Avoid_: Client, buyer, account
23
+ ```
24
+
25
+ ## Rules
26
+
27
+ - **Be opinionated.** When multiple words exist for the same concept, pick the best one and list the others under `_Avoid_`.
28
+ - **Keep definitions tight.** One or two sentences max. Define what it IS, not what it does.
29
+ - **Only include terms specific to this project's context.** General programming concepts (timeouts, error types, utility patterns) don't belong even if the project uses them extensively. Before adding a term, ask: is this a concept unique to this context, or a general programming concept? Only the former belongs.
30
+ - **Group terms under subheadings** when natural clusters emerge. If all terms belong to a single cohesive area, a flat list is fine.
31
+
32
+ ## Single vs multi-context repos
33
+
34
+ **Single context (most repos):** One `CONTEXT.md` at the repo root.
35
+
36
+ **Multiple contexts:** A `CONTEXT-MAP.md` at the repo root lists the contexts, where they live, and how they relate to each other:
37
+
38
+ ```md
39
+ # Context Map
40
+
41
+ ## Contexts
42
+
43
+ - `src/ordering/CONTEXT.md` — receives and tracks customer orders
44
+ - `src/billing/CONTEXT.md` — generates invoices and processes payments
45
+ - `src/fulfillment/CONTEXT.md` — manages warehouse picking and shipping
46
+
47
+ ## Relationships
48
+
49
+ - **Ordering → Fulfillment**: Ordering emits `OrderPlaced` events; Fulfillment consumes them to start picking
50
+ - **Fulfillment → Billing**: Fulfillment emits `ShipmentDispatched` events; Billing consumes them to generate invoices
51
+ - **Ordering ↔ Billing**: Shared types for `CustomerId` and `Money`
52
+ ```
53
+
54
+ The skill infers which structure applies:
55
+
56
+ - If `CONTEXT-MAP.md` exists, read it to find contexts
57
+ - If only a root `CONTEXT.md` exists, single context
58
+ - If neither exists, create a root `CONTEXT.md` lazily when the first term is resolved
59
+
60
+ When multiple contexts exist, infer which one the current topic relates to. If unclear, ask.
@@ -50,6 +50,7 @@ docs/reports/YYYY-MM-DD-init-evolution-review.md
50
50
  报告保持短小,包含:
51
51
 
52
52
  - changed surface
53
+ - 可由 Git 解析的 Base 和 Head commit/ref;严格检查要求 Base 精确匹配所选 `--base`,Head 可以是运行时当前 `HEAD` 或它的一个可解析祖先提交。若 Head 是祖先,则 `reportHead..HEAD` 区间内一旦出现新的 `model-review` 高影响路径就会拒绝该报告;仅有 `advisory` 或 `surface-check` 变化不会让已完成的高影响审查失效。`working tree`、不可解析文字、无关历史报告都不能为其他变更范围放行严格检查。
53
54
  - decision: no init impact / surface check only / init update required
54
55
  - files updated
55
56
  - verification commands and results
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: loop-agent
3
3
  description: >-
4
- Use when implementing features, processing PRDs or requirements, running structured loop-agent workflows, creating harness tasks, using Agent DAG, run-dag, pi-prompt planning/review, or Cursor bounded implementation in loop-agent. Triggers: loop-agent, workflow, structured development, harness task, Agent DAG, 结构化开发, 工作流, 需求实现, PRD 实现.
4
+ Use when implementing features, processing PRDs or requirements, running structured loop-agent workflows, creating harness tasks, using Agent DAG, run-dag, pi-prompt planning/review, cursor-prompt one-shot sidecar intervention, or converging website/governance docs after user-visible changes in loop-agent. Triggers: loop-agent, workflow, structured development, harness task, Agent DAG, docs converge, Converge Docs, 文档收敛, 结构化开发, 工作流, 需求实现, PRD 实现.
5
5
  references:
6
6
  - path: references/harness-policy.md
7
7
  required: true
@@ -25,9 +25,9 @@ Shared loop-agent harness workflow 规则见 `references/harness-policy.md`。Re
25
25
 
26
26
  - 主入口是 **Agent DAG**。
27
27
  - 主会话负责编排、审 writeSet、复核验证与 handoff。
28
- - DAG `pi` executor 默认用于 read-only planning / review / diagnosis;当节点声明 `toolProfile: "write"` 时用于 bounded implementation / repair;Pi 模型矩阵保持 LOW=`gpt-5.3-codex-spark`、MED=`glm-5.2`、HIGH=`gpt-5.5`。
28
+ - DAG `pi` executor 是唯一受治理 Agent runtime:默认用于 read-only planning / review / diagnosis;当节点声明 `toolProfile: "write"` 时用于 bounded implementation / repair;Pi 模型矩阵保持 LOW=`gpt-5.3-codex-spark`、MED=`glm-5.2`、HIGH=`gpt-5.5`。
29
29
  - `pi-prompt` 与 `cursor-prompt` 都是一次性 full-capability helper;用作 sidecar 时必须在 prompt 和 tool/model 参数里显式收窄。
30
- - Cursor 是显式启用的可选 bounded write backend;默认 no-Cursor DAG 使用 `executor: "pi"` + `toolProfile: "write"`,必须给出 allowed / forbidden paths。
30
+ - Cursor 仅是显式、手工触发的 `cursor-prompt` one-shot sidecar,不是受治理 DAG/Loop writer;受治理写入固定为 `implement-pi` / `repair-pi`,必须给出 allowed / forbidden paths 与 writeSet
31
31
  - Shell verification 是事实源;任何完成声明都必须有本轮命令输出。
32
32
  - 长期结论写回 `docs/exec-plans/`、`docs/reports/`、`docs/progress/` 或 `./skill/`。
33
33
 
@@ -68,11 +68,11 @@ loop-agent run-dag --dag <temp-dir>/<task-id>-dag.json --cwd <repo-root>
68
68
 
69
69
  ## Bounded Write Execution
70
70
 
71
- 需要写代码时,默认使用 DAG `pi` executor 的 write tool profilePi writer 节点必须包含 task id、目标、allowed paths、forbidden paths、writeSet、硬约束和预期验证,并在执行后由主会话独立运行 shell verification。
71
+ 需要写代码时,默认使用 DAG `pi` executor 的 write tool profile(`implement-pi` / `repair-pi`)。Pi writer 节点必须包含 task id、目标、allowed paths、forbidden paths、writeSet、硬约束和预期验证,并在执行后由主会话独立运行 shell verification。
72
72
 
73
- Cursor 只作为显式启用的可选 bounded write backend。调用示例与细节见 `references/pi-prompt.md`、`references/harness-policy.md` 和 `references/verification-and-failure-handling.md`。
73
+ `cursor-prompt` 仅作人工 one-shot sidecar intervention,不进入 Loop auto-execute / Delegate auto-run / DAG writer 选择。细节见 `docs/cursor-prompt-sidecar.md`、`references/harness-policy.md` 和 `references/verification-and-failure-handling.md`。
74
74
 
75
- Pi writer prompt Cursor prompt 都必须包含:
75
+ Pi writer prompt(以及可选 sidecar prompt)都必须包含:
76
76
 
77
77
  - task id
78
78
  - exact objective
@@ -82,7 +82,7 @@ Pi writer prompt 与 Cursor prompt 都必须包含:
82
82
  - expected verification
83
83
  - instruction to preserve unrelated files
84
84
 
85
- bounded writer 完成后,主会话必须独立复核;命令清单见 `references/verification-and-failure-handling.md` 的 "Cursor bounded write 后的独立复核"。
85
+ bounded writer 完成后,主会话必须独立复核;命令清单见 `references/verification-and-failure-handling.md` 的独立复核章节。
86
86
 
87
87
  ## 进阶主题路由
88
88
 
@@ -94,7 +94,8 @@ bounded writer 完成后,主会话必须独立复核;命令清单见 `refere
94
94
  | Three-Pass Convergence、repair artifact、spine audit、knowledge curate、SePO-lite prompt evolution | `references/harness-policy.md` |
95
95
  | Operator commands(status/doctor/report/closeout/promote/inspect/spine/knowledge/docs/handoff) | `references/command-reference.md` |
96
96
  | 伴生 CLI `agent-worker`(TaskSpec / Task Pool / batch / morning report) | `references/command-reference.md` |
97
- | Post-Cursor 独立验证、verify knobs、failure handling、closeout | `references/verification-and-failure-handling.md` |
97
+ | Post-writer 独立验证、verify knobs、failure handling、closeout | `references/verification-and-failure-handling.md` |
98
+ | Docs Converge(用户可见变更后的站上/治理文档同步检查表) | `references/docs-converge.md` |
98
99
 
99
100
  ## Source Layout
100
101
 
@@ -121,7 +122,7 @@ bounded writer 完成后,主会话必须独立复核;命令清单见 `refere
121
122
  2. Source materials are mandatory: `source/需求.md` and `source/执行约束.md`. Prefer immutable originals under `source/references/` via `import-prd` or Worker `source_docs`; treat `需求.md` as a derived contract.
122
123
  3. Agent DAG is the implementation workflow. Review must three-way check references + derived source + implementation when originals exist.
123
124
  4. DAG `pi` executor stays read-only unless the node sets `toolProfile: "write"`; `pi-prompt` / `cursor-prompt` are full-capability one-shot helpers and must be bounded per call.
124
- 5. Pi writer nodes and optional Cursor write execution must be bounded by explicit allowed / forbidden paths.
125
+ 5. Pi writer nodes must be bounded by explicit allowed / forbidden paths and writeSet; Cursor remains `cursor-prompt` sidecar only.
125
126
  6. Completed DAG and one-shot run facts are read-only.
126
127
  7. Do not write root `artifacts/` from read-only DAG or sidecar steps.
127
128
  8. Do not keep hidden workflow state in chat only; write durable conclusions to repo artifacts.
@@ -147,3 +148,4 @@ Optional(按需加载):
147
148
  - `references/model-routing.md`
148
149
  - `references/multi-worktree.md`
149
150
  - `references/post-implementation-and-patterns.md`
151
+ - `references/docs-converge.md` — 用户可见变更后的文档收敛检查表;禁止每次重新规划整站大纲
@@ -47,6 +47,7 @@ loop-agent doctor
47
47
  loop-agent dag doctor
48
48
  loop-agent dag report --latest --markdown
49
49
  loop-agent dag closeout-draft --run-id <run-id>
50
+ loop-agent dag reconcile-run --run-id <run-id>
50
51
  loop-agent dag reconcile-tasks --glob '<pattern>' --markdown
51
52
  loop-agent dag final-verification <task-id> --output <temp-dir>/<task-id>-final-verification-dag.json
52
53
  loop-agent status <task-id> --json
@@ -59,7 +60,7 @@ loop-agent doctor
59
60
  ```
60
61
  3. **Escape hatch**,仅用于 worktree 隔离委派、executor 调试或 one-shot 诊断:
61
62
  ```bash
62
- loop-agent delegate <task-id> --executor cursor
63
+ loop-agent delegate <task-id> --auto-run
63
64
  loop-agent harvest <task-id>
64
65
  loop-agent cursor-prompt --cwd <repo-root> --file /tmp/bounded-task.md
65
66
  loop-agent pi-prompt "Reply with exactly OK."
@@ -121,7 +122,7 @@ loop-agent examples copy <name> --output examples/<name>
121
122
  loop-agent new-task <task-id> "Task Title"
122
123
  ```
123
124
 
124
- 创建 `.harness/tasks/<task-id>/`,含 `source/`、`artifacts/`、`logs/` 及初始 state
125
+ 创建 `.harness/tasks/<task-id>/`,含 `source/`、`artifacts/`、`logs/` 及初始 state。`artifacts/` 默认只预种 `修改记录.md` 与 `验证结果.md`(供后续 `promote-run` / `closeout` 使用);不再预种 L1 的 `分析报告.md`、`实现计划.md`、`复盘报告.md`。
125
126
 
126
127
  ### 导入原始 PRD(不可变事实源)
127
128
  ```bash
@@ -140,7 +141,7 @@ loop-agent instructions promotion --task <task-id> --json
140
141
  loop-agent instructions closeout --task <task-id> --json
141
142
  ```
142
143
 
143
- `status` 是 agent 行动上下文入口,返回 `artifactPaths`、`runRefs`、`actionContext` 与 `nextActions`。`instructions` 在写入 source、DAG draft、task artifacts、promotion 或 closeout 前返回目标路径、依赖、模板、写策略与完成标准;blocked artifact 会列出 `missingDependencies`。
144
+ `status` 是 agent 行动上下文入口,返回 `artifactPaths`、`runRefs`、`actionContext` 与 `nextActions`。`instructions` 在写入 source、DAG draft、task artifacts、promotion 或 closeout 前返回目标路径、依赖、模板、写策略与完成标准;blocked artifact 会列出 `missingDependencies`。`instructions task-artifacts` 只要求 promote 桥接的 `修改记录.md` / `验证结果.md`,不要求手写分析/计划/复盘三份 L1 报告。
144
145
 
145
146
  ### Promotion / closeout
146
147
  ```bash
@@ -227,9 +228,7 @@ loop-agent dag validate --dag <temp-dir>/hybrid-dag.json --strict-governance --s
227
228
  loop-agent dag validate --dag docs/templates/agent-dag.supervised-implementation.json --strict-models --strict-governance # role=supervisor + write-set-gate topology
228
229
  cp docs/templates/agent-dag.supervised-implementation.json <temp-dir>/supervised-dag.json
229
230
  (npx vitest run test/dag-supervised-template.test.ts test/dag-validate.test.ts test/dag-shell-executor.test.ts --reporter=dot) # supervised template + shell.verdictGate runtime
230
- loop-agent dag validate --dag <temp-dir>/hybrid-dag.json --forbid-executor cursor # 存在 cursor node 时失败
231
231
  loop-agent run-dag --dag <temp-dir>/hybrid-dag.json --cwd <repo-root> # 执行 Agent DAG
232
- loop-agent run-dag --dag <temp-dir>/hybrid-dag.json --cwd <repo-root> --no-cursor # 执行前若存在 cursor node 则失败
233
232
  loop-agent run-dag --dag <temp-dir>/hybrid-dag.json --init-only --canvas-path <temp-dir>/hybrid-dag.canvas.tsx # 可选 derived Canvas view
234
233
  loop-agent dag init-hybrid <task-id> # 生成可审阅的 DAG draft
235
234
  loop-agent dag run-task <task-id> # generate + validate(安全默认;无 dag-runs;standard-compatible)
@@ -246,6 +245,9 @@ loop-agent dag run-task <task-id> --dry-run --cwd <repo-root> # generate + vali
246
245
  loop-agent dag status --run-id <run-id> # 单次 run JSON 摘要(approvalFlow, healthIssues)
247
246
  loop-agent dag doctor # 扫描 active/paused/completed runs;advisoryOnly health report
248
247
  loop-agent dag report [--run-id <run-id>] [--lifecycle active|paused|completed|all] [--json|--markdown] [--failed-only] [--latest] [--paused-latest] [--action <recovery-action>] # derived per-node 聚合(只读);JSON 锁定于 docs/templates/agent-dag-report.schema.json;--paused-latest 聚焦最新 paused run;playbook: docs/agent-dag-recovery-playbook.md
248
+ loop-agent dag reconcile-run --run-id <run-id> # 只读检查 effectiveStatus 与恢复/收口资格
249
+ loop-agent dag reconcile-run --run-id <run-id> --action supersede --reason "..." # 显式保留证据并标记为任务已另行完成
250
+ loop-agent dag reconcile-run --run-id <run-id> --action abandon --reason "..." # 显式保留证据并收口为已放弃
249
251
  loop-agent dag reconcile-tasks --glob '<pattern>' # 仅报告的 task/run/artifact/verify drift audit
250
252
  loop-agent dag final-verification <task-id> # 生成 closeout DAG,closeout artifact 后再 final verify
251
253
  loop-agent dag decision inspect --run-id <run-id> [--node-id <node-id>] # dry-run envelope 重解析;除 run 缺失外 exit 0
@@ -267,6 +269,7 @@ loop-agent dag resume --run-id <run-id> # approve 后继续
267
269
  - 需 operator 关注的 run 用 `dag report --failed-only`、`--latest`、`--action <recovery-action>` 收窄。category→action 映射见 `docs/agent-dag-recovery-playbook.md`。
268
270
  - 只读扫描 `.harness/dag-runs/` 下所有 run 的生命周期 health issue 与建议 action 用 `dag doctor`(`advisoryOnly: true`;不 mutate facts)。
269
271
  - approve/resume 前用 `dag status --run-id <id>` 看单次 lifecycle、`approvalFlow`、`hasHumanApproval`。
272
+ - lifecycle、raw status 与 liveness 冲突时先用 `dag reconcile-run --run-id <id>` 只读检查。只有 runner 已证明停止且 operator 明确给出 `supersede|abandon` 与 reason 时才允许收口;它保存原始 state,不把未执行节点标成成功。
270
273
  - task status、source/artifacts、DAG outcome、verification 记录可能 drift 时用 `dag reconcile-tasks --glob '<pattern>'`。默认仅报告;`--patch` 显式且不能伪造 verification evidence。
271
274
  - 大型 PRD closeout 用 `dag final-verification <task-id>` 生成确定性 DAG,final verification 在 closeout artifact 创建之后。
272
275
  - 从 run facts dry-run envelope 解析用 `dag decision inspect|validate`;`validate` 在无效 envelope 时 exit 1;永不自动 resume/retry。
@@ -286,15 +289,9 @@ loop-agent workflow replay <run-id>
286
289
 
287
290
  `workflow` 是 Dynamic Workflow 的 saved/operator surface。它读取 `WorkflowSpec`,编译为 DAG,再进入同一套 `run-dag` runtime;不会新增 executor 能力或绕过 DAG governance。真实写入任务仍应检查 compiled DAG 的 executor、writeSet、shell gates 和 completed facts 边界。
288
291
 
289
- ### Cursor worker lifecycle
290
- ```bash
291
- loop-agent cursor-worker status # enabled/running/child/entry path
292
- loop-agent cursor-worker stop # SIGTERM worker 并清 parent state
293
- loop-agent cursor-worker ping # 启动 worker 并跑短 execute smoke(之后 stop worker)
294
- ```
292
+ ### Cursor sidecar
295
293
 
296
- - DAG / `executeCursorTask({ useWorker: true })` 保持长驻 Cursor SDK child,避免 CLI exit hang。
297
- - Parent RPC timeout(`timeoutMs + 5s`)返回 `details.timeoutKind=rpc`,终止 worker(`SIGTERM`),defer SDK cancel(`cancelDeferred=true`,`cancelAttempted=false`);下次 execute 启动新 worker。
294
+ `cursor-worker` 已删除。人工干预使用 `cursor-prompt` one-shot sidecar;见 `docs/cursor-prompt-sidecar.md`。
298
295
 
299
296
  ### 检查 task status
300
297
  ```bash
@@ -379,6 +376,14 @@ loop-agent knowledge curate --markdown --output docs/reports/<task-id>-learned-p
379
376
  agent-worker task validate <task.yaml> # 三层校验 TaskSpec,输出 JSON
380
377
  agent-worker task explain-profile <task.yaml> # 解释业务 type/risk -> DAG governance profile 映射
381
378
  agent-worker task validate-feature <feature-dir> # 校验完整 feature packet 的验收、依赖、TaskSpec 和验证命令
379
+ agent-worker feature review --feature-dir <feature-dir> --repo <repo-root> [--json]
380
+ agent-worker feature run --feature-dir <feature-dir> --repo <repo-root> [--dry-run] [--git-mode checkpoint] [--keep-failed-diff] [--json]
381
+ agent-worker feature verify-final --feature-dir <feature-dir> --repo <repo-root> --task-id <qa-execute-id> [--json]
382
+ agent-worker feature delivery --feature-dir <feature-dir> --repo <repo-root> --qa-evidence <path> --final-verification <path> [--waivers <path>] [--dry-run] [--json]
383
+ agent-worker feature closeout --feature-dir <feature-dir> --repo <repo-root> [--apply --owner <owner>] [--json]
384
+ agent-worker report metrics --repo <repo-root> --month <YYYY-MM> [--json]
385
+ agent-worker task draft-followup <task-id> --worker-run-id <id> --feature-dir <feature-dir> --repo <repo-root> [--json]
386
+ agent-worker feature approve-followup --feature-dir <feature-dir> --followup-id <id> --repo <repo-root> --owner <owner> [--dry-run] [--json]
382
387
  agent-worker task retry <task-id> --repo <repo-root> [--reason "<已修复的原因>"]
383
388
  agent-worker batch run-ready \
384
389
  --feature-dir <feature-dir> \ # 含 tasks/task-graph.yaml
@@ -401,6 +406,14 @@ agent-worker observe snapshot --repo <repo-root> # 输出 GlobalSnapshot JSON
401
406
  - Worker runtime state 落在目标 repo 的 `.harness/task-pool/`(artifacts、JSONL/state、晨报、failure handoffs)。自 0.8.0 起该目录是唯一受支持的 Task Pool runtime root;旧路径不读取、不迁移、不合并、不重映射。
402
407
  - preflight 在 `new-task` 前跑 `loop-agent --version`、`inspect`、`docs-audit`、`git status --short --branch`,可选 `--check-repo`。一次夜间批处理期间不升级控制器,记录实际 `loop-agent` 版本。
403
408
  - `batch run-ready` 默认在 stderr 输出人类可读进度(批次起止、每个 task 的阶段与耗时、report 决策),stdout 只保留最终 JSON,便于管道取用;加 `--quiet` 可关闭进度。
409
+ - `feature review` 只读派生 Feature 状态、required AC 覆盖、阻塞、证据和唯一下一步。默认输出简洁的人类摘要,`--json` 输出 schemaVersion 1 JSON;损坏事实会显式降级,不会写 Feature Packet 或 Task Pool。
410
+ - `feature run` 薄编排 validation、preflight、现有 run-ready、morning report、Observe snapshot 和最终 review。`--dry-run` 零写入;Git checkpoint 可用前单次最多推进一个 Ready 写任务。
411
+ - `feature run` 遇到业务 Task 失败时仍刷新证据,但返回 `needs-action` 和非零退出码;无 Ready 是正常结果,并通过 `noReadyReason` 说明 Closed、Deliverable、AwaitingQA、NeedsAction、依赖阻塞或空 Feature。
412
+ - `feature run --git-mode checkpoint` 是唯一 checkpoint 授权:要求 clean repo,在本地 `agent/<feature-id>` 分支按成功 Task commit;失败先保存 patch/untracked/boundary audit 再恢复 clean。默认不 commit;从不 stash/push/merge/创建远程 PR。`--keep-failed-diff` 会停止 Feature,不继续后续 Task。
413
+ - `feature verify-final` 在 clean Delivery HEAD 上复用已完成的 `qa-execute` TaskSpec 运行独立 DAG,跳过 promotion/closeout,原子生成 canonical QA aggregate 和 HEAD-bound final verification;相同 HEAD 的 canonical 成功 run 可幂等复用。
414
+ - `feature delivery` 复用 transaction record,校验 Git history/trailers/changed files、成功 run、canonical QA/final verification 和 required AC,原子生成 manifest、coverage 与 `PR.md`;`--dry-run` 零写入。`feature closeout` 默认只读复验全部 gates,显式 `--apply --owner` 才原子写回,stale facts 或 post-validation 失败会整体回滚。
415
+ - `report metrics` 按 UTC 月去重投影 Feature/Failure/Follow-up/Delivery/AC/decision/recovery/boundary 指标,同时写 JSON 与 Markdown;每项保留 numerator、denominator、sampleSize 和 missingData。
416
+ - `task draft-followup` 会按全部 failure category 生成 TaskDraft 或人工行动卡:ProductBug/TestBug/FlakyTest/DependencyFailure 可批准;EnvFailure 连续两次后才生成 ENV-CHECK;Spec/Contract/Risk/Human/Unknown 只给行动卡。人工以 `feature approve-followup --dry-run` 预览,再带非空 `--owner` 批准 TaskDraft;行动卡不能批准。批准在 staging validation 后写 TaskSpec、graph、Ready/approval/event,原失败事实不改写,并有 rename/state/approval/index/event 回滚门禁。
404
417
  - `task retry` 是失败 Task 的唯一重试入口。它会保留原有运行记录和 failure handoff,并让下一次 `batch run-ready` 使用新的 `workerRunId`;不要删除运行态文件或手动修改状态来重试。
405
418
  - `observe serve` 是独立于执行过程的本地只读看板,默认监听 `127.0.0.1:8787`;`observe snapshot` 只输出同一份运行态快照 JSON。两者都不会启动、暂停或重试 Task / Worker / DAG。
406
419
  - 当前 Worker 仍是 v0(库 + CLI + dogfood),未接入定时/CI 驱动;`report morning` 只能从已有 Task Pool runs 汇总。
@@ -413,12 +426,12 @@ loop-agent stats
413
426
  ### Worktree delegate / harvest(escape hatch)
414
427
 
415
428
  ```bash
416
- loop-agent delegate <task-id> [--executor pi|cursor] [--base <branch>] [--branch <name>] [--no-symlink] [--auto-run] [--no-auto-run]
429
+ loop-agent delegate <task-id> [--base <branch>] [--branch <name>] [--no-symlink] [--auto-run]
417
430
  loop-agent harvest <task-id> [--squash] [--no-archive] [--keep-worktree]
418
431
  loop-agent worktree create|list|remove ...
419
432
  ```
420
433
 
421
- 用于 worktree 隔离的 cursor-direct 执行与 merge 收口。常规 autonomous work 应优先 Agent DAG;详见 `multi-worktree.md` 与 `docs/cursor-executor-usage.md`。
434
+ 用于 worktree 隔离以及可选的 Pi-only DAG 执行与 merge 收口。常规 autonomous work 应优先 Agent DAG;详见 `multi-worktree.md` 与 `docs/cursor-prompt-sidecar.md`。
422
435
 
423
436
  ### One-shot Cursor sidecar(escape hatch)
424
437
  ```bash
@@ -0,0 +1,126 @@
1
+ # Docs Converge(文档收敛)
2
+
3
+ 本 reference 把会话协议中的 **Converge Docs** 落成可执行检查表。
4
+ 定位是**收敛 / 同步**,不是「每次重新 invent 文档大纲」。
5
+
6
+ 权威规划:`docs/exec-plans/completed/2026-07-14-website-docs-ia-and-converge.md`。
7
+ 站与治理双树边界:`website/README.md`。
8
+
9
+ ## 何时触发
10
+
11
+ 在以下任一情况**加载本文件并跑检查表**:
12
+
13
+ - 用户可见行为变更(CLI 输出、默认工作流、init 投影、Observe/Worker 主路径)。
14
+ - 新增 / 修改 / 删除 CLI 命令或关键 flags。
15
+ - runtime / 架构边界变更(`docs/architecture/*`、executor 角色、Worker 边界)。
16
+ - active plan 创建、blocked、完成或归档。
17
+ - 准备发布或写 `CHANGELOG.md` 版本条目。
18
+ - 用户明确要求「文档收敛」「docs converge」「同步 website docs」。
19
+ - handoff 前需要声明「本轮是否更新了站上文档」。
20
+
21
+ **不要**在无关的纯内部重构(无用户可见行为、无命令面变化)上强制大改站上正文;此时 handoff 写明豁免理由即可。
22
+
23
+ ## 受众矩阵
24
+
25
+ | 受众 | 主要入口 | 权威细节 |
26
+ | --- | --- | --- |
27
+ | 新贡献者 | `website/docs/intro.md` → `overview/architecture` → `overview/roadmap` → first-run | 根 `docs/architecture/*`、active plans |
28
+ | 使用者 | `overview/feature-map`、`quick-start/*`、`guides/*`、`reference/*` | CLI help、根 `CHANGELOG.md` |
29
+ | 维护者 / agent | 本检查表 + `AGENTS.md` Converge Docs | `docs/`、`skills/`、`scripts/check-*.sh` |
30
+
31
+ ## 页面清单(站上活文档)
32
+
33
+ | 页面 | 职责 |
34
+ | --- | --- |
35
+ | `website/docs/intro.md` | 概念地图 + 30 分钟路径;非能力堆砌 |
36
+ | `website/docs/overview/feature-map.md` | 功能导览 → guide/CLI |
37
+ | `website/docs/overview/architecture.md` | 架构导读;链到 `docs/architecture/` |
38
+ | `website/docs/overview/roadmap.md` | 当前有效规划短索引 |
39
+ | `website/docs/quick-start/*` | 安装 / init / first-run |
40
+ | `website/docs/guides/*` | 主路径操作说明 |
41
+ | `website/docs/reference/cli.md` | 用户向 CLI 参考 |
42
+ | `website/docs/reference/config.md` | 配置参考 |
43
+ | `website/docs/changelog.md` | 读者摘要;完整版本以根 `CHANGELOG.md` 为准 |
44
+
45
+ 治理全文、exec-plans、reports **不**搬进 Docusaurus。
46
+
47
+ ## 变更 → 文档检查表
48
+
49
+ 按本轮实际 diff 勾选(有则必须处理,无则跳过并记豁免):
50
+
51
+ | 若变更了… | 必须检查 / 更新 |
52
+ | --- | --- |
53
+ | 新/改 CLI 命令 | `website/docs/reference/cli.md` + `skills/loop-agent/references/command-reference.md`(及 agent-worker 相关 reference) |
54
+ | 用户可见行为 | 对应 `guides/*` 或 `quick-start/*`;根 `CHANGELOG.md`;必要时 `overview/feature-map.md` / `intro.md` |
55
+ | runtime / 边界 | 根 `docs/architecture/*`;站上 `overview/architecture.md` 导语与外链 |
56
+ | 默认工作流 | `intro.md` 流程图 + `guides/agent-dag.md` / `guides/harness-policy.md` |
57
+ | active plan 状态 | `overview/roadmap.md` 短索引 + `docs/exec-plans/active/README.md` |
58
+ | 发布 | 根 `CHANGELOG.md` 为版本事实源;`website/docs/changelog.md` 只写摘要与链接;roadmap 仅在规划状态变化时更新 |
59
+ | skill / init 投影 | `docs/init-surface.manifest.json`、相关测试、必要时 `docs/skills/*` |
60
+
61
+ 跨树链接规则:
62
+
63
+ - 站内页面用 Docusaurus 相对文档链接。
64
+ - 链到根目录 `docs/`、`AGENTS.md`、`CHANGELOG.md` 等时,使用
65
+ `https://github.com/tea-agent/loop-agent/blob/main/<repo-path>`,
66
+ 正文同时写出 repo-relative path;禁止伪造站内 `/docs/architecture/...` 作为根目录文档路由。
67
+
68
+ ## 执行步骤(最小闭环)
69
+
70
+ 1. **列出本轮用户可见 diff**(命令、行为、边界、计划状态)。
71
+ 2. **对照上表**产出缺口清单(页面路径 + 要改的一句话)。
72
+ 3. **最小补丁**:只改清单内页面;禁止顺手重写 practices 或迁移整个 `docs/`。
73
+ 4. **验证**(见下节)。
74
+ 5. **Handoff** 二选一:
75
+ - 已更新:列出改动页面与验证命令结果。
76
+ - 无需站上更新:写明「本轮无需站上更新,原因:…」。
77
+
78
+ ## 验证命令
79
+
80
+ 站上正文、侧栏或 `docusaurus.config.ts` 有改动时:
81
+
82
+ ```bash
83
+ npm run docs:build
84
+ ```
85
+
86
+ 涉及治理文档、脚本、skill、init surface 时再跑:
87
+
88
+ ```bash
89
+ bash scripts/check-repo.sh
90
+ # 或定向:
91
+ bash scripts/check-skill-entry.sh
92
+ bash scripts/check-command-registry-drift.sh
93
+ bash scripts/check-init-surface.sh
94
+ node bin/loop-agent.js docs audit --repo-root .
95
+ ```
96
+
97
+ skill / package 投影相关:
98
+
99
+ ```bash
100
+ npx vitest run test/init-command.test.ts test/package-surface.test.ts
101
+ ```
102
+
103
+ ## 禁止事项
104
+
105
+ - 每次会话从头撰写全新文档大纲或「重新规划整个 docs 树」。
106
+ - 把 `docs/design/`、exec-plans、reports 全文复制进 `website/docs/`。
107
+ - 在站上建立第二套与 `docs/architecture/*` 冲突的架构真源。
108
+ - 未读 `website/README.md` 与相关 exec-plan 就扩大 scope。
109
+ - 用删测试、降 `onBrokenMarkdownLinks` 或忽略 `docs:build` 失败制造「完成」。
110
+ - 新增独立公共 skill 目录承载本检查表(应留在 `skills/loop-agent/references/`)。
111
+
112
+ ## 与现有能力的关系
113
+
114
+ | 能力 | 关系 |
115
+ | --- | --- |
116
+ | `loop-agent docs audit` | L0 腐化检查(断链、计划状态等);**不**替代本表内容审计 |
117
+ | `npm run docs:build` | 站上改动硬门禁(含 Markdown 断链 fail-fast) |
118
+ | `grill-with-docs` | ADR / 术语;不替代本 reference |
119
+ | 历史 2026-07-05 docs governance dogfood | 仅经验输入;新 workflow 必须 Pi-only,不复用已退役原生 Cursor DAG |
120
+
121
+ ## 快速自检(handoff 前 30 秒)
122
+
123
+ - [ ] 用户可见变更是否对照检查表处理或已豁免?
124
+ - [ ] intro 是否仍是概念地图(而非能力 bullet 堆砌)?
125
+ - [ ] roadmap 是否只含当前有效 active 项?
126
+ - [ ] 需要时 `docs:build` / `check-repo` 是否有新鲜输出?
@@ -8,7 +8,7 @@
8
8
  - 历史顺序式 `run analyze|plan|spec|implement|verify|auto|loop|continue` workflow 已移除。不要将其作为 fallback path 呈现。
9
9
  - **Long-running `loop`** 是 Agent DAG 之上的 outer state/evidence layer。它记录 rounds、context compression、signals、canonical refs;不得替代 complex work 的 DAG writeSet review、Decision Gate 或 shell verification。
10
10
  - **Main session** 负责 orchestrate:选一个 work chunk、准备 source materials、review DAG/writeSet、monitor failures、跑 final verification、hand off。
11
- - **Executors** 实现 bounded work:Pi DAG nodes 做 read-only planning/review/diagnosis,并在节点声明 `toolProfile: "write"` 时做 bounded implementation/repair;Cursor 是显式启用的可选 bounded writer;shell 产出 deterministic verification facts。
11
+ - **Executors** 实现 bounded work:Pi 是唯一受治理 Agent runtime(read-only planning/review/diagnosis,以及 `toolProfile: "write"` bounded implementation/repair);shell 产出 deterministic verification facts;`cursor-prompt` 仅是 one-shot sidecar
12
12
  - **Shell verification 是 completion fact source**。LLM review 或 advisory output 不能替代 command exit codes 与 archived evidence。
13
13
 
14
14
  ## Command surface tiers
@@ -18,7 +18,7 @@
18
18
  | Primary | Normal autonomous implementation | `new-task` -> `dag run-task --profile auto` -> `dag validate --strict-models --strict-governance` -> `run-dag` |
19
19
  | Operator | Diagnose, recover, close out, inspect facts | `status`, `instructions`, `dag status`, `dag doctor`, `dag report`, `dag closeout-draft`, `dag reconcile-tasks`, `dag final-verification`, `inspect`, `doctor`, `spine audit`, `knowledge curate`, `docs audit`, `handoff check`, `loop-benchmark` |
20
20
  | Compatibility | Legacy task metadata and feature-study helpers | `goal`, `reference`, `study` |
21
- | Escape hatch | Isolated delegation, one-shot diagnosis or bounded repair | `delegate`, `worktree`, `harvest`, `pi-prompt`, `cursor-prompt`, `cursor-worker` |
21
+ | Escape hatch | Isolated delegation, one-shot diagnosis or bounded repair | `delegate`, `worktree`, `harvest`, `pi-prompt`, `cursor-prompt` |
22
22
  | Experimental | Long-running outer task state | `loop init|status|run|record-round|add-signal|closeout` |
23
23
 
24
24
  Prompt templates、README snippets、task instructions 应优先呈现 Primary + Operator。Compatibility 与 escape-hatch commands 仍可用,但须携带其 downgrade/fallback 含义。
@@ -130,7 +130,7 @@ loop-agent loop run <task-id> --action dag
130
130
  loop-agent loop run <task-id> --action dag --execute
131
131
  loop-agent loop run <task-id> --action shell-verify --command "<repo-check>"
132
132
  loop-agent loop run <task-id> --action pi-review
133
- loop-agent loop run <task-id> --auto --max-rounds 3 --allow-cursor-fix
133
+ loop-agent loop run <task-id> --auto --max-rounds 3
134
134
  loop-agent loop closeout <task-id>
135
135
  ```
136
136
 
@@ -138,11 +138,11 @@ Loop action rules:
138
138
 
139
139
  - `shell-verify` 是 deterministic;exit code 决定 verification record。
140
140
  - `pi-review` 是 read-only;tools 限于 `read,grep,find,ls`,output 为 structured advisory evidence。Structured JSON 须含 `findingSummary`、`failureCategory`、`nextHypothesis`、`recommendedAction`、`fixScope`、`rootCause`;`recommendedAction` exactly 为 `implement_fix|replan|pause|done`。
141
- - `cursor-fix` bounded write;须读 task `allowedPaths` / `forbiddenPaths`,reject empty `allowedPaths`、allowed/forbidden overlap,preserve unrelated files,且须 follow shell verification 或 review。
142
- - 对 `task.json.complexity = medium | large`,`cursor-fix` additionally 需要:
141
+ - 自动写入只能通过 Pi-only Agent DAG execute;须读 task `allowedPaths` / `forbiddenPaths`,审查 writer `writeSet`,并 follow shell verification 或 review。
142
+ - 对 `task.json.complexity = medium | large`,自动 DAG execute additionally 需要:
143
143
  - previous loop `dag` round,或
144
144
  - explicit `task.json.dagFallbackReason` 说明为何不能用 DAG。
145
- - `loop run --auto` 默认不 write。Auto `cursor-fix` 需要 `task.json.loopAutoWritePolicy="enabled"`,或 `loopAutoWritePolicy="approval-required"` 加 pending approval signal `--allow-cursor-fix`;write guards 仍 fail closed 并 pause。
145
+ - `loop run --auto` 默认不 write。Auto DAG execute 需要 `task.json.loopAutoExecutionPolicy="enabled"`,或 `loopAutoExecutionPolicy="approval-required"` 加 pending approval signal;旧 `loopAutoWritePolicy` fail-fast;write guards 仍 fail closed 并 pause。
146
146
  - `loop closeout` 须报告 workflow path:`dag`、`explicit-fallback`、`missing-dag-evidence` 或 `micro-or-small`。
147
147
  - 无 DAG evidence 且无 `dagFallbackReason` 的 medium/large closeout 须将其列为 remaining risk。
148
148
  - `record-round --decision complete` 仅是 loop-state candidate;completion 仍须 shell verification、review verdict、success-criteria coverage。
@@ -220,7 +220,7 @@ Sidecar output 为 advisory。若须成为 task evidence,通过 loop-agent run
220
220
  - `harness.json.models.<step>` 下 historical step models 是 legacy metadata,不是新 DAG work 的 routing。
221
221
  - `pi-prompt` / `cursor-prompt` models 来自 CLI flags 或 runtime defaults,须 per intervention 选择。
222
222
  - Pi DAG nodes 默认 read-only planning/review/diagnosis;声明 `toolProfile: "write"` 时是 bounded writers,须有 explicit write scope。
223
- - Cursor nodes 是显式启用的可选 bounded writers,须有 explicit write scope。
223
+ - 受治理 writer 固定为 `implement-pi` / `repair-pi`,须有 explicit write scope;`cursor-prompt` 不进入 DAG schema
224
224
  - Shell nodes 产出 deterministic verification facts 与 gates。
225
225
 
226
226
  ## Artifacts and facts boundary
@@ -1,6 +1,6 @@
1
1
  # Agent DAG Hybrid Workflow(`run-dag` / `dag init-hybrid`)
2
2
 
3
- 创建或执行 loop-agent 工作的首选 Agent DAG path 时使用本文:Level 2 Agent DAG orchestration、Pi read-only + Pi `toolProfile: "write"` bounded execution、optional Cursor backend、write policy、DAG template、task-to-DAG 生成,或基于 governance-profile 的 template 选择。
3
+ 创建或执行 loop-agent 工作的首选 Agent DAG path 时使用本文:Level 2 Agent DAG orchestration、Pi read-only + Pi `toolProfile: "write"` bounded execution、Pi-only writers、write policy、DAG template、task-to-DAG 生成,或基于 governance-profile 的 template 选择。
4
4
 
5
5
  ### DAG workflow 优先级
6
6
 
@@ -8,20 +8,21 @@
8
8
 
9
9
  - `defaultImplementationWorkflow=agent-dag`
10
10
  - `dag.defaultEntry=dag run-task`
11
+ - `dag.outputLanguage=zh-CN`;未配置时也默认中文,显式设为 `en` 可切换英文
11
12
  - `dag.profileRouting`:`minimal|standard -> standard-dag`,`reviewed -> review-gated-dag`,`supervised -> supervised-implementation`
12
13
  - `humanGatePolicy.defaultMode=record-only`;需求不清、架构/公共契约风险、凭据/费用/部署风险、重复 gate failure 或高风险决策时升级人工介入
13
14
 
14
- 此 policy 驱动 `dag run-task --profile auto`:CLI 仍要求显式 `dag run-task`、`dag validate`、`run-dag`,但 `--profile auto` 在确定性 candidate `governanceProfile` 推断后应用 `workflowPolicy.dag.profileRouting`。`humanGatePolicy` 是默认人机边界声明;真实暂停仍由 DAG 节点的 `decisionGate.mode: "pause-on-human"` 与 decision envelope 触发。无 profile 的 `dag run-task <task-id>` 仍为 standard-compatible,供 legacy/review workflow。
15
+ 此 policy 驱动 `dag run-task --profile auto`:CLI 仍要求显式 `dag run-task`、`dag validate`、`run-dag`,但 `--profile auto` 在确定性 candidate `governanceProfile` 推断后应用 `workflowPolicy.dag.profileRouting`。生成器还会把 `outputLanguage` 写入 DagSpec,runner 在每个 Pi/Cursor 节点 prompt 中注入语言规则;代码、命令、路径、JSON 字段与 gate token 保持原样。`humanGatePolicy` 是默认人机边界声明;真实暂停仍由 DAG 节点的 `decisionGate.mode: "pause-on-human"` 与 decision envelope 触发。无 profile 的 `dag run-task <task-id>` 仍为 standard-compatible,供 legacy/review workflow。
15
16
 
16
17
  ### DAG workflow 层级
17
18
 
18
19
  | 优先级 | 入口 | 使用场景 |
19
20
  |-------|-------|----------|
20
21
  | **Primary / Level 3** | `dag run-task --profile auto` / `dag init-hybrid`(已实现) | 从 task `source/` 自动生成 hybrid DAG;`--profile auto` 路由 standard / review-gated / supervised template;无 profile `run-task` 默认为 standard-compatible generate+validate only |
21
- | **Primary / Level 2** | `run-dag --dag <path>` | 跨 Cursor + Pi + shell executor 执行 Agent DAG orchestration |
22
+ | **Primary / Level 2** | `run-dag --dag <path>` | 跨 Pi + shell + static executor 执行 Agent DAG orchestration |
22
23
  历史顺序式 `run analyze|plan|implement|verify|auto|loop|continue` 已移除。trivial one-line 修正时,记录的 main-session surgical patch 仍可能比建 DAG 更省,但它不是第二套 workflow runtime。
23
24
 
24
- **心智模型**:`run-dag` 是 `.` 内自编的 Agent DAG orchestration;Cursor SDK 仅是 `executor: "cursor"` node leaf executor。Cookbook 式 Cursor DAG 示例同样是基于 Cursor SDK local subagent 的 custom DAG runner,不是 Cursor 原生 DAG API。仅可选地借鉴其 observer/streaming/cancel 模式作为 derived feature;不要替换本 repo 的 hybrid schema、`executorModels`、Pi/shell/static executor 或 `.harness/dag-runs` facts。
25
+ **心智模型**:`run-dag` 是 loop-agent 内自编的 Agent DAG orchestration;受治理 Agent leaf executor 只有 Pi。`cursor-prompt` 是独立 sidecar,不是 DAG node executor。不要把 Cursor 重新引入 hybrid schema / `executorModels` / writer 选择。
25
26
 
26
27
  ### Level 2 Agent DAG hybrid(`run-dag`)
27
28
 
@@ -30,10 +31,8 @@ cp examples/hybrid-loop-agent-dag.json <temp-dir>/hybrid-dag.json
30
31
  loop-agent dag validate --dag <temp-dir>/hybrid-dag.json # 常规 validation + ranks;无 dag-runs 副作用
31
32
  loop-agent dag validate --dag <temp-dir>/hybrid-dag.json --strict-models # 非 canonical executorModels 时也失败
32
33
  loop-agent dag validate --dag <temp-dir>/hybrid-dag.json --strict-governance # governance warning(如 read-only artifact drift)时失败
33
- loop-agent dag validate --dag <temp-dir>/hybrid-dag.json --forbid-executor cursor # offline/CI/no-key 显式 no-Cursor;存在 cursor node 时失败
34
- loop-agent run-dag --dag <temp-dir>/hybrid-dag.json --cwd <repo-root> # 执行(若包含 cursor node 则需 CURSOR_API_KEY)
35
- loop-agent run-dag --dag <temp-dir>/hybrid-dag.json --cwd <repo-root> --no-cursor # 存在 cursor node 时执行前失败
36
- loop-agent run-dag --dag <temp-dir>/hybrid-dag.json --init-only --canvas-path <temp-dir>/hybrid-dag.canvas.tsx # 可选 derived Canvas(无需 CURSOR_API_KEY)
34
+ loop-agent run-dag --dag <temp-dir>/hybrid-dag.json --cwd <repo-root> # 执行 Pi/shell/static DAG
35
+ loop-agent run-dag --dag <temp-dir>/hybrid-dag.json --init-only --canvas-path <temp-dir>/hybrid-dag.canvas.tsx # 可选 derived Canvas
37
36
  ```
38
37
 
39
38
  `<temp-dir>` 表示平台原生临时目录;实际命令中 macOS 与 Windows 都使用本机路径。`/` 只作为 repo refs、JSON/Markdown evidence refs 和 glob 约定的稳定分隔符。
@@ -43,7 +42,7 @@ loop-agent run-dag --dag <temp-dir>/hybrid-dag.json --init-only --canvas-path <t
43
42
  **v2 字段**(均可选;缺失时行为同 v1):
44
43
 
45
44
  - 顶层:`objective`、`successCriteria`、`globalConstraints`、`defaults`、`skillsByRole`、`executorModels`
46
- - 每 node:`role`、`skills`、`writePolicy`、`writeSet`、`piStep`、`shell`、`outputContract`、`executor`(`cursor` | `pi` | `shell` | `static`);Pi 写入节点额外声明 `toolProfile: "write"`
45
+ - 每 node:`role`、`skills`、`writePolicy`、`writeSet`、`piStep`、`shell`、`outputContract`、`executor`(`pi` | `shell` | `static`);Pi 写入节点额外声明 `toolProfile: "write"`
47
46
 
48
47
  **Model 生成 DAG 的 template 卫生**:
49
48
 
@@ -53,14 +52,14 @@ loop-agent run-dag --dag <temp-dir>/hybrid-dag.json --init-only --canvas-path <t
53
52
  - 输出独立时优先 same-rank parallel read-only scout(`scout-src`、`scout-tests` 等),而非 serial scout chain。
54
53
  - 仅当 child 真正需要 upstream output 时加 `depends_on`;review 时质疑 single-chain topology。
55
54
  - `exclusive` implementer node 需 narrow、disjoint 的 `writeSet` path;勿用 `**` 或 repo root。
56
- - 默认 no-Cursor DAG 使用 `pi` read-only scouts/reviewers 与 `toolProfile: "write"` exclusive implementer;Cursor 是显式启用的可选 scout / writer backend。
55
+ - 固定 Pi-only DAG:`pi` read-only scouts/reviewers 与 `toolProfile: "write"` exclusive implementer(`implement-pi` / `repair-pi`)。
57
56
  - model routing 用 `executorModels`;勿用 `defaults.model` 或 legacy 顶层 `models`。
58
57
 
59
58
  **运维 warning**:
60
59
 
61
- - **常规 validation**:`dag validate --dag <path>` 做 schema/topology/ranks。JSON 输出含 `governanceProfile`(确定性 `minimal|standard|reviewed|supervised` 推断,含 `process` / `delivery` / `codeChange` signal 与 `reasons`),及 model-matrix drift、governance lint(如 read-only artifact-boundary drift 或 DAG 内 `check-repo.sh` shell env drift)的 warnings。手写临时 DAG spec 执行前用 `dag validate --dag <path> --strict-models`;governance warning 应 fail fast 时加 `--strict-governance`。no-Cursor 环境用 `dag validate --dag <path> --forbid-executor cursor` `run-dag --no-cursor` 捕获显式 Cursor 节点;默认生成 DAG 应使用 `pi` read-only / Pi write profile / shell。仅当有意在 `.harness/dag-runs/active/` 要 active run snapshot 时用 `run-dag --dry-run`。
60
+ - **常规 validation**:`dag validate --dag <path>` 做 schema/topology/ranks。JSON 输出含 `governanceProfile`(确定性 `minimal|standard|reviewed|supervised` 推断,含 `process` / `delivery` / `codeChange` signal 与 `reasons`),及 model-matrix drift、governance lint(如 read-only artifact-boundary drift 或 DAG 内 `check-repo.sh` shell env drift)的 warnings。手写临时 DAG spec 执行前用 `dag validate --dag <path> --strict-models`;governance warning 应 fail fast 时加 `--strict-governance`。含 `executor: "cursor"` 的旧 DAG 会在 schema 校验失败;默认生成 DAG 使用 `pi` read-only / Pi write profile / shell。仅当有意在 `.harness/dag-runs/active/` 要 active run snapshot 时用 `run-dag --dry-run`。
62
61
  - **Governance profile 推断与 routing(code vs skill 分工)**:`./src/workflows/dag/governance-profile.ts` 从 DAG 结构与 write scope 做 **硬确定性推断**。JSON 输出 **报告** `process` / `delivery` / `codeChange` signal 与人类可读 `reasons`;`profile` tier(`minimal|standard|reviewed|supervised`)仅由该模块 code rule 选择(如多个 exclusive writer、repair node、review-gate topology、`loop-agent-runtime-paths`、`scripts-ci-harness-paths`、weak post-implementation shell verification、supervised topology)。baseline `forbiddenPaths`(`.harness/**`、`.harness/dag-runs/**`、`artifacts/**`)是默认 governance,**本身不是** process-risk signal。skill prompt 与本 reference **解释** tier 并摘要 profile 选择原因;不替代 code 推断。`dag run-task` 转发 embedded validate step 的同一 candidate `governanceProfile`。`dag run-task --profile auto` 先将 candidate profile 经 `harness.json.workflowPolicy.dag.profileRouting` 映射,再在 candidate delivery signal 含 `loop-agent-runtime-paths`、`scripts-ci-harness-paths` 或 `public-contract-paths` 时应用 M4 `supervised-quality-gate` promotion;`profileRouting.routingReasons` 记录确定性 reason。无 profile `dag run-task <task-id>` 仍为 standard-compatible;显式 `--profile minimal|standard|reviewed|supervised` 强制对应 template family(当前 policy 下 minimal/standard 路由到 `standard-dag`),高风险 task 应用 `--profile auto` 或显式 `--profile supervised`,而非显式 `--profile reviewed`。
63
- - **Executor model routing**:DAG spec 选 `executor` 与 `complexity`,可通过 `executorModels` 覆盖 `cursor` / `pi` 的 model 名;不选 provider。默认 routing:Cursor 各 complexity 用 `composer-2.5`;Pi read-only 与 Pi write profile 共用 LOW=`wizard-local/gpt-5.3-codex-spark`、MED=`wizard-local/glm-5.2`、HIGH=`wizard-local/gpt-5.5`。`shell` 不用 model,忽略 `executorModels`。
62
+ - **Executor model routing**:DAG spec 选 `executor` 与 `complexity`,可通过 `executorModels.pi` 覆盖 model 名;不选 provider。默认 routing:Pi LOW=`gpt-5.3-codex-spark`、MED=`glm-5.2`、HIGH=`gpt-5.5`。`shell` 不用 model,忽略 `executorModels`。
64
63
  - **Active visibility**:真实 `run-dag` execution 在 run/node 转换时写 active `state.json`,归档前 core runner 暴露 isolated `DagRunObserver` hook 供 derived view。`.harness/dag-runs/completed/<run-id>/` / `paused/<run-id>/` 仍是 source of truth;observer 输出非 canonical。
65
64
  - **可选 Canvas**:传 `--canvas-path <abs-path>` 或 `--canvas <name>` 输出 derived `.canvas.tsx` live view。省略 flag 行为不变。`--init-only` + Canvas 无需 `CURSOR_API_KEY`。
66
65
 
@@ -101,7 +100,7 @@ contract-pi → scout-src ∥ scout-tests → plan-pi → write-set-audit-pi
101
100
  | `soft-verify-shell` | supervision 前归档 focused test exit code |
102
101
  | `process-supervisor-pi` | read-only audit coverage、boundary drift、verify gap、repair scope;应 prominently 输出 `VERDICT: pass` 或 `VERDICT: request-revision` |
103
102
  | `process-gate-shell` | supervisor node JSON 上 runtime `shell.verdictGate`(仅 `pass` 或 `request-revision`) |
104
- | `repair-pi` / optional `repair-cursor` | supervisor 请求 revision 时在 repair `writeSet` 内 bounded exclusive fix |
103
+ | `repair-pi` | supervisor 请求 revision 时在 repair `writeSet` 内 bounded exclusive fix |
105
104
  | `hard-verify-shell` | lint/typecheck + `HARNESS_ALLOW_ACTIVE_DAG_RUNS=1 check-repo.sh` fact |
106
105
  | `authority-surface-audit-pi` + `authority-surface-gate-shell` | 可选 permission/state/tool-exposure audit;仅 authority signal 或显式 `authority-surface-audit` marker 时插入;gate 仅接受 `VERDICT: pass` |
107
106
  | `review-pi` + `review-gate-shell` | Critical/Important → `request-revision`;node JSON 上 `shell.verdictGate` block,除非 extracted verdict 行为 `VERDICT: pass` |
@@ -123,7 +122,6 @@ loop-agent dag run-task <task-id> --profile standard
123
122
  loop-agent dag run-task <task-id> --profile reviewed # 强制 review-gated DAG
124
123
  loop-agent dag run-task <task-id> --profile supervised # 强制 supervised implementation DAG
125
124
  loop-agent dag run-task <task-id> --strict-models # 非 canonical executorModels 时失败
126
- loop-agent dag run-task <task-id> --no-cursor # 显式 no-Cursor 校验;generated cursor node 时失败
127
125
  loop-agent dag run-task <task-id> --execute --cwd <repo-root> # 要求 narrowed implement writeSet
128
126
  loop-agent dag run-task <task-id> --dry-run --cwd <repo-root> # active snapshot 于 .harness/dag-runs/active/
129
127
  loop-agent dag run-task <task-id> --init-only --cwd <repo-root> # pending active snapshot,不执行 node
@@ -211,6 +209,6 @@ review-heavy DAG 中长 shell stdout 可能掩盖 proof 时,用 **evidence-sum
211
209
  | 10 | writeSet planning | scout 应列出链接的 `./skill/references/**` 为 **writeSet expansion candidates**(P2:遗漏链接 skill ref 迫使 main-session patch) |
212
210
  | 11 | Evidence summary | `evidence-summary-shell` / leading `EVIDENCE:` 行是 **practice convention**,非 runtime executor、schema field 或 parser |
213
211
  | 12 | Featureization | 除非 repeated real-run failure 证明 checklist guidance 不够,勿加 runtime/schema/validator/CLI/executor feature |
214
- | 13 | writeSet / writer backend | `exclusive` node 用 narrow、disjoint path;无 `**`;默认用 Pi write profile,仅在显式启用且 task-fit 时用 Cursor |
212
+ | 13 | writeSet / writer backend | `exclusive` node 用 narrow、disjoint path;无 `**`;固定用 Pi write profile |
215
213
  | 14 | Placeholders | 执行前将 `REPLACE/WITH/...` 换为具体 path |
216
214
  | 15 | Governance | in-flight shell:`HARNESS_ALLOW_ACTIVE_DAG_RUNS=1 bash scripts/check-repo.sh`;archive 后:裸 `bash scripts/check-repo.sh` |
@@ -9,11 +9,10 @@ loop-agent loop init <task-id>
9
9
  loop-agent loop status <task-id>
10
10
  loop-agent loop run <task-id> --action shell-verify --command "bash scripts/check-repo.sh"
11
11
  loop-agent loop run <task-id> --action pi-review
12
- loop-agent loop run <task-id> --action cursor-fix --model composer-2.5
13
12
  loop-agent loop run <task-id> --action dag
14
13
  loop-agent loop run <task-id> --action dag --execute
15
14
  loop-agent loop run <task-id> --auto --max-rounds 3
16
- loop-agent loop run <task-id> --auto --max-rounds 3 --allow-cursor-fix
15
+ loop-agent loop run <task-id> --auto --max-rounds 3
17
16
  loop-agent loop add-signal <task-id> --type human_followup --message "review this boundary before closeout"
18
17
  loop-agent loop closeout <task-id>
19
18
  loop-agent loop record-round <task-id> \
@@ -36,15 +35,14 @@ loop-agent loop record-round <task-id> \
36
35
 
37
36
  - `loop run --action shell-verify` 是 deterministic action;命令 exit code 决定 verification result,输出摘要写入 `loop/verification/round-N.json`。
38
37
  - `loop run --action pi-review` 必须保持 read-only;工具 allowlist 固定为 `read,grep,find,ls`,输出必须包含 `findingSummary`、`failureCategory`、`nextHypothesis`、`recommendedAction`、`fixScope`、`rootCause`,其中 `recommendedAction` 只能是 `implement_fix|replan|pause|done`。
39
- - `loop run --action cursor-fix` 必须读取 task `allowedPaths` / `forbiddenPaths`,拒绝空 allowedPaths allowed/forbidden overlap;对 `complexity=medium|large` 的任务,还必须已有 loop `dag` round 证据,或在 `task.json.dagFallbackReason` 中写明 DAG runtime fallback 原因。调用现有 Cursor bounded executor,并把 one-shot evidence 归档到 `.harness/runs/completed|failed/`。
40
- - `cursor-fix` 只表示 bounded write round 已执行;它不会把 loop 标记 complete,下一步必须进入 `shell-verify` 或 review。
38
+ - 自动写入只能通过 `loop run --action dag --execute` / auto DAG execute;须读取 task `allowedPaths` / `forbiddenPaths` 并审查 writer writeSet。
41
39
  - `loop run --action dag` 默认是 review mode:调用 `dag run-task <task-id> --profile auto --strict-models` 生成 DAG,再用 `dag validate --strict-models --strict-governance` 校验,并记录 review packet。
42
40
  - `loop run --action dag --execute` 才会调用 `run-dag`,随后读取 `dag report --json` 作为 round result;paused DAG 会让 loop 进入 `paused`。
43
41
 
44
42
  ## Auto mode 与写入边界
45
43
 
46
- - `loop run --auto --max-rounds N` 使用 deterministic policy 选择下一轮 action;默认只会自动选择 shell-verify、pi-review、dag review 或 policy pause/block,不自动触发 Cursor 写入。
47
- - 自动 `cursor-fix` 必须显式 opt-in:`task.json.loopAutoWritePolicy="enabled"`,或 `loopAutoWritePolicy="approval-required"` 加 pending approval signal / `--allow-cursor-fix`。即使 opt-in,也必须通过 `allowedPaths`/`forbiddenPaths`/DAG evidence guard;guard 失败会 pause,不会绕过写入边界。
44
+ - `loop run --auto --max-rounds N` 使用 deterministic policy 选择下一轮 action;默认只会自动选择 shell-verify、pi-review、dag review 或 policy pause/block
45
+ - 自动 DAG execute 必须显式 opt-in:`task.json.loopAutoExecutionPolicy="enabled"`,或 `approval-required` 加 pending approval;旧 `loopAutoWritePolicy` fail-fast。
48
46
  - auto mode 遇到同类 failure streak 达阈值会 blocked,避免无限重试。
49
47
 
50
48
  ## Signals