@accelerator-mzq/forge 2.0.0 → 3.1.1
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/README.md +12 -12
- package/dist/cli/commands/ack.d.ts.map +1 -1
- package/dist/cli/commands/ack.js +87 -12
- package/dist/cli/commands/ack.js.map +1 -1
- package/dist/cli/commands/archive.d.ts.map +1 -1
- package/dist/cli/commands/archive.js +29 -4
- package/dist/cli/commands/archive.js.map +1 -1
- package/dist/cli/commands/pause-capture.d.ts +24 -0
- package/dist/cli/commands/pause-capture.d.ts.map +1 -0
- package/dist/cli/commands/pause-capture.js +87 -0
- package/dist/cli/commands/pause-capture.js.map +1 -0
- package/dist/cli/index.js +3 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/core/ack/marker-ack.d.ts +28 -0
- package/dist/core/ack/marker-ack.d.ts.map +1 -0
- package/dist/core/ack/marker-ack.js +155 -0
- package/dist/core/ack/marker-ack.js.map +1 -0
- package/dist/core/ack-log.d.ts +17 -1
- package/dist/core/ack-log.d.ts.map +1 -1
- package/dist/core/ack-log.js +10 -7
- package/dist/core/ack-log.js.map +1 -1
- package/dist/core/archive/ack-log-consistency.d.ts.map +1 -1
- package/dist/core/archive/ack-log-consistency.js +2 -1
- package/dist/core/archive/ack-log-consistency.js.map +1 -1
- package/dist/core/archive/pause-decisions-fence.d.ts +24 -1
- package/dist/core/archive/pause-decisions-fence.d.ts.map +1 -1
- package/dist/core/archive/pause-decisions-fence.js +263 -49
- package/dist/core/archive/pause-decisions-fence.js.map +1 -1
- package/dist/core/markers/types.d.ts +7 -2
- package/dist/core/markers/types.d.ts.map +1 -1
- package/dist/core/parse/unified-diff.d.ts +26 -0
- package/dist/core/parse/unified-diff.d.ts.map +1 -0
- package/dist/core/parse/unified-diff.js +61 -0
- package/dist/core/parse/unified-diff.js.map +1 -0
- package/dist/core/templates/commands/ack-confirm.md +1 -1
- package/dist/core/templates/commands/apply.md +15 -6
- package/dist/core/templates/commands/verify.md +2 -0
- package/dist/core/templates/skills/_shared/tier23-command-bridge.md +34 -0
- package/dist/core/templates/skills/exploring.md +3 -3
- package/dist/core/templates/skills/finishing-a-development-branch.md +6 -21
- package/dist/core/templates/skills/requesting-code-review.md +11 -0
- package/dist/core/templates/skills/subagent-driven-development.md +9 -0
- package/dist/core/templates/skills/using-forge.md +6 -6
- package/dist/core/templates/skills/verification-before-completion.md +7 -18
- package/dist/core/templates/skills/writing-plans.md +6 -17
- package/dist/core/validate/marker-schema.d.ts.map +1 -1
- package/dist/core/validate/marker-schema.js +15 -0
- package/dist/core/validate/marker-schema.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -1
- package/dist/index.js.map +1 -1
- package/package.json +22 -19
- package/scripts/codex-review-helper.mjs +337 -0
- package/src/core/codex-review/prompts/adversarial-default.md +105 -0
|
@@ -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
|
|
6
|
-
// - option=2:
|
|
5
|
+
// - option=1:target_artifact=proposal.md + target_anchor 包含 'What' + 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];
|
|
@@ -61,9 +74,10 @@ export async function validatePauseDecisionsFence(marker, changeDir, file) {
|
|
|
61
74
|
// SUGGESTION + 未 ack → 通过(fence 不要求 ack)
|
|
62
75
|
// —— 3. option 五分支业务校验 ——
|
|
63
76
|
if (p.chosen_option === 1) {
|
|
64
|
-
// option=1 扩 scope:必须改 proposal.md `## What
|
|
65
|
-
//
|
|
66
|
-
//
|
|
77
|
+
// option=1 扩 scope:必须改 proposal.md `## What`
|
|
78
|
+
// 字段校验:target_artifact=proposal.md + target_anchor='## What'
|
|
79
|
+
// diff 段级校验:跑 git diff HEAD -- <changeDir>/proposal.md,验 ## What 段确有新增行
|
|
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',
|
|
@@ -72,18 +86,20 @@ export async function validatePauseDecisionsFence(marker, changeDir, file) {
|
|
|
72
86
|
file,
|
|
73
87
|
}));
|
|
74
88
|
}
|
|
75
|
-
if (
|
|
89
|
+
if (p.target_anchor !== '## What') {
|
|
76
90
|
results.push(failed({
|
|
77
91
|
artifact: 'marker',
|
|
78
92
|
field: `${fieldBase}.target_anchor`,
|
|
79
|
-
message: `option=1(扩 scope)必须 target_anchor
|
|
93
|
+
message: `option=1(扩 scope)必须 target_anchor='## What',实际:${p.target_anchor}`,
|
|
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
|
|
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=
|
|
128
|
-
*
|
|
143
|
+
* option=1 diff 段级校验:proposal.md 的 git diff 中,`## What` 段须确有新增行。
|
|
144
|
+
* 沿 design §5.3。非 git → N/A 降级(返回 ok);git 项目内 git diff 失败 → fail-closed 拒签。
|
|
129
145
|
*/
|
|
130
|
-
async function
|
|
131
|
-
|
|
132
|
-
|
|
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}.
|
|
136
|
-
message: `option=
|
|
169
|
+
field: `${fieldBase}.target_anchor`,
|
|
170
|
+
message: `option=1 校验失败:git diff proposal.md 失败(${err.message})— fail-closed 拒签`,
|
|
171
|
+
file,
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
// 3. 求 `## What` 段在 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 是 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\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\` 段`,
|
|
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\` 段无新增行 — 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
|
|
141
|
-
|
|
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}.
|
|
147
|
-
message: `option=2 校验失败:
|
|
295
|
+
field: `${fieldBase}.capture_id`,
|
|
296
|
+
message: `option=2 校验失败:ack-log 链校验失败(${chain.reason ?? 'unknown'})`,
|
|
148
297
|
file,
|
|
149
298
|
});
|
|
150
299
|
}
|
|
151
|
-
//
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
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}.
|
|
174
|
-
message: `option=2 校验失败:
|
|
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
|
|
179
|
-
|
|
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}.
|
|
183
|
-
message: `option=2 校验失败:
|
|
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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"}
|
|
@@ -32,7 +32,7 @@ export interface VerifyFinding extends Finding {
|
|
|
32
32
|
}
|
|
33
33
|
/**
|
|
34
34
|
* chosen_option — Fluid Pause 用户决策选项(沿 design §2.1.4 / §2.1.5)
|
|
35
|
-
* 1 = 扩 scope(更新 proposal `## What
|
|
35
|
+
* 1 = 扩 scope(更新 proposal `## What`,subagent 重派)
|
|
36
36
|
* 2 = 加 task(主代理 append 新 task 到 tasks.md,subagent 重派)
|
|
37
37
|
* 3 = 转 out-of-scope(写到 proposal `## Out of Scope` / design `## Future Work` YAML 块,subagent 跳过 issue 继续)
|
|
38
38
|
* 4 = Other(用户提供自由文本描述,必须配 other_rationale + other_acked_by)
|
|
@@ -69,7 +69,7 @@ export interface PauseDecision {
|
|
|
69
69
|
chosen_option: ChosenOption;
|
|
70
70
|
/** option=1 → 'proposal.md';option=2 → 'tasks.md';option=3 → 'proposal.md' | 'design.md' */
|
|
71
71
|
target_artifact: string;
|
|
72
|
-
/** option=1 → '## What
|
|
72
|
+
/** option=1 → '## What';option=2 → 新 task 行;option=3 → '## Out of Scope' | '## Future Work' */
|
|
73
73
|
target_anchor: string;
|
|
74
74
|
/** option=3 必填(沿 design §2.1.5 fence 校验);其他选项填 null */
|
|
75
75
|
non_blocking_rationale: string | null;
|
|
@@ -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
|
|
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"}
|
|
@@ -17,7 +17,7 @@ You are about to handle `/forge:ack-confirm $ARGUMENTS`。
|
|
|
17
17
|
- `reject`(拒绝 + 让用户写 rationale)
|
|
18
18
|
- `modify-rationale`(用户改 rationale 后再 confirm)
|
|
19
19
|
5. 根据用户选择:
|
|
20
|
-
- `confirm` → 调 `forge ack confirm <change-id> <finding-id>`(CLI 写 marker
|
|
20
|
+
- `confirm` → 调 `forge ack confirm <change-id> <finding-id>`(CLI 对 severity-ack(ack-warning / ack-pause-warning / downgrade)写 marker ack 字段、写 ack-log、删 pending;其余 action 仅写 ack-log + 删 pending)
|
|
21
21
|
- `reject` → 用 AskUserQuestion 让用户输入 `rejection rationale` → 调 `forge ack reject <change-id> <finding-id> --rationale "<text>"`
|
|
22
22
|
- `modify-rationale` → 用 AskUserQuestion 让用户输入新 rationale → 重写 pending file → 回到 step 4
|
|
23
23
|
|