coding-agent-harness 1.0.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.
- package/CHANGELOG.md +13 -0
- package/LICENSE +21 -0
- package/README.md +141 -0
- package/SKILL.md +423 -0
- package/docs-release/README.md +30 -0
- package/docs-release/architecture/overview.md +52 -0
- package/docs-release/guides/agent-installation.md +139 -0
- package/examples/minimal-project/.harness-capabilities.json +8 -0
- package/examples/minimal-project/AGENTS.md +4 -0
- package/examples/minimal-project/CLAUDE.md +3 -0
- package/examples/minimal-project/docs/09-PLANNING/TASKS/demo-task/execution_strategy.md +10 -0
- package/examples/minimal-project/docs/09-PLANNING/TASKS/demo-task/progress.md +11 -0
- package/examples/minimal-project/docs/09-PLANNING/TASKS/demo-task/review.md +27 -0
- package/examples/minimal-project/docs/09-PLANNING/TASKS/demo-task/task_plan.md +14 -0
- package/examples/minimal-project/docs/09-PLANNING/TASKS/demo-task/visual_roadmap.md +11 -0
- package/examples/minimal-project/docs/Harness-Ledger.md +6 -0
- package/package.json +34 -0
- package/references/adversarial-review-standard.md +173 -0
- package/references/agents-md-pattern.md +140 -0
- package/references/cadence-ledger.md +55 -0
- package/references/ci-cd-standard.md +90 -0
- package/references/delivery-operating-model-standard.md +145 -0
- package/references/docs-directory-standard.md +125 -0
- package/references/harness-ledger.md +148 -0
- package/references/lessons-governance.md +157 -0
- package/references/long-running-task-standard.md +209 -0
- package/references/module-parallel-standard.md +292 -0
- package/references/planning-loop.md +192 -0
- package/references/project-onboarding-audit.md +167 -0
- package/references/regression-system.md +89 -0
- package/references/repo-governance-standard.md +131 -0
- package/references/review-routing-standard.md +103 -0
- package/references/ssot-governance.md +111 -0
- package/references/walkthrough-closeout.md +135 -0
- package/references/worktree-parallel.md +184 -0
- package/scripts/check-harness.mjs +728 -0
- package/scripts/harness.mjs +201 -0
- package/scripts/lib/dashboard-writer.mjs +95 -0
- package/scripts/lib/harness-core.mjs +1318 -0
- package/scripts/smoke-dashboard.mjs +70 -0
- package/scripts/test-harness.mjs +482 -0
- package/templates/AGENTS.md.template +82 -0
- package/templates/CLAUDE.md.template +12 -0
- package/templates/dashboard/assets/app.css +399 -0
- package/templates/dashboard/assets/app.js +435 -0
- package/templates/dashboard/assets/i18n.js +47 -0
- package/templates/dashboard/assets/markdown-reader.js +116 -0
- package/templates/dashboard/assets/mermaid-renderer.js +59 -0
- package/templates/dashboard/index.html +18 -0
- package/templates/ledger/Harness-Ledger.md +39 -0
- package/templates/lessons/lesson-arch-process-change.md +47 -0
- package/templates/lessons/lesson-new-doc.md +50 -0
- package/templates/lessons/lesson-ref-change.md +45 -0
- package/templates/planning/execution_strategy.md +40 -0
- package/templates/planning/findings.md +24 -0
- package/templates/planning/long-running-task-contract.md +69 -0
- package/templates/planning/module_plan.md +36 -0
- package/templates/planning/module_session_prompt.md +39 -0
- package/templates/planning/optional/artifacts/INDEX.md +12 -0
- package/templates/planning/optional/references/INDEX.md +13 -0
- package/templates/planning/optional/slices/_slice-template/brief.md +27 -0
- package/templates/planning/optional/slices/_slice-template/evidence.md +9 -0
- package/templates/planning/optional/slices/_slice-template/review.md +31 -0
- package/templates/planning/progress.md +33 -0
- package/templates/planning/review.md +48 -0
- package/templates/planning/task_plan.md +86 -0
- package/templates/planning/visual_roadmap.md +28 -0
- package/templates/reference/adversarial-review-standard.md +28 -0
- package/templates/reference/ci-cd-standard.md +28 -0
- package/templates/reference/delivery-operating-model-standard.md +28 -0
- package/templates/reference/docs-library-standard.md +28 -0
- package/templates/reference/engineering-standard.md +29 -0
- package/templates/reference/execution-workflow-standard.md +29 -0
- package/templates/reference/harness-ledger-standard.md +26 -0
- package/templates/reference/long-running-task-standard.md +28 -0
- package/templates/reference/regression-ssot-governance.md +28 -0
- package/templates/reference/repo-governance-standard.md +29 -0
- package/templates/reference/review-routing-standard.md +29 -0
- package/templates/reference/testing-standard.md +28 -0
- package/templates/reference/walkthrough-standard.md +28 -0
- package/templates/reference/worktree-standard.md +28 -0
- package/templates/regression/Cadence-Ledger.md +41 -0
- package/templates/ssot/Delivery-SSoT.md +43 -0
- package/templates/ssot/Feature-SSoT.md +43 -0
- package/templates/ssot/Lessons-SSoT.md +44 -0
- package/templates/ssot/Module-Registry.md +43 -0
- package/templates/ssot/Regression-SSoT.md +51 -0
- package/templates/verifier/verifier-output.md +43 -0
- package/templates/walkthrough/Closeout-SSoT.md +43 -0
- package/templates/walkthrough/walkthrough-template.md +63 -0
- package/templates-zh-CN/AGENTS.md.template +92 -0
- package/templates-zh-CN/CLAUDE.md.template +12 -0
- package/templates-zh-CN/dashboard/assets/app.css +399 -0
- package/templates-zh-CN/dashboard/assets/app.js +435 -0
- package/templates-zh-CN/dashboard/assets/i18n.js +47 -0
- package/templates-zh-CN/dashboard/assets/markdown-reader.js +116 -0
- package/templates-zh-CN/dashboard/assets/mermaid-renderer.js +59 -0
- package/templates-zh-CN/dashboard/index.html +18 -0
- package/templates-zh-CN/ledger/Harness-Ledger.md +50 -0
- package/templates-zh-CN/lessons/lesson-arch-process-change.md +47 -0
- package/templates-zh-CN/lessons/lesson-new-doc.md +49 -0
- package/templates-zh-CN/lessons/lesson-ref-change.md +59 -0
- package/templates-zh-CN/planning/execution_strategy.md +37 -0
- package/templates-zh-CN/planning/findings.md +24 -0
- package/templates-zh-CN/planning/long-running-task-contract.md +118 -0
- package/templates-zh-CN/planning/module_plan.md +43 -0
- package/templates-zh-CN/planning/module_session_prompt.md +70 -0
- package/templates-zh-CN/planning/optional/artifacts/INDEX.md +13 -0
- package/templates-zh-CN/planning/optional/references/INDEX.md +13 -0
- package/templates-zh-CN/planning/optional/slices/_slice-template/brief.md +35 -0
- package/templates-zh-CN/planning/optional/slices/_slice-template/evidence.md +12 -0
- package/templates-zh-CN/planning/optional/slices/_slice-template/review.md +37 -0
- package/templates-zh-CN/planning/progress.md +29 -0
- package/templates-zh-CN/planning/review.md +69 -0
- package/templates-zh-CN/planning/task_plan.md +116 -0
- package/templates-zh-CN/planning/visual_roadmap.md +24 -0
- package/templates-zh-CN/reference/adversarial-review-standard.md +89 -0
- package/templates-zh-CN/reference/ci-cd-standard.md +72 -0
- package/templates-zh-CN/reference/delivery-operating-model-standard.md +79 -0
- package/templates-zh-CN/reference/docs-library-standard.md +59 -0
- package/templates-zh-CN/reference/engineering-standard.md +80 -0
- package/templates-zh-CN/reference/execution-workflow-standard.md +81 -0
- package/templates-zh-CN/reference/harness-ledger-standard.md +91 -0
- package/templates-zh-CN/reference/long-running-task-standard.md +156 -0
- package/templates-zh-CN/reference/regression-ssot-governance.md +82 -0
- package/templates-zh-CN/reference/repo-governance-standard.md +84 -0
- package/templates-zh-CN/reference/review-routing-standard.md +82 -0
- package/templates-zh-CN/reference/testing-standard.md +72 -0
- package/templates-zh-CN/reference/walkthrough-standard.md +83 -0
- package/templates-zh-CN/reference/worktree-standard.md +116 -0
- package/templates-zh-CN/regression/Cadence-Ledger.md +48 -0
- package/templates-zh-CN/ssot/Delivery-SSoT.md +60 -0
- package/templates-zh-CN/ssot/Feature-SSoT.md +49 -0
- package/templates-zh-CN/ssot/Lessons-SSoT.md +49 -0
- package/templates-zh-CN/ssot/Module-Registry.md +48 -0
- package/templates-zh-CN/ssot/Regression-SSoT.md +51 -0
- package/templates-zh-CN/verifier/verifier-output.md +38 -0
- package/templates-zh-CN/walkthrough/Closeout-SSoT.md +42 -0
- package/templates-zh-CN/walkthrough/walkthrough-template.md +62 -0
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
# 经验沉淀治理(Lessons Governance)
|
|
2
|
+
|
|
3
|
+
## 核心思路
|
|
4
|
+
|
|
5
|
+
Agent 在 Walkthrough 收口时自动识别可沉淀的经验,先将详细内容落到
|
|
6
|
+
`docs/01-GOVERNANCE/lessons/` 目录,再写入 Lessons SSoT。人审批后决定是否合入正式 reference。
|
|
7
|
+
|
|
8
|
+
**硬规则:Lessons SSoT 表行不能单独存在。** 每一条 pending lesson 必须有一篇
|
|
9
|
+
`docs/01-GOVERNANCE/lessons/L-YYYY-MM-DD-NNN-<slug>.md` 详情文档,表里的
|
|
10
|
+
`Detail Doc` 列必须指向这篇文档。如果只是填表而没有详情文档,这次 closeout
|
|
11
|
+
不算完成。
|
|
12
|
+
|
|
13
|
+
这是 harness 的第三条 SSoT 轨道:
|
|
14
|
+
|
|
15
|
+
| SSoT | 管什么 | 位置 |
|
|
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。
|
|
24
|
+
|
|
25
|
+
## 目录结构
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
docs/01-GOVERNANCE/
|
|
29
|
+
├── Lessons-SSoT.md ← 沉淀建议表(SSoT)
|
|
30
|
+
├── lessons/ ← 具体沉淀内容存放
|
|
31
|
+
│ ├── L-2026-05-07-001-xxx.md ← 单条沉淀建议的详细内容
|
|
32
|
+
│ └── ...
|
|
33
|
+
└── _archive/ ← 已处理的历史条目归档
|
|
34
|
+
└── Lessons-SSoT-archive-YYYY-QN.md
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## 触发时机
|
|
38
|
+
|
|
39
|
+
在 Walkthrough 收口流程中,写完 Walkthrough 并更新 Feature/Regression SSoT 之后,Agent 执行经验沉淀检查:
|
|
40
|
+
|
|
41
|
+
1. 这次开发中有没有发现现有 reference 不够用或有误的地方?
|
|
42
|
+
2. 有没有值得固化为规范的新模式/新做法?
|
|
43
|
+
3. 有没有踩坑经验值得记录,避免下次重复?
|
|
44
|
+
4. 有没有架构层面的洞察,值得更新架构文档?
|
|
45
|
+
|
|
46
|
+
如果任何一条答案是"有",必须执行“双写”:
|
|
47
|
+
|
|
48
|
+
1. 选择 `templates/lessons/` 下的对应模板,先创建详情文档。
|
|
49
|
+
2. 详情文档必须写清背景、现状问题、建议改动、影响范围和冲突声明。
|
|
50
|
+
3. 再在 Lessons SSoT 追加表行,`Detail Doc` 指向这篇详情文档。
|
|
51
|
+
4. 在 Closeout SSoT / Harness Ledger 中记录 `checked-created`,并引用 lesson ID。
|
|
52
|
+
|
|
53
|
+
如果四个问题的答案全是"没有",也不能静默跳过。必须在 Closeout SSoT 和
|
|
54
|
+
Harness Ledger 中记录 `checked-none: <一句话原因>`。
|
|
55
|
+
|
|
56
|
+
## Closeout 判定
|
|
57
|
+
|
|
58
|
+
收口时只允许以下两种合格状态:
|
|
59
|
+
|
|
60
|
+
- `checked-created: L-YYYY-MM-DD-NNN`:发现可沉淀经验,已创建详情文档并更新 Lessons SSoT。
|
|
61
|
+
- `checked-none: <reason>`:已完整检查,确认本轮没有可复用的规范/流程/架构改进。
|
|
62
|
+
|
|
63
|
+
以下状态不合格:
|
|
64
|
+
|
|
65
|
+
- 只写 Lessons SSoT 表行,没有详情文档。
|
|
66
|
+
- 只写详情文档,没有 Lessons SSoT 表行。
|
|
67
|
+
- 在 walkthrough 或 progress 中说“无 lessons”,但 Closeout SSoT / Harness Ledger 没有记录。
|
|
68
|
+
- 用 `n/a` 代替检查结果,除非任务是纯只读分析且没有 closed ledger row。
|
|
69
|
+
|
|
70
|
+
## 沉淀类型
|
|
71
|
+
|
|
72
|
+
| Type | 说明 |
|
|
73
|
+
|------|------|
|
|
74
|
+
| `ref-change` | 修改现有 reference 文档 |
|
|
75
|
+
| `new-doc` | 新增文档/规范 |
|
|
76
|
+
| `arch-change` | 架构层面的改动建议 |
|
|
77
|
+
| `process-change` | 流程/工作方式的改动建议 |
|
|
78
|
+
|
|
79
|
+
## 冲突处理规则
|
|
80
|
+
|
|
81
|
+
### 规则 1:写之前必须读 SSoT
|
|
82
|
+
|
|
83
|
+
Agent 在产出任何沉淀建议之前,**必须完整读一遍 Lessons SSoT**,了解:
|
|
84
|
+
- 当前有哪些 pending 条目
|
|
85
|
+
- 是否有人已经对同一个 target 提出了改动
|
|
86
|
+
- 当前各条目的状态
|
|
87
|
+
|
|
88
|
+
### 规则 2:副本始终基于正式版本
|
|
89
|
+
|
|
90
|
+
无论 SSoT 上有多少个 pending 的改动指向同一个 target,新的副本**始终基于当前正式 reference 的最新版本**,不基于任何未合入的 pending 副本。
|
|
91
|
+
|
|
92
|
+
**原因**:人可能选择不采纳之前的 pending 改动。如果基于别人未合入的副本去改,一旦那个被 reject,改动就建立在错误基础上。
|
|
93
|
+
|
|
94
|
+
### 规则 3:以解决冲突的方式编写
|
|
95
|
+
|
|
96
|
+
如果发现有 pending 条目指向同一 target,Agent 必须:
|
|
97
|
+
1. 读取那个 pending 条目的内容(了解对方想改什么)
|
|
98
|
+
2. 在自己的副本中,以"解决冲突"的方式编写——即:假设对方的改动最终也会被采纳,自己的改动应该与之兼容
|
|
99
|
+
3. 在"冲突声明"中明确说明:我看到了 L-XXX 的改动,我的副本已考虑兼容
|
|
100
|
+
4. 但**不是在对方副本之上修改**,而是独立基于正式版本编写
|
|
101
|
+
|
|
102
|
+
### 规则 4:人做最终聚合
|
|
103
|
+
|
|
104
|
+
当多个 pending 条目指向同一 target 时,人在审批时可以:
|
|
105
|
+
- 逐个 approve,按顺序合入
|
|
106
|
+
- 一次性看所有 pending 改动,做聚合后合入
|
|
107
|
+
- reject 部分,approve 部分
|
|
108
|
+
- 要求 Agent 基于审批结果重新生成一个合并版本
|
|
109
|
+
|
|
110
|
+
### 规则 5:SSoT 表标记冲突
|
|
111
|
+
|
|
112
|
+
当新条目与已有 pending 条目指向同一 target 时,两个条目的 Conflict 列都要标记对方的 ID。人一眼就能看到"这两个要一起审"。
|
|
113
|
+
|
|
114
|
+
## 状态流转
|
|
115
|
+
|
|
116
|
+
```
|
|
117
|
+
🟡 pending → 🟢 approved → ✅ merged
|
|
118
|
+
↘ (人决定不合入) → ❌ rejected
|
|
119
|
+
→ 🔀 superseded (被后续条目取代)
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
## 归档机制
|
|
123
|
+
|
|
124
|
+
### 触发条件
|
|
125
|
+
- Active Lessons 表超过 **20 条**时,将所有 `✅ merged` 和 `❌ rejected` 的条目移入归档
|
|
126
|
+
- 人也可以手动触发归档
|
|
127
|
+
|
|
128
|
+
### 归档格式
|
|
129
|
+
```
|
|
130
|
+
docs/01-GOVERNANCE/_archive/Lessons-SSoT-archive-YYYY-QN.md
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### 归档后
|
|
134
|
+
- Active 表只保留 `🟡 pending` / `🟢 approved` / `🔀 superseded` 的条目
|
|
135
|
+
- 归档文件保留完整历史,可追溯
|
|
136
|
+
|
|
137
|
+
## 人的审批工作流
|
|
138
|
+
|
|
139
|
+
1. 打开 `Lessons-SSoT.md`,看 Active 表里有没有 🟡 pending 的条目
|
|
140
|
+
2. 看 Summary 列,大部分情况一句话就能判断
|
|
141
|
+
3. 需要细看就点进 Detail Doc 路径,看完整副本和改动理由
|
|
142
|
+
4. 有冲突的条目一起审(看 Conflict 列)
|
|
143
|
+
5. 批准后改状态为 🟢 approved
|
|
144
|
+
6. Agent 下次看到 approved 状态就执行合入,完成后改为 ✅ merged
|
|
145
|
+
|
|
146
|
+
## 合入执行
|
|
147
|
+
|
|
148
|
+
当 Agent 发现 Lessons SSoT 中有 `🟢 approved` 状态的条目时:
|
|
149
|
+
- `ref-change`:用 lessons/ 中的副本替换正式 reference
|
|
150
|
+
- `new-doc`:将 lessons/ 中的内容移动到建议路径
|
|
151
|
+
- `arch-change`:按建议更新架构文档
|
|
152
|
+
- `process-change`:按建议更新流程文档
|
|
153
|
+
|
|
154
|
+
合入完成后,状态改为 `✅ merged`。
|
|
155
|
+
|
|
156
|
+
合入任务收口时,还必须在 `docs/Harness-Ledger.md` 的当前任务 row 中记录
|
|
157
|
+
`Lessons=updated` 或 `Lessons=checked-created`。
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
# Long-Running Task Standard
|
|
2
|
+
|
|
3
|
+
## 核心思路
|
|
4
|
+
|
|
5
|
+
长程任务不是“让 agent 多跑一会儿”,而是把任务先设计成可连续执行、可审查、可停止的合同。
|
|
6
|
+
|
|
7
|
+
当任务需要持续数小时、多轮 hardening、多 agent 分工或子代理 review 时,必须先把合同写清楚,再开放连续执行权限。
|
|
8
|
+
|
|
9
|
+
## 适用场景
|
|
10
|
+
|
|
11
|
+
以下任务应使用本标准:
|
|
12
|
+
|
|
13
|
+
- 预计持续多轮迭代的复杂修复、重构、交付收口
|
|
14
|
+
- 需要连续推进 2 小时以上的任务
|
|
15
|
+
- 需要多轮测试、浏览器巡检、真实环境 smoke 或人工代理操作的任务
|
|
16
|
+
- 需要 reviewer agent、subagent、外部审查者交叉检查的任务
|
|
17
|
+
- 用户希望“不要每轮问我,直到满足停止条件再汇报”的任务
|
|
18
|
+
|
|
19
|
+
以下任务通常不需要:
|
|
20
|
+
|
|
21
|
+
- 单文件小修
|
|
22
|
+
- 一次性命令执行
|
|
23
|
+
- 纯只读分析
|
|
24
|
+
- 没有客观验收口径的轻量 brainstorming
|
|
25
|
+
|
|
26
|
+
## 四个前提
|
|
27
|
+
|
|
28
|
+
长程任务能稳定推进,需要四件事同时成立:
|
|
29
|
+
|
|
30
|
+
1. **开放执行权限**:agent 不需要每一轮都回来请求继续。
|
|
31
|
+
2. **封闭验收口径**:什么算完成、什么不算完成,事先定义。
|
|
32
|
+
3. **持续证据循环**:每一轮都能产生新的可验证证据。
|
|
33
|
+
4. **明确停止条件**:agent 知道什么时候继续,什么时候停。
|
|
34
|
+
|
|
35
|
+
缺任何一项,任务容易过早停下、跑偏、无限扩大 scope,或者在主观细节里打转。
|
|
36
|
+
|
|
37
|
+
## 任务合同
|
|
38
|
+
|
|
39
|
+
长程任务开始前,必须在 task plan 或独立 contract 文件中写清以下字段。
|
|
40
|
+
|
|
41
|
+
### Goal
|
|
42
|
+
|
|
43
|
+
只回答一个问题:本轮任务到底要收掉什么主问题?
|
|
44
|
+
|
|
45
|
+
要求:
|
|
46
|
+
|
|
47
|
+
- 只能有一个主目标
|
|
48
|
+
- 不能混入多个并列主目标
|
|
49
|
+
- 不能写成“整体优化一下”
|
|
50
|
+
|
|
51
|
+
### Scope
|
|
52
|
+
|
|
53
|
+
必须明确:
|
|
54
|
+
|
|
55
|
+
- 允许修改哪些目录、模块、接口、文档或流程
|
|
56
|
+
- 哪些能力面明确 out of scope
|
|
57
|
+
- 哪些共享文件需要避免并行冲突
|
|
58
|
+
|
|
59
|
+
### Primary Caller / Entry Surface
|
|
60
|
+
|
|
61
|
+
必须判断这轮能力主要面向谁:
|
|
62
|
+
|
|
63
|
+
- 本机 agent / CLI
|
|
64
|
+
- 人类用户 / UI
|
|
65
|
+
- 服务调用 / API
|
|
66
|
+
- 自动化系统 / scheduler
|
|
67
|
+
- 外部集成 / adapter
|
|
68
|
+
|
|
69
|
+
判断调用者不是为了提前做所有入口,而是避免把主入口设计错。
|
|
70
|
+
|
|
71
|
+
### Execution Permission
|
|
72
|
+
|
|
73
|
+
写清 agent 是否可以连续推进:
|
|
74
|
+
|
|
75
|
+
- 是否可以不用每轮确认
|
|
76
|
+
- 是否允许自动进入下一轮 review/fix/test
|
|
77
|
+
- 是否允许启动子代理或 reviewer
|
|
78
|
+
- 哪些动作仍需人工批准
|
|
79
|
+
|
|
80
|
+
### Review Loop
|
|
81
|
+
|
|
82
|
+
定义每一轮的闭环,并写清 review report 的落点。常见组合:
|
|
83
|
+
|
|
84
|
+
- implement -> test -> self-review -> fix
|
|
85
|
+
- implement -> browser/manual smoke -> reviewer agent -> fix
|
|
86
|
+
- split work -> independent reviewer -> integration pass -> regression
|
|
87
|
+
|
|
88
|
+
如果使用子代理,必须写清:
|
|
89
|
+
|
|
90
|
+
- reviewer 只审查还是可改代码
|
|
91
|
+
- reviewer 负责哪些文件或问题域
|
|
92
|
+
- 主 agent 如何吸收反馈
|
|
93
|
+
- reviewer 是否必须写 `review.md`
|
|
94
|
+
- reviewer 是否必须执行 Confidence Challenge:“你对这个方案、实现和策略有 100% 的信心吗?”
|
|
95
|
+
- 几轮 review 后才允许停止
|
|
96
|
+
|
|
97
|
+
如果子代理可改代码、测试、产品文档或 harness 文档,它必须按 worker 合同执行:
|
|
98
|
+
|
|
99
|
+
- coordinator 先分配独立 worktree / branch、任务目录和 write scope
|
|
100
|
+
- worker 只在自己的 worktree 内实现、验证并提交
|
|
101
|
+
- handoff 必须包含 worktree path、branch、commit SHA、checks、residual risks
|
|
102
|
+
- coordinator 负责 merge / conflict resolution / final gates
|
|
103
|
+
|
|
104
|
+
只读 reviewer 和可写 worker 不能混用同一个口径。若原本是 reviewer,后来需要改代码,
|
|
105
|
+
必须先升级为 worker 并补齐 worktree 合同。
|
|
106
|
+
|
|
107
|
+
如果 review loop 使用 reviewer agent、subagent 或外部审查者,必须在任务目录写
|
|
108
|
+
`review.md`,并按 `docs/11-REFERENCE/adversarial-review-standard.md` 记录 material findings、
|
|
109
|
+
no-finding statement、evidence checked 和 residual risk。
|
|
110
|
+
|
|
111
|
+
### Evidence Depth
|
|
112
|
+
|
|
113
|
+
写清任务需要哪些证据。常见证据:
|
|
114
|
+
|
|
115
|
+
- lint / typecheck / build
|
|
116
|
+
- unit / integration / e2e tests
|
|
117
|
+
- local smoke
|
|
118
|
+
- browser or UI inspection
|
|
119
|
+
- live environment smoke
|
|
120
|
+
- logs / screenshots / traces
|
|
121
|
+
- reviewer findings and no-finding confirmation
|
|
122
|
+
- `review.md` 中的 material finding 状态与 residual routing
|
|
123
|
+
- walkthrough / release notes / PR checks
|
|
124
|
+
|
|
125
|
+
证据必须能被后来的人复查,不能只写“看起来可以”。
|
|
126
|
+
|
|
127
|
+
### Stop Condition
|
|
128
|
+
|
|
129
|
+
停止条件必须是可判断的完成门。
|
|
130
|
+
|
|
131
|
+
推荐组合:
|
|
132
|
+
|
|
133
|
+
- 关键路径通过
|
|
134
|
+
- 目标 regression gate 通过
|
|
135
|
+
- console / request / page / runtime errors 清零或有明确残项
|
|
136
|
+
- reviewer 没有 material finding
|
|
137
|
+
- `review.md` 已完成,且无 open P0/P1 finding
|
|
138
|
+
- 自审没有明显不满意项
|
|
139
|
+
- residual items 已记录,且不阻塞本轮目标
|
|
140
|
+
|
|
141
|
+
### Deliverables
|
|
142
|
+
|
|
143
|
+
明确最终交付物:
|
|
144
|
+
|
|
145
|
+
- 代码改动
|
|
146
|
+
- 测试或 regression gate
|
|
147
|
+
- docs / task plan / progress / findings 回写
|
|
148
|
+
- review report(如适用)
|
|
149
|
+
- worker branch / commit SHA / integration evidence(如使用 worker subagent)
|
|
150
|
+
- walkthrough
|
|
151
|
+
- Harness Ledger
|
|
152
|
+
- PR / commit / release note
|
|
153
|
+
- residual risk summary
|
|
154
|
+
|
|
155
|
+
## 标准执行形态
|
|
156
|
+
|
|
157
|
+
推荐顺序:
|
|
158
|
+
|
|
159
|
+
1. 讨论并收敛任务合同
|
|
160
|
+
2. 建 planning 目录和 worktree
|
|
161
|
+
3. 做一轮可验证增量
|
|
162
|
+
4. 运行约定证据
|
|
163
|
+
5. 自审或 reviewer 审查
|
|
164
|
+
6. 根据发现继续修
|
|
165
|
+
7. 重跑证据
|
|
166
|
+
8. 直到 stop condition 达成
|
|
167
|
+
9. 写 walkthrough、Harness Ledger 和 residual risk
|
|
168
|
+
|
|
169
|
+
核心原则:
|
|
170
|
+
|
|
171
|
+
> 开放执行,封闭验收;多轮证据,不靠感觉。
|
|
172
|
+
|
|
173
|
+
## 暂停条件
|
|
174
|
+
|
|
175
|
+
即使用户授权连续执行,出现以下情况也必须停下来汇报:
|
|
176
|
+
|
|
177
|
+
- 主目标或 scope 变得不清楚
|
|
178
|
+
- 需要高风险产品、架构、安全或数据决策
|
|
179
|
+
- 当前任务与已有未提交改动直接冲突
|
|
180
|
+
- stop condition 已经不适用
|
|
181
|
+
- 外部环境、权限、配额、依赖阻塞,无法继续产生有效证据
|
|
182
|
+
- reviewer 发现的问题会改变任务目标
|
|
183
|
+
|
|
184
|
+
长程任务不是永远不问,而是在合同清楚时少问,在合同失效时及时停。
|
|
185
|
+
|
|
186
|
+
## 反模式
|
|
187
|
+
|
|
188
|
+
以下口径不适合作为长程任务合同:
|
|
189
|
+
|
|
190
|
+
- “你先看看,能改多少改多少”
|
|
191
|
+
- “整体优化一下”
|
|
192
|
+
- “差不多就行”
|
|
193
|
+
- “有问题再说”
|
|
194
|
+
- “不用测了,先做”
|
|
195
|
+
- “我也不知道什么时候算完成,你自己把握”
|
|
196
|
+
|
|
197
|
+
这些写法共同缺少 Goal、Scope、Evidence 或 Stop Condition。
|
|
198
|
+
|
|
199
|
+
## 项目落地规则
|
|
200
|
+
|
|
201
|
+
一个项目安装 harness 后,应做到:
|
|
202
|
+
|
|
203
|
+
- `AGENTS.md` 的 Task-Type Reading Matrix 指向 `docs/11-REFERENCE/long-running-task-standard.md`
|
|
204
|
+
- `docs/09-PLANNING/TASKS/_task-template/` 包含 long-running task contract 模板
|
|
205
|
+
- `docs/09-PLANNING/TASKS/_task-template/` 包含 `review.md` 模板
|
|
206
|
+
- `docs/11-REFERENCE/adversarial-review-standard.md` 定义 reviewer 报告规范
|
|
207
|
+
- `execution-workflow-standard.md` 在开始任务前要求判断是否属于长程任务
|
|
208
|
+
- regression / testing 标准能提供可复查证据,而不是只依赖主观判断
|
|
209
|
+
- `docs/Harness-Ledger.md` 记录长程任务是否完成必要的上下文回写
|
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
# 模块并行开发标准
|
|
2
|
+
|
|
3
|
+
## 核心思路
|
|
4
|
+
|
|
5
|
+
当项目有多个可独立演进的功能域时,用模块(Module)替代全局 Phase 作为工作单元。每个模块有自己的步骤序列、worktree、会话,互不干扰。Phase 降级为"发布事件"——从各模块已完成步骤中挑选打包。
|
|
6
|
+
|
|
7
|
+
## 何时启用
|
|
8
|
+
|
|
9
|
+
同时满足以下条件时启用模块并行:
|
|
10
|
+
|
|
11
|
+
- Operating Model 为 `solo-orchestrator` 或 `team-feature-lead`
|
|
12
|
+
- 项目有 2+ 个功能域可独立演进
|
|
13
|
+
- 各功能域的源文件几乎不重叠
|
|
14
|
+
- 开发者计划多会话 / 多 worktree 并行推进
|
|
15
|
+
|
|
16
|
+
不满足时继续使用 Feature SSoT + 线性 Phase 模型。
|
|
17
|
+
|
|
18
|
+
## 核心概念
|
|
19
|
+
|
|
20
|
+
| 概念 | 定义 | 生命周期 |
|
|
21
|
+
|------|------|----------|
|
|
22
|
+
| 模块(Module) | 长期存在的功能域 | 从注册到归档 |
|
|
23
|
+
| 步骤(Step) | 模块内一个可合并工作单元(≈ 一个 PR) | planned → in-progress → done |
|
|
24
|
+
| 发布(Release) | 从各模块已完成步骤中挑选打包的事件 | git tag |
|
|
25
|
+
|
|
26
|
+
## 模块注册表(Module Registry)
|
|
27
|
+
|
|
28
|
+
安装位置:`docs/09-PLANNING/Module-Registry.md`
|
|
29
|
+
|
|
30
|
+
使用模板:`templates/ssot/Module-Registry.md`
|
|
31
|
+
|
|
32
|
+
职责:
|
|
33
|
+
- 记录所有活跃模块的 key、PREFIX、scope、当前步骤、分支、状态
|
|
34
|
+
- 是新会话冷启动时的第一个读取文件(在 AGENTS.md 之后)
|
|
35
|
+
- 声明每个模块的 write scope,用于冲突检测
|
|
36
|
+
|
|
37
|
+
### Status 定义
|
|
38
|
+
|
|
39
|
+
- `planned` — 步骤已规划,尚未开始
|
|
40
|
+
- `in-progress` — 有活跃会话在开发
|
|
41
|
+
- `paused` — 暂停,无活跃会话
|
|
42
|
+
- `completed` — 所有步骤完成,待归档
|
|
43
|
+
|
|
44
|
+
## 模块计划(Module Plan)
|
|
45
|
+
|
|
46
|
+
安装位置:`docs/09-PLANNING/MODULES/<key>/module_plan.md`
|
|
47
|
+
|
|
48
|
+
使用模板:`templates/planning/module_plan.md`
|
|
49
|
+
|
|
50
|
+
职责:
|
|
51
|
+
- 记录该模块的步骤序列、当前进度、完成标准
|
|
52
|
+
- 每个步骤对应一个 task_plan(在模块的 TASKS/ 子目录下)
|
|
53
|
+
|
|
54
|
+
## 模块会话启动 Prompt(Module Session Prompt)
|
|
55
|
+
|
|
56
|
+
安装位置由项目选择,推荐二选一:
|
|
57
|
+
|
|
58
|
+
- 单文件 Prompt Pack:`docs/09-PLANNING/MODULES/Session-Prompt-Pack.md`
|
|
59
|
+
- 每模块 Prompt:`docs/09-PLANNING/MODULES/<key>/session_prompt.md`
|
|
60
|
+
|
|
61
|
+
使用模板:`templates/planning/module_session_prompt.md`
|
|
62
|
+
|
|
63
|
+
职责:
|
|
64
|
+
|
|
65
|
+
- 给用户提供可直接粘贴到新会话的模块启动文本
|
|
66
|
+
- 明确模块目标、读取顺序、branch/worktree、write scope、共享/禁止修改范围、验证命令、收口动作和 stop conditions
|
|
67
|
+
- 让多个模块会话能独立冷启动,而不是依赖上一轮聊天上下文
|
|
68
|
+
|
|
69
|
+
硬规则:
|
|
70
|
+
|
|
71
|
+
- 每个 Active Module 必须能在 Prompt Pack 或自己的 `session_prompt.md` 中找到对应启动 prompt。
|
|
72
|
+
- Prompt 必须写清楚 allowed scope 和 forbidden/shared scope。
|
|
73
|
+
- Prompt 必须写清楚至少一个项目级 check 和该模块的 targeted checks。
|
|
74
|
+
- Prompt 必须包含 start gate:校验 registry 当前步骤、branch/worktree、dirty state、共享锁和过期 prompt。
|
|
75
|
+
- Prompt 必须要求开始改代码前创建或更新模块 task_plan,并记录 scope、acceptance、verification、worktree 和 shared coordination。
|
|
76
|
+
- Prompt 必须包含 closeout:review.md 或 skipped-with-reason、walkthrough Lessons Reflection、Closeout SSoT、Lessons Check、Regression SSoT / Harness Ledger 条件更新。
|
|
77
|
+
- Prompt 中不得要求 agent 修改其他模块代码;需要跨模块文件时,必须先进入 `_shared` task 或指定单一 owner。
|
|
78
|
+
|
|
79
|
+
## 模块目录结构
|
|
80
|
+
|
|
81
|
+
```
|
|
82
|
+
docs/09-PLANNING/MODULES/<key>/
|
|
83
|
+
├── module_plan.md ← 模块总览和步骤序列
|
|
84
|
+
├── session_prompt.md ← 可选:该模块专用启动 prompt
|
|
85
|
+
└── TASKS/ ← 该模块的所有 task
|
|
86
|
+
├── <PREFIX>-NN-<name>/
|
|
87
|
+
│ ├── task_plan.md
|
|
88
|
+
│ ├── progress.md
|
|
89
|
+
│ ├── findings.md
|
|
90
|
+
│ └── review.md (如需要)
|
|
91
|
+
└── ...
|
|
92
|
+
|
|
93
|
+
docs/10-WALKTHROUGH/
|
|
94
|
+
├── <module-key>/
|
|
95
|
+
│ ├── <PREFIX>-NN-walkthrough.md
|
|
96
|
+
│ └── ...
|
|
97
|
+
└── _shared/ ← 跨模块基础设施 task 的 walkthrough
|
|
98
|
+
|
|
99
|
+
docs/09-PLANNING/MODULES/_shared/TASKS/
|
|
100
|
+
└── YYYY-MM-DD-<name>/ ← 跨模块/基础设施 task
|
|
101
|
+
└── ...
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
## 步骤 ID 规则
|
|
105
|
+
|
|
106
|
+
- 格式:`<PREFIX>-NN`(如 `RDR-01`、`GRF-02`、`MOT-01`)
|
|
107
|
+
- PREFIX 在注册表中唯一分配,不可重复
|
|
108
|
+
- 步骤 ID 只在模块内有序,跨模块无顺序关系
|
|
109
|
+
- NN 从 01 开始递增,不跳号
|
|
110
|
+
|
|
111
|
+
## 会话冷启动协议
|
|
112
|
+
|
|
113
|
+
新会话的读取顺序:
|
|
114
|
+
|
|
115
|
+
1. `AGENTS.md` — 获取项目总览和模块并行指引
|
|
116
|
+
2. `docs/09-PLANNING/Module-Registry.md` — 了解全局模块状态
|
|
117
|
+
3. `docs/09-PLANNING/MODULES/Session-Prompt-Pack.md` 或目标模块的 `session_prompt.md` — 获取会话启动合同
|
|
118
|
+
4. 目标模块的 `docs/09-PLANNING/MODULES/<key>/module_plan.md` — 了解模块进度
|
|
119
|
+
5. 当前步骤的 `task_plan.md` — 了解具体任务
|
|
120
|
+
|
|
121
|
+
会话开始时,用户告知目标模块(如"做 Reader"),agent 据此定位。
|
|
122
|
+
|
|
123
|
+
会话结束时必须更新:
|
|
124
|
+
- module_plan.md 的步骤状态和"当前状态"段落
|
|
125
|
+
- 模块 TASKS 下的 progress / findings / review / walkthrough 相关引用
|
|
126
|
+
- 模块 TASKS 下的 Coordinator Handoff,列出需要 coordinator 同步到总表的 registry / ledger / closeout 项
|
|
127
|
+
|
|
128
|
+
模块 worker 默认不得写全局总表:
|
|
129
|
+
|
|
130
|
+
- `docs/09-PLANNING/Module-Registry.md`
|
|
131
|
+
- `docs/Harness-Ledger.md`
|
|
132
|
+
- `docs/10-WALKTHROUGH/Closeout-SSoT.md`
|
|
133
|
+
- `docs/05-TEST-QA/Regression-SSoT.md`
|
|
134
|
+
- `docs/05-TEST-QA/Cadence-Ledger.md`
|
|
135
|
+
|
|
136
|
+
这些文件只有 coordinator pass 或显式 shared lock owner 能写。模块 worker 需要总表同步时,只在模块任务的
|
|
137
|
+
`progress.md` / `task_plan.md` 中写 `Coordinator Handoff`,状态使用
|
|
138
|
+
`pending-coordinator-pass`。这样模块分支不会互相抢同一张总表。
|
|
139
|
+
|
|
140
|
+
### AGENTS.md 必须包含的段落
|
|
141
|
+
|
|
142
|
+
```markdown
|
|
143
|
+
## 模块并行开发
|
|
144
|
+
|
|
145
|
+
本项目启用了模块并行开发。开始任何模块工作前:
|
|
146
|
+
|
|
147
|
+
1. 读 docs/09-PLANNING/Module-Registry.md 了解全局状态
|
|
148
|
+
2. 读 docs/09-PLANNING/MODULES/Session-Prompt-Pack.md 或目标模块的 session_prompt.md
|
|
149
|
+
3. 读目标模块的 docs/09-PLANNING/MODULES/<key>/module_plan.md
|
|
150
|
+
4. 在模块对应的 worktree 上工作
|
|
151
|
+
5. 不跨模块修改文件(不修改 write scope 之外的代码)
|
|
152
|
+
6. 如果作为 worker subagent 改代码/测试/文档,必须在 coordinator 分配的独立 worktree / branch 中工作,提交自己的 commit,并 handoff commit SHA / checks / residual risks
|
|
153
|
+
7. 会话结束时更新 module_plan.md 和模块任务的 Coordinator Handoff;Module Registry / Harness Ledger 是 coordinator-owned shared state,只能在 coordinator pass 或显式 shared lock 中更新
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
如果主 agent 作为 coordinator 启动多个模块 worker,禁止让它们共享 coordinator 当前 checkout。
|
|
157
|
+
每个 worker 必须有自己的模块 worktree 或任务 worktree;coordinator 只集成 worker commits。
|
|
158
|
+
|
|
159
|
+
## 发布打包
|
|
160
|
+
|
|
161
|
+
对 solo-orchestrator:
|
|
162
|
+
|
|
163
|
+
- 发布 = git tag + merge 到 main 的一批模块步骤
|
|
164
|
+
- 在 git tag message 中列出包含的步骤 ID
|
|
165
|
+
- 示例:`git tag -a v0.3.0 -m "Release 3: RDR-01, RDR-02, GRF-01, MOT-01"`
|
|
166
|
+
- 如需更正式的发布管理,可选创建 `docs/09-PLANNING/releases/` 目录
|
|
167
|
+
|
|
168
|
+
## 共享文件冲突规则
|
|
169
|
+
|
|
170
|
+
### Write Scope 声明
|
|
171
|
+
|
|
172
|
+
每个模块必须在 Module Registry 中声明 write scope(可修改的目录/文件范围)。
|
|
173
|
+
|
|
174
|
+
### 硬规则
|
|
175
|
+
|
|
176
|
+
如果两个模块的 write scope 有交集,必须在开发前解决。解决方式三选一:
|
|
177
|
+
|
|
178
|
+
1. **串行**:有交集的步骤不同时开发,一个完成后另一个再开始
|
|
179
|
+
2. **指定 owner**:将共享文件的修改权归属一个模块,另一个模块不碰
|
|
180
|
+
3. **提取**:将共享文件提取为独立的 `_shared` 模块或基础设施 task
|
|
181
|
+
|
|
182
|
+
### 共享基础设施
|
|
183
|
+
|
|
184
|
+
shell、data layer、design system 等共享基础设施的修改:
|
|
185
|
+
- 不属于任何模块
|
|
186
|
+
- 走独立的"基础设施 task"(见下文)
|
|
187
|
+
- 修改期间,其他模块暂停对该区域的修改
|
|
188
|
+
|
|
189
|
+
最小协调产物:
|
|
190
|
+
|
|
191
|
+
- `_shared` task:`docs/09-PLANNING/MODULES/_shared/TASKS/<id>/task_plan.md`
|
|
192
|
+
- 或模块 task_plan 中的 `Shared Coordination` 段落,必须写明 owner、touched files、allowed change、reviewer、merge order。
|
|
193
|
+
|
|
194
|
+
Module Registry 本身也是 shared lock。活跃模块会话默认更新自己的 module_plan 和 TASKS;Registry 的 Current Step / Status 只在持锁或 coordinator pass 中更新,避免多个会话同时改同一个表。
|
|
195
|
+
|
|
196
|
+
Checker 必须反向扫描模块任务目录:
|
|
197
|
+
|
|
198
|
+
- 模块任务必须被本模块 `module_plan.md` 索引。
|
|
199
|
+
- 普通模块 worker 分支上,如果全局总表尚未同步,必须在任务文件里留下 `Coordinator Handoff: pending-coordinator-pass`。
|
|
200
|
+
- coordinator 集成 pass 必须清掉 pending handoff,并同步 `Module-Registry.md`、`Harness-Ledger.md`、必要的 Closeout / Regression 表。
|
|
201
|
+
- 最终集成门禁可启用严格模式,要求活跃模块任务已经完成全局总表同步。
|
|
202
|
+
|
|
203
|
+
严格模式命令:
|
|
204
|
+
|
|
205
|
+
```bash
|
|
206
|
+
HARNESS_REQUIRE_GLOBAL_MODULE_SYNC=1 node scripts/check-harness.mjs <repo-path>
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
这条规则的目的不是让每个 worker 都改总表,而是让总表同步变成单一 owner 的串行步骤。
|
|
210
|
+
|
|
211
|
+
## 跨模块重构
|
|
212
|
+
|
|
213
|
+
当需要修改多个模块共享的代码(如改 shared type、重命名 utility)时:
|
|
214
|
+
|
|
215
|
+
1. 不走模块 worktree
|
|
216
|
+
2. 在主干上开普通 task worktree(命名:`refactor/<name>`)
|
|
217
|
+
3. 完成后 merge 回主干
|
|
218
|
+
4. 各模块 worktree rebase 到最新主干
|
|
219
|
+
5. 可选:在 Module Registry 标注 `infra-task-pending: true`,提醒各模块会话 rebase
|
|
220
|
+
|
|
221
|
+
基础设施 task 的文件放在 `docs/09-PLANNING/MODULES/_shared/TASKS/` 下。
|
|
222
|
+
|
|
223
|
+
## 模块级 Worktree
|
|
224
|
+
|
|
225
|
+
每个模块对应一个长期 worktree:
|
|
226
|
+
|
|
227
|
+
- 命名:`codex/<module-key>`(如 `codex/reader`、`codex/graph`)
|
|
228
|
+
- 生命周期:模块活跃期间持续存在,不在每个步骤后删除
|
|
229
|
+
- 步骤在模块 worktree 内顺序执行,每个步骤完成后提交并推送
|
|
230
|
+
|
|
231
|
+
### Merge 策略
|
|
232
|
+
|
|
233
|
+
项目级决定,二选一:
|
|
234
|
+
|
|
235
|
+
- **频繁合并**:每个步骤完成后 merge 回 main。divergence 小,冲突少。适合 solo-orchestrator(main 上有半成品不影响他人)。
|
|
236
|
+
- **批量合并**:所有步骤完成后一次性 merge。main 始终是完整功能。适合有 CI/CD 发布流水线绑定 main 的项目。
|
|
237
|
+
|
|
238
|
+
### 定期 Rebase
|
|
239
|
+
|
|
240
|
+
无论哪种策略,模块 worktree 应定期 rebase 到最新 main:
|
|
241
|
+
- 建议频率:每周一次,或每次基础设施 task 完成后
|
|
242
|
+
- 目的:避免 divergence 过大导致 merge 困难
|
|
243
|
+
|
|
244
|
+
## 与 Feature SSoT 的分工
|
|
245
|
+
|
|
246
|
+
启用模块并行后:
|
|
247
|
+
|
|
248
|
+
- **Module Registry + module_plan.md** 追踪模块内步骤进度
|
|
249
|
+
- **Feature SSoT** 只追踪:
|
|
250
|
+
- 不属于任何模块的独立功能
|
|
251
|
+
- 发布级汇总(哪个 release 包含了哪些模块步骤)
|
|
252
|
+
|
|
253
|
+
**禁止**:同一个工作项同时出现在 module_plan 和 Feature SSoT 中。
|
|
254
|
+
|
|
255
|
+
切换时必须收缩 Feature SSoT:
|
|
256
|
+
|
|
257
|
+
- Feature SSoT Active 表只保留非模块、未完成、仍需操作的 feature。
|
|
258
|
+
- Phase 历史和 completed 明细移到 `docs/09-PLANNING/_archive/<feature-ssot-name>-phase-<range>.md`。
|
|
259
|
+
- Feature SSoT 主文件保留 freeze notice、当前 active 指针、completed summary、archive index。
|
|
260
|
+
- 不允许把历史大表留在 Feature SSoT 主文件底部作为"文件内归档";这会让 Active SSoT 继续膨胀。
|
|
261
|
+
|
|
262
|
+
## 归档与过期检测
|
|
263
|
+
|
|
264
|
+
### 归档
|
|
265
|
+
|
|
266
|
+
- 模块所有步骤完成后,状态改为 `completed`
|
|
267
|
+
- 将模块目录移入 `docs/09-PLANNING/MODULES/_archive/<key>/`
|
|
268
|
+
- 对应的 walkthrough 保留在 `docs/10-WALKTHROUGH/<key>/`(不归档)
|
|
269
|
+
|
|
270
|
+
### 过期检测
|
|
271
|
+
|
|
272
|
+
- 如果模块 Updated 字段超过 30 天未更新:checker 发出 warning
|
|
273
|
+
- 超过 60 天未更新:建议标记为 `paused`
|
|
274
|
+
- `paused` 模块可随时恢复为 `in-progress`
|
|
275
|
+
|
|
276
|
+
## 从线性 Phase 迁移
|
|
277
|
+
|
|
278
|
+
对已有线性 Phase 历史的项目:
|
|
279
|
+
|
|
280
|
+
1. 冻结 Feature SSoT 当前状态,标注"后续工作按模块推进"
|
|
281
|
+
2. 将 Feature SSoT 的历史 completed 明细移入 `docs/09-PLANNING/_archive/`,主文件只保留 active 指针、summary 和 archive index
|
|
282
|
+
3. 将历史 `docs/09-PLANNING/TASKS/` 移入 `docs/09-PLANNING/_archive/`
|
|
283
|
+
4. 将历史 walkthrough 移入 `docs/10-WALKTHROUGH/_archive/`
|
|
284
|
+
5. 从最后一个 Phase 的未完成项中识别模块
|
|
285
|
+
6. 创建 Module Registry 和各模块的 module_plan.md
|
|
286
|
+
7. 创建 Module Session Prompt Pack 或每模块 `session_prompt.md`
|
|
287
|
+
8. 定义切换日期,此后不再创建新 Phase
|
|
288
|
+
|
|
289
|
+
不做的事:
|
|
290
|
+
- 不回溯重写历史 Ledger 条目
|
|
291
|
+
- 不删除现有 Feature SSoT
|
|
292
|
+
- 不强制已完成的 Phase 工作重新归类
|