@sema-agent/core 7.56.0 → 7.57.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 (173) hide show
  1. package/CHANGELOG.md +541 -0
  2. package/LICENSE +1 -1
  3. package/dist/agents/org-delivery-gate.js +3 -4
  4. package/dist/agents/peer-held-queue.d.ts +69 -49
  5. package/dist/agents/peer-held-queue.js +255 -106
  6. package/dist/agents/peer-session-drain.js +63 -43
  7. package/dist/agents/send-message-tool.js +3 -2
  8. package/dist/agents/subagent.js +8 -8
  9. package/dist/brain/anthropic.js +16 -8
  10. package/dist/brain/open-responses.js +10 -8
  11. package/dist/brain/openai.js +11 -9
  12. package/dist/brain/provider-dialect.d.ts +3 -2
  13. package/dist/brain/provider-dialect.js +2 -2
  14. package/dist/brain/request-params.d.ts +6 -0
  15. package/dist/brain/request-params.js +14 -1
  16. package/dist/brain/stream-engine.d.ts +9 -0
  17. package/dist/brain/stream-engine.js +24 -10
  18. package/dist/brain/stream-shared.d.ts +5 -4
  19. package/dist/brain/stream-shared.js +4 -4
  20. package/dist/core/allow-entry.d.ts +3 -10
  21. package/dist/core/allow-entry.js +17 -25
  22. package/dist/core/approval-object.d.ts +21 -5
  23. package/dist/core/approval-object.js +44 -17
  24. package/dist/core/ask-origin.d.ts +2 -2
  25. package/dist/core/auto-compaction.d.ts +71 -6
  26. package/dist/core/auto-compaction.js +42 -26
  27. package/dist/core/background-agent-store.d.ts +6 -2
  28. package/dist/core/background-agent-store.js +1 -1
  29. package/dist/core/checkpoint-requirements.d.ts +7 -1
  30. package/dist/core/checkpoint-requirements.js +2 -0
  31. package/dist/core/checkpoint-store.d.ts +17 -29
  32. package/dist/core/checkpoint-store.js +19 -11
  33. package/dist/core/cross-boundary-taint.js +4 -2
  34. package/dist/core/engine-notice.d.ts +3 -2
  35. package/dist/core/engine-notice.js +6 -0
  36. package/dist/core/file-history-store.d.ts +14 -8
  37. package/dist/core/file-history-store.js +14 -4
  38. package/dist/core/gate-lanes.js +2 -3
  39. package/dist/core/hooks.d.ts +2 -2
  40. package/dist/core/mailbox-store.d.ts +62 -1
  41. package/dist/core/mailbox-store.js +59 -0
  42. package/dist/core/mcp-name-judge.d.ts +46 -0
  43. package/dist/core/mcp-name-judge.js +61 -0
  44. package/dist/core/mcp-probe.d.ts +1 -1
  45. package/dist/core/mcp-probe.js +2 -5
  46. package/dist/core/mcp.js +10 -30
  47. package/dist/core/memory-engine/consolidation-driver.js +4 -3
  48. package/dist/core/memory-engine/distiller.js +26 -17
  49. package/dist/core/memory-engine/layout.js +5 -2
  50. package/dist/core/park-selfcheck.js +2 -0
  51. package/dist/core/permission-rule-consent.d.ts +5 -3
  52. package/dist/core/permission-rule-consent.js +20 -15
  53. package/dist/core/permission-rule-model.d.ts +43 -2
  54. package/dist/core/permission-rule-model.js +52 -8
  55. package/dist/core/permission-rule-org.js +1 -1
  56. package/dist/core/protocol-http-auth.d.ts +16 -2
  57. package/dist/core/protocol-http-auth.js +42 -11
  58. package/dist/core/protocol-naming.d.ts +20 -0
  59. package/dist/core/protocol-naming.js +20 -3
  60. package/dist/core/read-only-shell.d.ts +20 -5
  61. package/dist/core/read-only-shell.js +29 -14
  62. package/dist/core/remote-env.d.ts +37 -1
  63. package/dist/core/remote-env.js +11 -0
  64. package/dist/core/resume-startup-cause.d.ts +24 -2
  65. package/dist/core/resume-startup-cause.js +20 -1
  66. package/dist/core/roles.js +50 -7
  67. package/dist/core/runner/compact-session.d.ts +10 -0
  68. package/dist/core/runner/compact-session.js +202 -0
  69. package/dist/core/runner/compaction-call-options.d.ts +2 -2
  70. package/dist/core/runner/compaction-seams.d.ts +21 -1
  71. package/dist/core/runner/compaction-seams.js +11 -8
  72. package/dist/core/runner/contracts.d.ts +23 -16
  73. package/dist/core/runner/derived-route-fallback.d.ts +13 -0
  74. package/dist/core/runner/derived-route-fallback.js +6 -0
  75. package/dist/core/runner/env-capability-census.d.ts +3 -2
  76. package/dist/core/runner/env-capability-census.js +9 -3
  77. package/dist/core/runner/permission-rule-lanes.d.ts +7 -7
  78. package/dist/core/runner/permission-rule-lanes.js +17 -11
  79. package/dist/core/runner/prepare-acquire-reconcile.d.ts +3 -0
  80. package/dist/core/runner/prepare-acquire-reconcile.js +2 -1
  81. package/dist/core/runner/prepare-config-doors.d.ts +6 -0
  82. package/dist/core/runner/prepare-config-doors.js +4 -3
  83. package/dist/core/runner/prepare-hands-readface.d.ts +3 -1
  84. package/dist/core/runner/prepare-hands-readface.js +2 -0
  85. package/dist/core/runner/prepare-park-ask.d.ts +2 -0
  86. package/dist/core/runner/prepare-park-ask.js +2 -2
  87. package/dist/core/runner/prepare-policy-chain.js +2 -4
  88. package/dist/core/runner/prepare-task.d.ts +4 -1
  89. package/dist/core/runner/prepare-task.js +23 -27
  90. package/dist/core/runner/prepare-tool-disclosure-mount.d.ts +13 -0
  91. package/dist/core/runner/prepare-tool-disclosure-mount.js +13 -7
  92. package/dist/core/runner/rewind-files.d.ts +2 -5
  93. package/dist/core/runner/rewind-files.js +9 -51
  94. package/dist/core/runner/run-leg.js +10 -21
  95. package/dist/core/runner/run-notification-lane.d.ts +2 -0
  96. package/dist/core/runner/run-notification-lane.js +2 -2
  97. package/dist/core/runner/run-recovery-lanes.js +3 -4
  98. package/dist/core/runner/run-settle-and-teardown.js +5 -11
  99. package/dist/core/runner/run-terminal-adoption.js +3 -4
  100. package/dist/core/runner/run-turn-boundary.js +3 -5
  101. package/dist/core/runner/runtask.d.ts +8 -1
  102. package/dist/core/runner/runtask.js +28 -34
  103. package/dist/core/runner/send-message-continuation.js +1 -1
  104. package/dist/core/runner/session-verb-doors.d.ts +28 -0
  105. package/dist/core/runner/session-verb-doors.js +48 -0
  106. package/dist/core/runner/session-write-ledger.d.ts +30 -0
  107. package/dist/core/runner/session-write-ledger.js +101 -0
  108. package/dist/core/runner/stream-settle-backstop.js +11 -14
  109. package/dist/core/runner/sub-agent-deny-lists.d.ts +25 -3
  110. package/dist/core/runner/sub-agent-deny-lists.js +21 -10
  111. package/dist/core/runner/teardown-bounded.d.ts +1 -0
  112. package/dist/core/runner/teardown-bounded.js +1 -0
  113. package/dist/core/runner-deps.d.ts +2 -2
  114. package/dist/core/secret-env.d.ts +4 -0
  115. package/dist/core/secret-env.js +3 -0
  116. package/dist/core/session-policy-store.d.ts +7 -2
  117. package/dist/core/session-policy-store.js +1 -1
  118. package/dist/core/shell-wrapper-projection.d.ts +1 -1
  119. package/dist/core/store-contracts/background-agent-store-contract.js +1 -0
  120. package/dist/core/store-contracts/checkpoint-store-contract.js +2 -1
  121. package/dist/core/store-contracts/file-history-store-contract.js +9 -0
  122. package/dist/core/store-contracts/mailbox-store-contract.js +49 -1
  123. package/dist/core/task-registry-agent.d.ts +8 -4
  124. package/dist/core/task-registry-agent.js +14 -8
  125. package/dist/core/task-registry-shared.d.ts +35 -6
  126. package/dist/core/task-registry-shared.js +11 -0
  127. package/dist/core/task-registry.d.ts +1 -1
  128. package/dist/core/task-registry.js +1 -1
  129. package/dist/core/tool-catalog-entries.d.ts +6 -0
  130. package/dist/core/tool-catalog-entries.js +1 -0
  131. package/dist/core/tool-name-aliases.d.ts +32 -2
  132. package/dist/core/tool-name-aliases.js +23 -0
  133. package/dist/core/tool-name-readings.d.ts +4 -0
  134. package/dist/core/tool-name-readings.js +1 -0
  135. package/dist/core/tool-policy.d.ts +10 -6
  136. package/dist/core/tool-policy.js +4 -7
  137. package/dist/core/trace.d.ts +4 -1
  138. package/dist/core/trace.js +2 -1
  139. package/dist/core/untrusted-egress.d.ts +20 -0
  140. package/dist/core/untrusted-egress.js +77 -3
  141. package/dist/engine/harness/agent-harness.d.ts +7 -5
  142. package/dist/engine/harness/agent-harness.js +11 -2
  143. package/dist/engine/loop/agent-loop.d.ts +1 -4
  144. package/dist/engine/loop/agent-loop.js +26 -4
  145. package/dist/index.d.ts +12 -7
  146. package/dist/index.js +7 -4
  147. package/dist/internal/harness.d.ts +2 -1
  148. package/dist/internal/harness.js +1 -0
  149. package/dist/primitives/credential-ref.d.ts +89 -0
  150. package/dist/primitives/credential-ref.js +125 -0
  151. package/dist/primitives/index.d.ts +2 -0
  152. package/dist/primitives/index.js +1 -0
  153. package/dist/stores/file/checkpoint-store.d.ts +0 -4
  154. package/dist/stores/file/checkpoint-store.js +0 -1
  155. package/dist/stores/file/file-history-store.js +12 -4
  156. package/dist/stores/file/mailbox-store.d.ts +2 -1
  157. package/dist/stores/file/mailbox-store.js +26 -1
  158. package/dist/tools/fs/bash-readonly-classifier.d.ts +15 -19
  159. package/dist/tools/fs/bash-readonly-classifier.js +5 -10
  160. package/dist/tools/fs/fs-bash.js +10 -3
  161. package/dist/tools/fs/pattern-kill-guard.d.ts +3 -2
  162. package/dist/tools/fs/pattern-kill-guard.js +68 -36
  163. package/dist/tools/fs/shell-read-check.d.ts +10 -0
  164. package/dist/tools/fs/shell-read-check.js +7 -1
  165. package/dist/tools/fs/shell-read-identity.d.ts +12 -9
  166. package/dist/tools/fs/shell-read-identity.js +9 -4
  167. package/dist/tools/web.js +9 -7
  168. package/package.json +1 -1
  169. package/test/export-surface.snapshot.json +79 -3
  170. package/wire-changes/core-stores-sql@7.57.0.json +29 -0
  171. package/wire-changes/core@7.57.0.json +1487 -0
  172. package/wire-changes/mods-kernel@7.57.0.json +29 -0
  173. package/wire-changes/primitives@7.57.0.json +245 -0
@@ -0,0 +1,1487 @@
1
+ {
2
+ "repo": "core",
3
+ "version": "7.57.0",
4
+ "from": "f670b709158790d2f763935fd22da62d73e88c47",
5
+ "to": "v7.57.0",
6
+ "added": [
7
+ {
8
+ "name": "ApprovalTargetReads",
9
+ "kind": "type",
10
+ "tier": "advanced",
11
+ "at": [
12
+ "src/core/approval-object.ts:41",
13
+ "src/index.ts:1203"
14
+ ],
15
+ "criteriaCovered": false,
16
+ "breaking": false
17
+ },
18
+ {
19
+ "name": "CREDENTIAL_REF_KINDS",
20
+ "kind": "variable",
21
+ "tier": "advanced",
22
+ "at": [
23
+ "src/index.ts:2152",
24
+ "src/primitives/credential-ref.ts:9",
25
+ "src/primitives/index.ts:3"
26
+ ],
27
+ "criteriaCovered": false,
28
+ "breaking": false
29
+ },
30
+ {
31
+ "name": "CREDENTIAL_REF_MAP_MAX",
32
+ "kind": "variable",
33
+ "tier": "advanced",
34
+ "at": [
35
+ "src/index.ts:2155",
36
+ "src/primitives/credential-ref.ts:48",
37
+ "src/primitives/index.ts:6"
38
+ ],
39
+ "criteriaCovered": false,
40
+ "breaking": false
41
+ },
42
+ {
43
+ "name": "CREDENTIAL_REF_PROBLEM_REASONS",
44
+ "kind": "variable",
45
+ "tier": "advanced",
46
+ "at": [
47
+ "src/index.ts:2156",
48
+ "src/primitives/credential-ref.ts:51",
49
+ "src/primitives/index.ts:7"
50
+ ],
51
+ "criteriaCovered": false,
52
+ "breaking": false
53
+ },
54
+ {
55
+ "name": "CREDENTIAL_REF_TEXT_MAX",
56
+ "kind": "variable",
57
+ "tier": "advanced",
58
+ "at": [
59
+ "src/index.ts:2154",
60
+ "src/primitives/credential-ref.ts:45",
61
+ "src/primitives/index.ts:5"
62
+ ],
63
+ "criteriaCovered": false,
64
+ "breaking": false
65
+ },
66
+ {
67
+ "name": "CREDENTIAL_REF_TRUST",
68
+ "kind": "variable",
69
+ "tier": "advanced",
70
+ "at": [
71
+ "src/index.ts:2153",
72
+ "src/primitives/credential-ref.ts:33",
73
+ "src/primitives/index.ts:4"
74
+ ],
75
+ "criteriaCovered": false,
76
+ "breaking": false
77
+ },
78
+ {
79
+ "name": "CompactSessionRequest",
80
+ "kind": "interface",
81
+ "tier": "advanced",
82
+ "at": [
83
+ "src/core/auto-compaction.ts:1961",
84
+ "src/index.ts:910"
85
+ ],
86
+ "criteriaCovered": false,
87
+ "breaking": false
88
+ },
89
+ {
90
+ "name": "CompactSessionResult",
91
+ "kind": "interface",
92
+ "tier": "advanced",
93
+ "at": [
94
+ "src/core/auto-compaction.ts:1983",
95
+ "src/index.ts:910"
96
+ ],
97
+ "criteriaCovered": true,
98
+ "breaking": false
99
+ },
100
+ {
101
+ "name": "CredentialRef",
102
+ "kind": "type",
103
+ "tier": "advanced",
104
+ "at": [
105
+ "src/index.ts:2158",
106
+ "src/primitives/credential-ref.ts:17",
107
+ "src/primitives/index.ts:9"
108
+ ],
109
+ "criteriaCovered": false,
110
+ "breaking": false
111
+ },
112
+ {
113
+ "name": "CredentialRefKind",
114
+ "kind": "type",
115
+ "tier": "advanced",
116
+ "at": [
117
+ "src/index.ts:2159",
118
+ "src/primitives/credential-ref.ts:10",
119
+ "src/primitives/index.ts:10"
120
+ ],
121
+ "criteriaCovered": false,
122
+ "breaking": false
123
+ },
124
+ {
125
+ "name": "CredentialRefProblem",
126
+ "kind": "type",
127
+ "tier": "advanced",
128
+ "at": [
129
+ "src/index.ts:2161",
130
+ "src/primitives/credential-ref.ts:60",
131
+ "src/primitives/index.ts:12"
132
+ ],
133
+ "criteriaCovered": false,
134
+ "breaking": false
135
+ },
136
+ {
137
+ "name": "CredentialRefProblemReason",
138
+ "kind": "type",
139
+ "tier": "advanced",
140
+ "at": [
141
+ "src/index.ts:2162",
142
+ "src/primitives/credential-ref.ts:52",
143
+ "src/primitives/index.ts:13"
144
+ ],
145
+ "criteriaCovered": false,
146
+ "breaking": false
147
+ },
148
+ {
149
+ "name": "CredentialRefReading",
150
+ "kind": "type",
151
+ "tier": "advanced",
152
+ "at": [
153
+ "src/index.ts:2163",
154
+ "src/primitives/credential-ref.ts:67",
155
+ "src/primitives/index.ts:14"
156
+ ],
157
+ "criteriaCovered": false,
158
+ "breaking": false
159
+ },
160
+ {
161
+ "name": "CredentialRefRequestAdmission",
162
+ "kind": "type",
163
+ "tier": "advanced",
164
+ "at": [
165
+ "src/index.ts:2160",
166
+ "src/primitives/credential-ref.ts:24",
167
+ "src/primitives/index.ts:11"
168
+ ],
169
+ "criteriaCovered": false,
170
+ "breaking": false
171
+ },
172
+ {
173
+ "name": "MAILBOX_DECISIONS",
174
+ "kind": "variable",
175
+ "tier": "advanced",
176
+ "at": [
177
+ "src/core/mailbox-store.ts:71",
178
+ "src/index.ts:1366"
179
+ ],
180
+ "criteriaCovered": false,
181
+ "breaking": false
182
+ },
183
+ {
184
+ "name": "MAILBOX_INVALID_DECISION_MOVE_CODE",
185
+ "kind": "variable",
186
+ "tier": "advanced",
187
+ "at": [
188
+ "src/core/mailbox-store.ts:83",
189
+ "src/index.ts:1367"
190
+ ],
191
+ "criteriaCovered": false,
192
+ "breaking": false
193
+ },
194
+ {
195
+ "name": "MailboxDecision",
196
+ "kind": "type",
197
+ "tier": "advanced",
198
+ "at": [
199
+ "src/core/mailbox-store.ts:72",
200
+ "src/index.ts:1364"
201
+ ],
202
+ "criteriaCovered": false,
203
+ "breaking": false
204
+ },
205
+ {
206
+ "name": "MailboxDecisionOutcome",
207
+ "kind": "type",
208
+ "tier": "advanced",
209
+ "at": [
210
+ "src/core/mailbox-store.ts:115",
211
+ "src/index.ts:1365"
212
+ ],
213
+ "criteriaCovered": false,
214
+ "breaking": false
215
+ },
216
+ {
217
+ "name": "McpNameConflict",
218
+ "kind": "type",
219
+ "tier": "advanced",
220
+ "at": [
221
+ "src/core/mcp-name-judge.ts:37",
222
+ "src/index.ts:340"
223
+ ],
224
+ "criteriaCovered": true,
225
+ "breaking": false
226
+ },
227
+ {
228
+ "name": "McpNameSetServer",
229
+ "kind": "interface",
230
+ "tier": "advanced",
231
+ "at": [
232
+ "src/core/mcp-name-judge.ts:28",
233
+ "src/index.ts:340"
234
+ ],
235
+ "criteriaCovered": false,
236
+ "breaking": false
237
+ },
238
+ {
239
+ "name": "McpNameVerdict",
240
+ "kind": "type",
241
+ "tier": "advanced",
242
+ "at": [
243
+ "src/core/mcp-name-judge.ts:42",
244
+ "src/index.ts:340"
245
+ ],
246
+ "criteriaCovered": false,
247
+ "breaking": false
248
+ },
249
+ {
250
+ "name": "PeerCardDecision",
251
+ "kind": "type",
252
+ "tier": "advanced",
253
+ "at": [
254
+ "src/agents/peer-held-queue.ts:39",
255
+ "src/index.ts:3474"
256
+ ],
257
+ "criteriaCovered": false,
258
+ "breaking": false
259
+ },
260
+ {
261
+ "name": "PeerHoldOutcome",
262
+ "kind": "type",
263
+ "tier": "advanced",
264
+ "at": [
265
+ "src/agents/peer-held-queue.ts:133",
266
+ "src/index.ts:3473"
267
+ ],
268
+ "criteriaCovered": false,
269
+ "breaking": false
270
+ },
271
+ {
272
+ "name": "ReadLanding",
273
+ "kind": "interface",
274
+ "tier": "advanced",
275
+ "at": [
276
+ "src/index.ts:1177",
277
+ "src/tools/fs/shell-read-identity.ts:36"
278
+ ],
279
+ "criteriaCovered": false,
280
+ "breaking": false
281
+ },
282
+ {
283
+ "name": "ReadOnlyShellOptions",
284
+ "kind": "interface",
285
+ "tier": "advanced",
286
+ "at": [
287
+ "src/core/read-only-shell.ts:49",
288
+ "src/index.ts:1938"
289
+ ],
290
+ "criteriaCovered": true,
291
+ "breaking": false
292
+ },
293
+ {
294
+ "name": "adjudicatePersistedToolRules",
295
+ "kind": "function",
296
+ "tier": "advanced",
297
+ "at": [
298
+ "src/core/permission-rule-model.ts:3347",
299
+ "src/index.ts:1725"
300
+ ],
301
+ "criteriaCovered": false,
302
+ "breaking": false
303
+ },
304
+ {
305
+ "name": "assertMailboxDecisionMove",
306
+ "kind": "function",
307
+ "tier": "advanced",
308
+ "at": [
309
+ "src/core/mailbox-store.ts:133",
310
+ "src/index.ts:1372"
311
+ ],
312
+ "criteriaCovered": false,
313
+ "breaking": false
314
+ },
315
+ {
316
+ "name": "checkpointStoreIncomplete",
317
+ "kind": "function",
318
+ "tier": "advanced",
319
+ "at": [
320
+ "src/core/checkpoint-store.ts:3321",
321
+ "src/index.ts:828"
322
+ ],
323
+ "criteriaCovered": false,
324
+ "breaking": false
325
+ },
326
+ {
327
+ "name": "describeMcpNameConflict",
328
+ "kind": "function",
329
+ "tier": "advanced",
330
+ "at": [
331
+ "src/core/mcp-name-judge.ts:96",
332
+ "src/index.ts:340"
333
+ ],
334
+ "criteriaCovered": false,
335
+ "breaking": false
336
+ },
337
+ {
338
+ "name": "engineAgentName",
339
+ "kind": "function",
340
+ "tier": "advanced",
341
+ "at": [
342
+ "src/core/task-registry-shared.ts:1184",
343
+ "src/core/task-registry.ts:75",
344
+ "src/index.ts:1325"
345
+ ],
346
+ "criteriaCovered": false,
347
+ "breaking": false
348
+ },
349
+ {
350
+ "name": "isMailboxDecision",
351
+ "kind": "function",
352
+ "tier": "advanced",
353
+ "at": [
354
+ "src/core/mailbox-store.ts:85",
355
+ "src/index.ts:1368"
356
+ ],
357
+ "criteriaCovered": false,
358
+ "breaking": false
359
+ },
360
+ {
361
+ "name": "isMailboxDecisionDeliverable",
362
+ "kind": "function",
363
+ "tier": "advanced",
364
+ "at": [
365
+ "src/core/mailbox-store.ts:95",
366
+ "src/index.ts:1370"
367
+ ],
368
+ "criteriaCovered": false,
369
+ "breaking": false
370
+ },
371
+ {
372
+ "name": "isMailboxDecisionFinal",
373
+ "kind": "function",
374
+ "tier": "advanced",
375
+ "at": [
376
+ "src/core/mailbox-store.ts:90",
377
+ "src/index.ts:1369"
378
+ ],
379
+ "criteriaCovered": false,
380
+ "breaking": false
381
+ },
382
+ {
383
+ "name": "judgeMcpNames",
384
+ "kind": "function",
385
+ "tier": "advanced",
386
+ "at": [
387
+ "src/core/mcp-name-judge.ts:66",
388
+ "src/index.ts:340"
389
+ ],
390
+ "criteriaCovered": false,
391
+ "breaking": false
392
+ },
393
+ {
394
+ "name": "mailboxDecisionEdgeAllowed",
395
+ "kind": "function",
396
+ "tier": "advanced",
397
+ "at": [
398
+ "src/core/mailbox-store.ts:105",
399
+ "src/index.ts:1371"
400
+ ],
401
+ "criteriaCovered": false,
402
+ "breaking": false
403
+ },
404
+ {
405
+ "name": "moveMailboxDecision",
406
+ "kind": "function",
407
+ "tier": "advanced",
408
+ "at": [
409
+ "src/core/mailbox-store.ts:123",
410
+ "src/index.ts:1373"
411
+ ],
412
+ "criteriaCovered": false,
413
+ "breaking": false
414
+ },
415
+ {
416
+ "name": "readCredentialRef",
417
+ "kind": "function",
418
+ "tier": "advanced",
419
+ "at": [
420
+ "src/index.ts:2157",
421
+ "src/primitives/credential-ref.ts:182",
422
+ "src/primitives/index.ts:8"
423
+ ],
424
+ "criteriaCovered": false,
425
+ "breaking": false
426
+ },
427
+ {
428
+ "name": "readStoredMailboxDecision",
429
+ "kind": "function",
430
+ "tier": "advanced",
431
+ "at": [
432
+ "src/core/mailbox-store.ts:76",
433
+ "src/index.ts:1374"
434
+ ],
435
+ "criteriaCovered": false,
436
+ "breaking": false
437
+ },
438
+ {
439
+ "name": "teardownLegBudget",
440
+ "kind": "variable",
441
+ "tier": "internal",
442
+ "at": [
443
+ "src/core/runner/teardown-bounded.ts:37",
444
+ "src/index.ts:2671"
445
+ ],
446
+ "criteriaCovered": false,
447
+ "breaking": false
448
+ }
449
+ ],
450
+ "removed": [
451
+ {
452
+ "name": "checkpointStoreExecutionUndeclared",
453
+ "kind": "function",
454
+ "tier": "advanced",
455
+ "at": [
456
+ "src/core/checkpoint-store.ts:3318",
457
+ "src/index.ts:827"
458
+ ],
459
+ "breaking": true
460
+ }
461
+ ],
462
+ "changed": [],
463
+ "narrowed": [
464
+ {
465
+ "id": "F2",
466
+ "source": "behaviorFlips.summary",
467
+ "text": "#2604 (security fix; behavior narrowing, open to veto): the `pkill -P $$` way out is read by the option walk that builds the question — another `-P` list beside the shell's, a negation in any spelling, a word the guard cannot read (an expansion other than the shell's pid, a stream), and on macOS a `-P $$` after the pattern no longer run unasked."
468
+ },
469
+ {
470
+ "id": "F3",
471
+ "source": "behaviorFlips.summary",
472
+ "text": "#2604 fix1 (behavior narrowing, open to veto): `$BASHPID` is no longer the shell's pid word — only the special parameters `$$` / `${$}` bound a `pkill -P` selection."
473
+ },
474
+ {
475
+ "id": "F5",
476
+ "source": "behaviorFlips.summary",
477
+ "text": "#1449 slice S1 (behavior narrowing, open to veto; stricter than the reference): a remote endpoint's words reach the engine's own text through one mint (`remoteWords`) — a model brain's and the memory distiller seat's failure text carry no declared request value and no credential-shaped string; a torn body's last word, an echoed `requestId` / `apiErrorCode` that carries either, and the non-`category` / `explanation` members of Anthropic `stop_details` are not carried."
478
+ },
479
+ {
480
+ "id": "F6",
481
+ "source": "behaviorFlips.summary",
482
+ "text": "#2529 (design/1449 slice S2a; behavior narrowing, open to veto): the engine's own account leaves through one throat per channel and is minted there — a notice's sentence and every string leaf of its detail, every string leaf of a trace frame, a memory announcement item, the three compaction failure lanes' reason, a host Brain's failure words, WebFetch's reason phrase and a worktree mint's thrown text carry no credential-shaped string; a notice's detail and a trace frame reach the host as a new data snapshot."
483
+ },
484
+ {
485
+ "id": "F7",
486
+ "source": "behaviorFlips.summary",
487
+ "text": "#1449 fix1 (behavior narrowing, open to veto): the member bound belongs to foreign values only — the engine's own plain data in a frame or a detail is carried whole, and a Proxy inside an account is read as a foreign value."
488
+ },
489
+ {
490
+ "id": "F10",
491
+ "source": "behaviorFlips.summary",
492
+ "text": "#2769 (behavior narrowing, open to veto): a Model object the engine cannot read — no non-empty string `id`, or no string `api` — is refused by name at every seat that takes a model, `runTask` and `compactSession` alike, through the existing `config.unknown_role` / `not_a_model_ref`."
493
+ },
494
+ {
495
+ "id": "F15",
496
+ "source": "behaviorFlips.summary",
497
+ "text": "#2654 (behavior narrowing, open to veto; differs from the reference in both directions, #2747): a stored bare-name rule names a tool the catalog spells exactly — a case twin of a catalog tool (`BASH`, `webfetch`, `READ`) is refused `unsupported.tool`, its sentence naming the spelling to write, as a retired spelling is."
498
+ },
499
+ {
500
+ "id": "F17",
501
+ "source": "behaviorFlips.summary",
502
+ "text": "#1185 (behavior narrowing, open to veto): a parked shell call whose reads moved while it waited — a re-pointed link, a pattern that gains or loses an entry, a read the card did not cover — is vetoed `resume.target_moved` and asked again."
503
+ },
504
+ {
505
+ "id": "F25",
506
+ "source": "behaviorFlips.summary",
507
+ "text": "#1438 S1 (hard-breaking one, open to veto; ruling C-R817): `readOnlyShellVerdict(command, shape?, cwd?, bound?)` became `readOnlyShellVerdict(command, { shape?, cwd?, bound?, readers? })`; `readers` (a set of program names) narrows the answer; a `readers` value without a callable `has` throws a `TypeError` (the CHANGELOG's \"a `Set` …; any other value throws\" is stricter than the check, which reads only `has`)."
508
+ },
509
+ {
510
+ "id": "F26",
511
+ "source": "behaviorFlips.summary",
512
+ "text": "#1438 S1 (behavior change and security narrowing, open to veto; divergences from the reference, open to veto): one judge answers \"does this shell command only read\" for the parallel-batch admission, the read-only shell face and the transcript gate, each face's program list only narrowing it; `noglob <program>` is no longer read-only."
513
+ },
514
+ {
515
+ "id": "F27",
516
+ "source": "behaviorFlips.summary",
517
+ "text": "#2511 (behavior narrowing, open to veto): one selector build — a leg's tool lists are read once by the strict reader before the session is acquired; a refused list is refused before any `acquire` and before any declared MCP server is dialed; a live ceiling layer is read once and a parked row records the layers as read."
518
+ },
519
+ {
520
+ "id": "G9",
521
+ "source": "criteria.title",
522
+ "text": "#1438 / #2511 — one read-only judge for every read-only consumer, each face's program list only narrowing it (`readOnlyShellVerdict(command, { readers })`), and one selector build whose read is what a parked row records"
523
+ }
524
+ ],
525
+ "closedSetMembers": [
526
+ {
527
+ "set": "CREDENTIAL_REF_KINDS",
528
+ "at": [
529
+ "src/primitives/credential-ref.ts:9"
530
+ ],
531
+ "newSet": true,
532
+ "added": [
533
+ "assertion",
534
+ "env",
535
+ "handle",
536
+ "vault"
537
+ ],
538
+ "removed": [],
539
+ "breaking": false,
540
+ "criteriaCovered": false
541
+ },
542
+ {
543
+ "set": "CREDENTIAL_REF_PROBLEM_REASONS",
544
+ "at": [
545
+ "src/primitives/credential-ref.ts:51"
546
+ ],
547
+ "newSet": true,
548
+ "added": [
549
+ "bad_value",
550
+ "extra_field",
551
+ "missing_field",
552
+ "not_a_record",
553
+ "unknown_kind"
554
+ ],
555
+ "removed": [],
556
+ "breaking": false,
557
+ "criteriaCovered": false
558
+ },
559
+ {
560
+ "set": "CardRuleForm",
561
+ "at": [
562
+ "src/core/permission-rule-model.ts:412"
563
+ ],
564
+ "newSet": true,
565
+ "added": [
566
+ "command",
567
+ "domain",
568
+ "name",
569
+ "tool"
570
+ ],
571
+ "removed": [],
572
+ "breaking": false,
573
+ "criteriaCovered": false
574
+ },
575
+ {
576
+ "set": "CredentialRefKind",
577
+ "at": [
578
+ "src/index.ts:2159",
579
+ "src/primitives/credential-ref.ts:10",
580
+ "src/primitives/index.ts:10"
581
+ ],
582
+ "newSet": true,
583
+ "added": [
584
+ "assertion",
585
+ "env",
586
+ "handle",
587
+ "vault"
588
+ ],
589
+ "removed": [],
590
+ "breaking": false,
591
+ "criteriaCovered": false
592
+ },
593
+ {
594
+ "set": "CredentialRefProblemReason",
595
+ "at": [
596
+ "src/index.ts:2162",
597
+ "src/primitives/credential-ref.ts:52",
598
+ "src/primitives/index.ts:13"
599
+ ],
600
+ "newSet": true,
601
+ "added": [
602
+ "bad_value",
603
+ "extra_field",
604
+ "missing_field",
605
+ "not_a_record",
606
+ "unknown_kind"
607
+ ],
608
+ "removed": [],
609
+ "breaking": false,
610
+ "criteriaCovered": false
611
+ },
612
+ {
613
+ "set": "CredentialRefRequestAdmission",
614
+ "at": [
615
+ "src/primitives/credential-ref.ts:24"
616
+ ],
617
+ "newSet": true,
618
+ "added": [
619
+ "own_entry",
620
+ "refused"
621
+ ],
622
+ "removed": [],
623
+ "breaking": false,
624
+ "criteriaCovered": false
625
+ },
626
+ {
627
+ "set": "MAILBOX_DECISIONS",
628
+ "at": [
629
+ "src/core/mailbox-store.ts:71"
630
+ ],
631
+ "newSet": true,
632
+ "added": [
633
+ "approved",
634
+ "delivered",
635
+ "denied",
636
+ "dropped",
637
+ "expired",
638
+ "held",
639
+ "refused"
640
+ ],
641
+ "removed": [],
642
+ "breaking": false,
643
+ "criteriaCovered": false
644
+ },
645
+ {
646
+ "set": "MailboxDecision",
647
+ "at": [
648
+ "src/core/mailbox-store.ts:72",
649
+ "src/index.ts:1364"
650
+ ],
651
+ "newSet": true,
652
+ "added": [
653
+ "approved",
654
+ "delivered",
655
+ "denied",
656
+ "dropped",
657
+ "expired",
658
+ "held",
659
+ "refused"
660
+ ],
661
+ "removed": [],
662
+ "breaking": false,
663
+ "criteriaCovered": false
664
+ },
665
+ {
666
+ "set": "PERSISTED_RULE_MATCHES",
667
+ "at": [
668
+ "src/core/permission-rule-model.ts:487"
669
+ ],
670
+ "newSet": false,
671
+ "added": [
672
+ "tool"
673
+ ],
674
+ "removed": [],
675
+ "breaking": false,
676
+ "criteriaCovered": false
677
+ },
678
+ {
679
+ "set": "PeerHeldSettleOutcome",
680
+ "at": [
681
+ "src/agents/peer-held-queue.ts:126"
682
+ ],
683
+ "newSet": false,
684
+ "added": [
685
+ "decided_elsewhere"
686
+ ],
687
+ "removed": [],
688
+ "breaking": false,
689
+ "criteriaCovered": false
690
+ },
691
+ {
692
+ "set": "PeerHeldSettleReason",
693
+ "at": [
694
+ "src/agents/peer-held-queue.ts:67"
695
+ ],
696
+ "newSet": false,
697
+ "added": [
698
+ "decided_elsewhere"
699
+ ],
700
+ "removed": [],
701
+ "breaking": false,
702
+ "criteriaCovered": false
703
+ },
704
+ {
705
+ "set": "PeerHeldSettlement",
706
+ "at": [
707
+ "src/agents/peer-held-queue.ts:66"
708
+ ],
709
+ "newSet": false,
710
+ "added": [
711
+ "retired"
712
+ ],
713
+ "removed": [],
714
+ "breaking": false,
715
+ "criteriaCovered": false
716
+ },
717
+ {
718
+ "set": "PeerHoldOutcome",
719
+ "at": [
720
+ "src/agents/peer-held-queue.ts:133"
721
+ ],
722
+ "newSet": true,
723
+ "added": [
724
+ "adopted",
725
+ "denied",
726
+ "dropped",
727
+ "expired",
728
+ "fault",
729
+ "gone",
730
+ "held",
731
+ "refused",
732
+ "uncarded"
733
+ ],
734
+ "removed": [],
735
+ "breaking": false,
736
+ "criteriaCovered": false
737
+ },
738
+ {
739
+ "set": "REQUIREMENT_WORDS",
740
+ "at": [
741
+ "src/core/checkpoint-requirements.ts:36"
742
+ ],
743
+ "newSet": false,
744
+ "added": [
745
+ "approval_target_reads"
746
+ ],
747
+ "removed": [],
748
+ "breaking": false,
749
+ "criteriaCovered": false
750
+ }
751
+ ],
752
+ "closedSetsUnreadable": [],
753
+ "typeKeys": [
754
+ {
755
+ "type": "ApprovalObject",
756
+ "at": [
757
+ "src/core/approval-object.ts:54"
758
+ ],
759
+ "added": [
760
+ "targetReads"
761
+ ],
762
+ "addedDetail": [
763
+ {
764
+ "key": "targetReads",
765
+ "optional": true
766
+ }
767
+ ],
768
+ "addedRequired": [],
769
+ "removed": [],
770
+ "breaking": false,
771
+ "criteriaCovered": true
772
+ },
773
+ {
774
+ "type": "CheckpointStore",
775
+ "at": [
776
+ "src/core/checkpoint-store.ts:2962"
777
+ ],
778
+ "added": [],
779
+ "addedDetail": [],
780
+ "addedRequired": [],
781
+ "removed": [
782
+ "redecision",
783
+ "redecision.reopen",
784
+ "redecision.validatingLease"
785
+ ],
786
+ "breaking": true,
787
+ "criteriaCovered": false
788
+ },
789
+ {
790
+ "type": "FileCheckpointStore",
791
+ "at": [
792
+ "src/stores/file/checkpoint-store.ts:261"
793
+ ],
794
+ "added": [],
795
+ "addedDetail": [],
796
+ "addedRequired": [],
797
+ "removed": [
798
+ "redecision"
799
+ ],
800
+ "breaking": true,
801
+ "criteriaCovered": false
802
+ },
803
+ {
804
+ "type": "FileMailboxStore",
805
+ "at": [
806
+ "src/stores/file/mailbox-store.ts:561"
807
+ ],
808
+ "added": [
809
+ "moveDecision"
810
+ ],
811
+ "addedDetail": [
812
+ {
813
+ "key": "moveDecision",
814
+ "optional": true
815
+ }
816
+ ],
817
+ "addedRequired": [],
818
+ "removed": [],
819
+ "breaking": false,
820
+ "criteriaCovered": false
821
+ },
822
+ {
823
+ "type": "InMemoryCheckpointStore",
824
+ "at": [
825
+ "src/core/checkpoint-store.ts:3718"
826
+ ],
827
+ "added": [],
828
+ "addedDetail": [],
829
+ "addedRequired": [],
830
+ "removed": [
831
+ "redecision"
832
+ ],
833
+ "breaking": true,
834
+ "criteriaCovered": false
835
+ },
836
+ {
837
+ "type": "InMemoryMailboxStore",
838
+ "at": [
839
+ "src/core/mailbox-store.ts:535"
840
+ ],
841
+ "added": [
842
+ "moveDecision"
843
+ ],
844
+ "addedDetail": [
845
+ {
846
+ "key": "moveDecision",
847
+ "optional": true
848
+ }
849
+ ],
850
+ "addedRequired": [],
851
+ "removed": [],
852
+ "breaking": false,
853
+ "criteriaCovered": false
854
+ },
855
+ {
856
+ "type": "LiveApprovalObject",
857
+ "at": [
858
+ "src/core/approval-object.ts:114"
859
+ ],
860
+ "added": [
861
+ "reads"
862
+ ],
863
+ "addedDetail": [
864
+ {
865
+ "key": "reads",
866
+ "optional": true
867
+ }
868
+ ],
869
+ "addedRequired": [],
870
+ "removed": [],
871
+ "breaking": false,
872
+ "criteriaCovered": false
873
+ },
874
+ {
875
+ "type": "MailboxMessage",
876
+ "at": [
877
+ "src/core/mailbox-store.ts:39"
878
+ ],
879
+ "added": [
880
+ "decision"
881
+ ],
882
+ "addedDetail": [
883
+ {
884
+ "key": "decision",
885
+ "optional": true
886
+ }
887
+ ],
888
+ "addedRequired": [],
889
+ "removed": [],
890
+ "breaking": false,
891
+ "criteriaCovered": true
892
+ },
893
+ {
894
+ "type": "MailboxStore",
895
+ "at": [
896
+ "src/core/mailbox-store.ts:428"
897
+ ],
898
+ "added": [
899
+ "moveDecision"
900
+ ],
901
+ "addedDetail": [
902
+ {
903
+ "key": "moveDecision",
904
+ "optional": false
905
+ }
906
+ ],
907
+ "addedRequired": [
908
+ "moveDecision"
909
+ ],
910
+ "removed": [],
911
+ "breaking": true,
912
+ "criteriaCovered": false
913
+ },
914
+ {
915
+ "type": "PeerHeldEntry",
916
+ "at": [
917
+ "src/agents/peer-held-queue.ts:41"
918
+ ],
919
+ "added": [
920
+ "decision"
921
+ ],
922
+ "addedDetail": [
923
+ {
924
+ "key": "decision",
925
+ "optional": false
926
+ }
927
+ ],
928
+ "addedRequired": [
929
+ "decision"
930
+ ],
931
+ "removed": [
932
+ "released"
933
+ ],
934
+ "breaking": true,
935
+ "criteriaCovered": true
936
+ },
937
+ {
938
+ "type": "PeerHeldQueue",
939
+ "at": [
940
+ "src/agents/peer-held-queue.ts:135"
941
+ ],
942
+ "added": [
943
+ "has"
944
+ ],
945
+ "addedDetail": [
946
+ {
947
+ "key": "has",
948
+ "optional": false
949
+ }
950
+ ],
951
+ "addedRequired": [
952
+ "has"
953
+ ],
954
+ "removed": [
955
+ "decisions",
956
+ "forgetDecisions"
957
+ ],
958
+ "breaking": true,
959
+ "criteriaCovered": false
960
+ },
961
+ {
962
+ "type": "PeerHeldQueueSink",
963
+ "at": [
964
+ "src/agents/peer-held-queue.ts:90"
965
+ ],
966
+ "added": [
967
+ "canInject",
968
+ "decide",
969
+ "onFault",
970
+ "tellsSender"
971
+ ],
972
+ "addedDetail": [
973
+ {
974
+ "key": "canInject",
975
+ "optional": true
976
+ },
977
+ {
978
+ "key": "decide",
979
+ "optional": false
980
+ },
981
+ {
982
+ "key": "onFault",
983
+ "optional": true
984
+ },
985
+ {
986
+ "key": "tellsSender",
987
+ "optional": false
988
+ }
989
+ ],
990
+ "addedRequired": [
991
+ "decide",
992
+ "tellsSender"
993
+ ],
994
+ "removed": [],
995
+ "breaking": true,
996
+ "criteriaCovered": false
997
+ },
998
+ {
999
+ "type": "PendingAction",
1000
+ "at": [
1001
+ "src/core/checkpoint-store.ts:993"
1002
+ ],
1003
+ "added": [
1004
+ "tool_approval.targetReads"
1005
+ ],
1006
+ "addedDetail": [
1007
+ {
1008
+ "key": "tool_approval.targetReads",
1009
+ "optional": true
1010
+ }
1011
+ ],
1012
+ "addedRequired": [],
1013
+ "removed": [],
1014
+ "breaking": false,
1015
+ "criteriaCovered": false
1016
+ },
1017
+ {
1018
+ "type": "RemoteExecutionEnv",
1019
+ "at": [
1020
+ "src/core/remote-env.ts:361"
1021
+ ],
1022
+ "added": [
1023
+ "capabilities.sharesProcessTable"
1024
+ ],
1025
+ "addedDetail": [
1026
+ {
1027
+ "key": "capabilities.sharesProcessTable",
1028
+ "optional": false
1029
+ }
1030
+ ],
1031
+ "addedRequired": [
1032
+ "capabilities.sharesProcessTable"
1033
+ ],
1034
+ "removed": [],
1035
+ "breaking": true,
1036
+ "criteriaCovered": true
1037
+ },
1038
+ {
1039
+ "type": "ResumeRun",
1040
+ "at": [
1041
+ "src/core/runner/contracts.ts:2415"
1042
+ ],
1043
+ "via": "Runner.ResumeRun",
1044
+ "added": [
1045
+ "reopenUnstarted"
1046
+ ],
1047
+ "addedDetail": [
1048
+ {
1049
+ "key": "reopenUnstarted",
1050
+ "optional": false
1051
+ }
1052
+ ],
1053
+ "addedRequired": [
1054
+ "reopenUnstarted"
1055
+ ],
1056
+ "removed": [
1057
+ "onEnvRestoreFailed"
1058
+ ],
1059
+ "breaking": true,
1060
+ "criteriaCovered": false
1061
+ },
1062
+ {
1063
+ "type": "Runner",
1064
+ "at": [
1065
+ "src/core/runner/runtask.ts:173"
1066
+ ],
1067
+ "added": [
1068
+ "compactSession"
1069
+ ],
1070
+ "addedDetail": [
1071
+ {
1072
+ "key": "compactSession",
1073
+ "optional": true
1074
+ }
1075
+ ],
1076
+ "addedRequired": [],
1077
+ "removed": [],
1078
+ "breaking": false,
1079
+ "criteriaCovered": false
1080
+ }
1081
+ ],
1082
+ "typeKeysUnreadableArms": [],
1083
+ "typeKeysFlattenedCount": 249,
1084
+ "signatures": [
1085
+ {
1086
+ "name": "PeerHeldQueue.hold",
1087
+ "at": [
1088
+ "src/agents/peer-held-queue.ts:151"
1089
+ ],
1090
+ "from": [
1091
+ "(entry: Omit<PeerHeldEntry, \"heldAt\" | \"released\">): void"
1092
+ ],
1093
+ "to": [
1094
+ "(entry: Omit<PeerHeldEntry, \"heldAt\" | \"decision\">, decision?: PeerCardDecision): Promise<PeerHoldOutcome>"
1095
+ ],
1096
+ "changes": [
1097
+ {
1098
+ "aspect": "param",
1099
+ "detail": "param 1 `entry` type changed, direction not read: …rHeldEntry, \"heldAt\" | \"[released -> decision]\">",
1100
+ "breaking": true,
1101
+ "uncertain": true
1102
+ },
1103
+ {
1104
+ "aspect": "param",
1105
+ "detail": "+optional param `decision?: PeerCardDecision`",
1106
+ "breaking": false
1107
+ },
1108
+ {
1109
+ "aspect": "returns",
1110
+ "detail": "return type [void -> Promise<PeerHoldOutcome>]",
1111
+ "breaking": true
1112
+ }
1113
+ ],
1114
+ "uncertain": "param 1 `entry` type changed, direction not read: …rHeldEntry, \"heldAt\" | \"[released -> decision]\"> — the direction of a type change is not read syntactically, so it is reported breaking: check whether existing call sites still type-check before writing the BREAKING line",
1115
+ "breaking": true,
1116
+ "criteriaCovered": false
1117
+ },
1118
+ {
1119
+ "name": "PeerHeldQueue.reconcile",
1120
+ "at": [
1121
+ "src/agents/peer-held-queue.ts:164"
1122
+ ],
1123
+ "from": [
1124
+ "(present: ReadonlySet<number>): number"
1125
+ ],
1126
+ "to": [
1127
+ "(snapshot: ReadonlyMap<number, MailboxDecision | undefined>): number"
1128
+ ],
1129
+ "changes": [
1130
+ {
1131
+ "aspect": "param",
1132
+ "detail": "param 1 `snapshot` type changed, direction not read: Readonly[Set<number -> Map<number, MailboxDecision | undefined]>",
1133
+ "breaking": true,
1134
+ "uncertain": true
1135
+ }
1136
+ ],
1137
+ "uncertain": "param 1 `snapshot` type changed, direction not read: Readonly[Set<number -> Map<number, MailboxDecision | undefined]> — the direction of a type change is not read syntactically, so it is reported breaking: check whether existing call sites still type-check before writing the BREAKING line",
1138
+ "breaking": true,
1139
+ "criteriaCovered": false
1140
+ },
1141
+ {
1142
+ "name": "PeerHeldQueue.rejudge",
1143
+ "at": [
1144
+ "src/agents/peer-held-queue.ts:155"
1145
+ ],
1146
+ "from": [
1147
+ "(): { released: number; refused: number; held: number; }"
1148
+ ],
1149
+ "to": [
1150
+ "(): Promise<{ released: number; refused: number; held: number; }>"
1151
+ ],
1152
+ "changes": [
1153
+ {
1154
+ "aspect": "returns",
1155
+ "detail": "return type [{ released: number; refused: number; held: number; } -> Promise<{ released: number; refused: number; held: number; }>]",
1156
+ "breaking": true
1157
+ }
1158
+ ],
1159
+ "breaking": true,
1160
+ "criteriaCovered": false
1161
+ },
1162
+ {
1163
+ "name": "PeerHeldQueue.settle",
1164
+ "at": [
1165
+ "src/agents/peer-held-queue.ts:168"
1166
+ ],
1167
+ "from": [
1168
+ "(seq: number, decision: \"approve\" | \"cancel\" | \"deny\"): PeerHeldSettleOutcome"
1169
+ ],
1170
+ "to": [
1171
+ "(seq: number, decision: \"approve\" | \"cancel\" | \"deny\"): Promise<PeerHeldSettleOutcome>"
1172
+ ],
1173
+ "changes": [
1174
+ {
1175
+ "aspect": "returns",
1176
+ "detail": "return type P[eerHeldSettleOutcome -> romise<PeerHeldSettleOutcome>]",
1177
+ "breaking": true
1178
+ }
1179
+ ],
1180
+ "breaking": true,
1181
+ "criteriaCovered": false
1182
+ },
1183
+ {
1184
+ "name": "PeerHeldQueue.shutdown",
1185
+ "at": [
1186
+ "src/agents/peer-held-queue.ts:175"
1187
+ ],
1188
+ "from": [
1189
+ "(): void"
1190
+ ],
1191
+ "to": [
1192
+ "(): Promise<void>"
1193
+ ],
1194
+ "changes": [
1195
+ {
1196
+ "aspect": "returns",
1197
+ "detail": "return type [void -> Promise<void>]",
1198
+ "breaking": true
1199
+ }
1200
+ ],
1201
+ "breaking": true,
1202
+ "criteriaCovered": false
1203
+ },
1204
+ {
1205
+ "name": "readOnlyShellVerdict",
1206
+ "at": [
1207
+ "src/core/read-only-shell.ts:129"
1208
+ ],
1209
+ "from": [
1210
+ "(command: string, shape?: ShellCommandShape, cwd?: string, bound?: (() => LineDescriptors) | LineDescriptors): ReadOnlyShellVerdict"
1211
+ ],
1212
+ "to": [
1213
+ "(command: string, opts?: ReadOnlyShellOptions): ReadOnlyShellVerdict"
1214
+ ],
1215
+ "changes": [
1216
+ {
1217
+ "aspect": "param",
1218
+ "detail": "param 2 `opts` type changed, direction not read: [ShellCommandShape -> ReadOnlyShellOptions]",
1219
+ "breaking": true,
1220
+ "uncertain": true
1221
+ },
1222
+ {
1223
+ "aspect": "param",
1224
+ "detail": "-param `cwd?: string`",
1225
+ "breaking": true
1226
+ },
1227
+ {
1228
+ "aspect": "param",
1229
+ "detail": "-param `bound?: (() => LineDescriptors) | LineDescriptors`",
1230
+ "breaking": true
1231
+ }
1232
+ ],
1233
+ "uncertain": "param 2 `opts` type changed, direction not read: [ShellCommandShape -> ReadOnlyShellOptions] — the direction of a type change is not read syntactically, so it is reported breaking: check whether existing call sites still type-check before writing the BREAKING line",
1234
+ "breaking": true,
1235
+ "criteriaCovered": false
1236
+ }
1237
+ ],
1238
+ "declarationMoves": [
1239
+ {
1240
+ "name": "convertToLlm",
1241
+ "kind": null,
1242
+ "onSurface": false,
1243
+ "from": [
1244
+ "src/engine/harness/messages.ts"
1245
+ ],
1246
+ "to": [
1247
+ "src/engine/harness/messages.ts",
1248
+ "src/internal/harness.ts"
1249
+ ]
1250
+ },
1251
+ {
1252
+ "name": "nearMissSpellingOf",
1253
+ "kind": null,
1254
+ "onSurface": false,
1255
+ "from": [
1256
+ "src/core/allow-entry.ts"
1257
+ ],
1258
+ "to": [
1259
+ "src/core/tool-name-aliases.ts"
1260
+ ]
1261
+ }
1262
+ ],
1263
+ "mintMoves": [],
1264
+ "criteriaObserves": [
1265
+ {
1266
+ "kind": "engineNoticeCode",
1267
+ "name": "config.execution_env_capability_invalid",
1268
+ "assertions": [
1269
+ "G1.a"
1270
+ ]
1271
+ },
1272
+ {
1273
+ "kind": "engineNoticeCode",
1274
+ "name": "route.finish_reason_unknown",
1275
+ "assertions": [
1276
+ "G2.a"
1277
+ ]
1278
+ },
1279
+ {
1280
+ "kind": "taskEventField",
1281
+ "name": "tool_end.isError",
1282
+ "assertions": [
1283
+ "G1.a",
1284
+ "G5.a",
1285
+ "G6.a",
1286
+ "G9.a"
1287
+ ]
1288
+ },
1289
+ {
1290
+ "kind": "taskEventField",
1291
+ "name": "tool_end.structured",
1292
+ "assertions": [
1293
+ "G1.a",
1294
+ "G6.a"
1295
+ ]
1296
+ },
1297
+ {
1298
+ "kind": "typeMember",
1299
+ "name": "ApprovalObject.targetReads",
1300
+ "assertions": [
1301
+ "G6.a"
1302
+ ]
1303
+ },
1304
+ {
1305
+ "kind": "typeMember",
1306
+ "name": "AskRequest.ruleOffersAbsence",
1307
+ "assertions": [
1308
+ "G5.a"
1309
+ ]
1310
+ },
1311
+ {
1312
+ "kind": "typeMember",
1313
+ "name": "BackgroundAgentRecord.name",
1314
+ "assertions": [
1315
+ "G10.a"
1316
+ ]
1317
+ },
1318
+ {
1319
+ "kind": "typeMember",
1320
+ "name": "BackgroundAgentRowSummary.name",
1321
+ "assertions": [
1322
+ "G10.a"
1323
+ ]
1324
+ },
1325
+ {
1326
+ "kind": "typeMember",
1327
+ "name": "CheckpointStore.reopen",
1328
+ "assertions": [
1329
+ "G8.a"
1330
+ ]
1331
+ },
1332
+ {
1333
+ "kind": "typeMember",
1334
+ "name": "CompactSessionResult.events",
1335
+ "assertions": [
1336
+ "G3.a"
1337
+ ]
1338
+ },
1339
+ {
1340
+ "kind": "typeMember",
1341
+ "name": "CompactSessionResult.outcome",
1342
+ "assertions": [
1343
+ "G3.a"
1344
+ ]
1345
+ },
1346
+ {
1347
+ "kind": "typeMember",
1348
+ "name": "EngineNotice.detail",
1349
+ "assertions": [
1350
+ "G2.a"
1351
+ ]
1352
+ },
1353
+ {
1354
+ "kind": "typeMember",
1355
+ "name": "EngineNotice.message",
1356
+ "assertions": [
1357
+ "G2.a"
1358
+ ]
1359
+ },
1360
+ {
1361
+ "kind": "typeMember",
1362
+ "name": "FileHistoryError.code",
1363
+ "assertions": [
1364
+ "G11.a"
1365
+ ]
1366
+ },
1367
+ {
1368
+ "kind": "typeMember",
1369
+ "name": "MailboxMessage.decision",
1370
+ "assertions": [
1371
+ "G7.a"
1372
+ ]
1373
+ },
1374
+ {
1375
+ "kind": "typeMember",
1376
+ "name": "McpNameConflict.kind",
1377
+ "assertions": [
1378
+ "G12.a"
1379
+ ]
1380
+ },
1381
+ {
1382
+ "kind": "typeMember",
1383
+ "name": "PeerHeldEntry.decision",
1384
+ "assertions": [
1385
+ "G7.a"
1386
+ ]
1387
+ },
1388
+ {
1389
+ "kind": "typeMember",
1390
+ "name": "ReadOnlyShellOptions.readers",
1391
+ "assertions": [
1392
+ "G9.a"
1393
+ ]
1394
+ },
1395
+ {
1396
+ "kind": "typeMember",
1397
+ "name": "RemoteExecutionEnv.capabilities.sharesProcessTable",
1398
+ "assertions": [
1399
+ "G1.a"
1400
+ ]
1401
+ },
1402
+ {
1403
+ "kind": "typeMember",
1404
+ "name": "RuleReject.code",
1405
+ "assertions": [
1406
+ "G5.a"
1407
+ ]
1408
+ },
1409
+ {
1410
+ "kind": "typeMember",
1411
+ "name": "TaskResult.terminal.code",
1412
+ "assertions": [
1413
+ "G4.a",
1414
+ "G8.a",
1415
+ "G9.a",
1416
+ "G12.a"
1417
+ ]
1418
+ },
1419
+ {
1420
+ "kind": "typeMember",
1421
+ "name": "TaskResult.terminal.message",
1422
+ "assertions": [
1423
+ "G2.a",
1424
+ "G4.a"
1425
+ ]
1426
+ }
1427
+ ],
1428
+ "consumersHint": {
1429
+ "cli": [
1430
+ "CheckpointStore",
1431
+ "FileMailboxStore",
1432
+ "MailboxStore",
1433
+ "PeerHeldQueue",
1434
+ "PeerHeldSettleReason",
1435
+ "PendingAction",
1436
+ "REQUIREMENT_WORDS",
1437
+ "RemoteExecutionEnv",
1438
+ "ResumeRun",
1439
+ "Runner",
1440
+ "readOnlyShellVerdict"
1441
+ ],
1442
+ "server": [
1443
+ "CheckpointStore",
1444
+ "FileCheckpointStore",
1445
+ "FileMailboxStore",
1446
+ "InMemoryCheckpointStore",
1447
+ "InMemoryMailboxStore",
1448
+ "MailboxMessage",
1449
+ "MailboxStore",
1450
+ "PERSISTED_RULE_MATCHES",
1451
+ "PendingAction",
1452
+ "RemoteExecutionEnv",
1453
+ "ResumeRun",
1454
+ "Runner",
1455
+ "readOnlyShellVerdict"
1456
+ ],
1457
+ "sdk": [
1458
+ "PERSISTED_RULE_MATCHES",
1459
+ "PendingAction",
1460
+ "Runner"
1461
+ ],
1462
+ "note": "scanned cli@d8289997 server@0c4fcc35 sdk@2c4a7c3 — a name listed is MENTIONED there today, which is evidence of consumption, not proof of it. Ledger files (**/docs/core-consumption/**, **/docs/wire-consumption/**, **/*LEDGER*.json) are not evidence of use — server: 10 name(s) matched ONLY in bookkeeping files and were set aside (ApprovalObject, LiveApprovalObject, PeerHeldEntry, PeerHeldQueue, PeerHeldQueueSink, PeerHeldSettleOutcome, PeerHeldSettleReason, PeerHeldSettlement, REQUIREMENT_WORDS, checkpointStoreExecutionUndeclared)"
1463
+ },
1464
+ "breakingCount": 19,
1465
+ "breakingItems": [
1466
+ "export removed: checkpointStoreExecutionUndeclared (function)",
1467
+ "signature changed: PeerHeldQueue.hold — param 1 `entry` type changed, direction not read: …rHeldEntry, \"heldAt\" | \"[released -> decision]\">; return type [void -> Promise<PeerHoldOutcome>]",
1468
+ "signature changed: PeerHeldQueue.reconcile — param 1 `snapshot` type changed, direction not read: Readonly[Set<number -> Map<number, MailboxDecision | undefined]>",
1469
+ "signature changed: PeerHeldQueue.rejudge — return type [{ released: number; refused: number; held: number; } -> Promise<{ released: number; refused: number; held: number; }>]",
1470
+ "signature changed: PeerHeldQueue.settle — return type P[eerHeldSettleOutcome -> romise<PeerHeldSettleOutcome>]",
1471
+ "signature changed: PeerHeldQueue.shutdown — return type [void -> Promise<void>]",
1472
+ "signature changed: readOnlyShellVerdict — param 2 `opts` type changed, direction not read: [ShellCommandShape -> ReadOnlyShellOptions]; -param `cwd?: string`; -param `bound?: (() => LineDescriptors) | LineDescriptors`",
1473
+ "type gained required keys: MailboxStore +moveDecision",
1474
+ "type gained required keys: PeerHeldEntry +decision",
1475
+ "type gained required keys: PeerHeldQueue +has",
1476
+ "type gained required keys: PeerHeldQueueSink +decide,tellsSender",
1477
+ "type gained required keys: RemoteExecutionEnv +capabilities.sharesProcessTable",
1478
+ "type gained required keys: ResumeRun +reopenUnstarted",
1479
+ "type lost keys: CheckpointStore -redecision,redecision.reopen,redecision.validatingLease",
1480
+ "type lost keys: FileCheckpointStore -redecision",
1481
+ "type lost keys: InMemoryCheckpointStore -redecision",
1482
+ "type lost keys: PeerHeldEntry -released",
1483
+ "type lost keys: PeerHeldQueue -decisions,forgetDecisions",
1484
+ "type lost keys: ResumeRun -onEnvRestoreFailed"
1485
+ ],
1486
+ "toResolvedAt": "b70cd95238e728c9652cf11d846cdb3338bff2c6"
1487
+ }