loopforge 3.7.0 → 3.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +171 -157
  3. package/dist/audit.d.ts +53 -1
  4. package/dist/audit.d.ts.map +1 -1
  5. package/dist/audit.js +106 -22
  6. package/dist/audit.js.map +1 -1
  7. package/dist/canonical-state.d.ts +75 -69
  8. package/dist/canonical-state.d.ts.map +1 -1
  9. package/dist/canonical-state.js +276 -168
  10. package/dist/canonical-state.js.map +1 -1
  11. package/dist/cli.d.ts.map +1 -1
  12. package/dist/cli.js +111 -12
  13. package/dist/cli.js.map +1 -1
  14. package/dist/cognitive-facts.d.ts +13 -0
  15. package/dist/cognitive-facts.d.ts.map +1 -1
  16. package/dist/cognitive-facts.js +30 -16
  17. package/dist/cognitive-facts.js.map +1 -1
  18. package/dist/cognitive-governance.d.ts +30 -6
  19. package/dist/cognitive-governance.d.ts.map +1 -1
  20. package/dist/cognitive-governance.js +74 -18
  21. package/dist/cognitive-governance.js.map +1 -1
  22. package/dist/committed-round.d.ts +109 -24
  23. package/dist/committed-round.d.ts.map +1 -1
  24. package/dist/committed-round.js +235 -52
  25. package/dist/committed-round.js.map +1 -1
  26. package/dist/contract-items.d.ts +55 -0
  27. package/dist/contract-items.d.ts.map +1 -0
  28. package/dist/contract-items.js +180 -0
  29. package/dist/contract-items.js.map +1 -0
  30. package/dist/enforcement-gate.d.ts +43 -20
  31. package/dist/enforcement-gate.d.ts.map +1 -1
  32. package/dist/enforcement-gate.js +269 -378
  33. package/dist/enforcement-gate.js.map +1 -1
  34. package/dist/engine.d.ts +11 -6
  35. package/dist/engine.d.ts.map +1 -1
  36. package/dist/engine.js +102 -67
  37. package/dist/engine.js.map +1 -1
  38. package/dist/evidence-claims.d.ts +4 -4
  39. package/dist/evidence-claims.d.ts.map +1 -1
  40. package/dist/evidence-claims.js +16 -14
  41. package/dist/evidence-claims.js.map +1 -1
  42. package/dist/evidence-provider.d.ts +91 -90
  43. package/dist/evidence-provider.d.ts.map +1 -1
  44. package/dist/evidence-provider.js +349 -160
  45. package/dist/evidence-provider.js.map +1 -1
  46. package/dist/explain.d.ts +76 -0
  47. package/dist/explain.d.ts.map +1 -0
  48. package/dist/explain.js +127 -0
  49. package/dist/explain.js.map +1 -0
  50. package/dist/generate-schema.js +250 -53
  51. package/dist/generate-schema.js.map +1 -1
  52. package/dist/index.d.ts +8 -7
  53. package/dist/index.d.ts.map +1 -1
  54. package/dist/index.js +7 -6
  55. package/dist/index.js.map +1 -1
  56. package/dist/loop-compiler.d.ts +41 -40
  57. package/dist/loop-compiler.d.ts.map +1 -1
  58. package/dist/loop-compiler.js +275 -515
  59. package/dist/loop-compiler.js.map +1 -1
  60. package/dist/loop-extras-parser.d.ts +0 -1
  61. package/dist/loop-extras-parser.d.ts.map +1 -1
  62. package/dist/loop-extras-parser.js +0 -4
  63. package/dist/loop-extras-parser.js.map +1 -1
  64. package/dist/loop-projection.d.ts.map +1 -1
  65. package/dist/loop-projection.js +3 -1
  66. package/dist/loop-projection.js.map +1 -1
  67. package/dist/mcp/round-lifecycle.d.ts +40 -21
  68. package/dist/mcp/round-lifecycle.d.ts.map +1 -1
  69. package/dist/mcp/round-lifecycle.js +173 -120
  70. package/dist/mcp/round-lifecycle.js.map +1 -1
  71. package/dist/mcp/server.d.ts.map +1 -1
  72. package/dist/mcp/server.js +63 -10
  73. package/dist/mcp/server.js.map +1 -1
  74. package/dist/mcp/session.d.ts +53 -7
  75. package/dist/mcp/session.d.ts.map +1 -1
  76. package/dist/mcp/session.js +240 -139
  77. package/dist/mcp/session.js.map +1 -1
  78. package/dist/mcp/submission-boundary.d.ts +89 -0
  79. package/dist/mcp/submission-boundary.d.ts.map +1 -0
  80. package/dist/mcp/submission-boundary.js +203 -0
  81. package/dist/mcp/submission-boundary.js.map +1 -0
  82. package/dist/mcp/tools.d.ts.map +1 -1
  83. package/dist/mcp/tools.js +377 -125
  84. package/dist/mcp/tools.js.map +1 -1
  85. package/dist/policy-metrics.js +2 -2
  86. package/dist/policy-metrics.js.map +1 -1
  87. package/dist/policy.d.ts +65 -95
  88. package/dist/policy.d.ts.map +1 -1
  89. package/dist/policy.js +151 -39
  90. package/dist/policy.js.map +1 -1
  91. package/dist/prompt-assembler.d.ts +7 -33
  92. package/dist/prompt-assembler.d.ts.map +1 -1
  93. package/dist/prompt-assembler.js +313 -473
  94. package/dist/prompt-assembler.js.map +1 -1
  95. package/dist/prompt-policy.d.ts +1 -4
  96. package/dist/prompt-policy.d.ts.map +1 -1
  97. package/dist/prompt-policy.js +6 -7
  98. package/dist/prompt-policy.js.map +1 -1
  99. package/dist/protocol.d.ts +411 -168
  100. package/dist/protocol.d.ts.map +1 -1
  101. package/dist/protocol.js +23 -69
  102. package/dist/protocol.js.map +1 -1
  103. package/dist/replay.js +2 -2
  104. package/dist/replay.js.map +1 -1
  105. package/dist/round-contract.d.ts +69 -57
  106. package/dist/round-contract.d.ts.map +1 -1
  107. package/dist/round-contract.js +104 -64
  108. package/dist/round-contract.js.map +1 -1
  109. package/dist/round-coordinator.d.ts +55 -16
  110. package/dist/round-coordinator.d.ts.map +1 -1
  111. package/dist/round-coordinator.js +179 -57
  112. package/dist/round-coordinator.js.map +1 -1
  113. package/dist/round-driver.d.ts +7 -5
  114. package/dist/round-driver.d.ts.map +1 -1
  115. package/dist/round-driver.js +2 -1
  116. package/dist/round-driver.js.map +1 -1
  117. package/dist/round-facts.d.ts +96 -0
  118. package/dist/round-facts.d.ts.map +1 -0
  119. package/dist/round-facts.js +216 -0
  120. package/dist/round-facts.js.map +1 -0
  121. package/dist/round-transaction.d.ts +23 -9
  122. package/dist/round-transaction.d.ts.map +1 -1
  123. package/dist/round-transaction.js +99 -22
  124. package/dist/round-transaction.js.map +1 -1
  125. package/dist/self-eval.d.ts +127 -11
  126. package/dist/self-eval.d.ts.map +1 -1
  127. package/dist/self-eval.js +517 -36
  128. package/dist/self-eval.js.map +1 -1
  129. package/dist/subgoal-state.d.ts +77 -0
  130. package/dist/subgoal-state.d.ts.map +1 -0
  131. package/dist/subgoal-state.js +198 -0
  132. package/dist/subgoal-state.js.map +1 -0
  133. package/dist/token-utils.d.ts +52 -19
  134. package/dist/token-utils.d.ts.map +1 -1
  135. package/dist/token-utils.js +83 -72
  136. package/dist/token-utils.js.map +1 -1
  137. package/dist/verification-gate.d.ts +27 -46
  138. package/dist/verification-gate.d.ts.map +1 -1
  139. package/dist/verification-gate.js +308 -557
  140. package/dist/verification-gate.js.map +1 -1
  141. package/dist/version.d.ts +5 -0
  142. package/dist/version.d.ts.map +1 -0
  143. package/dist/version.js +5 -0
  144. package/dist/version.js.map +1 -0
  145. package/dist/workspace.d.ts +9 -0
  146. package/dist/workspace.d.ts.map +1 -1
  147. package/dist/workspace.js +17 -0
  148. package/dist/workspace.js.map +1 -1
  149. package/loop_policy.json +17 -25
  150. package/package.json +7 -7
  151. package/skills/perception/SKILL.md +266 -64
@@ -19,24 +19,116 @@
19
19
  */
20
20
  import { queryLoopEntries } from "./loop-store.js";
21
21
  import { CHECK_SUCCESS_WITHOUT_VERIFIED_EVIDENCE, verifySelfEvaluation } from "./verification-gate.js";
22
- import { entryRound } from "./token-utils.js";
23
- import { effectiveSuccess } from "./self-eval.js";
22
+ import { entryRound, isRecord } from "./token-utils.js";
23
+ import { effectiveOutcome, effectiveSuccess } from "./self-eval.js";
24
+ import { derivationRounds, decodeCommittedRound } from "./committed-round.js";
25
+ import { makeRoundId } from "./round-transaction.js";
24
26
  import { enforceRound, buildRejectionPrompt, findSafeRestorePoint, buildBacktrackPrompt, findBacktrackTargetGitHead, } from "./enforcement-gate.js";
25
27
  import { logEvent } from "./observability.js";
26
28
  import { getPolicy } from "./policy.js";
29
+ import { deriveRoundContractView } from "./round-contract.js";
30
+ import { roundVerificationStatus, } from "./contract-items.js";
27
31
  /** v3.2/v3.6: Whether a round's success enters the success trajectory.
28
32
  * Excluded when the gate contradicted the round, or when the success claim
29
33
  * carries no machine-verified observation — the merged R8 check fires a
30
34
  * warn under machine_backed_success "warn" (v3.6: success_unverified merged
31
35
  * into R8; its warn-level trajectory exclusion moved with it) — an
32
36
  * accepted-but-unverified round is not evidence of progress. */
33
- function shouldPushSuccess(gateContradicted, verificationFlags) {
37
+ function shouldPushSuccess(gateContradicted, verificationFlags, contractStatuses) {
34
38
  if (gateContradicted)
35
39
  return false;
40
+ // v3.8: an unverified contract item (or a claimed-but-unbacked success)
41
+ // keeps the round out of the success trajectory — an accepted-but-unverified
42
+ // round is not evidence of progress.
43
+ if (contractStatuses && contractStatuses.insufficientCount > 0)
44
+ return false;
36
45
  return !verificationFlags.some((flag) => flag.severity === "warn" &&
37
46
  flag.check === CHECK_SUCCESS_WITHOUT_VERIFIED_EVIDENCE);
38
47
  }
39
48
  // ── RoundCoordinator ───────────────────────────────────────────────────────
49
+ /** v3.8.1: The rolled-back branch's facts — the ONE derivation of which rounds
50
+ * failed, which approaches must not be repeated, which assumptions were
51
+ * falsified, and which files (with their failed-round git fingerprints) the
52
+ * agent must restore.
53
+ *
54
+ * Sources are COMMITTED rounds above the restore point; rejected attempts are
55
+ * not durable history and never become a source. The in-flight attempt that
56
+ * triggered the rollback is the one exception — its evaluation lives in this
57
+ * process, not in committed history.
58
+ *
59
+ * Extracted from the coordinator's inline walk so it is unit-testable without
60
+ * driving a whole rollback, and so the prompt, the state file and the
61
+ * committed decision all describe one event. */
62
+ export function deriveBacktrackRecoveryFacts(input) {
63
+ const { currentRound, restoreRound, vaultEntries, selfEval } = input;
64
+ // v2.13: files changed in skipped rounds, for the restore prompt.
65
+ const skippedFiles = [];
66
+ // M3 (v3.7.x): each skipped file's git fingerprint at its failed round.
67
+ // Recorded from the round's own after-evidence (machine data, not the
68
+ // agent's report); later rounds overwrite earlier ones so the map holds the
69
+ // LAST failed state of every file.
70
+ const skippedFingerprints = {};
71
+ const failedRounds = [];
72
+ const approaches = [];
73
+ const wrongAssumptions = [];
74
+ for (let r = restoreRound + 1; r < currentRound; r++) {
75
+ // v3.2.1: match the feedback entry (execution_report lives there) — the
76
+ // compile-time lineage entry for the same round precedes it in the flat
77
+ // view and carries no evidence.
78
+ const entry = vaultEntries.find((e) => entryRound(e) === r && e.task_type !== "loop_lineage");
79
+ const view = entry ? decodeCommittedRound(entry) : null;
80
+ const evaluation = view?.evaluation ?? null;
81
+ if (entry?.execution_report) {
82
+ const ev = entry.execution_report;
83
+ const files = Array.isArray(ev.files_changed)
84
+ ? ev.files_changed.filter((f) => typeof f === "string")
85
+ : [];
86
+ const git = view?.afterEvidence.find((snapshot) => snapshot.kind === "git" &&
87
+ isRecord(snapshot.data.fingerprints));
88
+ const gitFingerprints = git && git.kind === "git"
89
+ ? git.data.fingerprints
90
+ : null;
91
+ for (const f of files) {
92
+ if (!skippedFiles.includes(f))
93
+ skippedFiles.push(f);
94
+ const fp = gitFingerprints?.[f];
95
+ if (typeof fp === "string")
96
+ skippedFingerprints[f] = fp;
97
+ }
98
+ }
99
+ const summary = evaluation?.output_summary ?? "";
100
+ if (summary.trim().length > 0) {
101
+ failedRounds.push(r);
102
+ approaches.push(summary.trim().slice(0, 200));
103
+ }
104
+ const assumptions = (evaluation?.wrong_assumptions ?? [])
105
+ .filter((v) => typeof v === "string")
106
+ .map((s) => s.slice(0, 500));
107
+ for (const a of assumptions) {
108
+ if (!wrongAssumptions.includes(a))
109
+ wrongAssumptions.push(a);
110
+ }
111
+ }
112
+ // The in-flight attempt that triggered this rollback.
113
+ const triggerSummary = selfEval.output_summary?.trim() ?? "";
114
+ if (triggerSummary.length > 0) {
115
+ if (!failedRounds.includes(currentRound))
116
+ failedRounds.push(currentRound);
117
+ approaches.push(triggerSummary.slice(0, 200));
118
+ for (const a of (selfEval.wrong_assumptions ?? [])
119
+ .filter((v) => typeof v === "string")) {
120
+ if (!wrongAssumptions.includes(a))
121
+ wrongAssumptions.push(a.slice(0, 500));
122
+ }
123
+ }
124
+ return {
125
+ skippedFiles,
126
+ skippedFingerprints,
127
+ failedRounds,
128
+ approaches,
129
+ wrongAssumptions,
130
+ };
131
+ }
40
132
  export class RoundCoordinator {
41
133
  store;
42
134
  constructor(store) {
@@ -51,16 +143,13 @@ export class RoundCoordinator {
51
143
  * - Managing heartbeat / signal handlers (runtime only)
52
144
  * - Memory injection (both paths, before calling processRound)
53
145
  * - Transactional feedback commit (accepted rounds only)
54
- * - State file I/O (both paths, after compiling)
55
- *
56
- * @param driftClarificationStreak v2.12: Current clarification streak
57
- * from session state. Passed through to enforceRound for R7 escalation. */
58
- processRound(input, driftClarificationStreak = 0) {
146
+ * - State file I/O (both paths, after compiling) */
147
+ processRound(input) {
59
148
  const { loopId, task, currentRound, maxRounds, selfEval, lastSelfEval, consecutiveRejections, evidenceSnapshots, } = input;
60
149
  const roundSuccess = selfEval.success ?? false;
61
150
  // ── 1. Query vault entries ──────────────────────────────────────────
62
151
  // Lineage entries (constraint violations, output summaries) and feedback
63
- // entries (execution_evidence, progress estimates) are both needed by
152
+ // entries (execution_report, progress estimates) are both needed by
64
153
  // the enforcement gate. queryLoopEntries excludes feedback by default,
65
154
  // so we issue a second query and merge both result sets.
66
155
  const prefix = `loop:${loopId}:r`;
@@ -71,9 +160,28 @@ export class RoundCoordinator {
71
160
  ]
72
161
  : [];
73
162
  // ── 2. Verification gate ────────────────────────────────────────────
74
- const verifyResult = verifySelfEvaluation(selfEval, currentRound, vaultEntries, lastSelfEval ?? null, evidenceSnapshots ?? [], input.backtrackSkippedFiles ?? [], input.backtrackTargetGitHead);
163
+ const verifyResult = verifySelfEvaluation(selfEval, currentRound, vaultEntries, lastSelfEval ?? null, evidenceSnapshots ?? [], input.backtrackSkippedFiles ?? [], input.backtrackSkippedFingerprints ?? {}, input.backtrackTargetGitHead,
164
+ // v3.7.1: gate records live under the gate: prefix — outside the round
165
+ // entries above — and are passed separately to the gate check.
166
+ this.store
167
+ ? queryLoopEntries(this.store, loopId, { prefix: `loop:${loopId}:gate:` })
168
+ : []);
75
169
  const verificationFlags = verifyResult.flags;
76
170
  const gateContradicted = verifyResult.verdict === "contradicted";
171
+ // v3.8: the ACTIVE contract's derived item statuses for this round — the
172
+ // same reducer the gate, compile path, audit and explain consume. Drives
173
+ // the stop mapping (completed vs incomplete) and the success trajectory.
174
+ const committedRounds = derivationRounds(vaultEntries, currentRound);
175
+ // v3.8: the shared executed-contract derivation — the same one explain and
176
+ // audit call, so the live posture and the read-only views cannot diverge.
177
+ const { statuses: activeContractStatuses } = deriveRoundContractView({
178
+ rounds: committedRounds,
179
+ round: currentRound,
180
+ report: selfEval.execution_report ?? null,
181
+ observations: evidenceSnapshots ?? [],
182
+ outcome: effectiveOutcome(selfEval),
183
+ commands: getPolicy().evidence.commands ?? [],
184
+ });
77
185
  if (gateContradicted) {
78
186
  logEvent("gate_contradicted", {
79
187
  loopId,
@@ -87,7 +195,7 @@ export class RoundCoordinator {
87
195
  // transaction reaches enforcement with a fully extracted self-evaluation.
88
196
  // The old v2.5 "heuristic partial enforcement" plumbing (extractionSucceeded
89
197
  // flag, enforcement skipEvidenceRules mode) was removed as unreachable.
90
- const enforceResult = enforceRound(selfEval, verifyResult, currentRound, vaultEntries, consecutiveRejections, driftClarificationStreak);
198
+ const enforceResult = enforceRound(selfEval, verifyResult, currentRound, vaultEntries, consecutiveRejections, input.lastRejectionCheck ?? "");
91
199
  if (enforceResult.action === "reject") {
92
200
  const newRejections = consecutiveRejections + 1;
93
201
  const rejectionPrompt = buildRejectionPrompt(currentRound, task, enforceResult, verificationFlags);
@@ -100,21 +208,12 @@ export class RoundCoordinator {
100
208
  });
101
209
  return {
102
210
  action: "reject",
211
+ verificationStatus: roundVerificationStatus(activeContractStatuses, selfEval.execution_report ?? null),
103
212
  rejectionPrompt,
104
213
  verificationFlags,
105
214
  enforcementAction: "reject",
106
215
  enforcementReason: enforceResult.reason,
107
216
  rejectionCheck: enforceResult.check,
108
- // v3.3.1: an R7-participated reject (weak or missing
109
- // drift_clarification) echoes clarificationAccepted: false so the
110
- // caller's streak tracking increments — without this the
111
- // drift_clarification_max_streak terminate ladder was unreachable
112
- // (the increment branch required the field, and only the continue
113
- // path ever set it). Higher-priority rules' rejects keep it
114
- // undefined, preserving the v3.2.1 "R7-only streak" semantics.
115
- ...(enforceResult.check === "intent_drift"
116
- ? { clarificationAccepted: false }
117
- : {}),
118
217
  roundSuccess,
119
218
  gateContradicted,
120
219
  newConsecutiveRejections: newRejections,
@@ -124,24 +223,23 @@ export class RoundCoordinator {
124
223
  };
125
224
  }
126
225
  if (enforceResult.action === "terminate") {
226
+ // v3.8: a row may name the stop reason it terminates with (the
227
+ // verification-debt row reports `incomplete` — the agent stopped short
228
+ // of machine verification, which is not the same as a contradiction).
229
+ const terminateReason = enforceResult.stopReason ?? "enforcement_terminated";
127
230
  logEvent("session_end", {
128
231
  loopId,
129
- stopReason: "enforcement_terminated",
232
+ stopReason: terminateReason,
130
233
  round: currentRound,
131
234
  });
132
235
  return {
133
236
  action: "terminate",
134
- stopReason: "enforcement_terminated",
237
+ verificationStatus: roundVerificationStatus(activeContractStatuses, selfEval.execution_report ?? null),
238
+ stopReason: terminateReason,
135
239
  verificationFlags,
136
240
  enforcementAction: "terminate",
137
241
  enforcementReason: enforceResult.reason,
138
242
  rejectionCheck: enforceResult.check,
139
- // v3.3.1: same echo as the reject branch — R7-participated
140
- // terminates keep the streak contract consistent for the
141
- // snapshot/audit record (harmless: the session is ending).
142
- ...(enforceResult.check === "intent_drift"
143
- ? { clarificationAccepted: false }
144
- : {}),
145
243
  roundSuccess,
146
244
  gateContradicted,
147
245
  newConsecutiveRejections: 0,
@@ -162,6 +260,7 @@ export class RoundCoordinator {
162
260
  });
163
261
  return {
164
262
  action: "terminate",
263
+ verificationStatus: roundVerificationStatus(activeContractStatuses, selfEval.execution_report ?? null),
165
264
  stopReason: "enforcement_terminated",
166
265
  verificationFlags,
167
266
  enforcementAction: "terminate",
@@ -174,30 +273,22 @@ export class RoundCoordinator {
174
273
  shouldPushSuccessTrajectory: false,
175
274
  };
176
275
  }
177
- // v2.13: Collect files changed in skipped rounds for the restore prompt
178
- const skippedFiles = [];
179
- for (let r = restorePoint.round + 1; r < currentRound; r++) {
180
- // v3.2.1: match the feedback entry (execution_evidence lives there) —
181
- // the compile-time lineage entry for the same round precedes it in
182
- // the flat view and carries no evidence.
183
- const entry = vaultEntries.find((e) => entryRound(e) === r && e.task_type !== "loop_lineage");
184
- if (entry?.execution_evidence) {
185
- const ev = entry.execution_evidence;
186
- const files = Array.isArray(ev.files_changed)
187
- ? ev.files_changed.filter((f) => typeof f === "string")
188
- : [];
189
- for (const f of files) {
190
- if (!skippedFiles.includes(f))
191
- skippedFiles.push(f);
192
- }
193
- }
194
- }
276
+ // v2.13/v3.8.1: the rolled-back branch's facts — one named derivation,
277
+ // so the walk is testable without driving a whole rollback, and the
278
+ // prompt, the state file and the committed decision all describe one
279
+ // event.
280
+ const { skippedFiles, skippedFingerprints, failedRounds, approaches, wrongAssumptions, } = deriveBacktrackRecoveryFacts({
281
+ currentRound,
282
+ restoreRound: restorePoint.round,
283
+ vaultEntries,
284
+ selfEval,
285
+ });
195
286
  // v2.12: Capture the restore point's git HEAD so the next round's
196
287
  // verification can confirm the workspace returned to this commit.
197
288
  const targetGitHead = findBacktrackTargetGitHead(restorePoint.round, vaultEntries);
198
289
  const backtrackPrompt = buildBacktrackPrompt(currentRound, restorePoint.round, enforceResult.check ?? "progress_stall", getPolicy().engine.backtrack_preserve_discoveries
199
290
  ? restorePoint.skippedDiscoveries
200
- : [], skippedFiles, targetGitHead ?? undefined);
291
+ : [], skippedFiles, targetGitHead ?? undefined, makeRoundId(loopId, restorePoint.round + 1), { failedRounds, approaches, wrongAssumptions });
201
292
  logEvent("enforcement_backtrack", {
202
293
  loopId,
203
294
  round: currentRound,
@@ -208,14 +299,19 @@ export class RoundCoordinator {
208
299
  });
209
300
  return {
210
301
  action: "backtrack",
302
+ verificationStatus: roundVerificationStatus(activeContractStatuses, selfEval.execution_report ?? null),
211
303
  backtrackPrompt,
212
304
  backtrackTarget: restorePoint.round,
213
305
  backtrackSkippedDiscoveries: getPolicy().engine.backtrack_preserve_discoveries
214
306
  ? restorePoint.skippedDiscoveries
215
307
  : [],
216
308
  backtrackSkippedFiles: skippedFiles,
309
+ backtrackSkippedFingerprints: skippedFingerprints,
217
310
  backtrackTargetGitHead: targetGitHead ?? undefined,
218
311
  backtrackTriggerRule: enforceResult.check,
312
+ backtrackFailedRounds: failedRounds,
313
+ backtrackApproaches: approaches,
314
+ backtrackWrongAssumptions: wrongAssumptions,
219
315
  verificationFlags,
220
316
  enforcementAction: "backtrack",
221
317
  enforcementReason: enforceResult.reason,
@@ -233,26 +329,52 @@ export class RoundCoordinator {
233
329
  // ── 5. Stop condition checks ────────────────────────────────────────
234
330
  // 5b. Agent says stop
235
331
  if (!selfEval.should_continue) {
332
+ // v3.8: `completed` is a machine claim. It requires the active contract
333
+ // to be closed — every item `verified` — or no contract at all. A stop
334
+ // with claimed-but-unverified items is `incomplete`, never `completed`.
335
+ // An empty contract id means no contract is active (the reducer's
336
+ // sentinel view) — a contract-less loop completes on the success claim
337
+ // alone, exactly as before v3.8.
338
+ //
339
+ // A `blocked` closure deliberately does NOT satisfy `contractClosed`: a
340
+ // contract closed by its own blocked outcome is not a verified one, and
341
+ // the declaration arm below already owns that posture.
342
+ const contractClosed = activeContractStatuses.contractId === "" ||
343
+ activeContractStatuses.closure === "verified";
344
+ // The agent's explicit declaration of a blocked stop outranks the
345
+ // success claim. It is checked FIRST so `success: true` + a declared
346
+ // `outcome`/`stop_reason` of blocked can never be reported as
347
+ // `completed` — the two fields contradict, and the honest reading is the
348
+ // declared one. A contradicted item also never reaches `completed`
349
+ // (closure is `verified` only when EVERY item is), so the
350
+ // contradicted-and-stopping posture lands on `incomplete` at worst; the
351
+ // reject/terminate path for it is the enforcement gate's, evaluated
352
+ // before this point.
353
+ const declaredBlocked = selfEval.outcome === "blocked" ||
354
+ selfEval.stop_reason === "blocked" || selfEval.stop_reason === "needs_human_input";
236
355
  let reason;
237
- if (effectiveSuccess(selfEval)) {
356
+ if (declaredBlocked) {
357
+ reason = "blocked";
358
+ }
359
+ else if (effectiveSuccess(selfEval) && contractClosed) {
238
360
  reason = "completed";
239
361
  }
240
- else if (selfEval.outcome === "blocked" ||
241
- selfEval.stop_reason === "blocked" || selfEval.stop_reason === "needs_human_input") {
242
- reason = "blocked";
362
+ else if (effectiveSuccess(selfEval)) {
363
+ reason = "incomplete";
243
364
  }
244
365
  else {
245
366
  reason = "failed";
246
367
  }
247
368
  return {
248
369
  action: "stop",
370
+ verificationStatus: roundVerificationStatus(activeContractStatuses, selfEval.execution_report ?? null),
249
371
  stopReason: reason,
250
372
  verificationFlags,
251
373
  roundSuccess,
252
374
  gateContradicted,
253
375
  newConsecutiveRejections: 0,
254
376
  newLastSelfEval: selfEval,
255
- shouldPushSuccessTrajectory: shouldPushSuccess(gateContradicted, verificationFlags),
377
+ shouldPushSuccessTrajectory: shouldPushSuccess(gateContradicted, verificationFlags, activeContractStatuses),
256
378
  };
257
379
  }
258
380
  // 5c. Max rounds reached
@@ -262,27 +384,27 @@ export class RoundCoordinator {
262
384
  if (currentRound >= maxRounds) {
263
385
  return {
264
386
  action: "stop",
387
+ verificationStatus: roundVerificationStatus(activeContractStatuses, selfEval.execution_report ?? null),
265
388
  stopReason: "max_rounds",
266
389
  verificationFlags,
267
390
  roundSuccess,
268
391
  gateContradicted,
269
392
  newConsecutiveRejections: 0,
270
393
  newLastSelfEval: selfEval,
271
- shouldPushSuccessTrajectory: shouldPushSuccess(gateContradicted, verificationFlags),
394
+ shouldPushSuccessTrajectory: shouldPushSuccess(gateContradicted, verificationFlags, activeContractStatuses),
272
395
  };
273
396
  }
274
397
  // ── 6. Continue — caller compiles next round ────────────────────────
275
398
  return {
276
399
  action: "continue",
400
+ verificationStatus: roundVerificationStatus(activeContractStatuses, selfEval.execution_report ?? null),
277
401
  verificationFlags,
278
402
  enforcementAction: "accept",
279
403
  roundSuccess,
280
404
  gateContradicted,
281
405
  newConsecutiveRejections: 0,
282
406
  newLastSelfEval: selfEval,
283
- shouldPushSuccessTrajectory: shouldPushSuccess(gateContradicted, verificationFlags),
284
- // v2.12: Propagate clarification acceptance signal for streak tracking
285
- clarificationAccepted: enforceResult.clarification_accepted ?? false,
407
+ shouldPushSuccessTrajectory: shouldPushSuccess(gateContradicted, verificationFlags, activeContractStatuses),
286
408
  };
287
409
  }
288
410
  }
@@ -1 +1 @@
1
- {"version":3,"file":"round-coordinator.js","sourceRoot":"","sources":["../src/round-coordinator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"round-coordinator.js","sourceRoot":"","sources":["../src/round-coordinator.ts"],"names":[],"mappings":"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"}
@@ -7,14 +7,14 @@
7
7
  */
8
8
  import type { LoopStore } from "./loop-store.js";
9
9
  import { LoopForgeEngine } from "./engine.js";
10
- import type { ProviderSnapshot } from "./evidence-provider.js";
10
+ import type { MachineObservation } from "./protocol.js";
11
11
  import type { LoopForgeRequest, LoopForgeResponse, PromptArtifact, SelfEvaluation } from "./protocol.js";
12
12
  import type { RoundTransactionOutcome, RoundTransactionSnapshot } from "./round-transaction.js";
13
13
  export interface PreparedRound {
14
14
  prompt: string;
15
15
  artifact?: PromptArtifact;
16
16
  level: "l0" | "l1" | "l2";
17
- evidenceBaseline: ProviderSnapshot[];
17
+ evidenceBaseline: MachineObservation[];
18
18
  snapshot: RoundTransactionSnapshot;
19
19
  stateFileContent?: string;
20
20
  warnings?: string[];
@@ -30,17 +30,19 @@ export interface CompleteRoundInput {
30
30
  selfEval: SelfEvaluation;
31
31
  lastSelfEval?: SelfEvaluation;
32
32
  consecutiveRejections: number;
33
+ /** L4 (v3.7.x): previous round's rejection check (own-streak basis). */
34
+ lastRejectionCheck?: string;
33
35
  successTrajectory: boolean[];
34
- /** v2.12: Current clarification streak for R7 escalation. */
35
- driftClarificationStreak?: number;
36
36
  /** v2.13: Files from skipped backtrack rounds for restore check. */
37
37
  backtrackSkippedFiles?: string[];
38
+ /** M3 (v3.7.x): skipped-file git fingerprints at their failed rounds. */
39
+ backtrackSkippedFingerprints?: Record<string, string>;
38
40
  /** v2.12: Git HEAD of the backtrack restore point (workspace restore check). */
39
41
  backtrackTargetGitHead?: string;
40
42
  }
41
43
  export interface CompletedRound {
42
44
  outcome: RoundTransactionOutcome;
43
- actualEvidence: ProviderSnapshot[];
45
+ actualEvidence: MachineObservation[];
44
46
  }
45
47
  export declare class RoundDriver {
46
48
  private readonly engine;
@@ -1 +1 @@
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,aAAa,CAAC;AAE9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,OAAO,KAAK,EACV,gBAAgB,EAChB,iBAAiB,EACjB,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;IACpB;sEACkE;IAClE,eAAe,CAAC,EAAE,iBAAiB,CAAC;CACrC;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,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;IACjC,gFAAgF;IAChF,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;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,KAAK,CAAY;gBAEL,MAAM,EAAE,eAAe,EAAE,KAAK,CAAC,EAAE,SAAS;IAIjE,OAAO,CACX,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAYhC,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;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,aAAa,CAAC;AAE9C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD,OAAO,KAAK,EACV,gBAAgB,EAChB,iBAAiB,EACjB,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,kBAAkB,EAAE,CAAC;IACvC,QAAQ,EAAE,wBAAwB,CAAC;IACnC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB;sEACkE;IAClE,eAAe,CAAC,EAAE,iBAAiB,CAAC;CACrC;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,YAAY,CAAC,EAAE,cAAc,CAAC;IAC9B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,wEAAwE;IACxE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,OAAO,EAAE,CAAC;IAC7B,oEAAoE;IACpE,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;IACjC,yEAAyE;IACzE,4BAA4B,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtD,gFAAgF;IAChF,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,uBAAuB,CAAC;IACjC,cAAc,EAAE,kBAAkB,EAAE,CAAC;CACtC;AAED,qBAAa,WAAW;IAGV,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAY;gBAEL,MAAM,EAAE,eAAe,EAAE,KAAK,CAAC,EAAE,SAAS;IAIjE,OAAO,CACX,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAYhC,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;IAuBlE,OAAO,CAAC,QAAQ,EAAE,wBAAwB,GAAG,uBAAuB,GAAG,IAAI;IAO3E,OAAO,CAAC,eAAe;CAMxB"}
@@ -85,10 +85,11 @@ export class RoundDriver {
85
85
  selfEval: input.selfEval,
86
86
  lastSelfEval: input.lastSelfEval,
87
87
  consecutiveRejections: input.consecutiveRejections,
88
+ lastRejectionCheck: input.lastRejectionCheck,
88
89
  successTrajectory: input.successTrajectory,
89
90
  actualEvidence,
90
- driftClarificationStreak: input.driftClarificationStreak,
91
91
  backtrackSkippedFiles: input.backtrackSkippedFiles,
92
+ backtrackSkippedFingerprints: input.backtrackSkippedFingerprints,
92
93
  backtrackTargetGitHead: input.backtrackTargetGitHead,
93
94
  });
94
95
  return { outcome, actualEvidence };
@@ -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,96 @@
1
+ /** v3.8.1: THE contract-fact derivation.
2
+ *
3
+ * The contract walker, the item reducer, the verified sub-goal facts and the
4
+ * verification debt are one pass over one history window. Before this module
5
+ * the compile path and the projection each ran the same reducers over their
6
+ * own window, so the prompt and the projection could tell different stories
7
+ * about what the machine had verified — and nothing stopped a third caller
8
+ * from picking a third window.
9
+ *
10
+ * Every caller passes `derivationRounds(entries, currentRound)` (the shared
11
+ * window from committed-round.ts) and receives the same bundle, so "one fact,
12
+ * one derivation" is a property of the types rather than a convention.
13
+ */
14
+ import type { CommittedRoundView } from "./committed-round.js";
15
+ import type { ContractItemStatusView } from "./contract-items.js";
16
+ import type { CommandEvidencePolicy } from "./policy.js";
17
+ import type { ContractItemStatus, ExecutionReport, MachineObservation, SubGoal, VerifiedSubGoalFact } from "./protocol.js";
18
+ import type { ActiveContractView } from "./round-contract.js";
19
+ export interface RoundFacts {
20
+ /** The contract the NEXT round executes under — derived from committed
21
+ * rounds only, so a retry / resume / backtrack compile keeps showing it. */
22
+ activeContract: ActiveContractView | null;
23
+ /** Per-item status of `activeContract`. */
24
+ itemStatuses: ContractItemStatusView;
25
+ /** v3.8: machine-verified sub-goals. Never writes `SubGoal.status`. */
26
+ verifiedSubGoals: VerifiedSubGoalFact[];
27
+ /** `done` sub-goals no verified item backs, plus `insufficient` items. */
28
+ verificationDebt: string[];
29
+ /** v3.8.1: the machine fact about each criterion a contract item referenced,
30
+ * over the WHOLE committed history — the criterion-side twin of
31
+ * `verifiedSubGoals`, and read by the same callers. */
32
+ criterionFacts: CriterionMachineFact[];
33
+ }
34
+ /** v3.8.1: ONE criterion's machine fact. `status` is absent while every item
35
+ * referencing the criterion is still `pending` — "no claim yet" says nothing
36
+ * about the criterion, so the criterion keeps its claim-derived status. The
37
+ * links are explicit `subgoal_refs` only, and they survive their item's
38
+ * contract closing just like the status does. */
39
+ export interface CriterionMachineFact {
40
+ criterion_id: string;
41
+ status?: Exclude<ContractItemStatus, "pending">;
42
+ related_subgoal_ids: string[];
43
+ }
44
+ /** The in-flight slice of a round that is being decided but is not yet
45
+ * committed. A pure committed-history replay passes null / [] — the reducer
46
+ * then sees committed facts only, which is exactly what the compile path
47
+ * wants. */
48
+ export interface InFlightRoundSlice {
49
+ currentReport: ExecutionReport | null;
50
+ currentObservations: ReadonlyArray<MachineObservation>;
51
+ /** The in-flight round's own effective outcome. A `blocked` round CLOSES its
52
+ * contract, so closure cannot be derived from committed slices alone. */
53
+ currentOutcome?: string | null;
54
+ }
55
+ export declare const NO_IN_FLIGHT_ROUND: InFlightRoundSlice;
56
+ export declare function deriveRoundFacts(input: {
57
+ /** `derivationRounds(entries, currentRound)` — the shared window. */
58
+ rounds: ReadonlyArray<CommittedRoundView>;
59
+ currentRound: number;
60
+ inFlight: InFlightRoundSlice;
61
+ subGoals: ReadonlyArray<SubGoal>;
62
+ commands: ReadonlyArray<CommandEvidencePolicy>;
63
+ }): RoundFacts;
64
+ /** v3.8: Machine-verified sub-goal facts. DERIVED, never persisted. It never
65
+ * writes `SubGoal.status`: `done` stays the agent's declaration, and the fact
66
+ * is the machine's separate statement about it.
67
+ *
68
+ * Derived from the WHOLE committed history, not from the currently-open
69
+ * contract. A verified item is machine history — once proven, it stays
70
+ * proven — while the active contract necessarily disappears the moment its
71
+ * last item verifies. Deriving from the active contract alone made the fact
72
+ * vanish at exactly the moment it became fully true, and turned the
73
+ * verification-debt view into a false accusation ("agent reported done,
74
+ * machine verification absent") against a sub-goal the machine had just
75
+ * verified. Each round is read through `deriveRoundContractView`, the same
76
+ * derivation the coordinator, explain and audit use — one history
77
+ * interpretation, no second read model. That re-derivation is quadratic in the
78
+ * round count (≈40ms at 120 rounds) and is deliberately bought: an incremental
79
+ * walker would be a second implementation of the closure rule, which is the
80
+ * one thing this module must never grow.
81
+ *
82
+ * Attribution is per ITEM (`ContractItemProposal.subgoal_refs`), not per
83
+ * contract: an item backs exactly the sub-goals it references, so a contract
84
+ * whose item A verifies SubGoal 1 and whose item B verifies SubGoal 2 yields
85
+ * two facts with disjoint `contract_item_ids` instead of both sub-goals
86
+ * claiming every verified item. */
87
+ export declare function deriveVerifiedSubGoals(input: {
88
+ subGoals: ReadonlyArray<SubGoal>;
89
+ /** Committed rounds (rollback-excluded), ascending. */
90
+ rounds: ReadonlyArray<CommittedRoundView>;
91
+ commands: ReadonlyArray<CommandEvidencePolicy>;
92
+ }): VerifiedSubGoalFact[];
93
+ /** v3.8: Sub-goals the agent declared `done` that no verified contract item
94
+ * backs — verification debt, surfaced in the handoff's open risks. */
95
+ export declare function deriveVerificationDebt(subGoals: ReadonlyArray<SubGoal>, verified: ReadonlyArray<VerifiedSubGoalFact>, statuses: ContractItemStatusView): string[];
96
+ //# sourceMappingURL=round-facts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"round-facts.d.ts","sourceRoot":"","sources":["../src/round-facts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAElE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,KAAK,EACV,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,OAAO,EACP,mBAAmB,EACpB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAI9D,MAAM,WAAW,UAAU;IACzB;iFAC6E;IAC7E,cAAc,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAC1C,2CAA2C;IAC3C,YAAY,EAAE,sBAAsB,CAAC;IACrC,uEAAuE;IACvE,gBAAgB,EAAE,mBAAmB,EAAE,CAAC;IACxC,0EAA0E;IAC1E,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B;;4DAEwD;IACxD,cAAc,EAAE,oBAAoB,EAAE,CAAC;CACxC;AAED;;;;kDAIkD;AAClD,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;IAChD,mBAAmB,EAAE,MAAM,EAAE,CAAC;CAC/B;AAED;;;aAGa;AACb,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,eAAe,GAAG,IAAI,CAAC;IACtC,mBAAmB,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;IACvD;8EAC0E;IAC1E,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,eAAO,MAAM,kBAAkB,EAAE,kBAIhC,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IACtC,qEAAqE;IACrE,MAAM,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;IAC1C,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IACjC,QAAQ,EAAE,aAAa,CAAC,qBAAqB,CAAC,CAAC;CAChD,GAAG,UAAU,CA+Bb;AA6FD;;;;;;;;;;;;;;;;;;;;;;oCAsBoC;AACpC,wBAAgB,sBAAsB,CAAC,KAAK,EAAE;IAC5C,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IACjC,uDAAuD;IACvD,MAAM,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;IAC1C,QAAQ,EAAE,aAAa,CAAC,qBAAqB,CAAC,CAAC;CAChD,GAAG,mBAAmB,EAAE,CAwCxB;AAED;uEACuE;AACvE,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,EAChC,QAAQ,EAAE,aAAa,CAAC,mBAAmB,CAAC,EAC5C,QAAQ,EAAE,sBAAsB,GAC/B,MAAM,EAAE,CAkBV"}