@tea-agent/loop-agent 0.12.0 → 0.13.0-beta.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 (284) hide show
  1. package/AGENTS.md +155 -153
  2. package/CHANGELOG.md +338 -265
  3. package/README.md +345 -298
  4. package/bin/agent-worker.js +22 -22
  5. package/bin/loop-agent.js +21 -21
  6. package/dist/application/dag/generate-task-dag.js +28 -28
  7. package/dist/application/evaluation/candidate-hash.js +75 -0
  8. package/dist/application/evaluation/candidate.js +52 -0
  9. package/dist/application/evaluation/replay.js +289 -0
  10. package/dist/application/evaluation/types.js +130 -0
  11. package/dist/cli/command-definitions.js +27 -7
  12. package/dist/cli/program.js +8 -4
  13. package/dist/commands/cursor-prompt.js +6 -6
  14. package/dist/commands/eval.js +235 -0
  15. package/dist/commands/init.js +544 -506
  16. package/dist/commands/knowledge.js +129 -31
  17. package/dist/commands/loop-benchmark.js +11 -11
  18. package/dist/commands/pi-reuse-benchmark.js +16 -16
  19. package/dist/executors/pi-sdk-executor.js +38 -24
  20. package/dist/executors/shell-executor.js +34 -2
  21. package/dist/executors/shell-presets.js +20 -0
  22. package/dist/executors/shell-verification.js +7 -0
  23. package/dist/governance/manifest-types.js +4 -0
  24. package/dist/infrastructure/evaluation/candidate-store.js +435 -0
  25. package/dist/infrastructure/evaluation/store.js +40 -0
  26. package/dist/sidecars/cursor-prompt/executor.js +1 -1
  27. package/dist/task/config-types.js +28 -1
  28. package/dist/task/runtime.js +27 -27
  29. package/dist/worker/cli.js +96 -1
  30. package/dist/worker/delivery/package.js +3 -3
  31. package/dist/worker/feature/decision-loader.js +37 -6
  32. package/dist/worker/feature/next-action.js +10 -2
  33. package/dist/worker/feature/ready-plan-projection.js +81 -0
  34. package/dist/worker/feature/reducer.js +2 -1
  35. package/dist/worker/feature/review.js +19 -2
  36. package/dist/worker/feature/run.js +27 -2
  37. package/dist/worker/follow-up/approve.js +5 -2
  38. package/dist/worker/follow-up/factory.js +1 -1
  39. package/dist/worker/observability/read-model.js +246 -41
  40. package/dist/worker/observe/routes.js +173 -15
  41. package/dist/worker/observe/spec-evidence.js +281 -0
  42. package/dist/worker/observe/static/api.js +46 -27
  43. package/dist/worker/observe/static/app.js +150 -150
  44. package/dist/worker/observe/static/constants.js +148 -148
  45. package/dist/worker/observe/static/copy.js +67 -67
  46. package/dist/worker/observe/static/dag-helpers.js +172 -172
  47. package/dist/worker/observe/static/dag-layout.d.ts +31 -31
  48. package/dist/worker/observe/static/dag-layout.js +83 -83
  49. package/dist/worker/observe/static/dag-model.js +72 -72
  50. package/dist/worker/observe/static/dom.js +61 -61
  51. package/dist/worker/observe/static/format-pool.js +67 -67
  52. package/dist/worker/observe/static/format.js +292 -292
  53. package/dist/worker/observe/static/index.html +308 -308
  54. package/dist/worker/observe/static/kpi.js +94 -94
  55. package/dist/worker/observe/static/relations.js +133 -128
  56. package/dist/worker/observe/static/router.js +93 -85
  57. package/dist/worker/observe/static/run-processing.js +148 -148
  58. package/dist/worker/observe/static/shell-chrome.js +68 -68
  59. package/dist/worker/observe/static/state.js +253 -253
  60. package/dist/worker/observe/static/styles.css +1902 -1890
  61. package/dist/worker/observe/static/views/batch.js +227 -226
  62. package/dist/worker/observe/static/views/dag-graph.js +172 -172
  63. package/dist/worker/observe/static/views/dag-inspector.js +607 -477
  64. package/dist/worker/observe/static/views/dag.js +362 -362
  65. package/dist/worker/observe/static/views/dashboard.js +445 -442
  66. package/dist/worker/observe/static/views/failures.js +143 -143
  67. package/dist/worker/observe/static/views/feature.js +492 -453
  68. package/dist/worker/observe/static/views/pool.js +350 -347
  69. package/dist/worker/observe/static/views/run.js +453 -453
  70. package/dist/worker/observe/static/views/session-timeline.js +205 -205
  71. package/dist/worker/observe/static/views/shell.js +7 -7
  72. package/dist/worker/observe/static/views/task.js +314 -260
  73. package/dist/worker/observe/static/views/timeline.js +163 -163
  74. package/dist/worker/pool/doctor.js +165 -0
  75. package/dist/worker/pool/migrate-state.js +303 -0
  76. package/dist/worker/pool/run-store.js +205 -17
  77. package/dist/worker/pool/types.js +17 -1
  78. package/dist/worker/pool/validation.js +100 -15
  79. package/dist/worker/report/morning-report.js +12 -2
  80. package/dist/worker/runner/run-ready.js +41 -26
  81. package/dist/worker/task-graph/ready-planner.js +136 -0
  82. package/dist/workflows/dag/backend-test-analysis-contract.js +120 -0
  83. package/dist/workflows/dag/canvas-observer.js +275 -275
  84. package/dist/workflows/dag/convergence/controller.js +16 -8
  85. package/dist/workflows/dag/dynamic-runtime/map.js +90 -2
  86. package/dist/workflows/dag/failure-routing.js +12 -1
  87. package/dist/workflows/dag/init-hybrid.js +2404 -360
  88. package/dist/workflows/dag/node-execution.js +9 -0
  89. package/dist/workflows/dag/prompt.js +9 -0
  90. package/dist/workflows/dag/report.js +35 -1
  91. package/dist/workflows/dag/runner.js +28 -2
  92. package/dist/workflows/dag/task-demand-routing.js +383 -0
  93. package/dist/workflows/dag/types.js +51 -13
  94. package/dist/workflows/dag/upstream-artifacts.js +1 -0
  95. package/dist/workflows/dag/validate.js +59 -1
  96. package/docs/README.md +106 -104
  97. package/docs/agent-dag-recovery-playbook.md +195 -184
  98. package/docs/agent-dag-runner.md +67 -67
  99. package/docs/architecture/README.md +26 -26
  100. package/docs/architecture/dag-execution.md +140 -140
  101. package/docs/architecture/evolution.md +54 -53
  102. package/docs/architecture/facts-and-state.md +71 -58
  103. package/docs/architecture/runtime-boundaries.md +191 -191
  104. package/docs/architecture/system-overview.md +93 -93
  105. package/docs/architecture/worker-and-feature.md +85 -81
  106. package/docs/cursor-prompt-sidecar.md +36 -36
  107. package/docs/decisions/README.md +18 -15
  108. package/docs/design/README.md +167 -77
  109. package/docs/development-principles.md +73 -73
  110. package/docs/exec-plans/README.md +6 -6
  111. package/docs/exec-plans/active/README.md +15 -9
  112. package/docs/exec-plans/completed/README.md +85 -73
  113. package/docs/feature-workflow.md +389 -261
  114. package/docs/harness-methodology-debugging.md +153 -153
  115. package/docs/harness-methodology-tdd.md +130 -130
  116. package/docs/harness-methodology-verification.md +27 -27
  117. package/docs/init-surface.manifest.json +289 -280
  118. package/docs/loop-agent-harness.md +142 -130
  119. package/docs/production-readiness.md +96 -96
  120. package/docs/progress/README.md +64 -54
  121. package/docs/reports/README.md +117 -94
  122. package/docs/skills/README.md +7 -7
  123. package/docs/skills/vetted-skill-registry.md +29 -27
  124. package/docs/templates/adr.md +60 -60
  125. package/docs/templates/agent-dag-authority-surface-audit.prompt.md +94 -94
  126. package/docs/templates/agent-dag-decision-envelope.schema.json +213 -213
  127. package/docs/templates/agent-dag-decision-gate-dogfood-report.md +117 -117
  128. package/docs/templates/agent-dag-decision-gate.prompt.md +246 -246
  129. package/docs/templates/agent-dag-process-supervisor.prompt.md +98 -98
  130. package/docs/templates/agent-dag-report.schema.json +473 -473
  131. package/docs/templates/agent-dag-review-verdict.prompt.md +68 -68
  132. package/docs/templates/agent-dag.base.json +190 -190
  133. package/docs/templates/agent-dag.final-verification.json +185 -185
  134. package/docs/templates/agent-dag.schema.json +411 -383
  135. package/docs/templates/agent-dag.supervised-implementation.json +501 -501
  136. package/docs/templates/backend-test-analysis.schema.json +44 -0
  137. package/docs/templates/backend-test-dag.generate-pytest.prompt.md +202 -139
  138. package/docs/templates/backend-test-dag.json +311 -276
  139. package/docs/templates/backend-test-dag.retrospect.prompt.md +125 -125
  140. package/docs/templates/backend-test-dag.review-cases.prompt.md +81 -81
  141. package/docs/templates/exec-plan.md +64 -64
  142. package/docs/templates/feature-spec.md +53 -53
  143. package/docs/templates/frontend-design-contract.md +42 -33
  144. package/docs/templates/frontend-task-constraints.md +35 -25
  145. package/docs/templates/frontend-task-requirement.md +70 -61
  146. package/docs/templates/frontend-test-dag.generate-cases.prompt.md +5 -0
  147. package/docs/templates/frontend-test-dag.json +23 -0
  148. package/docs/templates/frontend-test-dag.retrieve-context.prompt.md +3 -0
  149. package/docs/templates/frontend-test-dag.retrospect.prompt.md +3 -0
  150. package/docs/templates/frontend-test-dag.review-cases.prompt.md +3 -0
  151. package/docs/templates/frontend-test-dag.review-execution.prompt.md +3 -0
  152. package/docs/templates/harness.schema.json +221 -221
  153. package/docs/templates/hybrid-dag.json +188 -188
  154. package/docs/templates/init-evolution-review.md +35 -35
  155. package/docs/templates/interactive-ui-round2-experiment.md +66 -66
  156. package/docs/templates/knowledge-graph-bootstrap-dag.json +118 -0
  157. package/docs/templates/knowledge-sync-dag.json +178 -0
  158. package/docs/templates/knowledge-sync-draft.schema.json +71 -0
  159. package/docs/templates/product-line/AGENTS.md +8 -8
  160. package/docs/templates/product-line/README.md +9 -9
  161. package/docs/templates/product-line/acceptance.yaml +14 -14
  162. package/docs/templates/product-line/closeout.yaml +9 -9
  163. package/docs/templates/product-line/design.md +13 -13
  164. package/docs/templates/product-line/links.md +10 -10
  165. package/docs/templates/product-line/requirement.md +17 -17
  166. package/docs/templates/product-line/task-graph.yaml +15 -15
  167. package/docs/templates/product-line/task.yaml +64 -64
  168. package/docs/templates/product-line/test-plan.md +7 -7
  169. package/docs/templates/production-readiness-checklist.md +57 -57
  170. package/docs/templates/progress-log.md +17 -17
  171. package/docs/templates/project-start-checklist.md +9 -9
  172. package/docs/templates/qa-report.md +48 -48
  173. package/docs/templates/sprint-contract.md +29 -29
  174. package/docs/templates/worker-dogfood-evidence.md +80 -80
  175. package/docs/templates/worker-dogfood-setup.md +68 -68
  176. package/docs/verification-matrix.md +70 -66
  177. package/examples/decision-gate-agent-dag.json +177 -177
  178. package/examples/example-dag.json +46 -46
  179. package/examples/hybrid-loop-agent-dag.json +189 -189
  180. package/harness.json +66 -66
  181. package/package.json +88 -46
  182. package/scripts/check-product-line-docs.sh +29 -29
  183. package/scripts/check-task-pool-root.sh +32 -32
  184. package/scripts/kb-bootstrap-init-skeleton.sh +240 -0
  185. package/scripts/kb-graph-incremental-prepare.mjs +386 -0
  186. package/scripts/kb-graph-incremental-prepare.sh +5 -0
  187. package/scripts/kb-graph-materialize.mjs +105 -0
  188. package/scripts/kb-graph-materialize.sh +4 -0
  189. package/scripts/kb-graph-promote.mjs +164 -0
  190. package/scripts/kb-graph-promote.sh +4 -0
  191. package/scripts/kb-query.mjs +554 -0
  192. package/scripts/kb-query.sh +5 -0
  193. package/skills/agent-worker/SKILL.md +39 -37
  194. package/skills/agent-worker/references/agent-worker-operator.md +60 -43
  195. package/skills/ai-engineering-context/SKILL.md +48 -48
  196. package/skills/analyze-product-dependencies/SKILL.md +67 -0
  197. package/skills/analyze-product-dependencies/agents/openai.yaml +4 -0
  198. package/skills/analyze-product-dependencies/references/api-documentation-schema.md +30 -0
  199. package/skills/analyze-product-dependencies/references/dependency-analysis-schema.md +28 -0
  200. package/skills/analyze-product-dependencies/references/example.md +76 -0
  201. package/skills/analyze-product-dependencies/references/forward-test-cases.md +35 -0
  202. package/skills/analyze-product-dependencies/references/input-contract.md +11 -0
  203. package/skills/analyze-product-dependencies/references/scouting-rules.md +61 -0
  204. package/skills/analyze-product-dependencies/scripts/test-validators.mjs +267 -0
  205. package/skills/analyze-product-dependencies/scripts/validate-api-documentation.mjs +101 -0
  206. package/skills/analyze-product-dependencies/scripts/validate-dependency-analysis.mjs +142 -0
  207. package/skills/analyze-product-dependencies/scripts/validate-product-requirement-input.mjs +76 -0
  208. package/skills/analyze-product-dependencies/scripts/validation-helpers.mjs +146 -0
  209. package/skills/analyze-product-requirements/SKILL.md +90 -0
  210. package/skills/analyze-product-requirements/agents/openai.yaml +4 -0
  211. package/skills/analyze-product-requirements/references/acceptance-criteria.md +91 -0
  212. package/skills/analyze-product-requirements/references/clarification-and-knowledge.md +56 -0
  213. package/skills/analyze-product-requirements/references/example.md +86 -0
  214. package/skills/analyze-product-requirements/references/forward-test-cases.md +66 -0
  215. package/skills/analyze-product-requirements/references/product-analysis-schema.md +32 -0
  216. package/skills/analyze-product-requirements/references/product-requirement-schema.md +33 -0
  217. package/skills/analyze-product-requirements/references/requirement-clarification-schema.md +35 -0
  218. package/skills/analyze-product-requirements/scripts/test-validators.mjs +193 -0
  219. package/skills/analyze-product-requirements/scripts/validate-product-analysis.mjs +69 -0
  220. package/skills/analyze-product-requirements/scripts/validate-product-requirement.mjs +97 -0
  221. package/skills/analyze-product-requirements/scripts/validate-requirement-clarification.mjs +98 -0
  222. package/skills/analyze-product-requirements/scripts/validation-helpers.mjs +156 -0
  223. package/skills/code-review-core/SKILL.md +20 -20
  224. package/skills/codebase-scout/SKILL.md +19 -19
  225. package/skills/frontend-design-review/SKILL.md +66 -59
  226. package/skills/frontend-design-review/references/review-checklist.md +58 -37
  227. package/skills/frontend-implementation/SKILL.md +47 -51
  228. package/skills/frontend-implementation/references/code-standards.md +32 -34
  229. package/skills/frontend-implementation/references/design-spec.md +46 -46
  230. package/skills/frontend-implementation/references/node-contracts.md +76 -32
  231. package/skills/frontend-review/SKILL.md +59 -53
  232. package/skills/frontend-review/references/review-findings.md +47 -42
  233. package/skills/frontend-verification/SKILL.md +53 -40
  234. package/skills/frontend-verification/references/verification-checklist.md +68 -56
  235. package/skills/grill-me/SKILL.md +10 -10
  236. package/skills/grill-with-docs/SKILL.md +88 -88
  237. package/skills/grill-with-docs/adr-format.md +47 -47
  238. package/skills/grill-with-docs/context-format.md +60 -60
  239. package/skills/init-capability-evolution/SKILL.md +70 -70
  240. package/skills/loop-agent/SKILL.md +151 -151
  241. package/skills/loop-agent/references/README.md +67 -67
  242. package/skills/loop-agent/references/command-reference.md +505 -452
  243. package/skills/loop-agent/references/docs-converge.md +126 -126
  244. package/skills/loop-agent/references/harness-policy.md +263 -263
  245. package/skills/loop-agent/references/hybrid-dag.md +238 -233
  246. package/skills/loop-agent/references/learned/README.md +21 -21
  247. package/skills/loop-agent/references/long-running-loop.md +57 -57
  248. package/skills/loop-agent/references/model-routing.md +36 -36
  249. package/skills/loop-agent/references/multi-worktree.md +54 -54
  250. package/skills/loop-agent/references/one-shot-runs.md +85 -85
  251. package/skills/loop-agent/references/orchestrator-and-interventions.md +169 -169
  252. package/skills/loop-agent/references/pi-prompt.md +23 -23
  253. package/skills/loop-agent/references/pi-subagent-assisted-mode.md +84 -84
  254. package/skills/loop-agent/references/post-implementation-and-patterns.md +44 -44
  255. package/skills/loop-agent/references/task-workflow.md +89 -89
  256. package/skills/loop-agent/references/verification-and-failure-handling.md +139 -139
  257. package/skills/playwright-cli/SKILL.md +420 -0
  258. package/skills/playwright-cli/references/element-attributes.md +23 -0
  259. package/skills/playwright-cli/references/playwright-tests.md +39 -0
  260. package/skills/playwright-cli/references/request-mocking.md +87 -0
  261. package/skills/playwright-cli/references/running-code.md +241 -0
  262. package/skills/playwright-cli/references/session-management.md +225 -0
  263. package/skills/playwright-cli/references/storage-state.md +275 -0
  264. package/skills/playwright-cli/references/test-generation.md +433 -0
  265. package/skills/playwright-cli/references/tracing.md +139 -0
  266. package/skills/playwright-cli/references/video-recording.md +143 -0
  267. package/skills/playwright-cli-case-generator/SKILL.md +74 -0
  268. package/skills/requesting-code-review/SKILL.md +101 -101
  269. package/skills/requesting-code-review/code-reviewer.md +168 -168
  270. package/skills/systematic-debugging/CREATION-LOG.md +119 -119
  271. package/skills/systematic-debugging/SKILL.md +296 -296
  272. package/skills/systematic-debugging/condition-based-waiting-example.ts +158 -158
  273. package/skills/systematic-debugging/condition-based-waiting.md +115 -115
  274. package/skills/systematic-debugging/defense-in-depth.md +122 -122
  275. package/skills/systematic-debugging/find-polluter.sh +63 -63
  276. package/skills/systematic-debugging/root-cause-tracing.md +169 -169
  277. package/skills/systematic-debugging/test-academic.md +14 -14
  278. package/skills/systematic-debugging/test-pressure-1.md +58 -58
  279. package/skills/systematic-debugging/test-pressure-2.md +68 -68
  280. package/skills/systematic-debugging/test-pressure-3.md +69 -69
  281. package/skills/test-driven-development/SKILL.md +20 -20
  282. package/skills/using-git-worktrees/SKILL.md +215 -215
  283. package/skills/verification-before-completion/SKILL.md +154 -154
  284. package/skills/webapp-testing/SKILL.md +19 -19
@@ -1,44 +1,44 @@
1
- # 实现后处理与常见模式
2
-
3
- 用于 post-verify handoff、多 item PRD 处理、fast bounded task、快速 status 检查与 Pi timeout 处理。
4
-
5
- ## 实现后处理
6
-
7
- DAG run、promotion、closeout 和最终验证完成后:
8
- 1. 检查 git diff 确认预期变更
9
- 2. 用 git commit 并 push
10
- 3. 用户说「继续」时,跑 `status` 看 task 是否 `completed`,再创建下一个 task
11
-
12
- ## 常见模式
13
-
14
- ### 处理多 item PRD
15
- ```
16
- 1. new-task <id>-r1 → 准备 source → dag run-task → dag validate → run-dag → promote/closeout
17
- 2. new-task <id>-r2 → 重复
18
- 3. ...
19
- ```
20
-
21
- ### Bounded task 路径
22
- ```
23
- 1. new-task <id>
24
- 2. 写 source/需求.md + source/执行约束.md
25
- 3. dag run-task <id> --profile auto --strict-models --output <temp-dir>/<id>-dag.json
26
- 4. dag validate --dag <temp-dir>/<id>-dag.json --strict-models --strict-governance
27
- 5. run-dag --dag <temp-dir>/<id>-dag.json --cwd <repo-root>
28
- 6. promote-run / closeout / final verification
29
- ```
30
-
31
- `<temp-dir>` 表示平台原生临时目录;实际命令中使用 macOS/Windows 本机路径。
32
-
33
- **关键**:实现 work 由 DAG node 和 executor 执行;main session 负责审 DAG、审 writeSet、跑验证和 handoff。
34
-
35
- ### 跨所有 task 快速 status
36
- ```bash
37
- loop-agent stats
38
- ```
39
-
40
- ### 处理 pi timeout
41
- - 默认每 step timeout 现为 30 分钟 — 通常足够
42
- - pi step 仍 timeout 时,用 `stats` 看 duration 分布
43
- - Bash tool call 应用宽松 timeout:analyze/plan 300s,implement 480s+,verify/retrospective 240s+
44
- - 失败时优先读 `dag report` / `dag doctor`,再决定 repair DAG、bounded Cursor fix 或暂停
1
+ # 实现后处理与常见模式
2
+
3
+ 用于 post-verify handoff、多 item PRD 处理、fast bounded task、快速 status 检查与 Pi timeout 处理。
4
+
5
+ ## 实现后处理
6
+
7
+ DAG run、promotion、closeout 和最终验证完成后:
8
+ 1. 检查 git diff 确认预期变更
9
+ 2. 用 git commit 并 push
10
+ 3. 用户说「继续」时,跑 `status` 看 task 是否 `completed`,再创建下一个 task
11
+
12
+ ## 常见模式
13
+
14
+ ### 处理多 item PRD
15
+ ```
16
+ 1. new-task <id>-r1 → 准备 source → dag run-task → dag validate → run-dag → promote/closeout
17
+ 2. new-task <id>-r2 → 重复
18
+ 3. ...
19
+ ```
20
+
21
+ ### Bounded task 路径
22
+ ```
23
+ 1. new-task <id>
24
+ 2. 写 source/需求.md + source/执行约束.md
25
+ 3. dag run-task <id> --profile auto --strict-models --output <temp-dir>/<id>-dag.json
26
+ 4. dag validate --dag <temp-dir>/<id>-dag.json --strict-models --strict-governance
27
+ 5. run-dag --dag <temp-dir>/<id>-dag.json --cwd <repo-root>
28
+ 6. promote-run / closeout / final verification
29
+ ```
30
+
31
+ `<temp-dir>` 表示平台原生临时目录;实际命令中使用 macOS/Windows 本机路径。
32
+
33
+ **关键**:实现 work 由 DAG node 和 executor 执行;main session 负责审 DAG、审 writeSet、跑验证和 handoff。
34
+
35
+ ### 跨所有 task 快速 status
36
+ ```bash
37
+ loop-agent stats
38
+ ```
39
+
40
+ ### 处理 pi timeout
41
+ - 默认每 step timeout 现为 30 分钟 — 通常足够
42
+ - pi step 仍 timeout 时,用 `stats` 看 duration 分布
43
+ - Bash tool call 应用宽松 timeout:analyze/plan 300s,implement 480s+,verify/retrospective 240s+
44
+ - 失败时优先读 `dag report` / `dag doctor`,再决定 repair DAG、bounded Cursor fix 或暂停
@@ -1,89 +1,89 @@
1
- # Task Workflow 规则
2
-
3
- 本文只保留 legacy task 目录和 source material 的读取规则。历史顺序式 `run analyze|plan|spec|implement|verify|auto|loop|continue` 工作流已经移除,不再作为 micro、fallback 或 compatibility 执行路径。
4
-
5
- ## 当前执行入口
6
-
7
- 所有需要可恢复、可验证、可交接的实现工作都走 DAG 路径:
8
-
9
- ```bash
10
- loop-agent new-task <task-id> "Task Title"
11
- loop-agent dag run-task <task-id> --profile auto --strict-models --output <temp-dir>/<task-id>-dag.json
12
- loop-agent dag validate --dag <temp-dir>/<task-id>-dag.json --strict-models --strict-governance
13
- loop-agent run-dag --dag <temp-dir>/<task-id>-dag.json --cwd <repo-root>
14
- ```
15
-
16
- `<temp-dir>` 表示平台原生临时目录。实际文件路径必须兼容 macOS 和 Windows;只有 repo refs、JSON/Markdown 证据 refs 和 glob 约定默认使用 `/`。
17
-
18
- 当目标仓库是 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>`。
19
-
20
- 低风险的一行修正文档或配置时,可以由 main session 做 surgical patch,但仍必须记录 scope 并运行对应验证命令。
21
-
22
- ## Source Materials
23
-
24
- `new-task` 后至少维护:
25
-
26
- ```text
27
- .harness/tasks/<task-id>/
28
- source/
29
- references/ # 原始 PRD / design / acceptance(不可变)
30
- source-manifest.json # import-prd 写入的 hash 清单
31
- 需求.md # 派生执行契约
32
- 执行约束.md
33
- task.json
34
- ```
35
-
36
- - 用户原始 PRD 用 `loop-agent import-prd <task-id> --file <prd>` 归档到 `source/references/`,禁止 AI 改写。
37
- - `需求.md` 是派生执行契约:写清目标、验收标准、非目标,并用 REQ/AC 或原文锚点映射回 references。
38
- - `执行约束.md` 写清允许文件、禁止改动、硬约束和验证命令。
39
- - 若 `docs/` 已有权威 plan/spec/PRD,优先 `import-prd` 复制,再在 `需求.md` 引用;避免把长 PRD 直接改写成唯一 source。
40
- - Worker / TaskSpec materialize 路径会把 `source_docs` 复制到 `source/references/`,并在派生 `需求.md` 顶部声明“冲突以 references 为准”;`acceptance_refs` 应展开为短摘要而不只写 ID。
41
- - review 节点必须三方对照:`source/references/*`(尤其 requirement/acceptance)、派生 `需求.md`、以及实现/验证证据。
42
-
43
- ## Task State
44
-
45
- 当前 task 状态由 DAG-oriented read model 推导:
46
-
47
- - source readiness
48
- - DAG draft
49
- - latest DAG run
50
- - promotion
51
- - closeout
52
- - loop state
53
- - legacy workflow snapshot
54
-
55
- 旧 `.workflow_state.json` 只能作为兼容读取输入,不是新任务 next action 或完成状态的权威来源。
56
-
57
- ## Repo Adapters
58
-
59
- loop-agent 自动检测所在 repo,并按目标 repo 的 `harness.json` 与治理根目录选择验证入口。跨目录操作时显式传入目标仓库:
60
-
61
- ```bash
62
- loop-agent --repo-root /path/to/target-repo <command>
63
- ```
64
-
65
- ## Task Config
66
-
67
- 新任务不应写入旧 `flow` 字段。常用字段是:
68
-
69
- - `taskId`
70
- - `title`
71
- - `complexity`
72
- - `allowedPaths`
73
- - `forbiddenPaths`
74
- - `hardConstraints`
75
- - `verifyCommands` / adapter verification settings
76
- - `dagFallbackReason`,仅用于记录为何某个长期 loop 缺少 DAG round evidence
77
-
78
- ## Verification
79
-
80
- 完成声明必须来自新鲜验证证据。按目标 repo 的 `harness.json.governanceRoot` 下 `verification-matrix.md` 选择最小证明命令;loop-agent 自身常用:
81
-
82
- ```bash
83
- npm run typecheck
84
- npm test
85
- bash scripts/check-repo.sh
86
- bash scripts/ci.sh
87
- ```
88
-
89
- Windows 上通过 Git Bash 或配置好的兼容 Bash 运行 `scripts/*.sh`;不要把 POSIX 路径假设写入 CLI、模板或 task source。
1
+ # Task Workflow 规则
2
+
3
+ 本文只保留 legacy task 目录和 source material 的读取规则。历史顺序式 `run analyze|plan|spec|implement|verify|auto|loop|continue` 工作流已经移除,不再作为 micro、fallback 或 compatibility 执行路径。
4
+
5
+ ## 当前执行入口
6
+
7
+ 所有需要可恢复、可验证、可交接的实现工作都走 DAG 路径:
8
+
9
+ ```bash
10
+ loop-agent new-task <task-id> "Task Title"
11
+ loop-agent dag run-task <task-id> --profile auto --strict-models --output <temp-dir>/<task-id>-dag.json
12
+ loop-agent dag validate --dag <temp-dir>/<task-id>-dag.json --strict-models --strict-governance
13
+ loop-agent run-dag --dag <temp-dir>/<task-id>-dag.json --cwd <repo-root>
14
+ ```
15
+
16
+ `<temp-dir>` 表示平台原生临时目录。实际文件路径必须兼容 macOS 和 Windows;只有 repo refs、JSON/Markdown 证据 refs 和 glob 约定默认使用 `/`。
17
+
18
+ 当目标仓库是 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>`。
19
+
20
+ 低风险的一行修正文档或配置时,可以由 main session 做 surgical patch,但仍必须记录 scope 并运行对应验证命令。
21
+
22
+ ## Source Materials
23
+
24
+ `new-task` 后至少维护:
25
+
26
+ ```text
27
+ .harness/tasks/<task-id>/
28
+ source/
29
+ references/ # 原始 PRD / design / acceptance(不可变)
30
+ source-manifest.json # import-prd 写入的 hash 清单
31
+ 需求.md # 派生执行契约
32
+ 执行约束.md
33
+ task.json
34
+ ```
35
+
36
+ - 用户原始 PRD 用 `loop-agent import-prd <task-id> --file <prd>` 归档到 `source/references/`,禁止 AI 改写。
37
+ - `需求.md` 是派生执行契约:写清目标、验收标准、非目标,并用 REQ/AC 或原文锚点映射回 references。
38
+ - `执行约束.md` 写清允许文件、禁止改动、硬约束和验证命令。
39
+ - 若 `docs/` 已有权威 plan/spec/PRD,优先 `import-prd` 复制,再在 `需求.md` 引用;避免把长 PRD 直接改写成唯一 source。
40
+ - Worker / TaskSpec materialize 路径会把 `source_docs` 复制到 `source/references/`,并在派生 `需求.md` 顶部声明“冲突以 references 为准”;`acceptance_refs` 应展开为短摘要而不只写 ID。
41
+ - review 节点必须三方对照:`source/references/*`(尤其 requirement/acceptance)、派生 `需求.md`、以及实现/验证证据。
42
+
43
+ ## Task State
44
+
45
+ 当前 task 状态由 DAG-oriented read model 推导:
46
+
47
+ - source readiness
48
+ - DAG draft
49
+ - latest DAG run
50
+ - promotion
51
+ - closeout
52
+ - loop state
53
+ - legacy workflow snapshot
54
+
55
+ 旧 `.workflow_state.json` 只能作为兼容读取输入,不是新任务 next action 或完成状态的权威来源。
56
+
57
+ ## Repo Adapters
58
+
59
+ loop-agent 自动检测所在 repo,并按目标 repo 的 `harness.json` 与治理根目录选择验证入口。跨目录操作时显式传入目标仓库:
60
+
61
+ ```bash
62
+ loop-agent --repo-root /path/to/target-repo <command>
63
+ ```
64
+
65
+ ## Task Config
66
+
67
+ 新任务不应写入旧 `flow` 字段。常用字段是:
68
+
69
+ - `taskId`
70
+ - `title`
71
+ - `complexity`
72
+ - `allowedPaths`
73
+ - `forbiddenPaths`
74
+ - `hardConstraints`
75
+ - `verifyCommands` / adapter verification settings
76
+ - `dagFallbackReason`,仅用于记录为何某个长期 loop 缺少 DAG round evidence
77
+
78
+ ## Verification
79
+
80
+ 完成声明必须来自新鲜验证证据。按目标 repo 的 `harness.json.governanceRoot` 下 `verification-matrix.md` 选择最小证明命令;loop-agent 自身常用:
81
+
82
+ ```bash
83
+ npm run typecheck
84
+ npm test
85
+ bash scripts/check-repo.sh
86
+ bash scripts/ci.sh
87
+ ```
88
+
89
+ Windows 上通过 Git Bash 或配置好的兼容 Bash 运行 `scripts/*.sh`;不要把 POSIX 路径假设写入 CLI、模板或 task source。
@@ -1,139 +1,139 @@
1
- # Verification 与失败处理
2
-
3
- 选择 verify strategy knobs、解读 verify 结果、决定失败后是否继续,或 closeout workflow/runtime/docs/skill 变更时使用本文。
4
-
5
- ## Verify strategy 与 completion audit
6
-
7
- ## Production Readiness v0.1
8
-
9
- 低/中风险单 repo DAG 任务如果声明 production-ready v0.1,必须按 `docs/production-readiness.md` 和 `docs/templates/production-readiness-checklist.md` 收口。
10
-
11
- 支持范围:
12
-
13
- - single repo
14
- - bounded task
15
- - explicit task source
16
- - explicit `allowedPaths` / `forbiddenPaths` / write scope
17
- - shell verification
18
- - report / doctor / closeout handoff
19
-
20
- 非目标:
21
-
22
- - automatic merge
23
- - automatic release
24
- - production secrets
25
- - production database
26
- - high-risk migration
27
- - online Worker Pool
28
- - writable Dynamic Workflow sharded migration
29
-
30
- 失败分类是路由字段,不是主状态;不要覆盖 `.harness/dag-runs/completed/**` 的原始事实。报告和 handoff 应保留:
31
-
32
- ```text
33
- raw_failure_category
34
- dag_normalized_failure_category
35
- product_line_failure_category
36
- recommended_follow_up
37
- ```
38
-
39
- product-line taxonomy 的事实源是 `docs/design/state-and-failure-taxonomy.md`。
40
-
41
- ### Verify 始终在本地跑
42
- `verify` step 跑确定性命令(check-repo.sh + tests + typecheck)。**不**调用 pi。因此快且可靠。
43
-
44
- ### Verify strategy knobs
45
- 需要更紧的 verify 控制时,用 task-level config:
46
- ```json
47
- {
48
- "verifyPreset": "auto",
49
- "verifyMode": "serial",
50
- "verifyRetryCount": 0,
51
- "verifyFailFast": false
52
- }
53
- ```
54
-
55
- - `verifyPreset`:`auto | quick | standard | full`
56
- - `auto`:`small -> quick`,`medium -> standard`,`large -> full`
57
- - 默认 `serial`,优先避免本机测试、构建和治理检查互相争抢资源
58
- - 确认命令互不影响且机器资源充足时,才显式使用 `parallel`
59
- - `verifyFailFast` 仅在 `serial` mode 有意义
60
- - retry 保持小;用于 flaky 环境问题,不要掩盖真实失败
61
-
62
- ### 长输出处理
63
-
64
- - DAG shell 命令和 Worker 子进程只在内存中保留最近一段 stdout/stderr,并在结果中标明是否截断及原始字节数。
65
- - 需要完整日志时读取运行 artifact 中的 `stdout.txt`、`stderr.txt` 或 DAG 节点的 `commands/*.stdout.txt`、`commands/*.stderr.txt`;不要依赖页面摘要还原全部输出。
66
-
67
- ### Verify 后的 goal completion audit
68
- - 有 active task goal 且 `verify` 通过时,loop-agent 跑 goal completion audit。
69
- - 若 `source/需求.md` 仍有未勾 checklist(`- [ ]`),task **不会**以 completed 结束。
70
- - 若确定性 requirement coverage audit 发现未覆盖需求,task **不会**以 completed 结束。
71
- - `explicitly_out_of_scope` 需求(如 `## 非目标` 下)**不算** coverage gap。
72
- - 独立 audit 报告用 `handoff coverage <task-id> [--json|--markdown]`。
73
- - task status、source/artifacts、DAG outcome、verification 记录可能 drift 时用 `dag reconcile-tasks --glob '<pattern>' [--json|--markdown]`。默认仅报告;`--patch` 不能伪造 verification evidence。
74
-
75
- ### supervised repair gate 与 runtime contract 失败
76
-
77
- - `repair artifact gate failed: ... no unique governed Pi writer` / `declares repairNodeId "..." but no task with that id exists`:DagSpec 的 `shell.repairArtifactGate` 未声明 `repairNodeId`,或声明的修复节点缺失、不是 gate 直接下游、不是受治理 Pi writer(`executor: pi`、`toolProfile: write`、`writePolicy: exclusive`、`allowedPaths`/`writeSet` 非空且不与 `forbiddenPaths` 冲突)。用当前 controller 重新生成 supervised DAG,或按上述契约补齐修复节点,不要靠改节点名绕过。
78
- - `incompatible DAG runtime contract` / `runtime contract requires ...`:DagSpec 的 `runtimeContract` 要求的能力超出当前 controller。升级 controller 或用当前 controller 重新生成 DAG;该 preflight 在任何节点执行前失败,不会留下半执行的 run。
79
- - `controller identity drifted` / `artifact was tampered with`:resume 时的 controller 与 run 创建时冻结的 identity 不一致(package 内容、binary 或 fingerprint 变化),或 `controller-identity.json` 被篡改。启动新 run,而不是在漂移后 resume;completed run facts 保持只读。
80
-
81
- ### Verify 默认保存进度
82
- `verify` 成功后,loop-agent 默认:
83
-
84
- 1. 在当前 task scope 内选文件
85
- 2. 跑 `git add`
86
- 3. 创建 commit 保存已验证进度
87
-
88
- 默认行为:
89
-
90
- - `autoCommitAfterVerify: true`
91
- - commit message:`chore(task): save verified progress for <taskId>`
92
-
93
- `task.json` 可选覆盖:
94
-
95
- ```json
96
- {
97
- "autoCommitAfterVerify": false,
98
- "autoCommitMessage": "docs(workflow): save verified progress"
99
- }
100
- ```
101
-
102
- 最佳实践:保持 `allowedPaths` 准确。auto-commit 用 task path 约束,避免把无关 dirty 文件扫进 progress commit。
103
-
104
- ### Cursor bounded write 后的独立复核
105
-
106
- Cursor bounded execution 完成后,主会话必须独立执行:
107
-
108
- ```bash
109
- git status --short
110
- git diff --stat
111
- bash scripts/check-repo.sh
112
- npm run lint
113
- npm test
114
- npm run typecheck
115
- loop-agent inspect
116
- loop-agent docs audit
117
- loop-agent handoff check <task-id>
118
- ```
119
-
120
- Cursor 自己报告的完成不算 verification fact;以上命令的 exit code 与输出才是完成声明的证据。
121
-
122
- ### 失败处理
123
-
124
- child agent 失败时:
125
-
126
- - **业务/测试失败**:让 child agent 在同一 task bounds 内修复
127
- - **Workflow runtime 失败**(如 `loop-agent` runtime 问题、部分 artifact 生成、输出聚合 crash):保持 task contract,但允许 main agent 或 child agent 在同一 scoped implementation 内手动完成,仍跑 `verify`
128
- - **意外残留**(tmp 文件、探索性 mock、scratch 输出):handoff 前删除
129
-
130
- ### Closeout 规则
131
- workflow/runtime/docs/skill 变更结束时:
132
- ```bash
133
- loop-agent docs audit
134
- loop-agent handoff check <task-id>
135
- ```
136
-
137
- active exec plan 实质完成时,用 `docs archive` 归档并更新 active/completed 索引,勿留 stale active status。
138
-
139
- failed DAG run 不应生成成功式 closeout。它应该生成 failure handoff,至少包含 what failed、evidence、classification、recommended follow-up、safe retry conditions 和 human decision needed。
1
+ # Verification 与失败处理
2
+
3
+ 选择 verify strategy knobs、解读 verify 结果、决定失败后是否继续,或 closeout workflow/runtime/docs/skill 变更时使用本文。
4
+
5
+ ## Verify strategy 与 completion audit
6
+
7
+ ## Production Readiness v0.1
8
+
9
+ 低/中风险单 repo DAG 任务如果声明 production-ready v0.1,必须按 `docs/production-readiness.md` 和 `docs/templates/production-readiness-checklist.md` 收口。
10
+
11
+ 支持范围:
12
+
13
+ - single repo
14
+ - bounded task
15
+ - explicit task source
16
+ - explicit `allowedPaths` / `forbiddenPaths` / write scope
17
+ - shell verification
18
+ - report / doctor / closeout handoff
19
+
20
+ 非目标:
21
+
22
+ - automatic merge
23
+ - automatic release
24
+ - production secrets
25
+ - production database
26
+ - high-risk migration
27
+ - online Worker Pool
28
+ - writable Dynamic Workflow sharded migration
29
+
30
+ 失败分类是路由字段,不是主状态;不要覆盖 `.harness/dag-runs/completed/**` 的原始事实。报告和 handoff 应保留:
31
+
32
+ ```text
33
+ raw_failure_category
34
+ dag_normalized_failure_category
35
+ product_line_failure_category
36
+ recommended_follow_up
37
+ ```
38
+
39
+ product-line taxonomy 的事实源是 `docs/design/state-and-failure-taxonomy.md`。
40
+
41
+ ### Verify 始终在本地跑
42
+ `verify` step 跑确定性命令(check-repo.sh + tests + typecheck)。**不**调用 pi。因此快且可靠。
43
+
44
+ ### Verify strategy knobs
45
+ 需要更紧的 verify 控制时,用 task-level config:
46
+ ```json
47
+ {
48
+ "verifyPreset": "auto",
49
+ "verifyMode": "serial",
50
+ "verifyRetryCount": 0,
51
+ "verifyFailFast": false
52
+ }
53
+ ```
54
+
55
+ - `verifyPreset`:`auto | quick | standard | full`
56
+ - `auto`:`small -> quick`,`medium -> standard`,`large -> full`
57
+ - 默认 `serial`,优先避免本机测试、构建和治理检查互相争抢资源
58
+ - 确认命令互不影响且机器资源充足时,才显式使用 `parallel`
59
+ - `verifyFailFast` 仅在 `serial` mode 有意义
60
+ - retry 保持小;用于 flaky 环境问题,不要掩盖真实失败
61
+
62
+ ### 长输出处理
63
+
64
+ - DAG shell 命令和 Worker 子进程只在内存中保留最近一段 stdout/stderr,并在结果中标明是否截断及原始字节数。
65
+ - 需要完整日志时读取运行 artifact 中的 `stdout.txt`、`stderr.txt` 或 DAG 节点的 `commands/*.stdout.txt`、`commands/*.stderr.txt`;不要依赖页面摘要还原全部输出。
66
+
67
+ ### Verify 后的 goal completion audit
68
+ - 有 active task goal 且 `verify` 通过时,loop-agent 跑 goal completion audit。
69
+ - 若 `source/需求.md` 仍有未勾 checklist(`- [ ]`),task **不会**以 completed 结束。
70
+ - 若确定性 requirement coverage audit 发现未覆盖需求,task **不会**以 completed 结束。
71
+ - `explicitly_out_of_scope` 需求(如 `## 非目标` 下)**不算** coverage gap。
72
+ - 独立 audit 报告用 `handoff coverage <task-id> [--json|--markdown]`。
73
+ - task status、source/artifacts、DAG outcome、verification 记录可能 drift 时用 `dag reconcile-tasks --glob '<pattern>' [--json|--markdown]`。默认仅报告;`--patch` 不能伪造 verification evidence。
74
+
75
+ ### supervised repair gate 与 runtime contract 失败
76
+
77
+ - `repair artifact gate failed: ... no unique governed Pi writer` / `declares repairNodeId "..." but no task with that id exists`:DagSpec 的 `shell.repairArtifactGate` 未声明 `repairNodeId`,或声明的修复节点缺失、不是 gate 直接下游、不是受治理 Pi writer(`executor: pi`、`toolProfile: write`、`writePolicy: exclusive`、`allowedPaths`/`writeSet` 非空且不与 `forbiddenPaths` 冲突)。用当前 controller 重新生成 supervised DAG,或按上述契约补齐修复节点,不要靠改节点名绕过。
78
+ - `incompatible DAG runtime contract` / `runtime contract requires ...`:DagSpec 的 `runtimeContract` 要求的能力超出当前 controller。升级 controller 或用当前 controller 重新生成 DAG;该 preflight 在任何节点执行前失败,不会留下半执行的 run。
79
+ - `controller identity drifted` / `artifact was tampered with`:resume 时的 controller 与 run 创建时冻结的 identity 不一致(package 内容、binary 或 fingerprint 变化),或 `controller-identity.json` 被篡改。启动新 run,而不是在漂移后 resume;completed run facts 保持只读。
80
+
81
+ ### Verify 默认保存进度
82
+ `verify` 成功后,loop-agent 默认:
83
+
84
+ 1. 在当前 task scope 内选文件
85
+ 2. 跑 `git add`
86
+ 3. 创建 commit 保存已验证进度
87
+
88
+ 默认行为:
89
+
90
+ - `autoCommitAfterVerify: true`
91
+ - commit message:`chore(task): save verified progress for <taskId>`
92
+
93
+ `task.json` 可选覆盖:
94
+
95
+ ```json
96
+ {
97
+ "autoCommitAfterVerify": false,
98
+ "autoCommitMessage": "docs(workflow): save verified progress"
99
+ }
100
+ ```
101
+
102
+ 最佳实践:保持 `allowedPaths` 准确。auto-commit 用 task path 约束,避免把无关 dirty 文件扫进 progress commit。
103
+
104
+ ### Cursor bounded write 后的独立复核
105
+
106
+ Cursor bounded execution 完成后,主会话必须独立执行:
107
+
108
+ ```bash
109
+ git status --short
110
+ git diff --stat
111
+ bash scripts/check-repo.sh
112
+ npm run lint
113
+ npm test
114
+ npm run typecheck
115
+ loop-agent inspect
116
+ loop-agent docs audit
117
+ loop-agent handoff check <task-id>
118
+ ```
119
+
120
+ Cursor 自己报告的完成不算 verification fact;以上命令的 exit code 与输出才是完成声明的证据。
121
+
122
+ ### 失败处理
123
+
124
+ child agent 失败时:
125
+
126
+ - **业务/测试失败**:让 child agent 在同一 task bounds 内修复
127
+ - **Workflow runtime 失败**(如 `loop-agent` runtime 问题、部分 artifact 生成、输出聚合 crash):保持 task contract,但允许 main agent 或 child agent 在同一 scoped implementation 内手动完成,仍跑 `verify`
128
+ - **意外残留**(tmp 文件、探索性 mock、scratch 输出):handoff 前删除
129
+
130
+ ### Closeout 规则
131
+ workflow/runtime/docs/skill 变更结束时:
132
+ ```bash
133
+ loop-agent docs audit
134
+ loop-agent handoff check <task-id>
135
+ ```
136
+
137
+ active exec plan 实质完成时,用 `docs archive` 归档并更新 active/completed 索引,勿留 stale active status。
138
+
139
+ failed DAG run 不应生成成功式 closeout。它应该生成 failure handoff,至少包含 what failed、evidence、classification、recommended follow-up、safe retry conditions 和 human decision needed。