loopforge 1.8.0 → 1.12.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 (71) hide show
  1. package/dist/backends/fs.d.ts.map +1 -1
  2. package/dist/backends/fs.js +1 -2
  3. package/dist/backends/fs.js.map +1 -1
  4. package/dist/backends/interface.d.ts +2 -0
  5. package/dist/backends/interface.d.ts.map +1 -1
  6. package/dist/builder.d.ts +6 -10
  7. package/dist/builder.d.ts.map +1 -1
  8. package/dist/builder.js +128 -63
  9. package/dist/builder.js.map +1 -1
  10. package/dist/engine.d.ts +2 -2
  11. package/dist/engine.d.ts.map +1 -1
  12. package/dist/engine.js +40 -53
  13. package/dist/engine.js.map +1 -1
  14. package/dist/index.d.ts +2 -2
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +1 -1
  17. package/dist/index.js.map +1 -1
  18. package/dist/loop-compiler.d.ts +10 -2
  19. package/dist/loop-compiler.d.ts.map +1 -1
  20. package/dist/loop-compiler.js +207 -117
  21. package/dist/loop-compiler.js.map +1 -1
  22. package/dist/mcp/session.d.ts +3 -1
  23. package/dist/mcp/session.d.ts.map +1 -1
  24. package/dist/mcp/session.js +27 -20
  25. package/dist/mcp/session.js.map +1 -1
  26. package/dist/mcp/tools.js +4 -4
  27. package/dist/memory-bridge.js +1 -1
  28. package/dist/memory-bridge.js.map +1 -1
  29. package/dist/observability.d.ts +1 -1
  30. package/dist/observability.js +1 -1
  31. package/dist/policy.d.ts +9 -9
  32. package/dist/policy.d.ts.map +1 -1
  33. package/dist/policy.js +5 -28
  34. package/dist/policy.js.map +1 -1
  35. package/dist/protocol.d.ts +38 -15
  36. package/dist/protocol.d.ts.map +1 -1
  37. package/dist/protocol.js +19 -7
  38. package/dist/protocol.js.map +1 -1
  39. package/dist/replay.js +7 -7
  40. package/dist/replay.js.map +1 -1
  41. package/dist/runtime.d.ts +3 -3
  42. package/dist/runtime.d.ts.map +1 -1
  43. package/dist/runtime.js +27 -40
  44. package/dist/runtime.js.map +1 -1
  45. package/dist/tests/builder.test.js +40 -28
  46. package/dist/tests/builder.test.js.map +1 -1
  47. package/dist/tests/engine.test.js +13 -17
  48. package/dist/tests/engine.test.js.map +1 -1
  49. package/dist/tests/generate-schema.test.js +10 -7
  50. package/dist/tests/generate-schema.test.js.map +1 -1
  51. package/dist/tests/loop-compiler.test.js +245 -27
  52. package/dist/tests/loop-compiler.test.js.map +1 -1
  53. package/dist/tests/mcp.test.js +9 -9
  54. package/dist/tests/mcp.test.js.map +1 -1
  55. package/dist/tests/memory-bridge.test.js +0 -1
  56. package/dist/tests/memory-bridge.test.js.map +1 -1
  57. package/dist/tests/policy.test.js +5 -15
  58. package/dist/tests/policy.test.js.map +1 -1
  59. package/dist/tests/protocol.test.js +3 -2
  60. package/dist/tests/protocol.test.js.map +1 -1
  61. package/dist/tests/replay.test.js +9 -9
  62. package/dist/tests/replay.test.js.map +1 -1
  63. package/dist/tests/runtime.test.js +8 -8
  64. package/dist/tests/runtime.test.js.map +1 -1
  65. package/dist/tests/verification-gate.test.js +1 -1
  66. package/dist/tests/verification-gate.test.js.map +1 -1
  67. package/dist/verification-gate.d.ts +2 -2
  68. package/dist/verification-gate.js +2 -2
  69. package/loop_policy.json +5 -23
  70. package/package.json +1 -1
  71. package/skills/perception/SKILL.md +12 -11
@@ -47,7 +47,7 @@ describe("Engine — Feedback mode", () => {
47
47
  assert.equal(result.status, AgentStatus.ERROR);
48
48
  assert.ok(result.response.error.includes("feedback payload"));
49
49
  });
50
- it("returns OK with quality score when feedback provided", () => {
50
+ it("returns OK with success flag when feedback provided", () => {
51
51
  const engine = createEngine();
52
52
  const req = makeRequest({
53
53
  mode: Mode.FEEDBACK,
@@ -60,31 +60,31 @@ describe("Engine — Feedback mode", () => {
60
60
  });
61
61
  const result = engine.invokeFeedback(req);
62
62
  assert.equal(result.status, AgentStatus.OK);
63
- assert.ok(result.response.prompt.includes("Quality Score: 5/5"));
63
+ assert.ok(result.response.prompt.includes("Success: true"));
64
64
  });
65
- it("scores quality=4 for success with fixes but no violations", () => {
65
+ it("returns OK with success=false for failures", () => {
66
66
  const engine = createEngine();
67
67
  const req = makeRequest({
68
68
  mode: Mode.FEEDBACK,
69
69
  feedback: makeExecutionFeedback({
70
- success: true,
70
+ success: false,
71
71
  constraint_violations: [],
72
72
  manual_fixes_needed: "formatting",
73
73
  output: "Works with manual tweaks",
74
74
  }),
75
75
  });
76
76
  const result = engine.invokeFeedback(req);
77
- assert.ok(result.response.prompt.includes("Quality Score: 4/5"));
77
+ assert.ok(result.response.prompt.includes("Success: false"));
78
78
  });
79
- it("updates quality trend in state", () => {
79
+ it("updates success trend in state", () => {
80
80
  const engine = createEngine();
81
81
  const req = makeRequest({
82
82
  mode: Mode.FEEDBACK,
83
83
  feedback: makeExecutionFeedback({ success: true, output: "ok" }),
84
84
  });
85
85
  engine.invokeFeedback(req);
86
- assert.equal(engine.state.quality_trend.length, 1);
87
- assert.equal(engine.state.quality_trend[0], 5);
86
+ assert.equal(engine.state.success_trend.length, 1);
87
+ assert.equal(engine.state.success_trend[0], true);
88
88
  });
89
89
  });
90
90
  describe("Engine — Circuit breaker", () => {
@@ -99,25 +99,25 @@ describe("Engine — Circuit breaker", () => {
99
99
  mode: Mode.FEEDBACK,
100
100
  feedback: makeExecutionFeedback({ success: true, output: "ok" }),
101
101
  })); // init state
102
- engine.state.quality_trend = [5, 4];
102
+ engine.state.success_trend = [true, true];
103
103
  assert.equal(engine.shouldBreak(), false);
104
104
  });
105
- it("returns true when quality is non-increasing for 3 rounds", () => {
105
+ it("returns true when 3 consecutive failures", () => {
106
106
  const engine = createEngine();
107
107
  engine.invokeFeedback(makeRequest({
108
108
  mode: Mode.FEEDBACK,
109
109
  feedback: makeExecutionFeedback({ success: true, output: "ok" }),
110
110
  }));
111
- engine.state.quality_trend = [3, 3, 3];
111
+ engine.state.success_trend = [false, false, false];
112
112
  assert.equal(engine.shouldBreak(), true);
113
113
  });
114
- it("returns false when quality is improving", () => {
114
+ it("returns false when all successes (no longer trips on flat success)", () => {
115
115
  const engine = createEngine();
116
116
  engine.invokeFeedback(makeRequest({
117
117
  mode: Mode.FEEDBACK,
118
118
  feedback: makeExecutionFeedback({ success: true, output: "ok" }),
119
119
  }));
120
- engine.state.quality_trend = [3, 4, 5];
120
+ engine.state.success_trend = [true, true, true];
121
121
  assert.equal(engine.shouldBreak(), false);
122
122
  });
123
123
  });
@@ -197,7 +197,6 @@ describe("Engine — P0-P5 Cognitive Evolution (v1.7 E2E)", () => {
197
197
  output_summary: "Found 2 reentrancy bugs",
198
198
  constraint_violations: [],
199
199
  manual_fixes_needed: "",
200
- quality_score: 5,
201
200
  discovered_constraints: ["Use SafeERC20 for all external calls"],
202
201
  objective_refinement: "Scope includes upgradeable proxy patterns",
203
202
  emerged_subtasks: ["Audit proxy init", "Verify timelock"],
@@ -250,7 +249,6 @@ describe("Engine — P0-P5 Cognitive Evolution (v1.7 E2E)", () => {
250
249
  output_summary: "Fixed reentrancy in withdraw()",
251
250
  constraint_violations: [],
252
251
  manual_fixes_needed: "",
253
- quality_score: 5,
254
252
  execution_evidence: {
255
253
  files_changed: ["contracts/Token.sol", "test/Token.test.ts"],
256
254
  test_results: { passed: 24, failed: 0, skipped: 0 },
@@ -290,7 +288,6 @@ describe("Engine — P0-P5 Cognitive Evolution (v1.7 E2E)", () => {
290
288
  output_summary: "Found missing access control",
291
289
  constraint_violations: [],
292
290
  manual_fixes_needed: "",
293
- quality_score: 2,
294
291
  wrong_assumptions: ["Assumed OZ v4.0 has no known issues"],
295
292
  retracted_constraints: [],
296
293
  revised_success_criteria: [],
@@ -325,7 +322,6 @@ describe("Engine — P0-P5 Cognitive Evolution (v1.7 E2E)", () => {
325
322
  output_summary: "Audited contracts",
326
323
  constraint_violations: [],
327
324
  manual_fixes_needed: "",
328
- quality_score: 5,
329
325
  discovered_constraints: ["No external deps"],
330
326
  retracted_constraints: ["No external deps"],
331
327
  wrong_assumptions: [],
@@ -1 +1 @@
1
- {"version":3,"file":"engine.test.js","sourceRoot":"","sources":["../../src/tests/engine.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine.test.js","sourceRoot":"","sources":["../../src/tests/engine.test.ts"],"names":[],"mappings":"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"}
@@ -33,9 +33,9 @@ describe("Generated JSON Schema — top-level", () => {
33
33
  assert.ok(String(schema.$id ?? "").includes("loopforge"));
34
34
  assert.ok(String(schema.title ?? "").includes("LoopForge"));
35
35
  });
36
- it("has 38 $defs (4 enums + 33 interfaces + 1 type alias)", () => {
36
+ it("has 39 $defs (4 enums + 34 interfaces + 1 type alias)", () => {
37
37
  const names = Object.keys(defs);
38
- assert.equal(names.length, 38, `expected 38, got ${names.length}: ${names.join(", ")}`);
38
+ assert.equal(names.length, 39, `expected 39, got ${names.length}: ${names.join(", ")}`);
39
39
  });
40
40
  });
41
41
  // ═══════════════════════════════════════════════════════════════════════════
@@ -86,11 +86,12 @@ describe("Interface type correctness", () => {
86
86
  assert.equal(p.is_aligned.type, "boolean");
87
87
  assert.equal(p.alignment_score.type, "number");
88
88
  });
89
- it("LoopRoundResult — round is number, success is boolean, quality_score is number", () => {
89
+ it("LoopRoundResult — round is number, success is boolean (quality_score removed v1.12)", () => {
90
90
  const p = props("LoopRoundResult");
91
91
  assert.equal(p.round.type, "number");
92
92
  assert.equal(p.success.type, "boolean");
93
- assert.equal(p.quality_score.type, "number");
93
+ // quality_score field has been removed — verify it's gone
94
+ assert.equal(p.quality_score, undefined);
94
95
  });
95
96
  });
96
97
  // ═══════════════════════════════════════════════════════════════════════════
@@ -110,10 +111,12 @@ describe("Array properties", () => {
110
111
  assert.equal(p.warnings.items.type, "string");
111
112
  assert.equal(p.lineage.type, "array");
112
113
  });
113
- it("RollingSummary — quality_trajectory is number array", () => {
114
+ it("RollingSummary — key_outcomes is string array", () => {
114
115
  const p = props("RollingSummary");
115
- assert.equal(p.quality_trajectory.type, "array");
116
- assert.equal(p.quality_trajectory.items.type, "number");
116
+ assert.equal(p.key_outcomes.type, "array");
117
+ assert.equal(p.key_outcomes.items.type, "string");
118
+ // quality_trajectory and trajectory_direction removed in v1.12
119
+ assert.equal(p.quality_trajectory, undefined);
117
120
  });
118
121
  });
119
122
  // ═══════════════════════════════════════════════════════════════════════════
@@ -1 +1 @@
1
- {"version":3,"file":"generate-schema.test.js","sourceRoot":"","sources":["../../src/tests/generate-schema.test.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,kEAAkE;AAClE,iFAAiF;AACjF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CACvB,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,yBAAyB,CAAC,EAAE,OAAO,CAAC,CACpD,CAAC;AAE7B,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAA4C,CAAC;AAE7E,4CAA4C;AAC5C,SAAS,GAAG,CAAC,IAAY;IACvB,OAAO,IAAI,CAAC,IAAI,CAA4B,CAAC;AAC/C,CAAC;AACD,SAAS,KAAK,CAAC,IAAY;IACzB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,UAAU,IAAI,EAAE,CAA4C,CAAC;AACjF,CAAC;AACD,SAAS,QAAQ,CAAC,IAAY;IAC5B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAa,CAAC;AAChD,CAAC;AAED,8EAA8E;AAC9E,sBAAsB;AACtB,8EAA8E;AAE9E,QAAQ,CAAC,mCAAmC,EAAE,GAAG,EAAE;IACjD,EAAE,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAC1B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,8CAA8C,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;QAC3B,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;QAC1D,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,EAAE,oBAAoB,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1F,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,QAAQ;AACR,8EAA8E;AAE9E,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;IACrB,EAAE,CAAC,iBAAiB,EAAE,GAAG,EAAE;QACzB,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACzC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE;YACjC,cAAc,EAAE,UAAU;SAC3B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAChD,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAC9B,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC9C,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE;YACtC,WAAW,EAAE,UAAU,EAAE,eAAe,EAAE,cAAc;YACxD,WAAW,EAAE,eAAe,EAAE,iBAAiB;SAChD,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,iEAAiE;AACjE,8EAA8E;AAE9E,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC7C,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,SAAS,EACxD,sEAAsE,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;QAC9B,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC9C,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACpD,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC/C,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC/C,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,CAAC,GAAG,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACtC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACrC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,qBAAqB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;QAC1E,MAAM,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC;QACjC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC3C,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gFAAgF,EAAE,GAAG,EAAE;QACxF,MAAM,CAAC,GAAG,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACnC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACrC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACxC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,yEAAyE,EAAE,GAAG,EAAE;QACjF,MAAM,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC;QACjC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC/C,MAAM,CAAC,KAAK,CAAE,CAAC,CAAC,gBAAgB,CAAC,KAAiC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACnF,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC/C,MAAM,CAAC,KAAK,CAAE,CAAC,CAAC,gBAAgB,CAAC,KAAiC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACrF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACtE,MAAM,CAAC,GAAG,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACvC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACvC,MAAM,CAAC,KAAK,CAAE,CAAC,CAAC,QAAQ,CAAC,KAAiC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC3E,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,CAAC,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAClC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACjD,MAAM,CAAC,KAAK,CAAE,CAAC,CAAC,kBAAkB,CAAC,KAAiC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACvF,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,yCAAyC;AACzC,8EAA8E;AAE9E,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;QAC1E,MAAM,MAAM,GAAG,KAAK,CAAC,oBAAoB,CAAC,CAAC,cAAc,CAAC;QAC1D,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,8CAA8C,CAAC,CAAC;QACxE,MAAM,IAAI,GAAI,MAAM,CAAC,KAAmC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC5F,MAAM,KAAK,GAAI,MAAM,CAAC,KAAmC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;QAC3F,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC,CAAC;QAClD,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC;IACrF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,KAAK,GAAG,KAAK,CAAC,mBAAmB,CAAC,CAAC,QAAQ,CAAC;QAClD,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACvB,MAAM,IAAI,GAAI,KAAK,CAAC,KAAmC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC3F,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;QACrE,MAAM,KAAK,GAAG,KAAK,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC;QAChD,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACvB,MAAM,IAAI,GAAI,KAAK,CAAC,KAAmC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC3F,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,2BAA2B,CAAC,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,yCAAyC;AACzC,8EAA8E;AAE9E,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACxC,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;QAC3E,MAAM,CAAC,KAAK,CACV,GAAG,CAAC,kBAAkB,CAAC,CAAC,oBAAoB,EAC5C,IAAI,EACJ,oEAAoE,CACrE,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAE9E,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yEAAyE,EAAE,GAAG,EAAE;QACjF,MAAM,GAAG,GAAG,QAAQ,CAAC,oBAAoB,CAAC,CAAC;QAC3C,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QAChC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;QACnC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;QACjC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QAChC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC;QACxC,uDAAuD;QACvD,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC3C,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;QACxC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,GAAG,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;QACjC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC5B,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;QACvC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,uCAAuC;AACvC,8EAA8E;AAE9E,QAAQ,CAAC,kCAAkC,EAAE,GAAG,EAAE;IAChD,EAAE,CAAC,4EAA4E,EAAE,GAAG,EAAE;QACpF,MAAM,EAAE,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,eAAe,CAAC;QACjD,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC/B,MAAM,KAAK,GAAG,EAAE,CAAC,KAAgC,CAAC;QAClD,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACnC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"generate-schema.test.js","sourceRoot":"","sources":["../../src/tests/generate-schema.test.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  /** Tests for loop compiler core: gates, advisories, L0/L1/L2 compilation. */
2
2
  import { describe, it, beforeEach } from "node:test";
3
3
  import assert from "node:assert/strict";
4
- import { decideLevel, compileLoop, computeGoalTextHash, deriveGoalId, alignTask, compileL2, buildRollingSummary, formatRollingSummaryForPrompt, filterConstraintsForSubTask, formatDelegationPrompt, buildDelegationSummary, } from "../loop-compiler.js";
5
- import { makeLoopCompileRequest, makeLoopRoundResult, makeLoopObjective, makeRollingSummary, } from "../protocol.js";
4
+ import { decideLevel, compileLoop, computeGoalTextHash, deriveGoalId, alignTask, compileL2, buildRollingSummary, formatRollingSummaryForPrompt, buildCheckpointSummary, formatCheckpointForPrompt, filterConstraintsForSubTask, formatDelegationPrompt, buildDelegationSummary, } from "../loop-compiler.js";
5
+ import { makeLoopCompileRequest, makeLoopRoundResult, makeLoopObjective, makeRollingSummary, makeCheckpointSummary, makeSelfEvaluation, } from "../protocol.js";
6
6
  import { resetPolicy } from "../policy.js";
7
7
  describe("Loop Compiler — Goal Identity", () => {
8
8
  it("computeGoalTextHash produces a 12-char hex string", () => {
@@ -409,16 +409,17 @@ describe("Loop Compiler — Cross-Round Scenarios", () => {
409
409
  // Failure Lineage Weighting (v1.7)
410
410
  // ═══════════════════════════════════════════════════════════════════════════
411
411
  function makeVaultResult(loopId, round, qualityScore, task, outputSummary = "", techniqueUsed = "zero-shot", constraintViolations = []) {
412
+ const success = qualityScore >= 3;
412
413
  return {
413
414
  task,
414
415
  output_summary: outputSummary,
415
416
  constraint_violations: constraintViolations,
416
417
  technique_used: techniqueUsed,
417
- quality_score: qualityScore,
418
+ success,
418
419
  loop_lineage: {
419
420
  loop_id: loopId,
420
421
  round,
421
- quality_score: qualityScore,
422
+ success,
422
423
  task,
423
424
  technique_used: techniqueUsed,
424
425
  },
@@ -437,12 +438,12 @@ describe("Failure Lineage Weighting — buildRollingSummary", () => {
437
438
  const rs = buildRollingSummary("loop-1", 4, vault);
438
439
  assert.ok(rs !== null);
439
440
  assert.equal(rs.failed_patterns?.length ?? 0, 0);
440
- // key_lessons should not have [Consider alternatives] marker
441
- for (const kl of rs.key_lessons) {
442
- assert.ok(!kl.includes("[Consider alternatives]"));
441
+ // key_outcomes should not have [Consider alternatives] marker
442
+ for (const ko of rs.key_outcomes) {
443
+ assert.ok(!ko.includes("[Consider alternatives]"));
443
444
  }
444
445
  });
445
- it("detects 2 consecutive low-quality rounds with same technique and similar task", () => {
446
+ it("detects 2 consecutive failed rounds with same technique and similar task", () => {
446
447
  const vault = {
447
448
  results: [
448
449
  makeVaultResult("loop-1", 1, 2, "fix cache bug", "Tried cache fix A", "zero-shot"),
@@ -459,7 +460,7 @@ describe("Failure Lineage Weighting — buildRollingSummary", () => {
459
460
  assert.ok(fp.includes("cache"));
460
461
  assert.ok(fp.includes("2 consecutive rounds"));
461
462
  });
462
- it("detects 3 consecutive low-quality rounds", () => {
463
+ it("detects 3 consecutive failed rounds", () => {
463
464
  const vault = {
464
465
  results: [
465
466
  makeVaultResult("loop-1", 1, 2, "fix memory leak", "Attempt 1", "few-shot"),
@@ -473,7 +474,7 @@ describe("Failure Lineage Weighting — buildRollingSummary", () => {
473
474
  assert.ok((rs.failed_patterns?.length ?? 0) >= 1);
474
475
  assert.ok(rs.failed_patterns[0].includes("3 consecutive rounds"));
475
476
  });
476
- it("no pattern when low-quality rounds use different techniques", () => {
477
+ it("no pattern when failed rounds use different techniques", () => {
477
478
  const vault = {
478
479
  results: [
479
480
  makeVaultResult("loop-1", 1, 2, "fix cache bug", "Attempt", "zero-shot"),
@@ -485,7 +486,7 @@ describe("Failure Lineage Weighting — buildRollingSummary", () => {
485
486
  assert.ok(rs !== null);
486
487
  assert.equal(rs.failed_patterns?.length ?? 0, 0);
487
488
  });
488
- it("no pattern when low-quality tasks are completely different (Jaccard < 0.4)", () => {
489
+ it("no pattern when failed tasks are completely different (Jaccard < 0.4)", () => {
489
490
  const vault = {
490
491
  results: [
491
492
  makeVaultResult("loop-1", 1, 2, "fix cache bug in Redis layer", "Attempt", "zero-shot"),
@@ -497,7 +498,7 @@ describe("Failure Lineage Weighting — buildRollingSummary", () => {
497
498
  assert.ok(rs !== null);
498
499
  assert.equal(rs.failed_patterns?.length ?? 0, 0);
499
500
  });
500
- it("key_lessons from failure-pattern rounds are demoted to end with [Consider alternatives]", () => {
501
+ it("key_outcomes from failure-pattern rounds are demoted to end with [Consider alternatives]", () => {
501
502
  const vault = {
502
503
  results: [
503
504
  makeVaultResult("loop-1", 1, 2, "fix cache bug", "Tried cache approach", "zero-shot"),
@@ -508,14 +509,15 @@ describe("Failure Lineage Weighting — buildRollingSummary", () => {
508
509
  };
509
510
  const rs = buildRollingSummary("loop-1", 4, vault);
510
511
  assert.ok(rs !== null);
511
- // key_lessons should have the successful round first, then demoted ones
512
- // (but since score >= 4 for key_lessons, rounds 1-2 with score=2 won't appear at all)
513
- // The real test is: no false positives in key_lessons
514
- for (const kl of rs.key_lessons) {
515
- if (kl.includes("cache")) {
516
- assert.ok(kl.includes("[Consider alternatives]"));
512
+ // key_outcomes only include score>=4 rounds (failure-pattern rounds score<3 don't appear)
513
+ // Round 3 (score=5) should be present and not marked
514
+ for (const ko of rs.key_outcomes) {
515
+ if (ko.includes("cache")) {
516
+ assert.ok(ko.includes("[Consider alternatives]"));
517
517
  }
518
518
  }
519
+ // Round 3 (score=5) should be present with auth fix outcome
520
+ assert.ok(rs.key_outcomes.some((ko) => ko.includes("Auth")));
519
521
  });
520
522
  it("recurring_issues from failure-only rounds marked as [Possible dead end]", () => {
521
523
  const vault = {
@@ -557,15 +559,12 @@ describe("Failure Lineage Weighting — buildRollingSummary", () => {
557
559
  describe("Failure Lineage Weighting — formatRollingSummaryForPrompt", () => {
558
560
  it("renders failure patterns section when present", () => {
559
561
  const rs = makeRollingSummary({
560
- quality_trajectory: [2, 2, 5],
561
- trajectory_direction: "improving",
562
- what_worked: ["R3 (score=5): Fixed auth"],
562
+ key_outcomes: ["[R3] ✓ (step-back): Fixed auth bug"],
563
563
  recurring_issues: [],
564
- key_lessons: ["[R3] Fixed auth bug"],
565
564
  rounds_sampled: 3,
566
565
  generated_at_round: 4,
567
566
  failed_patterns: [
568
- "technique 'zero-shot' on task 'fix cache bug' failed 2 consecutive rounds (R1-R2, avg score 2.0) — consider strategy change",
567
+ "technique 'zero-shot' on task 'fix cache bug' failed 2 consecutive rounds (R1-R2) — consider strategy change",
569
568
  ],
570
569
  });
571
570
  const text = formatRollingSummaryForPrompt(rs);
@@ -576,11 +575,8 @@ describe("Failure Lineage Weighting — formatRollingSummaryForPrompt", () => {
576
575
  });
577
576
  it("no failure patterns section when empty", () => {
578
577
  const rs = makeRollingSummary({
579
- quality_trajectory: [5, 4],
580
- trajectory_direction: "stable",
581
- what_worked: [],
578
+ key_outcomes: [],
582
579
  recurring_issues: [],
583
- key_lessons: [],
584
580
  rounds_sampled: 2,
585
581
  generated_at_round: 3,
586
582
  failed_patterns: [],
@@ -830,4 +826,226 @@ describe("Delegation — buildDelegationSummary", () => {
830
826
  assert.equal(pipeCount, 9, "table row should have 9 pipe chars (7 structural + 2 escaped)");
831
827
  });
832
828
  });
829
+ // ═══════════════════════════════════════════════════════════════════════════
830
+ // Checkpoint Compression (v1.10)
831
+ // ═══════════════════════════════════════════════════════════════════════════
832
+ describe("Checkpoint — buildCheckpointSummary", () => {
833
+ it("builds from self-eval with checkpoint fields", () => {
834
+ const selfEval = makeSelfEvaluation({
835
+ success: true,
836
+ output_summary: "Completed ERC20 data model with full test coverage",
837
+ compression_checkpoint: true,
838
+ checkpoint_label: "数据模型层完成",
839
+ });
840
+ const cs = buildCheckpointSummary(selfEval, 8, ["constraint-A", "constraint-B", "constraint-C"], ["old-constraint"]);
841
+ assert.ok(cs !== null);
842
+ assert.equal(cs.label, "数据模型层完成");
843
+ assert.equal(cs.declared_at_round, 8);
844
+ assert.ok(cs.outcome.includes("ERC20 data model"));
845
+ assert.deepStrictEqual(cs.carried_constraints, ["constraint-A", "constraint-B", "constraint-C"]);
846
+ assert.deepStrictEqual(cs.resolved_constraints, ["old-constraint"]);
847
+ });
848
+ it("falls back to auto-generated label when checkpoint_label is empty", () => {
849
+ const selfEval = makeSelfEvaluation({
850
+ success: true,
851
+ output_summary: "Done with auth module",
852
+ compression_checkpoint: true,
853
+ checkpoint_label: "",
854
+ });
855
+ const cs = buildCheckpointSummary(selfEval, 5, ["c1"], []);
856
+ assert.ok(cs.label.includes("Subtask completed at round 5"));
857
+ });
858
+ it("caps carried and resolved constraints at policy limit", () => {
859
+ const selfEval = makeSelfEvaluation({
860
+ success: true,
861
+ output_summary: "Done",
862
+ compression_checkpoint: true,
863
+ checkpoint_label: "test",
864
+ });
865
+ const manyConstraints = Array.from({ length: 15 }, (_, i) => `c${i + 1}`);
866
+ const cs = buildCheckpointSummary(selfEval, 3, manyConstraints, manyConstraints);
867
+ // Default policy: max_carried_constraints = 10
868
+ assert.equal(cs.carried_constraints.length, 10);
869
+ assert.equal(cs.resolved_constraints.length, 10);
870
+ });
871
+ it("truncates outcome at policy limit", () => {
872
+ const selfEval = makeSelfEvaluation({
873
+ success: true,
874
+ output_summary: "x".repeat(300),
875
+ compression_checkpoint: true,
876
+ checkpoint_label: "test",
877
+ });
878
+ const cs = buildCheckpointSummary(selfEval, 1, [], []);
879
+ // Default policy: outcome_max_chars = 200
880
+ assert.ok(cs.outcome.length <= 200);
881
+ });
882
+ });
883
+ describe("Checkpoint — formatCheckpointForPrompt", () => {
884
+ it("renders checkpoint block with all fields", () => {
885
+ const cs = makeCheckpointSummary({
886
+ label: "Auth module complete",
887
+ declared_at_round: 5,
888
+ outcome: "Implemented JWT auth with refresh tokens",
889
+ carried_constraints: ["所有API需要认证", "token过期时间≤24h"],
890
+ resolved_constraints: ["旧密码哈希方式需更新"],
891
+ });
892
+ const text = formatCheckpointForPrompt(cs);
893
+ assert.ok(text.includes("### Checkpoint: Auth module complete (Round 5)"));
894
+ assert.ok(text.includes("Implemented JWT auth"));
895
+ assert.ok(text.includes("所有API需要认证"));
896
+ assert.ok(text.includes("旧密码哈希方式需更新"));
897
+ assert.ok(text.includes("Carried Constraints"));
898
+ assert.ok(text.includes("Resolved Constraints"));
899
+ });
900
+ it("returns empty string for null", () => {
901
+ assert.equal(formatCheckpointForPrompt(null), "");
902
+ });
903
+ it("returns empty string for empty checkpoint", () => {
904
+ const cs = makeCheckpointSummary({});
905
+ assert.equal(formatCheckpointForPrompt(cs), "");
906
+ });
907
+ it("omits resolved section when no resolved constraints", () => {
908
+ const cs = makeCheckpointSummary({
909
+ label: "test",
910
+ declared_at_round: 1,
911
+ outcome: "done",
912
+ carried_constraints: ["c1"],
913
+ resolved_constraints: [],
914
+ });
915
+ const text = formatCheckpointForPrompt(cs);
916
+ assert.ok(!text.includes("Resolved Constraints"));
917
+ });
918
+ });
919
+ describe("Checkpoint — buildRollingSummary with sinceRound", () => {
920
+ function makeVaultResult(loopId, round, qualityScore, task, outputSummary = "", techniqueUsed = "zero-shot", constraintViolations = []) {
921
+ const success = qualityScore >= 3;
922
+ return {
923
+ task, output_summary: outputSummary,
924
+ constraint_violations: constraintViolations,
925
+ technique_used: techniqueUsed, success,
926
+ loop_lineage: { loop_id: loopId, round, success, task, technique_used: techniqueUsed },
927
+ };
928
+ }
929
+ it("only includes rounds at or after sinceRound", () => {
930
+ const vault = {
931
+ results: [
932
+ makeVaultResult("loop-1", 1, 4, "task A", "did A"),
933
+ makeVaultResult("loop-1", 2, 5, "task B", "did B"),
934
+ makeVaultResult("loop-1", 3, 3, "task C", "did C"),
935
+ makeVaultResult("loop-1", 4, 5, "task D", "did D"),
936
+ makeVaultResult("loop-1", 5, 4, "task E", "did E"),
937
+ ],
938
+ };
939
+ const rs = buildRollingSummary("loop-1", 6, vault, 3);
940
+ assert.ok(rs !== null);
941
+ // Round 1 and 2 should be excluded (before sinceRound=3)
942
+ assert.equal(rs.rounds_sampled, 3);
943
+ // Verify key_outcomes contains rounds 3-5
944
+ assert.equal(rs.key_outcomes.length, 3);
945
+ assert.ok(rs.key_outcomes.some((k) => k.includes("R3")));
946
+ assert.ok(rs.key_outcomes.some((k) => k.includes("R5")));
947
+ });
948
+ it("sinceRound with no matching rounds returns null", () => {
949
+ const vault = {
950
+ results: [
951
+ makeVaultResult("loop-1", 1, 4, "task A", "did A"),
952
+ makeVaultResult("loop-1", 2, 5, "task B", "did B"),
953
+ ],
954
+ };
955
+ const rs = buildRollingSummary("loop-1", 3, vault, 5);
956
+ assert.equal(rs, null);
957
+ });
958
+ it("without sinceRound includes all rounds (backward compat)", () => {
959
+ const vault = {
960
+ results: [
961
+ makeVaultResult("loop-1", 1, 4, "task A", "did A"),
962
+ makeVaultResult("loop-1", 2, 5, "task B", "did B"),
963
+ ],
964
+ };
965
+ const rs = buildRollingSummary("loop-1", 3, vault);
966
+ assert.ok(rs !== null);
967
+ assert.equal(rs.rounds_sampled, 2);
968
+ });
969
+ });
970
+ describe("Checkpoint — compileL2 integration", () => {
971
+ it("renders checkpoint in prompt when last_round_result has checkpoint", () => {
972
+ const lr = makeLoopRoundResult({
973
+ round: 4,
974
+ success: true,
975
+ output_summary: "Completed data model layer",
976
+ constraint_violations: [],
977
+ compression_checkpoint: true,
978
+ checkpoint_label: "Data model done",
979
+ });
980
+ const req = makeLoopCompileRequest({
981
+ round: 5,
982
+ loop_id: "test-cp",
983
+ task: "Build API layer on top of data model",
984
+ last_round_result: lr,
985
+ });
986
+ // Empty vault — no prior checkpoint to load
987
+ const vault = { results: [], global_entries: [] };
988
+ const response = compileL2(req, vault);
989
+ assert.ok(response.prompt.includes("### Checkpoint: Data model done (Round 4)"));
990
+ assert.ok(response.prompt.includes("Completed data model layer"));
991
+ assert.ok(response.checkpoint_summary !== null);
992
+ assert.equal(response.checkpoint_summary.declared_at_round, 4);
993
+ });
994
+ it("no checkpoint in prompt when last_round_result has no checkpoint", () => {
995
+ const lr = makeLoopRoundResult({
996
+ round: 2,
997
+ success: true,
998
+ output_summary: "Fixed a bug",
999
+ constraint_violations: [],
1000
+ });
1001
+ const req = makeLoopCompileRequest({
1002
+ round: 3,
1003
+ loop_id: "test-nocp",
1004
+ task: "Continue fixing bugs",
1005
+ last_round_result: lr,
1006
+ });
1007
+ const vault = { results: [], global_entries: [] };
1008
+ const response = compileL2(req, vault);
1009
+ assert.ok(!response.prompt.includes("### Checkpoint:"));
1010
+ assert.equal(response.checkpoint_summary, null);
1011
+ });
1012
+ it("loads existing checkpoint from vault on later rounds", () => {
1013
+ // Simulate a previous round that stored a checkpoint in vault
1014
+ const vault = {
1015
+ results: [
1016
+ {
1017
+ loop_lineage: { loop_id: "test-cp2", round: 3, success: true },
1018
+ checkpoint_summary: {
1019
+ label: "API layer done",
1020
+ declared_at_round: 3,
1021
+ outcome: "Built REST API",
1022
+ carried_constraints: ["auth required"],
1023
+ resolved_constraints: [],
1024
+ },
1025
+ task: "Build API",
1026
+ output_summary: "Built REST API",
1027
+ technique_used: "least-to-most",
1028
+ },
1029
+ ],
1030
+ };
1031
+ const lr = makeLoopRoundResult({
1032
+ round: 4,
1033
+ success: true,
1034
+ output_summary: "Added tests",
1035
+ constraint_violations: [],
1036
+ });
1037
+ const req = makeLoopCompileRequest({
1038
+ round: 5,
1039
+ loop_id: "test-cp2",
1040
+ task: "Add integration tests",
1041
+ last_round_result: lr,
1042
+ });
1043
+ const response = compileL2(req, vault);
1044
+ // Should load checkpoint from round 3
1045
+ assert.ok(response.prompt.includes("### Checkpoint: API layer done (Round 3)"));
1046
+ assert.ok(response.prompt.includes("Built REST API"));
1047
+ assert.ok(response.checkpoint_summary !== null);
1048
+ assert.equal(response.checkpoint_summary.declared_at_round, 3);
1049
+ });
1050
+ });
833
1051
  //# sourceMappingURL=loop-compiler.test.js.map