@tea-agent/loop-agent 0.13.0 → 0.14.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 (270) hide show
  1. package/AGENTS.md +157 -157
  2. package/CHANGELOG.md +73 -301
  3. package/README.md +338 -334
  4. package/bin/agent-worker.js +22 -22
  5. package/bin/loop-agent.js +21 -21
  6. package/dist/commands/cursor-prompt.js +6 -6
  7. package/dist/commands/init.js +505 -505
  8. package/dist/commands/loop-benchmark.js +11 -11
  9. package/dist/commands/pi-reuse-benchmark.js +16 -16
  10. package/dist/executors/pi-event-serializer.js +33 -11
  11. package/dist/sidecars/cursor-prompt/executor.js +1 -1
  12. package/dist/task/runtime.js +27 -27
  13. package/dist/worker/observe/spec-evidence.js +19 -10
  14. package/dist/worker/observe/static/api.js +46 -46
  15. package/dist/worker/observe/static/app.js +151 -150
  16. package/dist/worker/observe/static/constants.js +156 -148
  17. package/dist/worker/observe/static/copy.js +67 -67
  18. package/dist/worker/observe/static/dag-helpers.js +201 -172
  19. package/dist/worker/observe/static/dag-layout.d.ts +31 -31
  20. package/dist/worker/observe/static/dag-layout.js +83 -83
  21. package/dist/worker/observe/static/dag-model.js +72 -72
  22. package/dist/worker/observe/static/dom.js +122 -122
  23. package/dist/worker/observe/static/format-pool.d.ts +71 -0
  24. package/dist/worker/observe/static/format-pool.js +134 -67
  25. package/dist/worker/observe/static/format.js +317 -292
  26. package/dist/worker/observe/static/index.html +350 -308
  27. package/dist/worker/observe/static/kpi.js +100 -94
  28. package/dist/worker/observe/static/markdown-render.js +124 -0
  29. package/dist/worker/observe/static/relations.js +133 -133
  30. package/dist/worker/observe/static/router.js +93 -93
  31. package/dist/worker/observe/static/run-processing.js +148 -148
  32. package/dist/worker/observe/static/shell-chrome.js +74 -68
  33. package/dist/worker/observe/static/state.js +273 -267
  34. package/dist/worker/observe/static/styles.css +2504 -1902
  35. package/dist/worker/observe/static/views/batch.js +227 -227
  36. package/dist/worker/observe/static/views/dag-graph.js +172 -172
  37. package/dist/worker/observe/static/views/dag-inspector.js +530 -627
  38. package/dist/worker/observe/static/views/dag.js +371 -371
  39. package/dist/worker/observe/static/views/dashboard.js +86 -100
  40. package/dist/worker/observe/static/views/failures.js +143 -143
  41. package/dist/worker/observe/static/views/feature.js +492 -492
  42. package/dist/worker/observe/static/views/pool.js +708 -350
  43. package/dist/worker/observe/static/views/run.js +453 -453
  44. package/dist/worker/observe/static/views/session-timeline.js +771 -219
  45. package/dist/worker/observe/static/views/shell.js +7 -7
  46. package/dist/worker/observe/static/views/task.js +314 -314
  47. package/dist/worker/observe/static/views/timeline.js +163 -163
  48. package/dist/workflows/dag/canvas-observer.js +275 -275
  49. package/docs/README.md +105 -104
  50. package/docs/agent-dag-recovery-playbook.md +195 -195
  51. package/docs/agent-dag-runner.md +67 -67
  52. package/docs/architecture/README.md +26 -26
  53. package/docs/architecture/dag-execution.md +140 -140
  54. package/docs/architecture/evolution.md +54 -54
  55. package/docs/architecture/facts-and-state.md +71 -71
  56. package/docs/architecture/runtime-boundaries.md +191 -191
  57. package/docs/architecture/system-overview.md +93 -93
  58. package/docs/architecture/worker-and-feature.md +85 -85
  59. package/docs/cursor-prompt-sidecar.md +36 -36
  60. package/docs/decisions/README.md +18 -18
  61. package/docs/design/README.md +167 -167
  62. package/docs/development-principles.md +73 -73
  63. package/docs/exec-plans/README.md +6 -6
  64. package/docs/exec-plans/active/README.md +2 -1
  65. package/docs/exec-plans/completed/README.md +105 -104
  66. package/docs/feature-workflow.md +414 -414
  67. package/docs/harness-methodology-debugging.md +153 -153
  68. package/docs/harness-methodology-tdd.md +130 -130
  69. package/docs/harness-methodology-verification.md +27 -27
  70. package/docs/init-surface.manifest.json +307 -307
  71. package/docs/loop-agent-harness.md +142 -142
  72. package/docs/production-readiness.md +96 -96
  73. package/docs/progress/README.md +59 -58
  74. package/docs/reports/README.md +123 -119
  75. package/docs/skills/README.md +7 -7
  76. package/docs/skills/vetted-skill-registry.md +29 -29
  77. package/docs/templates/adr.md +60 -60
  78. package/docs/templates/agent-dag-authority-surface-audit.prompt.md +94 -94
  79. package/docs/templates/agent-dag-decision-envelope.schema.json +213 -213
  80. package/docs/templates/agent-dag-decision-gate-dogfood-report.md +117 -117
  81. package/docs/templates/agent-dag-decision-gate.prompt.md +246 -246
  82. package/docs/templates/agent-dag-process-supervisor.prompt.md +98 -98
  83. package/docs/templates/agent-dag-report.schema.json +473 -473
  84. package/docs/templates/agent-dag-review-verdict.prompt.md +68 -68
  85. package/docs/templates/agent-dag.base.json +190 -190
  86. package/docs/templates/agent-dag.final-verification.json +185 -185
  87. package/docs/templates/agent-dag.schema.json +411 -411
  88. package/docs/templates/agent-dag.supervised-implementation.json +620 -620
  89. package/docs/templates/backend-test-analysis.schema.json +44 -44
  90. package/docs/templates/backend-test-case-manifest.schema.json +190 -190
  91. package/docs/templates/backend-test-dag.classify.prompt.md +75 -75
  92. package/docs/templates/backend-test-dag.generate-pytest.prompt.md +204 -204
  93. package/docs/templates/backend-test-dag.json +559 -559
  94. package/docs/templates/backend-test-dag.retrospect.prompt.md +139 -139
  95. package/docs/templates/backend-test-dag.review-cases.prompt.md +83 -83
  96. package/docs/templates/backend-test-execution.schema.json +133 -133
  97. package/docs/templates/backend-test-result.schema.json +99 -99
  98. package/docs/templates/exec-plan.md +64 -64
  99. package/docs/templates/feature-spec.md +53 -53
  100. package/docs/templates/frontend-design-contract.md +42 -42
  101. package/docs/templates/frontend-eval/fixtures/failures/01-type-build-error.md +17 -17
  102. package/docs/templates/frontend-eval/fixtures/failures/02-unit-component-test-fail.md +16 -16
  103. package/docs/templates/frontend-eval/fixtures/failures/03-fixture-schema-drift.md +16 -16
  104. package/docs/templates/frontend-eval/fixtures/failures/04-missing-loading-empty-error-state.md +16 -16
  105. package/docs/templates/frontend-eval/fixtures/failures/05-forbidden-write-writeset-expansion.md +16 -16
  106. package/docs/templates/frontend-eval/fixtures/failures/06-unapproved-dependency-add.md +16 -16
  107. package/docs/templates/frontend-eval/fixtures/failures/07-mock-production-on.md +21 -21
  108. package/docs/templates/frontend-eval/fixtures/functional/01-simple-component-style.md +29 -29
  109. package/docs/templates/frontend-eval/fixtures/functional/02-form-validation.md +28 -28
  110. package/docs/templates/frontend-eval/fixtures/functional/03-list-detail-page.md +28 -28
  111. package/docs/templates/frontend-eval/fixtures/functional/04-api-mock.md +29 -29
  112. package/docs/templates/frontend-eval/fixtures/functional/05-permission-auth-gated-ui.md +27 -27
  113. package/docs/templates/frontend-eval/fixtures/functional/06-ssr-server-client-boundary.md +28 -28
  114. package/docs/templates/frontend-eval/fixtures/functional/07-shared-public-component-api.md +28 -28
  115. package/docs/templates/frontend-eval/fixtures/functional/08-pure-local-no-remote.md +27 -27
  116. package/docs/templates/frontend-eval/metrics.md +138 -138
  117. package/docs/templates/frontend-eval/smoke-targets.md +53 -53
  118. package/docs/templates/frontend-implementation-contract.schema.json +27 -27
  119. package/docs/templates/frontend-task-constraints.md +35 -35
  120. package/docs/templates/frontend-task-requirement.md +70 -70
  121. package/docs/templates/frontend-test-dag.generate-cases.prompt.md +5 -5
  122. package/docs/templates/frontend-test-dag.json +23 -23
  123. package/docs/templates/frontend-test-dag.retrieve-context.prompt.md +3 -3
  124. package/docs/templates/frontend-test-dag.retrospect.prompt.md +3 -3
  125. package/docs/templates/frontend-test-dag.review-cases.prompt.md +3 -3
  126. package/docs/templates/frontend-test-dag.review-execution.prompt.md +3 -3
  127. package/docs/templates/harness.schema.json +221 -221
  128. package/docs/templates/hybrid-dag.json +188 -188
  129. package/docs/templates/init-evolution-review.md +35 -35
  130. package/docs/templates/interactive-ui-round2-experiment.md +66 -66
  131. package/docs/templates/knowledge-graph-bootstrap-dag.json +118 -118
  132. package/docs/templates/knowledge-sync-dag.json +178 -178
  133. package/docs/templates/knowledge-sync-draft.schema.json +71 -71
  134. package/docs/templates/product-line/AGENTS.md +8 -8
  135. package/docs/templates/product-line/README.md +9 -9
  136. package/docs/templates/product-line/acceptance.yaml +14 -14
  137. package/docs/templates/product-line/closeout.yaml +9 -9
  138. package/docs/templates/product-line/design.md +13 -13
  139. package/docs/templates/product-line/links.md +10 -10
  140. package/docs/templates/product-line/requirement.md +17 -17
  141. package/docs/templates/product-line/task-graph.yaml +15 -15
  142. package/docs/templates/product-line/task.yaml +64 -64
  143. package/docs/templates/product-line/test-plan.md +7 -7
  144. package/docs/templates/production-readiness-checklist.md +57 -57
  145. package/docs/templates/progress-log.md +17 -17
  146. package/docs/templates/project-start-checklist.md +9 -9
  147. package/docs/templates/qa-report.md +48 -48
  148. package/docs/templates/sprint-contract.md +29 -29
  149. package/docs/templates/worker-dogfood-evidence.md +80 -80
  150. package/docs/templates/worker-dogfood-setup.md +68 -68
  151. package/docs/verification-matrix.md +70 -70
  152. package/examples/decision-gate-agent-dag.json +173 -173
  153. package/examples/example-dag.json +46 -46
  154. package/examples/hybrid-loop-agent-dag.json +188 -188
  155. package/harness.json +66 -66
  156. package/package.json +88 -52
  157. package/scripts/check-product-line-docs.sh +29 -29
  158. package/scripts/check-task-pool-root.sh +32 -32
  159. package/scripts/kb-bootstrap-init-skeleton.sh +240 -240
  160. package/scripts/kb-graph-incremental-prepare.mjs +386 -386
  161. package/scripts/kb-graph-incremental-prepare.sh +5 -5
  162. package/scripts/kb-graph-materialize.mjs +105 -105
  163. package/scripts/kb-graph-materialize.sh +4 -4
  164. package/scripts/kb-graph-promote.mjs +164 -164
  165. package/scripts/kb-graph-promote.sh +4 -4
  166. package/scripts/kb-query.mjs +554 -554
  167. package/scripts/kb-query.sh +5 -5
  168. package/skills/agent-worker/SKILL.md +39 -39
  169. package/skills/agent-worker/references/agent-worker-operator.md +60 -60
  170. package/skills/ai-engineering-context/SKILL.md +48 -48
  171. package/skills/analyze-product-dependencies/SKILL.md +67 -67
  172. package/skills/analyze-product-dependencies/agents/openai.yaml +4 -4
  173. package/skills/analyze-product-dependencies/references/api-documentation-schema.md +30 -30
  174. package/skills/analyze-product-dependencies/references/dependency-analysis-schema.md +28 -28
  175. package/skills/analyze-product-dependencies/references/example.md +76 -76
  176. package/skills/analyze-product-dependencies/references/forward-test-cases.md +35 -35
  177. package/skills/analyze-product-dependencies/references/input-contract.md +11 -11
  178. package/skills/analyze-product-dependencies/references/scouting-rules.md +61 -61
  179. package/skills/analyze-product-dependencies/scripts/test-validators.mjs +267 -267
  180. package/skills/analyze-product-dependencies/scripts/validate-api-documentation.mjs +101 -101
  181. package/skills/analyze-product-dependencies/scripts/validate-dependency-analysis.mjs +142 -142
  182. package/skills/analyze-product-dependencies/scripts/validate-product-requirement-input.mjs +76 -76
  183. package/skills/analyze-product-dependencies/scripts/validation-helpers.mjs +146 -146
  184. package/skills/analyze-product-requirements/SKILL.md +90 -90
  185. package/skills/analyze-product-requirements/agents/openai.yaml +4 -4
  186. package/skills/analyze-product-requirements/references/acceptance-criteria.md +91 -91
  187. package/skills/analyze-product-requirements/references/clarification-and-knowledge.md +56 -56
  188. package/skills/analyze-product-requirements/references/example.md +86 -86
  189. package/skills/analyze-product-requirements/references/forward-test-cases.md +66 -66
  190. package/skills/analyze-product-requirements/references/product-analysis-schema.md +32 -32
  191. package/skills/analyze-product-requirements/references/product-requirement-schema.md +33 -33
  192. package/skills/analyze-product-requirements/references/requirement-clarification-schema.md +35 -35
  193. package/skills/analyze-product-requirements/scripts/test-validators.mjs +193 -193
  194. package/skills/analyze-product-requirements/scripts/validate-product-analysis.mjs +69 -69
  195. package/skills/analyze-product-requirements/scripts/validate-product-requirement.mjs +97 -97
  196. package/skills/analyze-product-requirements/scripts/validate-requirement-clarification.mjs +98 -98
  197. package/skills/analyze-product-requirements/scripts/validation-helpers.mjs +156 -156
  198. package/skills/browser-tools/SKILL.md +196 -196
  199. package/skills/browser-tools/browser-content.js +103 -103
  200. package/skills/browser-tools/browser-cookies.js +35 -35
  201. package/skills/browser-tools/browser-eval.js +53 -53
  202. package/skills/browser-tools/browser-hn-scraper.js +108 -108
  203. package/skills/browser-tools/browser-nav.js +44 -44
  204. package/skills/browser-tools/browser-pick.js +162 -162
  205. package/skills/browser-tools/browser-screenshot.js +34 -34
  206. package/skills/browser-tools/browser-start.js +86 -86
  207. package/skills/browser-tools/package-lock.json +2556 -2556
  208. package/skills/browser-tools/package.json +19 -19
  209. package/skills/code-review-core/SKILL.md +20 -20
  210. package/skills/codebase-scout/SKILL.md +19 -19
  211. package/skills/frontend-design-review/SKILL.md +66 -66
  212. package/skills/frontend-design-review/references/review-checklist.md +58 -58
  213. package/skills/frontend-implementation/SKILL.md +49 -49
  214. package/skills/frontend-implementation/references/code-standards.md +32 -32
  215. package/skills/frontend-implementation/references/design-spec.md +46 -46
  216. package/skills/frontend-implementation/references/node-contracts.md +27 -27
  217. package/skills/frontend-review/SKILL.md +59 -59
  218. package/skills/frontend-review/references/review-findings.md +47 -47
  219. package/skills/frontend-verification/SKILL.md +53 -53
  220. package/skills/frontend-verification/references/verification-checklist.md +68 -68
  221. package/skills/grill-me/SKILL.md +10 -10
  222. package/skills/grill-with-docs/SKILL.md +88 -88
  223. package/skills/grill-with-docs/adr-format.md +47 -47
  224. package/skills/grill-with-docs/context-format.md +60 -60
  225. package/skills/init-capability-evolution/SKILL.md +70 -70
  226. package/skills/loop-agent/SKILL.md +151 -151
  227. package/skills/loop-agent/references/README.md +67 -67
  228. package/skills/loop-agent/references/command-reference.md +527 -527
  229. package/skills/loop-agent/references/docs-converge.md +126 -126
  230. package/skills/loop-agent/references/harness-policy.md +263 -263
  231. package/skills/loop-agent/references/hybrid-dag.md +243 -243
  232. package/skills/loop-agent/references/learned/README.md +21 -21
  233. package/skills/loop-agent/references/long-running-loop.md +57 -57
  234. package/skills/loop-agent/references/model-routing.md +36 -36
  235. package/skills/loop-agent/references/multi-worktree.md +54 -54
  236. package/skills/loop-agent/references/one-shot-runs.md +85 -85
  237. package/skills/loop-agent/references/orchestrator-and-interventions.md +169 -169
  238. package/skills/loop-agent/references/pi-prompt.md +23 -23
  239. package/skills/loop-agent/references/pi-subagent-assisted-mode.md +84 -84
  240. package/skills/loop-agent/references/post-implementation-and-patterns.md +44 -44
  241. package/skills/loop-agent/references/task-workflow.md +89 -89
  242. package/skills/loop-agent/references/verification-and-failure-handling.md +141 -141
  243. package/skills/playwright-cli/SKILL.md +420 -420
  244. package/skills/playwright-cli/references/element-attributes.md +23 -23
  245. package/skills/playwright-cli/references/playwright-tests.md +39 -39
  246. package/skills/playwright-cli/references/request-mocking.md +87 -87
  247. package/skills/playwright-cli/references/running-code.md +241 -241
  248. package/skills/playwright-cli/references/session-management.md +225 -225
  249. package/skills/playwright-cli/references/storage-state.md +275 -275
  250. package/skills/playwright-cli/references/test-generation.md +433 -433
  251. package/skills/playwright-cli/references/tracing.md +139 -139
  252. package/skills/playwright-cli/references/video-recording.md +143 -143
  253. package/skills/playwright-cli-case-generator/SKILL.md +74 -74
  254. package/skills/requesting-code-review/SKILL.md +101 -101
  255. package/skills/requesting-code-review/code-reviewer.md +168 -168
  256. package/skills/systematic-debugging/CREATION-LOG.md +119 -119
  257. package/skills/systematic-debugging/SKILL.md +296 -296
  258. package/skills/systematic-debugging/condition-based-waiting-example.ts +158 -158
  259. package/skills/systematic-debugging/condition-based-waiting.md +115 -115
  260. package/skills/systematic-debugging/defense-in-depth.md +122 -122
  261. package/skills/systematic-debugging/find-polluter.sh +63 -63
  262. package/skills/systematic-debugging/root-cause-tracing.md +169 -169
  263. package/skills/systematic-debugging/test-academic.md +14 -14
  264. package/skills/systematic-debugging/test-pressure-1.md +58 -58
  265. package/skills/systematic-debugging/test-pressure-2.md +68 -68
  266. package/skills/systematic-debugging/test-pressure-3.md +69 -69
  267. package/skills/test-driven-development/SKILL.md +20 -20
  268. package/skills/using-git-worktrees/SKILL.md +215 -215
  269. package/skills/verification-before-completion/SKILL.md +154 -154
  270. package/skills/webapp-testing/SKILL.md +19 -19
package/docs/README.md CHANGED
@@ -1,107 +1,108 @@
1
- # 文档索引
2
-
3
- `docs/` 是 loop-agent 的治理根目录,包含工作流规则、方法论、验证规则、执行计划、报告、进度日志、决策记录和可复用模板。
4
-
5
- 顶层 `AGENTS.md` 是操作地图。长期知识应落在此处:决策、契约、计划、验证证据、调试笔记和可复用流程规则应记录在 `docs/` 下,而不是只留在聊天里。
6
-
7
- **索引职责**:本文件只索引**核心契约、方法论、产物目录入口与模板**。单篇 progress / report / completed plan 的全量列表分别由对应子目录 `README.md` 维护,避免三处精选榜漂移。
8
-
9
- 站上用法文档在 `../website/docs/`;双树收敛见 `../skills/loop-agent/references/docs-converge.md`。
10
-
11
- ## 核心文档
12
-
13
- - `design/archive/2026-07-14-loop-agent-self-update-notifier.md` — loop-agent CLI 自更新提醒设计(已实现;历史设计说明)
14
- - `development-principles.md` — 仓库开发原则
15
- - `architecture/runtime-boundaries.md` — runtime 层边界与依赖方向
16
- - `architecture/README.md` — 架构文档目录索引与阅读路径
17
- - `architecture/system-overview.md` — loop-agent / agent-worker / 治理层 / 外部系统全景
18
- - `architecture/dag-execution.md` — Agent DAG 主调用链、rank 调度、executor、skill snapshot、生命周期
19
- - `architecture/worker-and-feature.md` — agent-worker 子进程边界、controller identity、Task Pool、Feature 与 Observe
20
- - `architecture/facts-and-state.md` — harness 事实与状态、canonical/derived、可写/只读边界
21
- - `architecture/evolution.md` — 当前已实现能力 vs 第 3–6 月未来方向
22
- - `feature-workflow.md` — 有边界的功能工作流
23
- - `verification-matrix.md` — 验证命令选择
24
- - `production-readiness.md` — Production Readiness v0.1 范围、证据与 DAG hardening 标准
25
- - `loop-agent-harness.md` — runtime 与 command surface 概览
26
- - `agent-dag-runner.md` — Agent DAG runner 指南
27
- - `agent-dag-recovery-playbook.md` — DAG 失败分类、recovery action 与 operator 处置手册
28
- - `design/frontend-mock-data-workflow.md` — 已实现的前端 Mock 数据节点、触发条件、规范证据、验证与失败路由
29
- - `design/dag-source-binding-and-recovery.md` — 新生成 DAG 的权威任务源绑定、前端需求编号覆盖门禁与中断恢复规则
30
- - `cursor-prompt-sidecar.md` — `cursor-prompt` one-shot sidecar 用法(非受治理 writer)
31
- - `init-surface.manifest.json` — npm 包范围、目标项目初始化投影与 `init check-update` surface 分类的机器校验契约
32
-
33
- ## 近期完成合同(入口)
34
-
35
- 完整列表见 `exec-plans/completed/README.md`。近期高频入口:
36
-
37
- - `exec-plans/completed/2026-07-14-website-docs-ia-and-converge.md` — Website IA、双树边界与 docs-converge
38
- - `exec-plans/completed/2026-07-13-versioned-self-hosting-bootstrap.md` — 版本化自举与 candidate canary
39
- - `exec-plans/completed/2026-07-12-pi-only-agent-runtime.md` — Pi-only 受治理 runtime
40
- - `exec-plans/completed/2026-07-12-observe-warm-console-redesign.md` — Observe 暖白运行控制台
41
- - `exec-plans/completed/2026-07-12-m2-08-closeout-dogfood-release.md` — 第二月 Closeout 与 dogfood 收口(M2-01~08 见 completed 索引)
42
-
43
- ## 设计思想来源
44
-
45
- - `../website/docs/practices/` — Anthropic 长时运行 agent harness、OpenAI Codex harness engineering、腾讯端到端 Harness Engineering 与社区 agent harness 实践资料。当前仓库的“人类掌舵、智能体执行”、仓库即记录系统、小步增量、结构化 handoff 和 shell verification 纪律均受这些实践启发;权威执行规则仍以本目录治理文档、根目录 AGENTS.md、harness.json、skills 目录和脚本检查为准。
46
-
47
- ## 方法论
48
-
49
- - `harness-methodology-tdd.md` — 行为变更与 bug 修复的 TDD 纪律
50
- - `harness-methodology-verification.md` — 完成声明前的验证纪律
51
- - `harness-methodology-debugging.md` — 修复前的系统化调试工作流
52
-
53
- ## 产物目录
54
-
55
- - `design/README.md` — 设计草稿、契约映射与路线图(含 design/dynamic-workflow-dag-engine-roadmap.md)
56
- - `exec-plans/active/README.md` — 进行中的执行计划
57
- - `exec-plans/completed/README.md` — 已完成的执行计划(全量)
58
- - `progress/README.md` — 进度交接日志(全量)
59
- - `reports/README.md` — 验证与审计报告(全量);活能力摘要见 `reports/current-capability-summary.md`
60
- - `decisions/README.md` — 架构决策(ADR 0001–0004;0004 = Task Pool feature-scoped identity)
61
- - `skills/README.md` — repo-local skill registry and vetting notes
62
- - `templates/`可复用的规划、报告与 DAG 模板
63
-
64
- ## 仓库 Skills
65
-
66
- - `../skills/loop-agent/` — loop-agent 自身的 skill 指令与参考资料
67
- - `../skills/agent-worker/` — Feature Packet / Task Pool / versioned self-hosting 的可选 outer-loop operator skill;不进入默认 DAG role skills
68
- - 每个额外 skill 在仓库根 `../skills/` 下使用独立子目录;这些本地副本由 DAG 模板引用,维护不依赖外部 agent skill 目录
69
-
70
- ## 模板
71
-
72
- - `templates/project-start-checklist.md` — 开工前检查清单
73
- - `templates/feature-spec.md` — 有边界的功能规格
74
- - `templates/sprint-contract.md` — 实现契约与验收标准
75
- - `templates/exec-plan.md` — 非平凡工作的执行计划
76
- - `templates/progress-log.md` — 进度与交接日志
77
- - `templates/qa-report.md` — 验证与 QA 证据
78
- - `templates/worker-dogfood-setup.md` — 发布 controller identity 固定、真实 Worker sample、candidate canary 与 retry 纪律
79
- - `templates/worker-dogfood-evidence.md` — controller fingerprintskill snapshot、canary、BE/FE/QA、Observefailure evidence 模板
80
- - `templates/harness.schema.json` — `harness.json` IDE JSON Schema,随初始化投影到目标项目
81
- - `templates/interactive-ui-round2-experiment.md` — interactive UI prompt/model A/B/C 对照实验与统一指标模板
82
- - `templates/product-line/`可投影的 Feature/Task/QA/Links 产品线包;配合 `agent-worker task validate-feature` 做 docs CI
83
- - `templates/production-readiness-checklist.md`低/中风险单仓库 DAG readiness 检查清单
1
+ # 文档索引
2
+
3
+ `docs/` 是 loop-agent 的治理根目录,包含工作流规则、方法论、验证规则、执行计划、报告、进度日志、决策记录和可复用模板。
4
+
5
+ 顶层 `AGENTS.md` 是操作地图。长期知识应落在此处:决策、契约、计划、验证证据、调试笔记和可复用流程规则应记录在 `docs/` 下,而不是只留在聊天里。
6
+
7
+ **索引职责**:本文件只索引**核心契约、方法论、产物目录入口与模板**。单篇 progress / report / completed plan 的全量列表分别由对应子目录 `README.md` 维护,避免三处精选榜漂移。
8
+
9
+ 站上用法文档在 `../website/docs/`;双树收敛见 `../skills/loop-agent/references/docs-converge.md`。
10
+
11
+ ## 核心文档
12
+
13
+ - `design/archive/2026-07-14-loop-agent-self-update-notifier.md` — loop-agent CLI 自更新提醒设计(已实现;历史设计说明)
14
+ - `development-principles.md` — 仓库开发原则
15
+ - `architecture/runtime-boundaries.md` — runtime 层边界与依赖方向
16
+ - `architecture/README.md` — 架构文档目录索引与阅读路径
17
+ - `architecture/system-overview.md` — loop-agent / agent-worker / 治理层 / 外部系统全景
18
+ - `architecture/dag-execution.md` — Agent DAG 主调用链、rank 调度、executor、skill snapshot、生命周期
19
+ - `architecture/worker-and-feature.md` — agent-worker 子进程边界、controller identity、Task Pool、Feature 与 Observe
20
+ - `architecture/facts-and-state.md` — harness 事实与状态、canonical/derived、可写/只读边界
21
+ - `architecture/evolution.md` — 当前已实现能力 vs 第 3–6 月未来方向
22
+ - `feature-workflow.md` — 有边界的功能工作流
23
+ - `verification-matrix.md` — 验证命令选择
24
+ - `production-readiness.md` — Production Readiness v0.1 范围、证据与 DAG hardening 标准
25
+ - `loop-agent-harness.md` — runtime 与 command surface 概览
26
+ - `agent-dag-runner.md` — Agent DAG runner 指南
27
+ - `agent-dag-recovery-playbook.md` — DAG 失败分类、recovery action 与 operator 处置手册
28
+ - `design/frontend-mock-data-workflow.md` — 已实现的前端 Mock 数据节点、触发条件、规范证据、验证与失败路由
29
+ - `design/dag-source-binding-and-recovery.md` — 新生成 DAG 的权威任务源绑定、前端需求编号覆盖门禁与中断恢复规则
30
+ - `cursor-prompt-sidecar.md` — `cursor-prompt` one-shot sidecar 用法(非受治理 writer)
31
+ - `init-surface.manifest.json` — npm 包范围、目标项目初始化投影与 `init check-update` surface 分类的机器校验契约
32
+
33
+ ## 近期完成合同(入口)
34
+
35
+ 完整列表见 `exec-plans/completed/README.md`。近期高频入口:
36
+
37
+ - `exec-plans/completed/2026-07-18-observe-ops-surface-and-rich-timeline.md` — Observe 运营面/执行面重排、检查器半屏与富执行过程
38
+ - `exec-plans/completed/2026-07-14-website-docs-ia-and-converge.md` — Website IA、双树边界与 docs-converge
39
+ - `exec-plans/completed/2026-07-13-versioned-self-hosting-bootstrap.md` — 版本化自举与 candidate canary
40
+ - `exec-plans/completed/2026-07-12-pi-only-agent-runtime.md` — Pi-only 受治理 runtime
41
+ - `exec-plans/completed/2026-07-12-observe-warm-console-redesign.md` — Observe 暖白运行控制台
42
+ - `exec-plans/completed/2026-07-12-m2-08-closeout-dogfood-release.md` — 第二月 Closeout 与 dogfood 收口(M2-01~08 见 completed 索引)
43
+
44
+ ## 设计思想来源
45
+
46
+ - `../website/docs/practices/` — Anthropic 长时运行 agent harness、OpenAI Codex harness engineering、腾讯端到端 Harness Engineering 与社区 agent harness 实践资料。当前仓库的“人类掌舵、智能体执行”、仓库即记录系统、小步增量、结构化 handoff 和 shell verification 纪律均受这些实践启发;权威执行规则仍以本目录治理文档、根目录 AGENTS.md、harness.json、skills 目录和脚本检查为准。
47
+
48
+ ## 方法论
49
+
50
+ - `harness-methodology-tdd.md` — 行为变更与 bug 修复的 TDD 纪律
51
+ - `harness-methodology-verification.md` — 完成声明前的验证纪律
52
+ - `harness-methodology-debugging.md` — 修复前的系统化调试工作流
53
+
54
+ ## 产物目录
55
+
56
+ - `design/README.md` — 设计草稿、契约映射与路线图(含 design/dynamic-workflow-dag-engine-roadmap.md)
57
+ - `exec-plans/active/README.md` — 进行中的执行计划
58
+ - `exec-plans/completed/README.md` — 已完成的执行计划(全量)
59
+ - `progress/README.md` — 进度交接日志(全量)
60
+ - `reports/README.md` — 验证与审计报告(全量);活能力摘要见 `reports/current-capability-summary.md`
61
+ - `decisions/README.md` — 架构决策(ADR 0001–0004;0004 = Task Pool feature-scoped identity)
62
+ - `skills/README.md`repo-local skill registry and vetting notes
63
+ - `templates/` — 可复用的规划、报告与 DAG 模板
64
+
65
+ ## 仓库 Skills
66
+
67
+ - `../skills/loop-agent/` — loop-agent 自身的 skill 指令与参考资料
68
+ - `../skills/agent-worker/` Feature Packet / Task Pool / versioned self-hosting 的可选 outer-loop operator skill;不进入默认 DAG role skills
69
+ - 每个额外 skill 在仓库根 `../skills/` 下使用独立子目录;这些本地副本由 DAG 模板引用,维护不依赖外部 agent skill 目录
70
+
71
+ ## 模板
72
+
73
+ - `templates/project-start-checklist.md` — 开工前检查清单
74
+ - `templates/feature-spec.md` — 有边界的功能规格
75
+ - `templates/sprint-contract.md` — 实现契约与验收标准
76
+ - `templates/exec-plan.md` — 非平凡工作的执行计划
77
+ - `templates/progress-log.md` — 进度与交接日志
78
+ - `templates/qa-report.md` — 验证与 QA 证据
79
+ - `templates/worker-dogfood-setup.md` — 发布 controller identity 固定、真实 Worker samplecandidate canary 与 retry 纪律
80
+ - `templates/worker-dogfood-evidence.md` — controller fingerprint、skill snapshot、canary、BE/FE/QA、Observe failure evidence 模板
81
+ - `templates/harness.schema.json` — `harness.json` IDE JSON Schema,随初始化投影到目标项目
82
+ - `templates/interactive-ui-round2-experiment.md`interactive UI prompt/model A/B/C 对照实验与统一指标模板
83
+ - `templates/product-line/`可投影的 Feature/Task/QA/Links 产品线包;配合 `agent-worker task validate-feature` 做 docs CI
84
+ - `templates/production-readiness-checklist.md` — 低/中风险单仓库 DAG readiness 检查清单
84
85
  - `templates/init-evolution-review.md` — 初始化能力演化审查报告模板
85
86
  - `templates/branch-merge-report.md` — 跨分支合并的功能保留、冲突解析、init/update 与 package surface 审计模板
86
87
  - `templates/adr.md` — 架构决策记录(ADR)
87
-
88
- ## 维护
89
-
90
- 文档变更后运行:
91
-
92
- ```bash
93
- node bin/loop-agent.js docs audit --repo-root .
94
- bash scripts/check-doc-index.sh
95
- bash scripts/check-doc-links.sh
96
- bash scripts/check-repo.sh
97
- ```
98
-
99
- 涉及 `website/docs/` 时再跑 `npm run docs:build`,并按 `skills/loop-agent/references/docs-converge.md` 同步 `overview/roadmap.md` 等站上活页。
100
-
101
- Windows 上通过 Git Bash 或已配置的兼容 Bash 运行脚本。实际文件操作使用平台原生路径;`/` 仅用于 repo 引用、JSON/Markdown 证据引用和 glob 约定。
102
-
103
- 完整本地门禁:
104
-
105
- ```bash
106
- bash scripts/ci.sh
107
- ```
88
+
89
+ ## 维护
90
+
91
+ 文档变更后运行:
92
+
93
+ ```bash
94
+ node bin/loop-agent.js docs audit --repo-root .
95
+ bash scripts/check-doc-index.sh
96
+ bash scripts/check-doc-links.sh
97
+ bash scripts/check-repo.sh
98
+ ```
99
+
100
+ 涉及 `website/docs/` 时再跑 `npm run docs:build`,并按 `skills/loop-agent/references/docs-converge.md` 同步 `overview/roadmap.md` 等站上活页。
101
+
102
+ Windows 上通过 Git Bash 或已配置的兼容 Bash 运行脚本。实际文件操作使用平台原生路径;`/` 仅用于 repo 引用、JSON/Markdown 证据引用和 glob 约定。
103
+
104
+ 完整本地门禁:
105
+
106
+ ```bash
107
+ bash scripts/ci.sh
108
+ ```
@@ -1,195 +1,195 @@
1
- # Agent DAG Recovery Playbook(恢复手册)
2
-
3
- > **关联**:[`agent-dag-runner.md`](agent-dag-runner.md)(CLI 与 run 语义)· [`templates/agent-dag-decision-gate.prompt.md`](templates/agent-dag-decision-gate.prompt.md)(Decision Gate 消费 recovery 证据)
4
-
5
- ## 定位
6
-
7
- Agent DAG **recovery planning 是只读、派生、advisory** 的。`dag report` 与 `buildDagDecisionGateEvidence()` 从 `.harness/dag-runs/` 的 canonical facts 聚合 `normalizedFailureCategory` → `recoveryRecommendation`,供人工或 Decision Gate prompt 消费。
8
-
9
- 中断后不要从上游摘要手工生成 impl-only DAG。先修复 `.harness/tasks/<task-id>/source/` 或计划,再对同一 task 重新执行 `dag run-task`、严格 `dag validate` 和新的 `run-dag`。新生成的完整 DAG 会重新冻结 `sourceBinding` 并经过 contract/scout/plan/gate;v3 孤立 writer 如果既无来源绑定、也无只读 planner 上游,会被 strict governance 拒绝。完整规则见 [`design/dag-source-binding-and-recovery.md`](design/dag-source-binding-and-recovery.md)。
10
-
11
- Production Readiness v0.1 在 normalized DAG category 之上增加 product-line routing。Report 与 doctor 输出应保留 raw DAG fact 并派生,不重写已完成 facts:
12
-
13
- ```text
14
- raw_failure_category
15
- dag_normalized_failure_category
16
- product_line_failure_category
17
- recommended_follow_up
18
- ```
19
-
20
- Product-line taxonomy 定义见 `ai_workspace/loop-agent/design/state-and-failure-taxonomy.md`。
21
-
22
- ### 前端设计门禁专用恢复路径
23
-
24
- 前端 DAG 的 design gate shell 失败(`frontend-first-design-gate-shell`、`frontend-final-design-gate-shell`、`frontend-design-gate-shell`)**不路由为 `ProductBug` / `dev-fix`**。此类失败固定路由为:
25
-
26
- - `productLineFailureCategory`: `ContractMismatch`
27
- - `recommendedFollowUp`: `frontend-plan-revision-and-rerun`
28
-
29
- 恢复动作由 `planDagRecovery` 根据实际的 `normalizedFailureCategory` 和 run status 决定(通常为 `rerun-after-fix` 或 `manual-review`),但 product-line 维度的分类确保 Task Pool 和 morning report 不会将其混入普通 bug backlog。
30
-
31
- **非目标(本 playbook 不覆盖、runner 不实现):**
32
-
33
- - 自动 retry / resume 节点执行
34
- - 修改 `completed/` 或 `paused/` 下的历史 run facts
35
- - 把 `autoRetryEligible` 当作 runtime 触发器
36
- - 仅凭 recovery 派生字段自动 approve Decision Gate
37
-
38
- ## 快速命令
39
-
40
- ```bash
41
- cd .
42
-
43
- # 全局 runtime 健康(active/paused/completed 摘要 + healthIssues;advisoryOnly)
44
- npm run dev -- dag doctor
45
-
46
- # 单 run 生命周期(approvalFlow、hasHumanApproval、nextRecommendedAction)
47
- npm run dev -- dag status --run-id <run-id>
48
-
49
- # 聚焦最新 paused run(--paused-latest ≡ --lifecycle paused --latest)
50
- npm run dev -- dag report --paused-latest [--json|--markdown]
51
-
52
- # 默认 compact Markdown 表格
53
- npm run dev -- dag report --run-id <run-id>
54
-
55
- # 机器可读 JSON(含 primaryFailure / primaryRecovery / downstreamSkippedNodes)
56
- npm run dev -- dag report --run-id <run-id> --json
57
-
58
- # 人类交接 Recovery Plan(四段结构化 Markdown)
59
- npm run dev -- dag report --run-id <run-id> --markdown
60
-
61
- # 过滤器
62
- npm run dev -- dag report --failed-only # 仅失败/需恢复
63
- npm run dev -- dag report --latest --failed-only # 最新一条需恢复 run
64
- npm run dev -- dag report --action retry-node # 按 primaryRecovery.action 筛选
65
- npm run dev -- dag report --lifecycle paused --action resume-or-reject
66
-
67
- # Decision Gate envelope dry-run(不 resume/retry;validate 无效时 exit 1)
68
- npm run dev -- dag decision inspect --run-id <run-id> [--node-id <node-id>]
69
- npm run dev -- dag decision validate --run-id <run-id> [--node-id <node-id>]
70
- ```
71
-
72
- ### Paused run operator 路径
73
-
74
- 1. `dag report --paused-latest --json` 或 `dag doctor` — 定位最新 paused run 与 `primaryRecovery`
75
- 2. `dag status --run-id <id>` — 读 `approvalFlow`、`escalationArtifactPath`、`pendingNodes`
76
- 3. (可选)`dag decision validate --run-id <id>` — envelope preflight
77
- 4. `dag approve --run-id <id> --option <option-id>` → `dag resume --run-id <id>`;或 `dag reject --run-id <id> --reason "..."`
78
-
79
- 精确 approval 顺序见 [`agent-dag-runner.md`](agent-dag-runner.md) §Paused lifecycle。
80
-
81
- Decision Gate prompt 侧:`buildDagDecisionGateEvidence()`(`./src/core/dag-decision-evidence.ts`)从 `DagRunReportEntry` 生成 prompt-friendly 摘要,字段与 JSON report 对齐,**不**写回 run state。
82
-
83
- ## `dag report --json` schema 锁定
84
-
85
- - **Schema 文件**:`ai_workspace/loop-agent/templates/agent-dag-report.schema.json`
86
- - **Envelope**:`{ schemaVersion: 1, runs: DagRunReportEntry[] }`
87
- - **稳定消费字段**(Decision Gate / tooling 应依赖):`primaryFailure`、`primaryRecovery`、`downstreamSkippedNodes`、`recoveryRecommendation`、`normalizedFailureCategory`;node 级 `decisionEnvelope`、`artifacts`;paused 级 `pausedByNodeId`、`pauseReason`
88
- - **测试**:`./test/dag-report.test.ts` §`dag report JSON schema contract` 对 fixture run 做 schema 校验
89
- - **变更策略**:breaking 字段变更须 bump `schemaVersion` 并同步 schema 文件与测试
90
-
91
- ## Recovery Action 枚举
92
-
93
- | Action | 含义 | 典型触发 |
94
- |--------|------|----------|
95
- | `none` | 无需恢复 | 成功完成 |
96
- | `monitor` | 进行中,等待结束 | `PENDING` / `RUNNING` |
97
- | `retry-node` | 修复瞬态条件后可重跑节点 | timeout;executor 瞬态(network/quota/rate-limit/unavailable) |
98
- | `rerun-after-fix` | 先修根因再重跑 | auth、validation、shell-command、static-error、非瞬态 executor |
99
- | `resume-or-reject` | 人工审批后继续或拒绝 | paused + decision-envelope / human-required |
100
- | `manual-review` | 人工审查后再定路径 | write-guard、human-rejected、unknown、非 paused 的 decision-envelope |
101
- | `inspect-upstream` | 先查上游失败 | SKIPPED 下游节点 |
102
- | `unknown` | 未映射类别(不应出现在正常派生路径) | 内部兜底 |
103
-
104
- ## Product-Line Routing v0.1
105
-
106
- | Product-line category | Default follow-up |
107
- |---|---|
108
- | `SpecUnclear` | `spec-clarification` |
109
- | `ContractMismatch` | `architecture-contract-fix` |
110
- | `ProductBug` | `dev-fix` |
111
- | `TestBug` | `qa-fix-test` |
112
- | `EnvFailure` | `env-fix` 或 retry verify |
113
- | `FlakyTest` | `flaky-test-analysis` |
114
- | `RiskyChange` | `human-review` / `architecture-review` |
115
- | `DependencyFailure` | unblock dependency |
116
- | `NeedsHuman` | `human-review` |
117
- | `Unknown` | human triage |
118
-
119
- ## 类别 → 动作 → operator 指引
120
-
121
- | Normalized category | Recovery action | Operator guidance | Anti-patterns |
122
- |---------------------|-----------------|-------------------|---------------|
123
- | `success` | `none` | 归档验收;按需 review artifacts | 对成功 run 发起 retry |
124
- | `timeout` | `retry-node` | 查日志/artifacts 确认瞬态;人工重跑节点 | 未查根因就循环重试;指望 runner 自动 retry |
125
- | `executor`(network/quota/rate-limit/unavailable) | `retry-node` | 等后端/配额恢复后重跑 | 把 auth/validation 误判为瞬态 executor |
126
- | `executor`(其他 raw) | `rerun-after-fix` | 查 executor.jsonl、node result | 盲目 retry 非瞬态 backend 错误 |
127
- | `auth` | `rerun-after-fix` | 更新 API key/凭证后重跑 | 在凭证未修复时 retry |
128
- | `write-guard` | `manual-review` | 审 writeSet/writePolicy、prompt、result.summary | read-only 节点写根 `artifacts/`;扩大 writeSet 掩盖违规 |
129
- | `validation` | `rerun-after-fix` | 修 schema/output/test 后再跑 | 跳过验证直接 approve |
130
- | `shell-command` | `rerun-after-fix` | 读 stdout/stderr、修命令或 repo 状态 | 只重跑 shell 不改命令 |
131
- | `static-error` | `rerun-after-fix` | 查 static config 与 emitted markdown | 当 LLM 节点 retry |
132
- | `decision-envelope`(paused) | `resume-or-reject` | `dag approve --run-id <id> --option <option-id>` / `dag reject --run-id <id> --reason "..."` → `dag resume --run-id <id>` | 未读 envelope 就 approve;用 recovery 字段单独 auto-approve |
133
- | `decision-envelope`(非 paused) | `manual-review` | 读 decision.envelope.json / validation artifact | 绕过 Decision Gate schema |
134
- | `human-required`(paused) | `resume-or-reject` | 提供人工输入 → approve/resume | 在 escalation 未解决时 resume |
135
- | `human-required`(非 paused) | `manual-review` | 读 human-escalation artifacts | 忽略 `requiresHuman` |
136
- | `human-rejected` | `manual-review` | 修订 contract/source;**新 run** | 对同一 contract 自动 retry |
137
- | `skipped` | `inspect-upstream` | 修上游 ERROR/SKIPPED 再考虑下游 | 直接 retry SKIPPED 节点 |
138
- | `unknown` | `manual-review` | 读 state.json、executor.jsonl、node artifacts | 假设 `autoRetryEligible` 会触发执行 |
139
-
140
- ## Handoff Recovery Plan 结构
141
-
142
- `dag report --markdown` 的 **Recovery Plan** 含四段(与 JSON 稳定字段一一对应):
143
-
144
- 1. **Primary Failure** — `primaryFailure`(node 或 run scope)
145
- 2. **Recovery Action** — `primaryRecovery`(action、summary、reason、flags、commandHint)
146
- 3. **Blocked Downstream / Skipped Nodes** — `downstreamSkippedNodes`
147
- 4. **Recommended Operator Action** — 面向 operator 的步骤摘要
148
-
149
- 保存 handoff 时重定向到平台临时目录或 `ai_workspace/loop-agent/reports/`,不要写入 `.harness/dag-runs/`。
150
-
151
- ## Decision Gate 消费约定
152
-
153
- 1. 优先 `dag report --json` 或 `buildDagDecisionGateEvidence()` 的 **verified** 派生摘要。
154
- 2. 映射到 `decision` / `nextAction` 须保守;recovery 证据是 **advisory only, not an execution directive**。
155
- 3. `autoRetryEligible: true` 仅表示「规划上可人工重试」,**不**触发 runner。
156
- 4. paused run 的人类路径仍是 M5 CLI:`dag approve --run-id <id> --option <option-id>` / `dag reject --run-id <id> --reason "..."` / `dag resume --run-id <id>`(见 [`agent-dag-runner.md`](agent-dag-runner.md) §Decision Gate)。
157
- 5. Envelope 干跑:`dag decision inspect|validate` 重解析 run facts;`validate` 无效时 exit 1;**不**写 artifact、**不** resume。
158
-
159
- ## Active stale run recovery(advisory detection)
160
-
161
- `dag doctor` 与 `dag status` 通过 `detectDagRunHealthIssues()` 检测 lifecycle 不一致,**不** mutate run facts。
162
-
163
- | Code | 典型场景 | operator 指引 |
164
- |------|----------|------------|
165
- | `terminal-in-active` | run 已完成但 `active/<run-id>/` 残留 | 对照 `completed/` canonical facts;手动 archive 或删除 stale 目录 |
166
- | `paused-in-active` | pause 后目录未迁至 `paused/` | `dag doctor` 诊断;修复 facts 后再 approve/resume |
167
- | `lifecycle-status-mismatch` | `paused/` 下 status 非 paused | 同上 |
168
- | `missing-approval-artifact` | approve 后 artifact 缺失 | 勿 resume;re-approve 或 restore artifact |
169
- | `non-terminal-in-completed` | completed 目录 status 异常 | manual-review only |
170
- | `run-id-mismatch` / `missing-state-json` | 目录损坏或命名错误 | Inspect;勿 auto-mutate completed facts |
171
-
172
- **Deferred runtime**:无 `dag recover apply` 或自动 cleanup;未来可能增加只读 `dag recover plan`(设计占位,未实现)。
173
-
174
- ## 事实源与边界
175
-
176
- | 类型 | 位置 | 规则 |
177
- |------|------|------|
178
- | Canonical run facts | `.harness/dag-runs/{active\|paused\|completed}/<run-id>/` | **只读**;report 不写回 |
179
- | 派生 report | stdout / 重定向文件 | 可随时再生 |
180
- | 工作块摘要 | 根 `artifacts/` | 非 per-run 历史;read-only DAG 节点不得写 |
181
-
182
- ## 验证
183
-
184
- ```bash
185
- cd . && npx vitest run \
186
- test/dag-report.test.ts \
187
- test/dag-recovery-recommendation.test.ts \
188
- test/dag-decision-gate-recovery-dogfood.test.ts \
189
- test/dag-decision-evidence.test.ts \
190
- test/dag-decision-envelope.test.ts \
191
- test/dag-approve-resume.test.ts \
192
- test/cli-contract.test.ts
193
- ```
194
-
195
- 实现细节与映射逻辑:`./src/core/dag-recovery-recommendation.ts`、`dag-report.ts`、`dag-decision-evidence.ts`。
1
+ # Agent DAG Recovery Playbook(恢复手册)
2
+
3
+ > **关联**:[`agent-dag-runner.md`](agent-dag-runner.md)(CLI 与 run 语义)· [`templates/agent-dag-decision-gate.prompt.md`](templates/agent-dag-decision-gate.prompt.md)(Decision Gate 消费 recovery 证据)
4
+
5
+ ## 定位
6
+
7
+ Agent DAG **recovery planning 是只读、派生、advisory** 的。`dag report` 与 `buildDagDecisionGateEvidence()` 从 `.harness/dag-runs/` 的 canonical facts 聚合 `normalizedFailureCategory` → `recoveryRecommendation`,供人工或 Decision Gate prompt 消费。
8
+
9
+ 中断后不要从上游摘要手工生成 impl-only DAG。先修复 `.harness/tasks/<task-id>/source/` 或计划,再对同一 task 重新执行 `dag run-task`、严格 `dag validate` 和新的 `run-dag`。新生成的完整 DAG 会重新冻结 `sourceBinding` 并经过 contract/scout/plan/gate;v3 孤立 writer 如果既无来源绑定、也无只读 planner 上游,会被 strict governance 拒绝。完整规则见 [`design/dag-source-binding-and-recovery.md`](design/dag-source-binding-and-recovery.md)。
10
+
11
+ Production Readiness v0.1 在 normalized DAG category 之上增加 product-line routing。Report 与 doctor 输出应保留 raw DAG fact 并派生,不重写已完成 facts:
12
+
13
+ ```text
14
+ raw_failure_category
15
+ dag_normalized_failure_category
16
+ product_line_failure_category
17
+ recommended_follow_up
18
+ ```
19
+
20
+ Product-line taxonomy 定义见 `ai_workspace/loop-agent/design/state-and-failure-taxonomy.md`。
21
+
22
+ ### 前端设计门禁专用恢复路径
23
+
24
+ 前端 DAG 的 design gate shell 失败(`frontend-first-design-gate-shell`、`frontend-final-design-gate-shell`、`frontend-design-gate-shell`)**不路由为 `ProductBug` / `dev-fix`**。此类失败固定路由为:
25
+
26
+ - `productLineFailureCategory`: `ContractMismatch`
27
+ - `recommendedFollowUp`: `frontend-plan-revision-and-rerun`
28
+
29
+ 恢复动作由 `planDagRecovery` 根据实际的 `normalizedFailureCategory` 和 run status 决定(通常为 `rerun-after-fix` 或 `manual-review`),但 product-line 维度的分类确保 Task Pool 和 morning report 不会将其混入普通 bug backlog。
30
+
31
+ **非目标(本 playbook 不覆盖、runner 不实现):**
32
+
33
+ - 自动 retry / resume 节点执行
34
+ - 修改 `completed/` 或 `paused/` 下的历史 run facts
35
+ - 把 `autoRetryEligible` 当作 runtime 触发器
36
+ - 仅凭 recovery 派生字段自动 approve Decision Gate
37
+
38
+ ## 快速命令
39
+
40
+ ```bash
41
+ cd .
42
+
43
+ # 全局 runtime 健康(active/paused/completed 摘要 + healthIssues;advisoryOnly)
44
+ npm run dev -- dag doctor
45
+
46
+ # 单 run 生命周期(approvalFlow、hasHumanApproval、nextRecommendedAction)
47
+ npm run dev -- dag status --run-id <run-id>
48
+
49
+ # 聚焦最新 paused run(--paused-latest ≡ --lifecycle paused --latest)
50
+ npm run dev -- dag report --paused-latest [--json|--markdown]
51
+
52
+ # 默认 compact Markdown 表格
53
+ npm run dev -- dag report --run-id <run-id>
54
+
55
+ # 机器可读 JSON(含 primaryFailure / primaryRecovery / downstreamSkippedNodes)
56
+ npm run dev -- dag report --run-id <run-id> --json
57
+
58
+ # 人类交接 Recovery Plan(四段结构化 Markdown)
59
+ npm run dev -- dag report --run-id <run-id> --markdown
60
+
61
+ # 过滤器
62
+ npm run dev -- dag report --failed-only # 仅失败/需恢复
63
+ npm run dev -- dag report --latest --failed-only # 最新一条需恢复 run
64
+ npm run dev -- dag report --action retry-node # 按 primaryRecovery.action 筛选
65
+ npm run dev -- dag report --lifecycle paused --action resume-or-reject
66
+
67
+ # Decision Gate envelope dry-run(不 resume/retry;validate 无效时 exit 1)
68
+ npm run dev -- dag decision inspect --run-id <run-id> [--node-id <node-id>]
69
+ npm run dev -- dag decision validate --run-id <run-id> [--node-id <node-id>]
70
+ ```
71
+
72
+ ### Paused run operator 路径
73
+
74
+ 1. `dag report --paused-latest --json` 或 `dag doctor` — 定位最新 paused run 与 `primaryRecovery`
75
+ 2. `dag status --run-id <id>` — 读 `approvalFlow`、`escalationArtifactPath`、`pendingNodes`
76
+ 3. (可选)`dag decision validate --run-id <id>` — envelope preflight
77
+ 4. `dag approve --run-id <id> --option <option-id>` → `dag resume --run-id <id>`;或 `dag reject --run-id <id> --reason "..."`
78
+
79
+ 精确 approval 顺序见 [`agent-dag-runner.md`](agent-dag-runner.md) §Paused lifecycle。
80
+
81
+ Decision Gate prompt 侧:`buildDagDecisionGateEvidence()`(`./src/core/dag-decision-evidence.ts`)从 `DagRunReportEntry` 生成 prompt-friendly 摘要,字段与 JSON report 对齐,**不**写回 run state。
82
+
83
+ ## `dag report --json` schema 锁定
84
+
85
+ - **Schema 文件**:`ai_workspace/loop-agent/templates/agent-dag-report.schema.json`
86
+ - **Envelope**:`{ schemaVersion: 1, runs: DagRunReportEntry[] }`
87
+ - **稳定消费字段**(Decision Gate / tooling 应依赖):`primaryFailure`、`primaryRecovery`、`downstreamSkippedNodes`、`recoveryRecommendation`、`normalizedFailureCategory`;node 级 `decisionEnvelope`、`artifacts`;paused 级 `pausedByNodeId`、`pauseReason`
88
+ - **测试**:`./test/dag-report.test.ts` §`dag report JSON schema contract` 对 fixture run 做 schema 校验
89
+ - **变更策略**:breaking 字段变更须 bump `schemaVersion` 并同步 schema 文件与测试
90
+
91
+ ## Recovery Action 枚举
92
+
93
+ | Action | 含义 | 典型触发 |
94
+ |--------|------|----------|
95
+ | `none` | 无需恢复 | 成功完成 |
96
+ | `monitor` | 进行中,等待结束 | `PENDING` / `RUNNING` |
97
+ | `retry-node` | 修复瞬态条件后可重跑节点 | timeout;executor 瞬态(network/quota/rate-limit/unavailable) |
98
+ | `rerun-after-fix` | 先修根因再重跑 | auth、validation、shell-command、static-error、非瞬态 executor |
99
+ | `resume-or-reject` | 人工审批后继续或拒绝 | paused + decision-envelope / human-required |
100
+ | `manual-review` | 人工审查后再定路径 | write-guard、human-rejected、unknown、非 paused 的 decision-envelope |
101
+ | `inspect-upstream` | 先查上游失败 | SKIPPED 下游节点 |
102
+ | `unknown` | 未映射类别(不应出现在正常派生路径) | 内部兜底 |
103
+
104
+ ## Product-Line Routing v0.1
105
+
106
+ | Product-line category | Default follow-up |
107
+ |---|---|
108
+ | `SpecUnclear` | `spec-clarification` |
109
+ | `ContractMismatch` | `architecture-contract-fix` |
110
+ | `ProductBug` | `dev-fix` |
111
+ | `TestBug` | `qa-fix-test` |
112
+ | `EnvFailure` | `env-fix` 或 retry verify |
113
+ | `FlakyTest` | `flaky-test-analysis` |
114
+ | `RiskyChange` | `human-review` / `architecture-review` |
115
+ | `DependencyFailure` | unblock dependency |
116
+ | `NeedsHuman` | `human-review` |
117
+ | `Unknown` | human triage |
118
+
119
+ ## 类别 → 动作 → operator 指引
120
+
121
+ | Normalized category | Recovery action | Operator guidance | Anti-patterns |
122
+ |---------------------|-----------------|-------------------|---------------|
123
+ | `success` | `none` | 归档验收;按需 review artifacts | 对成功 run 发起 retry |
124
+ | `timeout` | `retry-node` | 查日志/artifacts 确认瞬态;人工重跑节点 | 未查根因就循环重试;指望 runner 自动 retry |
125
+ | `executor`(network/quota/rate-limit/unavailable) | `retry-node` | 等后端/配额恢复后重跑 | 把 auth/validation 误判为瞬态 executor |
126
+ | `executor`(其他 raw) | `rerun-after-fix` | 查 executor.jsonl、node result | 盲目 retry 非瞬态 backend 错误 |
127
+ | `auth` | `rerun-after-fix` | 更新 API key/凭证后重跑 | 在凭证未修复时 retry |
128
+ | `write-guard` | `manual-review` | 审 writeSet/writePolicy、prompt、result.summary | read-only 节点写根 `artifacts/`;扩大 writeSet 掩盖违规 |
129
+ | `validation` | `rerun-after-fix` | 修 schema/output/test 后再跑 | 跳过验证直接 approve |
130
+ | `shell-command` | `rerun-after-fix` | 读 stdout/stderr、修命令或 repo 状态 | 只重跑 shell 不改命令 |
131
+ | `static-error` | `rerun-after-fix` | 查 static config 与 emitted markdown | 当 LLM 节点 retry |
132
+ | `decision-envelope`(paused) | `resume-or-reject` | `dag approve --run-id <id> --option <option-id>` / `dag reject --run-id <id> --reason "..."` → `dag resume --run-id <id>` | 未读 envelope 就 approve;用 recovery 字段单独 auto-approve |
133
+ | `decision-envelope`(非 paused) | `manual-review` | 读 decision.envelope.json / validation artifact | 绕过 Decision Gate schema |
134
+ | `human-required`(paused) | `resume-or-reject` | 提供人工输入 → approve/resume | 在 escalation 未解决时 resume |
135
+ | `human-required`(非 paused) | `manual-review` | 读 human-escalation artifacts | 忽略 `requiresHuman` |
136
+ | `human-rejected` | `manual-review` | 修订 contract/source;**新 run** | 对同一 contract 自动 retry |
137
+ | `skipped` | `inspect-upstream` | 修上游 ERROR/SKIPPED 再考虑下游 | 直接 retry SKIPPED 节点 |
138
+ | `unknown` | `manual-review` | 读 state.json、executor.jsonl、node artifacts | 假设 `autoRetryEligible` 会触发执行 |
139
+
140
+ ## Handoff Recovery Plan 结构
141
+
142
+ `dag report --markdown` 的 **Recovery Plan** 含四段(与 JSON 稳定字段一一对应):
143
+
144
+ 1. **Primary Failure** — `primaryFailure`(node 或 run scope)
145
+ 2. **Recovery Action** — `primaryRecovery`(action、summary、reason、flags、commandHint)
146
+ 3. **Blocked Downstream / Skipped Nodes** — `downstreamSkippedNodes`
147
+ 4. **Recommended Operator Action** — 面向 operator 的步骤摘要
148
+
149
+ 保存 handoff 时重定向到平台临时目录或 `ai_workspace/loop-agent/reports/`,不要写入 `.harness/dag-runs/`。
150
+
151
+ ## Decision Gate 消费约定
152
+
153
+ 1. 优先 `dag report --json` 或 `buildDagDecisionGateEvidence()` 的 **verified** 派生摘要。
154
+ 2. 映射到 `decision` / `nextAction` 须保守;recovery 证据是 **advisory only, not an execution directive**。
155
+ 3. `autoRetryEligible: true` 仅表示「规划上可人工重试」,**不**触发 runner。
156
+ 4. paused run 的人类路径仍是 M5 CLI:`dag approve --run-id <id> --option <option-id>` / `dag reject --run-id <id> --reason "..."` / `dag resume --run-id <id>`(见 [`agent-dag-runner.md`](agent-dag-runner.md) §Decision Gate)。
157
+ 5. Envelope 干跑:`dag decision inspect|validate` 重解析 run facts;`validate` 无效时 exit 1;**不**写 artifact、**不** resume。
158
+
159
+ ## Active stale run recovery(advisory detection)
160
+
161
+ `dag doctor` 与 `dag status` 通过 `detectDagRunHealthIssues()` 检测 lifecycle 不一致,**不** mutate run facts。
162
+
163
+ | Code | 典型场景 | operator 指引 |
164
+ |------|----------|------------|
165
+ | `terminal-in-active` | run 已完成但 `active/<run-id>/` 残留 | 对照 `completed/` canonical facts;手动 archive 或删除 stale 目录 |
166
+ | `paused-in-active` | pause 后目录未迁至 `paused/` | `dag doctor` 诊断;修复 facts 后再 approve/resume |
167
+ | `lifecycle-status-mismatch` | `paused/` 下 status 非 paused | 同上 |
168
+ | `missing-approval-artifact` | approve 后 artifact 缺失 | 勿 resume;re-approve 或 restore artifact |
169
+ | `non-terminal-in-completed` | completed 目录 status 异常 | manual-review only |
170
+ | `run-id-mismatch` / `missing-state-json` | 目录损坏或命名错误 | Inspect;勿 auto-mutate completed facts |
171
+
172
+ **Deferred runtime**:无 `dag recover apply` 或自动 cleanup;未来可能增加只读 `dag recover plan`(设计占位,未实现)。
173
+
174
+ ## 事实源与边界
175
+
176
+ | 类型 | 位置 | 规则 |
177
+ |------|------|------|
178
+ | Canonical run facts | `.harness/dag-runs/{active\|paused\|completed}/<run-id>/` | **只读**;report 不写回 |
179
+ | 派生 report | stdout / 重定向文件 | 可随时再生 |
180
+ | 工作块摘要 | 根 `artifacts/` | 非 per-run 历史;read-only DAG 节点不得写 |
181
+
182
+ ## 验证
183
+
184
+ ```bash
185
+ cd . && npx vitest run \
186
+ test/dag-report.test.ts \
187
+ test/dag-recovery-recommendation.test.ts \
188
+ test/dag-decision-gate-recovery-dogfood.test.ts \
189
+ test/dag-decision-evidence.test.ts \
190
+ test/dag-decision-envelope.test.ts \
191
+ test/dag-approve-resume.test.ts \
192
+ test/cli-contract.test.ts
193
+ ```
194
+
195
+ 实现细节与映射逻辑:`./src/core/dag-recovery-recommendation.ts`、`dag-report.ts`、`dag-decision-evidence.ts`。