loopforge 3.9.2 → 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 (285) 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 +152 -40
  7. package/dist/canonical-state.d.ts.map +1 -1
  8. package/dist/canonical-state.js +382 -206
  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 +105 -141
  18. package/dist/committed-round.d.ts.map +1 -1
  19. package/dist/committed-round.js +249 -372
  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 +32 -67
  42. package/dist/enforcement-gate.d.ts.map +1 -1
  43. package/dist/enforcement-gate.js +203 -439
  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 +28 -887
  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 +167 -27
  70. package/dist/explain.d.ts.map +1 -1
  71. package/dist/explain.js +373 -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 +51 -19
  103. package/dist/loop-compiler.d.ts.map +1 -1
  104. package/dist/loop-compiler.js +423 -507
  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 +285 -81
  111. package/dist/mcp/round-lifecycle.d.ts.map +1 -1
  112. package/dist/mcp/round-lifecycle.js +1629 -574
  113. package/dist/mcp/round-lifecycle.js.map +1 -1
  114. package/dist/mcp/server.d.ts +5 -0
  115. package/dist/mcp/server.d.ts.map +1 -1
  116. package/dist/mcp/server.js +61 -19
  117. package/dist/mcp/server.js.map +1 -1
  118. package/dist/mcp/session.d.ts +81 -39
  119. package/dist/mcp/session.d.ts.map +1 -1
  120. package/dist/mcp/session.js +963 -271
  121. package/dist/mcp/session.js.map +1 -1
  122. package/dist/mcp/submission-boundary.d.ts +23 -31
  123. package/dist/mcp/submission-boundary.d.ts.map +1 -1
  124. package/dist/mcp/submission-boundary.js +242 -82
  125. package/dist/mcp/submission-boundary.js.map +1 -1
  126. package/dist/mcp/submission-handle.d.ts +66 -0
  127. package/dist/mcp/submission-handle.d.ts.map +1 -0
  128. package/dist/mcp/submission-handle.js +173 -0
  129. package/dist/mcp/submission-handle.js.map +1 -0
  130. package/dist/mcp/tools.d.ts +17 -7
  131. package/dist/mcp/tools.d.ts.map +1 -1
  132. package/dist/mcp/tools.js +763 -244
  133. package/dist/mcp/tools.js.map +1 -1
  134. package/dist/open-question.d.ts +7 -0
  135. package/dist/open-question.d.ts.map +1 -0
  136. package/dist/open-question.js +14 -0
  137. package/dist/open-question.js.map +1 -0
  138. package/dist/policy-metrics.d.ts +31 -21
  139. package/dist/policy-metrics.d.ts.map +1 -1
  140. package/dist/policy-metrics.js +117 -64
  141. package/dist/policy-metrics.js.map +1 -1
  142. package/dist/policy.d.ts +15 -40
  143. package/dist/policy.d.ts.map +1 -1
  144. package/dist/policy.js +13 -13
  145. package/dist/policy.js.map +1 -1
  146. package/dist/progress.d.ts +45 -0
  147. package/dist/progress.d.ts.map +1 -0
  148. package/dist/progress.js +136 -0
  149. package/dist/progress.js.map +1 -0
  150. package/dist/prompt-assembler.d.ts +28 -9
  151. package/dist/prompt-assembler.d.ts.map +1 -1
  152. package/dist/prompt-assembler.js +592 -603
  153. package/dist/prompt-assembler.js.map +1 -1
  154. package/dist/prompt-coverage.d.ts +39 -0
  155. package/dist/prompt-coverage.d.ts.map +1 -0
  156. package/dist/prompt-coverage.js +80 -0
  157. package/dist/prompt-coverage.js.map +1 -0
  158. package/dist/prompt-freshness.d.ts +25 -0
  159. package/dist/prompt-freshness.d.ts.map +1 -0
  160. package/dist/prompt-freshness.js +88 -0
  161. package/dist/prompt-freshness.js.map +1 -0
  162. package/dist/prompt-policy.d.ts +14 -4
  163. package/dist/prompt-policy.d.ts.map +1 -1
  164. package/dist/prompt-policy.js +29 -10
  165. package/dist/prompt-policy.js.map +1 -1
  166. package/dist/protocol.d.ts +875 -419
  167. package/dist/protocol.d.ts.map +1 -1
  168. package/dist/protocol.js +73 -99
  169. package/dist/protocol.js.map +1 -1
  170. package/dist/recovery-guidance.d.ts +13 -0
  171. package/dist/recovery-guidance.d.ts.map +1 -0
  172. package/dist/recovery-guidance.js +15 -0
  173. package/dist/recovery-guidance.js.map +1 -0
  174. package/dist/recovery.d.ts +68 -0
  175. package/dist/recovery.d.ts.map +1 -0
  176. package/dist/recovery.js +234 -0
  177. package/dist/recovery.js.map +1 -0
  178. package/dist/replay.d.ts +42 -8
  179. package/dist/replay.d.ts.map +1 -1
  180. package/dist/replay.js +311 -84
  181. package/dist/replay.js.map +1 -1
  182. package/dist/result-facts.d.ts +45 -0
  183. package/dist/result-facts.d.ts.map +1 -0
  184. package/dist/result-facts.js +86 -0
  185. package/dist/result-facts.js.map +1 -0
  186. package/dist/round-contract.d.ts +38 -8
  187. package/dist/round-contract.d.ts.map +1 -1
  188. package/dist/round-contract.js +71 -31
  189. package/dist/round-contract.js.map +1 -1
  190. package/dist/round-coordinator.d.ts +45 -91
  191. package/dist/round-coordinator.d.ts.map +1 -1
  192. package/dist/round-coordinator.js +254 -271
  193. package/dist/round-coordinator.js.map +1 -1
  194. package/dist/round-driver.d.ts +56 -16
  195. package/dist/round-driver.d.ts.map +1 -1
  196. package/dist/round-driver.js +225 -39
  197. package/dist/round-driver.js.map +1 -1
  198. package/dist/round-facts.d.ts +33 -52
  199. package/dist/round-facts.d.ts.map +1 -1
  200. package/dist/round-facts.js +54 -157
  201. package/dist/round-facts.js.map +1 -1
  202. package/dist/round-guidance.d.ts +56 -0
  203. package/dist/round-guidance.d.ts.map +1 -0
  204. package/dist/round-guidance.js +161 -0
  205. package/dist/round-guidance.js.map +1 -0
  206. package/dist/round-outcome.d.ts +21 -0
  207. package/dist/round-outcome.d.ts.map +1 -0
  208. package/dist/round-outcome.js +31 -0
  209. package/dist/round-outcome.js.map +1 -0
  210. package/dist/round-transaction.d.ts +168 -21
  211. package/dist/round-transaction.d.ts.map +1 -1
  212. package/dist/round-transaction.js +856 -39
  213. package/dist/round-transaction.js.map +1 -1
  214. package/dist/self-eval.d.ts +40 -60
  215. package/dist/self-eval.d.ts.map +1 -1
  216. package/dist/self-eval.js +455 -384
  217. package/dist/self-eval.js.map +1 -1
  218. package/dist/storage.d.ts +16 -0
  219. package/dist/storage.d.ts.map +1 -1
  220. package/dist/storage.js +54 -4
  221. package/dist/storage.js.map +1 -1
  222. package/dist/subgoal-state.d.ts +2 -3
  223. package/dist/subgoal-state.d.ts.map +1 -1
  224. package/dist/subgoal-state.js +2 -3
  225. package/dist/subgoal-state.js.map +1 -1
  226. package/dist/submission-guidance.d.ts +43 -21
  227. package/dist/submission-guidance.d.ts.map +1 -1
  228. package/dist/submission-guidance.js +368 -262
  229. package/dist/submission-guidance.js.map +1 -1
  230. package/dist/submission-receipt.d.ts +16 -8
  231. package/dist/submission-receipt.d.ts.map +1 -1
  232. package/dist/submission-receipt.js +146 -51
  233. package/dist/submission-receipt.js.map +1 -1
  234. package/dist/token-utils.d.ts +47 -7
  235. package/dist/token-utils.d.ts.map +1 -1
  236. package/dist/token-utils.js +66 -15
  237. package/dist/token-utils.js.map +1 -1
  238. package/dist/transaction-identity.d.ts +9 -0
  239. package/dist/transaction-identity.d.ts.map +1 -0
  240. package/dist/transaction-identity.js +69 -0
  241. package/dist/transaction-identity.js.map +1 -0
  242. package/dist/verification-actions.d.ts +13 -0
  243. package/dist/verification-actions.d.ts.map +1 -0
  244. package/dist/verification-actions.js +44 -0
  245. package/dist/verification-actions.js.map +1 -0
  246. package/dist/verification-gate.d.ts +26 -46
  247. package/dist/verification-gate.d.ts.map +1 -1
  248. package/dist/verification-gate.js +218 -427
  249. package/dist/verification-gate.js.map +1 -1
  250. package/dist/version.d.ts +1 -1
  251. package/dist/version.js +1 -1
  252. package/dist/working-memory.d.ts +187 -0
  253. package/dist/working-memory.d.ts.map +1 -0
  254. package/dist/working-memory.js +767 -0
  255. package/dist/working-memory.js.map +1 -0
  256. package/dist/workspace-checkpoint.d.ts +88 -0
  257. package/dist/workspace-checkpoint.d.ts.map +1 -0
  258. package/dist/workspace-checkpoint.js +326 -0
  259. package/dist/workspace-checkpoint.js.map +1 -0
  260. package/dist/workspace-restore.d.ts +68 -0
  261. package/dist/workspace-restore.d.ts.map +1 -0
  262. package/dist/workspace-restore.js +604 -0
  263. package/dist/workspace-restore.js.map +1 -0
  264. package/dist/workspace.d.ts +0 -9
  265. package/dist/workspace.d.ts.map +1 -1
  266. package/dist/workspace.js +0 -17
  267. package/dist/workspace.js.map +1 -1
  268. package/loop_policy.json +5 -19
  269. package/package.json +2 -2
  270. package/skills/forge/SKILL.md +212 -0
  271. package/skills/forge/references/evidence-and-contracts.md +204 -0
  272. package/skills/forge/references/recovery-and-views.md +188 -0
  273. package/dist/cognitive-facts.d.ts +0 -30
  274. package/dist/cognitive-facts.d.ts.map +0 -1
  275. package/dist/cognitive-facts.js +0 -113
  276. package/dist/cognitive-facts.js.map +0 -1
  277. package/dist/loop-extras-parser.d.ts +0 -81
  278. package/dist/loop-extras-parser.d.ts.map +0 -1
  279. package/dist/loop-extras-parser.js +0 -213
  280. package/dist/loop-extras-parser.js.map +0 -1
  281. package/dist/loop-projection.d.ts +0 -6
  282. package/dist/loop-projection.d.ts.map +0 -1
  283. package/dist/loop-projection.js +0 -28
  284. package/dist/loop-projection.js.map +0 -1
  285. package/skills/perception/SKILL.md +0 -370
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,75 +62,164 @@ 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) => ({
88
219
  check: flag.check,
89
220
  severity: flag.severity,
90
221
  detail: flag.detail,
222
+ ...(flag.ref ? { ref: flag.ref } : {}),
91
223
  })),
92
224
  contract: statuses.contractId
93
225
  ? {
@@ -101,17 +233,64 @@ export function buildExplain(loopId, entries, round) {
101
233
  })),
102
234
  }
103
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
+ },
104
251
  };
105
252
  });
106
253
  return {
107
254
  loopId,
108
255
  rounds,
256
+ legacyRounds,
109
257
  activeContract: active
110
258
  ? { id: active.id, work_item: active.work_item, itemCount: active.items.length }
111
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
+ })),
112
284
  };
113
285
  }
114
- /** 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. */
115
294
  export function renderExplain(result) {
116
295
  const lines = [`Loop ${result.loopId}`];
117
296
  if (result.activeContract) {
@@ -119,29 +298,165 @@ export function renderExplain(result) {
119
298
  (result.activeContract.work_item ? ` — ${result.activeContract.work_item}` : "") +
120
299
  ` (${result.activeContract.itemCount} item(s))`);
121
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
+ }
122
307
  for (const round of result.rounds) {
123
- 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"));
124
341
  if (round.report) {
125
- lines.push(` report: success=${round.report.success} — ${round.report.output_summary.slice(0, 200)}`);
126
- for (const claim of round.report.contract_item_claims) {
127
- 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)}`);
128
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(", "));
129
386
  }
130
- 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) {
131
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 ?? "?"})`);
132
412
  }
133
413
  if (round.evidenceIncomplete) {
134
- lines.push(" evidence: INCOMPLETE — the round committed without after-phase observations");
414
+ lines.push(" Evidence boundary: INCOMPLETE — no after-phase observations");
135
415
  }
136
416
  for (const flag of round.flags) {
137
417
  lines.push(` flag: ${flag.severity} ${flag.check} — ${flag.detail.slice(0, 160)}`);
138
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
+ }
139
428
  if (round.contract) {
140
- lines.push(` contract ${round.contract.id} → ${round.contract.closure}`);
429
+ lines.push(` Contract status now (derived): ${round.contract.id} → ` +
430
+ `${round.contract.closure}`);
141
431
  for (const item of round.contract.items) {
142
432
  lines.push(` ${item.itemId}: ${item.status}${item.reasons.length > 0 ? ` — ${item.reasons[0]}` : ""}`);
143
433
  }
144
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
+ }
145
460
  }
146
461
  return lines.join("\n");
147
462
  }
@@ -1 +1 @@
1
- {"version":3,"file":"explain.js","sourceRoot":"","sources":["../src/explain.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AAExE,OAAO,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AACzF,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAgExC,kDAAkD;AAClD,MAAM,UAAU,YAAY,CAC1B,MAAc,EACd,OAAqB,EACrB,KAAc;IAEd,MAAM,GAAG,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IACpC,MAAM,QAAQ,GAAG,SAAS,EAAE,CAAC,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAC;IACrD,MAAM,MAAM,GAAG,yBAAyB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAG,KAAK,KAAK,SAAS;QAClC,CAAC,CAAC,GAAG;QACL,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;IAE/C,MAAM,MAAM,GAAmB,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACnD,yEAAyE;QACzE,uEAAuE;QACvE,0EAA0E;QAC1E,0EAA0E;QAC1E,2EAA2E;QAC3E,yDAAyD;QACzD,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,uBAAuB,CAAC;YACrD,MAAM,EAAE,GAAG;YACX,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,IAAI,CAAC,eAAe;YAC5B,MAAM,EAAE,IAAI,CAAC,gBAAgB;YAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,QAAQ;SACT,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,KAAK,KAAK,CAAC,CAAC;QAChF,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,KAAK,KAAK,CAAC,CAAC;QAC9E,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;QAC3E,MAAM,QAAQ,GAAG,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,KAAK;YAClD,OAAO,QAAQ,CAAC,IAAI,CAAC,QAAQ,KAAK,QAAQ;YAC1C,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ;YACxB,CAAC,CAAC,IAAI,CAAC;QACT,MAAM,UAAU,GAAG,6BAA6B,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC5D,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,IAAI,CAAC,eAAe;gBAC1B,CAAC,CAAC;oBACE,cAAc,EAAE,IAAI,CAAC,UAAU,EAAE,cAAc,IAAI,EAAE;oBACrD,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,IAAI,KAAK;oBAC1C,gBAAgB,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;wBAC9E,YAAY,EAAE,KAAK,CAAC,YAAY;wBAChC,OAAO,EAAE,KAAK,CAAC,OAAO;qBACvB,CAAC,CAAC;oBACH,oBAAoB,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;wBACtF,OAAO,EAAE,KAAK,CAAC,OAAO;wBACtB,OAAO,EAAE,KAAK,CAAC,OAAO;qBACvB,CAAC,CAAC;iBACJ;gBACH,CAAC,CAAC,IAAI;YACR,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;gBACrD,UAAU,EAAE,WAAW,CAAC,UAAU;gBAClC,IAAI,EAAE,WAAW,CAAC,IAAI;gBACtB,KAAK,EAAE,WAAW,CAAC,KAAK;gBACxB,MAAM,EAAE,WAAW,CAAC,MAAM;gBAC1B,KAAK,EAAE,WAAW,CAAC,KAAK;aACzB,CAAC,CAAC;YACH,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBACtD,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,YAAY,EAAE,KAAK,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC;gBAC1E,YAAY,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,IAAI,IAAI;gBAC1C,WAAW,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,IAAI,IAAI;aACzC,CAAC,CAAC;YACH,aAAa,EAAE,QAAQ,EAAE,YAAY,IAAI,IAAI;YAC7C,gBAAgB,EAAE,QAAQ,KAAK,SAAS;gBACtC,CAAC,CAAC,gBAAgB;gBAClB,CAAC,CAAC,QAAQ,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU;YAC3D,WAAW,EAAE,eAAe,CAAC,SAAS,CAAC;YACvC,UAAU,EAAE,eAAe,CAAC,QAAQ,CAAC;YACrC,UAAU,EAAE,QAAQ,EAAE,MAAM,IAAI,IAAI;YACpC,QAAQ;YACR,UAAU;YACV,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,KAAK,EAAE,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC3C,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,MAAM,EAAE,IAAI,CAAC,MAAM;aACpB,CAAC,CAAC;YACH,QAAQ,EAAE,QAAQ,CAAC,UAAU;gBAC3B,CAAC,CAAC;oBACE,EAAE,EAAE,QAAQ,CAAC,UAAU;oBACvB,iBAAiB,EAAE,QAAQ,EAAE,iBAAiB,IAAI,CAAC;oBACnD,OAAO,EAAE,QAAQ,CAAC,OAAO;oBACzB,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;wBACnC,MAAM,EAAE,IAAI,CAAC,MAAM;wBACnB,MAAM,EAAE,IAAI,CAAC,MAAM;wBACnB,OAAO,EAAE,IAAI,CAAC,OAAO;qBACtB,CAAC,CAAC;iBACJ;gBACH,CAAC,CAAC,IAAI;SACT,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,MAAM;QACN,MAAM;QACN,cAAc,EAAE,MAAM;YACpB,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;YAChF,CAAC,CAAC,IAAI;KACT,CAAC;AACJ,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,aAAa,CAAC,MAAqB;IACjD,MAAM,KAAK,GAAa,CAAC,QAAQ,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAClD,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;QAC1B,KAAK,CAAC,IAAI,CACR,oBAAoB,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE;YAC9C,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChF,KAAK,MAAM,CAAC,cAAc,CAAC,SAAS,WAAW,CAChD,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,aAAa,KAAK,CAAC,OAAO,OAAO,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACnJ,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjB,KAAK,CAAC,IAAI,CAAC,qBAAqB,KAAK,CAAC,MAAM,CAAC,OAAO,MAAM,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YACvG,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAC;gBACtD,KAAK,CAAC,IAAI,CAAC,mBAAmB,KAAK,CAAC,OAAO,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACpE,CAAC;QACH,CAAC;QACD,KAAK,MAAM,WAAW,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;YAC7C,KAAK,CAAC,IAAI,CAAC,kBAAkB,WAAW,CAAC,UAAU,KAAK,WAAW,CAAC,MAAM,KAAK,WAAW,CAAC,KAAK,CAAC,MAAM,UAAU,CAAC,CAAC;QACrH,CAAC;QACD,IAAI,KAAK,CAAC,kBAAkB,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,+EAA+E,CAAC,CAAC;QAC9F,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QACtF,CAAC;QACD,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACnB,KAAK,CAAC,IAAI,CAAC,cAAc,KAAK,CAAC,QAAQ,CAAC,EAAE,MAAM,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;YAC1E,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;gBACxC,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC5G,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
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
  }