loopforge 3.7.1 → 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 (144) hide show
  1. package/README.md +171 -169
  2. package/dist/audit.d.ts +53 -1
  3. package/dist/audit.d.ts.map +1 -1
  4. package/dist/audit.js +106 -22
  5. package/dist/audit.js.map +1 -1
  6. package/dist/canonical-state.d.ts +52 -67
  7. package/dist/canonical-state.d.ts.map +1 -1
  8. package/dist/canonical-state.js +134 -147
  9. package/dist/canonical-state.js.map +1 -1
  10. package/dist/cli.d.ts.map +1 -1
  11. package/dist/cli.js +103 -4
  12. package/dist/cli.js.map +1 -1
  13. package/dist/cognitive-facts.d.ts +13 -0
  14. package/dist/cognitive-facts.d.ts.map +1 -1
  15. package/dist/cognitive-facts.js +28 -13
  16. package/dist/cognitive-facts.js.map +1 -1
  17. package/dist/committed-round.d.ts +103 -21
  18. package/dist/committed-round.d.ts.map +1 -1
  19. package/dist/committed-round.js +188 -45
  20. package/dist/committed-round.js.map +1 -1
  21. package/dist/contract-items.d.ts +55 -0
  22. package/dist/contract-items.d.ts.map +1 -0
  23. package/dist/contract-items.js +180 -0
  24. package/dist/contract-items.js.map +1 -0
  25. package/dist/enforcement-gate.d.ts +20 -2
  26. package/dist/enforcement-gate.d.ts.map +1 -1
  27. package/dist/enforcement-gate.js +197 -386
  28. package/dist/enforcement-gate.js.map +1 -1
  29. package/dist/engine.d.ts +1 -1
  30. package/dist/engine.d.ts.map +1 -1
  31. package/dist/engine.js +53 -38
  32. package/dist/engine.js.map +1 -1
  33. package/dist/evidence-claims.d.ts +4 -4
  34. package/dist/evidence-claims.d.ts.map +1 -1
  35. package/dist/evidence-claims.js +16 -14
  36. package/dist/evidence-claims.js.map +1 -1
  37. package/dist/evidence-provider.d.ts +85 -89
  38. package/dist/evidence-provider.d.ts.map +1 -1
  39. package/dist/evidence-provider.js +328 -184
  40. package/dist/evidence-provider.js.map +1 -1
  41. package/dist/explain.d.ts +76 -0
  42. package/dist/explain.d.ts.map +1 -0
  43. package/dist/explain.js +127 -0
  44. package/dist/explain.js.map +1 -0
  45. package/dist/generate-schema.js +152 -16
  46. package/dist/generate-schema.js.map +1 -1
  47. package/dist/index.d.ts +6 -6
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +5 -5
  50. package/dist/index.js.map +1 -1
  51. package/dist/loop-compiler.d.ts +40 -53
  52. package/dist/loop-compiler.d.ts.map +1 -1
  53. package/dist/loop-compiler.js +229 -553
  54. package/dist/loop-compiler.js.map +1 -1
  55. package/dist/loop-extras-parser.d.ts +0 -1
  56. package/dist/loop-extras-parser.d.ts.map +1 -1
  57. package/dist/loop-extras-parser.js +0 -4
  58. package/dist/loop-extras-parser.js.map +1 -1
  59. package/dist/loop-projection.d.ts.map +1 -1
  60. package/dist/loop-projection.js +3 -1
  61. package/dist/loop-projection.js.map +1 -1
  62. package/dist/mcp/round-lifecycle.d.ts +30 -21
  63. package/dist/mcp/round-lifecycle.d.ts.map +1 -1
  64. package/dist/mcp/round-lifecycle.js +47 -103
  65. package/dist/mcp/round-lifecycle.js.map +1 -1
  66. package/dist/mcp/server.d.ts.map +1 -1
  67. package/dist/mcp/server.js +51 -7
  68. package/dist/mcp/server.js.map +1 -1
  69. package/dist/mcp/session.d.ts +39 -23
  70. package/dist/mcp/session.d.ts.map +1 -1
  71. package/dist/mcp/session.js +148 -163
  72. package/dist/mcp/session.js.map +1 -1
  73. package/dist/mcp/submission-boundary.d.ts +89 -0
  74. package/dist/mcp/submission-boundary.d.ts.map +1 -0
  75. package/dist/mcp/submission-boundary.js +203 -0
  76. package/dist/mcp/submission-boundary.js.map +1 -0
  77. package/dist/mcp/tools.d.ts.map +1 -1
  78. package/dist/mcp/tools.js +249 -128
  79. package/dist/mcp/tools.js.map +1 -1
  80. package/dist/policy-metrics.js +2 -2
  81. package/dist/policy-metrics.js.map +1 -1
  82. package/dist/policy.d.ts +55 -93
  83. package/dist/policy.d.ts.map +1 -1
  84. package/dist/policy.js +149 -38
  85. package/dist/policy.js.map +1 -1
  86. package/dist/prompt-assembler.d.ts +1 -32
  87. package/dist/prompt-assembler.d.ts.map +1 -1
  88. package/dist/prompt-assembler.js +282 -435
  89. package/dist/prompt-assembler.js.map +1 -1
  90. package/dist/prompt-policy.d.ts +1 -4
  91. package/dist/prompt-policy.d.ts.map +1 -1
  92. package/dist/prompt-policy.js +6 -7
  93. package/dist/prompt-policy.js.map +1 -1
  94. package/dist/protocol.d.ts +365 -142
  95. package/dist/protocol.d.ts.map +1 -1
  96. package/dist/protocol.js +21 -66
  97. package/dist/protocol.js.map +1 -1
  98. package/dist/replay.js +2 -2
  99. package/dist/replay.js.map +1 -1
  100. package/dist/round-contract.d.ts +69 -57
  101. package/dist/round-contract.d.ts.map +1 -1
  102. package/dist/round-contract.js +104 -64
  103. package/dist/round-contract.js.map +1 -1
  104. package/dist/round-coordinator.d.ts +36 -16
  105. package/dist/round-coordinator.d.ts.map +1 -1
  106. package/dist/round-coordinator.js +166 -102
  107. package/dist/round-coordinator.js.map +1 -1
  108. package/dist/round-driver.d.ts +3 -5
  109. package/dist/round-driver.d.ts.map +1 -1
  110. package/dist/round-driver.js +0 -1
  111. package/dist/round-driver.js.map +1 -1
  112. package/dist/round-facts.d.ts +96 -0
  113. package/dist/round-facts.d.ts.map +1 -0
  114. package/dist/round-facts.js +216 -0
  115. package/dist/round-facts.js.map +1 -0
  116. package/dist/round-transaction.d.ts +19 -9
  117. package/dist/round-transaction.d.ts.map +1 -1
  118. package/dist/round-transaction.js +90 -22
  119. package/dist/round-transaction.js.map +1 -1
  120. package/dist/self-eval.d.ts +87 -9
  121. package/dist/self-eval.d.ts.map +1 -1
  122. package/dist/self-eval.js +396 -27
  123. package/dist/self-eval.js.map +1 -1
  124. package/dist/subgoal-state.d.ts +77 -0
  125. package/dist/subgoal-state.d.ts.map +1 -0
  126. package/dist/subgoal-state.js +198 -0
  127. package/dist/subgoal-state.js.map +1 -0
  128. package/dist/token-utils.d.ts +52 -19
  129. package/dist/token-utils.d.ts.map +1 -1
  130. package/dist/token-utils.js +83 -72
  131. package/dist/token-utils.js.map +1 -1
  132. package/dist/verification-gate.d.ts +14 -31
  133. package/dist/verification-gate.d.ts.map +1 -1
  134. package/dist/verification-gate.js +178 -496
  135. package/dist/verification-gate.js.map +1 -1
  136. package/dist/version.d.ts +1 -1
  137. package/dist/version.js +1 -1
  138. package/dist/workspace.d.ts +9 -0
  139. package/dist/workspace.d.ts.map +1 -1
  140. package/dist/workspace.js +17 -0
  141. package/dist/workspace.js.map +1 -1
  142. package/loop_policy.json +6 -30
  143. package/package.json +1 -1
  144. package/skills/perception/SKILL.md +243 -79
@@ -20,25 +20,115 @@
20
20
  import { queryLoopEntries } from "./loop-store.js";
21
21
  import { CHECK_SUCCESS_WITHOUT_VERIFIED_EVIDENCE, verifySelfEvaluation } from "./verification-gate.js";
22
22
  import { entryRound, isRecord } from "./token-utils.js";
23
- import { effectiveSuccess } from "./self-eval.js";
24
- import { decodeCommittedRound } from "./committed-round.js";
23
+ import { effectiveOutcome, effectiveSuccess } from "./self-eval.js";
24
+ import { derivationRounds, decodeCommittedRound } from "./committed-round.js";
25
25
  import { makeRoundId } from "./round-transaction.js";
26
26
  import { enforceRound, buildRejectionPrompt, findSafeRestorePoint, buildBacktrackPrompt, findBacktrackTargetGitHead, } from "./enforcement-gate.js";
27
27
  import { logEvent } from "./observability.js";
28
28
  import { getPolicy } from "./policy.js";
29
+ import { deriveRoundContractView } from "./round-contract.js";
30
+ import { roundVerificationStatus, } from "./contract-items.js";
29
31
  /** v3.2/v3.6: Whether a round's success enters the success trajectory.
30
32
  * Excluded when the gate contradicted the round, or when the success claim
31
33
  * carries no machine-verified observation — the merged R8 check fires a
32
34
  * warn under machine_backed_success "warn" (v3.6: success_unverified merged
33
35
  * into R8; its warn-level trajectory exclusion moved with it) — an
34
36
  * accepted-but-unverified round is not evidence of progress. */
35
- function shouldPushSuccess(gateContradicted, verificationFlags) {
37
+ function shouldPushSuccess(gateContradicted, verificationFlags, contractStatuses) {
36
38
  if (gateContradicted)
37
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;
38
45
  return !verificationFlags.some((flag) => flag.severity === "warn" &&
39
46
  flag.check === CHECK_SUCCESS_WITHOUT_VERIFIED_EVIDENCE);
40
47
  }
41
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
+ }
42
132
  export class RoundCoordinator {
43
133
  store;
44
134
  constructor(store) {
@@ -53,16 +143,13 @@ export class RoundCoordinator {
53
143
  * - Managing heartbeat / signal handlers (runtime only)
54
144
  * - Memory injection (both paths, before calling processRound)
55
145
  * - Transactional feedback commit (accepted rounds only)
56
- * - State file I/O (both paths, after compiling)
57
- *
58
- * @param driftClarificationStreak v2.12: Current clarification streak
59
- * from session state. Passed through to enforceRound for R7 escalation. */
60
- processRound(input, driftClarificationStreak = 0) {
146
+ * - State file I/O (both paths, after compiling) */
147
+ processRound(input) {
61
148
  const { loopId, task, currentRound, maxRounds, selfEval, lastSelfEval, consecutiveRejections, evidenceSnapshots, } = input;
62
149
  const roundSuccess = selfEval.success ?? false;
63
150
  // ── 1. Query vault entries ──────────────────────────────────────────
64
151
  // Lineage entries (constraint violations, output summaries) and feedback
65
- // entries (execution_evidence, progress estimates) are both needed by
152
+ // entries (execution_report, progress estimates) are both needed by
66
153
  // the enforcement gate. queryLoopEntries excludes feedback by default,
67
154
  // so we issue a second query and merge both result sets.
68
155
  const prefix = `loop:${loopId}:r`;
@@ -81,6 +168,20 @@ export class RoundCoordinator {
81
168
  : []);
82
169
  const verificationFlags = verifyResult.flags;
83
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
+ });
84
185
  if (gateContradicted) {
85
186
  logEvent("gate_contradicted", {
86
187
  loopId,
@@ -94,7 +195,7 @@ export class RoundCoordinator {
94
195
  // transaction reaches enforcement with a fully extracted self-evaluation.
95
196
  // The old v2.5 "heuristic partial enforcement" plumbing (extractionSucceeded
96
197
  // flag, enforcement skipEvidenceRules mode) was removed as unreachable.
97
- const enforceResult = enforceRound(selfEval, verifyResult, currentRound, vaultEntries, consecutiveRejections, driftClarificationStreak, input.lastRejectionCheck ?? "");
198
+ const enforceResult = enforceRound(selfEval, verifyResult, currentRound, vaultEntries, consecutiveRejections, input.lastRejectionCheck ?? "");
98
199
  if (enforceResult.action === "reject") {
99
200
  const newRejections = consecutiveRejections + 1;
100
201
  const rejectionPrompt = buildRejectionPrompt(currentRound, task, enforceResult, verificationFlags);
@@ -107,21 +208,12 @@ export class RoundCoordinator {
107
208
  });
108
209
  return {
109
210
  action: "reject",
211
+ verificationStatus: roundVerificationStatus(activeContractStatuses, selfEval.execution_report ?? null),
110
212
  rejectionPrompt,
111
213
  verificationFlags,
112
214
  enforcementAction: "reject",
113
215
  enforcementReason: enforceResult.reason,
114
216
  rejectionCheck: enforceResult.check,
115
- // v3.3.1: an R7-participated reject (weak or missing
116
- // drift_clarification) echoes clarificationAccepted: false so the
117
- // caller's streak tracking increments — without this the
118
- // drift_clarification_max_streak terminate ladder was unreachable
119
- // (the increment branch required the field, and only the continue
120
- // path ever set it). Higher-priority rules' rejects keep it
121
- // undefined, preserving the v3.2.1 "R7-only streak" semantics.
122
- ...(enforceResult.check === "intent_drift"
123
- ? { clarificationAccepted: false }
124
- : {}),
125
217
  roundSuccess,
126
218
  gateContradicted,
127
219
  newConsecutiveRejections: newRejections,
@@ -131,24 +223,23 @@ export class RoundCoordinator {
131
223
  };
132
224
  }
133
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";
134
230
  logEvent("session_end", {
135
231
  loopId,
136
- stopReason: "enforcement_terminated",
232
+ stopReason: terminateReason,
137
233
  round: currentRound,
138
234
  });
139
235
  return {
140
236
  action: "terminate",
141
- stopReason: "enforcement_terminated",
237
+ verificationStatus: roundVerificationStatus(activeContractStatuses, selfEval.execution_report ?? null),
238
+ stopReason: terminateReason,
142
239
  verificationFlags,
143
240
  enforcementAction: "terminate",
144
241
  enforcementReason: enforceResult.reason,
145
242
  rejectionCheck: enforceResult.check,
146
- // v3.3.1: same echo as the reject branch — R7-participated
147
- // terminates keep the streak contract consistent for the
148
- // snapshot/audit record (harmless: the session is ending).
149
- ...(enforceResult.check === "intent_drift"
150
- ? { clarificationAccepted: false }
151
- : {}),
152
243
  roundSuccess,
153
244
  gateContradicted,
154
245
  newConsecutiveRejections: 0,
@@ -169,6 +260,7 @@ export class RoundCoordinator {
169
260
  });
170
261
  return {
171
262
  action: "terminate",
263
+ verificationStatus: roundVerificationStatus(activeContractStatuses, selfEval.execution_report ?? null),
172
264
  stopReason: "enforcement_terminated",
173
265
  verificationFlags,
174
266
  enforcementAction: "terminate",
@@ -181,71 +273,16 @@ export class RoundCoordinator {
181
273
  shouldPushSuccessTrajectory: false,
182
274
  };
183
275
  }
184
- // v2.13: Collect files changed in skipped rounds for the restore prompt
185
- const skippedFiles = [];
186
- // M3 (v3.7.x): each skipped file's git fingerprint at its failed round.
187
- // Recorded from the round's own after-evidence (machine data, not the
188
- // agent's report); later rounds overwrite earlier ones so the map holds
189
- // the LAST failed state of every file.
190
- const skippedFingerprints = {};
191
- // v3.7.1: Recovery Brief facts — one approach and the falsified
192
- // assumptions per rolled-back round, from COMMITTED rounds above the
193
- // restore point (rejected attempts are not durable history and never
194
- // become a source; the in-flight attempt below is the only exception).
195
- const failedRounds = [];
196
- const approaches = [];
197
- const wrongAssumptions = [];
198
- for (let r = restorePoint.round + 1; r < currentRound; r++) {
199
- // v3.2.1: match the feedback entry (execution_evidence lives there) —
200
- // the compile-time lineage entry for the same round precedes it in
201
- // the flat view and carries no evidence.
202
- const entry = vaultEntries.find((e) => entryRound(e) === r && e.task_type !== "loop_lineage");
203
- const view = entry ? decodeCommittedRound(entry) : null;
204
- const evaluation = view?.evaluation ?? null;
205
- if (entry?.execution_evidence) {
206
- const ev = entry.execution_evidence;
207
- const files = Array.isArray(ev.files_changed)
208
- ? ev.files_changed.filter((f) => typeof f === "string")
209
- : [];
210
- const git = view?.afterEvidence.find((snapshot) => snapshot.provider === "git" &&
211
- isRecord(snapshot.data) && isRecord(snapshot.data.fingerprints));
212
- const gitFingerprints = git
213
- ? git.data.fingerprints
214
- : null;
215
- for (const f of files) {
216
- if (!skippedFiles.includes(f))
217
- skippedFiles.push(f);
218
- const fp = gitFingerprints?.[f];
219
- if (typeof fp === "string")
220
- skippedFingerprints[f] = fp;
221
- }
222
- }
223
- const summary = evaluation?.output_summary ?? "";
224
- if (summary.trim().length > 0) {
225
- failedRounds.push(r);
226
- approaches.push(summary.trim().slice(0, 200));
227
- }
228
- const assumptions = (evaluation?.wrong_assumptions ?? [])
229
- .filter((v) => typeof v === "string")
230
- .map((s) => s.slice(0, 500));
231
- for (const a of assumptions) {
232
- if (!wrongAssumptions.includes(a))
233
- wrongAssumptions.push(a);
234
- }
235
- }
236
- // The in-flight attempt that triggered this rollback — its evaluation
237
- // lives in this process, not in committed history.
238
- const triggerSummary = selfEval.output_summary?.trim() ?? "";
239
- if (triggerSummary.length > 0) {
240
- if (!failedRounds.includes(currentRound))
241
- failedRounds.push(currentRound);
242
- approaches.push(triggerSummary.slice(0, 200));
243
- for (const a of (selfEval.wrong_assumptions ?? [])
244
- .filter((v) => typeof v === "string")) {
245
- if (!wrongAssumptions.includes(a))
246
- wrongAssumptions.push(a.slice(0, 500));
247
- }
248
- }
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
+ });
249
286
  // v2.12: Capture the restore point's git HEAD so the next round's
250
287
  // verification can confirm the workspace returned to this commit.
251
288
  const targetGitHead = findBacktrackTargetGitHead(restorePoint.round, vaultEntries);
@@ -262,6 +299,7 @@ export class RoundCoordinator {
262
299
  });
263
300
  return {
264
301
  action: "backtrack",
302
+ verificationStatus: roundVerificationStatus(activeContractStatuses, selfEval.execution_report ?? null),
265
303
  backtrackPrompt,
266
304
  backtrackTarget: restorePoint.round,
267
305
  backtrackSkippedDiscoveries: getPolicy().engine.backtrack_preserve_discoveries
@@ -291,26 +329,52 @@ export class RoundCoordinator {
291
329
  // ── 5. Stop condition checks ────────────────────────────────────────
292
330
  // 5b. Agent says stop
293
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";
294
355
  let reason;
295
- if (effectiveSuccess(selfEval)) {
356
+ if (declaredBlocked) {
357
+ reason = "blocked";
358
+ }
359
+ else if (effectiveSuccess(selfEval) && contractClosed) {
296
360
  reason = "completed";
297
361
  }
298
- else if (selfEval.outcome === "blocked" ||
299
- selfEval.stop_reason === "blocked" || selfEval.stop_reason === "needs_human_input") {
300
- reason = "blocked";
362
+ else if (effectiveSuccess(selfEval)) {
363
+ reason = "incomplete";
301
364
  }
302
365
  else {
303
366
  reason = "failed";
304
367
  }
305
368
  return {
306
369
  action: "stop",
370
+ verificationStatus: roundVerificationStatus(activeContractStatuses, selfEval.execution_report ?? null),
307
371
  stopReason: reason,
308
372
  verificationFlags,
309
373
  roundSuccess,
310
374
  gateContradicted,
311
375
  newConsecutiveRejections: 0,
312
376
  newLastSelfEval: selfEval,
313
- shouldPushSuccessTrajectory: shouldPushSuccess(gateContradicted, verificationFlags),
377
+ shouldPushSuccessTrajectory: shouldPushSuccess(gateContradicted, verificationFlags, activeContractStatuses),
314
378
  };
315
379
  }
316
380
  // 5c. Max rounds reached
@@ -320,27 +384,27 @@ export class RoundCoordinator {
320
384
  if (currentRound >= maxRounds) {
321
385
  return {
322
386
  action: "stop",
387
+ verificationStatus: roundVerificationStatus(activeContractStatuses, selfEval.execution_report ?? null),
323
388
  stopReason: "max_rounds",
324
389
  verificationFlags,
325
390
  roundSuccess,
326
391
  gateContradicted,
327
392
  newConsecutiveRejections: 0,
328
393
  newLastSelfEval: selfEval,
329
- shouldPushSuccessTrajectory: shouldPushSuccess(gateContradicted, verificationFlags),
394
+ shouldPushSuccessTrajectory: shouldPushSuccess(gateContradicted, verificationFlags, activeContractStatuses),
330
395
  };
331
396
  }
332
397
  // ── 6. Continue — caller compiles next round ────────────────────────
333
398
  return {
334
399
  action: "continue",
400
+ verificationStatus: roundVerificationStatus(activeContractStatuses, selfEval.execution_report ?? null),
335
401
  verificationFlags,
336
402
  enforcementAction: "accept",
337
403
  roundSuccess,
338
404
  gateContradicted,
339
405
  newConsecutiveRejections: 0,
340
406
  newLastSelfEval: selfEval,
341
- shouldPushSuccessTrajectory: shouldPushSuccess(gateContradicted, verificationFlags),
342
- // v2.12: Propagate clarification acceptance signal for streak tracking
343
- clarificationAccepted: enforceResult.clarification_accepted ?? false,
407
+ shouldPushSuccessTrajectory: shouldPushSuccess(gateContradicted, verificationFlags, activeContractStatuses),
344
408
  };
345
409
  }
346
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[];
@@ -33,8 +33,6 @@ export interface CompleteRoundInput {
33
33
  /** L4 (v3.7.x): previous round's rejection check (own-streak basis). */
34
34
  lastRejectionCheck?: string;
35
35
  successTrajectory: boolean[];
36
- /** v2.12: Current clarification streak for R7 escalation. */
37
- driftClarificationStreak?: number;
38
36
  /** v2.13: Files from skipped backtrack rounds for restore check. */
39
37
  backtrackSkippedFiles?: string[];
40
38
  /** M3 (v3.7.x): skipped-file git fingerprints at their failed rounds. */
@@ -44,7 +42,7 @@ export interface CompleteRoundInput {
44
42
  }
45
43
  export interface CompletedRound {
46
44
  outcome: RoundTransactionOutcome;
47
- actualEvidence: ProviderSnapshot[];
45
+ actualEvidence: MachineObservation[];
48
46
  }
49
47
  export declare class RoundDriver {
50
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,wEAAwE;IACxE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,OAAO,EAAE,CAAC;IAC7B,6DAA6D;IAC7D,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,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,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;IAwBlE,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"}
@@ -88,7 +88,6 @@ export class RoundDriver {
88
88
  lastRejectionCheck: input.lastRejectionCheck,
89
89
  successTrajectory: input.successTrajectory,
90
90
  actualEvidence,
91
- driftClarificationStreak: input.driftClarificationStreak,
92
91
  backtrackSkippedFiles: input.backtrackSkippedFiles,
93
92
  backtrackSkippedFingerprints: input.backtrackSkippedFingerprints,
94
93
  backtrackTargetGitHead: input.backtrackTargetGitHead,
@@ -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"}