loopforge 3.9.1 → 3.9.4

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 (115) hide show
  1. package/README.md +11 -8
  2. package/dist/canonical-state.d.ts +39 -1
  3. package/dist/canonical-state.d.ts.map +1 -1
  4. package/dist/canonical-state.js +114 -32
  5. package/dist/canonical-state.js.map +1 -1
  6. package/dist/committed-round.d.ts +27 -4
  7. package/dist/committed-round.d.ts.map +1 -1
  8. package/dist/committed-round.js +87 -14
  9. package/dist/committed-round.js.map +1 -1
  10. package/dist/enforcement-gate.d.ts +9 -32
  11. package/dist/enforcement-gate.d.ts.map +1 -1
  12. package/dist/enforcement-gate.js +9 -122
  13. package/dist/enforcement-gate.js.map +1 -1
  14. package/dist/engine.d.ts.map +1 -1
  15. package/dist/engine.js +13 -2
  16. package/dist/engine.js.map +1 -1
  17. package/dist/explain.d.ts +1 -0
  18. package/dist/explain.d.ts.map +1 -1
  19. package/dist/explain.js +1 -0
  20. package/dist/explain.js.map +1 -1
  21. package/dist/files-reconciliation.d.ts +18 -0
  22. package/dist/files-reconciliation.d.ts.map +1 -0
  23. package/dist/files-reconciliation.js +59 -0
  24. package/dist/files-reconciliation.js.map +1 -0
  25. package/dist/index.d.ts +1 -1
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js.map +1 -1
  28. package/dist/loop-compiler.d.ts +17 -1
  29. package/dist/loop-compiler.d.ts.map +1 -1
  30. package/dist/loop-compiler.js +220 -119
  31. package/dist/loop-compiler.js.map +1 -1
  32. package/dist/mcp/round-lifecycle.d.ts +31 -1
  33. package/dist/mcp/round-lifecycle.d.ts.map +1 -1
  34. package/dist/mcp/round-lifecycle.js +102 -60
  35. package/dist/mcp/round-lifecycle.js.map +1 -1
  36. package/dist/mcp/server.d.ts +5 -0
  37. package/dist/mcp/server.d.ts.map +1 -1
  38. package/dist/mcp/server.js +19 -1
  39. package/dist/mcp/server.js.map +1 -1
  40. package/dist/mcp/session.d.ts.map +1 -1
  41. package/dist/mcp/session.js +23 -5
  42. package/dist/mcp/session.js.map +1 -1
  43. package/dist/mcp/submission-boundary.d.ts +1 -1
  44. package/dist/mcp/submission-boundary.d.ts.map +1 -1
  45. package/dist/mcp/submission-boundary.js +31 -8
  46. package/dist/mcp/submission-boundary.js.map +1 -1
  47. package/dist/mcp/tools.d.ts.map +1 -1
  48. package/dist/mcp/tools.js +62 -6
  49. package/dist/mcp/tools.js.map +1 -1
  50. package/dist/policy-metrics.d.ts +4 -0
  51. package/dist/policy-metrics.d.ts.map +1 -1
  52. package/dist/policy-metrics.js +17 -3
  53. package/dist/policy-metrics.js.map +1 -1
  54. package/dist/policy.d.ts +5 -2
  55. package/dist/policy.d.ts.map +1 -1
  56. package/dist/policy.js +2 -2
  57. package/dist/policy.js.map +1 -1
  58. package/dist/prompt-assembler.d.ts +8 -3
  59. package/dist/prompt-assembler.d.ts.map +1 -1
  60. package/dist/prompt-assembler.js +233 -240
  61. package/dist/prompt-assembler.js.map +1 -1
  62. package/dist/prompt-coverage.d.ts +45 -0
  63. package/dist/prompt-coverage.d.ts.map +1 -0
  64. package/dist/prompt-coverage.js +84 -0
  65. package/dist/prompt-coverage.js.map +1 -0
  66. package/dist/prompt-freshness.d.ts +36 -0
  67. package/dist/prompt-freshness.d.ts.map +1 -0
  68. package/dist/prompt-freshness.js +83 -0
  69. package/dist/prompt-freshness.js.map +1 -0
  70. package/dist/prompt-policy.d.ts +5 -2
  71. package/dist/prompt-policy.d.ts.map +1 -1
  72. package/dist/prompt-policy.js +10 -7
  73. package/dist/prompt-policy.js.map +1 -1
  74. package/dist/protocol.d.ts +70 -8
  75. package/dist/protocol.d.ts.map +1 -1
  76. package/dist/protocol.js +7 -1
  77. package/dist/protocol.js.map +1 -1
  78. package/dist/round-coordinator.d.ts +4 -2
  79. package/dist/round-coordinator.d.ts.map +1 -1
  80. package/dist/round-coordinator.js +7 -7
  81. package/dist/round-coordinator.js.map +1 -1
  82. package/dist/round-facts.d.ts.map +1 -1
  83. package/dist/round-facts.js +9 -3
  84. package/dist/round-facts.js.map +1 -1
  85. package/dist/round-transaction.d.ts.map +1 -1
  86. package/dist/round-transaction.js +19 -1
  87. package/dist/round-transaction.js.map +1 -1
  88. package/dist/self-eval.d.ts +23 -7
  89. package/dist/self-eval.d.ts.map +1 -1
  90. package/dist/self-eval.js +88 -16
  91. package/dist/self-eval.js.map +1 -1
  92. package/dist/submission-guidance.d.ts +36 -4
  93. package/dist/submission-guidance.d.ts.map +1 -1
  94. package/dist/submission-guidance.js +225 -78
  95. package/dist/submission-guidance.js.map +1 -1
  96. package/dist/submission-receipt.d.ts.map +1 -1
  97. package/dist/submission-receipt.js +6 -0
  98. package/dist/submission-receipt.js.map +1 -1
  99. package/dist/token-utils.d.ts +26 -0
  100. package/dist/token-utils.d.ts.map +1 -1
  101. package/dist/token-utils.js +56 -6
  102. package/dist/token-utils.js.map +1 -1
  103. package/dist/verification-actions.d.ts +13 -0
  104. package/dist/verification-actions.d.ts.map +1 -0
  105. package/dist/verification-actions.js +45 -0
  106. package/dist/verification-actions.js.map +1 -0
  107. package/dist/verification-gate.d.ts +5 -4
  108. package/dist/verification-gate.d.ts.map +1 -1
  109. package/dist/verification-gate.js +32 -45
  110. package/dist/verification-gate.js.map +1 -1
  111. package/dist/version.d.ts +1 -1
  112. package/dist/version.js +1 -1
  113. package/loop_policy.json +58 -58
  114. package/package.json +68 -68
  115. package/skills/perception/SKILL.md +35 -11
@@ -16,6 +16,7 @@ import { deriveSubGoals } from "./subgoal-state.js";
16
16
  import { deriveEvidenceStatus } from "./verification-gate.js";
17
17
  import { fieldGuide } from "./submission-guidance.js";
18
18
  import { deriveFieldAccounting } from "./field-accounting.js";
19
+ import { deriveFilesReconciliation } from "./files-reconciliation.js";
19
20
  import { getPolicy } from "./policy.js";
20
21
  const HANDLING_PRIORITY = {
21
22
  "not_applied": 6,
@@ -190,6 +191,9 @@ export function deriveSubmissionReceipt(input) {
190
191
  const contractAfter = input.facts.contractAfter;
191
192
  // ── verification ───────────────────────────────────────────────────────
192
193
  const evidence = deriveEvidenceStatus(selfEval, input.evidenceDeltas);
194
+ const filesReconciliation = deriveFilesReconciliation(selfEval.execution_report ?? null, input.evidenceDeltas, {
195
+ attempted: input.submittedFields.includes("execution_report.files_changed"),
196
+ });
193
197
  return {
194
198
  round_id: input.snapshot.roundId,
195
199
  attempt: input.snapshot.attempt,
@@ -222,9 +226,11 @@ export function deriveSubmissionReceipt(input) {
222
226
  check: flag.check,
223
227
  severity: flag.severity,
224
228
  detail: flag.detail,
229
+ ...(flag.ref ? { ref: flag.ref } : {}),
225
230
  })),
226
231
  contract_items: input.contractItems,
227
232
  },
233
+ files_reconciliation: filesReconciliation,
228
234
  prompt: input.nextArtifact
229
235
  ? {
230
236
  level: input.nextArtifact.level,
@@ -1 +1 @@
1
- {"version":3,"file":"submission-receipt.js","sourceRoot":"","sources":["../src/submission-receipt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"submission-receipt.js","sourceRoot":"","sources":["../src/submission-receipt.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,10 @@
9
9
  */
10
10
  /** Filter null/undefined/empty strings, trim, and deduplicate via Set. */
11
11
  export declare function unique(values: Array<string | null | undefined>): string[];
12
+ /** v3.9.4: deduplicate by the SAME normalized-exact identity the stable ID
13
+ * derivation uses. `unique` is trim-only, so "Tests pass" and "tests pass"
14
+ * survived as two entries with one `cr-*` id. The first spelling wins. */
15
+ export declare function uniqueNormalized(values: Array<string | null | undefined>): string[];
12
16
  /** Narrow `unknown` to a non-array object. Used across storage, MCP, and
13
17
  * transaction modules to validate JSON-deserialized data before field access. */
14
18
  export declare function isRecord(value: unknown): value is Record<string, unknown>;
@@ -38,6 +42,23 @@ export declare function deriveCriterionId(text: string): string;
38
42
  /** The cr-XXXXXXXX shape — the ONE predicate every criterion-reference reader
39
43
  * uses (round-contract.ts kept an inline copy before v3.8.1). */
40
44
  export declare function isCriterionId(ref: string): boolean;
45
+ /** v3.9.2: ONE criterion identity rule for the compiler, the prompt and the
46
+ * submission boundary. A reference matches a criterion when it is the real
47
+ * cr- id or the exact normalized criterion text. Never similarity. */
48
+ export declare function criterionRefMatches(ref: string, criterion: string | {
49
+ id?: string;
50
+ text: string;
51
+ }): boolean;
52
+ /** v3.9.4: the stable identity of one machine finding for prompt coverage.
53
+ * It is a DERIVED audit key — never persisted as a second finding source and
54
+ * never read by compile/decision code. `(check, field, ref)` is the same
55
+ * subject vocabulary `RecurringFlag` groups on; JSON encoding keeps it
56
+ * unambiguous and deterministic. */
57
+ export declare function findingKey(flag: {
58
+ check: string;
59
+ field: string;
60
+ ref?: string;
61
+ }): string;
41
62
  /** Normalize one contract text field for identity purposes. */
42
63
  export declare function normalizeText(text: string): string;
43
64
  /** The contract-item fields that participate in rci-/rc- identity. Structural
@@ -64,6 +85,11 @@ export declare function deriveContractId(loopId: string, contract: Parameters<ty
64
85
  * Deliberately independent of the contract id: editing `work_item` or
65
86
  * `scope` must not invalidate every item id the agent already cited. */
66
87
  export declare function deriveContractItemId(item: ContractIdentityItem, duplicateOrdinal: number): string;
88
+ /** v3.9.4: the normalized content identity of ONE contract item (without the
89
+ * duplicate ordinal). Used by the strict declaration boundary to reject two
90
+ * semantically identical items, so an `rci-*` citation can never be
91
+ * ambiguous between restatements. */
92
+ export declare function canonicalContractItemText(item: ContractIdentityItem): string;
67
93
  /** v3.8: Assign ids to a proposal's items in declaration order. Items with
68
94
  * identical normalized content get distinct ids through their duplicate
69
95
  * ordinal. */
@@ -1 +1 @@
1
- {"version":3,"file":"token-utils.d.ts","sourceRoot":"","sources":["../src/token-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,0EAA0E;AAC1E,wBAAgB,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,GAAG,MAAM,EAAE,CAKzE;AAID;kFACkF;AAClF,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzE;AAID;;8DAE8D;AAC9D,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAKjD;AAID;;;;qCAIqC;AACrC,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKjD;AAED;;kBAEkB;AAClB,eAAO,MAAM,YAAY,QAAmC,CAAC;AAE7D;;;;;;;iBAOiB;AACjB,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;kEACkE;AAClE,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAElD;AAID,+DAA+D;AAC/D,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElD;AAED;;uDAEuD;AACvD,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED;;;oBAGoB;AACpB,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,EAAE,oBAAoB,EAAE,CAAC;CAC/B,GAAG,MAAM,CAYT;AAED,sDAAsD;AACtD,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAC,CAAC,CAAC,GACpD,MAAM,CAER;AAED;;yEAEyE;AACzE,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,oBAAoB,EAC1B,gBAAgB,EAAE,MAAM,GACvB,MAAM,CASR;AAED;;eAEe;AACf,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,aAAa,CAAC,oBAAoB,CAAC,GACzC,MAAM,EAAE,CAaV;AASD;;yEAEyE;AACzE,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAI5D"}
1
+ {"version":3,"file":"token-utils.d.ts","sourceRoot":"","sources":["../src/token-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,0EAA0E;AAC1E,wBAAgB,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,GAAG,MAAM,EAAE,CAKzE;AAED;;2EAE2E;AAC3E,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,GAAG,MAAM,EAAE,CAanF;AAID;kFACkF;AAClF,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzE;AAID;;8DAE8D;AAC9D,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAKjD;AAID;;;;qCAIqC;AACrC,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKjD;AAED;;kBAEkB;AAClB,eAAO,MAAM,YAAY,QAAmC,CAAC;AAE7D;;;;;;;iBAOiB;AACjB,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;kEACkE;AAClE,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAElD;AAED;;uEAEuE;AACvE,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,GAAG;IAAE,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAChD,OAAO,CAWT;AAED;;;;qCAIqC;AACrC,wBAAgB,UAAU,CAAC,IAAI,EAAE;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,GAAG,MAAM,CAET;AAID,+DAA+D;AAC/D,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElD;AAED;;uDAEuD;AACvD,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED;;;oBAGoB;AACpB,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,EAAE,oBAAoB,EAAE,CAAC;CAC/B,GAAG,MAAM,CAYT;AAED,sDAAsD;AACtD,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAC,CAAC,CAAC,GACpD,MAAM,CAER;AAED;;yEAEyE;AACzE,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,oBAAoB,EAC1B,gBAAgB,EAAE,MAAM,GACvB,MAAM,CASR;AAED;;;sCAGsC;AACtC,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,CAO5E;AAED;;eAEe;AACf,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,aAAa,CAAC,oBAAoB,CAAC,GACzC,MAAM,EAAE,CAQV;AASD;;yEAEyE;AACzE,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAI5D"}
@@ -16,6 +16,26 @@ export function unique(values) {
16
16
  .map((value) => value.trim())
17
17
  .filter(Boolean))];
18
18
  }
19
+ /** v3.9.4: deduplicate by the SAME normalized-exact identity the stable ID
20
+ * derivation uses. `unique` is trim-only, so "Tests pass" and "tests pass"
21
+ * survived as two entries with one `cr-*` id. The first spelling wins. */
22
+ export function uniqueNormalized(values) {
23
+ const seen = new Set();
24
+ const out = [];
25
+ for (const value of values) {
26
+ if (typeof value !== "string")
27
+ continue;
28
+ const text = value.trim();
29
+ if (!text)
30
+ continue;
31
+ const key = normalizeText(text);
32
+ if (seen.has(key))
33
+ continue;
34
+ seen.add(key);
35
+ out.push(text);
36
+ }
37
+ return out;
38
+ }
19
39
  // ── Type guard ──────────────────────────────────────────────────────────────
20
40
  /** Narrow `unknown` to a non-array object. Used across storage, MCP, and
21
41
  * transaction modules to validate JSON-deserialized data before field access. */
@@ -64,6 +84,29 @@ export function deriveCriterionId(text) {
64
84
  export function isCriterionId(ref) {
65
85
  return /^cr-[a-f0-9]{8}$/.test(ref);
66
86
  }
87
+ /** v3.9.2: ONE criterion identity rule for the compiler, the prompt and the
88
+ * submission boundary. A reference matches a criterion when it is the real
89
+ * cr- id or the exact normalized criterion text. Never similarity. */
90
+ export function criterionRefMatches(ref, criterion) {
91
+ const text = typeof criterion === "string" ? criterion : criterion.text;
92
+ const id = typeof criterion === "string"
93
+ ? deriveCriterionId(text)
94
+ : (criterion.id ?? deriveCriterionId(criterion.text));
95
+ if (isCriterionId(ref)) {
96
+ return isCriterionId(text) ? ref === text : ref === id;
97
+ }
98
+ if (isCriterionId(text))
99
+ return deriveCriterionId(ref) === text;
100
+ return normalizeText(ref) === normalizeText(text);
101
+ }
102
+ /** v3.9.4: the stable identity of one machine finding for prompt coverage.
103
+ * It is a DERIVED audit key — never persisted as a second finding source and
104
+ * never read by compile/decision code. `(check, field, ref)` is the same
105
+ * subject vocabulary `RecurringFlag` groups on; JSON encoding keeps it
106
+ * unambiguous and deterministic. */
107
+ export function findingKey(flag) {
108
+ return JSON.stringify([flag.check, flag.field, flag.ref ?? ""]);
109
+ }
67
110
  // ── v3.8: Contract identity (content-addressed, round-independent) ──────────
68
111
  /** Normalize one contract text field for identity purposes. */
69
112
  export function normalizeText(text) {
@@ -103,18 +146,25 @@ export function deriveContractItemId(item, duplicateOrdinal) {
103
146
  });
104
147
  return `rci-${deriveItemId(canonical)}`;
105
148
  }
149
+ /** v3.9.4: the normalized content identity of ONE contract item (without the
150
+ * duplicate ordinal). Used by the strict declaration boundary to reject two
151
+ * semantically identical items, so an `rci-*` citation can never be
152
+ * ambiguous between restatements. */
153
+ export function canonicalContractItemText(item) {
154
+ return JSON.stringify({
155
+ description: normalizeText(item.description),
156
+ criterion_refs: item.criterion_refs.map(normalizeText),
157
+ subgoal_refs: item.subgoal_refs.map(normalizeText),
158
+ verify_with: item.verify_with.map(normalizeText),
159
+ });
160
+ }
106
161
  /** v3.8: Assign ids to a proposal's items in declaration order. Items with
107
162
  * identical normalized content get distinct ids through their duplicate
108
163
  * ordinal. */
109
164
  export function deriveContractItemIds(items) {
110
165
  const seen = new Map();
111
166
  return items.map((item) => {
112
- const key = JSON.stringify({
113
- description: normalizeText(item.description),
114
- criterion_refs: item.criterion_refs.map(normalizeText),
115
- subgoal_refs: item.subgoal_refs.map(normalizeText),
116
- verify_with: item.verify_with.map(normalizeText),
117
- });
167
+ const key = canonicalContractItemText(item);
118
168
  const ordinal = seen.get(key) ?? 0;
119
169
  seen.set(key, ordinal + 1);
120
170
  return deriveContractItemId(item, ordinal);
@@ -1 +1 @@
1
- {"version":3,"file":"token-utils.js","sourceRoot":"","sources":["../src/token-utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"token-utils.js","sourceRoot":"","sources":["../src/token-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /** The ONE actionable instruction table for verification checks.
2
+ *
3
+ * Kept separate from the prompt assembler so the evaluation-field guidance
4
+ * can quote the same action without depending on a renderer. Keys are the
5
+ * plain check-name strings (NOT imported from verification-gate.ts — it
6
+ * already imports loop-compiler, which imports the prompt layer, so
7
+ * importing back would cycle). Full coverage of every CHECK_* constant is
8
+ * enforced by a test that iterates the verification-gate module's CHECK_
9
+ * exports; a new constant can never silently lack an action entry.
10
+ */
11
+ export declare const VERIFICATION_ACTIONS: Readonly<Record<string, string>>;
12
+ export declare function verificationActionFor(check: string): string;
13
+ //# sourceMappingURL=verification-actions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verification-actions.d.ts","sourceRoot":"","sources":["../src/verification-actions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAgDjE,CAAC;AAMF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE3D"}
@@ -0,0 +1,45 @@
1
+ /** The ONE actionable instruction table for verification checks.
2
+ *
3
+ * Kept separate from the prompt assembler so the evaluation-field guidance
4
+ * can quote the same action without depending on a renderer. Keys are the
5
+ * plain check-name strings (NOT imported from verification-gate.ts — it
6
+ * already imports loop-compiler, which imports the prompt layer, so
7
+ * importing back would cycle). Full coverage of every CHECK_* constant is
8
+ * enforced by a test that iterates the verification-gate module's CHECK_
9
+ * exports; a new constant can never silently lack an action entry.
10
+ */
11
+ export const VERIFICATION_ACTIONS = {
12
+ success_with_remaining_criteria: "Complete the remaining criteria before claiming success, or set success=false and report what remains.",
13
+ success_without_verified_evidence: "Back the success claim with machine-verifiable evidence: run tests or a required verification command and report the actual output. If you genuinely performed no work, provide execution_report and declare no_change_reason.",
14
+ outcome_success_contradiction: "Reconcile the declared outcome with the success flag and resubmit an honest evaluation.",
15
+ blocked_without_blocker: "State the concrete blocker, or drop the blocked outcome.",
16
+ retroactive_claim_bad_round: "Correct the referenced round number, or withdraw the retroactive claim.",
17
+ retroactive_claim_unverified: "Provide evidence for the retroactive claim, or withdraw it.",
18
+ duplicate_constraint_discovery: "Update the existing constraint entry instead of duplicating it.",
19
+ recurring_violation: "Explain why this violation keeps recurring and try a different approach — do not repeat the failed strategy.",
20
+ retract_fresh_constraint: "Justify the retraction explicitly, or restore the constraint.",
21
+ // 3.9.3: the reported-vs-observed fix is spelled out. The committed flag
22
+ // already carries the `unreported` / `unconfirmed` path sets; this is the
23
+ // action that turns the receipt's mismatch into a correct next report.
24
+ evidence_integrity: "Report only the net boundary change: add every machine-observed path you omitted, remove every path the machine did not observe, and include deletions.",
25
+ required_command_failed: "Re-run the required verification command and report its actual output before claiming success.",
26
+ command_evidence_mismatch: "Report the true command output and reconcile the mismatch.",
27
+ backtrack_workspace_not_restored: "Restore the skipped-round files and the expected git HEAD, then resubmit.",
28
+ criteria_claims_unverified: "Provide evidence for each claimed success criterion.",
29
+ // v3.3 — Round Contract checks (and the three v3.3 checks that predated
30
+ // this table entry and fell back to the generic action).
31
+ verification_entrypoint_modified: "Re-run the verification command on the changed entrypoint, or revert the entrypoint change and re-run.",
32
+ test_files_modified: "Re-run the verification command after the test-file changes and report the fresh output.",
33
+ round_scope_drift: "Revert the out-of-scope file changes, or close the active contract and declare the extended scope in a new proposal. Scope drift is a machine fact and is not waivable by explanation.",
34
+ // v3.8 — item model: claimed-but-unverified debt
35
+ contract_items_unverified: "Run the bound command(s) for each claimed item so they are observed passing, or report the item as remaining (or declare outcome=\"blocked\").",
36
+ contract_premature: "The ACTIVE contract is still open — restate it unchanged to continue it; a different contract is ignored until every item is verified or the round reports blocked.",
37
+ // v3.7.1 — opt-in gate layer: cited gates need an approved human decision
38
+ user_gate_unresolved: "The round cites a high-risk action without an approved human decision. Run loopforge_gate_check, present the approval question, call loopforge_gate_resolve after the human decides, and resubmit with the approved gate id in evaluation.gate_ids.",
39
+ };
40
+ /** Fallback for unmapped check names (forward-compat with future checks). */
41
+ const VERIFICATION_ACTION_FALLBACK = "Re-examine the flagged claim and correct your evaluation before resubmitting.";
42
+ export function verificationActionFor(check) {
43
+ return VERIFICATION_ACTIONS[check] ?? VERIFICATION_ACTION_FALLBACK;
44
+ }
45
+ //# sourceMappingURL=verification-actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verification-actions.js","sourceRoot":"","sources":["../src/verification-actions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAqC;IACpE,+BAA+B,EAC7B,wGAAwG;IAC1G,iCAAiC,EAC/B,gOAAgO;IAClO,6BAA6B,EAC3B,yFAAyF;IAC3F,uBAAuB,EACrB,0DAA0D;IAC5D,2BAA2B,EACzB,yEAAyE;IAC3E,4BAA4B,EAC1B,6DAA6D;IAC/D,8BAA8B,EAC5B,iEAAiE;IACnE,mBAAmB,EACjB,8GAA8G;IAChH,wBAAwB,EACtB,+DAA+D;IACjE,yEAAyE;IACzE,0EAA0E;IAC1E,uEAAuE;IACvE,kBAAkB,EAChB,yJAAyJ;IAC3J,uBAAuB,EACrB,gGAAgG;IAClG,yBAAyB,EACvB,4DAA4D;IAC9D,gCAAgC,EAC9B,2EAA2E;IAC7E,0BAA0B,EACxB,sDAAsD;IACxD,wEAAwE;IACxE,yDAAyD;IACzD,gCAAgC,EAC9B,wGAAwG;IAC1G,mBAAmB,EACjB,0FAA0F;IAC5F,iBAAiB,EACf,wLAAwL;IAC1L,iDAAiD;IACjD,yBAAyB,EACvB,gJAAgJ;IAClJ,kBAAkB,EAChB,qKAAqK;IACvK,0EAA0E;IAC1E,oBAAoB,EAClB,qPAAqP;CACxP,CAAC;AAEF,6EAA6E;AAC7E,MAAM,4BAA4B,GAChC,+EAA+E,CAAC;AAElF,MAAM,UAAU,qBAAqB,CAAC,KAAa;IACjD,OAAO,oBAAoB,CAAC,KAAK,CAAC,IAAI,4BAA4B,CAAC;AACrE,CAAC"}
@@ -100,9 +100,6 @@ export interface EvidenceStatus {
100
100
  commandVerified: boolean;
101
101
  /** Agent-reported tests_reported agree with a passed command's parsed stdout. */
102
102
  testsMachineBacked: boolean;
103
- /** Agent-reported files_changed equals the git change set exactly; null
104
- * when the machine change set is not observable. */
105
- reportedFilesMatch: boolean | null;
106
103
  }
107
104
  /** v3.2: Derive the machine-verification status of a round. The verification
108
105
  * capability is modeled explicitly (verified / unavailable / absent) instead
@@ -156,6 +153,10 @@ gateEntries?: VaultEntry[],
156
153
  * filesystem access); this function stays a pure function of its inputs. */
157
154
  entrypointDrift?: EntrypointDrift[], beforeEvidence?: MachineObservation[],
158
155
  /** v3.9: the restore point's own dirty files (undefined = never observed). */
159
- backtrackTargetDirty?: string[]): VerificationResult;
156
+ backtrackTargetDirty?: string[],
157
+ /** v3.9.4: whether the raw submission attempted
158
+ * `execution_report.files_changed` (from the persisted submittedFields
159
+ * manifest). Undefined falls back to "an execution report exists". */
160
+ filesReported?: boolean): VerificationResult;
160
161
  export {};
161
162
  //# sourceMappingURL=verification-gate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"verification-gate.d.ts","sourceRoot":"","sources":["../src/verification-gate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verification-gate.d.ts","sourceRoot":"","sources":["../src/verification-gate.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,7 @@
19
19
  * framed as declaration / execution / closure stages in their doc comments.
20
20
  */
21
21
  import { afterObservations, gitDeltaState } from "./evidence-provider.js";
22
+ import { deriveFilesReconciliation } from "./files-reconciliation.js";
22
23
  import { isPassedAfterObservation } from "./evidence-provider.js";
23
24
  import { getPolicy } from "./policy.js";
24
25
  import { makeVerificationFlag, makeVerificationResult } from "./protocol.js";
@@ -220,15 +221,6 @@ export function deriveEvidenceStatus(selfEval, evidenceDeltas) {
220
221
  parsed.failed === reported.failed &&
221
222
  parsed.skipped === reported.skipped;
222
223
  }
223
- // reportedFilesMatch: agent-reported files_changed equals the observed
224
- // change set. Unknown is null, not false.
225
- let reportedFilesMatch = null;
226
- if (git.state === "observed" && selfEval.execution_report) {
227
- const reportedSet = [...(selfEval.execution_report.files_changed ?? [])].sort();
228
- const actualSet = [...git.changedFiles].sort();
229
- reportedFilesMatch = reportedSet.length === actualSet.length &&
230
- reportedSet.every((file, index) => file === actualSet[index]);
231
- }
232
224
  // v3.3: git observation alone is no longer "verified" — the machine seeing
233
225
  // file changes is not the machine verifying success. Only a passed
234
226
  // after-phase command (observed by the runtime itself) upgrades a round.
@@ -246,7 +238,6 @@ export function deriveEvidenceStatus(selfEval, evidenceDeltas) {
246
238
  gitChangeState: git.state,
247
239
  commandVerified,
248
240
  testsMachineBacked,
249
- reportedFilesMatch,
250
241
  };
251
242
  }
252
243
  /** Per-round machine progress over decoded committed history. */
@@ -543,41 +534,27 @@ function checkRetractFreshConstraint(selfEval, prevSelfEval, currentRound) {
543
534
  }
544
535
  /** v1.18: Cross-validate agent-reported files_changed against git evidence
545
536
  * from the configured evidence providers (MachineObservation array). */
546
- function checkEvidenceIntegrity(selfEval, evidenceDeltas) {
547
- if (!selfEval.execution_report)
548
- return null;
549
- const git = gitDeltaState(evidenceDeltas);
550
- // An unknown change set cannot contradict the agent's report.
551
- if (git.state !== "observed")
552
- return null;
553
- const reported = [...(selfEval.execution_report.files_changed ?? [])].sort();
554
- const actual = [...git.changedFiles].sort();
555
- if (reported.length === 0 && actual.length === 0)
537
+ function checkEvidenceIntegrity(selfEval, evidenceDeltas,
538
+ /** v3.9.4: whether the raw submission named
539
+ * `execution_report.files_changed`. The receipt uses the SAME manifest, so
540
+ * the two projections can never disagree about an omitted report. */
541
+ filesReported) {
542
+ const reconciliation = deriveFilesReconciliation(selfEval.execution_report ?? null, evidenceDeltas, { attempted: filesReported });
543
+ if (reconciliation.status !== "mismatch")
556
544
  return null;
557
- if (reported.length === 0 && actual.length > 0) {
558
- return makeVerificationFlag({
559
- severity: "warn",
560
- field: "files_changed",
561
- check: CHECK_EVIDENCE_INTEGRITY,
562
- detail: `Agent reported no files changed but evidence shows: ${actual.join(", ")}`,
563
- });
545
+ const parts = [];
546
+ if (reconciliation.unreported.length > 0) {
547
+ parts.push(`unreported: [${reconciliation.unreported.join(", ")}]`);
564
548
  }
565
- const ghostFiles = reported.filter((f) => !actual.includes(f));
566
- const missedFiles = actual.filter((f) => !reported.includes(f));
567
- if (ghostFiles.length > 0 || missedFiles.length > 0) {
568
- const parts = [];
569
- if (ghostFiles.length > 0)
570
- parts.push(`unconfirmed: [${ghostFiles.join(", ")}]`);
571
- if (missedFiles.length > 0)
572
- parts.push(`unreported: [${missedFiles.join(", ")}]`);
573
- return makeVerificationFlag({
574
- severity: "warn",
575
- field: "files_changed",
576
- check: CHECK_EVIDENCE_INTEGRITY,
577
- detail: `Agent files_changed doesn't match evidence: ${parts.join("; ")}`,
578
- });
549
+ if (reconciliation.unconfirmed.length > 0) {
550
+ parts.push(`unconfirmed: [${reconciliation.unconfirmed.join(", ")}]`);
579
551
  }
580
- return null;
552
+ return makeVerificationFlag({
553
+ severity: "warn",
554
+ field: "files_changed",
555
+ check: CHECK_EVIDENCE_INTEGRITY,
556
+ detail: `Agent files_changed doesn't match evidence: ${parts.join("; ")}`,
557
+ });
581
558
  }
582
559
  /** A required, explicitly configured verification command is authoritative
583
560
  * when the Agent claims success. Optional commands remain observational. */
@@ -601,6 +578,7 @@ function checkRequiredCommandEvidence(selfEval, evidenceDeltas) {
601
578
  field: "execution_report",
602
579
  check: CHECK_REQUIRED_COMMAND_FAILED,
603
580
  detail: `Agent claims success but required command "${name}" ${String(status)}${exitCode}`,
581
+ ref: name,
604
582
  });
605
583
  }
606
584
  return null;
@@ -719,6 +697,7 @@ function checkCommandEvidenceIntegrity(selfEval, evidenceDeltas) {
719
697
  field: "tests_reported",
720
698
  check: CHECK_COMMAND_EVIDENCE_MISMATCH,
721
699
  detail: `Agent tests_reported don't match "${name}" output: ${mismatches.join("; ")}`,
700
+ ref: name,
722
701
  });
723
702
  }
724
703
  return null;
@@ -770,6 +749,7 @@ function checkVerificationDomainIntegrity(evidenceDeltas, drift) {
770
749
  : "") +
771
750
  "Keep the verification command stable or resubmit the same round with the " +
772
751
  "entrypoint unchanged.",
752
+ ref: snapshot.data.commandId,
773
753
  });
774
754
  }
775
755
  // Only when NO entrypoint was tampered does the test-file warn stand in.
@@ -786,6 +766,7 @@ function checkVerificationDomainIntegrity(evidenceDeltas, drift) {
786
766
  check: CHECK_TEST_FILES_MODIFIED,
787
767
  detail: `Test files changed in the same round command "${snapshot.data.commandId}" passed — ` +
788
768
  "confirm the tests still verify the task claims.",
769
+ ref: snapshot.data.commandId,
789
770
  });
790
771
  }
791
772
  return null;
@@ -971,9 +952,10 @@ function checkRoundScopeDrift(activeContract, evidenceDeltas) {
971
952
  function checkContractItemsUnverified(statuses) {
972
953
  if (statuses.insufficientCount === 0)
973
954
  return null;
955
+ // v3.9.4: EVERY insufficient item is named. The previous 3-item cap hid the
956
+ // rest of the debt from the one repair surface the agent reads.
974
957
  const unverified = statuses.items
975
958
  .filter((item) => item.status === "insufficient")
976
- .slice(0, 3)
977
959
  .map((item) => item.itemId);
978
960
  return makeVerificationFlag({
979
961
  severity: "warn",
@@ -1102,8 +1084,13 @@ gateEntries = [],
1102
1084
  * filesystem access); this function stays a pure function of its inputs. */
1103
1085
  entrypointDrift = [], beforeEvidence = [],
1104
1086
  /** v3.9: the restore point's own dirty files (undefined = never observed). */
1105
- backtrackTargetDirty) {
1087
+ backtrackTargetDirty,
1088
+ /** v3.9.4: whether the raw submission attempted
1089
+ * `execution_report.files_changed` (from the persisted submittedFields
1090
+ * manifest). Undefined falls back to "an execution report exists". */
1091
+ filesReported) {
1106
1092
  const flags = [];
1093
+ const filesReportedForGate = filesReported ?? (selfEval.execution_report != null);
1107
1094
  // Collect violations from all previous vault entries for duplicate-discovery
1108
1095
  // and other checks that need deeper history.
1109
1096
  const olderViolations = [];
@@ -1155,7 +1142,7 @@ backtrackTargetDirty) {
1155
1142
  () => checkRecurringViolation(selfEval, prevSelfEval, vaultEntries, currentRound),
1156
1143
  () => checkRetractFreshConstraint(selfEval, prevSelfEval, currentRound),
1157
1144
  // v1.18: Cross-validate agent-reported files_changed against git evidence
1158
- () => checkEvidenceIntegrity(selfEval, evidenceDeltas),
1145
+ () => checkEvidenceIntegrity(selfEval, evidenceDeltas, filesReportedForGate),
1159
1146
  () => checkRequiredCommandEvidence(selfEval, evidenceDeltas),
1160
1147
  // v2.0: Cross-validate agent-reported tests_reported against command output
1161
1148
  () => checkCommandEvidenceIntegrity(selfEval, evidenceDeltas),