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.
- package/README.md +103 -166
- package/dist/canonical-state.d.ts.map +1 -1
- package/dist/canonical-state.js +44 -6
- package/dist/canonical-state.js.map +1 -1
- package/dist/enforcement-gate.d.ts +22 -1
- package/dist/enforcement-gate.d.ts.map +1 -1
- package/dist/enforcement-gate.js +281 -38
- package/dist/enforcement-gate.js.map +1 -1
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +21 -3
- package/dist/engine.js.map +1 -1
- package/dist/evidence-provider.d.ts +3 -5
- package/dist/evidence-provider.d.ts.map +1 -1
- package/dist/evidence-provider.js +24 -10
- package/dist/evidence-provider.js.map +1 -1
- package/dist/index.d.ts +2 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -11
- package/dist/index.js.map +1 -1
- package/dist/loop-compiler.d.ts +2 -2
- package/dist/loop-compiler.d.ts.map +1 -1
- package/dist/loop-compiler.js +135 -42
- package/dist/loop-compiler.js.map +1 -1
- package/dist/loop-store.d.ts.map +1 -1
- package/dist/loop-store.js +3 -5
- package/dist/loop-store.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +42 -8
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/session.d.ts +27 -2
- package/dist/mcp/session.d.ts.map +1 -1
- package/dist/mcp/session.js +145 -1
- package/dist/mcp/session.js.map +1 -1
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +26 -4
- package/dist/mcp/tools.js.map +1 -1
- package/dist/policy-metrics.d.ts +8 -0
- package/dist/policy-metrics.d.ts.map +1 -1
- package/dist/policy-metrics.js +11 -0
- package/dist/policy-metrics.js.map +1 -1
- package/dist/policy.d.ts +46 -0
- package/dist/policy.d.ts.map +1 -1
- package/dist/policy.js +12 -2
- package/dist/policy.js.map +1 -1
- package/dist/prompt-assembler.d.ts +3 -1
- package/dist/prompt-assembler.d.ts.map +1 -1
- package/dist/prompt-assembler.js +427 -29
- package/dist/prompt-assembler.js.map +1 -1
- package/dist/protocol.d.ts +54 -8
- package/dist/protocol.d.ts.map +1 -1
- package/dist/protocol.js +7 -1
- package/dist/protocol.js.map +1 -1
- package/dist/round-coordinator.d.ts +28 -4
- package/dist/round-coordinator.d.ts.map +1 -1
- package/dist/round-coordinator.js +91 -7
- package/dist/round-coordinator.js.map +1 -1
- package/dist/round-driver.d.ts +4 -0
- package/dist/round-driver.d.ts.map +1 -1
- package/dist/round-driver.js +2 -0
- package/dist/round-driver.js.map +1 -1
- package/dist/round-transaction.d.ts +4 -0
- package/dist/round-transaction.d.ts.map +1 -1
- package/dist/round-transaction.js +4 -5
- package/dist/round-transaction.js.map +1 -1
- package/dist/self-eval.d.ts.map +1 -1
- package/dist/self-eval.js +30 -0
- package/dist/self-eval.js.map +1 -1
- package/dist/token-utils.d.ts +3 -0
- package/dist/token-utils.d.ts.map +1 -1
- package/dist/token-utils.js +6 -0
- package/dist/token-utils.js.map +1 -1
- package/dist/verification-gate.d.ts +6 -2
- package/dist/verification-gate.d.ts.map +1 -1
- package/dist/verification-gate.js +41 -5
- package/dist/verification-gate.js.map +1 -1
- package/package.json +2 -2
- package/skills/perception/SKILL.md +105 -30
- package/dist/interop.d.ts +0 -35
- package/dist/interop.d.ts.map +0 -1
- package/dist/interop.js +0 -34
- package/dist/interop.js.map +0 -1
- package/dist/run.d.ts +0 -51
- package/dist/run.d.ts.map +0 -1
- package/dist/run.js +0 -200
- package/dist/run.js.map +0 -1
package/dist/enforcement-gate.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AASH,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E;0DAC0D;AAC1D,SAAS,aAAa,CAAC,KAAiB;IACtC,MAAM,QAAQ,GAAG,KAAK,CAAC,kBAAyD,CAAC;IACjF,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3B,MAAM,EAAE,GAAG,QAAQ,CAAC,iBAAiB,CAAC;IACtC,OAAO,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5C,CAAC;AAED,8EAA8E;AAC9E,uEAAuE;AACvE,iEAAiE;AACjE,8EAA8E;AAE9E;;;oDAGoD;AACpD,SAAS,mCAAmC,CAC1C,KAAyB;IAEzB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CACrB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,iCAAiC,IAAI,CAAC,CAAC,QAAQ,KAAK,OAAO,CAC/E,CAAC;IACF,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEvB,OAAO,qBAAqB,CAAC;QAC3B,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,gBAAgB,EACd,0DAA0D;YAC1D,kFAAkF;YAClF,uEAAuE;QACzE,KAAK,EAAE,iCAAiC;KACzC,CAAC,CAAC;AACL,CAAC;AAED;;+CAE+C;AAC/C,SAAS,yBAAyB,CAChC,KAAyB;IAEzB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CACrB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,qBAAqB,IAAI,CAAC,CAAC,QAAQ,KAAK,OAAO,CACnE,CAAC;IACF,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEvB,OAAO,qBAAqB,CAAC;QAC3B,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,gBAAgB,EACd,sEAAsE;YACtE,4DAA4D;YAC5D,gFAAgF;YAChF,yDAAyD;QAC3D,KAAK,EAAE,qBAAqB;KAC7B,CAAC,CAAC;AACL,CAAC;AAED;;;uEAGuE;AACvE,SAAS,mBAAmB,CAC1B,QAAwB,EACxB,MAA0B,EAC1B,iBAAiB,GAAG,KAAK;IAEzB,IAAI,iBAAiB;QAAE,OAAO,IAAI,CAAC,CAAC,8BAA8B;IAClE,IAAI,CAAC,QAAQ,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAEnC,MAAM,EAAE,GAAG,QAAQ,CAAC,kBAAkB,CAAC;IAEvC,0DAA0D;IAC1D,wEAAwE;IACxE,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,OAAO,qBAAqB,CAAC;YAC3B,MAAM,EAAE,QAAQ;YAChB,MAAM,EACJ,2DAA2D;gBAC3D,8DAA8D;gBAC9D,qDAAqD;YACvD,gBAAgB,EACd,+DAA+D;gBAC/D,sEAAsE;gBACtE,uEAAuE;gBACvE,sEAAsE;gBACtE,qEAAqE;gBACrE,+CAA+C;YACjD,KAAK,EAAE,eAAe;SACvB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,UAAU,GAAG,EAAE,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,CAAC;IACjD,MAAM,WAAW,GAAG,EAAE,CAAC,YAAY,KAAK,IAAI,CAAC;IAE7C,IAAI,CAAC,UAAU,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IAE7C,OAAO,qBAAqB,CAAC;QAC3B,MAAM,EAAE,QAAQ;QAChB,MAAM,EACJ,qEAAqE;YACrE,iEAAiE;QACnE,gBAAgB,EACd,wCAAwC;YACxC,sEAAsE;YACtE,2EAA2E;YAC3E,qEAAqE;YACrE,+CAA+C;QACjD,KAAK,EAAE,eAAe;KACvB,CAAC,CAAC;AACL,CAAC;AAED;;;wEAGwE;AACxE,SAAS,oBAAoB,CAC3B,SAAyB,EACzB,MAA0B,EAC1B,YAAoB,EACpB,YAA0B,EAC1B,qBAA6B,EAC7B,iBAAiB,GAAG,KAAK;IAEzB,IAAI,iBAAiB;QAAE,OAAO,IAAI,CAAC,CAAC,8BAA8B;IAClE,oCAAoC;IACpC,IAAI,YAAY,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAElC,wEAAwE;IACxE,MAAM,eAAe,GAAG,IAAI,GAAG,EAAkB,CAAC;IAClD,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;QACjC,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QAC9B,8CAA8C;QAC9C,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,YAAY;YAAE,SAAS;QAC7C,MAAM,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,EAAE,KAAK,IAAI;YAAE,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,8BAA8B;IAC9B,IAAI,eAAe,CAAC,IAAI,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAE1C,sDAAsD;IACtD,MAAM,YAAY,GAAG,CAAC,GAAG,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACvE,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAElC,sEAAsE;IACtE,iEAAiE;IACjE,MAAM,WAAW,GAAG,YAAY,GAAG,CAAC,CAAC;IACrC,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3B,mEAAmE;IACnE,IAAI,SAAS,GAAG,WAAW,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,YAAY,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAE5E,MAAM,EAAE,GAAG,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,CAAC;IAC1C,MAAM,EAAE,GAAG,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,CAAC;IAC1C,MAAM,EAAE,GAAG,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,CAAC;IAE1C,MAAM,cAAc,GAAG,SAAS,EAAE,CAAC,SAAS,CAAC,wBAAwB,CAAC;IACtE,MAAM,OAAO,GAAG,EAAE,GAAG,EAAE,CAAC;IACxB,MAAM,OAAO,GAAG,EAAE,GAAG,EAAE,CAAC;IAExB,8DAA8D;IAC9D,MAAM,UAAU,GACd,OAAO,GAAG,cAAc;QACxB,OAAO,GAAG,cAAc;QACxB,EAAE,GAAG,IAAI,CAAC;IAEZ,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IAE7B,MAAM,UAAU,GAAG,SAAS,EAAE,CAAC,MAAM,CAAC,8BAA8B,CAAC;IAErE,0EAA0E;IAC1E,uEAAuE;IACvE,wEAAwE;IACxE,IAAI,qBAAqB,IAAI,CAAC,EAAE,CAAC;QAC/B,OAAO,qBAAqB,CAAC;YAC3B,MAAM,EAAE,WAAW;YACnB,MAAM,EACJ,iCAAiC;gBACjC,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;gBACtF,+DAA+D;YACjE,KAAK,EAAE,gBAAgB;SACxB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,qBAAqB,IAAI,CAAC,IAAI,UAAU,EAAE,CAAC;QAC7C,OAAO,qBAAqB,CAAC;YAC3B,MAAM,EAAE,QAAQ;YAChB,MAAM,EACJ,yBAAyB,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;gBACpD,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa;gBACjE,0BAA0B,CAAC,cAAc,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB;YAC7E,gBAAgB,EACd,sDAAsD;gBACtD,yCAAyC;gBACzC,+DAA+D;gBAC/D,kEAAkE;gBAClE,sEAAsE;gBACtE,qBAAqB,EAAE;YACzB,KAAK,EAAE,gBAAgB;SACxB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,qBAAqB,IAAI,CAAC,EAAE,CAAC;QAC/B,OAAO,qBAAqB,CAAC;YAC3B,MAAM,EAAE,WAAW;YACnB,MAAM,EACJ,iCAAiC;gBACjC,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;gBACtF,uEAAuE;YACzE,KAAK,EAAE,gBAAgB;SACxB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,qBAAqB,CAAC;QAC3B,MAAM,EAAE,QAAQ;QAChB,MAAM,EACJ,yBAAyB,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;YACpD,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa;YACjE,0BAA0B,CAAC,cAAc,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB;QAC7E,gBAAgB,EACd,sDAAsD;YACtD,yCAAyC;YACzC,+DAA+D;YAC/D,kEAAkE;YAClE,sEAAsE;QACxE,KAAK,EAAE,gBAAgB;KACxB,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;+EAS+E;AAC/E,SAAS,4BAA4B,CACnC,SAAyB,EACzB,MAA0B,EAC1B,YAAoB,EACpB,YAA0B,EAC1B,qBAA6B,EAC7B,iBAAiB,GAAG,KAAK;IAEzB,IAAI,iBAAiB;QAAE,OAAO,IAAI,CAAC,CAAC,8BAA8B;IAClE,MAAM,WAAW,GAAG,SAAS,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC;IAC3D,IAAI,YAAY,GAAG,WAAW,IAAI,YAAY,CAAC,MAAM,GAAG,WAAW;QAAE,OAAO,IAAI,CAAC;IAEjF,0DAA0D;IAC1D,MAAM,eAAe,GAAG,IAAI,GAAG,EAAkB,CAAC;IAClD,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;QACjC,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,YAAY;YAAE,SAAS;QAC7C,MAAM,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,EAAE,KAAK,IAAI;YAAE,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,eAAe,CAAC,IAAI,GAAG,WAAW;QAAE,OAAO,IAAI,CAAC;IAEpD,MAAM,YAAY,GAAG,CAAC,GAAG,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACvE,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC;IAChD,IAAI,MAAM,CAAC,MAAM,GAAG,WAAW;QAAE,OAAO,IAAI,CAAC;IAE7C,4DAA4D;IAC5D,oEAAoE;IACpE,mEAAmE;IACnE,MAAM,OAAO,GAAG,KAAK,CAAC;IACtB,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAE,CAAC;IAC9C,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC;IAE/F,IAAI,CAAC,OAAO,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IAE3C,MAAM,UAAU,GAAG,SAAS,EAAE,CAAC,MAAM,CAAC,8BAA8B,CAAC;IAErE,oEAAoE;IACpE,mDAAmD;IACnD,IAAI,qBAAqB,IAAI,CAAC,EAAE,CAAC;QAC/B,OAAO,qBAAqB,CAAC;YAC3B,MAAM,EAAE,WAAW;YACnB,MAAM,EACJ,wCAAwC,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;gBACpE,OAAO,WAAW,gDAAgD;gBAClE,4DAA4D;YAC9D,KAAK,EAAE,yBAAyB;SACjC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,qBAAqB,CAAC;YAC3B,MAAM,EAAE,QAAQ;YAChB,MAAM,EACJ,wCAAwC,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;gBACpE,OAAO,WAAW,gDAAgD;gBAClE,iBAAiB;YACnB,gBAAgB,EACd,oEAAoE;gBACpE,oEAAoE;gBACpE,kDAAkD;gBAClD,sCAAsC;gBACtC,kCAAkC;gBAClC,qBAAqB,EAAE;YACzB,KAAK,EAAE,yBAAyB;SACjC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,qBAAqB,CAAC;QAC3B,MAAM,EAAE,WAAW;QACnB,MAAM,EACJ,wCAAwC,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;YACpE,OAAO,WAAW,gDAAgD;YAClE,oCAAoC;QACtC,KAAK,EAAE,yBAAyB;KACjC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;oCAMoC;AACpC,SAAS,oBAAoB,CAC3B,qBAA6B;IAE7B,MAAM,UAAU,GAAG,SAAS,EAAE,CAAC,MAAM,CAAC,8BAA8B,CAAC;IAErE,IAAI,UAAU,EAAE,CAAC;QACf,IAAI,qBAAqB,IAAI,CAAC,EAAE,CAAC;YAC/B,OAAO,qBAAqB,CAAC;gBAC3B,MAAM,EAAE,WAAW;gBACnB,MAAM,EACJ,GAAG,qBAAqB,8CAA8C;oBACtE,sEAAsE;oBACtE,+DAA+D;gBACjE,KAAK,EAAE,gBAAgB;aACxB,CAAC,CAAC;QACL,CAAC;QAED,IAAI,qBAAqB,IAAI,CAAC,EAAE,CAAC;YAC/B,OAAO,qBAAqB,CAAC;gBAC3B,MAAM,EAAE,QAAQ;gBAChB,MAAM,EACJ,GAAG,qBAAqB,8CAA8C;oBACtE,gCAAgC;gBAClC,gBAAgB,EACd,4DAA4D;oBAC5D,gEAAgE;oBAChE,+DAA+D;oBAC/D,sDAAsD;oBACtD,qBAAqB,EAAE;gBACzB,KAAK,EAAE,gBAAgB;aACxB,CAAC,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,qBAAqB,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAE3C,OAAO,qBAAqB,CAAC;QAC3B,MAAM,EAAE,WAAW;QACnB,MAAM,EACJ,GAAG,qBAAqB,8CAA8C;YACtE,2FAA2F;QAC7F,KAAK,EAAE,gBAAgB;KACxB,CAAC,CAAC;AACL,CAAC;AAED;;kFAEkF;AAClF,SAAS,kBAAkB,CACzB,KAAyB,EACzB,qBAA6B;IAE7B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,cAAc,CAAC,CAAC;IAC3D,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEvB,IAAI,qBAAqB,IAAI,CAAC,EAAE,CAAC;QAC/B,OAAO,qBAAqB,CAAC;YAC3B,MAAM,EAAE,WAAW;YACnB,MAAM,EACJ,iEAAiE;gBACjE,kEAAkE;gBAClE,kDAAkD;YACpD,KAAK,EAAE,cAAc;SACtB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,qBAAqB,CAAC;QAC3B,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,gBAAgB,EACd,mEAAmE;YACnE,qDAAqD;YACrD,uDAAuD;YACvD,yDAAyD;YACzD,2EAA2E;YAC3E,uDAAuD;QACzD,KAAK,EAAE,cAAc;KACtB,CAAC,CAAC;AACL,CAAC;AAED,8EAA8E;AAC9E,mCAAmC;AACnC,8EAA8E;AAE9E;;;;+CAI+C;AAC/C,SAAS,qBAAqB;IAC5B,OAAO;QACL,EAAE;QACF,yCAAyC;QACzC,EAAE;QACF,4DAA4D;YAC1D,kDAAkD;QACpD,EAAE;QACF,mEAAmE;QACnE,6DAA6D;QAC7D,0EAA0E;QAC1E,EAAE;QACF,uEAAuE;YACrE,6CAA6C;KAChD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,8EAA8E;AAC9E,gCAAgC;AAChC,8EAA8E;AAE9E;;;;;;4EAM4E;AAC5E,SAAS,kBAAkB,CAAC,KAAyB;IACnD,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,CAClC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM,CACvD,CAAC;IACF,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAE5C,MAAM,KAAK,GAAa;QACtB,kBAAkB;QAClB,EAAE;QACF,iFAAiF;YAC/E,wFAAwF;QAC1F,EAAE;KACH,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QACrD,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,OAAO,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACjF,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,YAAY,CAC1B,QAAwB,EACxB,YAAgC,EAChC,YAAoB,EACpB,YAA0B,EAC1B,wBAAgC,CAAC,EACjC,iBAAiB,GAAG,KAAK;IAEzB,MAAM,EAAE,KAAK,EAAE,GAAG,YAAY,CAAC;IAE/B,2CAA2C;IAC3C,wCAAwC;IACxC,MAAM,KAAK,GAA0C;QACnD,GAAG,EAAE,CAAC,mCAAmC,CAAC,KAAK,CAAC;QAChD,GAAG,EAAE,CAAC,yBAAyB,CAAC,KAAK,CAAC;QACtC,GAAG,EAAE,CAAC,mBAAmB,CAAC,QAAQ,EAAE,KAAK,EAAE,iBAAiB,CAAC;QAC7D,GAAG,EAAE,CAAC,oBAAoB,CAAC,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,qBAAqB,EAAE,iBAAiB,CAAC;QACjH,GAAG,EAAE,CAAC,4BAA4B,CAAC,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,qBAAqB,EAAE,iBAAiB,CAAC;QACzH,GAAG,EAAE,CAAC,oBAAoB,CAAC,qBAAqB,CAAC;QACjD,GAAG,EAAE,CAAC,kBAAkB,CAAC,KAAK,EAAE,qBAAqB,CAAC;KACvD,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI,EAAE,CAAC;QACtB,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;IAC5B,CAAC;IAED,sCAAsC;IACtC,OAAO,qBAAqB,CAAC;QAC3B,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE,EAAE;QACV,gBAAgB,EAAE,EAAE;KACrB,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;;sEAcsE;AACtE,MAAM,UAAU,oBAAoB,CAClC,YAAoB,EACpB,IAAY,EACZ,aAAgC,EAChC,oBAAwC,EAAE;IAE1C,MAAM,KAAK,GAAa;QACtB,aAAa,GAAG,YAAY,GAAG,aAAa;QAC5C,EAAE;QACF,iCAAiC,GAAG,YAAY;YAChD,4CAA4C;QAC5C,EAAE;QACF,YAAY;QACZ,EAAE;QACF,aAAa,CAAC,MAAM;QACpB,EAAE;KACH,CAAC;IAEF,oEAAoE;IACpE,MAAM,GAAG,GAAG,kBAAkB,CAAC,iBAAiB,CAAC,CAAC;IAClD,IAAI,GAAG,EAAE,CAAC;QACR,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,aAAa,CAAC,gBAAgB,EAAE,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;QAC3C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,uBAAuB,GAAG,YAAY,GAAG,WAAW,CAAC,CAAC;IACjE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC/B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CACR,2DAA2D,EAC3D,wBAAwB,GAAG,YAAY;QACvC,wCAAwC,EACxC,6DAA6D,EAC7D,yCAAyC;QACzC,kEAAkE,EAClE,iDAAiD;QACjD,+EAA+E,CAChF,CAAC;IAEF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
|
|
1
|
+
{"version":3,"file":"enforcement-gate.js","sourceRoot":"","sources":["../src/enforcement-gate.ts"],"names":[],"mappings":"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"}
|
package/dist/engine.d.ts.map
CHANGED
|
@@ -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;
|
|
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
|
});
|