loopforge 2.7.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 (173) hide show
  1. package/README.md +136 -182
  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 +211 -64
  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 +26 -26
  26. package/dist/evidence-provider.d.ts.map +1 -1
  27. package/dist/evidence-provider.js +45 -71
  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 +23 -29
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +16 -26
  34. package/dist/index.js.map +1 -1
  35. package/dist/loop-compiler.d.ts +2 -2
  36. package/dist/loop-compiler.d.ts.map +1 -1
  37. package/dist/loop-compiler.js +321 -315
  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 -311
  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 +123 -19
  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 +65 -84
  64. package/dist/mcp/session.d.ts.map +1 -1
  65. package/dist/mcp/session.js +667 -224
  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 +401 -254
  70. package/dist/mcp/tools.js.map +1 -1
  71. package/dist/policy-metrics.d.ts +24 -0
  72. package/dist/policy-metrics.d.ts.map +1 -1
  73. package/dist/policy-metrics.js +174 -0
  74. package/dist/policy-metrics.js.map +1 -1
  75. package/dist/policy.d.ts +74 -12
  76. package/dist/policy.d.ts.map +1 -1
  77. package/dist/policy.js +124 -19
  78. package/dist/policy.js.map +1 -1
  79. package/dist/prompt-assembler.d.ts +8 -4
  80. package/dist/prompt-assembler.d.ts.map +1 -1
  81. package/dist/prompt-assembler.js +533 -86
  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 +259 -173
  88. package/dist/protocol.d.ts.map +1 -1
  89. package/dist/protocol.js +17 -96
  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 +53 -22
  100. package/dist/round-coordinator.d.ts.map +1 -1
  101. package/dist/round-coordinator.js +140 -44
  102. package/dist/round-coordinator.js.map +1 -1
  103. package/dist/round-driver.d.ts +18 -10
  104. package/dist/round-driver.d.ts.map +1 -1
  105. package/dist/round-driver.js +11 -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 +23 -12
  120. package/dist/round-transaction.d.ts.map +1 -1
  121. package/dist/round-transaction.js +104 -91
  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/{engine.js → runtime-services.js} +157 -275
  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 +12 -8
  132. package/dist/token-utils.d.ts.map +1 -1
  133. package/dist/token-utils.js +56 -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 +13 -7
  146. package/skills/perception/SKILL.md +200 -90
  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 -50
  152. package/dist/enforcement-gate.d.ts.map +0 -1
  153. package/dist/enforcement-gate.js +0 -501
  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.map +0 -1
  158. package/dist/interop.d.ts +0 -35
  159. package/dist/interop.d.ts.map +0 -1
  160. package/dist/interop.js +0 -34
  161. package/dist/interop.js.map +0 -1
  162. package/dist/run.d.ts +0 -51
  163. package/dist/run.d.ts.map +0 -1
  164. package/dist/run.js +0 -200
  165. package/dist/run.js.map +0 -1
  166. package/dist/self-eval.d.ts +0 -23
  167. package/dist/self-eval.d.ts.map +0 -1
  168. package/dist/self-eval.js +0 -151
  169. package/dist/self-eval.js.map +0 -1
  170. package/dist/verification-gate.d.ts +0 -52
  171. package/dist/verification-gate.d.ts.map +0 -1
  172. package/dist/verification-gate.js +0 -527
  173. 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,16 +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 } from "./verification-gate.js";
21
- import { enforceRound, buildRejectionPrompt } 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";
21
+ import { getPolicy } from "./policy.js";
22
+ import { deriveCompilerProjection } from "./round-report.js";
23
23
  // ── RoundCoordinator ───────────────────────────────────────────────────────
24
24
  export class RoundCoordinator {
25
25
  backend;
26
26
  constructor(backend) {
27
27
  this.backend = backend;
28
28
  }
29
- /** Process a single round's self-evaluation through the decision pipeline:
29
+ /** Process a single round's round report through the decision pipeline:
30
30
  * verify → enforce → stop decision.
31
31
  *
32
32
  * This is the single entry point called by SessionManager.
@@ -34,20 +34,36 @@ export class RoundCoordinator {
34
34
  * - Compiling the next prompt (if action is "continue")
35
35
  * - Managing heartbeat / signal handlers (runtime only)
36
36
  * - Memory injection (both paths, before calling processRound)
37
- * - Transactional feedback commit (accepted rounds only)
37
+ * - Transactional round-event commit (accepted rounds only)
38
38
  * - State file I/O (both paths, after compiling)
39
- */
40
- processRound(input) {
41
- const { loopId, task, currentRound, maxRounds, selfEval, extractionSucceeded, lastSelfEval, consecutiveRejections, evidenceSnapshots, } = input;
42
- const roundSuccess = selfEval.success ?? false;
39
+ *
40
+ * @param driftClarificationStreak v2.12: Current clarification streak
41
+ * from session state. Passed through to enforceRound for R7 escalation. */
42
+ processRound(input, driftClarificationStreak = 0) {
43
+ const { loopId, task, currentRound, maxRounds, roundReport: suppliedReport, previousProjection, consecutiveRejections, evidenceSnapshots, } = input;
44
+ const roundReport = suppliedReport;
45
+ const roundSuccess = roundReport.outcome === "success";
43
46
  // ── 1. Query vault entries ──────────────────────────────────────────
47
+ // Merge lineage and canonical RoundEvent entries for replayable checks.
48
+ const prefix = `loop:${loopId}:r`;
44
49
  const vaultEntries = this.backend
45
- ? this.backend.queryEntries({ prefix: `loop:${loopId}:r` })
50
+ ? this.backend.queryLoopEvents(loopId).filter((entry) => String(entry.task_id ?? "").startsWith(prefix))
46
51
  : [];
47
52
  // ── 2. Verification gate ────────────────────────────────────────────
48
- const verifyResult = verifySelfEvaluation(selfEval, currentRound, vaultEntries, lastSelfEval ?? null, evidenceSnapshots ?? []);
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);
49
64
  const verificationFlags = verifyResult.flags;
50
65
  const gateContradicted = verifyResult.verdict === "contradicted";
66
+ const clarificationAccepted = verificationFlags.some((item) => item.check === "intent_drift" && item.severity === "warn");
51
67
  if (gateContradicted) {
52
68
  logEvent("gate_contradicted", {
53
69
  loopId,
@@ -56,10 +72,8 @@ export class RoundCoordinator {
56
72
  });
57
73
  }
58
74
  // ── 3. Enforcement gate ──────────────────────────────────────────
59
- // v2.5: heuristic extractions now run partial enforcement. Rules that
60
- // depend on execution_evidence (R3/R4/R5) self-skip when evidence is
61
- // missing. Rules that don't need evidence (R1/R2/R6/R7) always run.
62
- const enforceResult = enforceRound(selfEval, verifyResult, currentRound, vaultEntries, consecutiveRejections, !extractionSucceeded);
75
+ // Enforcement consumes the same normalized Gate context as verification.
76
+ const enforceResult = enforceRoundReport(gateContext, verifyResult);
63
77
  if (enforceResult.action === "reject") {
64
78
  const newRejections = consecutiveRejections + 1;
65
79
  const rejectionPrompt = buildRejectionPrompt(currentRound, task, enforceResult, verificationFlags);
@@ -80,9 +94,10 @@ export class RoundCoordinator {
80
94
  roundSuccess,
81
95
  gateContradicted,
82
96
  newConsecutiveRejections: newRejections,
83
- // Don't update lastSelfEval on reject — the agent redoes the same round
84
- newLastSelfEval: undefined,
97
+ // Don't update lastRoundView on reject — the agent redoes the same round
98
+ newRoundProjection: undefined,
85
99
  shouldPushSuccessTrajectory: false,
100
+ escalationIssued: enforceResult.escalation_issued ?? false,
86
101
  };
87
102
  }
88
103
  if (enforceResult.action === "terminate") {
@@ -101,34 +116,84 @@ export class RoundCoordinator {
101
116
  roundSuccess,
102
117
  gateContradicted,
103
118
  newConsecutiveRejections: 0,
104
- newLastSelfEval: selfEval,
119
+ newRoundProjection: currentProjection,
105
120
  shouldPushSuccessTrajectory: false,
106
121
  };
107
122
  }
108
- // Accept: reset rejection counter
109
- // (consecutiveRejections reset to 0 — caller persists)
110
- // ── 4. Auto-feedback (AFTER enforcement, only if accepted) ──────────
111
- // ── 5. Stop condition checks ────────────────────────────────────────
112
- // 5a. Extraction failed → stalled
113
- if (!extractionSucceeded) {
123
+ // ── v2.10: Backtrack ──────────────────────────────────────────────────
124
+ if (enforceResult.action === "backtrack") {
125
+ const maxDepth = getPolicy().engine.backtrack_max_depth;
126
+ const restorePoint = findSafeRestorePoint(currentRound, vaultEntries, maxDepth);
127
+ if (!restorePoint) {
128
+ // No clean round found within maxDepth — fall through to terminate
129
+ logEvent("session_end", {
130
+ loopId,
131
+ stopReason: "enforcement_terminated",
132
+ round: currentRound,
133
+ });
134
+ return {
135
+ action: "terminate",
136
+ stopReason: "enforcement_terminated",
137
+ verificationFlags,
138
+ enforcementAction: "terminate",
139
+ enforcementReason: `${enforceResult.reason} (backtrack failed: no clean restore point within ${maxDepth} rounds)`,
140
+ rejectionCheck: enforceResult.check,
141
+ roundSuccess,
142
+ gateContradicted,
143
+ newConsecutiveRejections: 0,
144
+ newRoundProjection: currentProjection,
145
+ shouldPushSuccessTrajectory: false,
146
+ };
147
+ }
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);
153
+ const backtrackPrompt = buildBacktrackPrompt(currentRound, restorePoint.round, enforceResult.check ?? "progress_stall", getPolicy().engine.backtrack_preserve_discoveries
154
+ ? restorePoint.skippedDiscoveries
155
+ : [], skippedFiles);
156
+ logEvent("enforcement_backtrack", {
157
+ loopId,
158
+ round: currentRound,
159
+ reason: enforceResult.reason.slice(0, 120),
160
+ check: enforceResult.check ?? "",
161
+ backtrackTarget: restorePoint.round,
162
+ skippedDiscoveries: restorePoint.skippedDiscoveries.length,
163
+ });
114
164
  return {
115
- action: "stop",
116
- stopReason: "stalled",
165
+ action: "backtrack",
166
+ backtrackPrompt,
167
+ backtrackTarget: restorePoint.round,
168
+ backtrackTargetGitHead,
169
+ backtrackSkippedDiscoveries: getPolicy().engine.backtrack_preserve_discoveries
170
+ ? restorePoint.skippedDiscoveries
171
+ : [],
172
+ backtrackSkippedFiles: skippedFiles,
173
+ backtrackTriggerRule: enforceResult.check,
117
174
  verificationFlags,
175
+ enforcementAction: "backtrack",
176
+ enforcementReason: enforceResult.reason,
177
+ rejectionCheck: enforceResult.check,
118
178
  roundSuccess,
119
179
  gateContradicted,
120
- newConsecutiveRejections: 0,
121
- newLastSelfEval: selfEval,
122
- shouldPushSuccessTrajectory: !gateContradicted,
180
+ newConsecutiveRejections: 0, // reset — fresh start
181
+ newRoundProjection: undefined,
182
+ shouldPushSuccessTrajectory: false,
123
183
  };
124
184
  }
125
- // 5b. Agent says stop
126
- if (!selfEval.should_continue) {
185
+ // Accept: reset rejection counter
186
+ // (consecutiveRejections reset to 0 — caller persists)
187
+ // ── 4. Canonical round-report commit (AFTER enforcement) ────────────
188
+ // ── 5. Stop condition checks ────────────────────────────────────────
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") {
127
192
  let reason;
128
193
  if (roundSuccess) {
129
194
  reason = "completed";
130
195
  }
131
- else if (selfEval.stop_reason === "blocked" || selfEval.stop_reason === "needs_human_input") {
196
+ else if (roundReport.outcome === "blocked") {
132
197
  reason = "blocked";
133
198
  }
134
199
  else {
@@ -141,18 +206,47 @@ export class RoundCoordinator {
141
206
  roundSuccess,
142
207
  gateContradicted,
143
208
  newConsecutiveRejections: 0,
144
- newLastSelfEval: selfEval,
209
+ newRoundProjection: currentProjection,
210
+ clarificationAccepted,
145
211
  shouldPushSuccessTrajectory: !gateContradicted,
146
212
  };
147
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
+ }
148
245
  // 5c. Max rounds reached
149
246
  //
150
- // NOTE: The binary-success circuit breaker previously at 5c is removed.
151
- // Genuine agent stalls are now detected by the enforcement gate via
152
- // enforceProgressStall (R4: delta < 5% → reject → terminate on repeat)
153
- // and enforceProgressStallTerminal (R5: delta = 0 for N rounds → terminate).
154
- // These use progress_estimate, not the binary success flag, so they
155
- // 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.
156
250
  if (currentRound >= maxRounds) {
157
251
  return {
158
252
  action: "stop",
@@ -161,7 +255,8 @@ export class RoundCoordinator {
161
255
  roundSuccess,
162
256
  gateContradicted,
163
257
  newConsecutiveRejections: 0,
164
- newLastSelfEval: selfEval,
258
+ newRoundProjection: currentProjection,
259
+ clarificationAccepted,
165
260
  shouldPushSuccessTrajectory: !gateContradicted,
166
261
  };
167
262
  }
@@ -173,8 +268,9 @@ export class RoundCoordinator {
173
268
  roundSuccess,
174
269
  gateContradicted,
175
270
  newConsecutiveRejections: 0,
176
- newLastSelfEval: selfEval,
271
+ newRoundProjection: currentProjection,
177
272
  shouldPushSuccessTrajectory: !gateContradicted,
273
+ clarificationAccepted,
178
274
  };
179
275
  }
180
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,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC3E,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAwD9C,8EAA8E;AAE9E,MAAM,OAAO,gBAAgB;IACnB,OAAO,CAA2B;IAE1C,YAAY,OAAsB;QAChC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED;;;;;;;;;;OAUG;IACH,YAAY,CAAC,KAAwB;QACnC,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,MAAM,YAAY,GAAiB,IAAI,CAAC,OAAO;YAC7C,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,QAAQ,MAAM,IAAI,EAAE,CAAC;YAC3D,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,CACxB,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,CACrB,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,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;SAC/C,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,17 +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
+ /** v2.12: Current clarification streak for R7 escalation. */
33
+ driftClarificationStreak?: number;
34
+ /** Terminal enforcement checks that already consumed their guided retry. */
35
+ escalatedRejectionChecks?: string[];
36
+ /** v2.13: Files from skipped backtrack rounds for restore check. */
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[];
32
43
  }
33
44
  export interface CompletedRound {
34
45
  outcome: RoundTransactionOutcome;
@@ -37,11 +48,8 @@ export interface CompletedRound {
37
48
  export declare class RoundDriver {
38
49
  private readonly engine;
39
50
  private readonly backend;
40
- constructor(engine: LoopForgeEngine, backend?: VaultBackend);
51
+ constructor(engine: RuntimeServices, backend?: LoopStore);
41
52
  prepare(request: LoopForgeRequest, loopId: string, round: number): Promise<PreparedRound | null>;
42
- /** Synchronous fallback for legacy embedding APIs. Async evidence providers
43
- * are deliberately skipped by EvidenceCollector.collect(). */
44
- prepareSync(request: LoopForgeRequest, loopId: string, round: number): PreparedRound | null;
45
53
  private compile;
46
54
  /** Compile a fresh prompt for a zero-commit enforcement retry. The logical
47
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;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,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;IAoBlE,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,12 +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,
85
+ driftClarificationStreak: input.driftClarificationStreak,
86
+ backtrackSkippedFiles: input.backtrackSkippedFiles,
87
+ backtrackTargetGitHead: input.backtrackTargetGitHead,
88
+ expectedAction: input.expectedAction,
89
+ escalatedRejectionChecks: input.escalatedRejectionChecks,
90
+ remainingCriteria: input.remainingCriteria,
93
91
  });
94
92
  return { outcome, actualEvidence };
95
93
  }
@@ -1 +1 @@
1
- {"version":3,"file":"round-driver.js","sourceRoot":"","sources":["../src/round-driver.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAOxD,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,2BAA2B,GAC5B,MAAM,wBAAwB,CAAC;AAiChC,MAAM,OAAO,WAAW;IAGO;IAFZ,OAAO,CAAe;IAEvC,YAA6B,MAAuB,EAAE,OAAsB;QAA/C,WAAM,GAAN,MAAM,CAAiB;QAClD,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,OAAO,CACX,OAAyB,EACzB,MAAc,EACd,KAAa;QAEb,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QACrD,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QAC3B,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACtE,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC;IACvE,CAAC;IAED;kEAC8D;IAC9D,WAAW,CACT,OAAyB,EACzB,MAAc,EACd,KAAa;QAEb,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QACrD,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QAC3B,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,iBAAiB,CAC1D,SAAS,EAAE,CAAC,QAAQ,CAAC,SAAS,CAC/B,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QACtB,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC;IACvE,CAAC;IAEO,OAAO,CACb,OAAyB,EACzB,MAAc,EACd,cAAuB;QAEvB,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAC5C,OAAO,EACP,SAAS,EACT,EAAE,cAAc,EAAE,CACnB,CAAC;QACF,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;QACnC,IAAI,CAAC,QAAQ,EAAE,MAAM;YAAE,OAAO,IAAI,CAAC;QACnC,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAC;QACpD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;oFACgF;IAChF,KAAK,CAAC,YAAY,CAChB,OAAyB,EACzB,QAAkC,EAClC,eAAuB,EACvB,qBAA6B;QAE7B,MAAM,YAAY,GAAG;YACnB,GAAG,OAAO;YACV,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,OAAO,EAAE,QAAQ,CAAC,OAAO,GAAG,CAAC;YAC7B,sBAAsB,EAAE,qBAAqB;YAC7C,gBAAgB,EAAE,eAAe;YACjC,WAAW,EAAE,qBAAqB,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;SAClC,CAAC;QACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACpE,IAAI,CAAC,QAAQ,EAAE,eAAe;YAAE,OAAO,IAAI,CAAC;QAC5C,MAAM,QAAQ,GAAG,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;QAC5E,OAAO;YACL,MAAM,EAAE,QAAQ,CAAC,MAAO;YACxB,QAAQ,EAAE,QAAQ,CAAC,eAAe;YAClC,KAAK,EAAE,QAAQ,CAAC,eAAe,CAAC,KAAK;YACrC,gBAAgB,EAAE,QAAQ,CAAC,cAAc;YACzC,QAAQ;YACR,gBAAgB,EAAE,QAAQ,CAAC,kBAAkB;YAC7C,QAAQ,EAAE,QAAQ,CAAC,QAAQ;SAC5B,CAAC;IACJ,CAAC;IAEO,aAAa,CACnB,QAA2B,EAC3B,MAAc,EACd,KAAa,EACb,gBAAoC;QAEpC,MAAM,QAAQ,GAAG,QAAQ,CAAC,eAAe,CAAC;QAC1C,MAAM,QAAQ,GAAG,uBAAuB,CACtC,MAAM,EACN,KAAK,EACL,gBAAgB,EAChB,QAAQ,CACT,CAAC;QACF,OAAO;YACL,MAAM,EAAE,QAAQ,CAAC,MAAO;YACxB,QAAQ;YACR,KAAK,EAAE,QAAQ,EAAE,KAAK,IAAI,IAAI;YAC9B,gBAAgB;YAChB,QAAQ;YACR,gBAAgB,EAAE,QAAQ,CAAC,kBAAkB;YAC7C,QAAQ,EAAE,QAAQ,CAAC,QAAQ;SAC5B,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,KAAyB;QACtC,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACzE,MAAM,WAAW,GAAG,IAAI,2BAA2B,CACjD,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,OAAO,CACb,CAAC;QACF,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;YAClC,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,mBAAmB,EAAE,KAAK,CAAC,mBAAmB;YAC9C,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,qBAAqB,EAAE,KAAK,CAAC,qBAAqB;YAClD,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;YAC1C,cAAc;SACf,CAAC,CAAC;QACH,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;IACrC,CAAC;IAED,OAAO,CAAC,QAAkC;QACxC,OAAO,IAAI,2BAA2B,CACpC,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,OAAO,CACb,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACtB,CAAC;IAEO,eAAe,CACrB,MAAc,EACd,KAAyB;QAEzB,OAAO,iBAAiB,CAAC,UAAU,EAAE,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IACxE,CAAC;CACF"}
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"}