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.
Files changed (111) hide show
  1. package/README.md +7 -5
  2. package/dist/backends/interface.d.ts +4 -3
  3. package/dist/backends/interface.d.ts.map +1 -1
  4. package/dist/backends/interface.js +4 -1
  5. package/dist/backends/interface.js.map +1 -1
  6. package/dist/canonical-state.d.ts +23 -2
  7. package/dist/canonical-state.d.ts.map +1 -1
  8. package/dist/canonical-state.js +90 -6
  9. package/dist/canonical-state.js.map +1 -1
  10. package/dist/cli.d.ts.map +1 -1
  11. package/dist/cli.js +6 -2
  12. package/dist/cli.js.map +1 -1
  13. package/dist/enforcement-gate.d.ts +1 -1
  14. package/dist/enforcement-gate.d.ts.map +1 -1
  15. package/dist/enforcement-gate.js +86 -7
  16. package/dist/enforcement-gate.js.map +1 -1
  17. package/dist/engine.d.ts +3 -33
  18. package/dist/engine.d.ts.map +1 -1
  19. package/dist/engine.js +127 -343
  20. package/dist/engine.js.map +1 -1
  21. package/dist/evidence-provider.d.ts +38 -5
  22. package/dist/evidence-provider.d.ts.map +1 -1
  23. package/dist/evidence-provider.js +132 -46
  24. package/dist/evidence-provider.js.map +1 -1
  25. package/dist/index.d.ts +10 -12
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +6 -9
  28. package/dist/index.js.map +1 -1
  29. package/dist/interop.d.ts +5 -0
  30. package/dist/interop.d.ts.map +1 -1
  31. package/dist/interop.js +5 -0
  32. package/dist/interop.js.map +1 -1
  33. package/dist/loop-compiler.d.ts.map +1 -1
  34. package/dist/loop-compiler.js +515 -50
  35. package/dist/loop-compiler.js.map +1 -1
  36. package/dist/loop-extras-parser.d.ts +82 -0
  37. package/dist/loop-extras-parser.d.ts.map +1 -0
  38. package/dist/loop-extras-parser.js +217 -0
  39. package/dist/loop-extras-parser.js.map +1 -0
  40. package/dist/loop-store.d.ts +26 -4
  41. package/dist/loop-store.d.ts.map +1 -1
  42. package/dist/loop-store.js +118 -8
  43. package/dist/loop-store.js.map +1 -1
  44. package/dist/mcp/server.js +1 -1
  45. package/dist/mcp/session.d.ts +29 -6
  46. package/dist/mcp/session.d.ts.map +1 -1
  47. package/dist/mcp/session.js +187 -161
  48. package/dist/mcp/session.js.map +1 -1
  49. package/dist/mcp/tools.d.ts.map +1 -1
  50. package/dist/mcp/tools.js +33 -5
  51. package/dist/mcp/tools.js.map +1 -1
  52. package/dist/observability.d.ts +5 -36
  53. package/dist/observability.d.ts.map +1 -1
  54. package/dist/observability.js +9 -79
  55. package/dist/observability.js.map +1 -1
  56. package/dist/policy-metrics.d.ts +1 -0
  57. package/dist/policy-metrics.d.ts.map +1 -1
  58. package/dist/policy-metrics.js +2 -0
  59. package/dist/policy-metrics.js.map +1 -1
  60. package/dist/policy.d.ts +58 -8
  61. package/dist/policy.d.ts.map +1 -1
  62. package/dist/policy.js +25 -12
  63. package/dist/policy.js.map +1 -1
  64. package/dist/prompt-assembler.d.ts.map +1 -1
  65. package/dist/prompt-assembler.js +129 -4
  66. package/dist/prompt-assembler.js.map +1 -1
  67. package/dist/protocol.d.ts +118 -87
  68. package/dist/protocol.d.ts.map +1 -1
  69. package/dist/protocol.js +40 -30
  70. package/dist/protocol.js.map +1 -1
  71. package/dist/replay.d.ts +0 -1
  72. package/dist/replay.d.ts.map +1 -1
  73. package/dist/replay.js +1 -87
  74. package/dist/replay.js.map +1 -1
  75. package/dist/round-coordinator.d.ts +4 -6
  76. package/dist/round-coordinator.d.ts.map +1 -1
  77. package/dist/round-coordinator.js +75 -80
  78. package/dist/round-coordinator.js.map +1 -1
  79. package/dist/round-driver.d.ts +1 -0
  80. package/dist/round-driver.d.ts.map +1 -1
  81. package/dist/round-driver.js +2 -0
  82. package/dist/round-driver.js.map +1 -1
  83. package/dist/round-transaction.d.ts.map +1 -1
  84. package/dist/round-transaction.js +2 -22
  85. package/dist/round-transaction.js.map +1 -1
  86. package/dist/run.d.ts +51 -0
  87. package/dist/run.d.ts.map +1 -0
  88. package/dist/run.js +200 -0
  89. package/dist/run.js.map +1 -0
  90. package/dist/self-eval.d.ts +23 -0
  91. package/dist/self-eval.d.ts.map +1 -0
  92. package/dist/self-eval.js +151 -0
  93. package/dist/self-eval.js.map +1 -0
  94. package/dist/storage.d.ts +3 -2
  95. package/dist/storage.d.ts.map +1 -1
  96. package/dist/storage.js +70 -68
  97. package/dist/storage.js.map +1 -1
  98. package/dist/token-utils.d.ts +22 -0
  99. package/dist/token-utils.d.ts.map +1 -0
  100. package/dist/token-utils.js +46 -0
  101. package/dist/token-utils.js.map +1 -0
  102. package/dist/verification-gate.d.ts +17 -23
  103. package/dist/verification-gate.d.ts.map +1 -1
  104. package/dist/verification-gate.js +241 -135
  105. package/dist/verification-gate.js.map +1 -1
  106. package/loop_policy.json +21 -12
  107. package/package.json +2 -2
  108. package/dist/runtime.d.ts +0 -94
  109. package/dist/runtime.d.ts.map +0 -1
  110. package/dist/runtime.js +0 -718
  111. 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 { execSync } from "node:child_process";
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
- const lineage = (entry.loop_lineage ?? {});
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.16: Check 7 — Agent-reported files_changed doesn't match git reality.
228
- * Only fires when execution_evidence is present (structured self-eval path)
229
- * AND runtimeFilesChanged is non-null (git is available). */
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; // heuristic fallback, skip
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 = [...runtimeFilesChanged].sort();
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: "files_integrity",
246
- detail: `Agent reported no files changed but git shows: ${actual.join(", ")}`,
207
+ check: "evidence_integrity",
208
+ detail: `Agent reported no files changed but evidence shows: ${actual.join(", ")}`,
247
209
  });
248
210
  }
249
- // Compare reported vs actual
250
- const ghostFiles = reported.filter(f => !actual.includes(f));
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: `Evidence providers ran: ${nonGitProviders.join(", ")}. Automated cross-validation of agent claims against these providers is not yet implemented.`,
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, runtimeFilesChanged = null, evidenceSnapshots = []) {
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.16: Cross-validate agent-reported files_changed against git reality
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": 5,
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.0.0",
4
- "description": "Cognitive State Runtime for AI coding agents — maintains persistent, evolvable cognitive state (objectives, constraints, evidence, decisions) across long-horizon agent loops.",
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",