@accelerator-mzq/forge 3.0.0 → 4.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 (105) hide show
  1. package/README.md +12 -12
  2. package/dist/cli/commands/ack.d.ts.map +1 -1
  3. package/dist/cli/commands/ack.js +87 -12
  4. package/dist/cli/commands/ack.js.map +1 -1
  5. package/dist/cli/commands/archive.d.ts +32 -33
  6. package/dist/cli/commands/archive.d.ts.map +1 -1
  7. package/dist/cli/commands/archive.js +339 -667
  8. package/dist/cli/commands/archive.js.map +1 -1
  9. package/dist/cli/commands/legacy-bridge.js +1 -1
  10. package/dist/cli/commands/legacy-bridge.js.map +1 -1
  11. package/dist/cli/commands/upgrade.d.ts.map +1 -1
  12. package/dist/cli/commands/upgrade.js +2 -51
  13. package/dist/cli/commands/upgrade.js.map +1 -1
  14. package/dist/cli/commands/validate.d.ts.map +1 -1
  15. package/dist/cli/commands/validate.js +4 -25
  16. package/dist/cli/commands/validate.js.map +1 -1
  17. package/dist/cli/index.js +0 -9
  18. package/dist/cli/index.js.map +1 -1
  19. package/dist/core/ack/marker-ack.d.ts +28 -0
  20. package/dist/core/ack/marker-ack.d.ts.map +1 -0
  21. package/dist/core/ack/marker-ack.js +155 -0
  22. package/dist/core/ack/marker-ack.js.map +1 -0
  23. package/dist/core/ack-log.d.ts.map +1 -1
  24. package/dist/core/ack-log.js +10 -7
  25. package/dist/core/ack-log.js.map +1 -1
  26. package/dist/core/archive/index.d.ts +2 -3
  27. package/dist/core/archive/index.d.ts.map +1 -1
  28. package/dist/core/archive/index.js +7 -5
  29. package/dist/core/archive/index.js.map +1 -1
  30. package/dist/core/archive/pause-decisions-fence.js +12 -12
  31. package/dist/core/archive/pause-decisions-fence.js.map +1 -1
  32. package/dist/core/archive/summary-builder.d.ts +26 -21
  33. package/dist/core/archive/summary-builder.d.ts.map +1 -1
  34. package/dist/core/archive/summary-builder.js +115 -223
  35. package/dist/core/archive/summary-builder.js.map +1 -1
  36. package/dist/core/archive/summary-render.d.ts +5 -3
  37. package/dist/core/archive/summary-render.d.ts.map +1 -1
  38. package/dist/core/archive/summary-render.js +38 -44
  39. package/dist/core/archive/summary-render.js.map +1 -1
  40. package/dist/core/lock.d.ts +46 -0
  41. package/dist/core/lock.d.ts.map +1 -0
  42. package/dist/core/lock.js +98 -0
  43. package/dist/core/lock.js.map +1 -0
  44. package/dist/core/markers/types.d.ts +27 -134
  45. package/dist/core/markers/types.d.ts.map +1 -1
  46. package/dist/core/markers/types.js +10 -1
  47. package/dist/core/markers/types.js.map +1 -1
  48. package/dist/core/migrate/index.js +1 -1
  49. package/dist/core/migrate/index.js.map +1 -1
  50. package/dist/core/monitor/artifact-observer.d.ts.map +1 -1
  51. package/dist/core/monitor/artifact-observer.js +28 -78
  52. package/dist/core/monitor/artifact-observer.js.map +1 -1
  53. package/dist/core/monitor/divergence-map.d.ts.map +1 -1
  54. package/dist/core/monitor/divergence-map.js +9 -7
  55. package/dist/core/monitor/divergence-map.js.map +1 -1
  56. package/dist/core/monitor/health-verdict.d.ts.map +1 -1
  57. package/dist/core/monitor/health-verdict.js +2 -1
  58. package/dist/core/monitor/health-verdict.js.map +1 -1
  59. package/dist/core/monitor/trace-store.d.ts +1 -1
  60. package/dist/core/monitor/trace-store.js +2 -2
  61. package/dist/core/monitor/trace-store.js.map +1 -1
  62. package/dist/core/monitor/types.d.ts +1 -1
  63. package/dist/core/monitor/types.d.ts.map +1 -1
  64. package/dist/core/monitor/types.js +0 -1
  65. package/dist/core/monitor/types.js.map +1 -1
  66. package/dist/core/schemas/archive-summary.d.ts +39 -109
  67. package/dist/core/schemas/archive-summary.d.ts.map +1 -1
  68. package/dist/core/schemas/archive-summary.js +15 -23
  69. package/dist/core/schemas/archive-summary.js.map +1 -1
  70. package/dist/core/templates/commands/ack-confirm.md +1 -1
  71. package/dist/core/templates/commands/apply.md +51 -114
  72. package/dist/core/templates/commands/archive.md +43 -160
  73. package/dist/core/templates/commands/review.md +49 -74
  74. package/dist/core/templates/commands/upgrade.md +21 -40
  75. package/dist/core/templates/commands/verify.md +43 -146
  76. package/dist/core/templates/skills/_shared/tier23-command-bridge.md +34 -0
  77. package/dist/core/templates/skills/exploring.md +3 -3
  78. package/dist/core/templates/skills/finishing-a-development-branch.md +6 -21
  79. package/dist/core/templates/skills/receiving-code-review.md +14 -45
  80. package/dist/core/templates/skills/requesting-code-review.md +11 -0
  81. package/dist/core/templates/skills/subagent-driven-development.md +33 -29
  82. package/dist/core/templates/skills/subagent-driven-discipline.md +28 -28
  83. package/dist/core/templates/skills/using-forge.md +25 -24
  84. package/dist/core/templates/skills/verification-before-completion.md +7 -18
  85. package/dist/core/templates/skills/verifying-three-dimensions.md +93 -169
  86. package/dist/core/templates/skills/writing-plans.md +6 -17
  87. package/dist/core/validate/archive-summary-schema.d.ts +1 -1
  88. package/dist/core/validate/archive-summary-schema.d.ts.map +1 -1
  89. package/dist/core/validate/archive-summary-schema.js +101 -125
  90. package/dist/core/validate/archive-summary-schema.js.map +1 -1
  91. package/dist/core/validate/index.d.ts +0 -1
  92. package/dist/core/validate/index.d.ts.map +1 -1
  93. package/dist/core/validate/index.js +2 -1
  94. package/dist/core/validate/index.js.map +1 -1
  95. package/dist/core/validate/marker-schema.d.ts +12 -4
  96. package/dist/core/validate/marker-schema.d.ts.map +1 -1
  97. package/dist/core/validate/marker-schema.js +98 -605
  98. package/dist/core/validate/marker-schema.js.map +1 -1
  99. package/dist/index.d.ts +1 -1
  100. package/dist/index.d.ts.map +1 -1
  101. package/dist/index.js +8 -1
  102. package/dist/index.js.map +1 -1
  103. package/package.json +5 -4
  104. package/scripts/codex-review-helper.mjs +337 -0
  105. package/src/core/codex-review/prompts/adversarial-default.md +105 -0
@@ -0,0 +1,46 @@
1
+ export type LockMode = 'archive' | 'recover' | 'resume-summary' | 'legacy-bridge-map' | 'legacy-bridge-regenerate' | 'legacy-bridge-index' | 'legacy-bridge-resolve' | 'legacy-bridge-sync-check' | 'migrate';
2
+ /** lock 文件内容结构 */
3
+ interface LockData {
4
+ pid: number;
5
+ started_at: string;
6
+ mode: LockMode;
7
+ }
8
+ /** 当 lock 被另一个活进程持有时抛出 */
9
+ export declare class LockHeldError extends Error {
10
+ readonly holder: LockData;
11
+ constructor(holder: LockData);
12
+ }
13
+ /**
14
+ * acquireLock 的可定制 lock 文件版本(决策 #23)。
15
+ *
16
+ * legacy-bridge 命令获 forge/.cache/legacy-bridge.lock(独立于 archive.lock);
17
+ * regenerate/index 同时获 archive.lock + legacy-bridge.lock(顺序固定:先 archive.lock 后 legacy-bridge.lock)。
18
+ *
19
+ * @param forgeRoot forge 根目录
20
+ * @param mode 操作 mode(也写入 lock 数据)
21
+ * @param lockName lock 文件名,默认 'archive.lock'
22
+ * @returns release 函数(幂等,可多次调用)
23
+ */
24
+ export declare function acquireLockByPath(forgeRoot: string, mode: LockMode, lockName?: string): Promise<() => Promise<void>>;
25
+ /**
26
+ * 获取 archive 进程锁(`.cache/archive.lock` 专用 wrapper)。
27
+ *
28
+ * 用 O_CREAT|O_EXCL 原子创建 .cache/archive.lock:
29
+ * - 若文件不存在 → 独占创建,写入 {pid, started_at, mode},返回 release 函数
30
+ * - 若文件已存在:
31
+ * - 检查持有者 pid 是否存活(isPidAlive)
32
+ * - stale(进程已死) → 删除 lock + 递归重试
33
+ * - alive → 抛 LockHeldError
34
+ *
35
+ * **使用约定**:本函数仅供 archive / recover / **resume-summary**(plan-9e1 v3 NIT 1 修订)命令使用;
36
+ * legacy-bridge 命令应直接调 `acquireLockByPath(forgeRoot, mode, 'legacy-bridge.lock')`(决策 #23)。
37
+ *
38
+ * @param forgeRoot forge 根目录(含 .cache/ 子目录)
39
+ * @param mode 当前操作模式(LockMode union 支持 legacy-bridge-* 与 'migrate' 是为统一类型;
40
+ * 实际 callsite 应仅传 'archive' / 'recover' / 'resume-summary';
41
+ * legacy-bridge-* 与 'migrate' 走 `acquireLockByPath` 路径)
42
+ * @returns release 函数(幂等,可多次调用)
43
+ */
44
+ export declare function acquireLock(forgeRoot: string, mode: LockMode): Promise<() => Promise<void>>;
45
+ export {};
46
+ //# sourceMappingURL=lock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lock.d.ts","sourceRoot":"","sources":["../../src/core/lock.ts"],"names":[],"mappings":"AAYA,MAAM,MAAM,QAAQ,GAChB,SAAS,GACT,SAAS,GACT,gBAAgB,GAChB,mBAAmB,GACnB,0BAA0B,GAC1B,qBAAqB,GACrB,uBAAuB,GACvB,0BAA0B,GAC1B,SAAS,CAAC;AAEd,kBAAkB;AAClB,UAAU,QAAQ;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,QAAQ,CAAC;CAChB;AAED,0BAA0B;AAC1B,qBAAa,aAAc,SAAQ,KAAK;aACV,MAAM,EAAE,QAAQ;gBAAhB,MAAM,EAAE,QAAQ;CAM7C;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,QAAQ,EACd,QAAQ,GAAE,MAAuB,GAChC,OAAO,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAiC9B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAEjG"}
@@ -0,0 +1,98 @@
1
+ // archive 进程锁 — Plan 3 Task 12;Plan 7 Phase A Task A2 扩展支持 legacy-bridge.lock
2
+ // 用 O_CREAT|O_EXCL 独占创建 .cache/<lockName>,含 stale pid 检测
3
+ import { writeFile, readFile, rm } from 'node:fs/promises';
4
+ import { existsSync, openSync, closeSync, mkdirSync, constants } from 'node:fs';
5
+ import { join, dirname } from 'node:path';
6
+ /** 当 lock 被另一个活进程持有时抛出 */
7
+ export class LockHeldError extends Error {
8
+ holder;
9
+ constructor(holder) {
10
+ super(`another forge archive is in progress (pid ${holder.pid}, mode ${holder.mode}, started ${holder.started_at})`);
11
+ this.holder = holder;
12
+ this.name = 'LockHeldError';
13
+ }
14
+ }
15
+ /**
16
+ * acquireLock 的可定制 lock 文件版本(决策 #23)。
17
+ *
18
+ * legacy-bridge 命令获 forge/.cache/legacy-bridge.lock(独立于 archive.lock);
19
+ * regenerate/index 同时获 archive.lock + legacy-bridge.lock(顺序固定:先 archive.lock 后 legacy-bridge.lock)。
20
+ *
21
+ * @param forgeRoot forge 根目录
22
+ * @param mode 操作 mode(也写入 lock 数据)
23
+ * @param lockName lock 文件名,默认 'archive.lock'
24
+ * @returns release 函数(幂等,可多次调用)
25
+ */
26
+ export async function acquireLockByPath(forgeRoot, mode, lockName = 'archive.lock') {
27
+ const lockPath = join(forgeRoot, '.cache', lockName);
28
+ mkdirSync(dirname(lockPath), { recursive: true });
29
+ let fd;
30
+ try {
31
+ fd = openSync(lockPath, constants.O_CREAT | constants.O_EXCL | constants.O_WRONLY, 0o644);
32
+ }
33
+ catch (err) {
34
+ if (err.code === 'EEXIST') {
35
+ const data = JSON.parse(await readFile(lockPath, 'utf8'));
36
+ if (!isPidAlive(data.pid)) {
37
+ await rm(lockPath, { force: true });
38
+ return acquireLockByPath(forgeRoot, mode, lockName);
39
+ }
40
+ throw new LockHeldError(data);
41
+ }
42
+ throw err;
43
+ }
44
+ const data = {
45
+ pid: process.pid,
46
+ started_at: new Date().toISOString(),
47
+ mode,
48
+ };
49
+ await writeFile(lockPath, JSON.stringify(data, null, 2), { encoding: 'utf8', flag: 'w' });
50
+ closeSync(fd);
51
+ return async () => {
52
+ if (existsSync(lockPath)) {
53
+ await rm(lockPath, { force: true });
54
+ }
55
+ };
56
+ }
57
+ /**
58
+ * 获取 archive 进程锁(`.cache/archive.lock` 专用 wrapper)。
59
+ *
60
+ * 用 O_CREAT|O_EXCL 原子创建 .cache/archive.lock:
61
+ * - 若文件不存在 → 独占创建,写入 {pid, started_at, mode},返回 release 函数
62
+ * - 若文件已存在:
63
+ * - 检查持有者 pid 是否存活(isPidAlive)
64
+ * - stale(进程已死) → 删除 lock + 递归重试
65
+ * - alive → 抛 LockHeldError
66
+ *
67
+ * **使用约定**:本函数仅供 archive / recover / **resume-summary**(plan-9e1 v3 NIT 1 修订)命令使用;
68
+ * legacy-bridge 命令应直接调 `acquireLockByPath(forgeRoot, mode, 'legacy-bridge.lock')`(决策 #23)。
69
+ *
70
+ * @param forgeRoot forge 根目录(含 .cache/ 子目录)
71
+ * @param mode 当前操作模式(LockMode union 支持 legacy-bridge-* 与 'migrate' 是为统一类型;
72
+ * 实际 callsite 应仅传 'archive' / 'recover' / 'resume-summary';
73
+ * legacy-bridge-* 与 'migrate' 走 `acquireLockByPath` 路径)
74
+ * @returns release 函数(幂等,可多次调用)
75
+ */
76
+ export async function acquireLock(forgeRoot, mode) {
77
+ return acquireLockByPath(forgeRoot, mode, 'archive.lock');
78
+ }
79
+ /**
80
+ * 检查 pid 是否存活
81
+ *
82
+ * process.kill(pid, 0):向进程发信号 0(不实际发送信号),
83
+ * 仅验证进程是否存在及当前用户是否有权限访问。
84
+ * - 返回 true:进程存在
85
+ * - 返回 false:进程不存在(ESRCH)
86
+ * - 返回 true:EPERM(进程存在但无权限)
87
+ */
88
+ function isPidAlive(pid) {
89
+ try {
90
+ process.kill(pid, 0); // 不发实际信号,仅验证存活
91
+ return true;
92
+ }
93
+ catch (err) {
94
+ // ESRCH = 进程不存在;其他错误(EPERM)= 进程存在但无权限
95
+ return err.code !== 'ESRCH';
96
+ }
97
+ }
98
+ //# sourceMappingURL=lock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lock.js","sourceRoot":"","sources":["../../src/core/lock.ts"],"names":[],"mappings":"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"}
@@ -1,147 +1,40 @@
1
- import type { Finding } from '../schemas/severity.js';
2
- import type { Severity } from '../schemas/severity.js';
3
- import type { ProcessEvidence } from '../schemas/process-evidence.js';
4
- export interface VerifyMarker {
5
- schema: 'forge-verify/v1';
6
- verified_at: string;
7
- verified_by: 'ai-agent' | 'human-override';
8
- tasks_hash: string;
9
- content_hash: string;
10
- evidence: EvidenceItem[];
11
- verify_findings?: VerifyFinding[];
12
- pause_decisions?: PauseDecision[];
13
- created_by_tool_version?: string;
14
- resigned_by_tool_version?: string;
15
- /** v1.0 process_evidence 完整结构(沿 design §2.7.2);老 marker 缺等价 undefined */
16
- process_evidence?: ProcessEvidence;
17
- /** freeze 时 staging.yaml 三数组 JCS canonicalize hash 快照(archive fence cross-check 用) */
18
- process_evidence_staging_hash?: string;
19
- /** freeze 时全 JSONL ack-log.jsonl 末行 canonicalize hash 快照(挡"改最后一行"攻击) */
20
- ack_log_tail_hash?: string;
21
- /** freeze 时全 JSONL ack-log.jsonl 行数固化(挡"重写整链 + 链内自洽"攻击,brainstorm SUG1) */
22
- ack_log_entry_count?: number;
23
- }
24
- /**
25
- * VerifyFinding — verify 阶段产出的 finding 项
26
- * Reference 9a Finding 接口(沿 §3.12.1 Finding 字段冻结)
27
- * plan-9d v2 m-1 修订:改 extends Finding 而非裸 alias,留 verify-only optional 字段扩展位
28
- * (例如未来加 requirement_id?: string 显式关联 spec 章节,不打破现有接口)
29
- * **不允许 require 新字段** — 沿 superset additive 原则
30
- */
31
- export interface VerifyFinding extends Finding {
32
- }
33
- /**
34
- * chosen_option — Fluid Pause 用户决策选项(沿 design §2.1.4 / §2.1.5)
35
- * 1 = 扩 scope(更新 proposal `## What Changes`,subagent 重派)
36
- * 2 = 加 task(主代理 append 新 task 到 tasks.md,subagent 重派)
37
- * 3 = 转 out-of-scope(写到 proposal `## Out of Scope` / design `## Future Work` YAML 块,subagent 跳过 issue 继续)
38
- * 4 = Other(用户提供自由文本描述,必须配 other_rationale + other_acked_by)
39
- */
40
- export type ChosenOption = 1 | 2 | 3 | 4;
41
1
  /**
42
- * PauseDecisionapply 阶段 Fluid Pause Decision Point 主代理记录的决策项
43
- * 沿 design §2.1.5 marker schema
44
- * superset additive:四 marker 均可选 pause_decisions?,缺等价 []
45
- *
46
- * v2 codex MINOR 10 修订:本 interface 的 nullable 字段(severity_acked_by/_at /
47
- * non_blocking_rationale / other_rationale / other_acked_by)统一用 `string | null`,
48
- * **与 9a `Finding.severity_acked_by?: string` 不同**。
49
- * - 设计理由:design §2.1.5 line 256-257 YAML 示例字面用 `other_rationale: null` /
50
- * `other_acked_by: null`,marker YAML 中字段必须存在(值或填或 null),不允许"字段缺失"。
51
- * - 9a Finding 是另一回事:Finding 字段缺失等价默认值,9a 实施沿 optional 模式。
52
- * - 两 interface 独立,本 PauseDecision 沿 design YAML 字面格式。
2
+ * PauseDecisionSimple — Fluid Pause 软记录(v4 简化)
3
+ * apply 中段 subagent BLOCKED/DONE_WITH_CONCERNS/DESIGN_ISSUE_FOUND 时,
4
+ * 主代理 AskUserQuestion 4 选项后写入。无 fence 强制,marker 仅作 audit。
53
5
  */
54
- export interface PauseDecision {
55
- /** 同一 marker 内唯一(数字 id,沿 9a Finding id 模式) */
56
- id: number;
57
- /** pause 触发时刻(ISO 8601 UTC) */
6
+ export interface PauseDecisionSimple {
7
+ /** pause 触发时刻(ISO 8601 UTC,允许 ms 精度) */
58
8
  paused_at: string;
59
- /** 关联的 task(tasks.md#task-N 格式;subagent 报 DONE_WITH_CONCERNS / BLOCKED / DESIGN_ISSUE_FOUND 时所在 task) */
9
+ /** 关联 task(tasks.md#task-N 格式) */
60
10
  task_ref: string;
61
11
  /** subagent 报告的 issue 一句概括 */
62
12
  issue_summary: string;
63
- /** 主代理初判(CRITICAL 不应进 pause,本 enum 校验 + fence 重定向) */
64
- severity: Severity;
65
- /** WARNING 必须有,SUGGESTION 允许空(沿 design §2.1.5 fence 校验) */
66
- severity_acked_by: string | null;
67
- severity_acked_at: string | null;
68
- /** 1 | 2 | 3 | 4 — 用户在 AskUserQuestion 选择 */
69
- chosen_option: ChosenOption;
70
- /** option=1 → 'proposal.md';option=2 → 'tasks.md';option=3 → 'proposal.md' | 'design.md' */
71
- target_artifact: string;
72
- /** option=1 → '## What Changes';option=2 → 新 task 行;option=3 → '## Out of Scope' | '## Future Work' */
73
- target_anchor: string;
74
- /** option=3 必填(沿 design §2.1.5 fence 校验);其他选项填 null */
75
- non_blocking_rationale: string | null;
76
- /** option=4 必填(用户提供自由文本) */
77
- other_rationale: string | null;
78
- /** option=4 必填(用户在 marker 之外某处确认 — fence 仅校验非空,不校验来源) */
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;
13
+ /** 1=扩 scope / 2=加 task / 3=转 out-of-scope / 4=Other */
14
+ chosen_option: 1 | 2 | 3 | 4;
15
+ /** 自由 prose,user/AI 想写啥写啥( fence 校验) */
16
+ notes?: string;
85
17
  }
86
- export interface EvidenceItem {
87
- scenario_id: string;
88
- test_command: string;
89
- test_file: string;
90
- log_path: string;
91
- log_hash: string;
92
- pass: boolean;
18
+ /** verify marker v4 极简 schema */
19
+ export interface VerifyMarker {
20
+ schema: 'forge-verify/v2';
21
+ /** verify 执行时刻(ISO 8601 UTC,允许 ms 精度 — V-1 修复) */
22
+ verified_at: string;
23
+ /** 'ai-agent' | username */
24
+ verified_by: string;
25
+ /** Fluid Pause 软记录(可选,无 fence) */
26
+ pause_decisions?: PauseDecisionSimple[];
27
+ /** 工具版本号(来自 FORGE_VERSION,v3.1.1 起动态读 package.json) */
28
+ created_by_tool_version?: string;
93
29
  }
30
+ /** review marker v4 极简 schema(镜像 verify) */
94
31
  export interface ReviewMarker {
95
- schema: 'forge-review/v1';
32
+ schema: 'forge-review/v2';
96
33
  reviewed_at: string;
97
- reviewed_by: 'ai-agent' | 'human-override';
98
- tasks_hash: string;
99
- content_hash: string;
100
- git: GitInfo;
101
- review_outcomes: ReviewOutcome[];
102
- pause_decisions?: PauseDecision[];
103
- created_by_tool_version?: string;
104
- resigned_by_tool_version?: string;
105
- process_evidence?: ProcessEvidence;
106
- process_evidence_staging_hash?: string;
107
- ack_log_tail_hash?: string;
108
- ack_log_entry_count?: number;
109
- }
110
- export interface GitInfo {
111
- is_git_repo: boolean;
112
- head?: string;
113
- diff_hash?: string;
114
- diff_pathspec?: {
115
- include: string[];
116
- exclude: string[];
117
- };
118
- }
119
- export interface ReviewOutcome {
120
- severity: 'S' | 'C' | 'L' | 'CRITICAL' | 'WARNING' | 'SUGGESTION';
121
- accepted: boolean;
122
- resolved: boolean;
123
- task_ref?: string;
124
- rationale?: string;
125
- }
126
- export interface VerifyFailedMarker {
127
- schema: 'forge-verify-failed/v1';
128
- failed_at: string;
129
- reasons: string[];
130
- fake_completions: string[];
131
- appended_tasks: string[];
132
- verify_findings?: VerifyFinding[];
133
- pause_decisions?: PauseDecision[];
134
- created_by_tool_version?: string;
135
- resigned_by_tool_version?: string;
136
- }
137
- export interface ReviewFailedMarker {
138
- schema: 'forge-review-failed/v1';
139
- failed_at: string;
140
- unresolved_outcomes: ReviewOutcome[];
141
- appended_tasks: string[];
142
- pause_decisions?: PauseDecision[];
34
+ reviewed_by: string;
35
+ pause_decisions?: PauseDecisionSimple[];
143
36
  created_by_tool_version?: string;
144
- resigned_by_tool_version?: string;
145
37
  }
146
- export type AnyMarker = VerifyMarker | ReviewMarker | VerifyFailedMarker | ReviewFailedMarker;
38
+ /** marker 联合类型 v4 只有两种 */
39
+ export type AnyMarker = VerifyMarker | ReviewMarker;
147
40
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/markers/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/markers/types.ts"],"names":[],"mappings":"AAWA;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,kCAAkC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,8BAA8B;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,wDAAwD;IACxD,aAAa,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,yCAAyC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,iCAAiC;AACjC,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,iBAAiB,CAAC;IAC1B,kDAAkD;IAClD,WAAW,EAAE,MAAM,CAAC;IACpB,4BAA4B;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,kCAAkC;IAClC,eAAe,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACxC,uDAAuD;IACvD,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,4CAA4C;AAC5C,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,iBAAiB,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACxC,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,4BAA4B;AAC5B,MAAM,MAAM,SAAS,GAAG,YAAY,GAAG,YAAY,CAAC"}
@@ -1,3 +1,12 @@
1
- // Marker YAML 类型 — spec §3.4
1
+ // Marker YAML 类型 — v4 OpenSpec alignment 简版(plan-v4 Phase 1 Task 1.2)
2
+ //
3
+ // v4 BREAKING change(沿 plan-v4 §6.2 / §4.2):
4
+ // - 删反加固字段:tasks_hash / content_hash / git / process_evidence /
5
+ // process_evidence_staging_hash / verify_findings / ack_log_tail_hash /
6
+ // ack_log_entry_count / evidence(EvidenceItem 数组)/ resigned_by_tool_version
7
+ // - 删 VerifyFailedMarker / ReviewFailedMarker(v4 verify/review 不再写 failed marker;
8
+ // 失败直接 abort,user 修复后重跑)
9
+ // - 简化 PauseDecision → PauseDecisionSimple(5 字段 + 自由 notes,无 fence 校验)
10
+ // - schema 版本 v1 → v2(BREAKING)
2
11
  export {};
3
12
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/markers/types.ts"],"names":[],"mappings":"AAAA,6BAA6B"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/markers/types.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,EAAE;AACF,6CAA6C;AAC7C,gEAAgE;AAChE,0EAA0E;AAC1E,8EAA8E;AAC9E,kFAAkF;AAClF,2BAA2B;AAC3B,uEAAuE;AACvE,gCAAgC"}
@@ -3,7 +3,7 @@
3
3
  // 对应 spec §1.5 主流程伪码 v4 + §3.1 错误矩阵 + §3.4 trace
4
4
  // Task 5.16:enforceArchiveIntegrity(M13) / Task 5.17:isBundled(M16)
5
5
  // P5 final review fixups C1+C2:runRegenerate 接入主流程
6
- import { acquireLockByPath, LockHeldError } from '../archive/lock.js';
6
+ import { acquireLockByPath, LockHeldError } from '../lock.js';
7
7
  import { existsSync } from 'node:fs';
8
8
  import { mkdir, rename, readFile, writeFile, unlink, stat } from 'node:fs/promises';
9
9
  import { join, dirname } from 'node:path';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/migrate/index.ts"],"names":[],"mappings":"AAAA,4BAA4B;AAC5B,2DAA2D;AAC3D,iDAAiD;AACjD,oEAAoE;AACpE,mDAAmD;AAEnD,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACpF,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACjF,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAkC,MAAM,aAAa,CAAC;AASpG,OAAO,EAAE,SAAS,EAAE,CAAC;AAGrB,uBAAuB;AACvB,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAoB;IACnD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAEtC,yBAAyB;IACzB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACpD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAG,GAAa,CAAC,OAAO,EAAW,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,MAAM,gBAAgB,MAAM,CAAC,OAAO,IAAI,gBAAgB,EAAE,CAAC,CAAC;QAC1F,OAAO,CAAC,CAAC;IACX,CAAC;IAED,6DAA6D;IAC7D,MAAM,oBAAoB,CAAC,GAAG,CAAC,CAAC;IAEhC,2DAA2D;IAC3D,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;IAE9C,IAAI,OAA0C,CAAC;IAC/C,kFAAkF;IAClF,0EAA0E;IAC1E,MAAM,aAAa,GAAG,GAAG,EAAE;QACzB,OAAO,CAAC,KAAK,CAAC,mEAAmE,CAAC,CAAC;QACnF,eAAe,CAAC,KAAK,EAAE,CAAC;QACxB,+CAA+C;QAC/C,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;IAC5C,CAAC,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IAEtC,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;QAEjF,8FAA8F;QAC9F,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;QAEjC,MAAM,GAAG,GAAgB;YACvB,GAAG;YACH,eAAe,EAAE,IAAI,CAAC,WAAW;YACjC,SAAS;SACV,CAAC;QAEF,2BAA2B;QAC3B,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAS,CAAC,CAAC;QAEjD,0CAA0C;QAC1C,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,CAAC,KAAK,CAAC,uCAAuC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;YACxE,OAAO,CAAC,CAAC;QACX,CAAC;QAED,+DAA+D;QAC/D,uDAAuD;QACvD,IAAI,IAAI,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAE5C,wDAAwD;QACxD,aAAa;QACb,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,YAAY,CAAC,CAAC;QACvE,IAAI,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,4BAA4B,CAAC,EAAE,CAAC;YAC9D,OAAO,CAAC,KAAK,CAAC,aAAa,UAAU,CAAC,MAAM,qBAAqB,CAAC,CAAC;YACnE,OAAO,CAAC,CAAC;QACX,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAC;YACjF,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,EAAE,aAAa,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,CAAC;YACjF,OAAO,CAAC,CAAC;QACX,CAAC;QAED,+CAA+C;QAC/C,MAAM,cAAc,GAAG,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAEzD,uEAAuE;QACvE,uEAAuE;QACvE,IAAI,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC;QAEtC,uFAAuF;QACvF,IAAI,SAAS,EAAE,IAAI,YAAY,EAAE,CAAC;YAChC,IAAI,MAAM,CAAC,EAAE,KAAK,aAAa,EAAE,CAAC;gBAChC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;oBACvB,+DAA+D;oBAC/D,OAAO,CAAC,KAAK,CACX,gFAAgF,CACjF,CAAC;oBACF,OAAO,CAAC,CAAC;gBACX,CAAC;gBACD,uCAAuC;gBACvC,MAAM,GAAG,GAAG,6DAA6D,cAAc,CAAC,MAAM,2DAA2D,CAAC;gBAC1J,MAAM,EAAE,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;gBAClC,IAAI,CAAC,EAAE;oBAAE,OAAO,CAAC,CAAC;gBAClB,YAAY,GAAG,KAAK,CAAC;YACvB,CAAC;iBAAM,CAAC;gBACN,kEAAkE;gBAClE,OAAO,CAAC,IAAI,CACV,8EAA8E,CAC/E,CAAC;gBACF,YAAY,GAAG,KAAK,CAAC;YACvB,CAAC;QACH,CAAC;QAED,sDAAsD;QACtD,MAAM,eAAe,GAAG,uBAAuB,CAC7C,IAAI,EACJ,YAAY,EACZ,IAAI,CAAC,aAAa,IAAI,KAAK,CAC5B,CAAC;QACF,IAAI,eAAe,CAAC,KAAK,EAAE,CAAC;YAC1B,OAAO,CAAC,CAAC;QACX,CAAC;QACD,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC;QAC5B,MAAM,UAAU,GAAG,eAAe,CAAC,UAAU,CAAC;QAC9C,OAAO,CAAC,GAAG,CACT,qBAAqB,IAAI,CAAC,KAAK,CAAC,MAAM,4BAA4B,cAAc,CAAC,MAAM,EAAE,CAC1F,CAAC;QAEF,+BAA+B;QAC/B,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QACrD,MAAM,cAAc,GAAG,MAAM,gBAAgB,CAAC,MAAM,EAAE;YACpD,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,KAAK;YAC1B,SAAS,EAAE,WAAW;SACvB,CAAC,CAAC;QAEH,uDAAuD;QACvD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,2BAA2B,CAAC,CAAC;QACnE,MAAM,KAAK,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAEhD,MAAM,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAc,EAAE,CAAC;QAE/B,IAAI,CAAC;YACH,KAAK,MAAM,EAAE,IAAI,cAAc,CAAC,GAAG,EAAE,CAAC;gBACpC,kDAAkD;gBAClD,MAAM,YAAY,GAAY;oBAC5B,IAAI,EAAE,EAAE,CAAC,MAAM;oBACf,EAAE,EAAE,EAAE,CAAC,MAAM;oBACb,IAAI,EAAE,EAAE,CAAC,IAAI;oBACb,SAAS,EAAE,EAAE;oBACb,QAAQ,EAAE,SAAS;oBACnB,KAAK,EAAE,IAAI;oBACX,SAAS,EAAE,EAAE;oBACb,MAAM,EAAE,SAAS;iBAClB,CAAC;gBACF,MAAM,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;gBAEnC,gCAAgC;gBAChC,IAAI,WAAW,GAAG,EAAE,CAAC;gBACrB,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;oBACd,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;oBAC9C,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;gBAC/C,CAAC;gBACD,MAAM,SAAS,GAAG,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC;gBACrC,MAAM,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBACrD,MAAM,SAAS,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;gBAEhD,uCAAuC;gBACvC,MAAM,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;gBAEnC,yBAAyB;gBACzB,MAAM,cAAc,GAAY;oBAC9B,GAAG,YAAY;oBACf,QAAQ,EAAE,IAAI,EAAE,6BAA6B;oBAC7C,MAAM,EAAE,WAAW;iBACpB,CAAC;gBACF,MAAM,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;gBACrC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAChC,CAAC;YAED,yDAAyD;YACzD,IAAI,YAAY,EAAE,CAAC;gBACjB,qEAAqE;gBACrE,MAAM,cAAc,GAAgC,EAAE,CAAC;gBACvD,KAAK,MAAM,CAAC,IAAI,cAAc,EAAE,CAAC;oBAC/B,IAAI,YAAY,GAAG,CAAC,CAAC;oBACrB,IAAI,CAAC,CAAC,WAAW,KAAK,QAAQ,IAAI,CAAC,CAAC,WAAW,KAAK,OAAO,EAAE,CAAC;wBAC5D,6CAA6C;wBAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC;wBACjE,MAAM,IAAI,GAAG,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,WAAiC,CAAC,CAAC;wBACpE,IAAI,IAAI,EAAE,CAAC;4BACT,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC;wBAC3B,CAAC;oBACH,CAAC;yBAAM,IAAI,CAAC,CAAC,WAAW,KAAK,MAAM,IAAI,CAAC,CAAC,aAAa,EAAE,CAAC;wBACvD,kDAAkD;wBAClD,IAAI,CAAC;4BACH,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;4BACtC,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC;wBACxB,CAAC;wBAAC,MAAM,CAAC;4BACP,YAAY,GAAG,CAAC,CAAC;wBACnB,CAAC;oBACH,CAAC;oBACD,cAAc,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;gBAC9C,CAAC;gBAED,iEAAiE;gBACjE,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,mBAAmB,CAAC,cAAc,CAAC,IAAI,gBAAgB,EAAE,CAAC;oBACzF,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,cAAc,CAAC,CAAC;oBAC7D,uCAAuC;oBACvC,MAAM,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;oBACvC,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;oBAC5D,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC;wBAClB,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;4BACvB,0CAA0C;4BAC1C,OAAO,CAAC,KAAK,CACX,gCAAgC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,gBAAgB,4BAA4B,CAChH,CAAC;4BACF,wCAAwC;4BACxC,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;4BACtC,OAAO,CAAC,CAAC;wBACX,CAAC;wBACD,mDAAmD;wBACnD,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC;wBAC1E,MAAM,eAAe,CAAC,WAAW,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,gBAAgB,EAAE,CAAC,CAAC;oBACrF,CAAC;gBACH,CAAC;gBAED,mDAAmD;gBACnD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;gBAChD,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,OAAO,CAAC,IAAI,CACV,uFAAuF,CACxF,CAAC;gBACJ,CAAC;qBAAM,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACrC,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;oBAEzC,8BAA8B;oBAC9B,MAAM,WAAW,GAAG,MAAM,aAAa,CAAC;wBACtC,MAAM;wBACN,IAAI;wBACJ,GAAG;wBACH,eAAe;wBACf,oCAAoC;wBACpC,MAAM,EAAE,MAAkE;wBAC1E,aAAa,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;4BAC1B,MAAM,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;4BACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;wBACpB,CAAC;qBACF,CAAC,CAAC;oBACH,OAAO,CAAC,GAAG,CACT,8BAA8B,WAAW,CAAC,SAAS,eAAe,WAAW,CAAC,MAAM,2CAA2C,CAChI,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,8DAA8D;YAC9D,qDAAqD;YACrD,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YACtB,MAAM,UAAU,GAAiB;gBAC/B,OAAO,EAAE,CAAC;gBACV,MAAM,EAAE,MAAM,CAAC,EAAE;gBACjB,UAAU,EAAE,MAAM,CAAC,QAAS;gBAC5B,EAAE;gBACF,GAAG,EAAE,QAAQ;gBACb,SAAS,EAAE,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC3F,UAAU,EAAE,yCAAyC;gBACrD,WAAW,EACT,MAAM,CAAC,EAAE,KAAK,UAAU;oBACtB,CAAC,CAAC,qBAAqB;oBACvB,CAAC,CAAC,2CAA2C;aAClD,CAAC;YACF,sDAAsD;YACtD,MAAM,aAAa,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;YAC7C,MAAM,iBAAiB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;YAEjD,OAAO,CAAC,CAAC;QACX,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,wDAAwD;YACxD,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YACtC,MAAM,mBAAmB,CAAC,WAAW,CAAC,CAAC;YACvC,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,aAAa,EAAE,CAAC;YACjC,qDAAqD;YACrD,OAAO,CAAC,KAAK,CACX,yCAAyC,GAAG,CAAC,MAAM,CAAC,GAAG,UAAU,GAAG,CAAC,MAAM,CAAC,IAAI,aAAa,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,CACrH,CAAC;YACF,OAAO,CAAC,CAAC;QACX,CAAC;QACD,oEAAoE;QACpE,IAAI,GAAG,YAAY,iBAAiB,EAAE,CAAC;YACrC,OAAO,CAAC,KAAK,CAAC,aAAa,GAAG,CAAC,OAAO,yBAAyB,CAAC,CAAC;YACjE,OAAO,CAAC,CAAC;QACX,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,gCAAgC;QACtE,IAAI,OAAO;YAAE,MAAM,OAAO,EAAE,CAAC;IAC/B,CAAC;AACH,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,GAAW;IAC7C,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/D,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,cAAc,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACrE,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AACrE,CAAC;AAED;;;;;;;;GAQG;AACH,KAAK,UAAU,mBAAmB,CAAC,WAAmB;IACpD,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO;IACrC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACpD,MAAM,gBAAgB,GAAa,EAAE,CAAC;IACtC,sCAAsC;IACtC,MAAM,cAAc,GAAiD,EAAE,CAAC;IACxE,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YAAE,SAAS;QAC3B,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAY,CAAC;YACvC,IAAI,EAAE,CAAC,MAAM,KAAK,WAAW;gBAAE,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;iBACvD,IAAI,EAAE,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBACjC,cAAc,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,GAAG,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YACpE,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,wBAAwB;QAC1B,CAAC;IACH,CAAC;IACD,+CAA+C;IAC/C,KAAK,MAAM,CAAC,IAAI,gBAAgB,CAAC,OAAO,EAAE,EAAE,CAAC;QAC3C,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YAClB,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC1B,OAAO,CAAC,KAAK,CAAC,+CAA+C,CAAC,EAAE,EAAG,CAAW,CAAC,OAAO,CAAC,CAAC;YAC1F,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,oEAAoE;IACpE,KAAK,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,cAAc,EAAE,CAAC;QACnD,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACxB,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;gBAChC,OAAO,CAAC,KAAK,CAAC,yCAAyC,OAAO,EAAE,EAAG,CAAW,CAAC,OAAO,CAAC,CAAC;YAC1F,CAAC,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChC,yCAAyC;YACzC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;gBACjC,OAAO,CAAC,KAAK,CAAC,0CAA0C,QAAQ,EAAE,EAAG,CAAW,CAAC,OAAO,CAAC,CAAC;YAC5F,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,wCAAwC;AACxC,+EAA+E;AAE/E;;;;;GAKG;AACH,SAAS,uBAAuB,CAC9B,IAAwB,EACxB,YAAqB,EACrB,aAAsB;IAMtB,MAAM,UAAU,GAAmE,EAAE,CAAC;IACtF,6CAA6C;IAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAEpD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,CAAC,cAAc,KAAK,SAAS;YAAE,SAAS;QAC7C,MAAM,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC;QAC3C,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACvE,IAAI,WAAW,IAAI,QAAQ;YAAE,SAAS,CAAC,gBAAgB;QAEvD,IAAI,YAAY;YAAE,SAAS,CAAC,iBAAiB;QAE7C,6BAA6B;QAC7B,IAAI,aAAa,EAAE,CAAC;YAClB,OAAO,CAAC,KAAK,CACX,wCAAwC,CAAC,CAAC,IAAI,6BAA6B,CAC5E,CAAC;YACF,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QACjE,CAAC;QACD,uEAAuE;QACvE,OAAO,CAAC,IAAI,CACV,wCAAwC,CAAC,CAAC,IAAI,uCAAuC,CACtF,CAAC;QACF,CAAC,CAAC,cAAc,GAAG,QAAQ,CAAC;QAC5B,UAAU,CAAC,IAAI,CAAC;YACd,MAAM,EAAE,CAAC,CAAC,IAAI;YACd,IAAI,EAAE,SAAS;YACf,EAAE,EAAE,QAAQ;YACZ,MAAM,EAAE,mEAAmE;SAC5E,CAAC,CAAC;IACL,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAClE,CAAC;AAED,+EAA+E;AAC/E,yCAAyC;AACzC,+EAA+E;AAE/E;;;GAGG;AACH,SAAS,SAAS;IAChB,OAAO,CACL,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,GAAG;QACpC,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,IAAI,KAAK,CAAC,CACxE,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,WAAW,CAAC,OAAe;IACxC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACrB,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/migrate/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"artifact-observer.d.ts","sourceRoot":"","sources":["../../../src/core/monitor/artifact-observer.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAgB,MAAM,YAAY,CAAC;AA2I3D;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU,EAAE,CAoEpF"}
1
+ {"version":3,"file":"artifact-observer.d.ts","sourceRoot":"","sources":["../../../src/core/monitor/artifact-observer.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,UAAU,EAAgB,MAAM,YAAY,CAAC;AAoE3D;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU,EAAE,CAsEpF"}
@@ -1,20 +1,25 @@
1
1
  // src/core/monitor/artifact-observer.ts — 把 forge 常规产物反推成 CLI 层 trace 事件(spec §3 / §3.2)
2
+ //
3
+ // v4 简化(plan-v4 Phase 4 Task 4.5b):
4
+ // - 删 observeAckLog —— v4 无 ack-log.jsonl
5
+ // - 删 marker 中的 fence_observed —— v4 marker 无 verify_findings/review_outcomes,fence 语义消亡
6
+ // - marker_observed data 简化 —— v4 marker 极简(VerifyMarker v2 / ReviewMarker v2),无 tasks_hash/content_hash
7
+ // - 删 .verify-failed / .review-failed 监听 —— v4 verify/review 失败直接 abort,不写 failed marker
8
+ // - archive 部分 fence_observed 字段对齐 v4 archive_summary v2(verified_by/reviewed_by/spec_updates_applied/handoff_to_backlog)
2
9
  import { existsSync, readFileSync, readdirSync } from 'node:fs';
3
10
  import { join } from 'node:path';
4
11
  import { parse as parseYAML } from 'yaml';
5
12
  import { parseMarker } from '../markers/parse.js';
6
13
  import { validateMarkerSchema } from '../validate/marker-schema.js';
7
14
  import { validateArchiveSummarySchema } from '../validate/archive-summary-schema.js';
8
- /** marker 文件名 → 监控阶段( Step 1 确认的实际文件名为准) */
15
+ /** marker 文件名 → 监控阶段(v4:只有 verify-passed / review-passed,无 failed marker) */
9
16
  const MARKER_FILES = {
10
17
  '.verify-passed': 'verify',
11
- '.verify-failed': 'verify',
12
18
  '.review-passed': 'review',
13
- '.review-failed': 'review',
14
19
  };
15
20
  function mkEvent(changeId, stage, event, data, ts) {
16
21
  return {
17
- // 优先用产物自带时间戳;缺失才回退观察时刻 —— 报告时间线才不乱序(Codex 计划审查第 4 轮 检查点 3)
22
+ // 优先用产物自带时间戳;缺失才回退观察时刻 —— 报告时间线才不乱序
18
23
  ts: ts ?? new Date().toISOString(),
19
24
  schema: 'forge-monitor-trace/v1',
20
25
  change_id: changeId,
@@ -24,7 +29,7 @@ function mkEvent(changeId, stage, event, data, ts) {
24
29
  data,
25
30
  };
26
31
  }
27
- /** 扫一个目录里的 4 个 marker 文件,产出 marker_observed / record_error 事件 */
32
+ /** 扫一个目录里的 marker 文件,产出 marker_observed / record_error 事件(v4:仅 marker_observed,无 fence_observed) */
28
33
  function observeMarkers(dir, relBase, changeId) {
29
34
  const events = [];
30
35
  for (const [fileName, stage] of Object.entries(MARKER_FILES)) {
@@ -34,44 +39,20 @@ function observeMarkers(dir, relBase, changeId) {
34
39
  const relPath = join(relBase, fileName);
35
40
  try {
36
41
  const marker = parseMarker(readFileSync(markerPath, 'utf8'));
37
- // marker 是 union 类型;失败类 marker 无 hash 字段,转 record 安全取值
38
42
  const obj = marker;
39
43
  const validation = validateMarkerSchema(marker, markerPath);
40
- // 事件 ts 取 marker 自带时间戳(verify→verified_at / review→reviewed_at / failed→failed_at);
41
- // 报告「阶段时间线」按真实时序排序才有意义(Codex 计划审查第 4 轮 检查点 3)。
42
- // 用 typeof runtime guard 而非 as 断言 —— schema-invalid marker 的时间戳字段可能不是 string,
43
- // as 会让非 string 值漏进 TraceEvent.ts,致 Task 11 排序 localeCompare 崩溃(第 5 轮 Finding 1)
44
+ // 事件 ts 取 marker 自带时间戳(verify→verified_at / review→reviewed_at)
44
45
  const markerTs = typeof obj.verified_at === 'string'
45
46
  ? obj.verified_at
46
47
  : typeof obj.reviewed_at === 'string'
47
48
  ? obj.reviewed_at
48
- : typeof obj.failed_at === 'string'
49
- ? obj.failed_at
50
- : undefined;
49
+ : undefined;
51
50
  events.push(mkEvent(changeId, stage, 'marker_observed', {
52
51
  marker_schema: marker.schema,
53
52
  path: relPath,
54
- hashes: { tasks_hash: obj.tasks_hash, content_hash: obj.content_hash },
55
53
  ok: validation.valid, // spec §3.2:ok = marker schema 校验是否通过
56
- observed_at: new Date().toISOString(), // observer 实际跑的时刻,与 ts 区分
54
+ observed_at: new Date().toISOString(),
57
55
  }, markerTs));
58
- // I-2(spec §3.2):verify/review fence_observed —— 从 marker findings 抽未决项。
59
- // findings 数组字段名按 marker 类型不同:verify(pass/fail)用 verify_findings;
60
- // review-passed 用 review_outcomes;review-failed 用 unresolved_outcomes。
61
- // 一个 marker 至多含其一,逐个探测取首个数组。
62
- let rawFindings = [];
63
- for (const key of ['verify_findings', 'review_outcomes', 'unresolved_outcomes']) {
64
- if (Array.isArray(obj[key])) {
65
- rawFindings = obj[key];
66
- break;
67
- }
68
- }
69
- const blockedFindings = rawFindings
70
- .filter((f) => f.resolved === false)
71
- .map((f, i) => ({ id: f.id ?? i, severity: f.severity ?? null, dimension: f.dimension }));
72
- // 'S' 是 review_outcomes 的 CRITICAL 简码(verify_findings 不用简码)
73
- const fenceOk = !blockedFindings.some((b) => b.severity === 'CRITICAL' || b.severity === 'S');
74
- events.push(mkEvent(changeId, stage, 'fence_observed', { level: stage, ok: fenceOk, blocked_findings: blockedFindings, path: relPath }, markerTs));
75
56
  }
76
57
  catch (err) {
77
58
  events.push(mkEvent(changeId, stage, 'record_error', { path: relPath, error: err.message }));
@@ -79,39 +60,6 @@ function observeMarkers(dir, relBase, changeId) {
79
60
  }
80
61
  return events;
81
62
  }
82
- /** 读一个 change 目录的 .evidence/ack-log.jsonl,对每条 ack entry 产 ack_observed 事件(spec §3.2) */
83
- function observeAckLog(dir, changeId) {
84
- const events = [];
85
- const logPath = join(dir, '.evidence', 'ack-log.jsonl');
86
- if (!existsSync(logPath))
87
- return events;
88
- let lines;
89
- try {
90
- lines = readFileSync(logPath, 'utf8').split(/\r?\n/);
91
- }
92
- catch {
93
- return events; // 读失败 → 跳过,never-throw
94
- }
95
- for (const line of lines) {
96
- if (!line.trim())
97
- continue;
98
- try {
99
- const entry = JSON.parse(line);
100
- if (entry.kind !== 'ack')
101
- continue; // 只记 ack entry,跳过 evidence-helper
102
- events.push(mkEvent(changeId, 'ack-confirm', 'ack_observed', {
103
- action: entry.action ?? null,
104
- finding_id: entry.finding_id ?? null,
105
- severity: entry.target_severity ?? null,
106
- user: entry.user ?? null,
107
- }, typeof entry.timestamp === 'string' ? entry.timestamp : undefined));
108
- }
109
- catch {
110
- /* 坏 JSON 行跳过 */
111
- }
112
- }
113
- return events;
114
- }
115
63
  /**
116
64
  * 扫描某 change 的产物,反推 CLI 层事件(spec §3 / §3.2)。
117
65
  * 同时扫 active 目录 forge/changes/<id>/ 与 archive 目录 forge/changes/archive/<id>/
@@ -120,15 +68,12 @@ function observeAckLog(dir, changeId) {
120
68
  */
121
69
  export function observeArtifacts(projectRoot, changeId) {
122
70
  const events = [];
123
- // 1. active change 目录的 marker + ack-log
71
+ // 1. active change 目录的 marker
124
72
  const activeDir = join(projectRoot, 'forge', 'changes', changeId);
125
73
  if (existsSync(activeDir)) {
126
74
  events.push(...observeMarkers(activeDir, join('forge', 'changes', changeId), changeId));
127
- events.push(...observeAckLog(activeDir, changeId));
128
75
  }
129
76
  // 2. archive 目录 —— archive 成功后 change 移到 forge/changes/archive/<YYYY-MM-DD>-<changeId>/
130
- // (transaction.ts:56 给目录名加 archiveDate 前缀;monitor 不知 archiveDate,按正则反解;
131
- // Codex 计划审查第 2 轮 F-2 / 新-1 / 新-3)
132
77
  const archiveRoot = join(projectRoot, 'forge', 'changes', 'archive');
133
78
  if (existsSync(archiveRoot)) {
134
79
  try {
@@ -142,24 +87,29 @@ export function observeArtifacts(projectRoot, changeId) {
142
87
  const archiveDir = join(archiveRoot, entry.name);
143
88
  const archiveRel = join('forge', 'changes', 'archive', entry.name);
144
89
  events.push(...observeMarkers(archiveDir, archiveRel, changeId));
145
- events.push(...observeAckLog(archiveDir, changeId));
146
- // archive_summary.yaml —— 三级 fence 的 archive 侧裁决产物(spec §3.2)
90
+ // archive_summary.yaml —— archive 阶段产物(v4 v2:无 fence 拒签语义,纯 audit)
147
91
  const summaryPath = join(archiveDir, 'archive_summary.yaml');
148
92
  if (!existsSync(summaryPath))
149
93
  continue;
150
94
  const summaryRel = join(archiveRel, 'archive_summary.yaml');
151
95
  try {
152
96
  const summary = parseYAML(readFileSync(summaryPath, 'utf8'));
153
- // Codex 计划审查第 2 轮 新-2:用完整 schema 校验定 ok,而非浅守卫 looksLikeArchiveSummary
154
97
  const validation = validateArchiveSummarySchema(summary, summaryPath);
155
98
  const s = (summary ?? {});
156
- events.push(mkEvent(changeId, 'archive', 'fence_observed', {
157
- level: 'archive',
158
- ok: validation.valid,
99
+ // v4 archive_summary v2 字段(沿 src/core/schemas/archive-summary.ts)
100
+ const specUpdates = Array.isArray(s.spec_updates_applied)
101
+ ? s.spec_updates_applied.length
102
+ : 0;
103
+ const handoff = Array.isArray(s.handoff_to_backlog)
104
+ ? s.handoff_to_backlog.length
105
+ : 0;
106
+ events.push(mkEvent(changeId, 'archive', 'archive_summary_observed', {
159
107
  path: summaryRel,
160
- verify_passed: s.verify_passed,
161
- review_passed: s.review_passed,
162
- process_evidence_summary: s.process_evidence_summary,
108
+ ok: validation.valid,
109
+ verified_by: s.verified_by,
110
+ reviewed_by: s.reviewed_by,
111
+ spec_updates_applied_count: specUpdates,
112
+ handoff_to_backlog_count: handoff,
163
113
  observed_at: new Date().toISOString(),
164
114
  }, typeof s.archived_at === 'string' ? s.archived_at : undefined));
165
115
  }