loopforge 2.7.0 → 2.11.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 (85) hide show
  1. package/README.md +103 -166
  2. package/dist/canonical-state.d.ts.map +1 -1
  3. package/dist/canonical-state.js +44 -6
  4. package/dist/canonical-state.js.map +1 -1
  5. package/dist/enforcement-gate.d.ts +22 -1
  6. package/dist/enforcement-gate.d.ts.map +1 -1
  7. package/dist/enforcement-gate.js +281 -38
  8. package/dist/enforcement-gate.js.map +1 -1
  9. package/dist/engine.d.ts.map +1 -1
  10. package/dist/engine.js +21 -3
  11. package/dist/engine.js.map +1 -1
  12. package/dist/evidence-provider.d.ts +3 -5
  13. package/dist/evidence-provider.d.ts.map +1 -1
  14. package/dist/evidence-provider.js +24 -10
  15. package/dist/evidence-provider.js.map +1 -1
  16. package/dist/index.d.ts +2 -11
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +2 -11
  19. package/dist/index.js.map +1 -1
  20. package/dist/loop-compiler.d.ts +2 -2
  21. package/dist/loop-compiler.d.ts.map +1 -1
  22. package/dist/loop-compiler.js +135 -42
  23. package/dist/loop-compiler.js.map +1 -1
  24. package/dist/loop-store.d.ts.map +1 -1
  25. package/dist/loop-store.js +3 -5
  26. package/dist/loop-store.js.map +1 -1
  27. package/dist/mcp/server.d.ts.map +1 -1
  28. package/dist/mcp/server.js +42 -8
  29. package/dist/mcp/server.js.map +1 -1
  30. package/dist/mcp/session.d.ts +27 -2
  31. package/dist/mcp/session.d.ts.map +1 -1
  32. package/dist/mcp/session.js +145 -1
  33. package/dist/mcp/session.js.map +1 -1
  34. package/dist/mcp/tools.d.ts.map +1 -1
  35. package/dist/mcp/tools.js +26 -4
  36. package/dist/mcp/tools.js.map +1 -1
  37. package/dist/policy-metrics.d.ts +8 -0
  38. package/dist/policy-metrics.d.ts.map +1 -1
  39. package/dist/policy-metrics.js +11 -0
  40. package/dist/policy-metrics.js.map +1 -1
  41. package/dist/policy.d.ts +46 -0
  42. package/dist/policy.d.ts.map +1 -1
  43. package/dist/policy.js +12 -2
  44. package/dist/policy.js.map +1 -1
  45. package/dist/prompt-assembler.d.ts +3 -1
  46. package/dist/prompt-assembler.d.ts.map +1 -1
  47. package/dist/prompt-assembler.js +427 -29
  48. package/dist/prompt-assembler.js.map +1 -1
  49. package/dist/protocol.d.ts +54 -8
  50. package/dist/protocol.d.ts.map +1 -1
  51. package/dist/protocol.js +7 -1
  52. package/dist/protocol.js.map +1 -1
  53. package/dist/round-coordinator.d.ts +28 -4
  54. package/dist/round-coordinator.d.ts.map +1 -1
  55. package/dist/round-coordinator.js +91 -7
  56. package/dist/round-coordinator.js.map +1 -1
  57. package/dist/round-driver.d.ts +4 -0
  58. package/dist/round-driver.d.ts.map +1 -1
  59. package/dist/round-driver.js +2 -0
  60. package/dist/round-driver.js.map +1 -1
  61. package/dist/round-transaction.d.ts +4 -0
  62. package/dist/round-transaction.d.ts.map +1 -1
  63. package/dist/round-transaction.js +4 -5
  64. package/dist/round-transaction.js.map +1 -1
  65. package/dist/self-eval.d.ts.map +1 -1
  66. package/dist/self-eval.js +30 -0
  67. package/dist/self-eval.js.map +1 -1
  68. package/dist/token-utils.d.ts +3 -0
  69. package/dist/token-utils.d.ts.map +1 -1
  70. package/dist/token-utils.js +6 -0
  71. package/dist/token-utils.js.map +1 -1
  72. package/dist/verification-gate.d.ts +6 -2
  73. package/dist/verification-gate.d.ts.map +1 -1
  74. package/dist/verification-gate.js +41 -5
  75. package/dist/verification-gate.js.map +1 -1
  76. package/package.json +2 -2
  77. package/skills/perception/SKILL.md +105 -30
  78. package/dist/interop.d.ts +0 -35
  79. package/dist/interop.d.ts.map +0 -1
  80. package/dist/interop.js +0 -34
  81. package/dist/interop.js.map +0 -1
  82. package/dist/run.d.ts +0 -51
  83. package/dist/run.d.ts.map +0 -1
  84. package/dist/run.js +0 -200
  85. package/dist/run.js.map +0 -1
@@ -31,6 +31,149 @@ function entryProgress(entry) {
31
31
  const pe = evidence.progress_estimate;
32
32
  return typeof pe === "number" ? pe : null;
33
33
  }
34
+ /** Collect progress estimates from vault entries into a round→estimate map.
35
+ * Shared by R4 (progress_stall) and R5 (progress_stall_terminal). */
36
+ function collectProgressByRound(vaultEntries, currentRound) {
37
+ const progressByRound = new Map();
38
+ for (const entry of vaultEntries) {
39
+ const rnd = entryRound(entry);
40
+ if (rnd < 1 || rnd >= currentRound)
41
+ continue;
42
+ const pe = entryProgress(entry);
43
+ if (pe !== null)
44
+ progressByRound.set(rnd, pe);
45
+ }
46
+ return progressByRound;
47
+ }
48
+ // ═══════════════════════════════════════════════════════════════════════════
49
+ // v2.10: Backtrack helpers
50
+ // ═══════════════════════════════════════════════════════════════════════════
51
+ /** Check whether a vault entry represents a "clean" round that can serve
52
+ * as a safe restore point. A clean round was accepted (not rejected)
53
+ * and had no error-level verification flags. */
54
+ function isCleanRound(entry) {
55
+ const lineage = entry.loop_lineage;
56
+ // Rejected rounds are not clean
57
+ const success = typeof entry.success === "boolean"
58
+ ? entry.success
59
+ : typeof lineage?.success === "boolean" ? lineage.success : undefined;
60
+ if (success === false)
61
+ return false;
62
+ // Rounds with error-level verification flags are not clean
63
+ const flags = entry.verification_flags;
64
+ if (Array.isArray(flags)) {
65
+ for (const f of flags) {
66
+ if (f !== null && typeof f === "object" &&
67
+ f.severity === "error")
68
+ return false;
69
+ }
70
+ }
71
+ return true;
72
+ }
73
+ /** Scan backwards from currentRound to find the most recent clean round.
74
+ * Collects discovered_constraints from skipped rounds along the way.
75
+ * Returns null when no clean round is found within maxDepth. */
76
+ export function findSafeRestorePoint(currentRound, vaultEntries, maxDepth) {
77
+ const completed = vaultEntries
78
+ .filter((e) => {
79
+ const rnd = entryRound(e);
80
+ return rnd >= 1 && rnd < currentRound;
81
+ })
82
+ .sort((a, b) => entryRound(b) - entryRound(a)); // newest first
83
+ const skippedDiscoveries = [];
84
+ for (let depth = 1; depth <= maxDepth; depth++) {
85
+ const targetRound = currentRound - depth;
86
+ if (targetRound < 1)
87
+ break;
88
+ const entry = completed.find((e) => entryRound(e) === targetRound);
89
+ if (!entry)
90
+ continue;
91
+ // Collect discoveries from rounds we're about to skip (depth > 1)
92
+ if (depth > 1) {
93
+ for (let d = 1; d < depth; d++) {
94
+ const skippedRound = currentRound - d;
95
+ const skippedEntry = completed.find((e) => entryRound(e) === skippedRound);
96
+ if (skippedEntry) {
97
+ const discovered = Array.isArray(skippedEntry.discovered_constraints)
98
+ ? skippedEntry.discovered_constraints.filter((v) => typeof v === "string")
99
+ : [];
100
+ for (const item of discovered) {
101
+ if (!skippedDiscoveries.includes(item))
102
+ skippedDiscoveries.push(item);
103
+ }
104
+ }
105
+ }
106
+ }
107
+ if (isCleanRound(entry)) {
108
+ return { round: targetRound, skippedDiscoveries };
109
+ }
110
+ }
111
+ return null;
112
+ }
113
+ /** Build the backtrack prompt injected at the top of the restored round.
114
+ *
115
+ * v2.13: Includes concrete workspace restore instructions with affected
116
+ * file lists from skipped rounds. The agent must restore the working tree
117
+ * to the clean round's state before proceeding. */
118
+ export function buildBacktrackPrompt(fromRound, toRound, triggerRule, skippedDiscoveries,
119
+ /** v2.13: Files changed in the skipped rounds (from evidence snapshots).
120
+ * Used to show the agent exactly what needs to be reverted. */
121
+ skippedFiles = [],
122
+ /** v2.13: Git HEAD commit hash at the backtrack point (current HEAD).
123
+ * The agent must discard work back to the clean round's state. */
124
+ _gitHead) {
125
+ const lines = [
126
+ `## ⛔ Backtrack — Round ${fromRound} → Restored to Round ${toRound}`,
127
+ "",
128
+ ];
129
+ // ── Why This Happened ────────────────────────────────────────────────
130
+ if (triggerRule === "progress_stall") {
131
+ lines.push("### Why This Happened", "", `Progress stalled over rounds ${toRound + 1}–${fromRound}. ` +
132
+ `The work done in those rounds produced no verifiable progress — ` +
133
+ `no new files changed, no criteria met.`, "", "The approach used in those rounds **did not work**. It should not be repeated.", "");
134
+ }
135
+ else if (triggerRule === "progress_stall_terminal") {
136
+ lines.push("### Why This Happened", "", `Progress was completely flat for multiple rounds leading up to Round ${fromRound}. ` +
137
+ `The agent made **zero forward motion** — the task is not advancing.`, "", "A **radically different** strategy is needed. The previous approach produced nothing.", "");
138
+ }
139
+ // ── v2.13: Workspace Restore ──────────────────────────────────────────
140
+ lines.push("### ⚠️ Workspace Restore Required", "", `Your working directory still contains changes from the **failed** ` +
141
+ `rounds (${toRound + 1}–${fromRound}). You MUST discard those changes ` +
142
+ `before starting Round ${toRound + 1}. Working on top of stale changes ` +
143
+ `will cause the verification gate to reject your next submission.`, "");
144
+ if (skippedFiles.length > 0) {
145
+ lines.push("**Files modified in skipped rounds (must be reverted):**", "");
146
+ for (const f of skippedFiles.slice(0, 15)) {
147
+ lines.push(`- \`${f}\``);
148
+ }
149
+ if (skippedFiles.length > 15) {
150
+ lines.push(`- … and ${skippedFiles.length - 15} more files`);
151
+ }
152
+ lines.push("");
153
+ }
154
+ lines.push("**To restore a clean workspace, run:**", "", "```bash", "# Option A: Discard all uncommitted changes (recommended)", "git checkout -- .", "git clean -fd", "", "# Option B: If you have unrelated work to keep", `git stash push -m "backtrack-safety-net-round-${fromRound}"`, "git checkout -- .", "git clean -fd", "```", "", `**If git is unavailable**, manually revert the files listed above ` +
155
+ `to their state at Round ${toRound}. Re-read the state file below — ` +
156
+ `it reflects the correct state at Round ${toRound}.`, "", "> 🛡️ **Verification:** The next round's evidence check will verify that " +
157
+ "> your workspace no longer contains the failed changes. Submissions " +
158
+ "> with unrestored files will be **rejected**.", "");
159
+ // ── What Must Change ──────────────────────────────────────────────────
160
+ lines.push("### What Must Change", "", "- Do **NOT** repeat the approach used in the skipped rounds.", "- Try a **different** task decomposition or technique.", "- If the current sub-goal is stuck, consider canceling it " +
161
+ "(`canceled_subtasks`) and working on a different one.", "- Use the `prompt_requests.confusion_points` field in your self-evaluation " +
162
+ "to flag anything you don't understand about the task or the blockage.", "");
163
+ // ── Preserved Discoveries ─────────────────────────────────────────────
164
+ if (skippedDiscoveries.length > 0) {
165
+ lines.push("### Preserved Discoveries", "", "These were discovered in the skipped rounds and remain valid:", "");
166
+ for (const d of skippedDiscoveries) {
167
+ lines.push(`- ${d}`);
168
+ }
169
+ lines.push("");
170
+ }
171
+ // ── Instructions ──────────────────────────────────────────────────────
172
+ lines.push("### Instructions", "", `You have been rolled back to Round ${toRound}. ` +
173
+ `You are now starting **Round ${toRound + 1}** with the lessons above.`, "", "1. **First**: restore your workspace using the commands above.", "2. Read the restored state below — it reflects Round " + toRound + ".", "3. The discoveries from skipped rounds (if any) have been merged " +
174
+ "into the active constraints.", "4. Do NOT retrace the steps that led to the stall. Choose a new path.", "");
175
+ return lines.join("\n");
176
+ }
34
177
  // ═══════════════════════════════════════════════════════════════════════════
35
178
  // Individual enforcement rules — each returns EnforcementResult | null
36
179
  // Rules are ordered by priority. The first non-null result wins.
@@ -122,31 +265,14 @@ function enforceProgressStall(_selfEval, _flags, currentRound, vaultEntries, con
122
265
  // Need at least 3 rounds of history
123
266
  if (currentRound < 3)
124
267
  return null;
125
- // Collect progress estimates for the last 3 completed rounds from vault
126
- const progressByRound = new Map();
127
- for (const entry of vaultEntries) {
128
- const rnd = entryRound(entry);
129
- // Only consider rounds before the current one
130
- if (rnd < 1 || rnd >= currentRound)
131
- continue;
132
- const pe = entryProgress(entry);
133
- if (pe !== null)
134
- progressByRound.set(rnd, pe);
135
- }
136
- // Need at least 3 data points
268
+ const progressByRound = collectProgressByRound(vaultEntries, currentRound);
137
269
  if (progressByRound.size < 3)
138
270
  return null;
139
- // Get the three most recent rounds with progress data
140
271
  const sortedRounds = [...progressByRound.keys()].sort((a, b) => a - b);
141
272
  const last3 = sortedRounds.slice(-3);
142
- if (last3.length < 3)
143
- return null;
144
- // Verify these are the actual last 3 rounds (contiguous with current)
145
- // Accept rounds that are within [currentRound-3, currentRound-1]
273
+ // Require all three data points to be within [currentRound-3, currentRound-1].
146
274
  const expectedMin = currentRound - 3;
147
- const actualMin = last3[0];
148
- // Allow up to 1 round gap (some rounds may not have progress data)
149
- if (actualMin < expectedMin - 1 || last3[2] > currentRound - 1)
275
+ if (last3[0] < expectedMin || last3[2] > currentRound - 1)
150
276
  return null;
151
277
  const p1 = progressByRound.get(last3[0]);
152
278
  const p2 = progressByRound.get(last3[1]);
@@ -174,6 +300,21 @@ function enforceProgressStall(_selfEval, _flags, currentRound, vaultEntries, con
174
300
  });
175
301
  }
176
302
  if (consecutiveRejections >= 1 && escalation) {
303
+ // v2.10: When backtrack is enabled, escalate to backtrack instead of
304
+ // reject. The agent is rolled back to the last clean round with lessons
305
+ // injected, rather than redoing the same round with an escalation notice.
306
+ if (getPolicy().engine.backtrack_enabled) {
307
+ return makeEnforcementResult({
308
+ action: "backtrack",
309
+ reason: `Progress has stalled: ${(p1 * 100).toFixed(0)}% → ` +
310
+ `${(p2 * 100).toFixed(0)}% → ${(p3 * 100).toFixed(0)}% over the ` +
311
+ `last 3 rounds (delta < ${(stallThreshold * 100).toFixed(0)}% each round).`,
312
+ fix_instructions: "Your progress has been flat for 3 rounds. You are being rolled back " +
313
+ "to the last clean round. Do NOT repeat the approach that led to the stall. " +
314
+ "Choose a different technique or task decomposition.",
315
+ check: "progress_stall",
316
+ });
317
+ }
177
318
  return makeEnforcementResult({
178
319
  action: "reject",
179
320
  reason: `Progress has stalled: ${(p1 * 100).toFixed(0)}% → ` +
@@ -226,22 +367,11 @@ function enforceProgressStallTerminal(_selfEval, _flags, currentRound, vaultEntr
226
367
  const breakerSize = getPolicy().engine.max_circuit_breaker;
227
368
  if (currentRound < breakerSize || vaultEntries.length < breakerSize)
228
369
  return null;
229
- // Collect progress estimates for recent completed rounds.
230
- const progressByRound = new Map();
231
- for (const entry of vaultEntries) {
232
- const rnd = entryRound(entry);
233
- if (rnd < 1 || rnd >= currentRound)
234
- continue;
235
- const pe = entryProgress(entry);
236
- if (pe !== null)
237
- progressByRound.set(rnd, pe);
238
- }
370
+ const progressByRound = collectProgressByRound(vaultEntries, currentRound);
239
371
  if (progressByRound.size < breakerSize)
240
372
  return null;
241
373
  const sortedRounds = [...progressByRound.keys()].sort((a, b) => a - b);
242
374
  const recent = sortedRounds.slice(-breakerSize);
243
- if (recent.length < breakerSize)
244
- return null;
245
375
  // Check that progress values are ALL identical (delta = 0).
246
376
  // Use epsilon comparison — JSON round-trips can produce float drift
247
377
  // (e.g. 0.3 vs 0.30000000000000004) that would defeat strict === .
@@ -263,6 +393,21 @@ function enforceProgressStallTerminal(_selfEval, _flags, currentRound, vaultEntr
263
393
  });
264
394
  }
265
395
  if (escalation) {
396
+ // v2.10: When backtrack is enabled, escalate to backtrack instead of
397
+ // reject. The agent is rolled back to the last clean round with a
398
+ // "radically different strategy" lesson injected.
399
+ if (getPolicy().engine.backtrack_enabled) {
400
+ return makeEnforcementResult({
401
+ action: "backtrack",
402
+ reason: `Progress has been completely flat at ${(first * 100).toFixed(0)}% ` +
403
+ `for ${breakerSize} consecutive rounds. The agent is making zero ` +
404
+ `forward motion.`,
405
+ fix_instructions: "Your progress has been exactly flat — zero forward motion. " +
406
+ "You are being rolled back to the last clean round. " +
407
+ "Choose a RADICALLY different approach. The previous one produced nothing.",
408
+ check: "progress_stall_terminal",
409
+ });
410
+ }
266
411
  return makeEnforcementResult({
267
412
  action: "reject",
268
413
  reason: `Progress has been completely flat at ${(first * 100).toFixed(0)}% ` +
@@ -328,19 +473,114 @@ function enforceMaxRejections(consecutiveRejections) {
328
473
  check: "max_rejections",
329
474
  });
330
475
  }
476
+ /** v2.12: Check if a drift_clarification contains at least one semantic
477
+ * anchor — a constraint/criterion/sub-goal ID (v2.11) or a file-path-like
478
+ * reference. This distinguishes genuine explanations from filler text that
479
+ * just happens to be ≥ 20 characters. */
480
+ function hasSemanticAnchor(clarification) {
481
+ // v2.11: Constraint / criterion / sub-goal ID patterns
482
+ if (/[c]r?-[a-f0-9]{8}/.test(clarification))
483
+ return true;
484
+ if (/sg-[a-f0-9]{8}/.test(clarification))
485
+ return true;
486
+ // File path references (e.g. "src/auth/login.ts", "lib/utils.go")
487
+ if (/[\w./-]+\.[a-z]{2,6}\b/i.test(clarification))
488
+ return true;
489
+ return false;
490
+ }
491
+ /** Build a stronger rejection notice as the clarification streak grows. */
492
+ function buildClarificationRejectionNotice(streak) {
493
+ const base = "Your declared next_action from the previous round does not match " +
494
+ "what you actually did this round. You must either: " +
495
+ "(a) explain why you pivoted in the drift_clarification field, " +
496
+ "mentioning specific constraint/criterion/sub-goal IDs or file paths " +
497
+ "that prompted the change, or " +
498
+ "(b) redo this round and do what you said you would do.";
499
+ if (streak >= 2) {
500
+ return (base +
501
+ "\n\n### ⚠️ Repeated Weak Clarification\n\n" +
502
+ `You have submitted drift_clarification without concrete references ` +
503
+ `for ${streak} consecutive rounds. Your explanation MUST include at ` +
504
+ `least one of: a constraint ID (c-XXXXXXXX), criterion ID (cr-XXXXXXXX), ` +
505
+ `sub-goal ID (sg-XXXXXXXX), or a file path you changed.\n\n` +
506
+ `🚨 If the next clarification also lacks concrete anchors, the loop ` +
507
+ `will be terminated.`);
508
+ }
509
+ return base;
510
+ }
331
511
  /** R7: Agent declared a next_action but did something unrelated.
512
+ *
513
+ * v2.8: When the agent provides a substantive drift_clarification (≥ 20
514
+ * characters), the rejection is waived — the agent has acknowledged and
515
+ * explained the pivot. An empty or absent clarification still triggers
516
+ * the normal reject/terminate path.
517
+ *
518
+ * v2.12: Clarification now requires a semantic anchor (constraint/criterion/
519
+ * sub-goal ID or file path) in addition to the ≥ 20 char minimum. Weak
520
+ * clarifications (no anchors) increment a streak counter; 3 consecutive
521
+ * weak clarifications terminate the loop.
522
+ *
332
523
  * First occurrence → reject (agent must explain the gap or realign).
333
524
  * Second consecutive → terminate (agent cannot/will not follow its own plan). */
334
- function enforceIntentDrift(flags, consecutiveRejections) {
525
+ function enforceIntentDrift(flags, selfEval, consecutiveRejections, driftClarificationStreak = 0) {
335
526
  const flag = flags.find((f) => f.check === "intent_drift");
336
527
  if (!flag)
337
528
  return null;
529
+ const clarification = selfEval.drift_clarification?.trim();
530
+ // v2.12: Semantic anchor detection — requires concrete references
531
+ const hasAnchor = clarification ? hasSemanticAnchor(clarification) : false;
532
+ // v2.12: Substantive clarification = length check + semantic anchor
533
+ const isSubstantive = clarification
534
+ && clarification.length >= 20
535
+ && hasAnchor;
536
+ if (isSubstantive) {
537
+ // Genuine explanation with concrete references → accept the pivot
538
+ return makeEnforcementResult({
539
+ action: "accept",
540
+ reason: "",
541
+ fix_instructions: "",
542
+ check: "intent_drift",
543
+ clarification_accepted: true,
544
+ });
545
+ }
546
+ // v2.12: Clarification present but weak (no semantic anchors)
547
+ if (clarification && clarification.length >= 20 && !hasAnchor) {
548
+ const maxStreak = getPolicy().engine.drift_clarification_max_streak;
549
+ // When maxStreak is 0, disable the check (pre-v2.12 behavior)
550
+ if (maxStreak <= 0) {
551
+ return makeEnforcementResult({
552
+ action: "accept",
553
+ reason: "",
554
+ fix_instructions: "",
555
+ check: "intent_drift",
556
+ clarification_accepted: true,
557
+ });
558
+ }
559
+ const newStreak = driftClarificationStreak + 1;
560
+ if (newStreak >= maxStreak) {
561
+ return makeEnforcementResult({
562
+ action: "terminate",
563
+ reason: `Agent has submitted weak drift_clarification (no concrete IDs or ` +
564
+ `file references) for ${newStreak} consecutive rounds. The agent ` +
565
+ `systematically avoids following its own plan without substantive ` +
566
+ `explanation.`,
567
+ check: "intent_drift",
568
+ });
569
+ }
570
+ return makeEnforcementResult({
571
+ action: "reject",
572
+ reason: flag.detail,
573
+ fix_instructions: buildClarificationRejectionNotice(newStreak),
574
+ check: "intent_drift",
575
+ });
576
+ }
577
+ // No clarification or too short — original behavior
338
578
  if (consecutiveRejections >= 1) {
339
579
  return makeEnforcementResult({
340
580
  action: "terminate",
341
581
  reason: `Agent was warned about intent-action drift but continues to do ` +
342
- `work unrelated to its declared next_action. The agent cannot or ` +
343
- `will not follow its own plan — terminating loop.`,
582
+ `work unrelated to its declared next_action without explanation. ` +
583
+ `The agent cannot or will not follow its own plan — terminating loop.`,
344
584
  check: "intent_drift",
345
585
  });
346
586
  }
@@ -349,7 +589,8 @@ function enforceIntentDrift(flags, consecutiveRejections) {
349
589
  reason: flag.detail,
350
590
  fix_instructions: "Your declared next_action from the previous round does not match " +
351
591
  "what you actually did this round. You must either: " +
352
- "(a) explain why you pivoted and what you learned, or " +
592
+ "(a) explain why you pivoted and what you learned in the " +
593
+ "drift_clarification field, or " +
353
594
  "(b) redo this round and do what you said you would do. " +
354
595
  "If you intentionally changed direction, update your objective_refinement " +
355
596
  "and set a new next_action that reflects the new plan.",
@@ -423,7 +664,9 @@ function buildDiagnosticGap(flags) {
423
664
  * @param consecutiveRejections How many consecutive rounds have already been rejected.
424
665
  * Starts at 0; increments on each reject; resets on accept.
425
666
  */
426
- export function enforceRound(selfEval, verifyResult, currentRound, vaultEntries, consecutiveRejections = 0, skipEvidenceRules = false) {
667
+ export function enforceRound(selfEval, verifyResult, currentRound, vaultEntries, consecutiveRejections = 0, skipEvidenceRules = false,
668
+ /** v2.12: Current clarification streak for R7 escalation. */
669
+ driftClarificationStreak = 0) {
427
670
  const { flags } = verifyResult;
428
671
  // Run enforcement rules in priority order.
429
672
  // Earlier rules take higher precedence.
@@ -434,7 +677,7 @@ export function enforceRound(selfEval, verifyResult, currentRound, vaultEntries,
434
677
  () => enforceProgressStall(selfEval, flags, currentRound, vaultEntries, consecutiveRejections, skipEvidenceRules),
435
678
  () => enforceProgressStallTerminal(selfEval, flags, currentRound, vaultEntries, consecutiveRejections, skipEvidenceRules),
436
679
  () => enforceMaxRejections(consecutiveRejections),
437
- () => enforceIntentDrift(flags, consecutiveRejections),
680
+ () => enforceIntentDrift(flags, selfEval, consecutiveRejections, driftClarificationStreak),
438
681
  ];
439
682
  for (const rule of rules) {
440
683
  const result = rule();
@@ -1 +1 @@
1
- {"version":3,"file":"enforcement-gate.js","sourceRoot":"","sources":["../src/enforcement-gate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"enforcement-gate.js","sourceRoot":"","sources":["../src/enforcement-gate.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAc,MAAM,yBAAyB,CAAC;AAExE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EASL,KAAK,eAAe,EAIpB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,YAAY,EAElB,MAAM,eAAe,CAAC;AAWvB,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AAMxB,oEAAoE;AACpE,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,qBAAqB,EAAE,MAAM,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,aAAa;IAC5B,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;CACtB;AAaD,qBAAa,eAAe;IAC1B,KAAK,EAAE,YAAY,GAAG,IAAI,CAAQ;IAClC,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,OAAO,CAA8B;IAC7C,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAQ;gBAEnB,cAAc,CAAC,EAAE,SAAS,GAAG,YAAY;IAQrD,OAAO,CAAC,cAAc;IAStB,iFAAiF;IACjF,UAAU,IAAI,YAAY;IAI1B,6EAA6E;IAC7E,UAAU,IAAI,aAAa;IAO3B,OAAO,CAAC,UAAU;IAelB,OAAO,CAAC,sBAAsB;IAgB9B,OAAO,CAAC,kBAAkB;IAqC1B,OAAO,CAAC,kBAAkB;IA8D1B;;yEAEqE;IACrE,gBAAgB,CACd,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,eAAe,EAAE,GACzB,IAAI;IAwCP,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IA2DlE,cAAc,CACZ,OAAO,EAAE,gBAAgB,EACzB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAC/C,eAAe;IAyElB;;;;;gEAK4D;IAC5D,YAAY,CACV,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACzC,OAAO;IAqHV,iBAAiB,CACf,OAAO,EAAE,gBAAgB,EACzB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,EAC/C,OAAO,GAAE;QAAE,cAAc,CAAC,EAAE,OAAO,CAAA;KAAO,GACzC,eAAe;CAiJnB;AAMD,wBAAgB,YAAY,CAC1B,KAAK,CAAC,EAAE,SAAS,GAChB,eAAe,CAEjB"}
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAc,MAAM,yBAAyB,CAAC;AAExE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EASL,KAAK,eAAe,EAIpB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,YAAY,EAElB,MAAM,eAAe,CAAC;AAYvB,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AAMxB,oEAAoE;AACpE,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,qBAAqB,EAAE,MAAM,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,aAAa;IAC5B,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;CACtB;AAaD,qBAAa,eAAe;IAC1B,KAAK,EAAE,YAAY,GAAG,IAAI,CAAQ;IAClC,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,OAAO,CAA8B;IAC7C,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAQ;gBAEnB,cAAc,CAAC,EAAE,SAAS,GAAG,YAAY;IAQrD,OAAO,CAAC,cAAc;IAStB,iFAAiF;IACjF,UAAU,IAAI,YAAY;IAI1B,6EAA6E;IAC7E,UAAU,IAAI,aAAa;IAO3B,OAAO,CAAC,UAAU;IAelB,OAAO,CAAC,sBAAsB;IAkB9B,OAAO,CAAC,kBAAkB;IA4C1B,OAAO,CAAC,kBAAkB;IAgE1B;;yEAEqE;IACrE,gBAAgB,CACd,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,eAAe,EAAE,GACzB,IAAI;IA0CP,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IA2DlE,cAAc,CACZ,OAAO,EAAE,gBAAgB,EACzB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAC/C,eAAe;IAyElB;;;;;gEAK4D;IAC5D,YAAY,CACV,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACzC,OAAO;IAqHV,iBAAiB,CACf,OAAO,EAAE,gBAAgB,EACzB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,EAC/C,OAAO,GAAE;QAAE,cAAc,CAAC,EAAE,OAAO,CAAA;KAAO,GACzC,eAAe;CAqJnB;AAMD,wBAAgB,YAAY,CAC1B,KAAK,CAAC,EAAE,SAAS,GAChB,eAAe,CAEjB"}
package/dist/engine.js CHANGED
@@ -11,6 +11,7 @@ import { FileLoopStore, LoopStoreBackend } from "./loop-store.js";
11
11
  import { AgentStatus, Mode, makeExecutionFeedback, makeLoopCompileRequest, makeLoopObjective, makeLoopRoundResult, makeSessionState, makeTaskId, } from "./protocol.js";
12
12
  import { compileLoop } from "./loop-compiler.js";
13
13
  import { logEvent } from "./observability.js";
14
+ import { policyMetrics } from "./policy-metrics.js";
14
15
  import { parseExecutionEvidence, parseCriterionRevisions, parseWorkerResults, } from "./self-eval.js";
15
16
  import { parseLoopExtras } from "./loop-extras-parser.js";
16
17
  // ── Re-export self-evaluation utilities (moved to self-eval.ts) ──────────
@@ -76,10 +77,12 @@ export class LoopForgeEngine {
76
77
  try {
77
78
  this.resolveBackend().appendEntry(entry);
78
79
  }
79
- catch {
80
+ catch (error) {
80
81
  if (this.metrics)
81
82
  this.metrics.vaultWriteErrors++;
83
+ console.warn(`LoopForge: vault write failed (feedback_persist) — ${error}`);
82
84
  logEvent("vault_write_error", { error: "feedback_persist" });
85
+ policyMetrics.recordVaultWriteError("feedback_persist");
83
86
  }
84
87
  }
85
88
  buildFeedbackEntry(signal) {
@@ -107,6 +110,13 @@ export class LoopForgeEngine {
107
110
  skill_used: signal.skill_used ?? "",
108
111
  loop_id: signal.loop_id,
109
112
  loop_lineage: signal.loop_lineage ?? {},
113
+ // Persist execution_evidence so the enforcement gate (R4/R5) can
114
+ // read progress_estimate from vault entries across rounds.
115
+ execution_evidence: signal.execution_evidence ?? null,
116
+ discovered_constraints: signal.discovered_constraints ?? [],
117
+ emerged_subtasks: signal.emerged_subtasks ?? [],
118
+ retracted_constraints: signal.retracted_constraints ?? [],
119
+ worker_results: signal.worker_results ?? [],
110
120
  };
111
121
  }
112
122
  catch {
@@ -163,10 +173,12 @@ export class LoopForgeEngine {
163
173
  this.resolveBackend().appendEntry(entry);
164
174
  vaultOk = true;
165
175
  }
166
- catch {
176
+ catch (error) {
167
177
  if (this.metrics)
168
178
  this.metrics.vaultWriteErrors++;
179
+ console.warn(`LoopForge: vault write failed (lineage_persist) — ${error}`);
169
180
  logEvent("vault_write_error", { error: "persist_lineage_json" });
181
+ policyMetrics.recordVaultWriteError("lineage_persist");
170
182
  }
171
183
  return vaultOk;
172
184
  }
@@ -209,10 +221,12 @@ export class LoopForgeEngine {
209
221
  try {
210
222
  this.resolveBackend().appendEntry(entry);
211
223
  }
212
- catch {
224
+ catch (error) {
213
225
  if (this.metrics)
214
226
  this.metrics.vaultWriteErrors++;
227
+ console.warn(`LoopForge: vault write failed (delegation_persist) — ${error}`);
215
228
  logEvent("vault_write_error", { error: "record_delegation" });
229
+ policyMetrics.recordVaultWriteError("delegation_persist");
216
230
  }
217
231
  }
218
232
  // ═══════════════════════════════════════════════════════════════════════
@@ -517,6 +531,10 @@ export class LoopForgeEngine {
517
531
  canceled_subtasks: Array.isArray(rr.canceled_subtasks)
518
532
  ? rr.canceled_subtasks.filter((v) => typeof v === "string")
519
533
  : [],
534
+ // v2.8: Drift clarification
535
+ drift_clarification: typeof rr.drift_clarification === "string"
536
+ ? rr.drift_clarification
537
+ : undefined,
520
538
  // Multi-agent: Worker delegation results (shared parser)
521
539
  worker_results: parseWorkerResults(rr.worker_results),
522
540
  });