coding-agent-harness 1.0.2 → 1.0.5

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 (219) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/CONTRIBUTING.md +98 -0
  3. package/LICENSE +661 -21
  4. package/LICENSE-EXCEPTION.md +37 -0
  5. package/README.md +244 -87
  6. package/README.zh-CN.md +77 -35
  7. package/SKILL.md +32 -24
  8. package/docs-release/README.md +9 -5
  9. package/docs-release/architecture/overview.md +17 -5
  10. package/docs-release/architecture/overview.zh-CN.md +9 -5
  11. package/docs-release/architecture/system-explainer/01-system-overview.md +217 -0
  12. package/docs-release/architecture/system-explainer/02-module-dependency.md +257 -0
  13. package/docs-release/architecture/system-explainer/03-task-lifecycle.md +304 -0
  14. package/docs-release/architecture/system-explainer/04-check-and-governance.md +239 -0
  15. package/docs-release/architecture/system-explainer/05-data-flow.md +276 -0
  16. package/docs-release/architecture/system-explainer/06-preset-and-migration.md +303 -0
  17. package/docs-release/architecture/system-explainer/README.md +67 -0
  18. package/docs-release/architecture/system-explainer/en-US/01-system-overview.md +226 -0
  19. package/docs-release/architecture/system-explainer/en-US/02-module-dependency.md +263 -0
  20. package/docs-release/architecture/system-explainer/en-US/03-task-lifecycle.md +319 -0
  21. package/docs-release/architecture/system-explainer/en-US/04-check-and-governance.md +250 -0
  22. package/docs-release/architecture/system-explainer/en-US/05-data-flow.md +290 -0
  23. package/docs-release/architecture/system-explainer/en-US/06-preset-and-migration.md +323 -0
  24. package/docs-release/architecture/system-explainer/en-US/README.md +70 -0
  25. package/docs-release/assets/dashboard-overview.png +0 -0
  26. package/docs-release/guides/agent-installation.en-US.md +39 -15
  27. package/docs-release/guides/agent-installation.md +43 -16
  28. package/docs-release/guides/contributing.md +100 -0
  29. package/docs-release/guides/contributing.zh-CN.md +99 -0
  30. package/docs-release/guides/document-audience-and-surfaces.en-US.md +3 -2
  31. package/docs-release/guides/document-audience-and-surfaces.md +3 -2
  32. package/docs-release/guides/full-legacy-migration-subagent-strategy.md +2 -2
  33. package/docs-release/guides/full-legacy-migration-subagent-strategy.zh-CN.md +2 -2
  34. package/docs-release/guides/legacy-migration-agent-prompt.md +0 -11
  35. package/docs-release/guides/legacy-migration-agent-prompt.zh-CN.md +0 -11
  36. package/docs-release/guides/migration-playbook.en-US.md +14 -15
  37. package/docs-release/guides/migration-playbook.md +14 -15
  38. package/docs-release/guides/parent-control-repository-pattern.en-US.md +7 -5
  39. package/docs-release/guides/parent-control-repository-pattern.md +7 -5
  40. package/docs-release/guides/preset-development.md +238 -0
  41. package/docs-release/guides/repository-operating-models.en-US.md +5 -4
  42. package/docs-release/guides/repository-operating-models.md +5 -4
  43. package/docs-release/guides/task-state-machine.en-US.md +224 -0
  44. package/docs-release/guides/task-state-machine.md +231 -0
  45. package/docs-release/intl/en-US.md +1 -1
  46. package/docs-release/intl/zh-CN.md +1 -1
  47. package/examples/minimal-project/docs/09-PLANNING/TASKS/demo-task/INDEX.md +60 -0
  48. package/examples/minimal-project/docs/09-PLANNING/TASKS/demo-task/findings.md +7 -0
  49. package/package.json +10 -4
  50. package/presets/legacy-migration/checks/preset-check.mjs +3 -0
  51. package/presets/legacy-migration/preset.yaml +134 -0
  52. package/presets/legacy-migration/scripts/plan-work-queue.mjs +4 -0
  53. package/presets/legacy-migration/scripts/scaffold-task-contracts.mjs +4 -0
  54. package/presets/legacy-migration/templates/execution_strategy.append.md +18 -0
  55. package/presets/legacy-migration/templates/findings.seed.md +17 -0
  56. package/presets/legacy-migration/templates/review.seed.md +12 -0
  57. package/presets/legacy-migration/templates/task_plan.append.md +9 -0
  58. package/presets/legacy-migration/templates/visual_map.append.md +12 -0
  59. package/presets/legacy-migration/workbench/dashboard-panels.yaml +2 -0
  60. package/presets/legacy-migration/workbench/migration-queue.schema.json +23 -0
  61. package/presets/lesson-sedimentation/preset.yaml +23 -0
  62. package/presets/lesson-sedimentation/templates/prompt.md +23 -0
  63. package/presets/module/preset.yaml +25 -0
  64. package/presets/module/templates/execution_strategy.append.md +8 -0
  65. package/presets/module/templates/task_plan.append.md +17 -0
  66. package/presets/standard-task/preset.yaml +31 -0
  67. package/presets/standard-task/templates/task_plan.append.md +7 -0
  68. package/references/adversarial-review-standard.md +2 -2
  69. package/references/agents-md-pattern.md +2 -2
  70. package/references/delivery-operating-model-standard.md +3 -3
  71. package/references/docs-directory-standard.md +6 -7
  72. package/references/harness-ledger.md +53 -96
  73. package/references/lessons-governance.md +88 -93
  74. package/references/module-parallel-standard.md +14 -14
  75. package/references/planning-loop.md +12 -6
  76. package/references/pull-request-standard.md +118 -0
  77. package/references/repo-governance-standard.md +11 -2
  78. package/references/review-routing-standard.md +7 -1
  79. package/references/ssot-governance.md +67 -59
  80. package/references/taskr-gap-analysis.md +600 -0
  81. package/references/walkthrough-closeout.md +7 -7
  82. package/scripts/check-harness.mjs +40 -301
  83. package/scripts/commands/dashboard-command.mjs +67 -0
  84. package/scripts/commands/migration-command.mjs +126 -0
  85. package/scripts/commands/preset-command.mjs +73 -0
  86. package/scripts/commands/task-command.mjs +328 -0
  87. package/scripts/harness.mjs +59 -260
  88. package/scripts/lib/capability-registry.mjs +82 -28
  89. package/scripts/lib/check-module-parallel.mjs +230 -0
  90. package/scripts/lib/check-profiles.mjs +90 -228
  91. package/scripts/lib/check-task-contracts.mjs +55 -0
  92. package/scripts/lib/core-shared.mjs +65 -2
  93. package/scripts/lib/dashboard-data.mjs +155 -24
  94. package/scripts/lib/dashboard-workbench.mjs +131 -12
  95. package/scripts/lib/dashboard-writer.mjs +20 -4
  96. package/scripts/lib/git-status-summary.mjs +46 -0
  97. package/scripts/lib/governance-index-generator.mjs +174 -0
  98. package/scripts/lib/governance-sync.mjs +611 -0
  99. package/scripts/lib/governance-table-boundary.mjs +175 -0
  100. package/scripts/lib/harness-core.mjs +6 -0
  101. package/scripts/lib/lesson-maintenance.mjs +36 -29
  102. package/scripts/lib/markdown-utils.mjs +33 -0
  103. package/scripts/lib/migration-planner.mjs +4 -6
  104. package/scripts/lib/migration-support.mjs +1 -1
  105. package/scripts/lib/phase-kind.mjs +50 -0
  106. package/scripts/lib/preset-audit-contracts.mjs +37 -0
  107. package/scripts/lib/preset-engine.mjs +494 -0
  108. package/scripts/lib/preset-registry.mjs +776 -0
  109. package/scripts/lib/preset-resource-contracts.mjs +83 -0
  110. package/scripts/lib/review-confirm-git-gate.mjs +248 -0
  111. package/scripts/lib/status-builder.mjs +88 -0
  112. package/scripts/lib/status-dashboard-renderer.mjs +105 -0
  113. package/scripts/lib/subagent-authorization-audit.mjs +196 -0
  114. package/scripts/lib/task-audit-metadata.mjs +385 -0
  115. package/scripts/lib/task-audit-migration.mjs +350 -0
  116. package/scripts/lib/task-completion-consistency.mjs +26 -0
  117. package/scripts/lib/task-index.mjs +93 -0
  118. package/scripts/lib/task-lesson-candidates.mjs +242 -0
  119. package/scripts/lib/task-lesson-sedimentation.mjs +326 -0
  120. package/scripts/lib/task-lifecycle/create-task-helpers.mjs +67 -0
  121. package/scripts/lib/task-lifecycle/phase-sync.mjs +88 -0
  122. package/scripts/lib/task-lifecycle/review-confirm.mjs +112 -0
  123. package/scripts/lib/task-lifecycle/review-gates.mjs +73 -0
  124. package/scripts/lib/task-lifecycle/review-submission.mjs +63 -0
  125. package/scripts/lib/task-lifecycle/scaffold-provenance.mjs +49 -0
  126. package/scripts/lib/task-lifecycle/template-files.mjs +53 -0
  127. package/scripts/lib/task-lifecycle/text-utils.mjs +24 -0
  128. package/scripts/lib/task-lifecycle.mjs +338 -477
  129. package/scripts/lib/task-metadata.mjs +118 -0
  130. package/scripts/lib/task-review-model.mjs +455 -0
  131. package/scripts/lib/task-scanner.mjs +193 -372
  132. package/scripts/lib/task-tombstone-commands.mjs +140 -0
  133. package/scripts/postinstall.mjs +14 -0
  134. package/skills/preset-creator/SKILL.md +179 -0
  135. package/skills/preset-creator/references/complex-task-skeleton/README.md +31 -0
  136. package/skills/preset-creator/references/complex-task-skeleton/artifacts/INDEX.md +12 -0
  137. package/skills/preset-creator/references/complex-task-skeleton/brief.md +43 -0
  138. package/skills/preset-creator/references/complex-task-skeleton/execution_strategy.md +71 -0
  139. package/skills/preset-creator/references/complex-task-skeleton/findings.md +24 -0
  140. package/skills/preset-creator/references/complex-task-skeleton/lesson_candidates.md +70 -0
  141. package/skills/preset-creator/references/complex-task-skeleton/long-running-task-contract.md +76 -0
  142. package/skills/preset-creator/references/complex-task-skeleton/progress.md +33 -0
  143. package/skills/preset-creator/references/complex-task-skeleton/references/INDEX.md +13 -0
  144. package/skills/preset-creator/references/complex-task-skeleton/review.md +107 -0
  145. package/skills/preset-creator/references/complex-task-skeleton/task_plan.md +111 -0
  146. package/skills/preset-creator/references/complex-task-skeleton/visual_map.md +50 -0
  147. package/skills/preset-creator/references/preset-package-skeleton.md +296 -0
  148. package/templates/AGENTS.md.template +24 -18
  149. package/templates/dashboard/assets/app-src/00-state.js +13 -0
  150. package/templates/dashboard/assets/app-src/10-router.js +5 -1
  151. package/templates/dashboard/assets/app-src/20-overview.js +18 -8
  152. package/templates/dashboard/assets/app-src/30-tasks.js +92 -246
  153. package/templates/dashboard/assets/app-src/35-task-detail.js +286 -0
  154. package/templates/dashboard/assets/app-src/45-review.js +241 -22
  155. package/templates/dashboard/assets/app-src/50-migration.js +24 -10
  156. package/templates/dashboard/assets/app-src/55-presets.js +375 -0
  157. package/templates/dashboard/assets/app-src/60-shared.js +3 -1
  158. package/templates/dashboard/assets/app-src/90-bindings.js +302 -29
  159. package/templates/dashboard/assets/app.css +1501 -376
  160. package/templates/dashboard/assets/app.css.manifest.json +10 -0
  161. package/templates/dashboard/assets/app.js +1240 -101
  162. package/templates/dashboard/assets/app.manifest.json +2 -0
  163. package/templates/dashboard/assets/css-src/00-foundation.css +346 -0
  164. package/templates/dashboard/assets/css-src/10-panels-flow.css +236 -0
  165. package/templates/dashboard/assets/css-src/20-briefs-controls.css +398 -0
  166. package/templates/dashboard/assets/css-src/30-task-index.css +739 -0
  167. package/templates/dashboard/assets/css-src/35-review-workspace.css +507 -0
  168. package/templates/dashboard/assets/css-src/40-detail-modules-migration.css +489 -0
  169. package/templates/dashboard/assets/css-src/45-presets.css +516 -0
  170. package/templates/dashboard/assets/css-src/50-responsive-overrides.css +551 -0
  171. package/templates/dashboard/assets/i18n.js +263 -23
  172. package/templates/ledger/Harness-Ledger.md +13 -25
  173. package/templates/lessons/lesson-arch-process-change.md +1 -1
  174. package/templates/lessons/lesson-new-doc.md +1 -1
  175. package/templates/lessons/lesson-ref-change.md +1 -1
  176. package/templates/planning/INDEX.md +87 -0
  177. package/templates/planning/brief.md +1 -1
  178. package/templates/planning/execution_strategy.md +31 -0
  179. package/templates/planning/lesson_candidates.md +18 -6
  180. package/templates/planning/module_session_prompt.md +1 -0
  181. package/templates/planning/optional/artifacts/INDEX.md +3 -3
  182. package/templates/planning/optional/references/INDEX.md +3 -3
  183. package/templates/planning/review.md +41 -0
  184. package/templates/planning/task_plan.md +5 -21
  185. package/templates/planning/visual_map.md +13 -9
  186. package/templates/planning/visual_map.simple.md +52 -0
  187. package/templates/reference/execution-workflow-standard.md +31 -3
  188. package/templates/reference/pull-request-standard.md +80 -0
  189. package/templates/reference/repo-governance-standard.md +7 -6
  190. package/templates/reference/review-routing-standard.md +6 -0
  191. package/templates/reference/walkthrough-standard.md +2 -1
  192. package/templates/verifier/verifier-output.md +1 -1
  193. package/templates-zh-CN/AGENTS.md.template +25 -19
  194. package/templates-zh-CN/ledger/Harness-Ledger.md +17 -40
  195. package/templates-zh-CN/planning/INDEX.md +87 -0
  196. package/templates-zh-CN/planning/brief.md +1 -1
  197. package/templates-zh-CN/planning/execution_strategy.md +30 -0
  198. package/templates-zh-CN/planning/lesson_candidates.md +18 -6
  199. package/templates-zh-CN/planning/module_session_prompt.md +1 -0
  200. package/templates-zh-CN/planning/review.md +41 -1
  201. package/templates-zh-CN/planning/task_plan.md +4 -44
  202. package/templates-zh-CN/planning/visual_map.md +14 -7
  203. package/templates-zh-CN/planning/visual_map.simple.md +48 -0
  204. package/templates-zh-CN/reference/adversarial-review-standard.md +1 -1
  205. package/templates-zh-CN/reference/docs-library-standard.md +1 -1
  206. package/templates-zh-CN/reference/execution-workflow-standard.md +33 -7
  207. package/templates-zh-CN/reference/harness-ledger-standard.md +2 -2
  208. package/templates-zh-CN/reference/pull-request-standard.md +106 -0
  209. package/templates-zh-CN/reference/repo-governance-standard.md +4 -3
  210. package/templates-zh-CN/reference/review-routing-standard.md +8 -1
  211. package/templates-zh-CN/reference/walkthrough-standard.md +3 -2
  212. package/templates-zh-CN/walkthrough/Closeout-SSoT.md +1 -1
  213. package/docs-release/assets/dashboard-overview-en.png +0 -0
  214. package/scripts/smoke-dashboard.mjs +0 -92
  215. package/scripts/test-harness.mjs +0 -1395
  216. package/templates/ssot/Feature-SSoT.md +0 -43
  217. package/templates/ssot/Lessons-SSoT.md +0 -44
  218. package/templates-zh-CN/ssot/Feature-SSoT.md +0 -49
  219. package/templates-zh-CN/ssot/Lessons-SSoT.md +0 -49
@@ -0,0 +1,600 @@
1
+ # Taskr vs Coding Agent Harness — 差距分析
2
+
3
+ > 对比基准:
4
+ > - **Taskr**: [xerrors/taskr-skill](https://github.com/xerrors/taskr-skill)(SKILL.md + protocol.ts + CLI + Board)
5
+ > - **Coding Agent Harness**: 本仓库 `/Users/lizeyu/Projects/coding-agent-harness`(SKILL.md + 12 references + 30+ templates)
6
+ >
7
+ > 分析日期:2026-05-21
8
+ > 分析人:小宁(Codex Main)
9
+
10
+ ---
11
+
12
+ ## 一、定位差异总览
13
+
14
+ | 维度 | Taskr | Coding Agent Harness |
15
+ |------|-------|---------------------|
16
+ | 定位 | Repo-local **任务协议** + 轻量工作流 | 项目级 **工程方法论** + 完整 harness 体系 |
17
+ | 粒度 | 单任务卡片级别(一个 md 文件 = 一个任务) | 项目 / wave / feature 级别(多文件协作体系) |
18
+ | 目标用户 | 任何用 AI coding agent 的人 | 需要长程项目工程化支撑的团队 |
19
+ | 核心产出 | `.taskr/tasks/*.md` | `docs/` 完整骨架 + SSoT + Ledger + Walkthrough |
20
+ | 产品形态 | Skill + npm CLI + 本地看板 + VS Code 插件 | Skill(纯文档协议,无代码工具) |
21
+ | 默认重量 | **轻量优先**(checklist 够了就不加仪式) | **完整优先**(12 个 Phase 全走一遍) |
22
+
23
+ **结论**:Taskr 不是 Harness 的竞品,是 Harness 缺失的 **"最后一公里"——单任务执行层**。Harness 擅长搭骨架、定规则、管全局;Taskr 擅长让每个具体任务的执行过程可追踪、可验证、可回溯。两者互补。
24
+
25
+ ---
26
+
27
+ ## 二、我们已有的(不需要从 Taskr 吸收的)
28
+
29
+ 以下能力 Harness 已经覆盖,且比 Taskr 更深:
30
+
31
+ ### 2.1 多级 SSoT 体系 ✅ 已有,且更深
32
+
33
+ | 能力 | 我们 | Taskr |
34
+ |------|------|-------|
35
+ | Feature 排期表 | Feature SSoT(独立文件) | 无(只有任务列表) |
36
+ | 回归控制塔 | Regression SSoT + Evidence Depth 五级制 | 无 |
37
+ | 经验沉淀 | task-local lesson candidates + promoted detail docs + 冲突处理 + 人审流程 | 无 |
38
+ | 全局审计 | Harness Ledger(HL-* ID) | 无 |
39
+
40
+ ### 2.2 长程任务合同 ✅ 已有,且更细
41
+
42
+ 我们的 `long-running-task-standard.md` 定义了 Goal / Scope / Primary Caller / Execution Permission / Review Loop / Evidence Depth / Stop Condition / Deliverables 八个维度,还有暂停条件和反模式清单。Taskr 没有长程任务概念,所有任务都用同一套状态机。
43
+
44
+ ### 2.3 回归体系 ✅ 已有,Taskr 完全没有
45
+
46
+ Evidence Depth 五级制(L1 tests → L5 hard gate)、Cadence Ledger 触发规则、Shared Regression Batch Log。
47
+
48
+ ### 2.4 Worktree 并行开发 ✅ 已有
49
+
50
+ 完整的创建 / merge / 清理流程 + 多 agent 分工协议。Taskr 记录 branch 字段但不管理 worktree 生命周期。
51
+
52
+ ### 2.5 Walkthrough 收口 + 经验回流 ✅ 已有
53
+
54
+ Walkthrough 模板 + Lessons 检查四问 + task-local candidate + promoted detail doc + 人审批准入流程。Taskr 只有 Completion Summary。
55
+
56
+ ### 2.6 项目诊断 + 分级方案 ✅ 已有
57
+
58
+ Onboarding Audit 扫描清单 + Lite / Standard / Full 三档分支。Taskr 的 `doctor` 只检查自身是否初始化完成。
59
+
60
+ ### 2.7 增量更新 SOP ✅ 已有
61
+
62
+ Delta merge 原则:不覆盖已有业务事实、历史 walkthrough、SSoT 条目。Taskr 没有"升级"概念,因为它的协议本身很简单。
63
+
64
+ ---
65
+
66
+ ## 三、Taskr 有而值得我们吸收的(核心差距清单)
67
+
68
+ ### 3.1 🔴 `pending_confirmation` 状态 — 最关键的缺失
69
+
70
+ **现状**:我们的任务状态流转是 `未开始 → 进行中 → 已完成 → 已阻塞`。Agent 做完实现和验证后直接标"已完成",没有中间态。
71
+
72
+ **问题**:
73
+ - Agent 自判"完成了"和人确认"可以提交了"是两件事,但我们混在一起
74
+ - 无法区分"agent 认为做完了"和"人确认做完了"
75
+ - 多 agent 场景下,reviewer 审完也没地方挂"等主人确认"
76
+
77
+ **Taskr 做法**:
78
+ ```
79
+ planned → in_progress → pending_confirmation → implemented
80
+ ↑ ↑
81
+ agent 完成+验证 人确认提交
82
+ ```
83
+
84
+ `pending_confirmation` 的语义精确:
85
+ - Agent 已跑完实现 + 验证
86
+ - Completion Summary 已写
87
+ - Acceptance Criteria 已逐条 check
88
+ - Verification 已记录
89
+ - 但 **commit 还没打(或打了但等人确认)**
90
+ - 人确认后才标 `implemented`
91
+
92
+ **建议吸收方式**:
93
+ 在 Planning Loop 的状态流转中加入 `pending_confirmation`:
94
+
95
+ ```mermaid
96
+ 未开始 → 进行中 → 待确认(pending_confirmation) → 已完成
97
+
98
+ 已阻塞 → 进行中
99
+ ```
100
+
101
+ - `progress.md` 模板增加 `pending_confirmation` 阶段
102
+ - 任务完成流程改为:实现→验证→标 `pending_confirmation` → 人确认→标 `completed` + 打 commit
103
+ - Long-Running Task Contract 的 Stop Condition 达成后进入 `pending_confirmation` 而非直接 `completed`
104
+ - Harness Ledger 状态词增加 `pending_confirmation`
105
+
106
+ **优先级:P0(必须吸收)**
107
+
108
+ ---
109
+
110
+ ### 3.2 🔴 结构化 YAML Frontmatter + Schema Version — 任务元数据可机器解析
111
+
112
+ **现状**:我们的 `task_plan.md` 是纯 Markdown,没有结构化元数据。标题、状态、创建时间、关联 commit 等信息散落在正文里,agent 每次都要 parse 自由文本。
113
+
114
+ **Taskr 做法**:每个任务文件有严格的 YAML frontmatter:
115
+
116
+ ```yaml
117
+ ---
118
+ schema_version: 1
119
+ id: 2026-05-21-implement-user-invitation-flow
120
+ title: Implement user invitation flow
121
+ status: pending_confirmation
122
+ created_at: 2026-05-21T10:30:00+08:00
123
+ updated_at: 2026-05-21T14:20:00+08:00
124
+ branch: feat/user-invitation
125
+ commits:
126
+ - a1b2c3d
127
+ commit_status: created
128
+ verification:
129
+ tests_run:
130
+ - npm test -- --grep invitation
131
+ - npm run build
132
+ result: passed
133
+ reason: All tests green.
134
+ ---
135
+ ```
136
+
137
+ **为什么重要**:
138
+ - CLI / 脚本可以直接读取状态,不需要 LLM parse
139
+ - `validate` 命令可以做自动化校验(字段完整性、状态一致性)
140
+ - 看板 / dashboard 可以零成本消费数据
141
+ - Git reconcile 可以自动匹配 commit ↔ task
142
+
143
+ **建议吸收方式**:
144
+ 给 `task_plan.md` 模板加上 YAML frontmatter,定义最小字段集:
145
+
146
+ ```yaml
147
+ ---
148
+ schema_version: 1
149
+ id: <YYYY-MM-DD-task-slug>
150
+ title: <任务标题>
151
+ status: planned | in_progress | pending_confirmation | completed | blocked
152
+ created_at: <ISO8601>
153
+ updated_at: <ISO8601>
154
+ worktree: <path or null>
155
+ branch: <branch-name or null>
156
+ commits: []
157
+ commit_status: not_created | created | not_applicable
158
+ verification:
159
+ tests_run: []
160
+ result: not_run | passed | failed | partial
161
+ reason: ""
162
+ ---
163
+ ```
164
+
165
+ 不要求现有任务立即迁移(渐进式),但新任务必须带 frontmatter。
166
+
167
+ **优先级:P0(必须吸收)**
168
+
169
+ ---
170
+
171
+ ### 3.3 🔴 `validate` 协议校验 — 自动检查任务文件合规性
172
+
173
+ **现状**:没有自动化校验。任务文件是否缺 section、状态值是否合法、completed 任务有没有 completion summary、这些全靠 agent 自觉或人工巡检。
174
+
175
+ **Taskr 的 validate 检查项**(共 ~10 项):
176
+
177
+ | 检查项 | 规则 |
178
+ |--------|------|
179
+ | 文件存在 | `.taskr/tasks/<id>.md` 必须存在 |
180
+ | YAML frontmatter | 必须有 `---...---` 块 |
181
+ | 必填字段 | schema_version, id, title, status, created_at, updated_at, branch, commits, commit_status, verification |
182
+ | ID 格式 | lower-kebab-case |
183
+ | 文件名匹配 | 文件名必须等于 id(不含 .md) |
184
+ | status 合法性 | 必须是 5 个合法值之一 |
185
+ | commit_status 合法性 | 必须是 3 个合法值之一 |
186
+ | commits 类型 | 必须是数组 |
187
+ | 必填 section | Request, Acceptance Criteria, Implementation Plan, Progress Log, Agent Notes, Completion Summary |
188
+ | Completion Summary | pending_confirmation / implemented 任务不能为空 |
189
+ | commit 一致性 | commit_status=created 时 commits 不能为空 |
190
+ | AC checkbox |必须有 checklist item,且 completed 任务至少勾了一个 |
191
+ | research_files | 如果有必须是 `.taskr/research/` 下的 .md |
192
+
193
+ **建议吸收方式**:
194
+ 写一个轻量 validate 脚本(shell + python 或 node),作为 Harness 的一部分放入 `scripts/`。检查项适配我们的模板结构。
195
+
196
+ **优先级:P0(必须吸收)**
197
+
198
+ ---
199
+
200
+ ### 3.4 🟡 `doctor` 健康检查 — 一键诊断 harness 状态
201
+
202
+ **现状**:没有一键诊断脚本。想知道 harness 是否健康需要人工逐项检查。
203
+
204
+ **Taskr 的 doctor 检查项**:
205
+ - `.taskr/` 目录是否存在
206
+ - `tasks/` 子目录是否存在
207
+ - 任务 Markdown 文件是否通过 validate
208
+ - 有无 Claude/Codex Skill 安装线索
209
+ - Node 版本是否满足要求
210
+
211
+ **建议吸收方式**:
212
+ 扩展为 Harness 级别的 doctor,检查项包括:
213
+ - `AGENTS.md` / `CLAUDE.md` 存在且非空
214
+ - `docs/` 目录结构是否符合标准
215
+ - 三张 SSoT 文件存在
216
+ - Harness Ledger 存在
217
+ - 任务目录下的 task_plan 是否通过 validate
218
+ - 模板文件完整
219
+ - reference 文件完整
220
+
221
+ **优先级:P1(强烈建议)**
222
+
223
+ ---
224
+
225
+ ### 3.5 🟡 Commit 追踪与 Git Reconcile — 任务 ↔ 提交自动关联
226
+
227
+ **现状**:我们在 progress.md 里手写"commit: abc1234",但没有结构化记录。无法回答"这个任务对应哪些 commit"、"哪些 commit 还没关联到任务"。
228
+
229
+ **Taskr 做法**:
230
+ 1. 每个 task 的 frontmatter 有 `commits: []` 数组和 `commit_status` 字段
231
+ 2. commit message 强制带 footer:`Taskr: <task-id>`
232
+ 3. `complete` 时自动记录 commit hash
233
+ 4. 实现后有 reconcile 流程:扫 `pending_confirmation` 任务,用 `git log --grep "Taskr: <id>"` 和 `git diff` 反向补全遗漏的 commit 关联
234
+ 5. 不靠时间 proximity 做模糊匹配,只认明确证据
235
+
236
+ **建议吸收方式**:
237
+ 1. task_plan frontmatter 加 `commits` / `commit_status` 字段(与 3.2 联动)
238
+ 2. 定义 commit message convention:harness task 引用格式(如 `Harness: <task-id>` 或沿用 Taskr 的 `Taskr:` footer)
239
+ 3. 在任务收口流程中加入 reconcile 步骤
240
+ 4. 写一个 `reconcile` 脚本,扫描未关联 commit
241
+
242
+ **优先级:P1(强烈建议)**
243
+
244
+ ---
245
+
246
+ ### 3.6 🟡 结构化验证记录 — Verification 作为一等公民
247
+
248
+ **现状**:验证结果散落在 progress.md 的自由文本里("跑了 npm test,通过了")。没有统一格式,无法聚合查看。
249
+
250
+ **Taskr 做法**:
251
+
252
+ ```yaml
253
+ verification:
254
+ tests_run:
255
+ - npx vitest run src/invitation.test.ts
256
+ - npm run build
257
+ - # browser smoke: checked invite button renders
258
+ result: passed
259
+ reason: All 12 tests green. Build succeeded. UI verified.
260
+ ```
261
+
262
+ **关键设计决策**:
263
+ - `tests_run` 是命令列表(可复跑),不是描述性文字
264
+ - `result` 是枚举(`not_run | passed | failed | partial`),不是自由文本
265
+ - `reason` 是自由文本,解释特殊情况
266
+ - UI 类改动要求至少检查默认状态 + 变更交互状态
267
+ - 响应式 UI 要求额外检查窄视口
268
+
269
+ **建议吸收方式**:
270
+ 1. frontmatter 的 `verification` 块采用 Taskr 的结构(与 3.2 联动)
271
+ 2. Verification Policy 明确写入 reference:
272
+ - 代码改动 → unit/build check
273
+ - UI 改动 → browser/validation 至少两个状态
274
+ - 响应式 → 额外窄视口
275
+ - 跑不了 → 记录原因,不允许隐式跳过
276
+ 3. progress.md 中验证记录部分改用结构化格式
277
+
278
+ **优先级:P1(强烈建议)**
279
+
280
+ ---
281
+
282
+ ### 3.7 🟡 轻量优先哲学 — 避免 Superpowers 式重流程
283
+
284
+ **现状**:Harness 的完整流程有 12 个 Phase,对小型任务偏重。虽然我们有 Lite/Standard/Full 分档,但即使 Lite 也需要 AGENTS.md + reference + planning template + Regression SSoT + Harness Ledger + Walkthrough。
285
+
286
+ **Taskr 的 Intent And Confirmation Policy**:
287
+ - 简单明确的请求 → 写 concise task card → 直接干
288
+ - 复杂请求 → 问几个关键澄清 → 等 approval
289
+ - **不强制** brainstorming / 设计文档 / worktree / skill 拆分
290
+ - **checklist 够了就不加 scope/risk/stop condition**
291
+ - "Add useful friction before code changes, not ceremony everywhere."
292
+
293
+ **核心洞察**:Taskr 把"要不要走重流程"这个决策交给了任务本身的复杂度,而不是项目级别。同一个项目里,简单任务走轻量,复杂任务自然变重。
294
+
295
+ **建议吸收方式**:
296
+ 1. 在 Planning Loop reference 中加入 **任务分级入口判断**:
297
+
298
+ | 判断 | 流程 |
299
+ |------|------|
300
+ | 单文件小修 / typo / config | 不建任务目录,直接改,commit message 引用即可 |
301
+ | 普通 feature / fix(1-3 文件) | 建任务目录 + task_plan(含 frontmatter),不需要 long-running contract |
302
+ | 复杂 feature / 重构 / 跨模块 | 完整三件套 + contract + SSoT 回写 + walkthrough |
303
+
304
+ 2. 在 SKILL.md 主执行 SOP 中加一个 **快速路径**:检测到 trivial task 时跳到简化流程
305
+
306
+ **优先级:P1(强烈建议,改变用户体验)**
307
+
308
+ ---
309
+
310
+ ### 3.8 🟡 Research Files — 调研报告显式关联任务
311
+
312
+ **现状**:我们的 `findings.md` 存放在任务目录内,内容和任务耦合。但如果调研内容很长(比如外部技术方案对比),会撑大 findings.md,而且无法复用。
313
+
314
+ **Taskr 做法**:
315
+ - `.taskr/research/<task-id>/<report-name>.md` 独立存放
316
+ - task frontmatter 的 `research_files` 字段记录路径列表
317
+ - 一个任务可以关联多份报告
318
+ - 通过 CLI 创建:`taskr research <id> <filename>`
319
+ - Agent Notes 自动追加引用行
320
+
321
+ **建议吸收方式**:
322
+ 1. 任务目录下允许建 `research/` 子目录
323
+ 2. findings.md 保留为"轻量研究发现"(决策、发现、影响)
324
+ 3. 大型调研报告放 `research/`,在 findings.md 中引用
325
+ 4. 可选:frontmatter 加 `research_files` 字段
326
+
327
+ **优先级:P2(建议吸收)**
328
+
329
+ ---
330
+
331
+ ### 3.9 🟡 本地看板(Board)— 可视化任务状态
332
+
333
+ **现状**:我们有一个 HTML dashboard(`harness-dashboard.html`),但它是一个独立的静态页面,主要展示 Harness 整体状态(SSoT、Ledger 等)。没有任务级别的 Kanban / Table 视图。
334
+
335
+ **Taskr 的 Board**:
336
+ - 直接读 `.taskr/tasks/*.md`,无需中间缓存
337
+ - 支持 Table 视图和 Kanban 视图切换
338
+ - 按验收进度排序(默认),也可按创建/更新时间排
339
+ - 状态统计(各状态多少任务)
340
+ - 显示 commit 上下文和文件 diff
341
+ - 任务详情抽屉:状态、提交、需求、验收标准、实现计划
342
+ - 支持编辑任务小节
343
+ - 本地 HTTP server,文件变化自动刷新
344
+ - VS Code 侧边栏插件复用同一套 board model
345
+
346
+ **建议吸收方式**(两条路选一条):
347
+
348
+ **路线 A(轻量)**:扩展现有 `harness-dashboard.html`,增加任务视图页签,读 `docs/09-PLANNING/TASKS/` 目录下的任务文件。
349
+
350
+ **路线 B(对齐)**:把 Taskr 的 board 直接集成进来,让它同时读 `.taskr/` 和我们的 `docs/09-PLANNING/TASKS/`。Taskr 是 MIT 开源,可以直接用。
351
+
352
+ **注意**:Board 是 nice-to-have,不是核心方法论差异。核心价值在 3.1-3.6。
353
+
354
+ **优先级:P2(产品化加分项)**
355
+
356
+ ---
357
+
358
+ ### 3.10 🟡 CLI 工具链 — init / new / list / status / note / complete / validate
359
+
360
+ **现状**:Harness 没有任何代码工具。所有操作都是 agent 读/写 Markdown 文件。这意味着:
361
+ - 人无法快速查看任务状态(必须打开文件)
362
+ - 无法在终端做批量操作
363
+ - 脚本集成困难
364
+
365
+ **Taskr 的 CLI 命令集**:
366
+
367
+ | 命令 | 功能 |
368
+ |------|------|
369
+ | `init` | 初始化 `.taskr/` 目录结构 |
370
+ | `new` | 创建新任务(自动生成 id + frontmatter + 模板) |
371
+ | `list` | 列出任务(支持状态过滤、数量限制) |
372
+ | `status <id>` | 切换任务状态 |
373
+ | `note <id>` | 向 Agent Notes 追加一行 |
374
+ | `complete` | 标记 pending_confirmation(自动填 summary、记录 verification、check AC) |
375
+ | `validate` | 校验单个或全部任务文件 |
376
+ | `doctor` | 健康检查 |
377
+ | `board` | 打开本地看板 |
378
+ | `research` | 创建调研报告文件 |
379
+ | `show` | 显示任务文件内容 |
380
+
381
+ **建议吸收方式**:
382
+ 写一个 `harness` CLI(node/shell 都行),覆盖核心子集:
383
+
384
+ | 命令 | 对应 Harness 操作 |
385
+ |------|------------------|
386
+ | `harness init` | Bootstrap 最小骨架 |
387
+ | `harness task new` | 创建任务目录 + task_plan(带 frontmatter) |
388
+ | `harness task list` | 列出任务及状态 |
389
+ | `harness task status <id>` | 切换状态(含 pending_confirmation) |
390
+ | `harness validate` | 校验任务文件 + harness 骨架完整性 |
391
+ | `harness doctor` | Harness 级别健康检查 |
392
+ | `harness reconcile` | Git commit ↔ task 关联修复 |
393
+
394
+ 不需要照搬 Taskr 的全部命令(board / research / show 可以后续加)。
395
+
396
+ **优先级:P2(工具化加分项,有了会让 Harness 从"文档协议"升级为"工程工具")**
397
+
398
+ ---
399
+
400
+ ### 3.11 🟡 TDD Policy — 何时写测试的明确指引
401
+
402
+ **现状**:我们的 testing-standard.md 定义了测试分层,但没有明确说"什么情况下必须先写测试"、"什么情况可以后补"。
403
+
404
+ **Taskr 的 TDD Policy**:
405
+ - **推荐 TDD**:bug fix、行为变更、parser/协议逻辑、高风险共享代码
406
+ - **可选 TDD**:文档、配置、研究、生成资源、小 copy 修改、低风险 style
407
+ - **严格 TDD 不可行时**:仍要求至少一个 focused regression test 或 clear verification command
408
+
409
+ **建议吸收方式**:
410
+ 在 `references/` 下新建或扩展 testing-standard.md,加入 TDD 适用场景表。
411
+
412
+ **优先级:P2(参考价值高,改动量小)**
413
+
414
+ ---
415
+
416
+ ### 3.12 🟡 Review Policy — 轻量审查门禁
417
+
418
+ **现状**:我们的 Long-Running Task Contract 有 Review Loop 定义,但没有一个简明的"什么时候需要 review"的策略。
419
+
420
+ **Taskr 的 Review Policy**:
421
+ - 复杂 / 跨模块 / 公共 API / release / 用户工作流变更 → 加 light review gate
422
+ - 优先用 reviewer agent(如果平台支持 + 用户授权了 delegation)
423
+ - 否则 self-review 或请人 manual review
424
+ - Review 对照:Request / AC / Implementation Plan / Verification,gap 记入 Agent Notes
425
+
426
+ **建议吸收方式**:
427
+ 在 execution-workflow-standard.md 或新建 reference 中加入 review gate 判断表。
428
+
429
+ **优先级:P2(参考价值高)**
430
+
431
+ ---
432
+
433
+ ### 3.13 🟢 语言自适应模板 — 中英文自动切换
434
+
435
+ **现状**:我们的模板全是中文。如果用在国际化团队或开源项目中需要手动翻译。
436
+
437
+ **Taskr 做法**:根据 request 内容是否包含 CJK 字符自动选择中文/英文模板文本(acceptance criteria placeholder、implementation plan placeholder、"Empty." vs "暂无。")。
438
+
439
+ **建议吸收方式**:
440
+ 模板增加 `${lang}` 占位符或提供 `templates-zh-CN/`(我们已经有了!)。确认 `templates-zh-CN/` 是否完整。
441
+
442
+ **优先级:P3(锦上添花)**
443
+
444
+ ---
445
+
446
+ ### 3.14 🟢 Slug-based ID + 冲突处理
447
+
448
+ **现状**:我们的任务目录命名是 `YYYY-MM-DD-任务名称`(手动取名的)。没有自动 slugify,没有冲突检测。
449
+
450
+ **Taskr 做法**:
451
+ - `slugify()` 函数:NFKD 正则 → lowercase → kebab-case
452
+ - `ensureUniqueTaskId()`:自动检测冲突,追加 `-2`, `-3` 后缀
453
+ - SHA-1 fallback:如果 slugify 结果为空,用 content hash 前 8 位
454
+
455
+ **建议吸收方式**:
456
+ CLI 的 `harness task new` 内置 slugify + 冲突检测。手动创建任务时在模板注释中建议命名规范。
457
+
458
+ **优先级:P3(CLI 附属功能)**
459
+
460
+ ---
461
+
462
+ ### 3.15 🟢 Git Reconcile — 反向补全 Commit 关联
463
+
464
+ **现状**:(已在 3.5 中提及,单独强调因为它很聪明)
465
+
466
+ Taskr 在每次收尾时做的 reconcile 流程:
467
+ 1. 找到所有 `pending_confirmation` 状态的任务
468
+ 2. 跑 `git log --grep "Taskr: <id>"` 查找已有关联 commit
469
+ 3. 跑 `git diff -- .taskr/tasks` 区分 task 元数据变更和源码变更
470
+ 4. 对 evidence 明确的(commit message 引用了 task id 或改动的文件明显匹配)才关联
471
+ 5. **不**仅因"时间和位置接近"就模糊匹配
472
+
473
+ 这解决了"人在终端手动打了 commit 但忘了更新任务文件"的实际问题。
474
+
475
+ **优先级:P1(与 3.5 联动)**
476
+
477
+ ---
478
+
479
+ ### 3.16 🟢 Commit Message Convention — Footer 格式
480
+
481
+ **现状**:没有规定 commit message 格式。
482
+
483
+ **Taskr 做法**:
484
+ ```
485
+ feat: implement user invitation flow
486
+
487
+ Add OAuth2-based invitation flow with email delivery.
488
+
489
+ Taskr: 2026-05-10-user-invitation
490
+ ```
491
+
492
+ Footer 格式:`Taskr: <task-id>`(注意不是旧的 `[taskr:<id>]` subject-line 形式)
493
+
494
+ **建议吸收方式**:
495
+ 定义 Harness convention:`Harness: <task-id>` 或直接沿用 `Taskr:` (兼容性好,因为未来可能集成 Taskr CLI)。
496
+
497
+ **优先级:P2(与 3.5 联动)**
498
+
499
+ ---
500
+
501
+ ## 四、不建议吸收的
502
+
503
+ 以下 Taskr 特性我们评估后认为 **不适合** 直接吸收:
504
+
505
+ | Taskr 特性 | 不吸收的原因 |
506
+ |------------|-------------|
507
+ | `.taskr/` 目录名 | 我们用 `docs/09-PLANNING/TASKS/`,已是 harness 骨架的一部分,不应再搞一套平行目录 |
508
+ | 6-section 固定结构(Request/AC/Plan/ProgressLog/AgentNotes/CompletionSummary) | 我们的三件套(plan/findings/progress)更细粒度;但可以考虑对齐 section 名 |
509
+ | 无 SSoT / 无 Regression / 无 Lessons | 这是 Taskr 的定位选择(轻量),不代表我们该砍掉已有能力 |
510
+ | HTML-in-Markdown 片段 | 我们的任务文件面向 agent 消费,不需要富渲染 |
511
+ | VS Code 插件 | 当前阶段优先级低,等 CLI + Board 稳定了再做 |
512
+ | `closed` 状态废弃 | 我们的 `已完成` 语义清晰,不需要改 |
513
+
514
+ ---
515
+
516
+ ## 五、吸收优先级排序与实施建议
517
+
518
+ ### Phase 1:核心协议升级(预计 1-2 天)
519
+
520
+ | # | 改动 | 优先级 | 改动范围 |
521
+ |---|------|--------|---------|
522
+ | 1 | `pending_confirmation` 状态加入状态机 | P0 | SKILL.md + planning-loop.md + progress.md 模板 |
523
+ | 2 | task_plan 增加 YAML frontmatter(最小字段集) | P0 | task_plan.md 模板 + planning-loop.md |
524
+ | 3 | 验证记录结构化(verification block) | P0 | task_plan.md 模板 + long-running-task-standard.md |
525
+ | 4 | commit 追踪字段(commits + commit_status) | P0 | task_plan.md 模板 |
526
+
527
+ ### Phase 2:工具化(预计 2-3 天)
528
+
529
+ | # | 改动 | 优先级 | 改动范围 |
530
+ |---|------|--------|---------|
531
+ | 5 | `harness validate` 脚本 | P0 | `scripts/validate-tasks.sh`(或 .ts) |
532
+ | 6 | `harness doctor` 脚本 | P1 | `scripts/harness-doctor.sh` |
533
+ | 7 | `harness reconcile` 脚本 | P1 | `scripts/reconcile-commits.sh` |
534
+ | 8 | commit message convention 定义 | P1 | `references/execution-workflow-standard.md` |
535
+
536
+ ### Phase 3:流程优化(预计 1 天)
537
+
538
+ | # | 改动 | 优先级 | 改动范围 |
539
+ |---|------|--------|---------|
540
+ | 9 | 任务分级入口判断(trivial / normal / complex) | P1 | SKILL.md + planning-loop.md |
541
+ | 10 | TDD Policy | P2 | `references/testing-standard.md` 扩展 |
542
+ | 11 | Review Policy | P2 | 新建或扩展 reference |
543
+ | 12 | Research Files 模式 | P2 | planning-loop.md 扩展 |
544
+
545
+ ### Phase 4:产品化(可选,后续迭代)
546
+
547
+ | # | 改动 | 优先级 | 改动范围 |
548
+ |---|------|--------|---------|
549
+ | 13 | `harness` CLI(init/task/list/status/complete) | P2 | `src/cli.ts`(或 shell) |
550
+ | 14 | Board 集成(Kanban + Table) | P2 | 扩展 dashboard 或集成 Taskr board |
551
+ | 15 | 语言自适应模板 | P3 | 模板国际化 |
552
+
553
+ ---
554
+
555
+ ## 六、架构影响分析
556
+
557
+ 吸收上述改动后,Harness 的架构变化:
558
+
559
+ ```
560
+ Before(当前):
561
+ SKILL.md → 12 references → 30+ templates → agent 手动读写 md
562
+
563
+ After(吸收后):
564
+ SKILL.md → 12 references(更新) → 30+ templates(更新,带 frontmatter)
565
+ → scripts/validate-tasks.sh ← 新增
566
+ → scripts/harness-doctor.sh ← 新增
567
+ → scripts/reconcile-commits.sh ← 新增
568
+ → [可选] harness CLI ← 新增
569
+ → [可选] Board 集成 ← 新增
570
+ ```
571
+
572
+ **不变的部分**:
573
+ - SSoT 三张表 + Harness Ledger(全局层不受影响)
574
+ - Regression 体系 + Evidence Depth + Cadence Ledger(回归层不受影响)
575
+ - Worktree 协议(并行层不受影响)
576
+ - Walkthrough + Lessons Governance(收口层不受影响)
577
+ - 项目诊断 + 分档(接入层不受影响)
578
+
579
+ **变化的 部分**:
580
+ - Planning Loop(任务执行层,变动最大)
581
+ - Task Plan 模板(新增 frontmatter + 新状态 + 新字段)
582
+ - Long-Running Task Contract(Stop Condition 后接 pending_confirmation)
583
+ - 新增 scripts/ 目录(工具化)
584
+ - SKILL.md 主 SOP(新增快速路径 + 分级入口)
585
+
586
+ ---
587
+
588
+ ## 七、风险与注意事项
589
+
590
+ 1. **向后兼容**:旧格式的 task_plan.md(无 frontmatter)仍需能被 validate 脚本处理(warn 而非 error)
591
+ 2. **不破坏现有项目**:已经在用 Harness 的项目不应强制迁移
592
+ 3. **保持轻量选项**:吸收 Taskr 的"轻量优先"哲学,不要让 Harness 因为加了新特性反而变得更重
593
+ 4. **Taskr 协议是 MIT**:如果决定深度集成(特别是 CLI 和 Board),可以直接 fork/依赖 `@xerrors/taskr` 包,不必从头写
594
+ 5. **frontmatter 不要过度膨胀**:Taskr 的 frontmatter 字段已经是最小集,我们不应该加更多
595
+
596
+ ---
597
+
598
+ ## 八、总结一句话
599
+
600
+ **Taskr 解决的是"单个任务怎么执行、怎么验证、怎么确认"的问题,这正是 Harness 的 Planning Loop 层最薄弱的环节。最值得吸收的不是它的 UI 或 CLI,而是 `pending_confirmation` 状态、结构化 frontmatter、validate 校验、verification 记录、commit reconcile 这五个原子能力。有了这五个,Harness 就从"项目级工程方法论"补齐了"任务级执行协议",形成完整闭环。**
@@ -36,7 +36,7 @@
36
36
  - 有没有反复出现、跨页面/跨模块/跨阶段的共性问题:[有/无,写一句理由]
37
37
  - 有没有下次 agent 也可能重复踩的坑:[有/无,写一句理由]
38
38
  - Lessons 结果:[checked-created: L-YYYY-MM-DD-NNN / queued-promotion: LC-YYYYMMDD-NNN / checked-candidate: LC-YYYYMMDD-NNN / checked-none: 一句话原因]
39
- - Lessons Detail Doc:[如 checked-created,填 `docs/01-GOVERNANCE/lessons/...md`;如 queued/checked-candidate,填 `lesson_candidates.md`;否则写"无"]
39
+ - Lessons Detail Doc:[如 checked-created,填 `docs/01-GOVERNANCE/lessons/...md`;如 queued/checked-candidate,填 `lesson_candidates.md` 和任务本地 `lessons/LC-...md`;否则写"无"]
40
40
 
41
41
  ## 相关文件
42
42
  - Task Plan: [路径]
@@ -106,10 +106,10 @@ docs/10-WALKTHROUGH/Closeout-SSoT.md
106
106
 
107
107
  如果任何一条答案是“有”:
108
108
 
109
- 1. 完整读一遍 `docs/01-GOVERNANCE/Lessons-SSoT.md`
109
+ 1. 查找任务本地 `lesson_candidates.md`、任务本地 `lessons/LC-*.md` 和 `docs/01-GOVERNANCE/lessons/*.md`
110
110
  2. 按 `references/lessons-governance.md` 中的规则处理冲突
111
- 3. 先在任务目录 `lesson_candidates.md` 中登记候选并等待人工 review
112
- 4. 人工确认后,如需沉淀,使用 maintenance CLI 写入 `docs/01-GOVERNANCE/lessons/` Lessons SSoT
111
+ 3. 先在任务目录 `lesson_candidates.md` 中登记候选;候选进入 `needs-promotion` 时同步写任务本地 `lessons/LC-*.md` 详情文件并在 `Detail Artifact` 链接
112
+ 4. 人工确认后,如需沉淀,使用 maintenance CLI 写入 `docs/01-GOVERNANCE/lessons/` promoted 详情文档
113
113
  5. 在 Closeout SSoT 和 Harness Ledger 中记录 `queued-promotion: LC-...` 或 `checked-created: L-YYYY-MM-DD-NNN`
114
114
 
115
115
  如果所有答案都是“没有”,不能静默跳过;在 Closeout SSoT 和 Harness Ledger 中记录
@@ -118,11 +118,11 @@ docs/10-WALKTHROUGH/Closeout-SSoT.md
118
118
 
119
119
  ## Harness Ledger 回写
120
120
 
121
- 写完 Walkthrough、更新 Feature/Regression SSoT,并完成 Lessons 检查后,Agent 必须更新
122
- `docs/Harness-Ledger.md` `docs/10-WALKTHROUGH/Closeout-SSoT.md`:
121
+ 写完 Walkthrough、更新 Regression SSoT 或其他本轮实际触达的非任务生命周期 SSoT,并完成 Lessons 检查后,Agent 必须更新
122
+ `docs/10-WALKTHROUGH/Closeout-SSoT.md`;任务生命周期总账由 CLI 重新生成 `docs/Harness-Ledger.md`:
123
123
 
124
124
  1. 为本轮任务追加或更新对应 `HL-*` 条目
125
- 2. 记录 Task Plan、Feature SSoT、Regression SSoT、Review Report、Walkthrough、Lessons Check 的结果
125
+ 2. 记录 Task Plan、Regression SSoT、Review Report、Walkthrough、Lessons Check 的结果
126
126
  3. 列出本轮触碰的 harness 文档
127
127
  4. 如有未完成项,使用 `missing` 或 `skipped-with-reason` 并写明 residual
128
128