loopforge 3.9.4 → 4.0.7

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 (283) hide show
  1. package/README.md +236 -112
  2. package/dist/audit.d.ts +73 -15
  3. package/dist/audit.d.ts.map +1 -1
  4. package/dist/audit.js +131 -61
  5. package/dist/audit.js.map +1 -1
  6. package/dist/canonical-state.d.ts +114 -40
  7. package/dist/canonical-state.d.ts.map +1 -1
  8. package/dist/canonical-state.js +276 -182
  9. package/dist/canonical-state.js.map +1 -1
  10. package/dist/cli.d.ts.map +1 -1
  11. package/dist/cli.js +41 -12
  12. package/dist/cli.js.map +1 -1
  13. package/dist/cognitive-governance.d.ts +0 -2
  14. package/dist/cognitive-governance.d.ts.map +1 -1
  15. package/dist/cognitive-governance.js +0 -4
  16. package/dist/cognitive-governance.js.map +1 -1
  17. package/dist/committed-round.d.ts +97 -156
  18. package/dist/committed-round.d.ts.map +1 -1
  19. package/dist/committed-round.js +223 -419
  20. package/dist/committed-round.js.map +1 -1
  21. package/dist/constraint-lifecycle.d.ts +73 -0
  22. package/dist/constraint-lifecycle.d.ts.map +1 -0
  23. package/dist/constraint-lifecycle.js +174 -0
  24. package/dist/constraint-lifecycle.js.map +1 -0
  25. package/dist/context-boundary.d.ts +83 -0
  26. package/dist/context-boundary.d.ts.map +1 -0
  27. package/dist/context-boundary.js +101 -0
  28. package/dist/context-boundary.js.map +1 -0
  29. package/dist/contract-items.d.ts +12 -8
  30. package/dist/contract-items.d.ts.map +1 -1
  31. package/dist/contract-items.js +31 -26
  32. package/dist/contract-items.js.map +1 -1
  33. package/dist/contract-requirement.d.ts +47 -0
  34. package/dist/contract-requirement.d.ts.map +1 -0
  35. package/dist/contract-requirement.js +51 -0
  36. package/dist/contract-requirement.js.map +1 -0
  37. package/dist/criterion-status.d.ts +35 -0
  38. package/dist/criterion-status.d.ts.map +1 -0
  39. package/dist/criterion-status.js +89 -0
  40. package/dist/criterion-status.js.map +1 -0
  41. package/dist/enforcement-gate.d.ts +26 -38
  42. package/dist/enforcement-gate.d.ts.map +1 -1
  43. package/dist/enforcement-gate.js +196 -319
  44. package/dist/enforcement-gate.js.map +1 -1
  45. package/dist/engine.d.ts +9 -103
  46. package/dist/engine.d.ts.map +1 -1
  47. package/dist/engine.js +27 -897
  48. package/dist/engine.js.map +1 -1
  49. package/dist/errors.d.ts +41 -0
  50. package/dist/errors.d.ts.map +1 -0
  51. package/dist/errors.js +69 -0
  52. package/dist/errors.js.map +1 -0
  53. package/dist/evidence-claims.d.ts +33 -31
  54. package/dist/evidence-claims.d.ts.map +1 -1
  55. package/dist/evidence-claims.js +58 -72
  56. package/dist/evidence-claims.js.map +1 -1
  57. package/dist/evidence-posture-view.d.ts +19 -0
  58. package/dist/evidence-posture-view.d.ts.map +1 -0
  59. package/dist/evidence-posture-view.js +116 -0
  60. package/dist/evidence-posture-view.js.map +1 -0
  61. package/dist/evidence-posture.d.ts +73 -0
  62. package/dist/evidence-posture.d.ts.map +1 -0
  63. package/dist/evidence-posture.js +281 -0
  64. package/dist/evidence-posture.js.map +1 -0
  65. package/dist/evidence-provider.d.ts +55 -37
  66. package/dist/evidence-provider.d.ts.map +1 -1
  67. package/dist/evidence-provider.js +182 -332
  68. package/dist/evidence-provider.js.map +1 -1
  69. package/dist/explain.d.ts +166 -27
  70. package/dist/explain.d.ts.map +1 -1
  71. package/dist/explain.js +372 -58
  72. package/dist/explain.js.map +1 -1
  73. package/dist/field-accounting.d.ts.map +1 -1
  74. package/dist/field-accounting.js +3 -22
  75. package/dist/field-accounting.js.map +1 -1
  76. package/dist/generate-schema.js +13 -8
  77. package/dist/generate-schema.js.map +1 -1
  78. package/dist/git-boundary.d.ts +128 -0
  79. package/dist/git-boundary.d.ts.map +1 -0
  80. package/dist/git-boundary.js +625 -0
  81. package/dist/git-boundary.js.map +1 -0
  82. package/dist/git-facts.d.ts +22 -0
  83. package/dist/git-facts.d.ts.map +1 -0
  84. package/dist/git-facts.js +29 -0
  85. package/dist/git-facts.js.map +1 -0
  86. package/dist/git-motion.d.ts +37 -0
  87. package/dist/git-motion.d.ts.map +1 -0
  88. package/dist/git-motion.js +59 -0
  89. package/dist/git-motion.js.map +1 -0
  90. package/dist/history.d.ts +44 -0
  91. package/dist/history.d.ts.map +1 -0
  92. package/dist/history.js +77 -0
  93. package/dist/history.js.map +1 -0
  94. package/dist/index.d.ts +19 -9
  95. package/dist/index.d.ts.map +1 -1
  96. package/dist/index.js +12 -4
  97. package/dist/index.js.map +1 -1
  98. package/dist/init.d.ts +16 -0
  99. package/dist/init.d.ts.map +1 -1
  100. package/dist/init.js +80 -14
  101. package/dist/init.js.map +1 -1
  102. package/dist/loop-compiler.d.ts +39 -23
  103. package/dist/loop-compiler.d.ts.map +1 -1
  104. package/dist/loop-compiler.js +368 -565
  105. package/dist/loop-compiler.js.map +1 -1
  106. package/dist/loop-store.d.ts +6 -5
  107. package/dist/loop-store.d.ts.map +1 -1
  108. package/dist/loop-store.js +153 -35
  109. package/dist/loop-store.js.map +1 -1
  110. package/dist/mcp/round-lifecycle.d.ts +255 -81
  111. package/dist/mcp/round-lifecycle.d.ts.map +1 -1
  112. package/dist/mcp/round-lifecycle.js +1552 -539
  113. package/dist/mcp/round-lifecycle.js.map +1 -1
  114. package/dist/mcp/server.d.ts.map +1 -1
  115. package/dist/mcp/server.js +42 -18
  116. package/dist/mcp/server.js.map +1 -1
  117. package/dist/mcp/session.d.ts +81 -39
  118. package/dist/mcp/session.d.ts.map +1 -1
  119. package/dist/mcp/session.js +956 -282
  120. package/dist/mcp/session.js.map +1 -1
  121. package/dist/mcp/submission-boundary.d.ts +23 -31
  122. package/dist/mcp/submission-boundary.d.ts.map +1 -1
  123. package/dist/mcp/submission-boundary.js +242 -92
  124. package/dist/mcp/submission-boundary.js.map +1 -1
  125. package/dist/mcp/submission-handle.d.ts +66 -0
  126. package/dist/mcp/submission-handle.d.ts.map +1 -0
  127. package/dist/mcp/submission-handle.js +173 -0
  128. package/dist/mcp/submission-handle.js.map +1 -0
  129. package/dist/mcp/tools.d.ts +17 -7
  130. package/dist/mcp/tools.d.ts.map +1 -1
  131. package/dist/mcp/tools.js +707 -244
  132. package/dist/mcp/tools.js.map +1 -1
  133. package/dist/open-question.d.ts +7 -0
  134. package/dist/open-question.d.ts.map +1 -0
  135. package/dist/open-question.js +14 -0
  136. package/dist/open-question.js.map +1 -0
  137. package/dist/policy-metrics.d.ts +31 -21
  138. package/dist/policy-metrics.d.ts.map +1 -1
  139. package/dist/policy-metrics.js +117 -64
  140. package/dist/policy-metrics.js.map +1 -1
  141. package/dist/policy.d.ts +11 -39
  142. package/dist/policy.d.ts.map +1 -1
  143. package/dist/policy.js +12 -12
  144. package/dist/policy.js.map +1 -1
  145. package/dist/progress.d.ts +45 -0
  146. package/dist/progress.d.ts.map +1 -0
  147. package/dist/progress.js +136 -0
  148. package/dist/progress.js.map +1 -0
  149. package/dist/prompt-assembler.d.ts +20 -6
  150. package/dist/prompt-assembler.d.ts.map +1 -1
  151. package/dist/prompt-assembler.js +475 -479
  152. package/dist/prompt-assembler.js.map +1 -1
  153. package/dist/prompt-coverage.d.ts +0 -6
  154. package/dist/prompt-coverage.d.ts.map +1 -1
  155. package/dist/prompt-coverage.js +4 -8
  156. package/dist/prompt-coverage.js.map +1 -1
  157. package/dist/prompt-freshness.d.ts +6 -17
  158. package/dist/prompt-freshness.d.ts.map +1 -1
  159. package/dist/prompt-freshness.js +27 -22
  160. package/dist/prompt-freshness.js.map +1 -1
  161. package/dist/prompt-policy.d.ts +14 -7
  162. package/dist/prompt-policy.d.ts.map +1 -1
  163. package/dist/prompt-policy.js +21 -5
  164. package/dist/prompt-policy.js.map +1 -1
  165. package/dist/protocol.d.ts +843 -424
  166. package/dist/protocol.d.ts.map +1 -1
  167. package/dist/protocol.js +73 -102
  168. package/dist/protocol.js.map +1 -1
  169. package/dist/recovery-guidance.d.ts +13 -0
  170. package/dist/recovery-guidance.d.ts.map +1 -0
  171. package/dist/recovery-guidance.js +15 -0
  172. package/dist/recovery-guidance.js.map +1 -0
  173. package/dist/recovery.d.ts +68 -0
  174. package/dist/recovery.d.ts.map +1 -0
  175. package/dist/recovery.js +234 -0
  176. package/dist/recovery.js.map +1 -0
  177. package/dist/replay.d.ts +42 -8
  178. package/dist/replay.d.ts.map +1 -1
  179. package/dist/replay.js +311 -84
  180. package/dist/replay.js.map +1 -1
  181. package/dist/result-facts.d.ts +45 -0
  182. package/dist/result-facts.d.ts.map +1 -0
  183. package/dist/result-facts.js +86 -0
  184. package/dist/result-facts.js.map +1 -0
  185. package/dist/round-contract.d.ts +38 -8
  186. package/dist/round-contract.d.ts.map +1 -1
  187. package/dist/round-contract.js +71 -31
  188. package/dist/round-contract.js.map +1 -1
  189. package/dist/round-coordinator.d.ts +41 -89
  190. package/dist/round-coordinator.d.ts.map +1 -1
  191. package/dist/round-coordinator.js +250 -267
  192. package/dist/round-coordinator.js.map +1 -1
  193. package/dist/round-driver.d.ts +56 -16
  194. package/dist/round-driver.d.ts.map +1 -1
  195. package/dist/round-driver.js +225 -39
  196. package/dist/round-driver.js.map +1 -1
  197. package/dist/round-facts.d.ts +33 -52
  198. package/dist/round-facts.d.ts.map +1 -1
  199. package/dist/round-facts.js +51 -160
  200. package/dist/round-facts.js.map +1 -1
  201. package/dist/round-guidance.d.ts +56 -0
  202. package/dist/round-guidance.d.ts.map +1 -0
  203. package/dist/round-guidance.js +161 -0
  204. package/dist/round-guidance.js.map +1 -0
  205. package/dist/round-outcome.d.ts +21 -0
  206. package/dist/round-outcome.d.ts.map +1 -0
  207. package/dist/round-outcome.js +31 -0
  208. package/dist/round-outcome.js.map +1 -0
  209. package/dist/round-transaction.d.ts +168 -21
  210. package/dist/round-transaction.d.ts.map +1 -1
  211. package/dist/round-transaction.js +837 -38
  212. package/dist/round-transaction.js.map +1 -1
  213. package/dist/self-eval.d.ts +37 -61
  214. package/dist/self-eval.d.ts.map +1 -1
  215. package/dist/self-eval.js +413 -392
  216. package/dist/self-eval.js.map +1 -1
  217. package/dist/storage.d.ts +16 -0
  218. package/dist/storage.d.ts.map +1 -1
  219. package/dist/storage.js +54 -4
  220. package/dist/storage.js.map +1 -1
  221. package/dist/subgoal-state.d.ts +2 -3
  222. package/dist/subgoal-state.d.ts.map +1 -1
  223. package/dist/subgoal-state.js +2 -3
  224. package/dist/subgoal-state.js.map +1 -1
  225. package/dist/submission-guidance.d.ts +29 -21
  226. package/dist/submission-guidance.d.ts.map +1 -1
  227. package/dist/submission-guidance.js +308 -260
  228. package/dist/submission-guidance.js.map +1 -1
  229. package/dist/submission-receipt.d.ts +16 -8
  230. package/dist/submission-receipt.d.ts.map +1 -1
  231. package/dist/submission-receipt.js +145 -51
  232. package/dist/submission-receipt.js.map +1 -1
  233. package/dist/token-utils.d.ts +28 -7
  234. package/dist/token-utils.d.ts.map +1 -1
  235. package/dist/token-utils.js +27 -11
  236. package/dist/token-utils.js.map +1 -1
  237. package/dist/transaction-identity.d.ts +9 -0
  238. package/dist/transaction-identity.d.ts.map +1 -0
  239. package/dist/transaction-identity.js +69 -0
  240. package/dist/transaction-identity.js.map +1 -0
  241. package/dist/verification-actions.d.ts.map +1 -1
  242. package/dist/verification-actions.js +10 -11
  243. package/dist/verification-actions.js.map +1 -1
  244. package/dist/verification-gate.d.ts +23 -47
  245. package/dist/verification-gate.d.ts.map +1 -1
  246. package/dist/verification-gate.js +202 -423
  247. package/dist/verification-gate.js.map +1 -1
  248. package/dist/version.d.ts +1 -1
  249. package/dist/version.js +1 -1
  250. package/dist/working-memory.d.ts +187 -0
  251. package/dist/working-memory.d.ts.map +1 -0
  252. package/dist/working-memory.js +767 -0
  253. package/dist/working-memory.js.map +1 -0
  254. package/dist/workspace-checkpoint.d.ts +88 -0
  255. package/dist/workspace-checkpoint.d.ts.map +1 -0
  256. package/dist/workspace-checkpoint.js +326 -0
  257. package/dist/workspace-checkpoint.js.map +1 -0
  258. package/dist/workspace-restore.d.ts +68 -0
  259. package/dist/workspace-restore.d.ts.map +1 -0
  260. package/dist/workspace-restore.js +604 -0
  261. package/dist/workspace-restore.js.map +1 -0
  262. package/dist/workspace.d.ts +0 -9
  263. package/dist/workspace.d.ts.map +1 -1
  264. package/dist/workspace.js +0 -17
  265. package/dist/workspace.js.map +1 -1
  266. package/loop_policy.json +4 -18
  267. package/package.json +68 -68
  268. package/skills/forge/SKILL.md +212 -0
  269. package/skills/forge/references/evidence-and-contracts.md +204 -0
  270. package/skills/forge/references/recovery-and-views.md +188 -0
  271. package/dist/cognitive-facts.d.ts +0 -30
  272. package/dist/cognitive-facts.d.ts.map +0 -1
  273. package/dist/cognitive-facts.js +0 -113
  274. package/dist/cognitive-facts.js.map +0 -1
  275. package/dist/loop-extras-parser.d.ts +0 -81
  276. package/dist/loop-extras-parser.d.ts.map +0 -1
  277. package/dist/loop-extras-parser.js +0 -213
  278. package/dist/loop-extras-parser.js.map +0 -1
  279. package/dist/loop-projection.d.ts +0 -6
  280. package/dist/loop-projection.d.ts.map +0 -1
  281. package/dist/loop-projection.js +0 -28
  282. package/dist/loop-projection.js.map +0 -1
  283. package/skills/perception/SKILL.md +0 -389
@@ -39,6 +39,10 @@ export declare const STABLE_ID_RE: RegExp;
39
39
  * cycle. `loop-compiler.ts` re-exports it, so its public surface is
40
40
  * unchanged. */
41
41
  export declare function deriveCriterionId(text: string): string;
42
+ /** v2.11/v3.9.7: Derive a stable constraint ID from its text hash
43
+ * (c-XXXXXXXX). Moved here so the constraint lifecycle resolver can use the
44
+ * one identity helper without importing the compiler. */
45
+ export declare function deriveConstraintId(text: string): string;
42
46
  /** The cr-XXXXXXXX shape — the ONE predicate every criterion-reference reader
43
47
  * uses (round-contract.ts kept an inline copy before v3.8.1). */
44
48
  export declare function isCriterionId(ref: string): boolean;
@@ -59,6 +63,14 @@ export declare function findingKey(flag: {
59
63
  field: string;
60
64
  ref?: string;
61
65
  }): string;
66
+ /** v3.9.7: the stable, user-referenceable id of one current machine finding.
67
+ * The JSON `findingKey` remains the internal grouping key; `f-` is the id the
68
+ * prompt renders for the Agent. */
69
+ export declare function deriveFindingId(flag: {
70
+ check: string;
71
+ field: string;
72
+ ref?: string;
73
+ }): string;
62
74
  /** Normalize one contract text field for identity purposes. */
63
75
  export declare function normalizeText(text: string): string;
64
76
  /** The contract-item fields that participate in rci-/rc- identity. Structural
@@ -66,17 +78,26 @@ export declare function normalizeText(text: string): string;
66
78
  * position alongside the other pure token helpers. */
67
79
  export interface ContractIdentityItem {
68
80
  description: string;
69
- criterion_refs: string[];
70
- subgoal_refs: string[];
81
+ /** v4.0.6: optional (defaults to `[]`), matching the runtime and schema. */
82
+ criterion_refs?: string[];
71
83
  verify_with: string[];
72
84
  }
73
- /** v3.8: Canonical form of a contract proposal. Identity is CONTENT only —
74
- * restating an unchanged contract keeps the same rc-/rci- ids, unlike a
75
- * SubGoal whose id includes its declaration round. Array order is part of
76
- * the identity. */
85
+ /** v3.8 / v4.0.6: Canonical form of a contract proposal. Identity is CONTENT
86
+ * only — restating an unchanged contract keeps the same rc-/rci- ids, unlike
87
+ * a SubGoal whose id includes its declaration round. Array order is part of
88
+ * the identity.
89
+ *
90
+ * v3.9.5: `work_item` is the slice's deliverable label (optional in this
91
+ * legacy-readable type); the item list is the acceptance surface.
92
+ *
93
+ * v4.0.6: `scope` and `supersedes` are report-only modifiers and are NOT
94
+ * part of `rc-` identity — changing either keeps the same contract id.
95
+ * Structural (not imported from protocol.ts) so this module keeps its
96
+ * zero-dependency position. */
77
97
  export declare function canonicalContractText(contract: {
78
98
  work_item?: string;
79
- scope: string[];
99
+ scope?: string[];
100
+ supersedes?: unknown;
80
101
  items: ContractIdentityItem[];
81
102
  }): string;
82
103
  /** v3.8: rc-XXXXXXXX — loopId + canonical content. */
@@ -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;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"}
1
+ {"version":3,"file":"token-utils.d.ts","sourceRoot":"","sources":["../src/token-utils.ts"],"names":[],"mappings":"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"}
@@ -79,6 +79,12 @@ export const STABLE_ID_RE = /^(c|cr|sg|rc|rci)-[a-f0-9]{8}$/;
79
79
  export function deriveCriterionId(text) {
80
80
  return "cr-" + deriveItemId(text);
81
81
  }
82
+ /** v2.11/v3.9.7: Derive a stable constraint ID from its text hash
83
+ * (c-XXXXXXXX). Moved here so the constraint lifecycle resolver can use the
84
+ * one identity helper without importing the compiler. */
85
+ export function deriveConstraintId(text) {
86
+ return "c-" + deriveItemId(text);
87
+ }
82
88
  /** The cr-XXXXXXXX shape — the ONE predicate every criterion-reference reader
83
89
  * uses (round-contract.ts kept an inline copy before v3.8.1). */
84
90
  export function isCriterionId(ref) {
@@ -107,23 +113,35 @@ export function criterionRefMatches(ref, criterion) {
107
113
  export function findingKey(flag) {
108
114
  return JSON.stringify([flag.check, flag.field, flag.ref ?? ""]);
109
115
  }
116
+ /** v3.9.7: the stable, user-referenceable id of one current machine finding.
117
+ * The JSON `findingKey` remains the internal grouping key; `f-` is the id the
118
+ * prompt renders for the Agent. */
119
+ export function deriveFindingId(flag) {
120
+ return "f-" + deriveItemId(findingKey(flag));
121
+ }
110
122
  // ── v3.8: Contract identity (content-addressed, round-independent) ──────────
111
123
  /** Normalize one contract text field for identity purposes. */
112
124
  export function normalizeText(text) {
113
125
  return text.trim().replace(/\s+/g, " ").toLowerCase();
114
126
  }
115
- /** v3.8: Canonical form of a contract proposal. Identity is CONTENT only —
116
- * restating an unchanged contract keeps the same rc-/rci- ids, unlike a
117
- * SubGoal whose id includes its declaration round. Array order is part of
118
- * the identity. */
127
+ /** v3.8 / v4.0.6: Canonical form of a contract proposal. Identity is CONTENT
128
+ * only — restating an unchanged contract keeps the same rc-/rci- ids, unlike
129
+ * a SubGoal whose id includes its declaration round. Array order is part of
130
+ * the identity.
131
+ *
132
+ * v3.9.5: `work_item` is the slice's deliverable label (optional in this
133
+ * legacy-readable type); the item list is the acceptance surface.
134
+ *
135
+ * v4.0.6: `scope` and `supersedes` are report-only modifiers and are NOT
136
+ * part of `rc-` identity — changing either keeps the same contract id.
137
+ * Structural (not imported from protocol.ts) so this module keeps its
138
+ * zero-dependency position. */
119
139
  export function canonicalContractText(contract) {
120
140
  const canonical = {
121
141
  work_item: normalizeText(contract.work_item ?? ""),
122
- scope: contract.scope.map(normalizeText),
123
142
  items: contract.items.map((item) => ({
124
143
  description: normalizeText(item.description),
125
- criterion_refs: item.criterion_refs.map(normalizeText),
126
- subgoal_refs: item.subgoal_refs.map(normalizeText),
144
+ criterion_refs: (item.criterion_refs ?? []).map(normalizeText),
127
145
  verify_with: item.verify_with.map(normalizeText),
128
146
  })),
129
147
  };
@@ -139,8 +157,7 @@ export function deriveContractId(loopId, contract) {
139
157
  export function deriveContractItemId(item, duplicateOrdinal) {
140
158
  const canonical = JSON.stringify({
141
159
  description: normalizeText(item.description),
142
- criterion_refs: item.criterion_refs.map(normalizeText),
143
- subgoal_refs: item.subgoal_refs.map(normalizeText),
160
+ criterion_refs: (item.criterion_refs ?? []).map(normalizeText),
144
161
  verify_with: item.verify_with.map(normalizeText),
145
162
  duplicate_ordinal: duplicateOrdinal,
146
163
  });
@@ -153,8 +170,7 @@ export function deriveContractItemId(item, duplicateOrdinal) {
153
170
  export function canonicalContractItemText(item) {
154
171
  return JSON.stringify({
155
172
  description: normalizeText(item.description),
156
- criterion_refs: item.criterion_refs.map(normalizeText),
157
- subgoal_refs: item.subgoal_refs.map(normalizeText),
173
+ criterion_refs: (item.criterion_refs ?? []).map(normalizeText),
158
174
  verify_with: item.verify_with.map(normalizeText),
159
175
  });
160
176
  }
@@ -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,9 @@
1
+ export interface TransactionIdentityExpectation {
2
+ loopId: string;
3
+ round: number;
4
+ schemaVersion?: number;
5
+ transactionId?: string;
6
+ }
7
+ /** Validate that a stored transaction belongs to its containing Vault entry. */
8
+ export declare function transactionIdentityIssue(entry: unknown, expected?: TransactionIdentityExpectation): string | null;
9
+ //# sourceMappingURL=transaction-identity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction-identity.d.ts","sourceRoot":"","sources":["../src/transaction-identity.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,8BAA8B;IAC7C,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,gFAAgF;AAChF,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,OAAO,EACd,QAAQ,CAAC,EAAE,8BAA8B,GACxC,MAAM,GAAG,IAAI,CAkEf"}
@@ -0,0 +1,69 @@
1
+ import { isRecord } from "./token-utils.js";
2
+ /** Validate that a stored transaction belongs to its containing Vault entry. */
3
+ export function transactionIdentityIssue(entry, expected) {
4
+ if (!isRecord(entry) || !isRecord(entry.loop_lineage) ||
5
+ !isRecord(entry.loop_lineage.round_transaction)) {
6
+ return "round transaction envelope is missing";
7
+ }
8
+ const lineage = entry.loop_lineage;
9
+ const envelope = lineage.round_transaction;
10
+ if (!isRecord(envelope))
11
+ return "round transaction envelope is malformed";
12
+ const snapshot = envelope.snapshot;
13
+ if (!isRecord(snapshot))
14
+ return "round transaction snapshot is missing";
15
+ if (typeof snapshot.loopId !== "string" ||
16
+ !Number.isInteger(snapshot.round) ||
17
+ typeof snapshot.roundId !== "string" ||
18
+ typeof snapshot.transactionId !== "string" ||
19
+ (snapshot.kind !== "evaluation" && snapshot.kind !== "rollback")) {
20
+ return "round transaction snapshot identity is malformed";
21
+ }
22
+ const loopId = snapshot.loopId;
23
+ const round = snapshot.round;
24
+ const roundId = `loop:${loopId}:round:${round}`;
25
+ if (round < 1 || snapshot.roundId !== roundId) {
26
+ return "round transaction snapshot round identity is inconsistent";
27
+ }
28
+ if (envelope.schema_version !== snapshot.schemaVersion ||
29
+ envelope.round_id !== snapshot.roundId) {
30
+ return "round transaction envelope identity does not match its snapshot";
31
+ }
32
+ if (typeof entry.loop_id !== "string" || entry.loop_id !== loopId) {
33
+ return "Vault entry loop_id does not match its transaction snapshot";
34
+ }
35
+ if (lineage.round !== round ||
36
+ (lineage.round_id !== undefined && lineage.round_id !== roundId)) {
37
+ return "Vault entry round lineage does not match its transaction snapshot";
38
+ }
39
+ const expectedTaskType = snapshot.kind === "evaluation"
40
+ ? "feedback"
41
+ : "rollback_directive";
42
+ const expectedTaskId = snapshot.kind === "evaluation"
43
+ ? `loop:${loopId}:r${round}:feedback`
44
+ : `loop:${loopId}:r${round}:rollback:${snapshot.transactionId}`;
45
+ if (entry.task_type !== expectedTaskType ||
46
+ entry.task_id !== expectedTaskId) {
47
+ return "Vault entry task identity does not match its transaction snapshot";
48
+ }
49
+ if (snapshot.kind === "rollback" &&
50
+ (!isRecord(snapshot.recovery) ||
51
+ snapshot.recovery.transaction_id !== snapshot.transactionId)) {
52
+ return "rollback directive identity does not match its transaction snapshot";
53
+ }
54
+ if (expected) {
55
+ if (loopId !== expected.loopId || round !== expected.round) {
56
+ return "transaction snapshot does not match its target loop and round";
57
+ }
58
+ if (expected.schemaVersion !== undefined &&
59
+ snapshot.schemaVersion !== expected.schemaVersion) {
60
+ return "transaction snapshot schema does not match the active schema";
61
+ }
62
+ if (expected.transactionId !== undefined &&
63
+ snapshot.transactionId !== expected.transactionId) {
64
+ return "transaction snapshot does not match its target transaction";
65
+ }
66
+ }
67
+ return null;
68
+ }
69
+ //# sourceMappingURL=transaction-identity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction-identity.js","sourceRoot":"","sources":["../src/transaction-identity.ts"],"names":[],"mappings":"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"}
@@ -1 +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"}
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,CA6CjE,CAAC;AAMF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE3D"}
@@ -9,31 +9,30 @@
9
9
  * exports; a new constant can never silently lack an action entry.
10
10
  */
11
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.",
12
+ success_with_remaining_criteria: "Complete the remaining criteria before declaring outcome=success, or declare partial/failed and report what remains.",
13
+ success_without_verified_evidence: "Back the success claim with machine-observable evidence (a passed after-phase command). no_change_reason is honored only when no enabled verification command is configured.",
16
14
  retroactive_claim_bad_round: "Correct the referenced round number, or withdraw the retroactive claim.",
17
15
  retroactive_claim_unverified: "Provide evidence for the retroactive claim, or withdraw it.",
18
16
  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.",
17
+ recurring_violation: "The same violation was reported in three consecutive committed rounds. The finding clears when a committed evaluation no longer reports it, or when the round declares outcome blocked with a blocker. LoopForge does not prescribe a strategy.",
18
+ retract_fresh_constraint: "The target was discovered in the previous round. Retraction is resolved against the active Agent-discovered set; the report remains in the committed record.",
21
19
  // 3.9.3: the reported-vs-observed fix is spelled out. The committed flag
22
20
  // already carries the `unreported` / `unconfirmed` path sets; this is the
23
21
  // action that turns the receipt's mismatch into a correct next report.
24
22
  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
23
  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
24
  criteria_claims_unverified: "Provide evidence for each claimed success criterion.",
29
25
  // v3.3 — Round Contract checks (and the three v3.3 checks that predated
30
26
  // 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.",
27
+ verification_entrypoint_modified: "Restore each entrypoint file to its round-start state (remove a file created this round), or use recovery/rollback so it is part of the starting state. Re-running on a rewritten entrypoint cannot verify this round.",
32
28
  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.",
29
+ round_scope_drift: "Report only — drift does not block the round. If the active slice is no longer the right route, add round_contract.supersedes with the successor contract; otherwise treat this as an audit signal and continue.",
34
30
  // v3.8 — item model: claimed-but-unverified debt
35
31
  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.",
32
+ contract_premature: "The ACTIVE contract is still open — omit round_contract to continue it unchanged, or add round_contract.supersedes with the active rc- id and different acceptance items to replace the slice.",
33
+ // v4.0.6 — contract coverage
34
+ contract_required: "With an after-capable verification command configured, a continuing round must leave an active contract for the next round. Submit round_contract with a work_item and at least one acceptance item bound to a configured command.",
35
+ contract_successor_unchanged: "A closed contract's successor must bring NEW acceptance items; changing only work_item or scope re-verifies the old slice. Declare different items, or omit round_contract.",
37
36
  // v3.7.1 — opt-in gate layer: cited gates need an approved human decision
38
37
  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
38
  };
@@ -1 +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"}
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,sHAAsH;IACxH,iCAAiC,EAC/B,8KAA8K;IAChL,2BAA2B,EACzB,yEAAyE;IAC3E,4BAA4B,EAC1B,6DAA6D;IAC/D,8BAA8B,EAC5B,iEAAiE;IACnE,mBAAmB,EACjB,iPAAiP;IACnP,wBAAwB,EACtB,8JAA8J;IAChK,yEAAyE;IACzE,0EAA0E;IAC1E,uEAAuE;IACvE,kBAAkB,EAChB,yJAAyJ;IAC3J,uBAAuB,EACrB,gGAAgG;IAClG,0BAA0B,EACxB,sDAAsD;IACxD,wEAAwE;IACxE,yDAAyD;IACzD,gCAAgC,EAC9B,wNAAwN;IAC1N,mBAAmB,EACjB,0FAA0F;IAC5F,iBAAiB,EACf,kNAAkN;IACpN,iDAAiD;IACjD,yBAAyB,EACvB,gJAAgJ;IAClJ,kBAAkB,EAChB,gMAAgM;IAClM,6BAA6B;IAC7B,iBAAiB,EACf,oOAAoO;IACtO,4BAA4B,EAC1B,6KAA6K;IAC/K,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"}
@@ -19,15 +19,13 @@
19
19
  * framed as declaration / execution / closure stages in their doc comments.
20
20
  */
21
21
  import type { VaultEntry } from "./loop-store.js";
22
- import type { MachineObservation } from "./protocol.js";
23
22
  import type { GitDeltaState, ObservationDelta } from "./evidence-provider.js";
24
23
  import type { EntrypointDrift } from "./evidence-provider.js";
25
24
  import type { SelfEvaluation, VerificationResult } from "./protocol.js";
26
25
  import { type ActiveContractView } from "./round-contract.js";
26
+ import { type RoundFacts } from "./round-facts.js";
27
27
  export declare const CHECK_SUCCESS_WITH_REMAINING_CRITERIA = "success_with_remaining_criteria";
28
28
  export declare const CHECK_SUCCESS_WITHOUT_VERIFIED_EVIDENCE = "success_without_verified_evidence";
29
- export declare const CHECK_OUTCOME_SUCCESS_CONTRADICTION = "outcome_success_contradiction";
30
- export declare const CHECK_BLOCKED_WITHOUT_BLOCKER = "blocked_without_blocker";
31
29
  export declare const CHECK_RETROACTIVE_CLAIM_BAD_ROUND = "retroactive_claim_bad_round";
32
30
  export declare const CHECK_RETROACTIVE_CLAIM_UNVERIFIED = "retroactive_claim_unverified";
33
31
  export declare const CHECK_DUPLICATE_CONSTRAINT_DISCOVERY = "duplicate_constraint_discovery";
@@ -35,7 +33,6 @@ export declare const CHECK_RECURRING_VIOLATION = "recurring_violation";
35
33
  export declare const CHECK_RETRACT_FRESH_CONSTRAINT = "retract_fresh_constraint";
36
34
  export declare const CHECK_EVIDENCE_INTEGRITY = "evidence_integrity";
37
35
  export declare const CHECK_REQUIRED_COMMAND_FAILED = "required_command_failed";
38
- export declare const CHECK_COMMAND_EVIDENCE_MISMATCH = "command_evidence_mismatch";
39
36
  /** v3.3: Verification domain integrity — a command entrypoint (run-tests.sh,
40
37
  * package.json, …) changed in the same round the command ran. The runtime
41
38
  * executed a script the agent just rewrote, so the observation has no
@@ -45,7 +42,6 @@ export declare const CHECK_VERIFICATION_ENTRYPOINT_MODIFIED = "verification_entr
45
42
  /** v3.3: Test files changed in the same round a verification command passed.
46
43
  * Warn-only — the command result stays usable. */
47
44
  export declare const CHECK_TEST_FILES_MODIFIED = "test_files_modified";
48
- export declare const CHECK_BACKTRACK_WORKSPACE_NOT_RESTORED = "backtrack_workspace_not_restored";
49
45
  export declare const CHECK_CRITERIA_CLAIMS_UNVERIFIED = "criteria_claims_unverified";
50
46
  /** v3.8: Contract items claimed met but not machine-verified this round.
51
47
  * The round commits; the debt is surfaced and the enforcement gate's
@@ -55,11 +51,19 @@ export declare const CHECK_CONTRACT_ITEMS_UNVERIFIED = "contract_items_unverifie
55
51
  * contract's declared scope. Warn; v3.8: not waivable by explanation — the
56
52
  * enforcement gate rejects, and repeated drift terminates. */
57
53
  export declare const CHECK_ROUND_SCOPE_DRIFT = "round_scope_drift";
58
- /** v3.5: The ACTIVE contract is still open (not completed, not blocked)
59
- * while a different contract was proposed — the proposal is ignored until
60
- * the active one closes. Warn: the walker still ignores it; this only
61
- * surfaces the otherwise-silent state. */
54
+ /** v3.5/v4.0.6: The ACTIVE contract is still open (not completed, not
55
+ * blocked) while a different contract was proposed WITHOUT `supersedes`.
56
+ * Error: a different slice is never silently saved and ignored. To replace
57
+ * the active slice, add `round_contract.supersedes` naming it. */
62
58
  export declare const CHECK_CONTRACT_PREMATURE = "contract_premature";
59
+ /** v4.0.6: A continuing round with contract capability and a successor
60
+ * available would leave the next round without an active contract. The final
61
+ * configured round has no successor consumer and is exempt. */
62
+ export declare const CHECK_CONTRACT_REQUIRED = "contract_required";
63
+ /** v4.0.6: A successor proposal repeats the closed contract's ACCEPTANCE ITEMS
64
+ * verbatim (only work_item/scope changed). Error: a successor must bring
65
+ * genuinely new acceptance conditions, or it would re-verify the old slice. */
66
+ export declare const CHECK_CONTRACT_SUCCESSOR_UNCHANGED = "contract_successor_unchanged";
63
67
  /** v3.7.1: A cited gate (evaluation.gate_ids) is not approved. Opt-in:
64
68
  * checked ONLY when policy.gate.enabled — citations are meaningless when
65
69
  * the gate layer is off. Error → enforcement rejects the round. */
@@ -92,38 +96,16 @@ export declare function collectOutOfScopeFiles(files: string[], scope: string[])
92
96
  export interface EvidenceStatus {
93
97
  /** Whether this round produced a machine-verified observation. */
94
98
  providerStatus: "verified" | "unavailable" | "absent";
95
- /** The Git boundary was observed and its change set is known. */
96
- gitObserved: boolean;
97
99
  /** Applicability vs observability of the Git change set. */
98
100
  gitChangeState: GitDeltaState["state"];
99
101
  /** A passed after-phase command snapshot exists. */
100
102
  commandVerified: boolean;
101
- /** Agent-reported tests_reported agree with a passed command's parsed stdout. */
102
- testsMachineBacked: boolean;
103
103
  }
104
104
  /** v3.2: Derive the machine-verification status of a round. The verification
105
105
  * capability is modeled explicitly (verified / unavailable / absent) instead
106
106
  * of letting evidence-dependent checks silently disappear when snapshots are
107
107
  * missing — the fix for the "weakest when it matters most" gap. */
108
108
  export declare function deriveEvidenceStatus(selfEval: SelfEvaluation, evidenceDeltas: ReadonlyArray<ObservationDelta>): EvidenceStatus;
109
- /** Per-round machine progress over decoded committed history. */
110
- export declare function machineProgressSeries(vaultEntries: VaultEntry[], currentRound: number, lookback: number): boolean[] | null;
111
- interface ParsedTestCounts {
112
- passed: number;
113
- failed: number;
114
- skipped: number;
115
- total: number;
116
- }
117
- /** Best-effort parse of test counts from common test-runner output formats.
118
- *
119
- * Scans the last 2000 characters of stdout (where summary lines typically
120
- * appear) and tries patterns in descending specificity order. Returns null
121
- * when the output format is unrecognized, stdout is empty, or a confident
122
- * parse cannot be made.
123
- *
124
- * Recognized formats: Jest verbose/compact, Mocha, pytest/unittest, Go test,
125
- * and PHPUnit OK summaries. */
126
- export declare function parseTestOutput(stdout: string): ParsedTestCounts | null;
127
109
  /** v3.8.3: The round's out-of-scope files — the ONE derivation, shared by the
128
110
  * drift check below and the blocked-waiver test in RoundCoordinator. The two
129
111
  * must agree on the set, or a round could be waived for a drift the gate
@@ -134,29 +116,23 @@ export declare function parseTestOutput(stdout: string): ParsedTestCounts | null
134
116
  * scope, or no git observation (cannot observe → fail open). */
135
117
  export declare function roundDriftFiles(activeContract: ActiveContractView | null, evidenceDeltas: ReadonlyArray<ObservationDelta>): string[] | null;
136
118
  export declare function verifySelfEvaluation(selfEval: SelfEvaluation, currentRound: number, vaultEntries: VaultEntry[], prevSelfEval?: SelfEvaluation | null, evidenceDeltas?: ReadonlyArray<ObservationDelta>,
137
- /** v2.13: Files from skipped backtrack rounds. If the agent's
138
- * files_changed overlaps significantly with these, the workspace
139
- * was not properly restored before working. */
140
- backtrackSkippedFiles?: string[],
141
- /** M3 (v3.7.x): skipped-file git fingerprints at their failed rounds —
142
- * machine proof of "untouched since the rollback" for the restore check. */
143
- backtrackSkippedFingerprints?: Record<string, string>,
144
- /** v2.12: Git HEAD commit of the backtrack restore point. When set, the
145
- * current git snapshot must sit at this commit — otherwise the workspace
146
- * was not restored and the round cannot be accepted. */
147
- backtrackTargetGitHead?: string,
119
+ /** v3.7.1: gate records (task_type gate_opened / gate_decision) live
120
+ * outside the round prefix — the caller passes them in explicitly. */
148
121
  /** v3.7.1: gate records (task_type gate_opened / gate_decision) live
149
122
  * outside the round prefix — the caller passes them in explicitly. */
150
123
  gateEntries?: VaultEntry[],
151
124
  /** v3.8.3: entrypoint files that no longer match the trusted round-start
152
125
  * baseline. Derived by the caller (it needs the in-flight trust map and
153
126
  * filesystem access); this function stays a pure function of its inputs. */
154
- entrypointDrift?: EntrypointDrift[], beforeEvidence?: MachineObservation[],
155
- /** v3.9: the restore point's own dirty files (undefined = never observed). */
156
- backtrackTargetDirty?: string[],
127
+ entrypointDrift?: EntrypointDrift[],
157
128
  /** v3.9.4: whether the raw submission attempted
158
129
  * `execution_report.files_changed` (from the persisted submittedFields
159
130
  * manifest). Undefined falls back to "an execution report exists". */
160
- filesReported?: boolean): VerificationResult;
161
- export {};
131
+ filesReported?: boolean,
132
+ /** v4.0.3: the ONE `RoundFacts` bundle the coordinator derived before
133
+ * verification. When supplied, the gate consumes it instead of deriving
134
+ * the active contract / item statuses a second time. The fallback exists
135
+ * for direct library callers and unit tests; it calls the same derivation
136
+ * function, so there is still exactly one rule. */
137
+ facts?: RoundFacts, maxRounds?: number): VerificationResult;
162
138
  //# 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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"}