agentfootprint 9.112.2 → 9.113.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (261) hide show
  1. package/CHANGELOG.md +296 -0
  2. package/CLAUDE.md +1 -0
  3. package/dist/adapters/observability/audit.js +8 -0
  4. package/dist/adapters/observability/audit.js.map +1 -1
  5. package/dist/adapters/observability/otel.js +44 -2
  6. package/dist/adapters/observability/otel.js.map +1 -1
  7. package/dist/adapters/observability/xray.js +19 -0
  8. package/dist/adapters/observability/xray.js.map +1 -1
  9. package/dist/adapters/types.js.map +1 -1
  10. package/dist/core/Agent.js +11 -1
  11. package/dist/core/Agent.js.map +1 -1
  12. package/dist/core/agent/composeRequest.js +19 -11
  13. package/dist/core/agent/composeRequest.js.map +1 -1
  14. package/dist/core/agent/coverage/absent.js +163 -7
  15. package/dist/core/agent/coverage/absent.js.map +1 -1
  16. package/dist/core/agent/coverage/answer.js +3 -1
  17. package/dist/core/agent/coverage/answer.js.map +1 -1
  18. package/dist/core/agent/coverage/read.js +15 -11
  19. package/dist/core/agent/coverage/read.js.map +1 -1
  20. package/dist/core/agent/findings/ledger.js +27 -5
  21. package/dist/core/agent/findings/ledger.js.map +1 -1
  22. package/dist/core/agent/findings/offer.js +29 -9
  23. package/dist/core/agent/findings/offer.js.map +1 -1
  24. package/dist/core/agent/findings/serve.js +76 -7
  25. package/dist/core/agent/findings/serve.js.map +1 -1
  26. package/dist/core/agent/findings/types.js.map +1 -1
  27. package/dist/core/agent/findings/unsettled.js +276 -0
  28. package/dist/core/agent/findings/unsettled.js.map +1 -0
  29. package/dist/core/agent/stages/callLLM.js +30 -8
  30. package/dist/core/agent/stages/callLLM.js.map +1 -1
  31. package/dist/core/agent/stages/route.js +10 -2
  32. package/dist/core/agent/stages/route.js.map +1 -1
  33. package/dist/core/agent/stages/toolCalls.js +247 -31
  34. package/dist/core/agent/stages/toolCalls.js.map +1 -1
  35. package/dist/core/agent/stages/window.js +5 -2
  36. package/dist/core/agent/stages/window.js.map +1 -1
  37. package/dist/core/agent/toolResultCap.js +0 -0
  38. package/dist/core/agent/toolResultCap.js.map +1 -1
  39. package/dist/core/agent/window/ledgerFactPins.js +13 -2
  40. package/dist/core/agent/window/ledgerFactPins.js.map +1 -1
  41. package/dist/core/agent/window/toolNames.js +17 -2
  42. package/dist/core/agent/window/toolNames.js.map +1 -1
  43. package/dist/core/checkin.js +5 -1
  44. package/dist/core/checkin.js.map +1 -1
  45. package/dist/core/runCheckpoint.js +26 -2
  46. package/dist/core/runCheckpoint.js.map +1 -1
  47. package/dist/esm/adapters/observability/audit.d.ts +8 -0
  48. package/dist/esm/adapters/observability/audit.js +8 -0
  49. package/dist/esm/adapters/observability/audit.js.map +1 -1
  50. package/dist/esm/adapters/observability/otel.d.ts +17 -2
  51. package/dist/esm/adapters/observability/otel.js +44 -2
  52. package/dist/esm/adapters/observability/otel.js.map +1 -1
  53. package/dist/esm/adapters/observability/xray.d.ts +8 -0
  54. package/dist/esm/adapters/observability/xray.js +19 -0
  55. package/dist/esm/adapters/observability/xray.js.map +1 -1
  56. package/dist/esm/adapters/types.d.ts +49 -0
  57. package/dist/esm/adapters/types.js.map +1 -1
  58. package/dist/esm/core/Agent.js +11 -1
  59. package/dist/esm/core/Agent.js.map +1 -1
  60. package/dist/esm/core/agent/composeRequest.d.ts +10 -7
  61. package/dist/esm/core/agent/composeRequest.js +19 -11
  62. package/dist/esm/core/agent/composeRequest.js.map +1 -1
  63. package/dist/esm/core/agent/coverage/absent.d.ts +31 -4
  64. package/dist/esm/core/agent/coverage/absent.js +160 -6
  65. package/dist/esm/core/agent/coverage/absent.js.map +1 -1
  66. package/dist/esm/core/agent/coverage/answer.js +3 -1
  67. package/dist/esm/core/agent/coverage/answer.js.map +1 -1
  68. package/dist/esm/core/agent/coverage/index.d.ts +1 -1
  69. package/dist/esm/core/agent/coverage/read.d.ts +9 -1
  70. package/dist/esm/core/agent/coverage/read.js +16 -12
  71. package/dist/esm/core/agent/coverage/read.js.map +1 -1
  72. package/dist/esm/core/agent/coverage/types.d.ts +42 -0
  73. package/dist/esm/core/agent/findings/ledger.d.ts +23 -6
  74. package/dist/esm/core/agent/findings/ledger.js +27 -5
  75. package/dist/esm/core/agent/findings/ledger.js.map +1 -1
  76. package/dist/esm/core/agent/findings/offer.d.ts +23 -6
  77. package/dist/esm/core/agent/findings/offer.js +27 -8
  78. package/dist/esm/core/agent/findings/offer.js.map +1 -1
  79. package/dist/esm/core/agent/findings/serve.d.ts +19 -6
  80. package/dist/esm/core/agent/findings/serve.js +77 -8
  81. package/dist/esm/core/agent/findings/serve.js.map +1 -1
  82. package/dist/esm/core/agent/findings/types.d.ts +81 -1
  83. package/dist/esm/core/agent/findings/types.js.map +1 -1
  84. package/dist/esm/core/agent/findings/unsettled.d.ts +121 -0
  85. package/dist/esm/core/agent/findings/unsettled.js +271 -0
  86. package/dist/esm/core/agent/findings/unsettled.js.map +1 -0
  87. package/dist/esm/core/agent/stages/callLLM.js +30 -8
  88. package/dist/esm/core/agent/stages/callLLM.js.map +1 -1
  89. package/dist/esm/core/agent/stages/route.js +10 -2
  90. package/dist/esm/core/agent/stages/route.js.map +1 -1
  91. package/dist/esm/core/agent/stages/toolCalls.d.ts +90 -2
  92. package/dist/esm/core/agent/stages/toolCalls.js +244 -31
  93. package/dist/esm/core/agent/stages/toolCalls.js.map +1 -1
  94. package/dist/esm/core/agent/stages/window.js +5 -2
  95. package/dist/esm/core/agent/stages/window.js.map +1 -1
  96. package/dist/esm/core/agent/toolResultCap.d.ts +4 -1
  97. package/dist/esm/core/agent/toolResultCap.js +0 -0
  98. package/dist/esm/core/agent/toolResultCap.js.map +1 -1
  99. package/dist/esm/core/agent/types.d.ts +5 -0
  100. package/dist/esm/core/agent/window/ledgerFactPins.d.ts +10 -1
  101. package/dist/esm/core/agent/window/ledgerFactPins.js +13 -2
  102. package/dist/esm/core/agent/window/ledgerFactPins.js.map +1 -1
  103. package/dist/esm/core/agent/window/strategy.d.ts +2 -1
  104. package/dist/esm/core/agent/window/toolNames.d.ts +16 -1
  105. package/dist/esm/core/agent/window/toolNames.js +17 -2
  106. package/dist/esm/core/agent/window/toolNames.js.map +1 -1
  107. package/dist/esm/core/checkin.js +5 -1
  108. package/dist/esm/core/checkin.js.map +1 -1
  109. package/dist/esm/core/runCheckpoint.js +26 -2
  110. package/dist/esm/core/runCheckpoint.js.map +1 -1
  111. package/dist/esm/events/payloads.d.ts +76 -1
  112. package/dist/esm/index.d.ts +2 -2
  113. package/dist/esm/index.js.map +1 -1
  114. package/dist/esm/lib/bug-report/transcript.d.ts +5 -0
  115. package/dist/esm/lib/bug-report/transcript.js +1 -0
  116. package/dist/esm/lib/bug-report/transcript.js.map +1 -1
  117. package/dist/esm/lib/semantics/projection.js +1 -0
  118. package/dist/esm/lib/semantics/projection.js.map +1 -1
  119. package/dist/esm/lib/time-travel/receipt.d.ts +4 -3
  120. package/dist/esm/lib/time-travel/receipt.js +4 -3
  121. package/dist/esm/lib/time-travel/receipt.js.map +1 -1
  122. package/dist/esm/lib/time-travel/servedView.js +13 -9
  123. package/dist/esm/lib/time-travel/servedView.js.map +1 -1
  124. package/dist/esm/lib/trace-toolpack/traceToolpack.js +130 -17
  125. package/dist/esm/lib/trace-toolpack/traceToolpack.js.map +1 -1
  126. package/dist/esm/memory/causal/evidenceRecorder.d.ts +2 -0
  127. package/dist/esm/memory/causal/evidenceRecorder.js +13 -0
  128. package/dist/esm/memory/causal/evidenceRecorder.js.map +1 -1
  129. package/dist/esm/recorders/observability/AgentThinkingTraceRecorder.d.ts +2 -0
  130. package/dist/esm/recorders/observability/AgentThinkingTraceRecorder.js +11 -0
  131. package/dist/esm/recorders/observability/AgentThinkingTraceRecorder.js.map +1 -1
  132. package/dist/esm/recorders/observability/BoundaryRecorder.d.ts +10 -1
  133. package/dist/esm/recorders/observability/BoundaryRecorder.js +9 -1
  134. package/dist/esm/recorders/observability/BoundaryRecorder.js.map +1 -1
  135. package/dist/esm/recorders/observability/FlowchartRecorder.d.ts +4 -1
  136. package/dist/esm/recorders/observability/FlowchartRecorder.js +13 -1
  137. package/dist/esm/recorders/observability/FlowchartRecorder.js.map +1 -1
  138. package/dist/esm/recorders/observability/LiveStateRecorder.d.ts +2 -0
  139. package/dist/esm/recorders/observability/LiveStateRecorder.js +9 -0
  140. package/dist/esm/recorders/observability/LiveStateRecorder.js.map +1 -1
  141. package/dist/esm/recorders/observability/RouteRecorder.js +5 -0
  142. package/dist/esm/recorders/observability/RouteRecorder.js.map +1 -1
  143. package/dist/esm/recorders/observability/StatusRecorder.js +7 -0
  144. package/dist/esm/recorders/observability/StatusRecorder.js.map +1 -1
  145. package/dist/esm/recorders/observability/ToolChoiceRecorder.js +5 -0
  146. package/dist/esm/recorders/observability/ToolChoiceRecorder.js.map +1 -1
  147. package/dist/esm/recorders/observability/commentary/commentaryTemplates.js +18 -2
  148. package/dist/esm/recorders/observability/commentary/commentaryTemplates.js.map +1 -1
  149. package/dist/esm/recorders/observability/status/statusTemplates.js +5 -0
  150. package/dist/esm/recorders/observability/status/statusTemplates.js.map +1 -1
  151. package/dist/esm/security/extractSequence.d.ts +36 -5
  152. package/dist/esm/security/extractSequence.js +99 -26
  153. package/dist/esm/security/extractSequence.js.map +1 -1
  154. package/dist/index.js.map +1 -1
  155. package/dist/lib/bug-report/transcript.js +1 -0
  156. package/dist/lib/bug-report/transcript.js.map +1 -1
  157. package/dist/lib/semantics/projection.js +1 -0
  158. package/dist/lib/semantics/projection.js.map +1 -1
  159. package/dist/lib/time-travel/receipt.js +4 -3
  160. package/dist/lib/time-travel/receipt.js.map +1 -1
  161. package/dist/lib/time-travel/servedView.js +13 -9
  162. package/dist/lib/time-travel/servedView.js.map +1 -1
  163. package/dist/lib/trace-toolpack/traceToolpack.js +130 -17
  164. package/dist/lib/trace-toolpack/traceToolpack.js.map +1 -1
  165. package/dist/memory/causal/evidenceRecorder.js +13 -0
  166. package/dist/memory/causal/evidenceRecorder.js.map +1 -1
  167. package/dist/recorders/observability/AgentThinkingTraceRecorder.js +11 -0
  168. package/dist/recorders/observability/AgentThinkingTraceRecorder.js.map +1 -1
  169. package/dist/recorders/observability/BoundaryRecorder.js +9 -1
  170. package/dist/recorders/observability/BoundaryRecorder.js.map +1 -1
  171. package/dist/recorders/observability/FlowchartRecorder.js +13 -1
  172. package/dist/recorders/observability/FlowchartRecorder.js.map +1 -1
  173. package/dist/recorders/observability/LiveStateRecorder.js +9 -0
  174. package/dist/recorders/observability/LiveStateRecorder.js.map +1 -1
  175. package/dist/recorders/observability/RouteRecorder.js +5 -0
  176. package/dist/recorders/observability/RouteRecorder.js.map +1 -1
  177. package/dist/recorders/observability/StatusRecorder.js +7 -0
  178. package/dist/recorders/observability/StatusRecorder.js.map +1 -1
  179. package/dist/recorders/observability/ToolChoiceRecorder.js +5 -0
  180. package/dist/recorders/observability/ToolChoiceRecorder.js.map +1 -1
  181. package/dist/recorders/observability/commentary/commentaryTemplates.js +18 -2
  182. package/dist/recorders/observability/commentary/commentaryTemplates.js.map +1 -1
  183. package/dist/recorders/observability/status/statusTemplates.js +5 -0
  184. package/dist/recorders/observability/status/statusTemplates.js.map +1 -1
  185. package/dist/security/extractSequence.js +99 -26
  186. package/dist/security/extractSequence.js.map +1 -1
  187. package/dist/types/adapters/observability/audit.d.ts +8 -0
  188. package/dist/types/adapters/observability/audit.d.ts.map +1 -1
  189. package/dist/types/adapters/observability/otel.d.ts +17 -2
  190. package/dist/types/adapters/observability/otel.d.ts.map +1 -1
  191. package/dist/types/adapters/observability/xray.d.ts +8 -0
  192. package/dist/types/adapters/observability/xray.d.ts.map +1 -1
  193. package/dist/types/adapters/types.d.ts +49 -0
  194. package/dist/types/adapters/types.d.ts.map +1 -1
  195. package/dist/types/core/Agent.d.ts.map +1 -1
  196. package/dist/types/core/agent/composeRequest.d.ts +10 -7
  197. package/dist/types/core/agent/composeRequest.d.ts.map +1 -1
  198. package/dist/types/core/agent/coverage/absent.d.ts +31 -4
  199. package/dist/types/core/agent/coverage/absent.d.ts.map +1 -1
  200. package/dist/types/core/agent/coverage/answer.d.ts.map +1 -1
  201. package/dist/types/core/agent/coverage/index.d.ts +1 -1
  202. package/dist/types/core/agent/coverage/index.d.ts.map +1 -1
  203. package/dist/types/core/agent/coverage/read.d.ts +9 -1
  204. package/dist/types/core/agent/coverage/read.d.ts.map +1 -1
  205. package/dist/types/core/agent/coverage/types.d.ts +42 -0
  206. package/dist/types/core/agent/coverage/types.d.ts.map +1 -1
  207. package/dist/types/core/agent/findings/ledger.d.ts +23 -6
  208. package/dist/types/core/agent/findings/ledger.d.ts.map +1 -1
  209. package/dist/types/core/agent/findings/offer.d.ts +23 -6
  210. package/dist/types/core/agent/findings/offer.d.ts.map +1 -1
  211. package/dist/types/core/agent/findings/serve.d.ts +19 -6
  212. package/dist/types/core/agent/findings/serve.d.ts.map +1 -1
  213. package/dist/types/core/agent/findings/types.d.ts +81 -1
  214. package/dist/types/core/agent/findings/types.d.ts.map +1 -1
  215. package/dist/types/core/agent/findings/unsettled.d.ts +122 -0
  216. package/dist/types/core/agent/findings/unsettled.d.ts.map +1 -0
  217. package/dist/types/core/agent/stages/callLLM.d.ts.map +1 -1
  218. package/dist/types/core/agent/stages/route.d.ts.map +1 -1
  219. package/dist/types/core/agent/stages/toolCalls.d.ts +90 -2
  220. package/dist/types/core/agent/stages/toolCalls.d.ts.map +1 -1
  221. package/dist/types/core/agent/stages/window.d.ts.map +1 -1
  222. package/dist/types/core/agent/toolResultCap.d.ts +4 -1
  223. package/dist/types/core/agent/toolResultCap.d.ts.map +1 -1
  224. package/dist/types/core/agent/types.d.ts +5 -0
  225. package/dist/types/core/agent/types.d.ts.map +1 -1
  226. package/dist/types/core/agent/window/ledgerFactPins.d.ts +10 -1
  227. package/dist/types/core/agent/window/ledgerFactPins.d.ts.map +1 -1
  228. package/dist/types/core/agent/window/strategy.d.ts +2 -1
  229. package/dist/types/core/agent/window/strategy.d.ts.map +1 -1
  230. package/dist/types/core/agent/window/toolNames.d.ts +16 -1
  231. package/dist/types/core/agent/window/toolNames.d.ts.map +1 -1
  232. package/dist/types/core/checkin.d.ts.map +1 -1
  233. package/dist/types/core/runCheckpoint.d.ts.map +1 -1
  234. package/dist/types/events/payloads.d.ts +76 -1
  235. package/dist/types/events/payloads.d.ts.map +1 -1
  236. package/dist/types/index.d.ts +2 -2
  237. package/dist/types/index.d.ts.map +1 -1
  238. package/dist/types/lib/bug-report/transcript.d.ts +5 -0
  239. package/dist/types/lib/bug-report/transcript.d.ts.map +1 -1
  240. package/dist/types/lib/semantics/projection.d.ts.map +1 -1
  241. package/dist/types/lib/time-travel/receipt.d.ts +4 -3
  242. package/dist/types/lib/time-travel/receipt.d.ts.map +1 -1
  243. package/dist/types/lib/time-travel/servedView.d.ts.map +1 -1
  244. package/dist/types/lib/trace-toolpack/traceToolpack.d.ts.map +1 -1
  245. package/dist/types/memory/causal/evidenceRecorder.d.ts +2 -0
  246. package/dist/types/memory/causal/evidenceRecorder.d.ts.map +1 -1
  247. package/dist/types/recorders/observability/AgentThinkingTraceRecorder.d.ts +2 -0
  248. package/dist/types/recorders/observability/AgentThinkingTraceRecorder.d.ts.map +1 -1
  249. package/dist/types/recorders/observability/BoundaryRecorder.d.ts +10 -1
  250. package/dist/types/recorders/observability/BoundaryRecorder.d.ts.map +1 -1
  251. package/dist/types/recorders/observability/FlowchartRecorder.d.ts +4 -1
  252. package/dist/types/recorders/observability/FlowchartRecorder.d.ts.map +1 -1
  253. package/dist/types/recorders/observability/LiveStateRecorder.d.ts +2 -0
  254. package/dist/types/recorders/observability/LiveStateRecorder.d.ts.map +1 -1
  255. package/dist/types/recorders/observability/RouteRecorder.d.ts.map +1 -1
  256. package/dist/types/recorders/observability/ToolChoiceRecorder.d.ts.map +1 -1
  257. package/dist/types/recorders/observability/commentary/commentaryTemplates.d.ts.map +1 -1
  258. package/dist/types/recorders/observability/status/statusTemplates.d.ts.map +1 -1
  259. package/dist/types/security/extractSequence.d.ts +36 -5
  260. package/dist/types/security/extractSequence.d.ts.map +1 -1
  261. package/package.json +1 -1
@@ -27,7 +27,13 @@
27
27
  * on the record — one line per `ContingentRow`, the value the model used
28
28
  * and every result that carried it with the standing the model gave that
29
29
  * result (`contingent.ts` is the rule; this only quotes the rows; the
30
- * heading says the lines are the library's join, not a declaration). Every
30
+ * heading says the lines are the library's join, not a declaration). After
31
+ * it, `unsettled by absence (read off the record):` (9.113.0) quotes the
32
+ * rows the fold keeps beside a ruled-out standing whose only witness was an
33
+ * absence — what the envelope, as the model was served it, said it did not
34
+ * check and its `try_instead`, in its own field names (`unsettled.ts` is
35
+ * the rule, and quotes nothing the model was not served; the model's own
36
+ * ruled-out line stays in `limitations`, exactly as declared). Every
31
37
  * bucket is bounded
32
38
  * (`FINDINGS_PIECE_LIMITS`) and every overflow is STATED; an empty bucket is
33
39
  * omitted rather than rendered as "no facts". A basis-only ledger
@@ -122,14 +128,15 @@ exports.isCollapsedToolResult = isCollapsedToolResult;
122
128
  * section: the piece's sections are separated by a blank line, and an id
123
129
  * carrying `\n\nfacts (declared by the model):\n…` would otherwise render as
124
130
  * a second, forged, library-authored bucket. `pieceChars` is the ceiling the
125
- * other three imply for the whole piece (header + the four buckets and the
126
- * contingent section at their cap + two count lines at theirs + the ask):
131
+ * other three imply for the whole piece (header + the four buckets, the
132
+ * contingent section and the unsettled section at their cap + two count
133
+ * lines at theirs + the ask):
127
134
  * stated, not enforced by a cut, and pinned by `serve.test.ts` ("the whole
128
135
  * piece stays under pieceChars"), which measures a ledger at every cap at
129
136
  * once against it.
130
137
  */
131
138
  exports.FINDINGS_PIECE_LIMITS = Object.freeze({
132
- /** Lines per text bucket (facts, limitations, evidenceRefs, nextSteps, contingent) before `+K more`. */
139
+ /** Lines per text bucket (facts, limitations, evidenceRefs, nextSteps, contingent, unsettled) before `+K more`. */
133
140
  bucketLines: 64,
134
141
  /** Ids per count line (noise, undeclared) before `+K more`. */
135
142
  listedIds: 32,
@@ -137,8 +144,8 @@ exports.FINDINGS_PIECE_LIMITS = Object.freeze({
137
144
  lineChars: 240,
138
145
  /** Chars per id on a count line before `…[clipped N chars]` — an id is an identifier. */
139
146
  idChars: 64,
140
- /** The whole piece's ceiling in chars, implied by the three bounds above (raised for the fifth capped section, 9.110.0). */
141
- pieceChars: 98_304,
147
+ /** The whole piece's ceiling in chars, implied by the three bounds above (raised for the fifth capped section, 9.110.0, and the sixth, 9.113.0). */
148
+ pieceChars: 114_688,
142
149
  });
143
150
  /** The four contract fields the piece serves, in the order they appear. */
144
151
  const FIELDS = ['facts', 'limitations', 'evidenceRefs', 'nextSteps'];
@@ -170,6 +177,7 @@ function findingsLedgerPiece(rows, served = [], answerAsk = 'none') {
170
177
  bucket('evidenceRefs', openLines(current, tested)),
171
178
  bucket('nextSteps', nextStepLines(current)),
172
179
  contingentSection(rows),
180
+ unsettledSection(fold),
173
181
  countLine(`noise (${DECLARED})`, idsWith(current, 'noise'), ''),
174
182
  countLine('undeclared', (0, offer_js_1.undeclaredIds)(served, fold.standingOf), ', served in full below'),
175
183
  ...(answerAsk === 'quote-facts' ? [reserved_js_1.FINDINGS_ANSWER_ASK] : []),
@@ -364,6 +372,58 @@ function contingentSection(rows) {
364
372
  const over = lines.length - shown.length;
365
373
  return [CONTINGENT_HEADING, ...shown, ...(over > 0 ? [`+${over} more (cap ${max})`] : [])].join('\n');
366
374
  }
375
+ /**
376
+ * The heading of the section that quotes the rows beside a ruled-out
377
+ * standing whose only witness is an absence (9.113.0). It says where the
378
+ * lines come from for the reason `CONTINGENT_HEADING` does: the piece's
379
+ * header says everything below it is what the model itself declared, and
380
+ * these lines are the library's reading of the result the model ruled out
381
+ * on — its envelope's own words, quoted.
382
+ */
383
+ const UNSETTLED_HEADING = 'unsettled by absence (read off the record):';
384
+ /**
385
+ * The ruled-out standings that rest on an absence (9.113.0) — for each row
386
+ * the fold keeps (`ledger.ts · foldLedger`'s `unsettled`: the last row per
387
+ * result while its current standing is still `ruled-out`), in fold order:
388
+ * one head line in the ruled-out line's own identity form, `ruled out
389
+ * (<toolName>, tool:<id>) on an absence`, then one line per part of the
390
+ * envelope, each anchored to its call by id and keyed by the envelope's own
391
+ * field name — `tool:<id> not_checked: <what>[ — <why>]`, `tool:<id>
392
+ * cannot_cover: …`, `tool:<id> try_instead: <the string as printed>`. One
393
+ * line per part, so no part is cut by another's length (the line cap clips
394
+ * each on its own); capped like a bucket, by lines, with the overflow
395
+ * stated; omitted when the fold keeps none. The model's own ruled-out line
396
+ * stays in `limitations`, as declared.
397
+ */
398
+ function unsettledSection(fold) {
399
+ const lines = [];
400
+ for (const row of fold.unsettled.values()) {
401
+ // Always present: the fold keeps a row only beside a current ruled-out standing.
402
+ const standing = fold.standingOf.get(row.toolCallId);
403
+ if (standing === undefined)
404
+ continue;
405
+ lines.push(clipLine(`ruled out (${whereOf(standing)}) on an absence`));
406
+ const id = `tool:${row.toolCallId}`;
407
+ for (const item of row.notChecked ?? []) {
408
+ lines.push(clipLine(`${id} not_checked: ${itemText(item)}`));
409
+ }
410
+ for (const item of row.cannotCover ?? []) {
411
+ lines.push(clipLine(`${id} cannot_cover: ${itemText(item)}`));
412
+ }
413
+ if (row.tryInstead !== undefined)
414
+ lines.push(clipLine(`${id} try_instead: ${row.tryInstead}`));
415
+ }
416
+ if (lines.length === 0)
417
+ return undefined;
418
+ const max = exports.FINDINGS_PIECE_LIMITS.bucketLines;
419
+ const shown = lines.slice(0, max);
420
+ const over = lines.length - shown.length;
421
+ return [UNSETTLED_HEADING, ...shown, ...(over > 0 ? [`+${over} more (cap ${max})`] : [])].join('\n');
422
+ }
423
+ /** `<what>[ — <why>]` — one coverage item as the answer's coverage block renders it. */
424
+ function itemText(item) {
425
+ return `${item.what}${item.why === undefined ? '' : ` — ${item.why}`}`;
426
+ }
367
427
  // ─── Rendering ─────────────────────────────────────────────────────────
368
428
  /** `tool:<id>[ | artifact:<ref>][ (unknown id)]` — the row's own identities. */
369
429
  function provenanceOf(row) {
@@ -414,6 +474,12 @@ function clip(text, max) {
414
474
  * ticket. The SAME array instance when nothing collapses; otherwise a new
415
475
  * array of the same length and order in which only the collapsed entries
416
476
  * are new objects.
477
+ *
478
+ * Hand it the COMMITTED conversation and strip afterwards (9.113.0): a
479
+ * message the batch settlement wrote is recognised by its marker
480
+ * (`offer.ts` · `isResultMessage`), which `stripFrameworkFields` removes. A
481
+ * collapsed entry keeps every other field, so stripping after is the same
482
+ * wire as stripping before.
417
483
  */
418
484
  function collapseJudged(messages, rows, mode) {
419
485
  if (rows === undefined)
@@ -433,7 +499,10 @@ function collapseJudged(messages, rows, mode) {
433
499
  }
434
500
  exports.collapseJudged = collapseJudged;
435
501
  function ticketFor(m, standingOf, mode) {
436
- if (m.role !== 'tool' || m.toolCallId === undefined)
502
+ // A settled message is no result (`offer.ts` · `isResultMessage`): a
503
+ // standing that names its id (filed `unknownId`, as written) never turns the
504
+ // library's sentence about a call that never ran into a ticket.
505
+ if (!(0, offer_js_1.isResultMessage)(m) || m.toolCallId === undefined)
437
506
  return undefined;
438
507
  const row = standingOf.get(m.toolCallId);
439
508
  if (row === undefined || !collapses(row.standing, mode))
@@ -1 +1 @@
1
- {"version":3,"file":"serve.js","sourceRoot":"","sources":["../../../../src/core/agent/findings/serve.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serve.js","sourceRoot":"","sources":["../../../../src/core/agent/findings/serve.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/core/agent/findings/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;;;AAIH,kFAAkF;AACrE,QAAA,iBAAiB,GAAG,WAAoB,CAAC;AACtD,8EAA8E;AACjE,QAAA,mBAAmB,GAAG,WAAoB,CAAC;AASxD,wEAAwE;AAC3D,QAAA,YAAY,GAAqB,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC;AAC1E,QAAA,aAAa,GAAsB,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;AAC5E,QAAA,eAAe,GAAwB,MAAM,CAAC,MAAM,CAAC;IAChE,MAAM;IACN,MAAM;IACN,OAAO;IACP,WAAW;CACZ,CAAC,CAAC;AAEH;;;;;;;GAOG;AACU,QAAA,iBAAiB,GAAG,GAAG,CAAC;AA4HrC;;;;;GAKG;AACU,QAAA,kBAAkB,GAAG,IAAI,CAAC;AA4DvC;;;;;;GAMG;AACU,QAAA,sBAAsB,GAAG,GAAG,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/core/agent/findings/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;;;AAKH,kFAAkF;AACrE,QAAA,iBAAiB,GAAG,WAAoB,CAAC;AACtD,8EAA8E;AACjE,QAAA,mBAAmB,GAAG,WAAoB,CAAC;AASxD,wEAAwE;AAC3D,QAAA,YAAY,GAAqB,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC;AAC1E,QAAA,aAAa,GAAsB,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;AAC5E,QAAA,eAAe,GAAwB,MAAM,CAAC,MAAM,CAAC;IAChE,MAAM;IACN,MAAM;IACN,OAAO;IACP,WAAW;CACZ,CAAC,CAAC;AAEH;;;;;;;GAOG;AACU,QAAA,iBAAiB,GAAG,GAAG,CAAC;AA4HrC;;;;;GAKG;AACU,QAAA,kBAAkB,GAAG,IAAI,CAAC;AA4DvC;;;;;;GAMG;AACU,QAAA,sBAAsB,GAAG,GAAG,CAAC"}
@@ -0,0 +1,276 @@
1
+ "use strict";
2
+ /**
3
+ * findings/unsettled — "nothing was found" is not "ruled out".
4
+ *
5
+ * Pattern: one pure rule over (a standing the model just declared, the
6
+ * result the model was served for it, the coverage the dispatch
7
+ * door recorded); the sibling of `contingent.ts`. That one asks
8
+ * "did the model build on a result it had set aside?"; this one
9
+ * asks "did the model set something aside on a result that held
10
+ * nothing?".
11
+ * Role: core/ layer leaf. The two moments that file standings —
12
+ * `stages/toolCalls.ts` (a call's `_findings.previous`) and
13
+ * `stages/route.ts` (the answer's) — pass their standing rows
14
+ * through `withUnsettledRows` on the way to `ledger.ts ·
15
+ * recordFindings`, the one writer, so a derived row lands in the
16
+ * same write, immediately after the standing it is beside.
17
+ * Emits: N/A — and the writer emits nothing for the row either (the
18
+ * conflict row's precedent; see `ledger.ts · recordFindings`).
19
+ *
20
+ * ## The owner's ask, and the rule that answers it
21
+ *
22
+ * A model rules out an HBA path because an HBA lookup keyed on a storage
23
+ * cluster's name found nothing — and the lookup's own envelope said it never
24
+ * checked whether that name is a host at all. The model's `ruled-out` is its
25
+ * word and stays its word: the library never writes a standing (round 1 of
26
+ * the design re-filed it as `open`, which made the library a second writer
27
+ * of the model's word — docs/design/2026-09-honest-answer-ledger.md § 14,
28
+ * R12). What the library adds is a row BESIDE it:
29
+ *
30
+ * a `ruled-out` standing whose ONLY witness is an absence gets an
31
+ * `unsettled-by-absence` row, keyed to the standing's `toolCallId`,
32
+ * carrying what the envelope says was not checked and its `try_instead`
33
+ * as printed.
34
+ *
35
+ * The fences, because they are the rule's honesty:
36
+ * - TWO FACTS, TWO OWNERS, BOTH REQUIRED. "Did the tool return an absence?"
37
+ * has one owner: the dispatch door (`stages/toolCalls.ts ·
38
+ * declareCoverage`), which reads the value the tool RETURNED through the
39
+ * one recognizer (`coverage/read.ts · readCoverageResult`), delivers the
40
+ * status `'absent'`, emits `tools.absent` and files the call's rows on
41
+ * `AgentState.coverageDeclared`. This rule never re-reads a result to
42
+ * decide that: an envelope a tool returned as TEXT (an MCP server in its
43
+ * default text mode) was no absence at the door (no status, no event, no
44
+ * row), so it is none here either, and the record holds one answer, not
45
+ * two. "Was the model SERVED an absence?" has another owner: the result as
46
+ * the model was served it (`offer.ts · knownResults`, the identity source
47
+ * the standing itself resolved against). The door records the return
48
+ * BEFORE the after-tool chain, the tool's own ceiling and placement act,
49
+ * so an after-tool `deny` ("the model does not get to read this"), a
50
+ * ceiling's refusal, a placement ticket, a summary or an agent cap's cut
51
+ * leave the door's rows saying absence while the model read something
52
+ * else. A ruling-out rests on what the model READ: the row is filed only
53
+ * when both hold, and it never quotes a word the model was not served.
54
+ * - THE ROW'S WORDS ARE WHAT THE MODEL WAS SERVED. The served string's
55
+ * LEADING JSON object — the dispatch loop serves the value's
56
+ * serialization and joins any framework note AFTER it (a step
57
+ * boundary's, a refused effect's, the repeated-call note) — read by the
58
+ * one recognizer, bare or bounded by `coverage()`. `notChecked` /
59
+ * `cannotCover` are that object's lists merged in the recognizer's order
60
+ * (a bounding ledger first, then the absence; repeats dropped), so a
61
+ * scrub the chain applied is honored; `tryInstead` is its absence's
62
+ * `try_instead`, carried byte for byte when it is a non-blank string —
63
+ * never parsed and never read for a tool name (a tool name found inside
64
+ * prose is an inference). Every item is read, never trusted: copied as
65
+ * `{ what, why? }`, and one that names no ground left out — a row the
66
+ * checkpoint door would refuse is never filed. The door's own copies are
67
+ * the witness that the tool returned an absence, and nothing more: they
68
+ * are never quoted.
69
+ * - RULED-OUT ONLY. `open` is already unsettled in the model's own word, and
70
+ * `noise` says the result held nothing worth reading — which an absence
71
+ * is. Only a ruling-out claims more than its witness can hold.
72
+ * - A RECORD OF A CHECK. The row is written once, at the standing's moment,
73
+ * and never recomputed (`types.ts · UnsettledByAbsenceRow`); which rows are
74
+ * CURRENT is the ledger's one fold (`ledger.ts · foldLedger`).
75
+ * - TOTAL. Every reader here takes what other code wrote and refuses a shape
76
+ * it cannot read by filing nothing, never by throwing: a derived row must
77
+ * never fail the run.
78
+ *
79
+ * Not read, and named in the README so nobody reads it as covered: a zero-row
80
+ * array (no door records a zero-row reading of the value a tool returned, and
81
+ * counting the SERVED string would count a text `'[]'` that
82
+ * `integrity/empty-lookup/check.ts · readLookupResult` declines — a second
83
+ * answer), a result whose door rows are not on this run's state — an
84
+ * earlier turn of a continued conversation, or a run before `resumeOnError`
85
+ * (`coverageDeclared` is per run and not on the `AgentRunCheckpoint`) — and
86
+ * the envelope's TYPED suggestion, `try_instead_tool`: the row carries the
87
+ * `try_instead` string alone, because nothing in this release reads a typed
88
+ * tool off the row (the join that would, `source-not-consulted`, is not
89
+ * built).
90
+ *
91
+ * `.findings()` must be armed for any of this to run — both call sites sit
92
+ * inside the ledger's gate — and the door's key is read only for a
93
+ * `ruled-out` standing whose result was SERVED as an absence, so a run whose
94
+ * model rules out no such result records the bytes it always did.
95
+ */
96
+ Object.defineProperty(exports, "__esModule", { value: true });
97
+ exports.withUnsettledRows = exports.unsettledRowOf = void 0;
98
+ const absent_js_1 = require("../coverage/absent.js");
99
+ const items_js_1 = require("../coverage/items.js");
100
+ const ledger_js_1 = require("../coverage/ledger.js");
101
+ const read_js_1 = require("../coverage/read.js");
102
+ /**
103
+ * The rule for ONE standing: the derived row beside it, or nothing. Only a
104
+ * `ruled-out` standing on a result the run identified (the same `known` list
105
+ * `ledger.ts · standingRowsFrom` resolved it against) whose served string
106
+ * reads as an absence AND whose call the door recorded as one (`declared` is
107
+ * `AgentState.coverageDeclared`).
108
+ */
109
+ function unsettledRowOf(standing, known, declared) {
110
+ if (!isReadByTheRule(standing))
111
+ return undefined;
112
+ const served = servedAbsenceOf(standing.toolCallId, known);
113
+ return served === undefined ? undefined : rowOf(standing, served, declared);
114
+ }
115
+ exports.unsettledRowOf = unsettledRowOf;
116
+ /**
117
+ * The standings in declaration order, each followed immediately by its
118
+ * derived row when the rule files one — what both moments hand to
119
+ * `recordFindings`. The standing rows are the caller's objects, pushed
120
+ * as they are: a batch the rule files nothing beside comes back row for row.
121
+ *
122
+ * `readDeclared` hands over `AgentState.coverageDeclared` and is called at
123
+ * most once, and only for a standing the rule reads (a `ruled-out` on an
124
+ * identified result) whose served result reads as an absence — a pure
125
+ * reading of strings the moment already holds, taken first. A tracked read
126
+ * is visible to every recorder (a narrative line, a `readKeys` entry under
127
+ * `writeProvenance`), so an armed run whose model rules out only results
128
+ * that held something reads nothing it did not read before (the
129
+ * `contingent.ts · hasSetAsideStanding` gate's precedent).
130
+ */
131
+ function withUnsettledRows(standings, known, readDeclared) {
132
+ const rows = [];
133
+ let declared;
134
+ for (const standing of standings) {
135
+ rows.push(standing);
136
+ if (!isReadByTheRule(standing))
137
+ continue;
138
+ const served = servedAbsenceOf(standing.toolCallId, known);
139
+ if (served === undefined)
140
+ continue;
141
+ declared ??= readDeclared();
142
+ const derived = rowOf(standing, served, declared);
143
+ if (derived !== undefined)
144
+ rows.push(derived);
145
+ }
146
+ return rows;
147
+ }
148
+ exports.withUnsettledRows = withUnsettledRows;
149
+ /**
150
+ * A `ruled-out` standing on a result the run identified — the only standing
151
+ * the rule reads. A call the batch settlement answered
152
+ * (`LLMMessage.notDispatched`) is no result (`offer.ts · isResultMessage`), so
153
+ * a standing that names it is `unknownId` and stops here — and it never
154
+ * reached the dispatch door, so no door row could witness it either.
155
+ */
156
+ function isReadByTheRule(standing) {
157
+ return standing.standing === 'ruled-out' && standing.unknownId !== true;
158
+ }
159
+ /**
160
+ * The row, once the model was served an absence: filed only when the door
161
+ * also recorded the call as one, and worded from what was SERVED — the lists
162
+ * in the recognizer's order, the `try_instead` byte for byte.
163
+ */
164
+ function rowOf(standing, served, declared) {
165
+ const door = declaredFor(standing.toolCallId, declared);
166
+ if (!door.some((row) => row.kind === 'absence'))
167
+ return undefined;
168
+ const facts = served.reading.declared;
169
+ const notChecked = (0, items_js_1.mergeItems)(facts.map((f) => itemsOf(f.coverage.notChecked)));
170
+ const cannotCover = (0, items_js_1.mergeItems)(facts.map((f) => itemsOf(f.coverage.cannotCover)));
171
+ const said = served.absence.try_instead;
172
+ return {
173
+ kind: 'unsettled-by-absence',
174
+ toolCallId: standing.toolCallId,
175
+ ...(notChecked.length > 0 && { notChecked }),
176
+ ...(cannotCover.length > 0 && { cannotCover }),
177
+ ...(isSaid(said) && { tryInstead: said }),
178
+ iteration: standing.iteration,
179
+ };
180
+ }
181
+ /**
182
+ * The result the model was served for one call, read as an absence: the
183
+ * served string's leading JSON object through the one recognizer
184
+ * (`coverage/read.ts · readCoverageResult` — the door's own law, so the two
185
+ * cannot disagree about what an absence looks like), and the absence it
186
+ * holds, bare or inside the bounding ledger (the recognizer's own order).
187
+ * `undefined` when the model was served no absence.
188
+ */
189
+ function servedAbsenceOf(toolCallId, known) {
190
+ const value = leadingObjectOf(known.find((r) => r.toolCallId === toolCallId)?.result);
191
+ if (value === undefined)
192
+ return undefined;
193
+ const reading = (0, read_js_1.readCoverageResult)(value);
194
+ if (reading?.status !== 'absent')
195
+ return undefined;
196
+ const absence = (0, absent_js_1.readAbsence)(value) ?? (0, absent_js_1.readAbsence)((0, ledger_js_1.readCoverageLedger)(value)?.result);
197
+ return absence === undefined ? undefined : { reading, absence };
198
+ }
199
+ /** The door's rows for one call, in the order it filed them; anything else skipped. */
200
+ function declaredFor(toolCallId, declared) {
201
+ if (!Array.isArray(declared))
202
+ return [];
203
+ return declared.filter((row) => typeof row === 'object' &&
204
+ row !== null &&
205
+ row.toolCallId === toolCallId);
206
+ }
207
+ /**
208
+ * One list, read and never trusted: `[]` for anything that is not an array,
209
+ * each item copied as the vocabulary spells it — `{ what, why? }`, plain —
210
+ * and an item whose `what` is not a non-blank string left out, as is a
211
+ * `why` that says nothing (`coverage/items.ts · normalizeCoverageList`'s
212
+ * own law of a well-formed item).
213
+ */
214
+ function itemsOf(list) {
215
+ if (!Array.isArray(list))
216
+ return [];
217
+ const out = [];
218
+ for (const item of list) {
219
+ if (typeof item !== 'object' || item === null)
220
+ continue;
221
+ const { what, why } = item;
222
+ if (!isSaid(what))
223
+ continue;
224
+ out.push({ what, ...(isSaid(why) && { why }) });
225
+ }
226
+ return out;
227
+ }
228
+ /**
229
+ * The one parse: the JSON object that OPENS the served string, or nothing.
230
+ * The dispatch loop serves `safeStringify(value)` and joins any framework
231
+ * note after it, so the value's extent is found by the JSON grammar alone —
232
+ * strings and their escapes skipped, brackets counted — and that span is
233
+ * parsed once, guarded (the `ledger.ts · placedRefOf` precedent). A string
234
+ * that does not open with `{` is never parsed at all.
235
+ */
236
+ function leadingObjectOf(served) {
237
+ if (typeof served !== 'string' || served[0] !== '{')
238
+ return undefined;
239
+ let depth = 0;
240
+ let inString = false;
241
+ for (let i = 0; i < served.length; i += 1) {
242
+ const ch = served[i];
243
+ if (inString) {
244
+ if (ch === '\\')
245
+ i += 1;
246
+ else if (ch === '"')
247
+ inString = false;
248
+ }
249
+ else if (ch === '"') {
250
+ inString = true;
251
+ }
252
+ else if (ch === '{' || ch === '[') {
253
+ depth += 1;
254
+ }
255
+ else if (ch === '}' || ch === ']') {
256
+ depth -= 1;
257
+ if (depth === 0)
258
+ return parsedOf(served.slice(0, i + 1));
259
+ }
260
+ }
261
+ return undefined;
262
+ }
263
+ /** `JSON.parse`, guarded: `undefined` for text that is not one JSON value. */
264
+ function parsedOf(text) {
265
+ try {
266
+ return JSON.parse(text);
267
+ }
268
+ catch {
269
+ return undefined;
270
+ }
271
+ }
272
+ /** A string that says something — non-blank. */
273
+ function isSaid(value) {
274
+ return typeof value === 'string' && value.trim() !== '';
275
+ }
276
+ //# sourceMappingURL=unsettled.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unsettled.js","sourceRoot":"","sources":["../../../../src/core/agent/findings/unsettled.ts"],"names":[],"mappings":"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"}
@@ -151,13 +151,16 @@ function buildCallLLMStage(deps) {
151
151
  // Anthropic's API contract we need the original LLMMessage with
152
152
  // `toolCalls` intact so tool_use → tool_result correlation survives.
153
153
  // `stripFrameworkFields` takes off `injectedBy` — the marker the delivery
154
- // stage stamps so the messages slot can say WHO put a message here. It is
155
- // framework bookkeeping, not conversation, and it is removed BEFORE the
154
+ // stage stamps so the messages slot can say WHO put a message here — and
155
+ // `notDispatched`, the batch settlement's marker (9.113.0). Both are
156
+ // framework bookkeeping, not conversation, and are removed BEFORE the
156
157
  // request exists rather than trusted to be ignored: a consumer-authored
157
158
  // adapter that serializes a message wholesale would otherwise put library
158
159
  // internals on someone's wire. Stripping removes a FIELD, never a message,
159
160
  // so `messages[i]` is still the message the cache marker's index names.
160
- const history = (0, composeRequest_js_1.stripFrameworkFields)(scope.history ?? []);
161
+ // `committed` keeps both markers for the readers below that must see them.
162
+ const committed = scope.history ?? [];
163
+ const history = (0, composeRequest_js_1.stripFrameworkFields)(committed);
161
164
  // ── the findings ledger, served (9.101.0, step 3) ──────────────────
162
165
  // ONE gated read of the committed key, used twice. The COLLAPSE rewrites,
163
166
  // on the wire only, the `content` of `role: 'tool'` messages the model
@@ -180,14 +183,20 @@ function buildCallLLMStage(deps) {
180
183
  // serves the same ledger over the same ids reuses the cached prefix, and
181
184
  // a call after the ledger moved does not (`findings/serve.ts` · "The cache"). An
182
185
  // unarmed agent reads no key and serves the bytes it always did.
186
+ // Both read the COMMITTED conversation, then the wire is stripped
187
+ // (9.113.0): a message the batch settlement wrote is no result
188
+ // (`findings/offer.ts` · `isResultMessage`) and only its marker says so —
189
+ // the marker `stripFrameworkFields` takes off. Same ids, same order, same
190
+ // wire; `lib/time-travel/servedView.ts` rebuilds it the same way.
183
191
  const ledger = deps.hasFindingsLedger === true
184
192
  ? scope.findingsLedger
185
193
  : undefined;
186
- const messages = deps.hasFindingsLedger === true
187
- ? (0, serve_js_1.collapseJudged)(history, ledger, deps.findingsServe ?? 'ledger-and-facts')
188
- : history;
194
+ const collapsed = deps.hasFindingsLedger === true
195
+ ? (0, serve_js_1.collapseJudged)(committed, ledger, deps.findingsServe ?? 'ledger-and-facts')
196
+ : committed;
197
+ const messages = collapsed === committed ? history : (0, composeRequest_js_1.stripFrameworkFields)(collapsed);
189
198
  const ledgerPiece = deps.hasFindingsLedger === true
190
- ? (0, serve_js_1.findingsLedgerPiece)(ledger, (0, serve_js_1.servedToolCallIds)(history), deps.findingsAnswerAsk ?? 'none')
199
+ ? (0, serve_js_1.findingsLedgerPiece)(ledger, (0, serve_js_1.servedToolCallIds)(committed), deps.findingsAnswerAsk ?? 'none')
191
200
  : undefined;
192
201
  // ── the declared ontology, served (9.106.0) ──────────────────────────
193
202
  // ONE gated read of the run constant seed wrote; the piece is a pure
@@ -422,7 +431,20 @@ function buildCallLLMStage(deps) {
422
431
  [];
423
432
  const droppedResults = new Set(windowVisits.flatMap((v) => v.droppedObservations ?? []));
424
433
  if (servedGrounded.length > 0 && droppedResults.size > 0) {
425
- const frame = llmRequest.messages;
434
+ // The frame's tool messages, named from `committed` — the stage's ONE
435
+ // read of `scope.history`, at its top — rather than
436
+ // `llmRequest.messages`: the same messages in the same order
437
+ // (stripping removes a FIELD, never a message; the collapse rewrites
438
+ // `content` only; the staged-refs nudge is a `role: 'user'` line that
439
+ // names no tool), but the wire has lost the batch settlement's marker
440
+ // (9.113.0), and a settled sentence is no fresh result — the helper
441
+ // says so only when it can see `LLMMessage.notDispatched`
442
+ // (`window/toolNames.ts` · "A settled message is not a result at
443
+ // all"). Never a second `scope.history` read: every tracked read is a
444
+ // narrative step, and one more here renumbered every step after it on
445
+ // runs that never settle anything (pinned by
446
+ // `test/integrity/danglingReference.test.ts` · "the narrative").
447
+ const frame = committed;
426
448
  const presentResults = new Set(frame
427
449
  .map((m) => (0, toolNames_js_1.toolNameOfMessage)(m, frame))
428
450
  .filter((name) => name !== undefined));