coding-agent-harness 1.0.2 → 1.0.4
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.
- package/CHANGELOG.md +25 -0
- package/CONTRIBUTING.md +98 -0
- package/README.md +211 -86
- package/README.zh-CN.md +54 -34
- package/SKILL.md +25 -18
- package/docs-release/README.md +9 -5
- package/docs-release/architecture/overview.md +17 -5
- package/docs-release/architecture/overview.zh-CN.md +9 -5
- package/docs-release/assets/dashboard-overview.png +0 -0
- package/docs-release/guides/agent-installation.en-US.md +31 -8
- package/docs-release/guides/agent-installation.md +34 -9
- package/docs-release/guides/contributing.md +100 -0
- package/docs-release/guides/contributing.zh-CN.md +99 -0
- package/docs-release/guides/document-audience-and-surfaces.en-US.md +3 -2
- package/docs-release/guides/document-audience-and-surfaces.md +3 -2
- package/docs-release/guides/full-legacy-migration-subagent-strategy.md +2 -2
- package/docs-release/guides/full-legacy-migration-subagent-strategy.zh-CN.md +2 -2
- package/docs-release/guides/legacy-migration-agent-prompt.md +0 -11
- package/docs-release/guides/legacy-migration-agent-prompt.zh-CN.md +0 -11
- package/docs-release/guides/migration-playbook.en-US.md +14 -15
- package/docs-release/guides/migration-playbook.md +14 -15
- package/docs-release/guides/parent-control-repository-pattern.en-US.md +7 -5
- package/docs-release/guides/parent-control-repository-pattern.md +7 -5
- package/docs-release/guides/preset-development.md +214 -0
- package/docs-release/guides/repository-operating-models.en-US.md +5 -4
- package/docs-release/guides/repository-operating-models.md +5 -4
- package/docs-release/guides/task-state-machine.en-US.md +207 -0
- package/docs-release/guides/task-state-machine.md +214 -0
- package/docs-release/intl/en-US.md +1 -1
- package/docs-release/intl/zh-CN.md +1 -1
- package/examples/minimal-project/docs/09-PLANNING/TASKS/demo-task/findings.md +7 -0
- package/package.json +8 -3
- package/presets/legacy-migration/checks/preset-check.mjs +3 -0
- package/presets/legacy-migration/preset.yaml +134 -0
- package/presets/legacy-migration/scripts/plan-work-queue.mjs +4 -0
- package/presets/legacy-migration/scripts/scaffold-task-contracts.mjs +4 -0
- package/presets/legacy-migration/templates/execution_strategy.append.md +18 -0
- package/presets/legacy-migration/templates/findings.seed.md +17 -0
- package/presets/legacy-migration/templates/review.seed.md +12 -0
- package/presets/legacy-migration/templates/task_plan.append.md +9 -0
- package/presets/legacy-migration/templates/visual_map.append.md +12 -0
- package/presets/legacy-migration/workbench/dashboard-panels.yaml +2 -0
- package/presets/legacy-migration/workbench/migration-queue.schema.json +23 -0
- package/presets/lesson-sedimentation/preset.yaml +23 -0
- package/presets/lesson-sedimentation/templates/prompt.md +23 -0
- package/presets/module/preset.yaml +25 -0
- package/presets/module/templates/execution_strategy.append.md +8 -0
- package/presets/module/templates/task_plan.append.md +17 -0
- package/presets/standard-task/preset.yaml +31 -0
- package/presets/standard-task/templates/task_plan.append.md +7 -0
- package/references/adversarial-review-standard.md +2 -2
- package/references/agents-md-pattern.md +2 -2
- package/references/delivery-operating-model-standard.md +3 -3
- package/references/docs-directory-standard.md +6 -7
- package/references/harness-ledger.md +53 -96
- package/references/lessons-governance.md +88 -93
- package/references/module-parallel-standard.md +14 -14
- package/references/planning-loop.md +12 -6
- package/references/pull-request-standard.md +118 -0
- package/references/repo-governance-standard.md +11 -2
- package/references/review-routing-standard.md +7 -1
- package/references/ssot-governance.md +67 -59
- package/references/taskr-gap-analysis.md +600 -0
- package/references/walkthrough-closeout.md +7 -7
- package/scripts/check-harness.mjs +40 -301
- package/scripts/commands/dashboard-command.mjs +67 -0
- package/scripts/commands/migration-command.mjs +96 -0
- package/scripts/commands/preset-command.mjs +73 -0
- package/scripts/commands/task-command.mjs +327 -0
- package/scripts/harness.mjs +55 -260
- package/scripts/lib/capability-registry.mjs +66 -8
- package/scripts/lib/check-module-parallel.mjs +237 -0
- package/scripts/lib/check-profiles.mjs +61 -153
- package/scripts/lib/check-task-contracts.mjs +47 -0
- package/scripts/lib/core-shared.mjs +10 -0
- package/scripts/lib/dashboard-data.mjs +29 -6
- package/scripts/lib/dashboard-workbench.mjs +52 -12
- package/scripts/lib/dashboard-writer.mjs +14 -2
- package/scripts/lib/git-status-summary.mjs +46 -0
- package/scripts/lib/governance-index-generator.mjs +174 -0
- package/scripts/lib/governance-sync.mjs +514 -0
- package/scripts/lib/governance-table-boundary.mjs +175 -0
- package/scripts/lib/harness-core.mjs +5 -0
- package/scripts/lib/lesson-maintenance.mjs +36 -29
- package/scripts/lib/migration-support.mjs +1 -1
- package/scripts/lib/preset-audit-contracts.mjs +37 -0
- package/scripts/lib/preset-engine.mjs +497 -0
- package/scripts/lib/preset-registry.mjs +627 -0
- package/scripts/lib/preset-resource-contracts.mjs +83 -0
- package/scripts/lib/review-confirm-git-gate.mjs +248 -0
- package/scripts/lib/status-dashboard-renderer.mjs +102 -0
- package/scripts/lib/subagent-authorization-audit.mjs +196 -0
- package/scripts/lib/task-completion-consistency.mjs +16 -0
- package/scripts/lib/task-index.mjs +93 -0
- package/scripts/lib/task-lesson-candidates.mjs +242 -0
- package/scripts/lib/task-lesson-sedimentation.mjs +326 -0
- package/scripts/lib/task-lifecycle/review-confirm.mjs +101 -0
- package/scripts/lib/task-lifecycle/review-gates.mjs +70 -0
- package/scripts/lib/task-lifecycle/text-utils.mjs +24 -0
- package/scripts/lib/task-lifecycle.mjs +297 -403
- package/scripts/lib/task-review-model.mjs +469 -0
- package/scripts/lib/task-scanner.mjs +130 -236
- package/scripts/lib/task-tombstone-commands.mjs +140 -0
- package/scripts/postinstall.mjs +14 -0
- package/skills/preset-creator/SKILL.md +179 -0
- package/skills/preset-creator/references/complex-task-skeleton/README.md +31 -0
- package/skills/preset-creator/references/complex-task-skeleton/artifacts/INDEX.md +12 -0
- package/skills/preset-creator/references/complex-task-skeleton/brief.md +32 -0
- package/skills/preset-creator/references/complex-task-skeleton/execution_strategy.md +71 -0
- package/skills/preset-creator/references/complex-task-skeleton/findings.md +24 -0
- package/skills/preset-creator/references/complex-task-skeleton/lesson_candidates.md +70 -0
- package/skills/preset-creator/references/complex-task-skeleton/long-running-task-contract.md +76 -0
- package/skills/preset-creator/references/complex-task-skeleton/progress.md +33 -0
- package/skills/preset-creator/references/complex-task-skeleton/references/INDEX.md +13 -0
- package/skills/preset-creator/references/complex-task-skeleton/review.md +107 -0
- package/skills/preset-creator/references/complex-task-skeleton/task_plan.md +111 -0
- package/skills/preset-creator/references/complex-task-skeleton/visual_map.md +50 -0
- package/skills/preset-creator/references/preset-package-skeleton.md +296 -0
- package/templates/AGENTS.md.template +19 -15
- package/templates/dashboard/assets/app-src/00-state.js +1 -0
- package/templates/dashboard/assets/app-src/10-router.js +2 -1
- package/templates/dashboard/assets/app-src/20-overview.js +11 -5
- package/templates/dashboard/assets/app-src/30-tasks.js +92 -246
- package/templates/dashboard/assets/app-src/35-task-detail.js +246 -0
- package/templates/dashboard/assets/app-src/45-review.js +241 -22
- package/templates/dashboard/assets/app-src/50-migration.js +24 -10
- package/templates/dashboard/assets/app-src/90-bindings.js +171 -29
- package/templates/dashboard/assets/app.css +698 -156
- package/templates/dashboard/assets/app.css.manifest.json +9 -0
- package/templates/dashboard/assets/app.js +662 -91
- package/templates/dashboard/assets/app.manifest.json +1 -0
- package/templates/dashboard/assets/css-src/00-foundation.css +342 -0
- package/templates/dashboard/assets/css-src/10-panels-flow.css +236 -0
- package/templates/dashboard/assets/css-src/20-briefs-controls.css +398 -0
- package/templates/dashboard/assets/css-src/30-task-index.css +739 -0
- package/templates/dashboard/assets/css-src/35-review-workspace.css +507 -0
- package/templates/dashboard/assets/css-src/40-detail-modules-migration.css +427 -0
- package/templates/dashboard/assets/css-src/50-responsive-overrides.css +551 -0
- package/templates/dashboard/assets/i18n.js +123 -21
- package/templates/ledger/Harness-Ledger.md +13 -25
- package/templates/lessons/lesson-arch-process-change.md +1 -1
- package/templates/lessons/lesson-new-doc.md +1 -1
- package/templates/lessons/lesson-ref-change.md +1 -1
- package/templates/planning/execution_strategy.md +31 -0
- package/templates/planning/lesson_candidates.md +18 -6
- package/templates/planning/optional/artifacts/INDEX.md +3 -3
- package/templates/planning/optional/references/INDEX.md +3 -3
- package/templates/planning/review.md +59 -0
- package/templates/planning/task_plan.md +36 -13
- package/templates/reference/execution-workflow-standard.md +4 -3
- package/templates/reference/pull-request-standard.md +80 -0
- package/templates/reference/repo-governance-standard.md +7 -6
- package/templates/reference/review-routing-standard.md +6 -0
- package/templates/reference/walkthrough-standard.md +2 -1
- package/templates/verifier/verifier-output.md +1 -1
- package/templates-zh-CN/AGENTS.md.template +20 -16
- package/templates-zh-CN/ledger/Harness-Ledger.md +17 -40
- package/templates-zh-CN/planning/execution_strategy.md +30 -0
- package/templates-zh-CN/planning/lesson_candidates.md +18 -6
- package/templates-zh-CN/planning/review.md +59 -1
- package/templates-zh-CN/planning/task_plan.md +30 -10
- package/templates-zh-CN/reference/adversarial-review-standard.md +1 -1
- package/templates-zh-CN/reference/docs-library-standard.md +1 -1
- package/templates-zh-CN/reference/execution-workflow-standard.md +4 -3
- package/templates-zh-CN/reference/harness-ledger-standard.md +2 -2
- package/templates-zh-CN/reference/pull-request-standard.md +106 -0
- package/templates-zh-CN/reference/repo-governance-standard.md +4 -3
- package/templates-zh-CN/reference/review-routing-standard.md +8 -1
- package/templates-zh-CN/reference/walkthrough-standard.md +3 -2
- package/templates-zh-CN/walkthrough/Closeout-SSoT.md +1 -1
- package/docs-release/assets/dashboard-overview-en.png +0 -0
- package/scripts/smoke-dashboard.mjs +0 -92
- package/scripts/test-harness.mjs +0 -1395
- package/templates/ssot/Feature-SSoT.md +0 -43
- package/templates/ssot/Lessons-SSoT.md +0 -44
- package/templates-zh-CN/ssot/Feature-SSoT.md +0 -49
- package/templates-zh-CN/ssot/Lessons-SSoT.md +0 -49
|
@@ -102,7 +102,7 @@ Reviewer 必须以找问题为目标,而不是证明实现正确。
|
|
|
102
102
|
- Progress:
|
|
103
103
|
- Findings:
|
|
104
104
|
- Regression SSoT:
|
|
105
|
-
-
|
|
105
|
+
- Lesson Candidates / Detail Docs:
|
|
106
106
|
- Walkthrough:
|
|
107
107
|
```
|
|
108
108
|
|
|
@@ -150,7 +150,7 @@ Review loop 的固定执行形态:
|
|
|
150
150
|
- `progress.md` 记录审查发生的时间和处理结果摘要
|
|
151
151
|
- `findings.md` 记录审查中产生的技术决策或研究发现
|
|
152
152
|
- `Regression-SSoT.md` 记录新增或调整的 regression surface
|
|
153
|
-
- `
|
|
153
|
+
- `lesson_candidates.md` 和 `docs/01-GOVERNANCE/lessons/*.md` 记录可复用的流程、架构或标准改进建议
|
|
154
154
|
- `walkthrough` 收口时引用 `review.md` 的 material finding 状态和 no-finding 结论
|
|
155
155
|
- `Harness Ledger` 记录本轮是否完成 review report
|
|
156
156
|
|
|
@@ -40,7 +40,7 @@ AGENTS.md 只包含两类内容:
|
|
|
40
40
|
先读 docs/11-REFERENCE/harness-ledger-standard.md
|
|
41
41
|
|
|
42
42
|
- Walkthrough / Closeout / Lessons 收口:
|
|
43
|
-
先读 docs/11-REFERENCE/walkthrough-standard.md,然后读 docs/
|
|
43
|
+
先读 docs/11-REFERENCE/walkthrough-standard.md,然后读 docs/10-WALKTHROUGH/Closeout-SSoT.md、任务本地 lesson_candidates.md 和 docs/01-GOVERNANCE/lessons/
|
|
44
44
|
|
|
45
45
|
- 开发执行 / 回写流程:
|
|
46
46
|
先读 docs/11-REFERENCE/execution-workflow-standard.md
|
|
@@ -100,7 +100,7 @@ CLAUDE.md 控制在 **10-50 行**。它只做 Claude Code 兼容入口,不应
|
|
|
100
100
|
- agent 做后端重构时,不会被前端规范干扰
|
|
101
101
|
- agent 做测试时,不会被文档治理规则分心
|
|
102
102
|
- 每种任务类型只加载它需要的上下文
|
|
103
|
-
- agent 写 walkthrough 时会被入口显式路由回
|
|
103
|
+
- agent 写 walkthrough 时会被入口显式路由回 lesson candidate / detail doc 流程,但 Lessons 全文不会塞进 AGENTS.md
|
|
104
104
|
|
|
105
105
|
这跟 OpenAI 在 Harness Engineering 实践中得出的结论一致:给 agent 一张地图,不给一本千页手册。
|
|
106
106
|
|
|
@@ -39,7 +39,7 @@ Define who breaks roadmap work into feature blocks:
|
|
|
39
39
|
| Level | Owner | Artifact | Rule |
|
|
40
40
|
|-------|-------|----------|------|
|
|
41
41
|
| Roadmap | [owner] | [SSoT / issue tracker] | [how priority is chosen] |
|
|
42
|
-
| Feature block | [owner] | `Delivery-SSoT.md` /
|
|
42
|
+
| Feature block | [owner] | `Delivery-SSoT.md` / generated Harness Ledger | [how blocks are bounded] |
|
|
43
43
|
| Task | [owner] | `docs/09-PLANNING/TASKS/<task>/task_plan.md` | [who can start work] |
|
|
44
44
|
| Review | [owner] | `review.md` / PR review | [required reviewers] |
|
|
45
45
|
| Integration | [owner] | PR / release branch / integration branch | [merge order] |
|
|
@@ -50,14 +50,14 @@ Define who breaks roadmap work into feature blocks:
|
|
|
50
50
|
|
|
51
51
|
Use when one human directs multiple agents across worktrees.
|
|
52
52
|
|
|
53
|
-
- One
|
|
53
|
+
- One generated Harness Ledger is enough for ordinary task lifecycle tracking.
|
|
54
54
|
- Worktree concurrency is central.
|
|
55
55
|
- Merge order is human-decided.
|
|
56
56
|
- Cross-task conflicts are managed by task ownership and shared-file notices.
|
|
57
57
|
|
|
58
58
|
**模块并行扩展**:当项目有 2+ 个可独立演进的功能域时,启用模块并行开发(见 `references/module-parallel-standard.md`)。此时:
|
|
59
59
|
|
|
60
|
-
- Module Registry
|
|
60
|
+
- Module Registry 管模块边界;Harness Ledger 生成全局任务生命周期索引
|
|
61
61
|
- 每个模块一个长期 worktree(`codex/<module-key>`)
|
|
62
62
|
- 模块间通过 write scope 声明避免冲突
|
|
63
63
|
- 跨模块修改走独立的基础设施 task
|
|
@@ -8,12 +8,11 @@
|
|
|
8
8
|
|
|
9
9
|
```
|
|
10
10
|
docs/
|
|
11
|
-
├── Harness-Ledger.md ←
|
|
11
|
+
├── Harness-Ledger.md ← CLI 生成的任务生命周期总账
|
|
12
12
|
├── 00-RAW-PRDS/ ← 原始需求文档、PRD、用户故事
|
|
13
13
|
│ └── _archive/ ← 本层历史文档归档(如该层会增长)
|
|
14
14
|
├── 01-GOVERNANCE/ ← 项目治理规则、决策记录、经验沉淀
|
|
15
|
-
│ ├──
|
|
16
|
-
│ ├── lessons/ ← 具体沉淀内容
|
|
15
|
+
│ ├── lessons/ ← promoted lesson 详情文档
|
|
17
16
|
│ └── _archive/ ← 已处理条目归档
|
|
18
17
|
├── 02-PRODUCT/ ← 产品设计、用户流程、功能规格
|
|
19
18
|
│ └── _archive/ ← 本层历史文档归档(如该层会增长)
|
|
@@ -34,9 +33,8 @@ docs/
|
|
|
34
33
|
│ │ └── _task-template/ ← 任务模板
|
|
35
34
|
│ ├── MODULES/ ← 模块并行开发计划(启用时)
|
|
36
35
|
│ │ └── _archive/ ← 已完成 / 暂停过久模块归档
|
|
37
|
-
│ ├── _archive/ ←
|
|
36
|
+
│ ├── _archive/ ← 历史任务、旧生命周期表明细、过期排期归档
|
|
38
37
|
│ ├── Delivery-SSoT.md ← 多人 / 多仓 / 传统流程下的交付排期和集成顺序
|
|
39
|
-
│ └── [Feature-SSoT].md ← 实施排期表
|
|
40
38
|
├── 10-WALKTHROUGH/ ← Walkthrough 收口记录与 Closeout SSoT
|
|
41
39
|
│ └── _archive/ ← 历史 walkthrough 批量归档(迁移 / 年度收束时)
|
|
42
40
|
├── 11-REFERENCE/ ← 标准文件(agent 按需加载)
|
|
@@ -133,11 +131,11 @@ Checker 规则:
|
|
|
133
131
|
|
|
134
132
|
| 对象 | 触发条件 | 归档位置 |
|
|
135
133
|
|------|----------|----------|
|
|
136
|
-
| Feature
|
|
134
|
+
| Legacy Feature / Private Feature 生命周期表 | 迁移到 ledger-only 版本 | `09-PLANNING/_archive/` |
|
|
137
135
|
| Delivery SSoT | 集成 wave 结束或 completed/superseded blocks 超过 20 条 | `09-PLANNING/_archive/` |
|
|
138
136
|
| Module Registry / module_plan | 模块 completed 或 paused 超过 60 天 | `09-PLANNING/MODULES/_archive/<key>/` |
|
|
139
137
|
| Regression SSoT | gate 废弃或长期不再运行 | `05-TEST-QA/_archive/` |
|
|
140
|
-
|
|
|
138
|
+
| Lesson detail docs | merged/rejected/superseded 详情文档超过 20 条 | `01-GOVERNANCE/_archive/` |
|
|
141
139
|
| Harness Ledger | closed/superseded 超过 50 条 | `01-GOVERNANCE/_archive/` |
|
|
142
140
|
| Walkthrough | 年度/阶段迁移或目录过大 | `10-WALKTHROUGH/_archive/` |
|
|
143
141
|
|
|
@@ -151,6 +149,7 @@ Checker 规则:
|
|
|
151
149
|
| execution-workflow-standard.md | 开发执行流程、commit 规范、PR 流程 | 是 |
|
|
152
150
|
| delivery-operating-model-standard.md | 工程组织形态、feature block 拆分、跨仓/团队协作模型 | 是 |
|
|
153
151
|
| repo-governance-standard.md | repo platform、branch protection、PR policy、required checks、worktree concurrency | 是 |
|
|
152
|
+
| pull-request-standard.md | PR 描述结构、中英双语要求、版本影响、验证、审查证据、残余风险和引用 | 是 |
|
|
154
153
|
| ci-cd-standard.md | CI/CD profile、workflow、required checks、release/CD residual | 是 |
|
|
155
154
|
| long-running-task-standard.md | 长程任务合同、连续执行权限、review loop、停止条件 | 是 |
|
|
156
155
|
| adversarial-review-standard.md | 对抗性 review 报告、finding 分级、no-finding 结论、residual 路由 | 是 |
|
|
@@ -2,13 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
## 核心思路
|
|
4
4
|
|
|
5
|
-
Harness Ledger
|
|
6
|
-
Delivery / Feature / Regression / Lessons 四张 SSoT;它只记录每个非平凡任务是否按 harness SOP
|
|
7
|
-
维护了应该维护的上下文。Closeout SSoT 则记录每个 closed 任务是否有 walkthrough 或受控 skip reason。
|
|
5
|
+
Harness Ledger 是任务生命周期的全局生成索引。它把任务目录、模块任务、review、lesson、closeout 和 residual 的可扫描状态汇总到一张表,方便 Agent 快速定位;人看当前状态优先使用 Dashboard。
|
|
8
6
|
|
|
9
7
|
一句话定义:
|
|
10
8
|
|
|
11
|
-
>
|
|
9
|
+
> 任务本地文件保存事实;Harness CLI 从这些事实生成 Harness Ledger。
|
|
12
10
|
|
|
13
11
|
## 文件位置
|
|
14
12
|
|
|
@@ -16,135 +14,94 @@ Delivery / Feature / Regression / Lessons 四张 SSoT;它只记录每个非平
|
|
|
16
14
|
docs/Harness-Ledger.md
|
|
17
15
|
```
|
|
18
16
|
|
|
19
|
-
放在 `docs/`
|
|
20
|
-
regression、walkthrough、reference、lessons 等多个目录,是全局审计索引。
|
|
17
|
+
放在 `docs/` 根目录,因为它横跨 planning、review、walkthrough、lessons 和模块索引。
|
|
21
18
|
|
|
22
19
|
## 职责边界
|
|
23
20
|
|
|
24
21
|
Harness Ledger 记录:
|
|
25
22
|
|
|
26
|
-
-
|
|
27
|
-
-
|
|
28
|
-
-
|
|
29
|
-
-
|
|
30
|
-
-
|
|
31
|
-
-
|
|
32
|
-
-
|
|
33
|
-
-
|
|
34
|
-
-
|
|
35
|
-
-
|
|
23
|
+
- task / module scope
|
|
24
|
+
- module key
|
|
25
|
+
- task title
|
|
26
|
+
- lifecycle state
|
|
27
|
+
- queue markers
|
|
28
|
+
- task plan 路径
|
|
29
|
+
- review 状态或路径
|
|
30
|
+
- Lessons Check 状态
|
|
31
|
+
- closeout 状态
|
|
32
|
+
- residual 摘要
|
|
33
|
+
- 生成日期
|
|
36
34
|
|
|
37
35
|
Harness Ledger 不记录:
|
|
38
36
|
|
|
39
37
|
- 每次 `progress.md` 的过程性更新
|
|
40
38
|
- 每条测试输出
|
|
41
39
|
- 每个 git diff 细节
|
|
42
|
-
-
|
|
40
|
+
- Regression / Delivery / Cadence / Closeout 的详细治理事实
|
|
41
|
+
- lesson 详情正文
|
|
43
42
|
- 可以从 git history 直接恢复的逐行变更
|
|
44
43
|
|
|
45
|
-
|
|
44
|
+
`Feature-SSoT.md` 和 `Private-Feature-SSoT.md` 是旧版任务生命周期投影。当前版本在 `harness governance rebuild --archive --apply` 中归档这些旧表,不再重新生成。
|
|
46
45
|
|
|
47
|
-
|
|
46
|
+
## 生成规则
|
|
48
47
|
|
|
49
|
-
|
|
50
|
-
2. Bootstrap harness 完成
|
|
51
|
-
3. 同步或升级最新版 coding-agent-harness
|
|
52
|
-
4. 新增或修改 AGENTS.md / CLAUDE.md / reference / template
|
|
53
|
-
5. 创建或更新 required review report
|
|
54
|
-
6. coordinator pass 同步模块任务的全局状态、review、closeout 或 regression 结果
|
|
55
|
-
7. 修改 Repo Governance / CI-CD / required checks / branch protection 状态
|
|
56
|
-
8. 修改 Feature SSoT、Regression SSoT、Lessons SSoT 任一文件
|
|
57
|
-
9. 创建 walkthrough
|
|
58
|
-
10. Lessons approved 后合入正式 reference
|
|
48
|
+
触发任务生命周期变化时,优先使用 CLI:
|
|
59
49
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
evidence depth 变化
|
|
68
|
-
|
|
69
|
-
## 状态词
|
|
70
|
-
|
|
71
|
-
字段值必须使用固定词,避免自由文本失控:
|
|
72
|
-
|
|
73
|
-
- `required`
|
|
74
|
-
- `updated`
|
|
75
|
-
- `created`
|
|
76
|
-
- `checked-none`
|
|
77
|
-
- `checked-candidate`
|
|
78
|
-
- `queued-promotion`
|
|
79
|
-
- `checked-created`
|
|
80
|
-
- `n/a`
|
|
81
|
-
- `skipped-with-reason`
|
|
82
|
-
- `missing`
|
|
83
|
-
|
|
84
|
-
## ID 规则
|
|
85
|
-
|
|
86
|
-
格式:
|
|
87
|
-
|
|
88
|
-
```text
|
|
89
|
-
HL-YYYYMMDD-NNN
|
|
50
|
+
```bash
|
|
51
|
+
harness new-task <task-id>
|
|
52
|
+
harness task-start <task-id>
|
|
53
|
+
harness task-phase <task-id> <phase-id> --state done
|
|
54
|
+
harness task-review <task-id>
|
|
55
|
+
harness task-complete <task-id>
|
|
56
|
+
harness governance rebuild --archive --apply
|
|
90
57
|
```
|
|
91
58
|
|
|
92
|
-
|
|
59
|
+
Agent 不应手写或机械更新 Ledger 的任务行。如果发现生成结果不对,应修复 scanner、generator 或任务本地事实,再重新生成。
|
|
93
60
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
61
|
+
## 与其他治理表的关系
|
|
62
|
+
|
|
63
|
+
- Delivery SSoT 仍管理交付 block、跨仓顺序、owner 和依赖。
|
|
64
|
+
- Regression SSoT 仍管理回归面、证据深度和 residual。
|
|
65
|
+
- Cadence Ledger 仍管理周期性验证节奏。
|
|
66
|
+
- Closeout SSoT 仍管理 walkthrough、closeout status 和受控 skip reason。
|
|
67
|
+
- Module Registry 仍管理模块边界、owner、worktree 和写入范围。
|
|
97
68
|
|
|
98
|
-
|
|
99
|
-
不要重排全表。
|
|
69
|
+
这些表不是任务生命周期小表。本版本只移除 `Feature-SSoT.md` / `Private-Feature-SSoT.md` 这类生命周期投影,不删除尚无等价 scanner/generator 的治理表。
|
|
100
70
|
|
|
101
71
|
## 归档规则
|
|
102
72
|
|
|
103
|
-
|
|
73
|
+
旧生命周期表切换时归档到:
|
|
104
74
|
|
|
105
75
|
```text
|
|
106
|
-
docs/
|
|
76
|
+
docs/09-PLANNING/_archive/<timestamp>/
|
|
107
77
|
```
|
|
108
78
|
|
|
109
|
-
|
|
79
|
+
归档不改变历史证据,也不要求迁移 Agent 删除旧快照。确认 Dashboard、`task-list`、`task-index` 和新 Ledger 都能表达当前任务后,项目 owner 再决定是否清理归档。
|
|
110
80
|
|
|
111
81
|
## Closeout 顺序
|
|
112
82
|
|
|
113
83
|
每个非平凡任务收口时按以下顺序:
|
|
114
84
|
|
|
115
|
-
1. 更新 `progress.md`
|
|
116
|
-
2. 跑必要验证和 regression gate
|
|
117
|
-
3.
|
|
118
|
-
4.
|
|
119
|
-
5. 回写
|
|
120
|
-
6.
|
|
121
|
-
7.
|
|
122
|
-
8.
|
|
123
|
-
9.
|
|
124
|
-
10. 更新 Harness Ledger
|
|
125
|
-
|
|
126
|
-
最后更新 Harness Ledger,是为了让它记录本轮所有上下文维护的最终状态。
|
|
127
|
-
如果 Harness Ledger row 进入 `closed` / `closed-with-residual` / `closed-local-only`,
|
|
128
|
-
必须同步在 `docs/10-WALKTHROUGH/Closeout-SSoT.md` 登记 walkthrough 或受控 skip reason。
|
|
129
|
-
同时必须登记 Lessons Check:`checked-candidate: LC-...`、`queued-promotion: LC-...`、
|
|
130
|
-
`checked-created: L-YYYY-MM-DD-NNN`,或旧任务兼容的 `checked-none: <reason>`。
|
|
85
|
+
1. 更新 `progress.md` 或等价任务本地事实。
|
|
86
|
+
2. 跑必要验证和 regression gate。
|
|
87
|
+
3. 完成 `review.md` 并处理 material findings(如适用)。
|
|
88
|
+
4. 回写 Repo Governance / CI-CD 状态(如适用)。
|
|
89
|
+
5. 回写 Regression SSoT / Cadence Ledger / Delivery SSoT 等本轮实际触达的非生命周期治理表(如适用)。
|
|
90
|
+
6. 写 walkthrough。
|
|
91
|
+
7. 更新 Closeout SSoT。
|
|
92
|
+
8. 执行 Lessons 检查;新任务先更新 `lesson_candidates.md`,如人工确认沉淀,再由维护命令写详情文档。
|
|
93
|
+
9. 运行 Harness CLI 生成或刷新 Harness Ledger。
|
|
131
94
|
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
更新已有 harness 时,Ledger row 只记录本次 delta merge:
|
|
95
|
+
最后刷新 Harness Ledger,是为了让它记录本轮任务本地事实和治理表维护结果的最终状态。
|
|
135
96
|
|
|
136
|
-
|
|
137
|
-
- 新增或修补了哪些 harness 骨架文件
|
|
138
|
-
- 哪些既有 SSoT / walkthrough / task history 被保留未覆盖
|
|
139
|
-
- 是否产生 residual,例如某个标准暂不适合当前项目
|
|
97
|
+
## Harness Update 记录
|
|
140
98
|
|
|
141
|
-
|
|
142
|
-
walkthrough 保存,Ledger 只回答"这次升级维护了哪些上下文入口"。
|
|
99
|
+
更新已有 harness 时,Ledger row 只记录本次 task lifecycle delta。具体标准、模板、reference 的合并细节由 task plan、progress、walkthrough 和 git history 保存。
|
|
143
100
|
|
|
144
101
|
## 常见反模式
|
|
145
102
|
|
|
146
|
-
-
|
|
147
|
-
- 把
|
|
103
|
+
- 手写 Ledger 任务行而不是修复任务事实或生成器
|
|
104
|
+
- 把 Regression / Delivery 的详细治理事实复制进 Ledger
|
|
148
105
|
- 每次测试或每次 progress 变动都追加 row
|
|
149
106
|
- 用自由文本状态导致无法快速扫描
|
|
150
|
-
-
|
|
107
|
+
- 旧 Feature 生命周期表归档后又重新创建
|
|
@@ -2,92 +2,92 @@
|
|
|
2
2
|
|
|
3
3
|
## 核心思路
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
`docs/01-GOVERNANCE/lessons/` 目录,再写入 Lessons SSoT。人审批后决定是否合入正式 reference。
|
|
5
|
+
Lessons 不再使用一张手工维护的全局表。原因很简单:lesson candidate 是任务收口时的审查材料,promotion 是后续治理动作;把两者都塞进共享表,会让多个 agent 争抢同一个文件,也会让表和任务本地事实漂移。
|
|
7
6
|
|
|
8
|
-
|
|
9
|
-
`docs/01-GOVERNANCE/lessons/L-YYYY-MM-DD-NNN-<slug>.md` 详情文档,表里的
|
|
10
|
-
`Detail Doc` 列必须指向这篇文档。如果只是填表而没有详情文档,这次 closeout
|
|
11
|
-
不算完成。
|
|
7
|
+
新的事实来源只有三层:
|
|
12
8
|
|
|
13
|
-
|
|
9
|
+
| 层级 | 文件 | 职责 |
|
|
10
|
+
| --- | --- | --- |
|
|
11
|
+
| 任务本地队列 | `docs/09-PLANNING/**/lesson_candidates.md` | 记录候选、拒绝、无候选、排队 promotion 和人工判定 |
|
|
12
|
+
| 任务本地详情 | `docs/09-PLANNING/**/lessons/LC-*.md` | 在源任务上下文还新鲜时写完整 lesson 正文,供后续沉淀任务读取 |
|
|
13
|
+
| Promoted lesson 详情 | `docs/01-GOVERNANCE/lessons/L-YYYY-MM-DD-NNN-<slug>.md` | 记录已接受、可复用、需要后续治理合入的经验 |
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
| Feature SSoT | 实施排期 | `docs/09-PLANNING/` |
|
|
18
|
-
| Regression SSoT | 回归控制 | `docs/05-TEST-QA/` |
|
|
19
|
-
| **Lessons SSoT** | **经验沉淀** | **`docs/01-GOVERNANCE/`** |
|
|
20
|
-
|
|
21
|
-
Lessons SSoT 管“规范是否应该演进”。本轮任务是否做过 Lessons 检查、是否创建了
|
|
22
|
-
Lessons 条目,由 `docs/Harness-Ledger.md` 记录,避免把 SOP 合规状态塞进
|
|
23
|
-
Lessons SSoT。
|
|
15
|
+
`docs/Harness-Ledger.md` 和 `docs/10-WALKTHROUGH/Closeout-SSoT.md` 只记录 closeout 结果:
|
|
16
|
+
`checked-candidate:<LC-ID>`、`queued-promotion:<LC-ID>`、`checked-created:<L-ID>` 或历史兼容的 `checked-none:<reason>`。
|
|
24
17
|
|
|
25
18
|
## 目录结构
|
|
26
19
|
|
|
27
|
-
```
|
|
20
|
+
```text
|
|
28
21
|
docs/01-GOVERNANCE/
|
|
29
|
-
├──
|
|
30
|
-
├──
|
|
31
|
-
│ ├── L-2026-05-07-001-xxx.md ← 单条沉淀建议的详细内容
|
|
22
|
+
├── lessons/ ← promoted lesson 详情文档
|
|
23
|
+
│ ├── L-2026-05-07-001-xxx.md
|
|
32
24
|
│ └── ...
|
|
33
|
-
└── _archive/ ←
|
|
34
|
-
|
|
25
|
+
└── _archive/ ← 已合入或废弃的历史详情归档
|
|
26
|
+
|
|
27
|
+
docs/09-PLANNING/TASKS/<task-id>/
|
|
28
|
+
├── lesson_candidates.md ← 候选索引和人工路由状态
|
|
29
|
+
└── lessons/
|
|
30
|
+
└── LC-YYYYMMDD-NNN.md ← task-local detail artifact
|
|
35
31
|
```
|
|
36
32
|
|
|
37
33
|
## 触发时机
|
|
38
34
|
|
|
39
|
-
在 Walkthrough 收口流程中,写完 Walkthrough 并更新 Feature/Regression
|
|
35
|
+
在 Walkthrough 收口流程中,写完 Walkthrough 并更新 Feature / Regression / Closeout / Ledger 之后,Agent 执行经验沉淀检查:
|
|
40
36
|
|
|
41
37
|
1. 这次开发中有没有发现现有 reference 不够用或有误的地方?
|
|
42
|
-
2.
|
|
38
|
+
2. 有没有值得固化为规范的新模式或新做法?
|
|
43
39
|
3. 有没有踩坑经验值得记录,避免下次重复?
|
|
44
40
|
4. 有没有架构层面的洞察,值得更新架构文档?
|
|
45
41
|
|
|
46
|
-
|
|
42
|
+
如果任何一条答案是“有”,先写入任务目录的 `lesson_candidates.md`。当候选进入
|
|
43
|
+
`needs-promotion` 时,Agent 必须同步写出任务本地 `lessons/LC-*.md` 详情文件,并在
|
|
44
|
+
`Detail Artifact` 列链接它;后续沉淀任务读取这个详情文件,不从表格 brief 复写正文。
|
|
45
|
+
|
|
47
46
|
人工决定后只允许以下任务级状态:
|
|
48
47
|
|
|
49
48
|
- `no-candidate-accepted`:接受本轮没有可复用 lesson。
|
|
50
49
|
- `needs-promotion`:至少一个候选已排队进入治理沉淀。
|
|
51
|
-
- `promoted
|
|
50
|
+
- `promoted`:维护命令已经创建 promoted lesson 详情文档,并回写源 candidate。
|
|
52
51
|
- `rejected`:候选已带理由拒绝。
|
|
53
52
|
|
|
54
|
-
`needs-promotion` 不阻塞任务 closeout,但必须在 Closeout SSoT / Harness Ledger 中记录
|
|
55
|
-
`queued-promotion: LC-YYYYMMDD-NNN`,并由后续维护命令处理。`promoted` 或人工直接创建时记录
|
|
56
|
-
`checked-created: L-YYYY-MM-DD-NNN`。如果没有候选,记录 `checked-candidate: LC-...` 或
|
|
57
|
-
`checked-none: <reason>`,其中 `checked-none` 只用于旧任务兼容或没有 candidate 文件的历史收口。
|
|
53
|
+
`needs-promotion` 不阻塞任务 closeout,但必须在 Closeout SSoT / Harness Ledger 中记录 `queued-promotion: LC-YYYYMMDD-NNN`,并由后续维护任务处理。模块级候选还必须填写 `Module Key`,避免沉淀任务丢失模块边界。`promoted` 或人工直接创建详情文档时记录 `checked-created: L-YYYY-MM-DD-NNN`。如果没有候选,记录 `checked-candidate: LC-...` 或 `checked-none: <reason>`;`checked-none` 只用于旧任务兼容或没有 candidate 文件的历史收口。
|
|
58
54
|
|
|
59
|
-
|
|
55
|
+
## Promotion 执行
|
|
60
56
|
|
|
61
|
-
|
|
62
|
-
2. 详情文档必须写清背景、现状问题、建议改动、影响范围和冲突声明。
|
|
63
|
-
3. 再在 Lessons SSoT 追加表行,`Detail Doc` 指向这篇详情文档。
|
|
64
|
-
4. 在 Closeout SSoT / Harness Ledger 中记录 `checked-created` 或 `queued-promotion`,并引用 lesson/candidate ID。
|
|
57
|
+
promotion 只写 promoted 详情文档和源 candidate,不写共享 Lessons 表:
|
|
65
58
|
|
|
66
|
-
|
|
67
|
-
`
|
|
68
|
-
|
|
59
|
+
1. 读取源任务 `lesson_candidates.md` 中的 `Detail Artifact` 指向的任务本地详情文件。
|
|
60
|
+
2. 选择 `templates/lessons/` 下的对应模板,或由 `lesson-promote --apply` 创建 promoted 详情文档。
|
|
61
|
+
3. promoted 详情文档写清背景、现状问题、建议改动、影响范围和冲突声明。
|
|
62
|
+
4. 回写源任务 `lesson_candidates.md`:对应候选标记为 `promoted`,并记录 `promoted:<L-ID>`。
|
|
63
|
+
5. 在 Closeout SSoT / Harness Ledger 中记录 `checked-created:<L-ID>` 或 `queued-promotion:<LC-ID>`。
|
|
64
|
+
|
|
65
|
+
`lesson-promote --apply` 是 CLI-owned 机械写入:目标仓库必须是干净 Git root,
|
|
66
|
+
命令会加 governance lock,只允许提交新 lesson detail 和源任务 `lesson_candidates.md`。
|
|
67
|
+
如果存在 unrelated dirty diff,命令必须拒绝,让 coordinator 先提交、归属或记录 no-commit reason。
|
|
68
|
+
|
|
69
|
+
如果四个问题的答案全是“没有”,也不能静默跳过。新任务必须在 `lesson_candidates.md` 中使用 `no-candidate-accepted` 并填写 No-Candidate Reason;旧任务可在 Closeout SSoT 和 Harness Ledger 中记录 `checked-none: <一句话原因>`。
|
|
69
70
|
|
|
70
71
|
## Closeout 判定
|
|
71
72
|
|
|
72
73
|
收口时只允许以下合格状态:
|
|
73
74
|
|
|
74
|
-
- `checked-created: L-YYYY-MM-DD-NNN
|
|
75
|
+
- `checked-created: L-YYYY-MM-DD-NNN`:发现可沉淀经验,已创建 promoted lesson 详情文档。
|
|
75
76
|
- `queued-promotion: LC-YYYYMMDD-NNN`:人工确认候选值得沉淀,但交给维护命令后续提升。
|
|
76
77
|
- `checked-candidate: LC-YYYYMMDD-NNN`:人工已审查 candidate 文件,结论为无候选或全部拒绝。
|
|
77
78
|
- `checked-none: <reason>`:旧任务兼容状态,已完整检查且没有 candidate 文件。
|
|
78
79
|
|
|
79
80
|
以下状态不合格:
|
|
80
81
|
|
|
81
|
-
-
|
|
82
|
-
- 只写详情文档,没有 Lessons SSoT 表行。
|
|
83
|
-
- 在 walkthrough 或 progress 中说“无 lessons”,但 Closeout SSoT / Harness Ledger 没有记录。
|
|
82
|
+
- 只在 walkthrough 或 progress 中说“无 lessons”,但 Closeout SSoT / Harness Ledger 没有记录。
|
|
84
83
|
- 新任务跳过 `lesson_candidates.md`,只用 `checked-none` 代替 candidate 判定。
|
|
85
84
|
- 用 `n/a` 代替检查结果,除非任务是纯只读分析且没有 closed ledger row。
|
|
85
|
+
- `checked-created:<L-ID>` 指向的 `docs/01-GOVERNANCE/lessons/*.md` 不存在。
|
|
86
86
|
|
|
87
87
|
## 沉淀类型
|
|
88
88
|
|
|
89
89
|
| Type | 说明 |
|
|
90
|
-
|
|
90
|
+
| --- | --- |
|
|
91
91
|
| `ref-change` | 修改现有 reference 文档 |
|
|
92
92
|
| `new-doc` | 新增文档/规范 |
|
|
93
93
|
| `arch-change` | 架构层面的改动建议 |
|
|
@@ -95,80 +95,75 @@ promotion 执行“双写”:
|
|
|
95
95
|
|
|
96
96
|
## 冲突处理规则
|
|
97
97
|
|
|
98
|
-
### 规则 1
|
|
98
|
+
### 规则 1:写之前必须查重
|
|
99
|
+
|
|
100
|
+
Agent 在产出任何 promoted lesson 之前,必须查看:
|
|
101
|
+
|
|
102
|
+
- 任务本地 `lesson_candidates.md`
|
|
103
|
+
- 任务本地 `lessons/LC-*.md`
|
|
104
|
+
- `docs/01-GOVERNANCE/lessons/*.md`
|
|
105
|
+
- 目标 reference / template / checker
|
|
99
106
|
|
|
100
|
-
|
|
101
|
-
- 当前有哪些 pending 条目
|
|
102
|
-
- 是否有人已经对同一个 target 提出了改动
|
|
103
|
-
- 当前各条目的状态
|
|
107
|
+
目的是确认是否已有同一 target、同一问题或冲突建议。
|
|
104
108
|
|
|
105
109
|
### 规则 2:副本始终基于正式版本
|
|
106
110
|
|
|
107
|
-
|
|
111
|
+
无论已有多少个待处理 lesson 指向同一个 target,新的副本始终基于当前正式 reference 的最新版本,不基于任何未合入的 pending 副本。
|
|
108
112
|
|
|
109
|
-
|
|
113
|
+
原因:人可能选择不采纳之前的 pending 改动。如果基于别人未合入的副本去改,一旦那个被 reject,改动就建立在错误基础上。
|
|
110
114
|
|
|
111
115
|
### 规则 3:以解决冲突的方式编写
|
|
112
116
|
|
|
113
|
-
|
|
114
|
-
1. 读取那个 pending 条目的内容(了解对方想改什么)
|
|
115
|
-
2. 在自己的副本中,以"解决冲突"的方式编写——即:假设对方的改动最终也会被采纳,自己的改动应该与之兼容
|
|
116
|
-
3. 在"冲突声明"中明确说明:我看到了 L-XXX 的改动,我的副本已考虑兼容
|
|
117
|
-
4. 但**不是在对方副本之上修改**,而是独立基于正式版本编写
|
|
117
|
+
如果发现已有 lesson 指向同一 target,Agent 必须:
|
|
118
118
|
|
|
119
|
-
|
|
119
|
+
1. 读取那个 lesson 的内容,了解对方想改什么。
|
|
120
|
+
2. 在自己的详情文档中,以解决冲突的方式编写。
|
|
121
|
+
3. 在“冲突声明”中明确说明看到了哪个 lesson,自己的建议如何兼容或取代它。
|
|
122
|
+
4. 独立基于正式版本编写,不直接修改对方详情文档。
|
|
120
123
|
|
|
121
|
-
|
|
122
|
-
- 逐个 approve,按顺序合入
|
|
123
|
-
- 一次性看所有 pending 改动,做聚合后合入
|
|
124
|
-
- reject 部分,approve 部分
|
|
125
|
-
- 要求 Agent 基于审批结果重新生成一个合并版本
|
|
124
|
+
### 规则 4:人做最终聚合
|
|
126
125
|
|
|
127
|
-
|
|
126
|
+
当多个 lesson 指向同一 target 时,人在审批时可以:
|
|
128
127
|
|
|
129
|
-
|
|
128
|
+
- 逐个 approve,按顺序合入。
|
|
129
|
+
- 一次性看所有 pending 改动,做聚合后合入。
|
|
130
|
+
- reject 部分,approve 部分。
|
|
131
|
+
- 要求 Agent 基于审批结果重新生成一个合并版本。
|
|
130
132
|
|
|
131
133
|
## 状态流转
|
|
132
134
|
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
135
|
+
```text
|
|
136
|
+
lesson_candidates.md:
|
|
137
|
+
pending-review -> needs-promotion -> promoted
|
|
138
|
+
-> rejected
|
|
139
|
+
-> no-candidate-accepted
|
|
140
|
+
|
|
141
|
+
lesson detail docs:
|
|
142
|
+
pending governance integration -> approved -> merged
|
|
143
|
+
-> rejected
|
|
144
|
+
-> superseded
|
|
137
145
|
```
|
|
138
146
|
|
|
139
147
|
## 归档机制
|
|
140
148
|
|
|
141
|
-
|
|
142
|
-
- Active Lessons 表超过 **20 条**时,将所有 `✅ merged` 和 `❌ rejected` 的条目移入归档
|
|
143
|
-
- 人也可以手动触发归档
|
|
144
|
-
|
|
145
|
-
### 归档格式
|
|
146
|
-
```
|
|
147
|
-
docs/01-GOVERNANCE/_archive/Lessons-SSoT-archive-YYYY-QN.md
|
|
148
|
-
```
|
|
149
|
-
|
|
150
|
-
### 归档后
|
|
151
|
-
- Active 表只保留 `🟡 pending` / `🟢 approved` / `🔀 superseded` 的条目
|
|
152
|
-
- 归档文件保留完整历史,可追溯
|
|
149
|
+
当 `docs/01-GOVERNANCE/lessons/` 中已合入或废弃的详情文档过多时,可以把 `merged`、`rejected`、`superseded` 的文档移入 `docs/01-GOVERNANCE/_archive/`。不要归档仍被 Closeout SSoT 或 Harness Ledger 当前行引用的文档,除非同步更新引用。
|
|
153
150
|
|
|
154
151
|
## 人的审批工作流
|
|
155
152
|
|
|
156
|
-
1. 打开 `
|
|
157
|
-
2.
|
|
158
|
-
3.
|
|
159
|
-
4.
|
|
160
|
-
5.
|
|
161
|
-
6.
|
|
153
|
+
1. 打开 dashboard 的 Lessons 队列,或搜索任务本地 `lesson_candidates.md` 中的 `needs-promotion`。
|
|
154
|
+
2. 查看候选行的 `Detail Artifact`,确认任务本地详情正文足够完整。
|
|
155
|
+
3. 需要提升时创建后续 sedimentation task,或批准 `lesson-promote --apply`。
|
|
156
|
+
4. 查看生成的 `docs/01-GOVERNANCE/lessons/*.md`。
|
|
157
|
+
5. 有冲突的 lesson 一起审。
|
|
158
|
+
6. 批准后由维护任务更新目标 reference / template / checker。
|
|
162
159
|
|
|
163
160
|
## 合入执行
|
|
164
161
|
|
|
165
|
-
当 Agent
|
|
166
|
-
- `ref-change`:用 lessons/ 中的副本替换正式 reference
|
|
167
|
-
- `new-doc`:将 lessons/ 中的内容移动到建议路径
|
|
168
|
-
- `arch-change`:按建议更新架构文档
|
|
169
|
-
- `process-change`:按建议更新流程文档
|
|
162
|
+
当 Agent 获得明确的人审批准后:
|
|
170
163
|
|
|
171
|
-
|
|
164
|
+
- `ref-change`:按 lesson 详情更新正式 reference。
|
|
165
|
+
- `new-doc`:将 lesson 建议落到正式建议路径。
|
|
166
|
+
- `arch-change`:按建议更新架构文档。
|
|
167
|
+
- `process-change`:按建议更新流程文档或 CLI/checker。
|
|
172
168
|
|
|
173
|
-
|
|
174
|
-
`Lessons=updated` 或 `Lessons=checked-created`。
|
|
169
|
+
合入任务收口时,必须在 `docs/Harness-Ledger.md` 的当前任务 row 中记录 `checked-created:<L-ID>`、`queued-promotion:<LC-ID>` 或 `checked-candidate:<LC-ID>`。
|