loopforge 2.11.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (166) hide show
  1. package/README.md +145 -128
  2. package/dist/canonical-event-writer.d.ts +20 -0
  3. package/dist/canonical-event-writer.d.ts.map +1 -0
  4. package/dist/canonical-event-writer.js +131 -0
  5. package/dist/canonical-event-writer.js.map +1 -0
  6. package/dist/canonical-state.d.ts +20 -16
  7. package/dist/canonical-state.d.ts.map +1 -1
  8. package/dist/canonical-state.js +170 -61
  9. package/dist/canonical-state.js.map +1 -1
  10. package/dist/cli.d.ts.map +1 -1
  11. package/dist/cli.js +11 -10
  12. package/dist/cli.js.map +1 -1
  13. package/dist/cognitive-governance.d.ts +48 -0
  14. package/dist/cognitive-governance.d.ts.map +1 -0
  15. package/dist/cognitive-governance.js +226 -0
  16. package/dist/cognitive-governance.js.map +1 -0
  17. package/dist/compiler-subgoals.d.ts +7 -0
  18. package/dist/compiler-subgoals.d.ts.map +1 -0
  19. package/dist/compiler-subgoals.js +93 -0
  20. package/dist/compiler-subgoals.js.map +1 -0
  21. package/dist/derive-id.d.ts +12 -0
  22. package/dist/derive-id.d.ts.map +1 -0
  23. package/dist/derive-id.js +31 -0
  24. package/dist/derive-id.js.map +1 -0
  25. package/dist/evidence-provider.d.ts +23 -21
  26. package/dist/evidence-provider.d.ts.map +1 -1
  27. package/dist/evidence-provider.js +34 -74
  28. package/dist/evidence-provider.js.map +1 -1
  29. package/dist/generate-schema.js +90 -2
  30. package/dist/generate-schema.js.map +1 -1
  31. package/dist/index.d.ts +22 -19
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +15 -16
  34. package/dist/index.js.map +1 -1
  35. package/dist/loop-compiler.d.ts +1 -1
  36. package/dist/loop-compiler.d.ts.map +1 -1
  37. package/dist/loop-compiler.js +250 -337
  38. package/dist/loop-compiler.js.map +1 -1
  39. package/dist/loop-extras-parser.d.ts +2 -2
  40. package/dist/loop-extras-parser.d.ts.map +1 -1
  41. package/dist/loop-extras-parser.js +2 -2
  42. package/dist/loop-extras-parser.js.map +1 -1
  43. package/dist/loop-store.d.ts +20 -58
  44. package/dist/loop-store.d.ts.map +1 -1
  45. package/dist/loop-store.js +232 -309
  46. package/dist/loop-store.js.map +1 -1
  47. package/dist/mcp/server.d.ts +3 -3
  48. package/dist/mcp/server.d.ts.map +1 -1
  49. package/dist/mcp/server.js +83 -13
  50. package/dist/mcp/server.js.map +1 -1
  51. package/dist/mcp/session-projection.d.ts +5 -0
  52. package/dist/mcp/session-projection.d.ts.map +1 -0
  53. package/dist/mcp/session-projection.js +18 -0
  54. package/dist/mcp/session-projection.js.map +1 -0
  55. package/dist/mcp/session-queue.d.ts +3 -0
  56. package/dist/mcp/session-queue.d.ts.map +1 -0
  57. package/dist/mcp/session-queue.js +18 -0
  58. package/dist/mcp/session-queue.js.map +1 -0
  59. package/dist/mcp/session-types.d.ts +72 -0
  60. package/dist/mcp/session-types.d.ts.map +1 -0
  61. package/dist/mcp/session-types.js +2 -0
  62. package/dist/mcp/session-types.js.map +1 -0
  63. package/dist/mcp/session.d.ts +49 -93
  64. package/dist/mcp/session.d.ts.map +1 -1
  65. package/dist/mcp/session.js +544 -245
  66. package/dist/mcp/session.js.map +1 -1
  67. package/dist/mcp/tools.d.ts +26 -1
  68. package/dist/mcp/tools.d.ts.map +1 -1
  69. package/dist/mcp/tools.js +399 -274
  70. package/dist/mcp/tools.js.map +1 -1
  71. package/dist/policy-metrics.d.ts +17 -1
  72. package/dist/policy-metrics.d.ts.map +1 -1
  73. package/dist/policy-metrics.js +164 -1
  74. package/dist/policy-metrics.js.map +1 -1
  75. package/dist/policy.d.ts +34 -18
  76. package/dist/policy.d.ts.map +1 -1
  77. package/dist/policy.js +113 -18
  78. package/dist/policy.js.map +1 -1
  79. package/dist/prompt-assembler.d.ts +5 -3
  80. package/dist/prompt-assembler.d.ts.map +1 -1
  81. package/dist/prompt-assembler.js +126 -77
  82. package/dist/prompt-assembler.js.map +1 -1
  83. package/dist/prompt-policy.d.ts +8 -1
  84. package/dist/prompt-policy.d.ts.map +1 -1
  85. package/dist/prompt-policy.js +26 -8
  86. package/dist/prompt-policy.js.map +1 -1
  87. package/dist/protocol.d.ts +232 -192
  88. package/dist/protocol.d.ts.map +1 -1
  89. package/dist/protocol.js +15 -100
  90. package/dist/protocol.js.map +1 -1
  91. package/dist/replay.d.ts +11 -3
  92. package/dist/replay.d.ts.map +1 -1
  93. package/dist/replay.js +51 -14
  94. package/dist/replay.js.map +1 -1
  95. package/dist/round-commit-store.d.ts +12 -0
  96. package/dist/round-commit-store.d.ts.map +1 -0
  97. package/dist/round-commit-store.js +13 -0
  98. package/dist/round-commit-store.js.map +1 -0
  99. package/dist/round-coordinator.d.ts +25 -18
  100. package/dist/round-coordinator.d.ts.map +1 -1
  101. package/dist/round-coordinator.js +83 -71
  102. package/dist/round-coordinator.js.map +1 -1
  103. package/dist/round-driver.d.ts +14 -10
  104. package/dist/round-driver.d.ts.map +1 -1
  105. package/dist/round-driver.js +9 -13
  106. package/dist/round-driver.js.map +1 -1
  107. package/dist/round-gate.d.ts +31 -0
  108. package/dist/round-gate.d.ts.map +1 -0
  109. package/dist/round-gate.js +259 -0
  110. package/dist/round-gate.js.map +1 -0
  111. package/dist/round-recovery.d.ts +17 -0
  112. package/dist/round-recovery.d.ts.map +1 -0
  113. package/dist/round-recovery.js +117 -0
  114. package/dist/round-recovery.js.map +1 -0
  115. package/dist/round-report.d.ts +16 -0
  116. package/dist/round-report.d.ts.map +1 -0
  117. package/dist/round-report.js +401 -0
  118. package/dist/round-report.js.map +1 -0
  119. package/dist/round-transaction.d.ts +19 -12
  120. package/dist/round-transaction.d.ts.map +1 -1
  121. package/dist/round-transaction.js +102 -88
  122. package/dist/round-transaction.js.map +1 -1
  123. package/dist/runtime-services.d.ts +59 -0
  124. package/dist/runtime-services.d.ts.map +1 -0
  125. package/dist/runtime-services.js +460 -0
  126. package/dist/runtime-services.js.map +1 -0
  127. package/dist/storage.d.ts +3 -9
  128. package/dist/storage.d.ts.map +1 -1
  129. package/dist/storage.js +6 -17
  130. package/dist/storage.js.map +1 -1
  131. package/dist/token-utils.d.ts +9 -8
  132. package/dist/token-utils.d.ts.map +1 -1
  133. package/dist/token-utils.js +50 -10
  134. package/dist/token-utils.js.map +1 -1
  135. package/dist/vault-format.d.ts +4 -0
  136. package/dist/vault-format.d.ts.map +1 -0
  137. package/dist/vault-format.js +4 -0
  138. package/dist/vault-format.js.map +1 -0
  139. package/dist/vault-types.d.ts +24 -0
  140. package/dist/vault-types.d.ts.map +1 -0
  141. package/dist/vault-types.js +2 -0
  142. package/dist/vault-types.js.map +1 -0
  143. package/loop_policy.json +10 -12
  144. package/loopforge-policy.json +340 -0
  145. package/package.json +12 -6
  146. package/skills/perception/SKILL.md +199 -164
  147. package/dist/backends/interface.d.ts +0 -39
  148. package/dist/backends/interface.d.ts.map +0 -1
  149. package/dist/backends/interface.js +0 -6
  150. package/dist/backends/interface.js.map +0 -1
  151. package/dist/enforcement-gate.d.ts +0 -71
  152. package/dist/enforcement-gate.d.ts.map +0 -1
  153. package/dist/enforcement-gate.js +0 -744
  154. package/dist/enforcement-gate.js.map +0 -1
  155. package/dist/engine.d.ts +0 -59
  156. package/dist/engine.d.ts.map +0 -1
  157. package/dist/engine.js +0 -596
  158. package/dist/engine.js.map +0 -1
  159. package/dist/self-eval.d.ts +0 -23
  160. package/dist/self-eval.d.ts.map +0 -1
  161. package/dist/self-eval.js +0 -181
  162. package/dist/self-eval.js.map +0 -1
  163. package/dist/verification-gate.d.ts +0 -56
  164. package/dist/verification-gate.d.ts.map +0 -1
  165. package/dist/verification-gate.js +0 -563
  166. package/dist/verification-gate.js.map +0 -1
@@ -5,10 +5,8 @@
5
5
  *
6
6
  * verify → enforce → stop decision
7
7
  *
8
- * Before this module, runtime.ts and session.ts each maintained their
9
- * own copy of the pipeline (~60 lines each). Drift between the two
10
- * paths (e.g. git verification only wired into one side) was a known
11
- * risk. The RoundCoordinator is the single source of truth.
8
+ * The RoundCoordinator is the single source of truth for this pipeline;
9
+ * transport adapters only prepare input and route the resulting decision.
12
10
  *
13
11
  * State transitions:
14
12
  * RoundStarted → EvidenceCaptured → EvaluationSubmitted
@@ -17,17 +15,18 @@
17
15
  * Persistence is owned by round-transaction.ts so reject paths remain
18
16
  * side-effect free and accepted decisions can be replayed idempotently.
19
17
  */
20
- import { verifySelfEvaluation, entryRound } from "./verification-gate.js";
21
- import { enforceRound, buildRejectionPrompt, findSafeRestorePoint, buildBacktrackPrompt, } from "./enforcement-gate.js";
18
+ import { makeRoundGateContext, verifyRoundReport, enforceRoundReport } from "./round-gate.js";
19
+ import { buildRejectionPrompt, collectSkippedRoundFiles, findSafeRestorePoint, buildBacktrackPrompt, findBacktrackTargetGitHead, } from "./round-recovery.js";
22
20
  import { logEvent } from "./observability.js";
23
21
  import { getPolicy } from "./policy.js";
22
+ import { deriveCompilerProjection } from "./round-report.js";
24
23
  // ── RoundCoordinator ───────────────────────────────────────────────────────
25
24
  export class RoundCoordinator {
26
25
  backend;
27
26
  constructor(backend) {
28
27
  this.backend = backend;
29
28
  }
30
- /** Process a single round's self-evaluation through the decision pipeline:
29
+ /** Process a single round's round report through the decision pipeline:
31
30
  * verify → enforce → stop decision.
32
31
  *
33
32
  * This is the single entry point called by SessionManager.
@@ -35,30 +34,36 @@ export class RoundCoordinator {
35
34
  * - Compiling the next prompt (if action is "continue")
36
35
  * - Managing heartbeat / signal handlers (runtime only)
37
36
  * - Memory injection (both paths, before calling processRound)
38
- * - Transactional feedback commit (accepted rounds only)
37
+ * - Transactional round-event commit (accepted rounds only)
39
38
  * - State file I/O (both paths, after compiling)
40
39
  *
41
40
  * @param driftClarificationStreak v2.12: Current clarification streak
42
41
  * from session state. Passed through to enforceRound for R7 escalation. */
43
42
  processRound(input, driftClarificationStreak = 0) {
44
- const { loopId, task, currentRound, maxRounds, selfEval, extractionSucceeded, lastSelfEval, consecutiveRejections, evidenceSnapshots, } = input;
45
- const roundSuccess = selfEval.success ?? false;
43
+ const { loopId, task, currentRound, maxRounds, roundReport: suppliedReport, previousProjection, consecutiveRejections, evidenceSnapshots, } = input;
44
+ const roundReport = suppliedReport;
45
+ const roundSuccess = roundReport.outcome === "success";
46
46
  // ── 1. Query vault entries ──────────────────────────────────────────
47
- // Lineage entries (constraint violations, output summaries) and feedback
48
- // entries (execution_evidence, progress estimates) are both needed by
49
- // the enforcement gate. queryEntries excludes feedback by default, so
50
- // we issue a second query and merge both result sets.
47
+ // Merge lineage and canonical RoundEvent entries for replayable checks.
51
48
  const prefix = `loop:${loopId}:r`;
52
49
  const vaultEntries = this.backend
53
- ? [
54
- ...this.backend.queryEntries({ prefix }),
55
- ...this.backend.queryEntries({ prefix, feedbackOnly: true }),
56
- ]
50
+ ? this.backend.queryLoopEvents(loopId).filter((entry) => String(entry.task_id ?? "").startsWith(prefix))
57
51
  : [];
58
52
  // ── 2. Verification gate ────────────────────────────────────────────
59
- const verifyResult = verifySelfEvaluation(selfEval, currentRound, vaultEntries, lastSelfEval ?? null, evidenceSnapshots ?? [], input.backtrackSkippedFiles ?? []);
53
+ const gateContext = makeRoundGateContext(roundReport, currentRound, vaultEntries, evidenceSnapshots ?? [], input.remainingCriteria ?? [], {
54
+ previous: previousProjection ?? null,
55
+ expectedAction: input.expectedAction,
56
+ backtrackSkippedFiles: input.backtrackSkippedFiles,
57
+ backtrackTargetGitHead: input.backtrackTargetGitHead,
58
+ consecutiveRejections,
59
+ driftClarificationStreak,
60
+ escalatedRejectionChecks: input.escalatedRejectionChecks,
61
+ });
62
+ const currentProjection = deriveCompilerProjection(roundReport, currentRound, input.remainingCriteria ?? [], evidenceSnapshots ?? []);
63
+ const verifyResult = verifyRoundReport(gateContext);
60
64
  const verificationFlags = verifyResult.flags;
61
65
  const gateContradicted = verifyResult.verdict === "contradicted";
66
+ const clarificationAccepted = verificationFlags.some((item) => item.check === "intent_drift" && item.severity === "warn");
62
67
  if (gateContradicted) {
63
68
  logEvent("gate_contradicted", {
64
69
  loopId,
@@ -67,10 +72,8 @@ export class RoundCoordinator {
67
72
  });
68
73
  }
69
74
  // ── 3. Enforcement gate ──────────────────────────────────────────
70
- // v2.5: heuristic extractions now run partial enforcement. Rules that
71
- // depend on execution_evidence (R3/R4/R5) self-skip when evidence is
72
- // missing. Rules that don't need evidence (R1/R2/R6/R7) always run.
73
- const enforceResult = enforceRound(selfEval, verifyResult, currentRound, vaultEntries, consecutiveRejections, !extractionSucceeded, driftClarificationStreak);
75
+ // Enforcement consumes the same normalized Gate context as verification.
76
+ const enforceResult = enforceRoundReport(gateContext, verifyResult);
74
77
  if (enforceResult.action === "reject") {
75
78
  const newRejections = consecutiveRejections + 1;
76
79
  const rejectionPrompt = buildRejectionPrompt(currentRound, task, enforceResult, verificationFlags);
@@ -91,9 +94,10 @@ export class RoundCoordinator {
91
94
  roundSuccess,
92
95
  gateContradicted,
93
96
  newConsecutiveRejections: newRejections,
94
- // Don't update lastSelfEval on reject — the agent redoes the same round
95
- newLastSelfEval: undefined,
97
+ // Don't update lastRoundView on reject — the agent redoes the same round
98
+ newRoundProjection: undefined,
96
99
  shouldPushSuccessTrajectory: false,
100
+ escalationIssued: enforceResult.escalation_issued ?? false,
97
101
  };
98
102
  }
99
103
  if (enforceResult.action === "terminate") {
@@ -112,7 +116,7 @@ export class RoundCoordinator {
112
116
  roundSuccess,
113
117
  gateContradicted,
114
118
  newConsecutiveRejections: 0,
115
- newLastSelfEval: selfEval,
119
+ newRoundProjection: currentProjection,
116
120
  shouldPushSuccessTrajectory: false,
117
121
  };
118
122
  }
@@ -137,25 +141,15 @@ export class RoundCoordinator {
137
141
  roundSuccess,
138
142
  gateContradicted,
139
143
  newConsecutiveRejections: 0,
140
- newLastSelfEval: selfEval,
144
+ newRoundProjection: currentProjection,
141
145
  shouldPushSuccessTrajectory: false,
142
146
  };
143
147
  }
144
- // v2.13: Collect files changed in skipped rounds for the restore prompt
145
- const skippedFiles = [];
146
- for (let r = restorePoint.round + 1; r < currentRound; r++) {
147
- const entry = vaultEntries.find((e) => entryRound(e) === r);
148
- if (entry?.execution_evidence) {
149
- const ev = entry.execution_evidence;
150
- const files = Array.isArray(ev.files_changed)
151
- ? ev.files_changed.filter((f) => typeof f === "string")
152
- : [];
153
- for (const f of files) {
154
- if (!skippedFiles.includes(f))
155
- skippedFiles.push(f);
156
- }
157
- }
158
- }
148
+ // Collect files changed in skipped rounds for the restore prompt.
149
+ const skippedFiles = collectSkippedRoundFiles(restorePoint.round, currentRound, vaultEntries);
150
+ // v2.13: Git HEAD the workspace must be restored to. Taken from the
151
+ // restore round's committed transaction snapshot.
152
+ const backtrackTargetGitHead = findBacktrackTargetGitHead(restorePoint.round, vaultEntries);
159
153
  const backtrackPrompt = buildBacktrackPrompt(currentRound, restorePoint.round, enforceResult.check ?? "progress_stall", getPolicy().engine.backtrack_preserve_discoveries
160
154
  ? restorePoint.skippedDiscoveries
161
155
  : [], skippedFiles);
@@ -171,6 +165,7 @@ export class RoundCoordinator {
171
165
  action: "backtrack",
172
166
  backtrackPrompt,
173
167
  backtrackTarget: restorePoint.round,
168
+ backtrackTargetGitHead,
174
169
  backtrackSkippedDiscoveries: getPolicy().engine.backtrack_preserve_discoveries
175
170
  ? restorePoint.skippedDiscoveries
176
171
  : [],
@@ -183,34 +178,22 @@ export class RoundCoordinator {
183
178
  roundSuccess,
184
179
  gateContradicted,
185
180
  newConsecutiveRejections: 0, // reset — fresh start
186
- newLastSelfEval: undefined,
181
+ newRoundProjection: undefined,
187
182
  shouldPushSuccessTrajectory: false,
188
183
  };
189
184
  }
190
185
  // Accept: reset rejection counter
191
186
  // (consecutiveRejections reset to 0 — caller persists)
192
- // ── 4. Auto-feedback (AFTER enforcement, only if accepted) ──────────
187
+ // ── 4. Canonical round-report commit (AFTER enforcement) ────────────
193
188
  // ── 5. Stop condition checks ────────────────────────────────────────
194
- // 5a. Extraction failed → stalled
195
- if (!extractionSucceeded) {
196
- return {
197
- action: "stop",
198
- stopReason: "stalled",
199
- verificationFlags,
200
- roundSuccess,
201
- gateContradicted,
202
- newConsecutiveRejections: 0,
203
- newLastSelfEval: selfEval,
204
- shouldPushSuccessTrajectory: !gateContradicted,
205
- };
206
- }
207
- // 5b. Agent says stop
208
- if (!selfEval.should_continue) {
189
+ // 5a. The Agent requests a stop. Runtime evidence and gate checks have
190
+ // already decided whether that stop can be accepted as completion.
191
+ if (roundReport.continuation === "stop") {
209
192
  let reason;
210
193
  if (roundSuccess) {
211
194
  reason = "completed";
212
195
  }
213
- else if (selfEval.stop_reason === "blocked" || selfEval.stop_reason === "needs_human_input") {
196
+ else if (roundReport.outcome === "blocked") {
214
197
  reason = "blocked";
215
198
  }
216
199
  else {
@@ -223,18 +206,47 @@ export class RoundCoordinator {
223
206
  roundSuccess,
224
207
  gateContradicted,
225
208
  newConsecutiveRejections: 0,
226
- newLastSelfEval: selfEval,
209
+ newRoundProjection: currentProjection,
210
+ clarificationAccepted,
227
211
  shouldPushSuccessTrajectory: !gateContradicted,
228
212
  };
229
213
  }
214
+ // 5b. Circuit breaker — max consecutive failed rounds.
215
+ //
216
+ // When the last N accepted rounds (including this one) all reported
217
+ // failure with no recovery, the loop is failing faster than it can
218
+ // self-correct. Stop before errors compound (p^N). The trajectory only
219
+ // contains committed, non-contradicted rounds, so this never fires on
220
+ // an enforcement-rejected round (those never reach this point).
221
+ const breakerMax = getPolicy().engine.max_circuit_breaker;
222
+ if (breakerMax > 0) {
223
+ const breakerWindow = [...(input.successTrajectory ?? []), roundSuccess]
224
+ .slice(-breakerMax);
225
+ if (breakerWindow.length === breakerMax &&
226
+ breakerWindow.every((value) => value === false)) {
227
+ logEvent("session_end", {
228
+ loopId,
229
+ stopReason: "circuit_breaker",
230
+ round: currentRound,
231
+ });
232
+ return {
233
+ action: "stop",
234
+ stopReason: "circuit_breaker",
235
+ verificationFlags,
236
+ roundSuccess,
237
+ gateContradicted,
238
+ newConsecutiveRejections: 0,
239
+ newRoundProjection: currentProjection,
240
+ clarificationAccepted,
241
+ shouldPushSuccessTrajectory: false,
242
+ };
243
+ }
244
+ }
230
245
  // 5c. Max rounds reached
231
246
  //
232
- // NOTE: The binary-success circuit breaker previously at 5c is removed.
233
- // Genuine agent stalls are now detected by the enforcement gate via
234
- // enforceProgressStall (R4: delta < 5% → reject → terminate on repeat)
235
- // and enforceProgressStallTerminal (R5: delta = 0 for N rounds → terminate).
236
- // These use progress_estimate, not the binary success flag, so they
237
- // correctly distinguish "task not done yet" from "agent is stuck".
247
+ // Genuine agent stalls are detected by the enforcement gate. The
248
+ // coordinator deliberately does not infer completion from a binary
249
+ // success flag or from an agent-supplied progress estimate.
238
250
  if (currentRound >= maxRounds) {
239
251
  return {
240
252
  action: "stop",
@@ -243,7 +255,8 @@ export class RoundCoordinator {
243
255
  roundSuccess,
244
256
  gateContradicted,
245
257
  newConsecutiveRejections: 0,
246
- newLastSelfEval: selfEval,
258
+ newRoundProjection: currentProjection,
259
+ clarificationAccepted,
247
260
  shouldPushSuccessTrajectory: !gateContradicted,
248
261
  };
249
262
  }
@@ -255,10 +268,9 @@ export class RoundCoordinator {
255
268
  roundSuccess,
256
269
  gateContradicted,
257
270
  newConsecutiveRejections: 0,
258
- newLastSelfEval: selfEval,
271
+ newRoundProjection: currentProjection,
259
272
  shouldPushSuccessTrajectory: !gateContradicted,
260
- // v2.12: Propagate clarification acceptance signal for streak tracking
261
- clarificationAccepted: enforceResult.clarification_accepted ?? false,
273
+ clarificationAccepted,
262
274
  };
263
275
  }
264
276
  }
@@ -1 +1 @@
1
- {"version":3,"file":"round-coordinator.js","sourceRoot":"","sources":["../src/round-coordinator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAWH,OAAO,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AA8ExC,8EAA8E;AAE9E,MAAM,OAAO,gBAAgB;IACnB,OAAO,CAA2B;IAE1C,YAAY,OAAsB;QAChC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED;;;;;;;;;;;;gFAY4E;IAC5E,YAAY,CACV,KAAwB,EACxB,2BAAmC,CAAC;QAEpC,MAAM,EACJ,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EACrC,QAAQ,EAAE,mBAAmB,EAAE,YAAY,EAC3C,qBAAqB,EACrB,iBAAiB,GAClB,GAAG,KAAK,CAAC;QAEV,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,IAAI,KAAK,CAAC;QAE/C,uEAAuE;QACvE,yEAAyE;QACzE,sEAAsE;QACtE,sEAAsE;QACtE,sDAAsD;QACtD,MAAM,MAAM,GAAG,QAAQ,MAAM,IAAI,CAAC;QAClC,MAAM,YAAY,GAAiB,IAAI,CAAC,OAAO;YAC7C,CAAC,CAAC;gBACE,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;gBACxC,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;aAC7D;YACH,CAAC,CAAC,EAAE,CAAC;QAEP,uEAAuE;QACvE,MAAM,YAAY,GAAuB,oBAAoB,CAC3D,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,YAAY,IAAI,IAAI,EACpB,iBAAiB,IAAI,EAAE,EACvB,KAAK,CAAC,qBAAqB,IAAI,EAAE,CAClC,CAAC;QACF,MAAM,iBAAiB,GAAG,YAAY,CAAC,KAAK,CAAC;QAC7C,MAAM,gBAAgB,GAAG,YAAY,CAAC,OAAO,KAAK,cAAc,CAAC;QAEjE,IAAI,gBAAgB,EAAE,CAAC;YACrB,QAAQ,CAAC,mBAAmB,EAAE;gBAC5B,MAAM;gBACN,KAAK,EAAE,YAAY;gBACnB,KAAK,EAAE,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;aAC7C,CAAC,CAAC;QACL,CAAC;QAED,oEAAoE;QACpE,sEAAsE;QACtE,qEAAqE;QACrE,oEAAoE;QACpE,MAAM,aAAa,GAAsB,YAAY,CACnD,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,qBAAqB,EACrB,CAAC,mBAAmB,EACpB,wBAAwB,CACzB,CAAC;QAEF,IAAI,aAAa,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YACtC,MAAM,aAAa,GAAG,qBAAqB,GAAG,CAAC,CAAC;YAChD,MAAM,eAAe,GAAG,oBAAoB,CAC1C,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,iBAAiB,CACrD,CAAC;YACF,QAAQ,CAAC,oBAAoB,EAAE;gBAC7B,MAAM;gBACN,KAAK,EAAE,YAAY;gBACnB,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;gBAC1C,KAAK,EAAE,aAAa,CAAC,KAAK,IAAI,EAAE;gBAChC,qBAAqB,EAAE,aAAa;aACrC,CAAC,CAAC;YACH,OAAO;gBACL,MAAM,EAAE,QAAQ;gBAChB,eAAe;gBACf,iBAAiB;gBACjB,iBAAiB,EAAE,QAAQ;gBAC3B,iBAAiB,EAAE,aAAa,CAAC,MAAM;gBACvC,cAAc,EAAE,aAAa,CAAC,KAAK;gBACnC,YAAY;gBACZ,gBAAgB;gBAChB,wBAAwB,EAAE,aAAa;gBACvC,wEAAwE;gBACxE,eAAe,EAAE,SAAS;gBAC1B,2BAA2B,EAAE,KAAK;aACnC,CAAC;QACJ,CAAC;QAED,IAAI,aAAa,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YACzC,QAAQ,CAAC,aAAa,EAAE;gBACtB,MAAM;gBACN,UAAU,EAAE,wBAAwB;gBACpC,KAAK,EAAE,YAAY;aACpB,CAAC,CAAC;YACH,OAAO;gBACL,MAAM,EAAE,WAAW;gBACnB,UAAU,EAAE,wBAAwB;gBACpC,iBAAiB;gBACjB,iBAAiB,EAAE,WAAW;gBAC9B,iBAAiB,EAAE,aAAa,CAAC,MAAM;gBACvC,cAAc,EAAE,aAAa,CAAC,KAAK;gBACnC,YAAY;gBACZ,gBAAgB;gBAChB,wBAAwB,EAAE,CAAC;gBAC3B,eAAe,EAAE,QAAQ;gBACzB,2BAA2B,EAAE,KAAK;aACnC,CAAC;QACJ,CAAC;QAED,yEAAyE;QACzE,IAAI,aAAa,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YACzC,MAAM,QAAQ,GAAG,SAAS,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC;YACxD,MAAM,YAAY,GAAG,oBAAoB,CAAC,YAAY,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;YAEhF,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,mEAAmE;gBACnE,QAAQ,CAAC,aAAa,EAAE;oBACtB,MAAM;oBACN,UAAU,EAAE,wBAAwB;oBACpC,KAAK,EAAE,YAAY;iBACpB,CAAC,CAAC;gBACH,OAAO;oBACL,MAAM,EAAE,WAAW;oBACnB,UAAU,EAAE,wBAAwB;oBACpC,iBAAiB;oBACjB,iBAAiB,EAAE,WAAW;oBAC9B,iBAAiB,EACf,GAAG,aAAa,CAAC,MAAM,qDAAqD,QAAQ,UAAU;oBAChG,cAAc,EAAE,aAAa,CAAC,KAAK;oBACnC,YAAY;oBACZ,gBAAgB;oBAChB,wBAAwB,EAAE,CAAC;oBAC3B,eAAe,EAAE,QAAQ;oBACzB,2BAA2B,EAAE,KAAK;iBACnC,CAAC;YACJ,CAAC;YAED,wEAAwE;YACxE,MAAM,YAAY,GAAa,EAAE,CAAC;YAClC,KAAK,IAAI,CAAC,GAAG,YAAY,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC3D,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC5D,IAAI,KAAK,EAAE,kBAAkB,EAAE,CAAC;oBAC9B,MAAM,EAAE,GAAG,KAAK,CAAC,kBAA6C,CAAC;oBAC/D,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,aAAa,CAAC;wBAC3C,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;wBAChE,CAAC,CAAC,EAAE,CAAC;oBACP,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;wBACtB,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;4BAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBACtD,CAAC;gBACH,CAAC;YACH,CAAC;YAED,MAAM,eAAe,GAAG,oBAAoB,CAC1C,YAAY,EACZ,YAAY,CAAC,KAAK,EAClB,aAAa,CAAC,KAAK,IAAI,gBAAgB,EACvC,SAAS,EAAE,CAAC,MAAM,CAAC,8BAA8B;gBAC/C,CAAC,CAAC,YAAY,CAAC,kBAAkB;gBACjC,CAAC,CAAC,EAAE,EACN,YAAY,CACb,CAAC;YAEF,QAAQ,CAAC,uBAAuB,EAAE;gBAChC,MAAM;gBACN,KAAK,EAAE,YAAY;gBACnB,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;gBAC1C,KAAK,EAAE,aAAa,CAAC,KAAK,IAAI,EAAE;gBAChC,eAAe,EAAE,YAAY,CAAC,KAAK;gBACnC,kBAAkB,EAAE,YAAY,CAAC,kBAAkB,CAAC,MAAM;aAC3D,CAAC,CAAC;YAEH,OAAO;gBACL,MAAM,EAAE,WAAW;gBACnB,eAAe;gBACf,eAAe,EAAE,YAAY,CAAC,KAAK;gBACnC,2BAA2B,EAAE,SAAS,EAAE,CAAC,MAAM,CAAC,8BAA8B;oBAC5E,CAAC,CAAC,YAAY,CAAC,kBAAkB;oBACjC,CAAC,CAAC,EAAE;gBACN,qBAAqB,EAAE,YAAY;gBACnC,oBAAoB,EAAE,aAAa,CAAC,KAAK;gBACzC,iBAAiB;gBACjB,iBAAiB,EAAE,WAAW;gBAC9B,iBAAiB,EAAE,aAAa,CAAC,MAAM;gBACvC,cAAc,EAAE,aAAa,CAAC,KAAK;gBACnC,YAAY;gBACZ,gBAAgB;gBAChB,wBAAwB,EAAE,CAAC,EAAE,sBAAsB;gBACnD,eAAe,EAAE,SAAS;gBAC1B,2BAA2B,EAAE,KAAK;aACnC,CAAC;QACJ,CAAC;QAED,kCAAkC;QAClC,uDAAuD;QAEvD,uEAAuE;QACvE,uEAAuE;QAEvE,kCAAkC;QAClC,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACzB,OAAO;gBACL,MAAM,EAAE,MAAM;gBACd,UAAU,EAAE,SAAS;gBACrB,iBAAiB;gBACjB,YAAY;gBACZ,gBAAgB;gBAChB,wBAAwB,EAAE,CAAC;gBAC3B,eAAe,EAAE,QAAQ;gBACzB,2BAA2B,EAAE,CAAC,gBAAgB;aAC/C,CAAC;QACJ,CAAC;QAED,sBAAsB;QACtB,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC;YAC9B,IAAI,MAAkB,CAAC;YACvB,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM,GAAG,WAAW,CAAC;YACvB,CAAC;iBAAM,IAAI,QAAQ,CAAC,WAAW,KAAK,SAAS,IAAI,QAAQ,CAAC,WAAW,KAAK,mBAAmB,EAAE,CAAC;gBAC9F,MAAM,GAAG,SAAS,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,QAAQ,CAAC;YACpB,CAAC;YACD,OAAO;gBACL,MAAM,EAAE,MAAM;gBACd,UAAU,EAAE,MAAM;gBAClB,iBAAiB;gBACjB,YAAY;gBACZ,gBAAgB;gBAChB,wBAAwB,EAAE,CAAC;gBAC3B,eAAe,EAAE,QAAQ;gBACzB,2BAA2B,EAAE,CAAC,gBAAgB;aAC/C,CAAC;QACJ,CAAC;QAED,yBAAyB;QACzB,EAAE;QACF,wEAAwE;QACxE,oEAAoE;QACpE,uEAAuE;QACvE,6EAA6E;QAC7E,oEAAoE;QACpE,mEAAmE;QACnE,IAAI,YAAY,IAAI,SAAS,EAAE,CAAC;YAC9B,OAAO;gBACL,MAAM,EAAE,MAAM;gBACd,UAAU,EAAE,YAAY;gBACxB,iBAAiB;gBACjB,YAAY;gBACZ,gBAAgB;gBAChB,wBAAwB,EAAE,CAAC;gBAC3B,eAAe,EAAE,QAAQ;gBACzB,2BAA2B,EAAE,CAAC,gBAAgB;aAC/C,CAAC;QACJ,CAAC;QAED,uEAAuE;QACvE,OAAO;YACL,MAAM,EAAE,UAAU;YAClB,iBAAiB;YACjB,iBAAiB,EAAE,QAAQ;YAC3B,YAAY;YACZ,gBAAgB;YAChB,wBAAwB,EAAE,CAAC;YAC3B,eAAe,EAAE,QAAQ;YACzB,2BAA2B,EAAE,CAAC,gBAAgB;YAC9C,uEAAuE;YACvE,qBAAqB,EAAE,aAAa,CAAC,sBAAsB,IAAI,KAAK;SACrE,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"round-coordinator.js","sourceRoot":"","sources":["../src/round-coordinator.ts"],"names":[],"mappings":"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"}
@@ -5,10 +5,10 @@
5
5
  * as heartbeats, executor deadlines, MCP leases, and response formatting stay
6
6
  * in their adapters.
7
7
  */
8
- import type { VaultBackend } from "./backends/interface.js";
9
- import { LoopForgeEngine } from "./engine.js";
8
+ import type { LoopStore } from "./loop-store.js";
9
+ import { RuntimeServices } from "./runtime-services.js";
10
10
  import type { ProviderSnapshot } from "./evidence-provider.js";
11
- import type { LoopForgeRequest, PromptArtifact, SelfEvaluation } from "./protocol.js";
11
+ import type { CompilerRoundProjection, LoopForgeRequest, PromptArtifact, RoundReport } from "./protocol.js";
12
12
  import type { RoundTransactionOutcome, RoundTransactionSnapshot } from "./round-transaction.js";
13
13
  export interface PreparedRound {
14
14
  prompt: string;
@@ -18,21 +18,28 @@ export interface PreparedRound {
18
18
  snapshot: RoundTransactionSnapshot;
19
19
  stateFileContent?: string;
20
20
  warnings?: string[];
21
+ canonicalState?: unknown;
21
22
  }
22
23
  export interface CompleteRoundInput {
23
24
  snapshot: RoundTransactionSnapshot;
24
25
  loopId: string;
25
26
  task: string;
26
27
  maxRounds: number;
27
- selfEval: SelfEvaluation;
28
- extractionSucceeded: boolean;
29
- lastSelfEval?: SelfEvaluation;
28
+ roundReport: RoundReport;
29
+ previousProjection?: CompilerRoundProjection;
30
30
  consecutiveRejections: number;
31
31
  successTrajectory: boolean[];
32
32
  /** v2.12: Current clarification streak for R7 escalation. */
33
33
  driftClarificationStreak?: number;
34
+ /** Terminal enforcement checks that already consumed their guided retry. */
35
+ escalatedRejectionChecks?: string[];
34
36
  /** v2.13: Files from skipped backtrack rounds for restore check. */
35
37
  backtrackSkippedFiles?: string[];
38
+ /** v2.13: Git HEAD of the active backtrack restore point. Passed to the
39
+ * verification gate; the post-backtrack round must match it. */
40
+ backtrackTargetGitHead?: string;
41
+ expectedAction?: string;
42
+ remainingCriteria?: string[];
36
43
  }
37
44
  export interface CompletedRound {
38
45
  outcome: RoundTransactionOutcome;
@@ -41,11 +48,8 @@ export interface CompletedRound {
41
48
  export declare class RoundDriver {
42
49
  private readonly engine;
43
50
  private readonly backend;
44
- constructor(engine: LoopForgeEngine, backend?: VaultBackend);
51
+ constructor(engine: RuntimeServices, backend?: LoopStore);
45
52
  prepare(request: LoopForgeRequest, loopId: string, round: number): Promise<PreparedRound | null>;
46
- /** Synchronous fallback for legacy embedding APIs. Async evidence providers
47
- * are deliberately skipped by EvidenceCollector.collect(). */
48
- prepareSync(request: LoopForgeRequest, loopId: string, round: number): PreparedRound | null;
49
53
  private compile;
50
54
  /** Compile a fresh prompt for a zero-commit enforcement retry. The logical
51
55
  * round ID and before-evidence snapshot remain stable; only attempt changes. */
@@ -1 +1 @@
1
- {"version":3,"file":"round-driver.d.ts","sourceRoot":"","sources":["../src/round-driver.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,OAAO,KAAK,EACV,gBAAgB,EAEhB,cAAc,EACd,cAAc,EACf,MAAM,eAAe,CAAC;AAMvB,OAAO,KAAK,EACV,uBAAuB,EACvB,wBAAwB,EACzB,MAAM,wBAAwB,CAAC;AAEhC,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,KAAK,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;IACrC,QAAQ,EAAE,wBAAwB,CAAC;IACnC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,wBAAwB,CAAC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,cAAc,CAAC;IACzB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,YAAY,CAAC,EAAE,cAAc,CAAC;IAC9B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,iBAAiB,EAAE,OAAO,EAAE,CAAC;IAC7B,6DAA6D;IAC7D,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,oEAAoE;IACpE,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;CAClC;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,uBAAuB,CAAC;IACjC,cAAc,EAAE,gBAAgB,EAAE,CAAC;CACpC;AAED,qBAAa,WAAW;IAGV,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;gBAEV,MAAM,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,YAAY;IAItE,OAAO,CACX,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAOhC;kEAC8D;IAC9D,WAAW,CACT,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ,aAAa,GAAG,IAAI;IASvB,OAAO,CAAC,OAAO;IAgBf;oFACgF;IAC1E,YAAY,CAChB,OAAO,EAAE,gBAAgB,EACzB,QAAQ,EAAE,wBAAwB,EAClC,eAAe,EAAE,MAAM,EACvB,qBAAqB,EAAE,MAAM,GAC5B,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAuBhC,OAAO,CAAC,aAAa;IAwBf,QAAQ,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,cAAc,CAAC;IAsBlE,OAAO,CAAC,QAAQ,EAAE,wBAAwB,GAAG,uBAAuB,GAAG,IAAI;IAO3E,OAAO,CAAC,eAAe;CAMxB"}
1
+ {"version":3,"file":"round-driver.d.ts","sourceRoot":"","sources":["../src/round-driver.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,OAAO,KAAK,EACV,uBAAuB,EACvB,gBAAgB,EAEhB,cAAc,EACd,WAAW,EACZ,MAAM,eAAe,CAAC;AAMvB,OAAO,KAAK,EACV,uBAAuB,EACvB,wBAAwB,EACzB,MAAM,wBAAwB,CAAC;AAEhC,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,KAAK,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;IACrC,QAAQ,EAAE,wBAAwB,CAAC;IACnC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,wBAAwB,CAAC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,WAAW,CAAC;IACzB,kBAAkB,CAAC,EAAE,uBAAuB,CAAC;IAC7C,qBAAqB,EAAE,MAAM,CAAC;IAC9B,iBAAiB,EAAE,OAAO,EAAE,CAAC;IAC7B,6DAA6D;IAC7D,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,4EAA4E;IAC5E,wBAAwB,CAAC,EAAE,MAAM,EAAE,CAAC;IACpC,oEAAoE;IACpE,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;IACjC;qEACiE;IACjE,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,uBAAuB,CAAC;IACjC,cAAc,EAAE,gBAAgB,EAAE,CAAC;CACpC;AAED,qBAAa,WAAW;IAGV,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAY;gBAEP,MAAM,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,SAAS;IAInE,OAAO,CACX,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAOhC,OAAO,CAAC,OAAO;IAgBf;oFACgF;IAC1E,YAAY,CAChB,OAAO,EAAE,gBAAgB,EACzB,QAAQ,EAAE,wBAAwB,EAClC,eAAe,EAAE,MAAM,EACvB,qBAAqB,EAAE,MAAM,GAC5B,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAwBhC,OAAO,CAAC,aAAa;IAyBf,QAAQ,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,cAAc,CAAC;IAyBlE,OAAO,CAAC,QAAQ,EAAE,wBAAwB,GAAG,uBAAuB,GAAG,IAAI;IAO3E,OAAO,CAAC,eAAe;CAMxB"}
@@ -6,7 +6,7 @@
6
6
  * in their adapters.
7
7
  */
8
8
  import { EvidenceCollector } from "./evidence-provider.js";
9
- import { getPolicy, writeStateFile } from "./policy.js";
9
+ import { writeStateFile } from "./policy.js";
10
10
  import { prepareRejectedAttempt, prepareRoundTransaction, RoundTransactionCoordinator, } from "./round-transaction.js";
11
11
  export class RoundDriver {
12
12
  engine;
@@ -22,15 +22,6 @@ export class RoundDriver {
22
22
  const evidenceBaseline = await this.collectEvidence(loopId, "before");
23
23
  return this.finishPrepare(response, loopId, round, evidenceBaseline);
24
24
  }
25
- /** Synchronous fallback for legacy embedding APIs. Async evidence providers
26
- * are deliberately skipped by EvidenceCollector.collect(). */
27
- prepareSync(request, loopId, round) {
28
- const response = this.compile(request, loopId, true);
29
- if (!response)
30
- return null;
31
- const evidenceBaseline = EvidenceCollector.fromProviderNames(getPolicy().evidence.providers).collect({ loopId });
32
- return this.finishPrepare(response, loopId, round, evidenceBaseline);
33
- }
34
25
  compile(request, loopId, persistLineage) {
35
26
  const compiled = this.engine.invokeLoopCompile(request, undefined, { persistLineage });
36
27
  const response = compiled.response;
@@ -62,6 +53,7 @@ export class RoundDriver {
62
53
  snapshot,
63
54
  stateFileContent: response.state_file_content,
64
55
  warnings: response.warnings,
56
+ canonicalState: response.canonical_state,
65
57
  };
66
58
  }
67
59
  finishPrepare(response, loopId, round, evidenceBaseline) {
@@ -75,6 +67,7 @@ export class RoundDriver {
75
67
  snapshot,
76
68
  stateFileContent: response.state_file_content,
77
69
  warnings: response.warnings,
70
+ canonicalState: response.canonical_state,
78
71
  };
79
72
  }
80
73
  async complete(input) {
@@ -84,14 +77,17 @@ export class RoundDriver {
84
77
  snapshot: input.snapshot,
85
78
  task: input.task,
86
79
  maxRounds: input.maxRounds,
87
- selfEval: input.selfEval,
88
- extractionSucceeded: input.extractionSucceeded,
89
- lastSelfEval: input.lastSelfEval,
80
+ roundReport: input.roundReport,
81
+ previousProjection: input.previousProjection,
90
82
  consecutiveRejections: input.consecutiveRejections,
91
83
  successTrajectory: input.successTrajectory,
92
84
  actualEvidence,
93
85
  driftClarificationStreak: input.driftClarificationStreak,
94
86
  backtrackSkippedFiles: input.backtrackSkippedFiles,
87
+ backtrackTargetGitHead: input.backtrackTargetGitHead,
88
+ expectedAction: input.expectedAction,
89
+ escalatedRejectionChecks: input.escalatedRejectionChecks,
90
+ remainingCriteria: input.remainingCriteria,
95
91
  });
96
92
  return { outcome, actualEvidence };
97
93
  }
@@ -1 +1 @@
1
- {"version":3,"file":"round-driver.js","sourceRoot":"","sources":["../src/round-driver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"round-driver.js","sourceRoot":"","sources":["../src/round-driver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import type { VaultEntry } from "./vault-types.js";
2
+ import type { ProviderSnapshot } from "./evidence-provider.js";
3
+ import type { CompilerRoundProjection, EvidenceDerivedView, EnforcementResult, RoundReport, VerificationResult } from "./protocol.js";
4
+ /** The only input accepted by the runtime verification and enforcement gates. */
5
+ export interface RoundGateContext {
6
+ report: RoundReport;
7
+ evidence: EvidenceDerivedView;
8
+ previous?: CompilerRoundProjection | null;
9
+ history: VaultEntry[];
10
+ currentRound: number;
11
+ providerSnapshots: ProviderSnapshot[];
12
+ expectedAction?: string;
13
+ backtrackSkippedFiles?: string[];
14
+ /** v2.13: Git HEAD commit of the backtrack restore point. When set, the
15
+ * current round's git evidence must match it — the post-backtrack round
16
+ * is a pure verification round, so any HEAD movement means the workspace
17
+ * was not restored before working. */
18
+ backtrackTargetGitHead?: string;
19
+ consecutiveRejections?: number;
20
+ driftClarificationStreak?: number;
21
+ /** Terminal enforcement checks that have already issued their one guided
22
+ * retry. Tracked per rule so unrelated failures do not consume each
23
+ * other's escalation budget. */
24
+ escalatedRejectionChecks?: string[];
25
+ }
26
+ /** Verify a normalized report without creating a legacy round projection. */
27
+ export declare function verifyRoundReport(context: RoundGateContext): VerificationResult;
28
+ /** Enforcement consumes the same normalized context and never re-extracts evidence. */
29
+ export declare function enforceRoundReport(context: RoundGateContext, verification: VerificationResult): EnforcementResult;
30
+ export declare function makeRoundGateContext(report: RoundReport, currentRound: number, history: VaultEntry[], providerSnapshots: ProviderSnapshot[], remainingCriteria?: string[], options?: Omit<RoundGateContext, "report" | "evidence" | "currentRound" | "history" | "providerSnapshots">): RoundGateContext;
31
+ //# sourceMappingURL=round-gate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"round-gate.d.ts","sourceRoot":"","sources":["../src/round-gate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,OAAO,KAAK,EACV,uBAAuB,EACvB,mBAAmB,EACnB,iBAAiB,EACjB,WAAW,EAEX,kBAAkB,EACnB,MAAM,eAAe,CAAC;AAcvB,iFAAiF;AACjF,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,QAAQ,CAAC,EAAE,uBAAuB,GAAG,IAAI,CAAC;IAC1C,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;IACtC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;IACjC;;;2CAGuC;IACvC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC;;qCAEiC;IACjC,wBAAwB,CAAC,EAAE,MAAM,EAAE,CAAC;CACrC;AA2FD,6EAA6E;AAC7E,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,GAAG,kBAAkB,CA4L/E;AAED,uFAAuF;AACvF,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,gBAAgB,EACzB,YAAY,EAAE,kBAAkB,GAC/B,iBAAiB,CA0EnB;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,WAAW,EACnB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,UAAU,EAAE,EACrB,iBAAiB,EAAE,gBAAgB,EAAE,EACrC,iBAAiB,GAAE,MAAM,EAAO,EAChC,OAAO,GAAE,IAAI,CAAC,gBAAgB,EAAE,QAAQ,GAAG,UAAU,GAAG,cAAc,GAAG,SAAS,GAAG,mBAAmB,CAAM,GAC7G,gBAAgB,CASlB"}