@accelerator-mzq/forge 2.0.0 → 3.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.
Files changed (31) hide show
  1. package/dist/cli/commands/archive.d.ts.map +1 -1
  2. package/dist/cli/commands/archive.js +29 -4
  3. package/dist/cli/commands/archive.js.map +1 -1
  4. package/dist/cli/commands/pause-capture.d.ts +24 -0
  5. package/dist/cli/commands/pause-capture.d.ts.map +1 -0
  6. package/dist/cli/commands/pause-capture.js +87 -0
  7. package/dist/cli/commands/pause-capture.js.map +1 -0
  8. package/dist/cli/index.js +3 -0
  9. package/dist/cli/index.js.map +1 -1
  10. package/dist/core/ack-log.d.ts +17 -1
  11. package/dist/core/ack-log.d.ts.map +1 -1
  12. package/dist/core/ack-log.js.map +1 -1
  13. package/dist/core/archive/ack-log-consistency.d.ts.map +1 -1
  14. package/dist/core/archive/ack-log-consistency.js +2 -1
  15. package/dist/core/archive/ack-log-consistency.js.map +1 -1
  16. package/dist/core/archive/pause-decisions-fence.d.ts +24 -1
  17. package/dist/core/archive/pause-decisions-fence.d.ts.map +1 -1
  18. package/dist/core/archive/pause-decisions-fence.js +260 -46
  19. package/dist/core/archive/pause-decisions-fence.js.map +1 -1
  20. package/dist/core/markers/types.d.ts +5 -0
  21. package/dist/core/markers/types.d.ts.map +1 -1
  22. package/dist/core/parse/unified-diff.d.ts +26 -0
  23. package/dist/core/parse/unified-diff.d.ts.map +1 -0
  24. package/dist/core/parse/unified-diff.js +61 -0
  25. package/dist/core/parse/unified-diff.js.map +1 -0
  26. package/dist/core/templates/commands/apply.md +12 -3
  27. package/dist/core/templates/commands/verify.md +2 -0
  28. package/dist/core/validate/marker-schema.d.ts.map +1 -1
  29. package/dist/core/validate/marker-schema.js +15 -0
  30. package/dist/core/validate/marker-schema.js.map +1 -1
  31. package/package.json +1 -1
@@ -2,8 +2,8 @@
2
2
  // 沿 design §2.1.5 fence 五类业务校验:
3
3
  // - CRITICAL 重定向(CRITICAL 应走 forge 强 fence,不应进 pause)
4
4
  // - WARNING + 未 ack → 拒签(SUGGESTION 例外)
5
- // - option=1:target_artifact=proposal.md + target_anchor 包含 'What Changes'
6
- // - option=2:tasks.md task_ref 末段对应的行已勾选 [x]
5
+ // - option=1:target_artifact=proposal.md + target_anchor 包含 'What Changes' + diff 段级校验
6
+ // - option=2:capture 校验(design §6.4):added_task_ref + capture_id + ack-log pause-capture entry
7
7
  // - option=3:proposal.md/design.md 含 scope-entries fenced YAML 块 + entry_id 匹配 + non_blocking_rationale 非空
8
8
  // - option=4:other_rationale + other_acked_by 非空
9
9
  //
@@ -11,6 +11,14 @@
11
11
  import { readFile } from 'node:fs/promises';
12
12
  import { existsSync } from 'node:fs';
13
13
  import { join } from 'node:path';
14
+ import { execFile } from 'node:child_process';
15
+ import { promisify } from 'node:util';
16
+ import { parseUnifiedDiff, addedLineNumbers } from '../parse/unified-diff.js';
17
+ // Task 11:option=2 capture 校验所需 ack-log + tasks 解析
18
+ import { readAllAckLogEntries, verifyAckLogChain } from '../ack-log.js';
19
+ import { parseTasks } from '../parse/tasks.js';
20
+ // promisify execFile 用于 option=1 diff 段级校验(async git diff 调用)
21
+ const execFileAsync = promisify(execFile);
14
22
  import { ok, failed, mergeResults } from '../validate/types.js';
15
23
  // v2 codex MAJOR 7 修订:复用 9b parseFencedYamlBlocks,删除自写 extractYamlFencedBlocks + 直接 parseYaml
16
24
  import { parseFencedYamlBlocks } from '../parse/fenced-yaml.js';
@@ -23,16 +31,21 @@ import { ANCHOR_TO_CATEGORY, isScopeCategory, isScopeStatus, } from '../schemas/
23
31
  * pause_decisions fence 五类业务校验(沿 design §2.1.5)
24
32
  * @param marker — verify-passed / review-passed 等 marker 对象(Record 形)
25
33
  * @param changeDir — change 目录绝对路径(需读 proposal.md / tasks.md / design.md)
34
+ * @param repoRoot — git 仓库根目录绝对路径(Task 5 用于 option=1 `git diff HEAD -- <changeDir>/proposal.md`)
35
+ * @param opts — option=2 capture 链固化入参(Task 11;archive 层从 verify marker 取出)
26
36
  * @param file — 可选错误报告用 marker 文件路径
27
37
  *
28
38
  * v4 codex NEW-MAJOR A6 + B4 联动修订:fence 不再需要 ctx 参数(v3 加 ctx 是为给
29
39
  * `validateScopeEntries` 算 finding_hash;但 v4 NEW-MAJOR B4 改用 `parseMarkdown` 局部段
30
40
  * 校验后,fence 内部不再调 validateScopeEntries,ctx 自然 unused → 沿 YAGNI 移除)
41
+ * Task 11:加 opts 参数(option=2 capture 链固化值),file 移至第 5 位
31
42
  */
32
- export async function validatePauseDecisionsFence(marker, changeDir, file) {
43
+ export async function validatePauseDecisionsFence(marker, changeDir, repoRoot, opts = {}, file) {
33
44
  const decisions = marker.pause_decisions;
34
45
  if (!Array.isArray(decisions))
35
46
  return ok(); // 老 marker 缺 → 通过
47
+ // 主循环之前:收集 option=2 capture_id,检测同 marker 内复用
48
+ const captureIdSeen = new Map(); // capture_id → 首次出现的 decision id
36
49
  const results = [];
37
50
  for (let i = 0; i < decisions.length; i++) {
38
51
  const p = decisions[i];
@@ -62,8 +75,9 @@ export async function validatePauseDecisionsFence(marker, changeDir, file) {
62
75
  // —— 3. option 五分支业务校验 ——
63
76
  if (p.chosen_option === 1) {
64
77
  // option=1 扩 scope:必须改 proposal.md `## What Changes`
65
- // TODO(9e1):本 task 仅校验 marker 字段一致性;design §2.1.5 line 262 要求"diff 内含 What Changes 段变更"
66
- // 真实 git diff 段级校验留给 9e1 archive_summary 集成 沿 plan-9c §7.5 已知降级声明
78
+ // 字段校验:target_artifact=proposal.md + target_anchor 'What Changes'
79
+ // diff 段级校验:跑 git diff HEAD -- <changeDir>/proposal.md,验 ## What Changes 段确有新增行
80
+ // (沿 design §2.1.5 line 262;Task 5 plan-9c 实现)
67
81
  if (p.target_artifact !== 'proposal.md') {
68
82
  results.push(failed({
69
83
  artifact: 'marker',
@@ -80,10 +94,12 @@ export async function validatePauseDecisionsFence(marker, changeDir, file) {
80
94
  file,
81
95
  }));
82
96
  }
97
+ // diff 段级校验:字段校验之后追加(字段校验失败时也继续累积,沿现有 results.push 模式)
98
+ results.push(await checkOption1WhatChangesDiff(changeDir, repoRoot, fieldBase, file));
83
99
  }
84
100
  else if (p.chosen_option === 2) {
85
- // option=2 task:tasks.md 中 task_ref 末段对应的行已勾选 [x]
86
- const tasksRes = await checkOption2TaskChecked(p, changeDir, fieldBase, file);
101
+ // option=2:capture 校验(design §6.4)
102
+ const tasksRes = await checkOption2TaskChecked(p, changeDir, opts, captureIdSeen, fieldBase, file);
87
103
  results.push(tasksRes);
88
104
  }
89
105
  else if (p.chosen_option === 3) {
@@ -124,68 +140,266 @@ export async function validatePauseDecisionsFence(marker, changeDir, file) {
124
140
  return mergeResults(...results);
125
141
  }
126
142
  /**
127
- * option=2 校验:tasks.md task_ref 末段对应的 task 行已勾选 [x]
128
- * task_ref 格式:'tasks.md#task-3'末段 'task-3' 用作 grep key
143
+ * option=1 diff 段级校验:proposal.md git diff 中,`## What Changes` 段须确有新增行。
144
+ * 沿 design §5.3。非 git N/A 降级(返回 ok);git 项目内 git diff 失败 → fail-closed 拒签。
129
145
  */
130
- async function checkOption2TaskChecked(p, changeDir, fieldBase, file) {
131
- const tasksPath = join(changeDir, 'tasks.md');
132
- if (!existsSync(tasksPath)) {
146
+ async function checkOption1WhatChangesDiff(changeDir, repoRoot, fieldBase, file) {
147
+ // 1. git 项目 → diff 校验 N/A,降级(沿 version-retrograde-fence 先例)
148
+ try {
149
+ await execFileAsync('git', ['rev-parse', '--is-inside-work-tree'], { cwd: repoRoot });
150
+ }
151
+ catch {
152
+ return ok(); // 非 git → 降级到已通过的字段校验
153
+ }
154
+ // 2. git diff HEAD -- <changeDir>/proposal.md
155
+ const proposalPath = join(changeDir, 'proposal.md');
156
+ let diffText;
157
+ try {
158
+ const { stdout } = await execFileAsync('git', ['diff', 'HEAD', '--', proposalPath], {
159
+ cwd: repoRoot,
160
+ encoding: 'utf8',
161
+ maxBuffer: 50 * 1024 * 1024,
162
+ });
163
+ diffText = stdout;
164
+ }
165
+ catch (err) {
166
+ // git 项目内 git diff 失败 → fail-closed(沿 version-retrograde-fence:73-81)
133
167
  return failed({
134
168
  artifact: 'marker',
135
- field: `${fieldBase}.task_ref`,
136
- message: `option=2 校验失败:tasks.md 不存在(${tasksPath})`,
169
+ field: `${fieldBase}.target_anchor`,
170
+ message: `option=1 校验失败:git diff proposal.md 失败(${err.message})— fail-closed 拒签`,
171
+ file,
172
+ });
173
+ }
174
+ // 3. 求 `## What Changes` 段在 proposal.md 原始文件中的行号区间 [start, end)
175
+ // 直接扫原始文本(不用 parseMarkdown —— 它剥 frontmatter 后行号有偏移,design §5.3)
176
+ const content = await readFile(proposalPath, 'utf8');
177
+ const srcLines = content.split('\n');
178
+ let wcStart = -1;
179
+ // wcEnd 初始 +1:What Changes 是 proposal.md 最后一段(无后续 ## 标题)时,段区间须含
180
+ // 文件最后一行 —— 无尾换行时 srcLines.length 恰为末行号,半开区间会漏掉它(code review)
181
+ let wcEnd = srcLines.length + 1;
182
+ for (let i = 0; i < srcLines.length; i++) {
183
+ // 1-indexed 行号(git diff 行号从 1 开始)
184
+ if (/^##\s+What Changes\s*$/.test(srcLines[i] ?? '')) {
185
+ wcStart = i + 1;
186
+ continue;
187
+ }
188
+ if (wcStart >= 0 && /^##\s/.test(srcLines[i] ?? '') && i + 1 > wcStart) {
189
+ wcEnd = i + 1;
190
+ break;
191
+ }
192
+ }
193
+ if (wcStart < 0) {
194
+ return failed({
195
+ artifact: 'marker',
196
+ field: `${fieldBase}.target_anchor`,
197
+ message: `option=1 校验失败:proposal.md 找不到 \`## What Changes\` 段`,
198
+ file,
199
+ });
200
+ }
201
+ // 4. diff 新增行须有落在 [wcStart, wcEnd) 区间内的
202
+ const added = addedLineNumbers(parseUnifiedDiff(diffText));
203
+ const inSection = added.some((ln) => ln >= wcStart && ln < wcEnd);
204
+ if (!inSection) {
205
+ return failed({
206
+ artifact: 'marker',
207
+ field: `${fieldBase}.target_anchor`,
208
+ message: `option=1(扩 scope)校验失败:git diff 中 proposal.md \`## What Changes\` 段无新增行 — marker 声称扩 scope 但实际未改该段(沿 design §2.1.5 line 262)`,
209
+ file,
210
+ });
211
+ }
212
+ return ok();
213
+ }
214
+ /**
215
+ * option=2 校验(design §6.4):pause 新增 task 真实性的轻量 capture 校验。
216
+ * 一律要求 added_task_ref + capture_id + 匹配的 pause-capture entry(无版本降级,design §8.1)。
217
+ *
218
+ * 【capture-input gap — 已知安全边界,design §9.2 / §9.3】
219
+ * 本校验能挡:option=2 无 capture entry、capture entry 事后被篡改、同 marker 内 capture 复用。
220
+ * 本校验【挡不住】:capture 当下喂假输入(删旧 task → pause-capture → 恢复)、AI 预先攒多条
221
+ * capture 后写 marker 时选择性认领、AI 完全不在 marker 记录 pause_decision。根因是 capture 的
222
+ * 输入(tasks.md)由 AI 控制、且 capture_id↔pause_decision 关联由 AI 写 marker 时决定,forge
223
+ * 没有独立于 AI 的 pre-pause tasks 可信来源。轻量 capture 对"诚实但偷懒"的 AI 有效,对蓄意构造
224
+ * 假输入的攻击者无效 —— 此 gap 无法在当前 forge 架构下消除(完整 hash-chain 方案同样关不掉)。
225
+ */
226
+ async function checkOption2TaskChecked(p, changeDir, opts, captureIdSeen, fieldBase, file) {
227
+ // 1. added_task_ref + capture_id 非空
228
+ if (!p.added_task_ref) {
229
+ return failed({
230
+ artifact: 'marker',
231
+ field: `${fieldBase}.added_task_ref`,
232
+ message: 'option=2 必须有 added_task_ref(pause 新增的 task)',
233
+ file,
234
+ });
235
+ }
236
+ if (!p.capture_id) {
237
+ return failed({
238
+ artifact: 'marker',
239
+ field: `${fieldBase}.capture_id`,
240
+ message: 'option=2 必须有 capture_id(关联 pause-capture entry)',
241
+ file,
242
+ });
243
+ }
244
+ // 5(提前查):capture_id 同 marker 内不被多个 pause_decision 复用
245
+ const prevId = captureIdSeen.get(p.capture_id);
246
+ if (prevId !== undefined) {
247
+ return failed({
248
+ artifact: 'marker',
249
+ field: `${fieldBase}.capture_id`,
250
+ message: `option=2 校验失败:capture_id=${p.capture_id} 已被 pause_decision id=${prevId} 引用,不可复用`,
251
+ file,
252
+ });
253
+ }
254
+ captureIdSeen.set(p.capture_id, p.id);
255
+ // 2. verify marker 须有 ack_log_tail_hash + entry_count(design §6.2 line 132 fail-closed 契约)
256
+ // 用 == null 同时挡 undefined(字段缺失)与 null —— marker-schema.ts 不校验这两字段,
257
+ // AI 可手写 marker 注入 `ack_log_tail_hash: null`,且 evidence.ts freeze 在空 ack-log 时本身
258
+ // 也会写 null。null 不是有效固化值:verifyAckLogChain 收到 null 会跳过行数/尾 hash 校验、
259
+ // 退化为仅链内自洽 → 挡不住"重写整条 ack-log"(design §6.2 line 124)→ 必须 fail-closed。
260
+ if (opts.verifyAckLogTailHash == null || opts.verifyAckLogEntryCount == null) {
261
+ return failed({
262
+ artifact: 'marker',
263
+ field: `${fieldBase}.capture_id`,
264
+ message: 'option=2 校验失败:verify marker 缺 ack_log_tail_hash / ack_log_entry_count(或为 null),链保护不成立 — fail-closed 拒签',
265
+ file,
266
+ });
267
+ }
268
+ // 2b. changeId 须传入(step 4 capture entry 定位的必要匹配键,archive 层从 verifyRec 取)。
269
+ // 缺失 → 显式 fail-closed,不靠 step 4 的 change_id 不匹配隐式兜底(code review)。
270
+ if (!opts.changeId) {
271
+ return failed({
272
+ artifact: 'marker',
273
+ field: `${fieldBase}.capture_id`,
274
+ message: 'option=2 校验失败:changeId 未传入(archive 层未接线)— fail-closed 拒签',
275
+ file,
276
+ });
277
+ }
278
+ // 3. 读 ack-log + verifyAckLogChain(用 verify marker 的 tail/count)
279
+ let entries;
280
+ try {
281
+ entries = await readAllAckLogEntries(changeDir);
282
+ }
283
+ catch (err) {
284
+ return failed({
285
+ artifact: 'marker',
286
+ field: `${fieldBase}.capture_id`,
287
+ message: `option=2 校验失败:ack-log.jsonl 读取/解析失败(${err.message})`,
137
288
  file,
138
289
  });
139
290
  }
140
- const tasksContent = await readFile(tasksPath, 'utf8');
141
- // 提取 task_ref 末段(支持 'tasks.md#task-3' / 'tasks.md#task-name' 等)
142
- const taskKey = p.task_ref.split('#').pop() ?? '';
143
- if (!taskKey) {
291
+ const chain = verifyAckLogChain(entries, opts.verifyAckLogTailHash, opts.verifyAckLogEntryCount);
292
+ if (!chain.ok) {
144
293
  return failed({
145
294
  artifact: 'marker',
146
- field: `${fieldBase}.task_ref`,
147
- message: `option=2 校验失败:task_ref 末段为空(${p.task_ref})`,
295
+ field: `${fieldBase}.capture_id`,
296
+ message: `option=2 校验失败:ack-log 链校验失败(${chain.reason ?? 'unknown'})`,
148
297
  file,
149
298
  });
150
299
  }
151
- // v3 codex MAJOR 4 修订:用精确 regex 匹配 `- [x] **taskKey**` 整体形式
152
- // v4 codex NEW-MAJOR A4 修订:`\b` `task-2-extra` 中 `2` 后接 `-` 仍是 word boundary
153
- // → false positive。改用 negative lookahead `(?![\w-])`
154
- // v5 codex MAJOR 2 修订:`\w` 无 `/u` flag 时仅 ASCII;中文/日文/俄文 task key `任务-3补充`
155
- // 中 `补` 非 `\w` 非 `-` → lookahead 通过 → 误匹配 `任务-3` 前缀。
156
- // 改用 Unicode property `\p{L}\p{N}_-`(Letter / Number / underscore / hyphen)
157
- // + `/u` flag,精确拒绝任何字母数字下划线连字符为后缀的扩展形式
158
- // v6 codex MAJOR A4 续修:v5 只给 bare 分支加 lookahead,**bold 分支 `\*\*taskKey\*\*` 后未加**
159
- // → `- [x] **task-2**-extra` / `- [x] **task-2**补充` 仍误匹配 prefix 形式。
160
- // v6 给 bold 分支末尾同样加 `(?![\p{L}\p{N}_-])` 闭合 bold 后缀扩展漏洞
161
- // 形式:`^\s*-\s*\[[ x]\]\s*(?:\*\*<taskKey>\*\*(?![\p{L}\p{N}_-])|<taskKey>(?![\p{L}\p{N}_-]))`,flag `iu`
162
- // 测试:`task-2`/`任务-3` → `- [x] <taskKey> ...` ✓ / `<taskKey>-extra` / `<taskKey>补充` ✗ /
163
- // `- [x] **task-2** added` ✓(空格非 `\p{L}\p{N}_-`) / `**task-2**-extra` ✗(v6 修订拒绝)
164
- const taskKeyEscaped = taskKey.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
165
- const taskItemRe = new RegExp(`^\\s*-\\s*\\[([ x])\\]\\s*(?:\\*\\*${taskKeyEscaped}\\*\\*(?![\\p{L}\\p{N}_-])|${taskKeyEscaped}(?![\\p{L}\\p{N}_-]))`, 'iu');
166
- const lines = tasksContent.split('\n');
167
- const matchedLines = lines
168
- .map((line) => ({ line, m: line.match(taskItemRe) }))
169
- .filter((x) => x.m !== null);
170
- if (matchedLines.length === 0) {
300
+ // 4. 定位 capture entry:kind + capture_id + change_id + task_ref 全匹配
301
+ const captures = entries.filter((e) => e.kind === 'pause-capture' &&
302
+ e.capture_id === p.capture_id &&
303
+ e.change_id === opts.changeId &&
304
+ e.task_ref === p.task_ref);
305
+ if (captures.length !== 1) {
171
306
  return failed({
172
307
  artifact: 'marker',
173
- field: `${fieldBase}.task_ref`,
174
- message: `option=2 校验失败:tasks.md 中找不到 task item ${taskKey}( \`- [x] **${taskKey}**\` 形式)`,
308
+ field: `${fieldBase}.capture_id`,
309
+ message: `option=2 校验失败:ack-log 中匹配 capture_id=${p.capture_id} + change_id + task_ref 的 pause-capture entry 数=${captures.length}( exactly 1)— fail-closed 拒签`,
175
310
  file,
176
311
  });
177
312
  }
178
- const checkedLines = matchedLines.filter((x) => (x.m?.[1] ?? '').toLowerCase() === 'x');
179
- if (checkedLines.length === 0) {
313
+ const capture = captures[0];
314
+ // added_task_ref 末段
315
+ const addedKey = p.added_task_ref.split('#').pop() ?? '';
316
+ if (!addedKey) {
180
317
  return failed({
181
318
  artifact: 'marker',
182
- field: `${fieldBase}.task_ref`,
183
- message: `option=2 校验失败:tasks.md 中 task item ${taskKey} 行未勾选 [x]`,
319
+ field: `${fieldBase}.added_task_ref`,
320
+ message: `option=2 校验失败:added_task_ref 末段为空(${p.added_task_ref})`,
321
+ file,
322
+ });
323
+ }
324
+ // 6. added_task_ref 末段 ∉ capture 快照(pause 时不存在)
325
+ if (capture.tasks_md_task_ids.includes(addedKey)) {
326
+ return failed({
327
+ artifact: 'marker',
328
+ field: `${fieldBase}.added_task_ref`,
329
+ message: `option=2 校验失败:task ${addedKey} 在 pause capture 时刻已存在于 tasks.md(非新增)— 沿 design §2.1.5 line 263`,
330
+ file,
331
+ });
332
+ }
333
+ // 7. added_task_ref 末段 ∈ 当前 tasks.md 且勾选(用 parseTasks,design §6.4 step 8)
334
+ const tasksPath = join(changeDir, 'tasks.md');
335
+ if (!existsSync(tasksPath)) {
336
+ return failed({
337
+ artifact: 'marker',
338
+ field: `${fieldBase}.added_task_ref`,
339
+ message: `option=2 校验失败:tasks.md 不存在(${tasksPath})`,
340
+ file,
341
+ });
342
+ }
343
+ const parsed = parseTasks(await readFile(tasksPath, 'utf8'));
344
+ const item = parsed.items.find((t) => t.id === addedKey);
345
+ if (!item) {
346
+ return failed({
347
+ artifact: 'marker',
348
+ field: `${fieldBase}.added_task_ref`,
349
+ message: `option=2 校验失败:当前 tasks.md 找不到 task ${addedKey}(需 \`- [x] ${addedKey}: ...\` 格式)`,
350
+ file,
351
+ });
352
+ }
353
+ if (!item.checked) {
354
+ return failed({
355
+ artifact: 'marker',
356
+ field: `${fieldBase}.added_task_ref`,
357
+ message: `option=2 校验失败:task ${addedKey} 未勾选 [x]`,
184
358
  file,
185
359
  });
186
360
  }
187
361
  return ok();
188
362
  }
363
+ /**
364
+ * verify/review 双 marker pause_decisions cross-check(design §6.5)。
365
+ * 对两侧 id 相同的 pause_decision,逐字段比对;单侧独有 id 不拒签。
366
+ *
367
+ * 前置假设:各 marker 内 pause_decision 的 id 唯一(design §2.1.5 schema 约定)。
368
+ * 若同侧出现重复 id,reviewById Map 后者覆盖前者 —— 该场景属 marker 数据异常,
369
+ * 不在本函数防御范围(整 marker 镜像 / id 唯一性校验是 design §12 非目标)。
370
+ *
371
+ * @param verifyDecisions — verify marker 的 pause_decisions 数组
372
+ * @param reviewDecisions — review marker 的 pause_decisions 数组
373
+ * @param file — 可选错误报告用 marker 文件路径
374
+ */
375
+ export function crossCheckPauseDecisions(verifyDecisions, reviewDecisions, file) {
376
+ const results = [];
377
+ // 按 id 建 review 侧索引,方便 O(1) 查找
378
+ const reviewById = new Map(reviewDecisions.map((d) => [d.id, d]));
379
+ // 四个需要比对的字段
380
+ const FIELDS = [
381
+ 'task_ref',
382
+ 'chosen_option',
383
+ 'added_task_ref',
384
+ 'capture_id',
385
+ ];
386
+ for (const v of verifyDecisions) {
387
+ const r = reviewById.get(v.id);
388
+ if (!r)
389
+ continue; // verify-only id → 合法不拒(design §6.5);review-only id 因不进本循环天然跳过
390
+ for (const f of FIELDS) {
391
+ if (v[f] !== r[f]) {
392
+ results.push(failed({
393
+ artifact: 'marker',
394
+ field: `pause_decisions[id=${v.id}].${String(f)}`,
395
+ message: `verify/review marker pause_decision id=${v.id} 的 ${String(f)} 不一致(verify=${String(v[f])} review=${String(r[f])})`,
396
+ file,
397
+ }));
398
+ }
399
+ }
400
+ }
401
+ return results.length === 0 ? ok() : mergeResults(...results);
402
+ }
189
403
  /**
190
404
  * option=3 校验:proposal.md / design.md 含 scope-entries fenced YAML 块 +
191
405
  * 通过 `triggered_by.source='pause_decisions' AND triggered_by.id=<pause.id>` 反向查找匹配 entry
@@ -1 +1 @@
1
- {"version":3,"file":"pause-decisions-fence.js","sourceRoot":"","sources":["../../../src/core/archive/pause-decisions-fence.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pause-decisions-fence.js","sourceRoot":"","sources":["../../../src/core/archive/pause-decisions-fence.ts"],"names":[],"mappings":"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"}
@@ -77,6 +77,11 @@ export interface PauseDecision {
77
77
  other_rationale: string | null;
78
78
  /** option=4 必填(用户在 marker 之外某处确认 — fence 仅校验非空,不校验来源) */
79
79
  other_acked_by: string | null;
80
+ /** option=2 新增的 task(末段 tasks.md#task-N);厘清 task_ref 语义 —— task_ref = 触发 pause 的 task。
81
+ * schema 层 optional(superset additive,老 marker 无);必填性由 fence 层按 chosen_option 判。 */
82
+ added_task_ref?: string | null;
83
+ /** option=2 关联的 pause-capture entry 的 capture_id;schema 层 optional,同上。 */
84
+ capture_id?: string | null;
80
85
  }
81
86
  export interface EvidenceItem {
82
87
  scenario_id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/markers/types.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEtE,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,iBAAiB,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,UAAU,GAAG,gBAAgB,CAAC;IAC3C,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,YAAY,EAAE,CAAC;IAEzB,eAAe,CAAC,EAAE,aAAa,EAAE,CAAC;IAGlC,eAAe,CAAC,EAAE,aAAa,EAAE,CAAC;IAGlC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAGjC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAGlC,yEAAyE;IACzE,gBAAgB,CAAC,EAAE,eAAe,CAAC;IACnC,sFAAsF;IACtF,6BAA6B,CAAC,EAAE,MAAM,CAAC;IACvC,wEAAwE;IACxE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,2EAA2E;IAC3E,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,aAAc,SAAQ,OAAO;CAE7C;AAED;;;;;;GAMG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAEzC;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,aAAa;IAC5B,8CAA8C;IAC9C,EAAE,EAAE,MAAM,CAAC;IACX,+BAA+B;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,yGAAyG;IACzG,QAAQ,EAAE,MAAM,CAAC;IACjB,8BAA8B;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,wDAAwD;IACxD,QAAQ,EAAE,QAAQ,CAAC;IACnB,2DAA2D;IAC3D,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,6CAA6C;IAC7C,aAAa,EAAE,YAAY,CAAC;IAC5B,4FAA4F;IAC5F,eAAe,EAAE,MAAM,CAAC;IACxB,uGAAuG;IACvG,aAAa,EAAE,MAAM,CAAC;IACtB,uDAAuD;IACvD,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,4BAA4B;IAC5B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,0DAA0D;IAC1D,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,iBAAiB,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,UAAU,GAAG,gBAAgB,CAAC;IAC3C,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,OAAO,CAAC;IACb,eAAe,EAAE,aAAa,EAAE,CAAC;IAEjC,eAAe,CAAC,EAAE,aAAa,EAAE,CAAC;IAElC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAElC,gBAAgB,CAAC,EAAE,eAAe,CAAC;IACnC,6BAA6B,CAAC,EAAE,MAAM,CAAC;IACvC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,OAAO;IACtB,WAAW,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE;QACd,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,aAAa;IAI5B,QAAQ,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,UAAU,GAAG,SAAS,GAAG,YAAY,CAAC;IAClE,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,wBAAwB,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,cAAc,EAAE,MAAM,EAAE,CAAC;IAEzB,eAAe,CAAC,EAAE,aAAa,EAAE,CAAC;IAElC,eAAe,CAAC,EAAE,aAAa,EAAE,CAAC;IAElC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC,wBAAwB,CAAC,EAAE,MAAM,CAAC;CACnC;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,wBAAwB,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB,EAAE,aAAa,EAAE,CAAC;IACrC,cAAc,EAAE,MAAM,EAAE,CAAC;IAEzB,eAAe,CAAC,EAAE,aAAa,EAAE,CAAC;IAElC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC,wBAAwB,CAAC,EAAE,MAAM,CAAC;CACnC;AAED,MAAM,MAAM,SAAS,GAAG,YAAY,GAAG,YAAY,GAAG,kBAAkB,GAAG,kBAAkB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/markers/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /** unified-diff 一个 hunk 内的一行变更 */
2
+ export interface DiffLine {
3
+ /** '+' 新增 / '-' 删除 */
4
+ kind: '+' | '-';
5
+ /** 行内容(去掉前缀 +/-) */
6
+ content: string;
7
+ /** 该行在「新文件」中的行号(仅 kind='+' 有意义;kind='-' 为 null) */
8
+ newLineNumber: number | null;
9
+ }
10
+ /** 一个 unified-diff hunk */
11
+ export interface DiffHunk {
12
+ /** hunk 头 `@@ -a,b +c,d @@` 中的 c(新文件起始行号,1-indexed) */
13
+ newStart: number;
14
+ /** 本 hunk 内所有新增行(kind='+') */
15
+ added: DiffLine[];
16
+ /** 本 hunk 内所有删除行(kind='-') */
17
+ removed: DiffLine[];
18
+ }
19
+ /**
20
+ * 解析 `git diff` 文本输出为 hunk 列表。
21
+ * @param diffText `git diff HEAD -- <file>` 的 stdout(可为空 → 返回 [])
22
+ */
23
+ export declare function parseUnifiedDiff(diffText: string): DiffHunk[];
24
+ /** 收集所有 hunk 的新增行在「新文件」中的行号(升序去重) */
25
+ export declare function addedLineNumbers(hunks: DiffHunk[]): number[];
26
+ //# sourceMappingURL=unified-diff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unified-diff.d.ts","sourceRoot":"","sources":["../../../src/core/parse/unified-diff.ts"],"names":[],"mappings":"AAGA,kCAAkC;AAClC,MAAM,WAAW,QAAQ;IACvB,sBAAsB;IACtB,IAAI,EAAE,GAAG,GAAG,GAAG,CAAC;IAChB,oBAAoB;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,mDAAmD;IACnD,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,2BAA2B;AAC3B,MAAM,WAAW,QAAQ;IACvB,uDAAuD;IACvD,QAAQ,EAAE,MAAM,CAAC;IACjB,8BAA8B;IAC9B,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,8BAA8B;IAC9B,OAAO,EAAE,QAAQ,EAAE,CAAC;CACrB;AAID;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,EAAE,CAuC7D;AAED,qCAAqC;AACrC,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,EAAE,CAQ5D"}
@@ -0,0 +1,61 @@
1
+ // option=1 diff 段级校验用的 unified-diff 解析器(plan pause-fence Block B)
2
+ // 解析 `git diff` 文本输出为 hunk 列表;只关心增删行 + 新文件行号,不做 IO。
3
+ const HUNK_HEADER_RE = /^@@ -\d+(?:,\d+)? \+(\d+)(?:,\d+)? @@/;
4
+ /**
5
+ * 解析 `git diff` 文本输出为 hunk 列表。
6
+ * @param diffText `git diff HEAD -- <file>` 的 stdout(可为空 → 返回 [])
7
+ */
8
+ export function parseUnifiedDiff(diffText) {
9
+ const hunks = [];
10
+ if (!diffText.trim())
11
+ return hunks;
12
+ const lines = diffText.split('\n');
13
+ let current = null;
14
+ // 新文件行游标:遇 hunk 头重置为 newStart;上下文行/新增行 +1,删除行不动。
15
+ let newCursor = 0;
16
+ for (const line of lines) {
17
+ const hunkMatch = line.match(HUNK_HEADER_RE);
18
+ if (hunkMatch) {
19
+ current = { newStart: parseInt(hunkMatch[1], 10), added: [], removed: [] };
20
+ hunks.push(current);
21
+ newCursor = current.newStart;
22
+ continue;
23
+ }
24
+ if (!current)
25
+ continue; // hunk 头之前的文件头(diff --git / --- / +++)忽略
26
+ // git diff 文件头行(下一文件)会以 'diff --git' 开头 → 关闭当前 hunk 上下文
27
+ if (line.startsWith('diff --git')) {
28
+ current = null;
29
+ continue;
30
+ }
31
+ if (line.startsWith('+++') || line.startsWith('---'))
32
+ continue; // 文件头,非内容
33
+ if (line.startsWith('\\'))
34
+ continue; // '' git 元数据行,不占新文件行号
35
+ if (line.startsWith('+')) {
36
+ current.added.push({ kind: '+', content: line.slice(1), newLineNumber: newCursor });
37
+ newCursor += 1;
38
+ }
39
+ else if (line.startsWith('-')) {
40
+ current.removed.push({ kind: '-', content: line.slice(1), newLineNumber: null });
41
+ // 删除行不占新文件行号,newCursor 不动
42
+ }
43
+ else {
44
+ // 上下文行(以空格开头,或空行)→ 占新文件一行
45
+ newCursor += 1;
46
+ }
47
+ }
48
+ return hunks;
49
+ }
50
+ /** 收集所有 hunk 的新增行在「新文件」中的行号(升序去重) */
51
+ export function addedLineNumbers(hunks) {
52
+ const nums = new Set();
53
+ for (const h of hunks) {
54
+ for (const l of h.added) {
55
+ if (l.newLineNumber !== null)
56
+ nums.add(l.newLineNumber);
57
+ }
58
+ }
59
+ return [...nums].sort((a, b) => a - b);
60
+ }
61
+ //# sourceMappingURL=unified-diff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unified-diff.js","sourceRoot":"","sources":["../../../src/core/parse/unified-diff.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,oDAAoD;AAsBpD,MAAM,cAAc,GAAG,uCAAuC,CAAC;AAE/D;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAgB;IAC/C,MAAM,KAAK,GAAe,EAAE,CAAC;IAC7B,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;QAAE,OAAO,KAAK,CAAC;IAEnC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,OAAO,GAAoB,IAAI,CAAC;IACpC,iDAAiD;IACjD,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAC7C,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;YAC5E,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACpB,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC;YAC7B,SAAS;QACX,CAAC;QACD,IAAI,CAAC,OAAO;YAAE,SAAS,CAAC,yCAAyC;QAEjE,wDAAwD;QACxD,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAClC,OAAO,GAAG,IAAI,CAAC;YACf,SAAS;QACX,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;YAAE,SAAS,CAAC,UAAU;QAC1E,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,SAAS,CAAC,iDAAiD;QAEtF,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,CAAC;YACpF,SAAS,IAAI,CAAC,CAAC;QACjB,CAAC;aAAM,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAChC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YACjF,0BAA0B;QAC5B,CAAC;aAAM,CAAC;YACN,0BAA0B;YAC1B,SAAS,IAAI,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,qCAAqC;AACrC,MAAM,UAAU,gBAAgB,CAAC,KAAiB;IAChD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;YACxB,IAAI,CAAC,CAAC,aAAa,KAAK,IAAI;gBAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACzC,CAAC"}
@@ -75,7 +75,10 @@ subagent 在 apply 中段报告以下三档之一时,主代理**不直接处理*
75
75
  subagent 报告 → 主代理判定 severity(CRITICAL / WARNING / SUGGESTION,沿 design §2.3)
76
76
 
77
77
  CRITICAL? → yes → 走 forge 强 fence 拒签(原 v0.4 行为)
78
- → no → AskUserQuestion 四选项
78
+ → no → 主代理调 `forge pause-capture <change-id> --task <triggering-task-ref> --issue "<summary>"`
79
+ (捕获 pause 时刻 tasks.md 状态进 ack-log hash-chain;记下 stdout 返回的 capture_id)
80
+
81
+ AskUserQuestion 四选项
79
82
 
80
83
  用户选择
81
84
 
@@ -128,8 +131,10 @@ pause_decisions:
128
131
  severity_acked_by: msc # WARNING 必须;SUGGESTION 允许 null
129
132
  severity_acked_at: 2026-05-12T14:32:00Z
130
133
  chosen_option: 3 # 1=扩 scope / 2=加 task / 3=转 out-of-scope / 4=Other
134
+ added_task_ref: tasks.md#task-7 # option=2 必填:Fluid Pause 新增的 task(与 task_ref=触发 task 区分)
135
+ capture_id: <forge pause-capture 返回的 capture_id> # option=2 必填:关联 pause-capture entry
131
136
  target_artifact: proposal.md # option=1=proposal.md;option=2=tasks.md;option=3=proposal.md|design.md
132
- target_anchor: '## Out of Scope' # marker 记录写到哪个段
137
+ target_anchor: '## Out of Scope' # 记录写到哪个段(option=2 降为仅人类可读,fence 不据此校验)
133
138
  non_blocking_rationale: 'subagent 可跳过该 issue 完成本 task 主体功能' # option=3 必填
134
139
  other_rationale: null # option=4 必填
135
140
  other_acked_by: null # option=4 必填
@@ -142,10 +147,14 @@ pause_decisions:
142
147
  - CRITICAL severity → 拒签(CRITICAL 应走 forge 强 fence,不应进 pause)
143
148
  - WARNING + (severity_acked_by 空 ∨ severity_acked_at 空)→ 拒签
144
149
  - option=1:`target_artifact='proposal.md'` + `target_anchor` 含 `What Changes`
145
- - option=2:tasks.md `task_ref` 末段对应的行已勾选 `[x]`
150
+ - option=2:`added_task_ref` 指向的 task ∉ capture 快照、∈ 当前 tasks.md 且勾选 `[x]`;`capture_id` 匹配 ack-log pause-capture entry;链完整
146
151
  - option=3:proposal/design YAML 块含对应 entry.id + `non_blocking_rationale` 非空
147
152
  - option=4:`other_rationale` + `other_acked_by` 非空
148
153
 
154
+ ### option=2 capture 的已知边界(capture-input gap,design §9.2/§9.3)
155
+
156
+ `forge pause-capture` 是轻量锚点,**不能**密码学证明 "task 是 pause 真新增的"。它能挡:无 capture 流程的 option=2、capture entry 事后被篡改、同 marker 内 capture 复用。它**挡不住**:capture 当下喂假输入(删旧 task → capture → 恢复)、AI 预先攒多条 capture 后选择性认领、AI 完全不记录 pause_decision。轻量 capture 对 "诚实但偷懒" 的 AI 有效,对蓄意构造假输入的攻击者无效 —— 此 gap 是当前 forge 架构下的已知限制。
157
+
149
158
  ## 与其他 sub-plan 合并点
150
159
 
151
160
  本 §"Fluid Pause Decision Point" 段(plan-9c)与后续 sub-plan 在 apply.md 有合并点(参考 master plan §3.3 line 272):
@@ -137,6 +137,8 @@ You are about to handle `/forge:verify $ARGUMENTS`.
137
137
 
138
138
  详细 process_evidence 协议见 `skills/process-evidence/SKILL.md`。
139
139
 
140
+ > **Fluid Pause 边界(design §8.3)**:apply 阶段 Fluid Pause 的 `forge pause-capture` 必须在本步 `forge evidence freeze --kind verify` **之前**完成。verify freeze 之后再产生的 pause-capture entry 不被 verify marker 的 `ack_log_tail_hash`/`ack_log_entry_count` 固化,archive 阶段 option=2 强校验会因 ack-log 行数 mismatch 拒签。
141
+
140
142
  4.5 **若产任何 WARNING + resolved=false**:提示用户 — archive 阶段必须先 `forge ack propose <finding-id>`(沿 9a 两步流程),否则 archive fence 拒签。
141
143
 
142
144
  4.6 **若产任何 automated=true CRITICAL + resolved=false**:**不能 archive**(沿 design §2.2.4 fence)— 必须先实际修复让 finding resolved=true(改 code + 重跑 verify),不允许 ack 降级。
@@ -1 +1 @@
1
- {"version":3,"file":"marker-schema.d.ts","sourceRoot":"","sources":["../../../src/core/validate/marker-schema.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,KAAK,gBAAgB,EAA4B,MAAM,YAAY,CAAC;AAiD7E;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,gBAAgB,CA8FhF;AA+mBD,YAAY,EAAE,SAAS,EAAE,CAAC"}
1
+ {"version":3,"file":"marker-schema.d.ts","sourceRoot":"","sources":["../../../src/core/validate/marker-schema.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,KAAK,gBAAgB,EAA4B,MAAM,YAAY,CAAC;AAiD7E;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,gBAAgB,CA8FhF;AA+nBD,YAAY,EAAE,SAAS,EAAE,CAAC"}