loopforge 2.0.0 → 2.6.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 +7 -5
- package/dist/backends/interface.d.ts +4 -3
- package/dist/backends/interface.d.ts.map +1 -1
- package/dist/backends/interface.js +4 -1
- package/dist/backends/interface.js.map +1 -1
- package/dist/canonical-state.d.ts +23 -2
- package/dist/canonical-state.d.ts.map +1 -1
- package/dist/canonical-state.js +90 -6
- package/dist/canonical-state.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +6 -2
- package/dist/cli.js.map +1 -1
- package/dist/enforcement-gate.d.ts +1 -1
- package/dist/enforcement-gate.d.ts.map +1 -1
- package/dist/enforcement-gate.js +86 -7
- package/dist/enforcement-gate.js.map +1 -1
- package/dist/engine.d.ts +3 -33
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +127 -343
- package/dist/engine.js.map +1 -1
- package/dist/evidence-provider.d.ts +38 -5
- package/dist/evidence-provider.d.ts.map +1 -1
- package/dist/evidence-provider.js +132 -46
- package/dist/evidence-provider.js.map +1 -1
- package/dist/index.d.ts +10 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -9
- package/dist/index.js.map +1 -1
- package/dist/interop.d.ts +5 -0
- package/dist/interop.d.ts.map +1 -1
- package/dist/interop.js +5 -0
- package/dist/interop.js.map +1 -1
- package/dist/loop-compiler.d.ts.map +1 -1
- package/dist/loop-compiler.js +515 -50
- package/dist/loop-compiler.js.map +1 -1
- package/dist/loop-extras-parser.d.ts +82 -0
- package/dist/loop-extras-parser.d.ts.map +1 -0
- package/dist/loop-extras-parser.js +217 -0
- package/dist/loop-extras-parser.js.map +1 -0
- package/dist/loop-store.d.ts +26 -4
- package/dist/loop-store.d.ts.map +1 -1
- package/dist/loop-store.js +118 -8
- package/dist/loop-store.js.map +1 -1
- package/dist/mcp/server.js +1 -1
- package/dist/mcp/session.d.ts +29 -6
- package/dist/mcp/session.d.ts.map +1 -1
- package/dist/mcp/session.js +187 -161
- package/dist/mcp/session.js.map +1 -1
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +33 -5
- package/dist/mcp/tools.js.map +1 -1
- package/dist/observability.d.ts +5 -36
- package/dist/observability.d.ts.map +1 -1
- package/dist/observability.js +9 -79
- package/dist/observability.js.map +1 -1
- package/dist/policy-metrics.d.ts +1 -0
- package/dist/policy-metrics.d.ts.map +1 -1
- package/dist/policy-metrics.js +2 -0
- package/dist/policy-metrics.js.map +1 -1
- package/dist/policy.d.ts +58 -8
- package/dist/policy.d.ts.map +1 -1
- package/dist/policy.js +25 -12
- package/dist/policy.js.map +1 -1
- package/dist/prompt-assembler.d.ts.map +1 -1
- package/dist/prompt-assembler.js +129 -4
- package/dist/prompt-assembler.js.map +1 -1
- package/dist/protocol.d.ts +118 -87
- package/dist/protocol.d.ts.map +1 -1
- package/dist/protocol.js +40 -30
- package/dist/protocol.js.map +1 -1
- package/dist/replay.d.ts +0 -1
- package/dist/replay.d.ts.map +1 -1
- package/dist/replay.js +1 -87
- package/dist/replay.js.map +1 -1
- package/dist/round-coordinator.d.ts +4 -6
- package/dist/round-coordinator.d.ts.map +1 -1
- package/dist/round-coordinator.js +75 -80
- package/dist/round-coordinator.js.map +1 -1
- package/dist/round-driver.d.ts +1 -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.map +1 -1
- package/dist/round-transaction.js +2 -22
- package/dist/round-transaction.js.map +1 -1
- package/dist/run.d.ts +51 -0
- package/dist/run.d.ts.map +1 -0
- package/dist/run.js +200 -0
- package/dist/run.js.map +1 -0
- package/dist/self-eval.d.ts +23 -0
- package/dist/self-eval.d.ts.map +1 -0
- package/dist/self-eval.js +151 -0
- package/dist/self-eval.js.map +1 -0
- package/dist/storage.d.ts +3 -2
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +70 -68
- package/dist/storage.js.map +1 -1
- package/dist/token-utils.d.ts +22 -0
- package/dist/token-utils.d.ts.map +1 -0
- package/dist/token-utils.js +46 -0
- package/dist/token-utils.js.map +1 -0
- package/dist/verification-gate.d.ts +17 -23
- package/dist/verification-gate.d.ts.map +1 -1
- package/dist/verification-gate.js +241 -135
- package/dist/verification-gate.js.map +1 -1
- package/loop_policy.json +21 -12
- package/package.json +2 -2
- package/dist/runtime.d.ts +0 -94
- package/dist/runtime.d.ts.map +0 -1
- package/dist/runtime.js +0 -718
- package/dist/runtime.js.map +0 -1
|
@@ -12,8 +12,13 @@
|
|
|
12
12
|
* modified). Flags become hard constraints — the agent
|
|
13
13
|
* must respond in the next round.
|
|
14
14
|
*/
|
|
15
|
-
import {
|
|
15
|
+
import { getPolicy } from "./policy.js";
|
|
16
16
|
import { makeVerificationFlag, makeVerificationResult } from "./protocol.js";
|
|
17
|
+
import { jaccardSimilarity, entryRound as sharedEntryRound } from "./token-utils.js";
|
|
18
|
+
// Git capture functions moved to evidence-provider.ts (v2.0.1).
|
|
19
|
+
// Re-export for backward compatibility — new code should import from
|
|
20
|
+
// evidence-provider.ts directly.
|
|
21
|
+
export { captureGitFileState, captureGitModifiedFiles, } from "./evidence-provider.js";
|
|
17
22
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
18
23
|
// Helpers
|
|
19
24
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
@@ -23,8 +28,7 @@ import { makeVerificationFlag, makeVerificationResult } from "./protocol.js";
|
|
|
23
28
|
* unambiguously means "not a valid round entry" in this context.
|
|
24
29
|
* Exported for reuse by enforcement-gate.ts. */
|
|
25
30
|
export function entryRound(entry) {
|
|
26
|
-
|
|
27
|
-
return lineage.round ?? 0;
|
|
31
|
+
return sharedEntryRound(entry);
|
|
28
32
|
}
|
|
29
33
|
/** Read constraint_violations from a vault entry (entry-level, stored from
|
|
30
34
|
* the previous round's last_round_result at persist time). */
|
|
@@ -34,48 +38,6 @@ function entryViolations(entry) {
|
|
|
34
38
|
return viols.filter((v) => typeof v === "string");
|
|
35
39
|
return [];
|
|
36
40
|
}
|
|
37
|
-
/** v1.17: Capture all git file state — modified, staged, and untracked.
|
|
38
|
-
* Returns null if git is unavailable. Each list is sorted.
|
|
39
|
-
* 5-second timeout per command prevents hanging on large repos. */
|
|
40
|
-
export function captureGitFileState() {
|
|
41
|
-
try {
|
|
42
|
-
const trackedOut = execSync("git diff --name-only", {
|
|
43
|
-
encoding: "utf-8",
|
|
44
|
-
timeout: 5000,
|
|
45
|
-
stdio: ["ignore", "pipe", "ignore"],
|
|
46
|
-
});
|
|
47
|
-
const stagedOut = execSync("git diff --cached --name-only", {
|
|
48
|
-
encoding: "utf-8",
|
|
49
|
-
timeout: 5000,
|
|
50
|
-
stdio: ["ignore", "pipe", "ignore"],
|
|
51
|
-
});
|
|
52
|
-
const untrackedOut = execSync("git ls-files --others --exclude-standard", {
|
|
53
|
-
encoding: "utf-8",
|
|
54
|
-
timeout: 5000,
|
|
55
|
-
stdio: ["ignore", "pipe", "ignore"],
|
|
56
|
-
});
|
|
57
|
-
return {
|
|
58
|
-
tracked: trackedOut.trim().split("\n").filter(f => f.length > 0).sort(),
|
|
59
|
-
staged: stagedOut.trim().split("\n").filter(f => f.length > 0).sort(),
|
|
60
|
-
untracked: untrackedOut.trim().split("\n").filter(f => f.length > 0).sort(),
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
catch {
|
|
64
|
-
return null;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
/** v1.16: Capture the current set of modified files according to git.
|
|
68
|
-
* Returns a sorted array of relative file paths, or null if git is unavailable.
|
|
69
|
-
* Delegates to `git diff --name-only` — no staging or committing.
|
|
70
|
-
* 5-second timeout prevents hanging on large repos.
|
|
71
|
-
* @deprecated v1.17 — Use captureGitFileState() for full staged/untracked coverage. */
|
|
72
|
-
export function captureGitModifiedFiles() {
|
|
73
|
-
const state = captureGitFileState();
|
|
74
|
-
if (!state)
|
|
75
|
-
return null;
|
|
76
|
-
// Merge all categories into a single sorted list (backward compat)
|
|
77
|
-
return [...new Set([...state.tracked, ...state.staged, ...state.untracked])].sort();
|
|
78
|
-
}
|
|
79
41
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
80
42
|
// Individual checks — each returns a VerificationFlag or null
|
|
81
43
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
@@ -224,31 +186,30 @@ function checkRetractFreshConstraint(selfEval, prevSelfEval, currentRound) {
|
|
|
224
186
|
}
|
|
225
187
|
return null;
|
|
226
188
|
}
|
|
227
|
-
/** v1.
|
|
228
|
-
*
|
|
229
|
-
|
|
230
|
-
function checkFilesIntegrity(selfEval, runtimeFilesChanged) {
|
|
231
|
-
if (!runtimeFilesChanged)
|
|
232
|
-
return null; // git unavailable, skip
|
|
189
|
+
/** v1.18: Cross-validate agent-reported files_changed against git evidence
|
|
190
|
+
* from the configured evidence providers (ProviderSnapshot array). */
|
|
191
|
+
function checkEvidenceIntegrity(selfEval, evidenceSnapshots) {
|
|
233
192
|
if (!selfEval.execution_evidence)
|
|
234
|
-
return null;
|
|
193
|
+
return null;
|
|
194
|
+
if (evidenceSnapshots.length === 0)
|
|
195
|
+
return null;
|
|
196
|
+
const gitSnap = evidenceSnapshots.find((s) => s.provider === "git");
|
|
197
|
+
if (!gitSnap)
|
|
198
|
+
return null;
|
|
235
199
|
const reported = [...selfEval.execution_evidence.files_changed].sort();
|
|
236
|
-
const actual = [...
|
|
237
|
-
// Both empty → agent honestly reports no changes
|
|
200
|
+
const actual = [...gitSnap.files].sort();
|
|
238
201
|
if (reported.length === 0 && actual.length === 0)
|
|
239
202
|
return null;
|
|
240
|
-
// Agent says no files, but git shows changes
|
|
241
203
|
if (reported.length === 0 && actual.length > 0) {
|
|
242
204
|
return makeVerificationFlag({
|
|
243
205
|
severity: "warn",
|
|
244
206
|
field: "files_changed",
|
|
245
|
-
check: "
|
|
246
|
-
detail: `Agent reported no files changed but
|
|
207
|
+
check: "evidence_integrity",
|
|
208
|
+
detail: `Agent reported no files changed but evidence shows: ${actual.join(", ")}`,
|
|
247
209
|
});
|
|
248
210
|
}
|
|
249
|
-
|
|
250
|
-
const
|
|
251
|
-
const missedFiles = actual.filter(f => !reported.includes(f));
|
|
211
|
+
const ghostFiles = reported.filter((f) => !actual.includes(f));
|
|
212
|
+
const missedFiles = actual.filter((f) => !reported.includes(f));
|
|
252
213
|
if (ghostFiles.length > 0 || missedFiles.length > 0) {
|
|
253
214
|
const parts = [];
|
|
254
215
|
if (ghostFiles.length > 0)
|
|
@@ -258,74 +219,8 @@ function checkFilesIntegrity(selfEval, runtimeFilesChanged) {
|
|
|
258
219
|
return makeVerificationFlag({
|
|
259
220
|
severity: "warn",
|
|
260
221
|
field: "files_changed",
|
|
261
|
-
check: "files_integrity",
|
|
262
|
-
detail: `Agent files_changed doesn't match git: ${parts.join("; ")}`,
|
|
263
|
-
});
|
|
264
|
-
}
|
|
265
|
-
return null;
|
|
266
|
-
}
|
|
267
|
-
/** v1.18: Cross-validate agent-reported files_changed against evidence
|
|
268
|
-
* snapshots from all configured providers.
|
|
269
|
-
*
|
|
270
|
-
* For the git provider: compares agent's execution_evidence.files_changed
|
|
271
|
-
* against the git snapshot's merged file list (same logic as
|
|
272
|
-
* checkFilesIntegrity but driven by ProviderSnapshot instead of
|
|
273
|
-
* raw string array).
|
|
274
|
-
*
|
|
275
|
-
* For other providers: contributes an informational flag noting the
|
|
276
|
-
* provider ran but no structural cross-check is implemented yet. */
|
|
277
|
-
function checkEvidenceIntegrity(selfEval, evidenceSnapshots) {
|
|
278
|
-
if (!selfEval.execution_evidence)
|
|
279
|
-
return null;
|
|
280
|
-
if (evidenceSnapshots.length === 0)
|
|
281
|
-
return null;
|
|
282
|
-
// Git provider cross-validation
|
|
283
|
-
const gitSnap = evidenceSnapshots.find((s) => s.provider === "git");
|
|
284
|
-
if (gitSnap) {
|
|
285
|
-
const reported = [...selfEval.execution_evidence.files_changed].sort();
|
|
286
|
-
const actual = [...gitSnap.files].sort();
|
|
287
|
-
if (reported.length === 0 && actual.length === 0) {
|
|
288
|
-
// Both empty — git is clean. Fall through to the
|
|
289
|
-
// non-git informational flag below instead of returning null early.
|
|
290
|
-
}
|
|
291
|
-
else if (reported.length === 0 && actual.length > 0) {
|
|
292
|
-
return makeVerificationFlag({
|
|
293
|
-
severity: "warn",
|
|
294
|
-
field: "files_changed",
|
|
295
|
-
check: "evidence_integrity",
|
|
296
|
-
detail: `Agent reported no files changed but evidence shows: ${actual.join(", ")}`,
|
|
297
|
-
});
|
|
298
|
-
}
|
|
299
|
-
else {
|
|
300
|
-
const ghostFiles = reported.filter((f) => !actual.includes(f));
|
|
301
|
-
const missedFiles = actual.filter((f) => !reported.includes(f));
|
|
302
|
-
if (ghostFiles.length > 0 || missedFiles.length > 0) {
|
|
303
|
-
const parts = [];
|
|
304
|
-
if (ghostFiles.length > 0)
|
|
305
|
-
parts.push(`unconfirmed: [${ghostFiles.join(", ")}]`);
|
|
306
|
-
if (missedFiles.length > 0)
|
|
307
|
-
parts.push(`unreported: [${missedFiles.join(", ")}]`);
|
|
308
|
-
return makeVerificationFlag({
|
|
309
|
-
severity: "warn",
|
|
310
|
-
field: "files_changed",
|
|
311
|
-
check: "evidence_integrity",
|
|
312
|
-
detail: `Agent files_changed doesn't match evidence: ${parts.join("; ")}`,
|
|
313
|
-
});
|
|
314
|
-
}
|
|
315
|
-
}
|
|
316
|
-
}
|
|
317
|
-
// Non-git providers: emit an informational flag so the agent knows
|
|
318
|
-
// which providers ran. Structural cross-validation for non-git
|
|
319
|
-
// providers is not yet implemented; the flag is informational only.
|
|
320
|
-
const nonGitProviders = evidenceSnapshots
|
|
321
|
-
.filter((s) => s.provider !== "git")
|
|
322
|
-
.map((s) => s.provider);
|
|
323
|
-
if (nonGitProviders.length > 0) {
|
|
324
|
-
return makeVerificationFlag({
|
|
325
|
-
severity: "info",
|
|
326
|
-
field: "execution_evidence",
|
|
327
222
|
check: "evidence_integrity",
|
|
328
|
-
detail: `
|
|
223
|
+
detail: `Agent files_changed doesn't match evidence: ${parts.join("; ")}`,
|
|
329
224
|
});
|
|
330
225
|
}
|
|
331
226
|
return null;
|
|
@@ -358,6 +253,217 @@ function checkRequiredCommandEvidence(selfEval, evidenceSnapshots) {
|
|
|
358
253
|
}
|
|
359
254
|
return null;
|
|
360
255
|
}
|
|
256
|
+
// ── Test output parsing ────────────────────────────────────────────────────
|
|
257
|
+
// jaccardSimilarity() imported from token-utils.ts (v2.1 — intent-action drift detection)
|
|
258
|
+
/** v2.1 (check 11): Compare the previous round's declared next_action with
|
|
259
|
+
* the current round's actual output_summary. Detect when the agent says it
|
|
260
|
+
* will do X but then does Y — silent drift without explanation.
|
|
261
|
+
*
|
|
262
|
+
* Only fires when both next_action and output_summary are non-empty.
|
|
263
|
+
* Uses configurable Jaccard token similarity threshold from policy. */
|
|
264
|
+
function checkIntentDrift(selfEval, prevSelfEval) {
|
|
265
|
+
if (!prevSelfEval?.next_action?.trim())
|
|
266
|
+
return null;
|
|
267
|
+
if (!selfEval.output_summary.trim())
|
|
268
|
+
return null;
|
|
269
|
+
const intent = prevSelfEval.next_action.trim();
|
|
270
|
+
const actual = selfEval.output_summary.trim();
|
|
271
|
+
const score = jaccardSimilarity(intent, actual);
|
|
272
|
+
const threshold = getPolicy().evolution.intent_drift_threshold;
|
|
273
|
+
if (score >= threshold)
|
|
274
|
+
return null;
|
|
275
|
+
return makeVerificationFlag({
|
|
276
|
+
severity: "warn",
|
|
277
|
+
field: "output_summary",
|
|
278
|
+
check: "intent_drift",
|
|
279
|
+
detail: `Declared intent was "${intent.slice(0, 120)}" ` +
|
|
280
|
+
`but actual output "${actual.slice(0, 120)}" — ` +
|
|
281
|
+
`similarity ${(score * 100).toFixed(0)}% below threshold ${(threshold * 100).toFixed(0)}%`,
|
|
282
|
+
});
|
|
283
|
+
}
|
|
284
|
+
/** Best-effort parse of test counts from common test-runner output formats.
|
|
285
|
+
*
|
|
286
|
+
* Scans the last 2000 characters of stdout (where summary lines typically
|
|
287
|
+
* appear) and tries patterns in descending specificity order. Returns null
|
|
288
|
+
* when the output format is unrecognized, stdout is empty, or a confident
|
|
289
|
+
* parse cannot be made.
|
|
290
|
+
*
|
|
291
|
+
* Recognized formats: Jest verbose/compact, Mocha, pytest/unittest, Go test,
|
|
292
|
+
* and PHPUnit OK summaries. */
|
|
293
|
+
export function parseTestOutput(stdout) {
|
|
294
|
+
if (!stdout)
|
|
295
|
+
return null;
|
|
296
|
+
const tail = stdout.length > 2000 ? stdout.slice(-2000) : stdout;
|
|
297
|
+
let match;
|
|
298
|
+
// 1. Jest verbose: "Tests: 1 failed, 8 passed, 9 total"
|
|
299
|
+
match = tail.match(/Tests:\s*(\d+)\s+failed,\s*(\d+)\s+passed,\s*(\d+)\s+total/i);
|
|
300
|
+
if (match) {
|
|
301
|
+
return { failed: Number(match[1]), passed: Number(match[2]), total: Number(match[3]), skipped: 0 };
|
|
302
|
+
}
|
|
303
|
+
// 2. Jest compact: "Tests: 8 passed, 9 total"
|
|
304
|
+
match = tail.match(/Tests:\s*(\d+)\s+passed,\s*(\d+)\s+total/i);
|
|
305
|
+
if (match) {
|
|
306
|
+
const passed = Number(match[1]);
|
|
307
|
+
const total = Number(match[2]);
|
|
308
|
+
return { passed, failed: total - passed, total, skipped: 0 };
|
|
309
|
+
}
|
|
310
|
+
// 3. Mocha: "8 passing" + optional "2 failing"
|
|
311
|
+
const mochaPass = tail.match(/(\d+)\s+passing/i);
|
|
312
|
+
if (mochaPass) {
|
|
313
|
+
const mochaFail = tail.match(/(\d+)\s+failing/i);
|
|
314
|
+
const passed = Number(mochaPass[1]);
|
|
315
|
+
const failed = mochaFail ? Number(mochaFail[1]) : 0;
|
|
316
|
+
return { passed, failed, total: passed + failed, skipped: 0 };
|
|
317
|
+
}
|
|
318
|
+
// 4. Go test: count "--- PASS:" and "--- FAIL:" lines
|
|
319
|
+
const goPassCount = (tail.match(/---\s+PASS:/g) || []).length;
|
|
320
|
+
const goFailCount = (tail.match(/---\s+FAIL:/g) || []).length;
|
|
321
|
+
if (goPassCount > 0 || goFailCount > 0) {
|
|
322
|
+
return { passed: goPassCount, failed: goFailCount, total: goPassCount + goFailCount, skipped: 0 };
|
|
323
|
+
}
|
|
324
|
+
// 5. pytest / unittest: "8 passed, 1 failed" or "8 passed"
|
|
325
|
+
match = tail.match(/(\d+)\s+passed[,;\s]+(\d+)\s+failed/i);
|
|
326
|
+
if (match) {
|
|
327
|
+
return { passed: Number(match[1]), failed: Number(match[2]), total: Number(match[1]) + Number(match[2]), skipped: 0 };
|
|
328
|
+
}
|
|
329
|
+
// pytest compact: "8 passed" (with a reasonable context hint)
|
|
330
|
+
match = tail.match(/(?:=\s+test session|\b(?:passed|failed)\b)/i);
|
|
331
|
+
if (match) {
|
|
332
|
+
const pCount = tail.match(/(\d+)\s+passed/i);
|
|
333
|
+
const fCount = tail.match(/(\d+)\s+failed/i);
|
|
334
|
+
if (pCount || fCount) {
|
|
335
|
+
const passed = pCount ? Number(pCount[1]) : 0;
|
|
336
|
+
const failed = fCount ? Number(fCount[1]) : 0;
|
|
337
|
+
return { passed, failed, total: passed + failed, skipped: 0 };
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
// 6. PHPUnit: "OK (8 tests, 16 assertions)"
|
|
341
|
+
match = tail.match(/OK\s*\((\d+)\s+tests?/i);
|
|
342
|
+
if (match) {
|
|
343
|
+
const total = Number(match[1]);
|
|
344
|
+
return { passed: total, failed: 0, total, skipped: 0 };
|
|
345
|
+
}
|
|
346
|
+
return null;
|
|
347
|
+
}
|
|
348
|
+
/** Cross-validate agent-reported test_results against command evidence output.
|
|
349
|
+
*
|
|
350
|
+
* For each command provider whose status is "passed" and output is not
|
|
351
|
+
* truncated, attempts to parse test counts from stdout. Mismatched counts
|
|
352
|
+
* produce a warn-level flag; failures hidden by the agent (reported 0 failed
|
|
353
|
+
* when the command shows >0) produce an error-level flag.
|
|
354
|
+
*
|
|
355
|
+
* Non-command evidence providers are skipped (no structural cross-check is
|
|
356
|
+
* defined for them yet). */
|
|
357
|
+
function checkCommandEvidenceIntegrity(selfEval, evidenceSnapshots) {
|
|
358
|
+
const reported = selfEval.execution_evidence?.test_results;
|
|
359
|
+
if (!reported)
|
|
360
|
+
return null;
|
|
361
|
+
for (const snapshot of evidenceSnapshots) {
|
|
362
|
+
if (snapshot.data.kind !== "command")
|
|
363
|
+
continue;
|
|
364
|
+
if (snapshot.data.status !== "passed")
|
|
365
|
+
continue;
|
|
366
|
+
if (snapshot.data.truncated === true)
|
|
367
|
+
continue;
|
|
368
|
+
const stdout = typeof snapshot.data.stdout === "string" ? snapshot.data.stdout : "";
|
|
369
|
+
const parsed = parseTestOutput(stdout);
|
|
370
|
+
if (!parsed)
|
|
371
|
+
continue;
|
|
372
|
+
const mismatches = [];
|
|
373
|
+
if (parsed.passed !== reported.passed) {
|
|
374
|
+
mismatches.push(`passed: reported ${reported.passed}, command shows ${parsed.passed}`);
|
|
375
|
+
}
|
|
376
|
+
if (parsed.failed !== reported.failed) {
|
|
377
|
+
mismatches.push(`failed: reported ${reported.failed}, command shows ${parsed.failed}`);
|
|
378
|
+
}
|
|
379
|
+
if (mismatches.length === 0) {
|
|
380
|
+
// Counts match exactly — evidence supports the agent's claim.
|
|
381
|
+
continue;
|
|
382
|
+
}
|
|
383
|
+
const name = typeof snapshot.data.commandName === "string"
|
|
384
|
+
? snapshot.data.commandName
|
|
385
|
+
: snapshot.provider;
|
|
386
|
+
// Agent hides failures → error. Other mismatch → warn.
|
|
387
|
+
const severity = parsed.failed > 0 && reported.failed === 0 ? "error" : "warn";
|
|
388
|
+
return makeVerificationFlag({
|
|
389
|
+
severity,
|
|
390
|
+
field: "test_results",
|
|
391
|
+
check: "command_evidence_mismatch",
|
|
392
|
+
detail: `Agent test_results don't match "${name}" output: ${mismatches.join("; ")}`,
|
|
393
|
+
});
|
|
394
|
+
}
|
|
395
|
+
return null;
|
|
396
|
+
}
|
|
397
|
+
/** v2.2: Check if the agent's declared next_action aligns with any pending
|
|
398
|
+
* or in_progress sub-goal. When 3+ pending sub-goals exist but the agent
|
|
399
|
+
* plans work unrelated to any of them, it may indicate task drift.
|
|
400
|
+
* This is a warn-level advisory — the agent always owns prioritization. */
|
|
401
|
+
function checkSubGoalDrift(selfEval, prevSelfEval, vaultEntries, currentRound) {
|
|
402
|
+
const nextAction = selfEval.next_action?.trim();
|
|
403
|
+
if (!nextAction)
|
|
404
|
+
return null;
|
|
405
|
+
// Reconstruct pending sub-goal descriptions from vault entries
|
|
406
|
+
const pendingSubGoals = new Set();
|
|
407
|
+
const completedOrCanceled = new Set();
|
|
408
|
+
for (const entry of vaultEntries) {
|
|
409
|
+
const emerged = Array.isArray(entry.emerged_subtasks)
|
|
410
|
+
? entry.emerged_subtasks.filter((v) => typeof v === "string")
|
|
411
|
+
: [];
|
|
412
|
+
for (const desc of emerged) {
|
|
413
|
+
pendingSubGoals.add(desc.trim());
|
|
414
|
+
}
|
|
415
|
+
const done = Array.isArray(entry.completed_subtasks)
|
|
416
|
+
? entry.completed_subtasks.filter((v) => typeof v === "string")
|
|
417
|
+
: [];
|
|
418
|
+
for (const desc of done) {
|
|
419
|
+
completedOrCanceled.add(desc.trim());
|
|
420
|
+
}
|
|
421
|
+
const canceled = Array.isArray(entry.canceled_subtasks)
|
|
422
|
+
? entry.canceled_subtasks.filter((v) => typeof v === "string")
|
|
423
|
+
: [];
|
|
424
|
+
for (const desc of canceled) {
|
|
425
|
+
completedOrCanceled.add(desc.trim());
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
// Also process current selfEval
|
|
429
|
+
for (const desc of selfEval.emerged_subtasks ?? []) {
|
|
430
|
+
pendingSubGoals.add(desc.trim());
|
|
431
|
+
}
|
|
432
|
+
for (const desc of selfEval.completed_subtasks ?? []) {
|
|
433
|
+
completedOrCanceled.add(desc.trim());
|
|
434
|
+
}
|
|
435
|
+
for (const desc of selfEval.canceled_subtasks ?? []) {
|
|
436
|
+
completedOrCanceled.add(desc.trim());
|
|
437
|
+
}
|
|
438
|
+
// Remove completed/canceled from pending
|
|
439
|
+
for (const desc of completedOrCanceled) {
|
|
440
|
+
pendingSubGoals.delete(desc);
|
|
441
|
+
}
|
|
442
|
+
// Need at least 3 pending sub-goals for the check to be meaningful
|
|
443
|
+
if (pendingSubGoals.size < 3)
|
|
444
|
+
return null;
|
|
445
|
+
// Check if next_action aligns with any pending sub-goal
|
|
446
|
+
let aligns = false;
|
|
447
|
+
for (const sg of pendingSubGoals) {
|
|
448
|
+
const score = jaccardSimilarity(nextAction, sg);
|
|
449
|
+
if (score >= getPolicy().evolution.subgoal_drift_alignment_threshold) {
|
|
450
|
+
aligns = true;
|
|
451
|
+
break;
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
if (!aligns) {
|
|
455
|
+
const sample = [...pendingSubGoals].slice(0, 3).join(", ");
|
|
456
|
+
return makeVerificationFlag({
|
|
457
|
+
severity: "warn",
|
|
458
|
+
field: "next_action",
|
|
459
|
+
check: "subgoal_drift",
|
|
460
|
+
detail: `Agent's next_action doesn't align with any of ${pendingSubGoals.size} pending sub-goals. ` +
|
|
461
|
+
`Pending: ${sample}… Consider completing existing sub-goals before starting new work, ` +
|
|
462
|
+
`or cancel outdated sub-goals via canceled_subtasks.`,
|
|
463
|
+
});
|
|
464
|
+
}
|
|
465
|
+
return null;
|
|
466
|
+
}
|
|
361
467
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
362
468
|
// Main entry point
|
|
363
469
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
@@ -368,14 +474,10 @@ function checkRequiredCommandEvidence(selfEval, evidenceSnapshots) {
|
|
|
368
474
|
* @param vaultEntries Vault entries for this loop (non-feedback only).
|
|
369
475
|
* @param prevSelfEval The agent's self-evaluation from the previous round
|
|
370
476
|
* (null for round 1).
|
|
371
|
-
* @param runtimeFilesChanged v1.16: Files detected as changed by git diff between
|
|
372
|
-
* before/after execute. null if git is unavailable.
|
|
373
|
-
* Used by checkFilesIntegrity to cross-validate
|
|
374
|
-
* agent-reported files_changed against reality.
|
|
375
477
|
* @param evidenceSnapshots v1.18: Evidence snapshots from configured providers.
|
|
376
478
|
* Used by checkEvidenceIntegrity for multi-provider
|
|
377
479
|
* cross-validation. Defaults to empty array. */
|
|
378
|
-
export function verifySelfEvaluation(selfEval, currentRound, vaultEntries, prevSelfEval = null,
|
|
480
|
+
export function verifySelfEvaluation(selfEval, currentRound, vaultEntries, prevSelfEval = null, evidenceSnapshots = []) {
|
|
379
481
|
const flags = [];
|
|
380
482
|
// Collect violations from all previous vault entries for duplicate-discovery
|
|
381
483
|
// and other checks that need deeper history.
|
|
@@ -392,11 +494,15 @@ export function verifySelfEvaluation(selfEval, currentRound, vaultEntries, prevS
|
|
|
392
494
|
() => checkDuplicateConstraintDiscovery(selfEval, prevSelfEval, olderViolations),
|
|
393
495
|
() => checkRecurringViolation(selfEval, prevSelfEval, vaultEntries, currentRound),
|
|
394
496
|
() => checkRetractFreshConstraint(selfEval, prevSelfEval, currentRound),
|
|
395
|
-
// v1.
|
|
396
|
-
() => checkFilesIntegrity(selfEval, runtimeFilesChanged),
|
|
397
|
-
// v1.18: Cross-validate against evidence snapshots from all providers
|
|
497
|
+
// v1.18: Cross-validate agent-reported files_changed against git evidence
|
|
398
498
|
() => checkEvidenceIntegrity(selfEval, evidenceSnapshots),
|
|
399
499
|
() => checkRequiredCommandEvidence(selfEval, evidenceSnapshots),
|
|
500
|
+
// v2.0: Cross-validate agent-reported test_results against command output
|
|
501
|
+
() => checkCommandEvidenceIntegrity(selfEval, evidenceSnapshots),
|
|
502
|
+
// v2.1: Detect intent-action drift — agent said X but did Y
|
|
503
|
+
() => checkIntentDrift(selfEval, prevSelfEval),
|
|
504
|
+
// v2.2: Detect sub-goal drift — next_action doesn't align with pending sub-goals
|
|
505
|
+
() => checkSubGoalDrift(selfEval, prevSelfEval, vaultEntries, currentRound),
|
|
400
506
|
];
|
|
401
507
|
for (const run of checks) {
|
|
402
508
|
const flag = run();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verification-gate.js","sourceRoot":"","sources":["../src/verification-gate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"verification-gate.js","sourceRoot":"","sources":["../src/verification-gate.ts"],"names":[],"mappings":"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"}
|
package/loop_policy.json
CHANGED
|
@@ -1,22 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": "2",
|
|
3
3
|
"constraints": { "retire_window": 3 },
|
|
4
|
-
"summary": { "window": 5, "health_check_interval": 1 },
|
|
5
|
-
"engine": { "feedback_flush_interval": 5, "max_circuit_breaker": 3 },
|
|
6
|
-
"runtime": {
|
|
7
|
-
"max_rounds": 20,
|
|
8
|
-
"round_timeout_ms": 600000,
|
|
9
|
-
"heartbeat_interval_ms": 30000,
|
|
10
|
-
"stall_grace_ms": 300000,
|
|
11
|
-
"max_consecutive_errors": 3,
|
|
12
|
-
"pause_double_tap_ms": 3000
|
|
13
|
-
},
|
|
4
|
+
"summary": { "window": 5, "health_check_interval": 1, "milestone_interval": 20, "max_milestones": 10, "enable_loop_synthesis": true },
|
|
5
|
+
"engine": { "feedback_flush_interval": 5, "max_circuit_breaker": 3, "max_rounds": 20 },
|
|
14
6
|
"prompt": {
|
|
15
7
|
"injection_mode": "adaptive",
|
|
16
|
-
"full_refresh_interval":
|
|
8
|
+
"full_refresh_interval": 0,
|
|
17
9
|
"l0_max_chars": 3000,
|
|
18
10
|
"l1_max_chars": 7000,
|
|
19
11
|
"l2_max_chars": 18000,
|
|
12
|
+
"l2_adaptive_enabled": true,
|
|
13
|
+
"l2_adaptive_round_factor": 200,
|
|
14
|
+
"l2_adaptive_milestone_factor": 1000,
|
|
15
|
+
"l2_adaptive_max_chars": 40000,
|
|
16
|
+
"l2_adaptive_subgoal_factor": 100,
|
|
20
17
|
"base_prompt_version": "2.0.0"
|
|
21
18
|
},
|
|
22
19
|
"backend": { "root_dir": ".loopforge" },
|
|
@@ -26,7 +23,19 @@
|
|
|
26
23
|
"max_objective_versions": 10,
|
|
27
24
|
"progress_stall_threshold": 0.05,
|
|
28
25
|
"progress_stall_rounds": 2,
|
|
29
|
-
"progress_mismatch_threshold": 0.3
|
|
26
|
+
"progress_mismatch_threshold": 0.3,
|
|
27
|
+
"criteria_dedup_threshold": 0.45,
|
|
28
|
+
"subgoal_dedup_threshold": 0.6,
|
|
29
|
+
"subgoal_match_threshold": 0.5,
|
|
30
|
+
"subgoal_auto_in_progress_threshold": 0.4,
|
|
31
|
+
"intent_drift_threshold": 0.15,
|
|
32
|
+
"subgoal_auto_complete_threshold": 0.4,
|
|
33
|
+
"constraint_match_threshold": 0.5,
|
|
34
|
+
"subgoal_drift_alignment_threshold": 0.3,
|
|
35
|
+
"subgoal_stale_rounds": 10,
|
|
36
|
+
"max_subgoals_in_prompt": 10,
|
|
37
|
+
"max_done_subgoals_in_prompt": 5,
|
|
38
|
+
"constraint_inactive_rounds": 15
|
|
30
39
|
},
|
|
31
40
|
"checkpoint": { "max_carried_constraints": 10, "outcome_max_chars": 200 },
|
|
32
41
|
"state_file": {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "loopforge",
|
|
3
|
-
"version": "2.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "2.6.0",
|
|
4
|
+
"description": "Durable cognitive infrastructure for multi-session AI coding tasks — hierarchical summaries, structured sub-goal tracking, time-aware constraint decay, and adaptive prompt budgets for 100+ round agent loops.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
7
|
"types": "./dist/index.d.ts",
|