@haaaiawd/anws 2.2.3 → 2.2.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.
@@ -27,7 +27,7 @@
27
27
  - **文档即合约** — 规范文档是不可违反的权威
28
28
  - **波次执行** — 每波 2-5 个任务,加载→编码→验证→提交
29
29
  - **遇疑则停** — 发现问题立即停止,不猜不赶
30
- - **签名机制** — 每次波次开始都要经过检查点;普通模式由用户签名,`/forge自动` 模式记为 `AUTO`
30
+ - **签名机制** — 每次波次开始都要经过检查点;**普通模式**下须用户**逐波批准**任务组合后方可编码,`/forge自动` 模式以 `AUTO` 代签连续推进(见 Step 1 **模式边界**)
31
31
 
32
32
  **与用户的关系**:
33
33
  你是用户的**忠实执行者**,不是自由发挥的创造者。
@@ -37,23 +37,23 @@
37
37
  ## CRITICAL 权限边界
38
38
 
39
39
  > [!IMPORTANT]
40
- > **`/forge` 的权限严格限定**:
40
+ > `**/forge` 的权限严格限定**:
41
41
  >
42
42
  >
43
- > | 能力 | 允许 | 禁止 |
44
- > | --------------------------- | --- | --- |
45
- > | 在 `src/` 下编写业务代码 | 是 | |
46
- > | 编写单元测试 | 是 | |
47
- > | 更新 `05_TASKS.md` 的 checkbox | 是 | |
48
- > | 运行测试和 lint | 是 | |
49
- > | Git commit 已完成的任务 | 是 | |
50
- > | 更新 `AGENTS.md` 当前状态 | 是 | |
51
- > | **修改 `.anws/` 下任何设计文档** | | |
52
- > | **创建 TASKS.md 中不存在的功能** | | |
53
- > | **降级或跳过验收标准** | | 是 |
54
- > | **引入 ADR 未批准的第三方依赖** | | 是 |
55
- > | **修改已有代码的公共接口(除非任务明确要求)** | | 是 |
56
- > | **"顺便"优化/重构不在任务范围内的代码** | | |
43
+ > | 能力 | 允许 | 禁止 |
44
+ > | ---------------------------- | --- | --- |
45
+ > | 在 `src/` 下编写业务代码 | 是 | |
46
+ > | 编写单元测试 | 是 | |
47
+ > | 更新 `05A_TASKS.md` 的 checkbox | 是 | |
48
+ > | 运行测试和 lint | 是 | |
49
+ > | Git commit 已完成的任务 | 是 | |
50
+ > | 更新 `AGENTS.md` 当前状态 | 是 | |
51
+ > | **修改 `.anws/` 下任何设计文档** | | 是 |
52
+ > | **创建 05A_TASKS.md 中不存在的功能** | | 是 |
53
+ > | **降级或跳过验收标准** | | 是 |
54
+ > | **引入 ADR 未批准的第三方依赖** | | 是 |
55
+ > | **修改已有代码的公共接口(除非任务明确要求)** | | 是 |
56
+ > | **"顺便"优化/重构不在任务范围内的代码** | | 是 |
57
57
  >
58
58
 
59
59
  ---
@@ -78,15 +78,15 @@
78
78
  > **以下情况必须立即停止编码,报告用户**:
79
79
  >
80
80
  >
81
- > | 冲突类型 | 处理方式 |
82
- > | ---------------------- | ----------------------------------- |
83
- > | 文档之间互相矛盾 | 停止 → 列出矛盾点 → 用户通过 `/change` 修复 |
84
- > | 任务描述模糊/不完整 | 停止 → 列出疑问 → 用户确认或通过 `/change` 补充 |
85
- > | 依赖的前置任务产物与预期不符 | 停止 → 报告差异 → 用户决定 |
86
- > | 发现设计不可实现 | 停止 → 记录原因 → 建议用户运行 `/challenge` |
87
- > | 需要 ADR 未批准的新依赖 | 停止 → 说明理由 → 用户决定是否创建新 ADR |
88
- > | 需要的系统设计文档不存在 | 停止 → 引导用户运行 `/design-system` |
89
- > | **发现未定义但必须新增/修改的公共契约** | 停止 → 生成回流说明 → 跳转 `/change` |
81
+ > | 冲突类型 | 处理方式 |
82
+ > | ---------------------- | -------------------------------- |
83
+ > | 文档之间互相矛盾 | 停止 → 列出矛盾点 → 用户通过 `/change` 修复 |
84
+ > | 任务描述模糊/不完整 | 停止 → 列出疑问 → 用户确认或通过 `/change` 补充 |
85
+ > | 依赖的前置任务产物与预期不符 | 停止 → 报告差异 → 用户决定 |
86
+ > | 发现设计不可实现 | 停止 → 记录原因 → 建议用户运行 `/challenge` |
87
+ > | 需要 ADR 未批准的新依赖 | 停止 → 说明理由 → 用户决定是否创建新 ADR |
88
+ > | 需要的系统设计文档不存在 | 停止 → 引导用户运行 `/design-system` |
89
+ > | **发现未定义但必须新增/修改的公共契约** | 停止 → 生成回流说明 → 跳转 `/change` |
90
90
  >
91
91
  >
92
92
  > **核心原则: 宁可停下来问,也不要猜测。**
@@ -104,20 +104,17 @@
104
104
  3. **检查必需文件**:
105
105
  - `{TARGET_DIR}/01_PRD.md` 存在
106
106
  - `{TARGET_DIR}/02_ARCHITECTURE_OVERVIEW.md` 存在
107
- - `{TARGET_DIR}/05_TASKS.md` 存在
107
+ - `{TARGET_DIR}/05A_TASKS.md` 存在
108
+ - `{TARGET_DIR}/05B_VERIFICATION_PLAN.md` 存在
108
109
  4. **检查推荐文件** (缺失则警告):
109
110
  - `{TARGET_DIR}/04_SYSTEM_DESIGN/` 存在且非空
110
111
  - 如缺失: " 建议先运行 `/design-system`。缺少详细设计可能导致实现质量下降。"
111
112
  5. **如果必需文件缺失**: 报错并提示运行 `/genesis` + `/blueprint`。
112
- 6. **Challenge 门禁检查**:
113
- - 如果 `{TARGET_DIR}/07_CHALLENGE_REPORT.md` 存在,必须先读取最新审查结果
114
- - 如存在**未处理 Critical** → **立即阻塞**,不得进入 `/forge`
115
- - 如存在**未处理 High** → 仅允许用户显式签名放行;AUTO 模式不得自动通过
116
- - 如无未处理高严重度问题 → 继续
113
+ 6. `**07_CHALLENGE_REPORT.md`(若存在)**:先读结论;有未闭环 Critical → 停止,不得进入本工作流后续编码步骤;有未闭环 High → 仅用户显式放行(AUTO 不可替代);其余继续。门禁语义与 `**/challenge`** 一致,**不在此重复展开**。
117
114
  7. **断点续做判定**:
118
115
  - 读取 `AGENTS.md` 的 `Wave` 块
119
116
  - 如果存在波次信息:
120
- - 查看波次任务列表,对照 `05_TASKS.md` 中的 checkbox
117
+ - 查看波次任务列表,对照 `05A_TASKS.md` 中的 checkbox
121
118
  - 如有未完成任务 → **断点续做** → 跳入 Step 3 继续未完成的任务
122
119
  - 如全部完成 → **新波次** → 继续 Step 1
123
120
  - 如果不存在 → **新开始** → 继续 Step 1
@@ -133,12 +130,15 @@
133
130
  - 如当前已在 `feature/`* 且仍属于同一交付主题 → 继续在当前 branch 上推进,不因补任务、补契约、补测试而反复新开分支
134
131
  - 如当前已在 `feature/`* 且主题未变,即使经历 `/change` 回流,也继续使用同一条分支
135
132
  - 只有 `/genesis` 触发、版本前提变化时,旧 `feature/`* 才冻结;新版本应从最新 `main` 重新开一条新的 `feature/`*
136
- - 如进入 `/change` 前需要保护点,可先在当前 `feature/*` 上创建 checkpoint commit:`checkpoint: before {topic}`
133
+ - 如进入 `/change` 前需要保护点,可先在当前 `feature/`* 上创建 checkpoint commit:`checkpoint: before {topic}`
137
134
 
138
135
  > [!IMPORTANT]
139
136
  > **Git 判断口诀**:
140
137
  > 同主题就不换分支,`/change` 不换分支,`/genesis` 才换分支;开发都在 `feature/`*,稳定结果才进 `main`,tag 只打 `main`。
141
138
 
139
+ > [!IMPORTANT]
140
+ > **AUTO 与在场性**:一旦判定为 **AUTO 模式**,默认用户**可能不在屏幕前**(喝咖啡、休息等)。除 **Step 0** 中 `**07_CHALLENGE_REPORT` Critical 未闭环**、**§3.4.5 波末 `code-reviewer` 硬阻塞**、任务 **手动验证**须用户终局确认、以及 **Step 4.4「AUTO 必须停下」** 所列情形外,**不要**再就「是否确认本波任务组合」「是否继续下一波」等向用户发问;展示 Wave 建议后以 `**AUTO`** 假名签署并进入 **Step 2**。需要人类随队微调波次请用**普通模式**。
141
+
142
142
  ---
143
143
 
144
144
  ## Step 1: 波次规划 (Wave Planning)
@@ -146,13 +146,16 @@
146
146
  **目标**: 从任务清单中挑选一组可执行的任务,组成一个"波次"。
147
147
 
148
148
  > [!IMPORTANT]
149
- > **你不能自己决定波次内容,必须在检查点获得签名后再开始。**
149
+ > **模式边界(CRITICAL)**
150
+ >
151
+ > - **普通模式(默认)**:与既有协议一致——**每一波**在 Step 1 **展示 Wave 建议 → 用户确认并批准本波任务组合(签名)→** 再写入 `AGENTS.md` 的 `Wave` 块,然后进入 **Step 2**;Step 4 结算后若仍有未完成任务,**下一波**仍须回到 Step 1 **再次**展示并**等待用户批准**,不得在未经批准时开工下一波。Step 4.4 的「不问是否继续」**仅适用于 AUTO**,**不**削弱普通模式的逐波批准权。
152
+ > - **AUTO 模式**(`/forge自动` 或用户明确要求自动连续推进):检查点逻辑仍在,但签名人记为 `AUTO`;**不得**为「波次是否满意」「是否继续下一波」发起闲聊式确认(见 **Step 0「AUTO 与在场性」**、**Step 4.4**)。
150
153
  >
151
- > **为什么?** 用户对项目优先级和进度节奏有最终决定权;`/forge自动` 只是把签名从用户改为 `AUTO`,不是删除检查点。
154
+ > **为什么?** 优先级与任务边界须可审计;普通模式由人**逐波把关**,AUTO 则由硬性停止条件顶替「人在场」的口头确认。
152
155
 
153
156
  ### 1.1 扫描可执行任务
154
157
 
155
- 读取 `{TARGET_DIR}/05_TASKS.md`,找出所有满足以下条件的任务:
158
+ 读取 `{TARGET_DIR}/05A_TASKS.md`,找出所有满足以下条件的任务:
156
159
 
157
160
  - `- [ ]` 未完成
158
161
  - 依赖的任务(`**依赖`** 字段)均已完成 `- [x]`
@@ -194,12 +197,10 @@
194
197
  T{X.Y.Z}, T{X.Y.Z}, T{X.Y.Z}
195
198
  ```
196
199
 
197
- 然后进入 Step 2。
200
+ 签名规则(与 **模式边界** 一致):
198
201
 
199
- 签名规则:
200
-
201
- - 普通模式 → 等待用户签名
202
- - AUTO 模式 → 保留波次展示,并将签名记为 `AUTO` 后继续执行
202
+ - **普通模式** → 用户**明示批准**本波 Wave(可对任务组合提出调整,定稿后再签)→ 写入 `AGENTS.md` `Wave` 块 → 进入 **Step 2**。**禁止**在用户未批准前写入 Wave 或进入 Step 2/3。
203
+ - **AUTO 模式** → 展示 Wave 建议后**立即**将本波记为 `AUTO` 签入并进入 **Step 2**(**不得**为「确认组合是否满意」再打断用户)。
203
204
 
204
205
  ---
205
206
 
@@ -215,12 +216,12 @@ T{X.Y.Z}, T{X.Y.Z}, T{X.Y.Z}
215
216
  ### 加载层级
216
217
 
217
218
 
218
- | 层级 | 内容 | 目的 |
219
- | ------------ | ------------------------------------------------------ | ---------- |
220
- | **L0 全局** | `02_ARCHITECTURE_OVERVIEW.md` 仅系统清单和总体架构图部分 | 定位感 |
221
- | **L1 波级** | 本波涉及系统的 `04_SYSTEM_DESIGN/{system}.md`(L0 导航层)+ 相关 ADR | 设计规范、接口契约 |
222
- | **L1.5 实现级** | 本波任务 `**输入`** 字段中明确引用的 `{system}.detail.md` **对应 §章节** | 算法伪代码、配置常量 |
223
- | **L2 任务级** | 每个任务的 `**输入`** 字段指定的精确文档章节 | 实现细节 |
219
+ | 层级 | 内容 | 目的 |
220
+ | ------------ | ----------------------------------------------------------------- | ----------- |
221
+ | **L0 全局** | `02_ARCHITECTURE_OVERVIEW.md` + `05B_VERIFICATION_PLAN.md`(目录/索引) | 任务定位 + 验证定位 |
222
+ | **L1 波级** | 本波涉及系统的 `04_SYSTEM_DESIGN/{system}.md`(L0 导航层)+ 相关 ADR | 设计规范、接口契约 |
223
+ | **L1.5 实现级** | 本波任务 `**输入`** 字段中明确引用的 `{system}.detail.md` **对应 §章节** | 算法伪代码、配置常量 |
224
+ | **L2 任务级** | 每个任务的 `**输入`** 字段指定的精确文档章节 | 实现细节 |
224
225
 
225
226
 
226
227
  > [!IMPORTANT]
@@ -240,23 +241,37 @@ T{X.Y.Z}, T{X.Y.Z}, T{X.Y.Z}
240
241
  2. **L1**: 根据本波任务涉及的系统,读取对应的:
241
242
  - `{TARGET_DIR}/04_SYSTEM_DESIGN/{system-id}.md`
242
243
  - `{TARGET_DIR}/03_ADR/` 中相关的 ADR(由任务的"输入"字段指引)
244
+ 3. **L2 验证输入**: 读取 `05B_VERIFICATION_PLAN.md` 中与本波任务相关的章节(按 Task ID 或验证引用定位)
243
245
 
244
246
  ---
245
247
 
246
248
  ## Step 3: 任务执行循环 (Task Execution Loop)
247
249
 
248
- **目标**: 逐个完成波次内的任务:思考→编码→验证→提交。
250
+ **目标**: 逐个完成波次内任务(思考→编码→验证→提交)。
249
251
 
250
252
  > [!IMPORTANT]
251
253
  > **严格按以下流程执行每个任务,不跳步。**
252
254
 
253
- 对本波次中的每个任务,执行以下循环:
255
+ ### Wave 内建结构(Wave = 逐任务循环 + 波末合拢)
256
+
257
+ 把 **一次 Wave** 视为 **逐任务循环(阶段 A)+ 末任务波末合拢(阶段 B)**(**未完成不得进入 Step 4**):
258
+
259
+
260
+ | 阶段 | 内容 | 完成判据 |
261
+ | ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- |
262
+ | **A. 逐任务循环** | **非末任务**:**§3.1 → §3.6**(含 §3.4,**不**跑 §3.4.5 / §3.4.6 / §3.4.5.1)。**末任务**:**§3.1 → §3.4** → **§3.4.5** → **§3.4.6** → **§3.4.5.1** → **§3.6** | 每任务验收与 commit 已落地;`05A_TASKS.md` 已回写;末任务后 **§3.4.5 / §3.4.6 / §3.4.5.1** 已闭环或可豁免 |
263
+ | **B. 波末合拢** | 仅 **本波最后一项任务**:**§3.4.5**(`code-reviewer`)→ **§3.4.6** → **§3.4.5.1**(极简交付索引)→ **§3.6** | 与 **Step 4 §4.0** 同一门禁 |
264
+
265
+
266
+ > **一句**:`**code-reviewer` 正文**以 `**code-reviewer`** skill 为准(与 `**/challenge**` 共用);**§3.4.5.1** 仅为 `**/forge` 极简交付索引表**,**不得**替代 skill 报告体。
267
+
268
+ 对本波次中的每个任务,执行以下循环(阶段 A / B 见上表):
254
269
 
255
270
  ---
256
271
 
257
272
  ### 3.1 加载任务级上下文
258
273
 
259
- 读取该任务 `**输入`** 字段指定的文档和章节。
274
+ 读取该任务 `**输入`** 字段指定的文档和章节,并同步读取 `05B_VERIFICATION_PLAN.md` 中该任务的验证章节(Task ID / 验证引用)。
260
275
  如果任务依赖已完成的前置任务,浏览相关已有代码了解接口。
261
276
 
262
277
  > [!IMPORTANT]
@@ -321,14 +336,14 @@ T{X.Y.Z}, T{X.Y.Z}, T{X.Y.Z}
321
336
 
322
337
  ### 3.4 验证 (Verify)
323
338
 
324
- **根据任务的验证类型执行相应验证**,并按类型分类证据:
339
+ **根据任务的验证类型执行相应验证**,并与 `05B_VERIFICATION_PLAN.md` 中的验证方法与证据要求对齐:
325
340
 
326
341
  > [!IMPORTANT]
327
342
  > **验证类型决定验证方式和证据要求**:
328
343
  >
329
344
  >
330
- > | 验证类型 | 验证方式 | 证据要求 | 标记 |
331
- > | ---------- | ------------------------ | ------------------------- | --- |
345
+ > | 验证类型 | 验证方式 | 证据要求 | 标记 |
346
+ > | ---------- | ------------------------ | ------------------------- | ------ |
332
347
  > | **单元测试** | 运行 `npm test` 或等效命令 | 终端输出:`X passed, 0 failed` | 通过/未通过 |
333
348
  > | **集成测试** | 运行集成测试脚本 | 终端输出或日志 | 通过/未通过 |
334
349
  > | **E2E测试** | 运行 E2E 测试脚本 | 测试报告或截图 | 通过/未通过 |
@@ -336,7 +351,7 @@ T{X.Y.Z}, T{X.Y.Z}, T{X.Y.Z}
336
351
  > | **回归测试** | 运行受影响能力的最小回归测试集 | 明确列出复验范围 + 测试输出 | 通过/未通过 |
337
352
  > | **编译检查** | 运行 `npm run build` 或等效命令 | 终端输出:`Build succeeded` | 通过/未通过 |
338
353
  > | **Lint检查** | 运行 `npm run lint` 或等效命令 | 终端输出:`0 problems` | 通过/未通过 |
339
- > | **手动验证** | 人工检查 | 用户确认 | 待确认 |
354
+ > | **手动验证** | 人工检查 | 用户确认 | 待确认 |
340
355
  >
341
356
 
342
357
  ```markdown
@@ -366,70 +381,53 @@ T{X.Y.Z}, T{X.Y.Z}, T{X.Y.Z}
366
381
  > - 若任务声明了冒烟测试或回归测试,但 `验证说明` 无法指导执行,应视为验证定义不完整,先修任务定义或回流 `/change`
367
382
 
368
383
  - 若任一自动验证类型未通过 → **修复后重新验证**,不得跳过
369
- - 若全部自动验证类型通过 → 按下方 **「3.4.5 / 3.4.6 频控」** 决定是否在本任务执行 **3.4.5 / 3.4.6**,然后进入 **3.5 → 3.6**。跳过或顺延须在任务备注 / Wave 记录中写明依据(与对应 **skill** 的跳过协议一致)。
384
+ - 若全部自动验证类型通过:
385
+ - **非本波最后一个任务** → **3.6**(不在此执行 **§3.4.5 / §3.4.6 / §3.4.5.1**)。
386
+ - **本波最后一个任务** → **§3.4.5(见下)** → **§3.4.6(见下)** → **§3.4.5.1(见下)** → **3.6**。
370
387
 
371
- ### 3.4.5 / 3.4.6 频控(默认)
388
+ ### 3.4.5 波末静态审查(`code-reviewer`)
372
389
 
373
- > [!IMPORTANT]
374
- > **`code-reviewer`(3.4.5)默认不在每个任务后强制执行**(避免噪声与上下文浪费)。**`e2e-testing-guide`(3.4.6)** 的触发与 **3.4.5 频控相互独立** — UI/E2E 类任务只要 skill 触发就应执行 3.4.6,即使不是 Wave 最后一个任务。
375
- >
376
- > **3.4.5(`code-reviewer`)默认节奏**:
377
- >
378
- > - **主路径**:在本 **Wave** 的 **最后一个任务** 完成 3.4 的自动验证后,集中执行 **一次** 3.4.5(审查范围为本 Wave 已落地变更)。
379
- > - **Wave 内较早的任务**:通常 **跳过** 3.4.5,直接进入 **3.5 → 3.6**;若跳过,在任务或 Wave 备注标注依据(如 `3.4.5 deferred — wave cadence`)。
380
- > - **兜底**:若已连续 **约 2~3 个 Wave** 未执行 3.4.5,应在下一 Wave **Step 1** 之前或上一 Wave **Step 4** 末尾 **补跑一次**(范围与证据见 skill)。
381
- > - **例外**(可改为本任务后立即跑 3.4.5):任务/用户显式要求 **逐任务静态审查**;**公共契约高风险**;**`/forge自动` 长会话**需加密审查 — 仍须服从 **`code-reviewer` skill** 的跳过/加密协议。
382
- >
383
- > **3.4.6(`e2e-testing-guide`)与浏览器工具**:
384
- >
385
- > - 未触发 skill → 跳过 + 一行原因 → **3.5**。
386
- > - **具备浏览器自动化能力时**:按 skill — **先** 产出/对齐 Testing Guide,**再在用户授权下** 执行真实浏览器步骤。
387
- > - **无浏览器工具**:**guide-only**,不得在无证据时声称 E2E/冒烟已通过。
388
-
389
- ---
390
+ **时机**:**仅本波最后一个任务**,且该任务 **§3.4**(自动侧)已全部通过之后、**§3.4.6** 之前。
390
391
 
391
- ### 3.4.5 静态忠实度审查 (Code Fidelity Check)
392
+ 完整遵从 `**code-reviewer`** skill 写**审查全文**(Lens、证据规则与 `**/challenge`** 共用,**不得**因挂在 `/forge` 而删减 skill 要求);宿主有子代理时 **优先**委派。
392
393
 
393
- (按频控:本任务执行;或顺延至 Wave 最后一个任务 / 兜底补跑 见上。)
394
+ **仅以下可豁免(须落盘于 Wave 备注或等同位)**:用户明示「不做 code review / 跳过一切 `code-reviewer`」→ 标 `**CODE_REVIEW_DISABLED_BY_USER`**。
394
395
 
395
- 完整遵从 `**code-reviewer`** skill(输入、Lens、输出、跳过协议均以 skill 为准)。
396
+ **门禁路由**:Critical / High skill → `**/change`** / `**/genesis`**;未解决 blocking 前 不得 进入 §3.4.6、**§3.4.5.1** 与 **§3.6**(**含 AUTO**,须停)。
396
397
 
397
- **执行方式**:宿主支持子代理(Task / 并行会话等)时 **优先**委派子代理执行本小节;若无子代理能力,则由**当前会话**按同一 skill 执行(不得以无子代理为由缩水审查)。
398
+ ### 3.4.6 波末 E2E(写死:`e2e-testing-guide` 浏览器)
398
399
 
399
- **门禁路由**:Critical / High → 当前版本内可收敛则 **`/change`**;撼动需求/架构/ADR 前提则 **`/genesis`**。无阻塞 → **3.4.6**(若触发)或 **3.5**。
400
+ **仅**在 **本波最后一个任务**、且 **§3.4.5** 已满足或可豁免之后执行。此处**不再**重复跑 `**code-reviewer`**。
400
401
 
401
- ---
402
+ 1. 若本波 `05A_TASKS.md` 中**任一**任务含 **E2E测试** 或 **手动验证**(或等价须实机 UI 的验收),或 `05B_VERIFICATION_PLAN.md` 明确要求实机验证:
403
+ - **必须**提示用户二选一(除非用户已预先声明):
404
+ - **收尾 A**:本轮依赖 **§3.4.5** 已完成的 `**code-reviewer`**(或合法豁免)+ 本任务 §3.4,不再跑 E2E 报告与浏览器;若仍残留 UI 类验收未测,须在 Wave/会话备注写明**风险与原因**。
405
+ - **收尾 B**:**先** 严格按 `**e2e-testing-guide`** skill **只写**《E2E Verification》指南与表格(报告骨架与三档评测含义以 skill **Required output** 内 `<!-- -->` 注释为准:**仅** `PASS` / `PARTIAL_PASS` / `FAIL`);**再** 在用户授权下用宿主 **浏览器工具** 按报告逐步执行,并把 **Evidence / 各 verdict 列** 回填。
406
+ 2. 若本波**无**上述验证类型 → 一行 `§3.4.6 skipped — no E2E/manual in wave`(仍须进入 **§3.4.5.1**)。
407
+ 3. **无浏览器工具**:只交付 skill 文档,标注 `guide-only`,不得声称已完成实机 `PASS`。
402
408
 
403
- ### 3.4.6 浏览器与 E2E 验证指南
409
+ ### 3.4.5.1 `/forge` 极简交付索引(非 `code-reviewer` 报告)
404
410
 
405
- 完整遵从 `**e2e-testing-guide`** skill(触发条件、guide-only、证据规则均以 skill 为准)。
411
+ **时机**:**§3.4.6** 之后、**§3.6 提交** 之前(仅末任务路径)。
406
412
 
407
- 验证以**用户旅程**为主线:步骤、断言、证据与 `PASS` / `FAIL` / `BLOCKED` / `NOT RUN` 状态规则均以 skill 为准。
408
-
409
- 若宿主具备浏览器自动化:**先 Guide、后实机(用户授权)**;无工具则 guide-only,不得冒充已测。
410
-
411
- 未触发 → `E2E guide skipped` + 一行原因 → **3.5**。
412
-
413
- ---
414
-
415
- ### 3.5 遵从性检查 (Compliance Check)
416
-
417
- **检查清单** (每条都要回答):
418
-
419
-
420
- | # | 检查项 | 通过? |
421
- | --- | ------------------------- | --- |
422
- | 1 | 代码接口与 SYSTEM_DESIGN 定义一致? | 是/否 |
423
- | 2 | 未引入 ADR 未批准的依赖? | 是/否 |
424
- | 3 | 未添加任务范围外的功能? | 是/否 |
425
- | 4 | 代码风格与项目一致,lint 通过? | 是/否 |
426
- | 5 | 所有验收标准已验证通过? | 是/否 |
427
- | 6 | 所有可执行验收标准有足够证据(终端/日志/截图)? | 是/否 |
428
- | 7 | 需人工确认的验收标准已标记 ? | 是/否 |
413
+ **性质**:**不是**审查正文;**不得**用本表替代 `**code-reviewer`** skill 输出。本表仅为 `**/forge` 波次交付封面索引**(固定列,不扩写长文)。
429
414
 
415
+ ```markdown
416
+ ## Wave {N} 交付索引(/forge 极简)
417
+
418
+ | 项 | 值 |
419
+ | -- | -- |
420
+ | Wave | {N} |
421
+ | 任务 ID | T…, T… |
422
+ | 分支 @ HEAD | `feature/…` @ `<短 SHA>` |
423
+ | `code-reviewer` | 已执行 / 豁免:`CODE_REVIEW_DISABLED_BY_USER` |
424
+ | 审查正文索引 | 见上「code-reviewer」输出块标题或首行 / `N/A — USER_OPT_OUT` |
425
+ | §3.4.6 E2E | 已做 / 已跳过 / N/A |
426
+ | 本波可进 Step 4 | 是 / 否 |
427
+ ```
430
428
 
431
- - 若检查清单全部通过 → 继续 3.6
432
- - 若任一项未通过 **修复**
429
+ > [!IMPORTANT]
430
+ > **交付完整性**:**「本波可进 Step 4」= 是** 仅当:`code-reviewer` 已可溯源执行 **或** 已 `**CODE_REVIEW_DISABLED_BY_USER`**,且上表六行均已填写。否则视为**交付不完整**,**禁止**进入 **Step 4.1+**。**未**获用户明示前,**禁止** AI 自行省略 `**code-reviewer`**。
433
431
 
434
432
  ---
435
433
 
@@ -445,7 +443,7 @@ T{X.Y.Z}, T{X.Y.Z}, T{X.Y.Z}
445
443
  - 例: `fix(challenge): T4.2.3 — 严重度语义对齐`
446
444
  2. **任务完成持久化** (立即回写):
447
445
  > [!IMPORTANT]
448
- > **每完成一个 task 并通过验证,立即回写 `05_TASKS.md`**。
446
+ > **每完成一个 task 并通过验证,立即回写 `05A_TASKS.md`**。
449
447
  > 这是进度持久化的核心机制——即使 AI 上下文丢失或会话崩溃,
450
448
  > 下次加载 TASKS.md 就能看到精确进度。
451
449
  > 配合 AGENTS.md 的 Wave 块形成**双层恢复机制**: 粗粒度(Wave) + 细粒度(Task checkbox)。
@@ -453,7 +451,7 @@ T{X.Y.Z}, T{X.Y.Z}, T{X.Y.Z}
453
451
  - 仅按 **Task ID** 精确定位并更新状态,禁止按标题模糊匹配
454
452
  - 将对应任务的 `- [ ]` 改为 `- [x]`
455
453
  - 不得顺手修改未完成、未验证或不在当前波次内的任务
456
- - 确保回写后的 `05_TASKS.md` 与实际进度一致
454
+ - 确保回写后的 `05A_TASKS.md` 与实际进度一致
457
455
  3. **继续下一个任务** → 回到 3.1
458
456
 
459
457
  ---
@@ -462,6 +460,15 @@ T{X.Y.Z}, T{X.Y.Z}, T{X.Y.Z}
462
460
 
463
461
  **目标**: 结算本波次,更新状态,准备下一步。
464
462
 
463
+ ### 4.0 Wave 合拢门禁(硬)
464
+
465
+ 同时满足方可进入 **4.1+**:
466
+
467
+ 1. **§3.4.5 / §3.4.5.1 / §3.4.6**:**末任务**路径上 `**code-reviewer`** 已完成(可溯源)或 `**CODE_REVIEW_DISABLED_BY_USER`** 已落盘;**§3.4.6** 已按 **收尾 A/B** 处理或已跳过;**§3.4.5.1** 极简交付索引表已填且 **「本波可进 Step 4」= 是**。
468
+ 2. **Step 3**:本波内**全部**任务已完成,且 **§3.6**(每任务 commit + `05A_TASKS` 回写)已闭环。
469
+
470
+ **不满足 → 禁止**进入 **4.1 及之后**;回到 Step 3 补齐波末合拢。
471
+
465
472
  ### 4.1 更新状态
466
473
 
467
474
  **更新 `AGENTS.md`**:
@@ -477,15 +484,18 @@ T{X.Y.Z}, T{X.Y.Z}, T{X.Y.Z}
477
484
 
478
485
  ### 4.2 波次回顾
479
486
 
480
- 向用户简要汇报:
487
+ 向用户按 **Wave 完成模板**汇报(可与 `AGENTS.md` / 会话归档对齐);**须包含** **§3.4.5.1** 极简交付索引表(整表粘贴,**不**展开 `code-reviewer` 全文):
481
488
 
482
489
  ```markdown
483
- ## Wave {N} 完成
490
+ ## 🌊 Wave {N} 完成
484
491
 
485
492
  **已完成**: T{X.Y.Z}, T{X.Y.Z}, ...
486
493
  **验证状态**: 全部通过 / 部分通过
494
+ **Code review(检测与修复结果)**: 最高严重度:无 / Low / Medium / High / Critical;本波已修复:…;残留待跟进:无 / …(**审查正文索引**:§3.4.5 输出块标题或首行;若豁免写 `CODE_REVIEW_DISABLED_BY_USER`)
487
495
  **发现的问题** (如有): ...
488
496
  **阻塞项** (如有): ...
497
+
498
+ (粘贴 §3.4.5.1「Wave {N} 交付索引」表)
489
499
  ```
490
500
 
491
501
  ### 4.3 Git commit 状态更新
@@ -502,16 +512,17 @@ chore(wave): settle wave {N} progress
502
512
 
503
513
  **签名检查点** :
504
514
 
505
- - 还有未完成任务 → 询问:"继续下一波?";普通模式等待用户签名,AUTO 模式以 `AUTO` 签名继续 → 回到 **Step 1**
515
+ - 还有未完成任务 → **普通模式**:展示下一波 Wave 建议并等待用户签名 → 回到 **Step 1**。**AUTO 模式**:**不得**再问「是否继续下一波」— 直接回到 **Step 1** 并以 `**AUTO`** 签署下一波(展示 Wave 建议即可)。
506
516
  - 当前 Sprint 所有任务完成 → 进入 **Step 5**
507
517
  - 有阻塞问题 → 引导用户运行相应工作流修复
508
518
 
509
519
  > [!IMPORTANT]
510
- > **AUTO 模式的停止条件**:
520
+ > **AUTO 模式的停止条件**(**仅**以下及上文已声明的等价硬阻塞;**不得**扩展为「征求意见」式停顿):
511
521
  >
512
522
  > - 命中手动验证且需要用户最终确认
513
523
  > - `/change` 评估后发现必须升级到 `/genesis`
514
524
  > - 其他工作流要求用户作出新的版本级决定
525
+ > - **§3.4.5 波末 `code-reviewer`** 产出未解决的 **Critical / High**,且无法在本会话内按 skill 收窄为可执行修复路径(须走 `**/change`** / `**/genesis`** 或用户显式承担风险—**未显式承担则停**)
515
526
  >
516
527
  > 命中以上任一条件,AUTO 必须立即停止,等待用户批准。
517
528
 
@@ -537,12 +548,3 @@ chore(wave): settle wave {N} progress
537
548
 
538
549
  ---
539
550
 
540
- - 每个任务的验收标准全部通过
541
- - 每个任务的遵从性检查全部通过
542
- - **3.4.5**:按 Wave 末次任务 / 约 2~3 Wave 兜底 / skill 例外执行 `code-reviewer`,或在任务与 Wave 记录中写明跳过或顺延依据
543
- - **3.4.6**:按 `e2e-testing-guide` 触发;有浏览器工具则先 Guide 后实机;否则 guide-only;未触发则写明原因
544
- - 所有代码已 git commit,message 包含 Task ID
545
- - 所有任务已完成持久化(`05_TASKS.md`)
546
- - `AGENTS.md` 当前状态已更新
547
- - 用户已确认波次完成
548
-