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
package/dist/explain.js CHANGED
@@ -1,17 +1,60 @@
1
- /** v3.8: `loopforge explain` — the per-round "why" view.
1
+ /** v3.8/v4.0.3: `loopforge explain` — the per-round "why" view.
2
2
  *
3
3
  * Read-only projection over the shared read model: committed round views,
4
- * the contract item reducer, machine observations, verification flags, and
5
- * the committed enforcement result. It never rebuilds history and never
6
- * writes. Every fact it prints is one the runtime already derived.
4
+ * the persisted evidence posture, machine observations, verification flags,
5
+ * checkpoints/restore markers and the committed enforcement result. It never
6
+ * rebuilds history and never writes.
7
+ *
8
+ * v4.0.3: the view exposes the FULL command observations (before and after)
9
+ * with truncation metadata, so replay/explain are the complete-observation
10
+ * read surfaces the prompt intentionally points at.
7
11
  */
8
- import { observedGitHead, readOnlyRounds } from "./committed-round.js";
12
+ import { readOnlyRollbacks, readOnlyRounds, } from "./committed-round.js";
13
+ import { gitRoundFacts } from "./git-facts.js";
9
14
  import { deriveCommittedSubmissionView } from "./submission-receipt.js";
10
- import { deriveActiveRoundContract, deriveRoundContractView } from "./round-contract.js";
15
+ import { renderResultFacts } from "./result-facts.js";
16
+ import { formatContextBoundaryLabel } from "./round-guidance.js";
17
+ import { committedRoundFacts, deriveActiveRoundContract, deriveRoundContractView, } from "./round-contract.js";
11
18
  import { getPolicy } from "./policy.js";
12
- /** Build the explain view. Pure and read-only. */
13
- export function buildExplain(loopId, entries, round) {
14
- const all = readOnlyRounds(entries);
19
+ import { deriveOpenQuestionId } from "./open-question.js";
20
+ /** v4.0.2: display caps for report facts. Committed originals stay in the
21
+ * transaction; explain is a bounded read-only view. */
22
+ function clip(text, maxChars) {
23
+ const value = text ?? "";
24
+ return value.length > maxChars
25
+ ? { text: value.slice(0, maxChars), truncated: true }
26
+ : { text: value, truncated: false };
27
+ }
28
+ function clipList(values, maxChars) {
29
+ let truncated = false;
30
+ const out = (values ?? []).map((value) => {
31
+ const clipped = clip(value, maxChars);
32
+ truncated ||= clipped.truncated;
33
+ return clipped.text;
34
+ });
35
+ return { values: out, truncated };
36
+ }
37
+ function observationView(observation) {
38
+ return {
39
+ providerId: observation.providerId,
40
+ kind: observation.kind,
41
+ phase: observation.phase,
42
+ status: observation.status,
43
+ files: [...observation.files],
44
+ data: { ...observation.data },
45
+ };
46
+ }
47
+ /** Build the explain view. Pure and read-only.
48
+ *
49
+ * `legacyRounds` is the loader's explicit legacy count
50
+ * (`loadCommittedHistory(...).legacyRounds.length`); it is passed through so
51
+ * Explain never re-scans for it and never migrates it. */
52
+ export function buildExplain(loopId, entries, round, legacyRounds = 0) {
53
+ // v4.0.3: the public function must not mix another loop's records even when
54
+ // a caller passes a multi-loop entry list.
55
+ const all = readOnlyRounds(entries).filter((view) => view.loopId === loopId);
56
+ const rollbacks = readOnlyRollbacks(entries)
57
+ .filter((view) => view.loopId === loopId);
15
58
  const commands = getPolicy().evidence.commands ?? [];
16
59
  const active = deriveActiveRoundContract(all, commands);
17
60
  const selected = round === undefined
@@ -19,69 +62,157 @@ export function buildExplain(loopId, entries, round) {
19
62
  : all.filter((view) => view.round === round);
20
63
  const rounds = selected.map((view) => {
21
64
  // v3.8: the contract this round EXECUTED under and its status AS OF this
22
- // round — the same derivation the coordinator runs live. Deriving from
23
- // `round <= view.round` handed the closing round its successor's contract
24
- // (the walker had already seen this round close the active one); deriving
25
- // from `round < view.round` with this round as the in-flight slice reports
26
- // what actually happened, including a `blocked` closure.
65
+ // round — the same derivation the coordinator runs live.
27
66
  const { contract, statuses } = deriveRoundContractView({
28
67
  rounds: all,
29
68
  round: view.round,
30
- report: view.executionReport,
31
- deltas: view.observationDelta,
32
- outcome: view.outcome,
69
+ current: committedRoundFacts(view),
33
70
  commands,
34
71
  });
35
- const gitBefore = view.beforeEvidence.find((item) => item.providerId === "git");
36
- const gitAfter = view.afterEvidence.find((item) => item.providerId === "git");
37
- const gitDelta = view.observationDelta.find((item) => item.kind === "git");
38
- const coverage = gitAfter && gitAfter.kind === "git" &&
39
- typeof gitAfter.data.coverage === "string"
40
- ? gitAfter.data.coverage
41
- : null;
42
- const submission = deriveCommittedSubmissionView(view, all);
72
+ const git = gitRoundFacts(view.observationDelta);
73
+ const coverage = view.afterEvidence.find((item) => item.kind === "git");
74
+ const submission = deriveCommittedSubmissionView(view, all, rollbacks);
75
+ const reportText = clip(view.evaluation?.output_summary, 4000);
76
+ const noChange = clip(view.evaluation?.no_change_reason, 500);
77
+ const subtaskLabel = clip(view.evaluation?.subtask_boundary_label, 200);
78
+ const wrongAssumptions = clipList(view.evaluation?.wrong_assumptions, 500);
79
+ const retracted = clipList(view.retractedConstraints, 500);
80
+ const questions = clipList(view.openQuestions, 300);
81
+ const blocker = clip(view.evaluation?.blocker, 500);
82
+ const redirectReason = clip(view.contractRedirect?.reason, 500);
83
+ const objectiveRefinement = clip(view.objectiveRefinement, 1000);
84
+ const constraintViolations = clipList(view.constraintViolations, 500);
85
+ const discoveredConstraints = clipList(view.discoveredConstraints, 500);
86
+ const emergedSubtasks = clipList(view.emergedSubtasks, 500);
87
+ let workerTruncated = false;
88
+ const workerResults = (view.evaluation?.worker_results ?? []).map((worker) => {
89
+ const summary = clip(worker.resultSummary, 1000);
90
+ workerTruncated ||= summary.truncated;
91
+ return {
92
+ agent_id: clip(worker.agentId, 200).text,
93
+ sub_task: clip(worker.subTask, 500).text,
94
+ result_summary: summary.text,
95
+ outcome: worker.outcome,
96
+ };
97
+ });
98
+ let retroTruncated = false;
99
+ const retroactiveClaims = (view.evaluation?.retroactiveClaims ?? [])
100
+ .map((claim) => {
101
+ const text = clip(claim.claim, 500);
102
+ retroTruncated ||= text.truncated;
103
+ return { round: claim.round, claim: text.text };
104
+ });
105
+ const subgoalUpdates = (view.subgoalUpdates ?? []).map((update) => ({
106
+ id: update.id,
107
+ status: update.status,
108
+ ...(update.note !== undefined
109
+ ? { status_note: clip(update.note, 300).text }
110
+ : {}),
111
+ }));
112
+ const checkpoints = [
113
+ ...(view.beforeCheckpoint ? [view.beforeCheckpoint] : []),
114
+ ...view.checkpoints,
115
+ ].map((ref) => ({
116
+ checkpoint_id: ref.checkpointId,
117
+ role: ref.role,
118
+ round: ref.round,
119
+ content_hash: ref.contentHash,
120
+ }));
43
121
  return {
44
122
  round: view.round,
45
123
  roundId: view.roundId,
46
124
  attempt: view.attempt,
125
+ ...(view.branchId ? { branchId: view.branchId } : {}),
126
+ ...(view.transactionId ? { transactionId: view.transactionId } : {}),
47
127
  action: view.action,
48
- outcome: view.outcome,
49
- report: view.executionReport
128
+ // v4.0.4: ONE source — the committed result. Explain, Replay, the
129
+ // receipt and resume all read this same field.
130
+ loopStopReason: view.result?.stopReason ?? null,
131
+ agentSuccessClaim: view.agentSuccessClaim,
132
+ agentOutcome: view.agentOutcome,
133
+ agentShouldContinue: view.evaluation?.should_continue ?? null,
134
+ evidencePosture: view.evidencePosture,
135
+ enforcementReason: view.result?.enforcementReason ?? null,
136
+ context: view.promptArtifact
50
137
  ? {
51
- output_summary: view.evaluation?.output_summary ?? "",
52
- success: view.evaluation?.success ?? false,
53
- criterion_claims: (view.executionReport.criterion_claims ?? []).map((claim) => ({
54
- criterion_id: claim.criterion_id,
55
- outcome: claim.outcome,
56
- })),
57
- contract_item_claims: (view.executionReport.contract_item_claims ?? []).map((claim) => ({
58
- item_id: claim.item_id,
138
+ mode: view.promptArtifact.contextMode,
139
+ reason: view.promptArtifact.contextReason,
140
+ userInstruction: view.promptArtifact.currentUserInstruction ?? null,
141
+ }
142
+ : null,
143
+ report: view.evaluation
144
+ ? {
145
+ output_summary: reportText.text,
146
+ no_change_reason: noChange.text || null,
147
+ subtask_boundary_label: subtaskLabel.text || null,
148
+ objective_refinement: objectiveRefinement.text || null,
149
+ claims: (view.executionReport?.claims ?? [])
150
+ .map((claim) => ({
151
+ id: claim.id,
59
152
  outcome: claim.outcome,
60
153
  })),
154
+ worker_results: workerResults,
155
+ retroactive_claims: retroactiveClaims,
156
+ gate_ids: [...(view.evaluation.gate_ids ?? [])],
157
+ subgoal_updates: subgoalUpdates,
158
+ constraint_violations: constraintViolations.values,
159
+ discovered_constraints: discoveredConstraints.values,
160
+ emerged_subtasks: emergedSubtasks.values,
161
+ truncated: {
162
+ output_summary: reportText.truncated,
163
+ no_change_reason: noChange.truncated,
164
+ subtask_boundary_label: subtaskLabel.truncated,
165
+ worker_results: workerTruncated,
166
+ retroactive_claims: retroTruncated,
167
+ constraint_violations: constraintViolations.truncated,
168
+ discovered_constraints: discoveredConstraints.truncated,
169
+ emerged_subtasks: emergedSubtasks.truncated,
170
+ },
61
171
  }
62
172
  : null,
63
- observations: view.afterEvidence.map((observation) => ({
64
- providerId: observation.providerId,
65
- kind: observation.kind,
66
- phase: observation.phase,
67
- status: observation.status,
68
- files: observation.files,
69
- })),
173
+ wrongAssumptions: wrongAssumptions.values,
174
+ retractedConstraints: retracted.values,
175
+ openQuestions: questions.values,
176
+ openQuestionIds: (view.openQuestions ?? []).map(deriveOpenQuestionId),
177
+ resolvedOpenQuestionIds: [...(view.resolvedOpenQuestionIds ?? [])],
178
+ blocker: view.evaluation?.blocker ? blocker.text : null,
179
+ observations: {
180
+ before: view.beforeEvidence.map(observationView),
181
+ after: view.afterEvidence.map(observationView),
182
+ },
70
183
  observationDelta: view.observationDelta.map((delta) => ({
71
184
  providerId: delta.providerId,
72
185
  kind: delta.kind,
73
186
  changedFiles: delta.changedFiles === null ? null : [...delta.changedFiles],
74
187
  beforeStatus: delta.before?.status ?? null,
75
188
  afterStatus: delta.after?.status ?? null,
189
+ progress: delta.progress
190
+ ? {
191
+ kind: delta.progress.kind,
192
+ coverage: { ...delta.progress.coverage },
193
+ state: delta.progress.state,
194
+ complete: delta.progress.complete,
195
+ ...(delta.progress.detail ? { detail: delta.progress.detail } : {}),
196
+ }
197
+ : null,
76
198
  })),
77
- files_changed: gitDelta?.changedFiles ?? null,
78
- git_change_state: gitDelta === undefined
79
- ? "not_applicable"
80
- : gitDelta.changedFiles === null ? "unknown" : "observed",
81
- head_before: observedGitHead(gitBefore),
82
- head_after: observedGitHead(gitAfter),
83
- git_status: gitAfter?.status ?? null,
84
- coverage,
199
+ files_changed: git.changedFiles,
200
+ git_change_state: git.state,
201
+ head_before: git.headBefore,
202
+ head_after: git.headAfter,
203
+ git_status: git.status,
204
+ coverage: typeof coverage?.data.coverage === "string"
205
+ ? coverage.data.coverage
206
+ : null,
207
+ checkpoints,
208
+ restore: view.restore
209
+ ? {
210
+ directive_transaction_id: view.restore.directiveTransactionId,
211
+ redo_round: view.restore.redoRound,
212
+ verified_at: view.restore.verifiedAt,
213
+ }
214
+ : null,
215
+ restore_verified: view.restore !== null,
85
216
  submission,
86
217
  evidenceIncomplete: view.evidenceIncomplete,
87
218
  flags: view.verificationFlags.map((flag) => ({
@@ -102,17 +233,64 @@ export function buildExplain(loopId, entries, round) {
102
233
  })),
103
234
  }
104
235
  : null,
236
+ contractRedirect: view.contractRedirect
237
+ ? {
238
+ contract_id: view.contractRedirect.contract_id,
239
+ ...(view.contractRedirect.reason !== undefined
240
+ ? { reason: redirectReason.text }
241
+ : {}),
242
+ }
243
+ : null,
244
+ truncated: {
245
+ wrong_assumptions: wrongAssumptions.truncated,
246
+ retracted_constraints: retracted.truncated,
247
+ open_questions: questions.truncated,
248
+ blocker: blocker.truncated,
249
+ redirect_reason: redirectReason.truncated,
250
+ },
105
251
  };
106
252
  });
107
253
  return {
108
254
  loopId,
109
255
  rounds,
256
+ legacyRounds,
110
257
  activeContract: active
111
258
  ? { id: active.id, work_item: active.work_item, itemCount: active.items.length }
112
259
  : null,
260
+ rollbacks: rollbacks.map((view) => ({
261
+ round: view.round,
262
+ transactionId: view.transactionId ?? view.roundId,
263
+ origin: view.origin === "agent" ? "agent" : "machine",
264
+ redoRound: view.recovery?.target.redo_round ?? 0,
265
+ targetCheckpointId: view.recovery?.target.checkpoint_id ?? "",
266
+ reason: clip(view.recovery?.reason, 500).text,
267
+ observedSkippedFiles: [...(view.recovery?.observed_skipped_files ??
268
+ view.recovery?.skipped_files ?? [])],
269
+ reportedSkippedFiles: [...(view.recovery?.reported_skipped_files ?? [])],
270
+ skippedFiles: [...(view.recovery?.skipped_files ?? [])],
271
+ abandonedRounds: [...(view.recovery?.abandoned_rounds ?? [])],
272
+ failedRounds: [...(view.recovery?.failed_rounds ?? [])],
273
+ approaches: clipList(view.recovery?.approaches, 200).values,
274
+ wrongAssumptions: clipList(view.recovery?.wrong_assumptions, 500).values,
275
+ preservedDiscoveries: clipList(view.recovery?.skipped_discoveries, 500).values,
276
+ triggerFindings: (view.recovery?.trigger_findings ?? []).map((flag) => ({
277
+ check: flag.check,
278
+ severity: flag.severity,
279
+ field: flag.field,
280
+ detail: clip(flag.detail, 500).text,
281
+ ...(flag.ref ? { ref: flag.ref } : {}),
282
+ })),
283
+ })),
113
284
  };
114
285
  }
115
- /** Human-readable rendering of the explain view (CLI default). */
286
+ /** Human-readable rendering of the explain view (CLI default).
287
+ *
288
+ * v4.0.4: every round renders the three fact blocks (Agent report,
289
+ * LoopForge decision, Machine evidence) through `renderResultFacts`, then the
290
+ * detailed audit rows. Agent claims are labelled `(Agent report)`, the
291
+ * machine evidence is rendered ONLY by the shared posture formatter, and the
292
+ * commit-time contract snapshot is labelled separately from the derived
293
+ * current status. No "changed"/"conflict" boolean is derived here. */
116
294
  export function renderExplain(result) {
117
295
  const lines = [`Loop ${result.loopId}`];
118
296
  if (result.activeContract) {
@@ -120,29 +298,165 @@ export function renderExplain(result) {
120
298
  (result.activeContract.work_item ? ` — ${result.activeContract.work_item}` : "") +
121
299
  ` (${result.activeContract.itemCount} item(s))`);
122
300
  }
301
+ // v4.0.4: a legacy round is reported, never silently omitted and never
302
+ // decoded into a fake row.
303
+ if (result.legacyRounds > 0) {
304
+ lines.push(`${result.legacyRounds} 4.0.3 legacy round(s) not decoded; ` +
305
+ "use inspect/raw vault.");
306
+ }
123
307
  for (const round of result.rounds) {
124
- lines.push("", `Round ${round.round} (${round.roundId}, attempt ${round.attempt}) — ${round.action}${round.outcome ? ` / ${round.outcome}` : ""}`);
308
+ lines.push("", `Round ${round.round} (${round.roundId}, attempt ${round.attempt})`);
309
+ if (round.context) {
310
+ lines.push(` context: ${formatContextBoundaryLabel(round.context.mode, round.context.reason, { recoveryBoundary: round.restore_verified })}`);
311
+ // v4.0.5: host input projected from the committed artifact. Bounded for
312
+ // display; the full text stays in the artifact.
313
+ if (round.context.userInstruction) {
314
+ const instruction = clip(round.context.userInstruction, 500);
315
+ lines.push(` current user instruction: ${instruction.text}` +
316
+ (instruction.truncated ? " …" : ""));
317
+ }
318
+ }
319
+ if (round.branchId &&
320
+ round.branchId !== `loop:${result.loopId}:branch:root`) {
321
+ lines.push(` branch: ${round.branchId}`);
322
+ }
323
+ lines.push(...renderResultFacts({
324
+ agent: {
325
+ successClaim: round.agentSuccessClaim,
326
+ outcome: round.agentOutcome,
327
+ shouldContinue: round.agentShouldContinue,
328
+ blocker: round.blocker,
329
+ },
330
+ loopforge: {
331
+ action: round.action,
332
+ loopStopReason: round.loopStopReason,
333
+ enforcementReason: round.enforcementReason,
334
+ },
335
+ machine: {
336
+ posture: round.evidencePosture,
337
+ // Explain only decodes committed evaluation rounds.
338
+ committed: true,
339
+ },
340
+ }, "explain"));
125
341
  if (round.report) {
126
- lines.push(` report: success=${round.report.success} — ${round.report.output_summary.slice(0, 200)}`);
127
- for (const claim of round.report.contract_item_claims) {
128
- lines.push(` item claim: ${claim.item_id} → ${claim.outcome}`);
342
+ const truncated = round.report.truncated.output_summary ? " [truncated]" : "";
343
+ lines.push(` output_summary (Agent report): ` +
344
+ `${round.report.output_summary.slice(0, 200)}${truncated}`);
345
+ if (round.report.no_change_reason) {
346
+ lines.push(` no_change_reason (Agent report): ${round.report.no_change_reason.slice(0, 160)}`);
347
+ }
348
+ if (round.report.subtask_boundary_label) {
349
+ lines.push(` subtask boundary (Agent report): ${round.report.subtask_boundary_label}`);
350
+ }
351
+ for (const claim of round.report.claims) {
352
+ const kind = claim.id.startsWith("rci-")
353
+ ? "contract item claim"
354
+ : "criterion claim";
355
+ lines.push(` ${kind} (Agent report): ${claim.id} → ${claim.outcome}`);
356
+ }
357
+ if (round.report.objective_refinement) {
358
+ lines.push(` objective refinement (Agent report): ${round.report.objective_refinement}`);
359
+ }
360
+ for (const worker of round.report.worker_results) {
361
+ lines.push(` worker ${worker.agent_id} (${worker.outcome}): ${worker.result_summary.slice(0, 160)}`);
129
362
  }
363
+ for (const retro of round.report.retroactive_claims) {
364
+ lines.push(` retroactive claim R${retro.round}: ${retro.claim.slice(0, 160)}`);
365
+ }
366
+ if (round.report.gate_ids.length > 0) {
367
+ lines.push(` gate ids: ${round.report.gate_ids.join(", ")}`);
368
+ }
369
+ for (const update of round.report.subgoal_updates) {
370
+ lines.push(` sub-goal ${update.id} → ${update.status}` +
371
+ (update.status_note ? ` — ${update.status_note.slice(0, 160)}` : ""));
372
+ }
373
+ for (const violation of round.report.constraint_violations) {
374
+ lines.push(` constraint violation (Agent report): ${violation.slice(0, 160)}`);
375
+ }
376
+ for (const discovered of round.report.discovered_constraints) {
377
+ lines.push(` discovered constraint (Agent report): ${discovered.slice(0, 160)}`);
378
+ }
379
+ for (const emerged of round.report.emerged_subtasks) {
380
+ lines.push(` emerged subtask (Agent report): ${emerged.slice(0, 160)}`);
381
+ }
382
+ }
383
+ if (round.resolvedOpenQuestionIds.length > 0) {
384
+ lines.push(` resolved open questions (Agent report): ` +
385
+ round.resolvedOpenQuestionIds.slice(0, 20).join(", "));
130
386
  }
131
- for (const observation of round.observations) {
387
+ for (const assumption of round.wrongAssumptions) {
388
+ lines.push(` wrong assumption (Agent report): ${assumption.slice(0, 160)}`);
389
+ }
390
+ for (const retraction of round.retractedConstraints) {
391
+ lines.push(` retracted constraint (Agent report): ${retraction.slice(0, 160)}`);
392
+ }
393
+ for (const question of round.openQuestions) {
394
+ lines.push(` open question (Agent report): ${question.slice(0, 160)}`);
395
+ }
396
+ for (const observation of round.observations.after) {
132
397
  lines.push(` observation: ${observation.providerId} [${observation.status}] ${observation.files.length} file(s)`);
398
+ if (observation.kind === "command") {
399
+ const data = observation.data;
400
+ const argv = Array.isArray(data.argv) ? data.argv.join(" ") : "";
401
+ const exit = data.exitCode === null || data.exitCode === undefined
402
+ ? "no exit code"
403
+ : `exit ${String(data.exitCode)}`;
404
+ lines.push(` command: ${String(data.commandId ?? observation.providerId)} — ${argv} (${exit})`);
405
+ }
406
+ }
407
+ for (const checkpoint of round.checkpoints) {
408
+ lines.push(` checkpoint: ${checkpoint.checkpoint_id} (${checkpoint.role}, R${checkpoint.round})`);
409
+ }
410
+ if (round.restore_verified) {
411
+ lines.push(` restore: verified (redo R${round.restore?.redo_round ?? "?"})`);
133
412
  }
134
413
  if (round.evidenceIncomplete) {
135
- lines.push(" evidence: INCOMPLETE — the round committed without after-phase observations");
414
+ lines.push(" Evidence boundary: INCOMPLETE — no after-phase observations");
136
415
  }
137
416
  for (const flag of round.flags) {
138
417
  lines.push(` flag: ${flag.severity} ${flag.check} — ${flag.detail.slice(0, 160)}`);
139
418
  }
419
+ // v4.0.4: the two contract sources are labelled and shown side by side.
420
+ // The commit-time snapshot is the posture's persisted contract block
421
+ // (already rendered above by the shared posture formatter); the derived
422
+ // status is this read-time projection. No comparison boolean is emitted.
423
+ const snapshotContract = round.evidencePosture?.contract ?? null;
424
+ if (snapshotContract) {
425
+ lines.push(` Contract at commit (snapshot): ${snapshotContract.id} → ` +
426
+ `${snapshotContract.closure}`);
427
+ }
140
428
  if (round.contract) {
141
- lines.push(` contract ${round.contract.id} → ${round.contract.closure}`);
429
+ lines.push(` Contract status now (derived): ${round.contract.id} → ` +
430
+ `${round.contract.closure}`);
142
431
  for (const item of round.contract.items) {
143
432
  lines.push(` ${item.itemId}: ${item.status}${item.reasons.length > 0 ? ` — ${item.reasons[0]}` : ""}`);
144
433
  }
145
434
  }
435
+ if (round.contractRedirect) {
436
+ lines.push(` contract redirect: ${round.contractRedirect.contract_id}` +
437
+ (round.contractRedirect.reason
438
+ ? ` — ${round.contractRedirect.reason.slice(0, 160)} (report only)`
439
+ : " (report only)"));
440
+ }
441
+ }
442
+ for (const rollback of result.rollbacks) {
443
+ lines.push("", `Rollback R${rollback.round} (${rollback.origin}) → redo R${rollback.redoRound}` +
444
+ `, checkpoint ${rollback.targetCheckpointId}`);
445
+ if (rollback.reason) {
446
+ lines.push(` reason: ${rollback.reason.slice(0, 200)}`);
447
+ }
448
+ if (rollback.failedRounds.length > 0) {
449
+ lines.push(` failed rounds: R${rollback.failedRounds.join(", R")}`);
450
+ }
451
+ for (const approach of rollback.approaches) {
452
+ lines.push(` abandoned approach (Agent report): ${approach.slice(0, 160)}`);
453
+ }
454
+ for (const assumption of rollback.wrongAssumptions) {
455
+ lines.push(` wrong assumption (Agent report): ${assumption.slice(0, 160)}`);
456
+ }
457
+ for (const flag of rollback.triggerFindings) {
458
+ lines.push(` trigger finding: ${flag.severity} ${flag.check} — ${flag.detail.slice(0, 160)}`);
459
+ }
146
460
  }
147
461
  return lines.join("\n");
148
462
  }
@@ -1 +1 @@
1
- {"version":3,"file":"explain.js","sourceRoot":"","sources":["../src/explain.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"explain.js","sourceRoot":"","sources":["../src/explain.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"field-accounting.d.ts","sourceRoot":"","sources":["../src/field-accounting.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAO1E,MAAM,WAAW,qBAAqB;IACpC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,wBAAwB,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAC1D,UAAU,EAAE,cAAc,GAAG,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,eAAe;IAC9B,yBAAyB;IACzB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB;kFAC8E;IAC9E,UAAU,EAAE,OAAO,CAAC;CACrB;AAoFD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,qBAAqB,GAAG,eAAe,CAoCpF"}
1
+ {"version":3,"file":"field-accounting.d.ts","sourceRoot":"","sources":["../src/field-accounting.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAEV,cAAc,EACd,oBAAoB,EACrB,MAAM,eAAe,CAAC;AAWvB,MAAM,WAAW,qBAAqB;IACpC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,wBAAwB,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAC1D,UAAU,EAAE,cAAc,GAAG,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,eAAe;IAC9B,yBAAyB;IACzB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB;kFAC8E;IAC9E,UAAU,EAAE,OAAO,CAAC;CACrB;AAmED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,qBAAqB,GAAG,eAAe,CAkCpF"}
@@ -12,7 +12,7 @@
12
12
  * losses (some array entries dropped) leave the field retained; their
13
13
  * diagnostics remain visible in the receipt.
14
14
  */
15
- import { FIELD_ORDER } from "./submission-guidance.js";
15
+ import { ARRAY_SELF_EVALUATION_FIELDS, FIELD_ORDER, } from "./submission-guidance.js";
16
16
  import { DIAG_ALL_ENTRIES_DROPPED, DIAG_DIAGNOSTICS_TRUNCATED, } from "./submission-diagnostics.js";
17
17
  const ARRAY_WHOLE_DROP_CODES = new Set(["not_array", DIAG_ALL_ENTRIES_DROPPED]);
18
18
  const ROUND_CONTRACT_WHOLE_DROP_CODES = new Set([
@@ -20,7 +20,6 @@ const ROUND_CONTRACT_WHOLE_DROP_CODES = new Set([
20
20
  "invalid_entry",
21
21
  DIAG_ALL_ENTRIES_DROPPED,
22
22
  ]);
23
- const TESTS_WHOLE_DROP_CODES = new Set(["invalid_value", "invalid_entry"]);
24
23
  function isObject(value) {
25
24
  return typeof value === "object" && value !== null && !Array.isArray(value);
26
25
  }
@@ -38,24 +37,10 @@ function wholeDrop(path, diagnostics) {
38
37
  const exact = diagnostics.filter((diagnostic) => diagnostic.path === path && diagnostic.handling === "dropped");
39
38
  if (exact.length === 0)
40
39
  return false;
41
- if (path === "execution_report.tests_reported") {
42
- return exact.some((diagnostic) => TESTS_WHOLE_DROP_CODES.has(diagnostic.code));
43
- }
44
40
  if (path === "round_contract") {
45
41
  return exact.some((diagnostic) => ROUND_CONTRACT_WHOLE_DROP_CODES.has(diagnostic.code));
46
42
  }
47
- if (path.endsWith("_claims") ||
48
- path === "execution_report.files_changed" ||
49
- path === "constraint_violations" ||
50
- path === "emerged_subtasks" ||
51
- path === "discovered_constraints" ||
52
- path === "retracted_constraints" ||
53
- path === "wrong_assumptions" ||
54
- path === "gate_ids" ||
55
- path === "retroactiveClaims" ||
56
- path === "revised_success_criteria" ||
57
- path === "worker_results" ||
58
- path === "subgoal_updates") {
43
+ if (ARRAY_SELF_EVALUATION_FIELDS.has(path)) {
59
44
  return exact.some((diagnostic) => ARRAY_WHOLE_DROP_CODES.has(diagnostic.code));
60
45
  }
61
46
  return true;
@@ -79,8 +64,6 @@ function hasValue(path, value) {
79
64
  return value !== undefined && value !== null;
80
65
  }
81
66
  function positiveValue(path, value) {
82
- if (path === "execution_report.tests_reported")
83
- return isObject(value);
84
67
  if (path === "round_contract") {
85
68
  return isObject(value) && Array.isArray(value.items) && value.items.length > 0;
86
69
  }
@@ -109,9 +92,7 @@ export function deriveFieldAccounting(source) {
109
92
  const dropped = wholeDrop(path, source.normalizationDiagnostics);
110
93
  const kept = truncated
111
94
  ? positiveValue(path, value) && !dropped
112
- : path === "execution_report.tests_reported"
113
- ? source.evaluation.execution_report !== undefined && !dropped
114
- : hasValue(path, value) && !dropped;
95
+ : hasValue(path, value) && !dropped;
115
96
  if (kept) {
116
97
  retained.push(path);
117
98
  }