@sema-agent/core 7.50.2 → 7.51.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 (188) hide show
  1. package/CHANGELOG.md +263 -0
  2. package/dist/agents/child-failure.d.ts +5 -16
  3. package/dist/agents/child-failure.js +4 -24
  4. package/dist/agents/subagent-steps.js +2 -2
  5. package/dist/agents/subagent.d.ts +4 -13
  6. package/dist/agents/subagent.js +94 -204
  7. package/dist/agents/tool-filter.d.ts +2 -2
  8. package/dist/brain/anthropic.d.ts +1 -1
  9. package/dist/brain/anthropic.js +7 -5
  10. package/dist/brain/open-responses.d.ts +1 -1
  11. package/dist/brain/open-responses.js +3 -2
  12. package/dist/brain/openai.d.ts +1 -1
  13. package/dist/brain/openai.js +3 -2
  14. package/dist/brain/request-route.d.ts +2 -2
  15. package/dist/brain/route-adjudicator.d.ts +16 -7
  16. package/dist/brain/route-adjudicator.js +23 -7
  17. package/dist/brain/route-conformance.js +23 -5
  18. package/dist/brain/stream-engine.js +9 -3
  19. package/dist/core/a2a.js +6 -8
  20. package/dist/core/allow-entry.d.ts +45 -26
  21. package/dist/core/allow-entry.js +48 -24
  22. package/dist/core/arg-summary.d.ts +8 -85
  23. package/dist/core/arg-summary.js +4 -386
  24. package/dist/core/ask-origin.d.ts +35 -33
  25. package/dist/core/ask-origin.js +9 -11
  26. package/dist/core/checkpoint-requirements.d.ts +6 -0
  27. package/dist/core/checkpoint-requirements.js +1 -0
  28. package/dist/core/checkpoint-store.d.ts +15 -34
  29. package/dist/core/checkpoint-store.js +5 -4
  30. package/dist/core/classifier-unavailable-arm.d.ts +12 -8
  31. package/dist/core/classifier-unavailable-arm.js +7 -2
  32. package/dist/core/credential-vocabulary.d.ts +3 -2
  33. package/dist/core/credential-vocabulary.js +27 -18
  34. package/dist/core/delegation-frames.d.ts +40 -15
  35. package/dist/core/delegation-frames.js +34 -0
  36. package/dist/core/engine-notice.d.ts +35 -11
  37. package/dist/core/gate-fold.js +9 -7
  38. package/dist/core/gate-lanes.js +6 -4
  39. package/dist/core/gate-outcome.d.ts +81 -15
  40. package/dist/core/gate-outcome.js +168 -67
  41. package/dist/core/governance-codes.d.ts +7 -1
  42. package/dist/core/governance-codes.js +9 -0
  43. package/dist/core/hooks.d.ts +4 -4
  44. package/dist/core/hooks.js +4 -3
  45. package/dist/core/mcp-connection-pool.d.ts +2 -0
  46. package/dist/core/mcp-connection-pool.js +2 -1
  47. package/dist/core/mcp-failure.js +2 -1
  48. package/dist/core/mcp-server-spec.d.ts +27 -5
  49. package/dist/core/mcp.d.ts +13 -38
  50. package/dist/core/mcp.js +28 -23
  51. package/dist/core/media-byte-cap.d.ts +25 -0
  52. package/dist/core/media-byte-cap.js +18 -2
  53. package/dist/core/memory-engine/consolidation-driver.js +1 -1
  54. package/dist/core/mode-policy.d.ts +25 -1
  55. package/dist/core/mode-policy.js +28 -13
  56. package/dist/core/own-property-receipt.d.ts +18 -0
  57. package/dist/core/own-property-receipt.js +39 -0
  58. package/dist/core/permission-rule-model.d.ts +32 -11
  59. package/dist/core/permission-rule-model.js +12 -7
  60. package/dist/core/persisted-rule-arms.d.ts +3 -3
  61. package/dist/core/prompt-section-seat.d.ts +54 -0
  62. package/dist/core/prompt-section-seat.js +49 -0
  63. package/dist/core/protocol-http-auth.d.ts +44 -0
  64. package/dist/core/protocol-http-auth.js +45 -0
  65. package/dist/core/read-face-seats.d.ts +30 -0
  66. package/dist/core/read-face-seats.js +38 -0
  67. package/dist/core/redaction-passes.d.ts +82 -0
  68. package/dist/core/redaction-passes.js +378 -0
  69. package/dist/core/remote-env.d.ts +4 -3
  70. package/dist/core/resume-startup-cause.d.ts +56 -0
  71. package/dist/core/resume-startup-cause.js +43 -0
  72. package/dist/core/rule-denial-sentence.d.ts +2 -2
  73. package/dist/core/runner/announce-once-ledger.js +2 -2
  74. package/dist/core/runner/classifier-ladder.d.ts +17 -13
  75. package/dist/core/runner/classifier-ladder.js +12 -10
  76. package/dist/core/runner/construction-doors.js +9 -20
  77. package/dist/core/runner/contracts.d.ts +4 -4
  78. package/dist/core/runner/gate-exit.js +2 -2
  79. package/dist/core/runner/memory-consolidation-write-judge.d.ts +53 -9
  80. package/dist/core/runner/memory-consolidation-write-judge.js +39 -1
  81. package/dist/core/runner/permission-rule-lanes.d.ts +8 -13
  82. package/dist/core/runner/person-path-rows.d.ts +4 -3
  83. package/dist/core/runner/policy-throw.js +4 -4
  84. package/dist/core/runner/prepare-caps-and-workflow.d.ts +4 -3
  85. package/dist/core/runner/prepare-caps-and-workflow.js +8 -6
  86. package/dist/core/runner/prepare-gate-stations.js +4 -4
  87. package/dist/core/runner/prepare-hands-readface.js +1 -19
  88. package/dist/core/runner/prepare-inherited-gate.js +10 -9
  89. package/dist/core/runner/prepare-policy-chain.d.ts +3 -5
  90. package/dist/core/runner/prepare-policy-chain.js +10 -13
  91. package/dist/core/runner/prepare-project-context.d.ts +4 -4
  92. package/dist/core/runner/prepare-project-context.js +2 -1
  93. package/dist/core/runner/prepare-prompt-assembly.js +1 -0
  94. package/dist/core/runner/prepare-prompt-inputs.d.ts +1 -1
  95. package/dist/core/runner/prepare-prompt-inputs.js +4 -4
  96. package/dist/core/runner/prepare-protocol-tools.d.ts +4 -3
  97. package/dist/core/runner/prepare-protocol-tools.js +3 -2
  98. package/dist/core/runner/prepare-task.js +6 -4
  99. package/dist/core/runner/prepare-turn-wiring.d.ts +16 -13
  100. package/dist/core/runner/prepare-turn-wiring.js +8 -7
  101. package/dist/core/runner/run-harness-handlers.js +2 -2
  102. package/dist/core/runner/run-leg.js +10 -9
  103. package/dist/core/runner/run-settle-and-teardown.js +5 -5
  104. package/dist/core/runner/run-turn-boundary.js +3 -2
  105. package/dist/core/runner/runtask.d.ts +1 -2
  106. package/dist/core/runner/runtask.js +8 -12
  107. package/dist/core/runner/session-rule-policy.d.ts +15 -11
  108. package/dist/core/runner/session-rule-policy.js +43 -33
  109. package/dist/core/runner/stream-lifecycle-verbs.js +2 -2
  110. package/dist/core/runner/stream-settle-backstop.js +2 -1
  111. package/dist/core/runner/sub-agent-deny-lists.d.ts +12 -8
  112. package/dist/core/runner/sub-agent-deny-lists.js +23 -12
  113. package/dist/core/runner/terminal-account.js +3 -3
  114. package/dist/core/runner/tool-output-projection.js +3 -8
  115. package/dist/core/runner/tool-result-media-seat.d.ts +19 -0
  116. package/dist/core/runner/tool-result-media-seat.js +13 -0
  117. package/dist/core/runner/turn-attachments.d.ts +13 -12
  118. package/dist/core/runner/turn-attachments.js +11 -7
  119. package/dist/core/runner-deps.d.ts +4 -3
  120. package/dist/core/safety-merge-corpus.js +21 -21
  121. package/dist/core/secret-env.js +1 -1
  122. package/dist/core/session-policy-store.d.ts +89 -72
  123. package/dist/core/session-policy-store.js +100 -93
  124. package/dist/core/shell-read-silence.d.ts +38 -4
  125. package/dist/core/shell-read-silence.js +102 -0
  126. package/dist/core/side-query.d.ts +7 -8
  127. package/dist/core/skill-grant-binding.d.ts +32 -11
  128. package/dist/core/skill-grant-binding.js +11 -3
  129. package/dist/core/skill-grant.d.ts +4 -3
  130. package/dist/core/skill-grant.js +5 -4
  131. package/dist/core/skills-directory.d.ts +12 -1
  132. package/dist/core/skills-directory.js +17 -8
  133. package/dist/core/store-contracts/checkpoint-store-contract.d.ts +2 -0
  134. package/dist/core/store-contracts/checkpoint-store-contract.js +3 -0
  135. package/dist/core/swappable-deps.d.ts +15 -1
  136. package/dist/core/swappable-deps.js +25 -1
  137. package/dist/core/synthetic-read-verdict.d.ts +16 -14
  138. package/dist/core/synthetic-read-verdict.js +28 -8
  139. package/dist/core/task-notification.d.ts +13 -3
  140. package/dist/core/task-notification.js +12 -1
  141. package/dist/core/task-spec.d.ts +14 -15
  142. package/dist/core/tool-name-readings.d.ts +0 -4
  143. package/dist/core/tool-name-readings.js +0 -1
  144. package/dist/core/tool-policy.d.ts +40 -9
  145. package/dist/core/tool-policy.js +25 -7
  146. package/dist/core/types.d.ts +3 -3
  147. package/dist/core/types.js +1 -1
  148. package/dist/core/untrusted-egress.d.ts +60 -11
  149. package/dist/core/untrusted-egress.js +120 -9
  150. package/dist/core/untrusted-text.js +16 -0
  151. package/dist/core/wiring-manifest.d.ts +22 -8
  152. package/dist/core/wiring-manifest.js +12 -4
  153. package/dist/engine/harness/agent-harness.d.ts +2 -1
  154. package/dist/engine/harness/agent-harness.js +4 -1
  155. package/dist/engine/harness/types.d.ts +3 -0
  156. package/dist/engine/llm/types.d.ts +7 -9
  157. package/dist/engine/loop/agent-loop.d.ts +8 -3
  158. package/dist/engine/loop/agent-loop.js +26 -9
  159. package/dist/engine/loop/types.d.ts +10 -0
  160. package/dist/index.d.ts +17 -5
  161. package/dist/index.js +14 -5
  162. package/dist/orchestration/run-workflow-tool.js +8 -8
  163. package/dist/orchestration/workflow.js +2 -2
  164. package/dist/prompt-assembly/assemble.d.ts +3 -1
  165. package/dist/prompt-assembly/assemble.js +6 -0
  166. package/dist/prompts/cowork.d.ts +42 -0
  167. package/dist/prompts/cowork.js +529 -0
  168. package/dist/prompts/default.d.ts +14 -1
  169. package/dist/prompts/default.js +3 -0
  170. package/dist/stores/file/session-policy-store.d.ts +6 -3
  171. package/dist/stores/file/session-policy-store.js +5 -16
  172. package/dist/tools/artifact/artifact-tool.js +2 -0
  173. package/dist/tools/fs/image-admission.d.ts +57 -4
  174. package/dist/tools/fs/image-admission.js +85 -0
  175. package/dist/tools/fs/path-containment.d.ts +2 -0
  176. package/dist/tools/fs/path-containment.js +5 -0
  177. package/dist/tools/fs/shell-read-check.d.ts +31 -6
  178. package/dist/tools/fs/shell-read-check.js +2 -4
  179. package/dist/tools/fs/shell-read-environment.d.ts +10 -25
  180. package/dist/tools/fs/shell-read-environment.js +6 -18
  181. package/dist/tools/fs/shell-read-establish.d.ts +3 -2
  182. package/dist/tools/fs/shell-read-establish.js +5 -5
  183. package/dist/tools/fs/shell-read-judge.d.ts +38 -8
  184. package/dist/tools/fs/shell-read-judge.js +12 -10
  185. package/dist/tools/web.js +2 -2
  186. package/package.json +1 -1
  187. package/test/export-surface.snapshot.json +94 -10
  188. package/wire-changes/core@7.51.0.json +2421 -0
@@ -0,0 +1,2421 @@
1
+ {
2
+ "repo": "core",
3
+ "version": "7.51.0",
4
+ "from": "001a2d1ae3bc2a3a21a7d2c962af5632156632cf",
5
+ "to": "1b77945f89c5a5115a7e7bc07e2d6c6d822ba780",
6
+ "added": [
7
+ {
8
+ "name": "APPROVAL_ROUTES",
9
+ "kind": "variable",
10
+ "tier": "advanced",
11
+ "at": [
12
+ "src/core/wiring-manifest.ts:728",
13
+ "src/index.ts:3508"
14
+ ],
15
+ "criteriaCovered": false,
16
+ "breaking": false
17
+ },
18
+ {
19
+ "name": "AllowEntryInertDetail",
20
+ "kind": "interface",
21
+ "tier": "advanced",
22
+ "at": [
23
+ "src/core/allow-entry.ts:53",
24
+ "src/index.ts:1479"
25
+ ],
26
+ "criteriaCovered": false,
27
+ "breaking": false
28
+ },
29
+ {
30
+ "name": "ApprovalRoute",
31
+ "kind": "type",
32
+ "tier": "advanced",
33
+ "at": [
34
+ "src/core/wiring-manifest.ts:729",
35
+ "src/index.ts:3508"
36
+ ],
37
+ "criteriaCovered": false,
38
+ "breaking": false
39
+ },
40
+ {
41
+ "name": "BOUND_GRANT_ABSENCES",
42
+ "kind": "variable",
43
+ "tier": "advanced",
44
+ "at": [
45
+ "src/core/skill-grant-binding.ts:26",
46
+ "src/index.ts:3514"
47
+ ],
48
+ "criteriaCovered": false,
49
+ "breaking": false
50
+ },
51
+ {
52
+ "name": "BoundGrantAbsence",
53
+ "kind": "type",
54
+ "tier": "advanced",
55
+ "at": [
56
+ "src/core/skill-grant-binding.ts:27",
57
+ "src/index.ts:3514"
58
+ ],
59
+ "criteriaCovered": false,
60
+ "breaking": false
61
+ },
62
+ {
63
+ "name": "COWORK_PROMPT_SECTIONS",
64
+ "kind": "variable",
65
+ "tier": "advanced",
66
+ "at": [
67
+ "src/index.ts:2563",
68
+ "src/prompts/cowork.ts:602"
69
+ ],
70
+ "criteriaCovered": false,
71
+ "breaking": false
72
+ },
73
+ {
74
+ "name": "ConsolidationWriteJudgeInput",
75
+ "kind": "interface",
76
+ "tier": "internal",
77
+ "at": [
78
+ "src/core/runner/memory-consolidation-write-judge.ts:30",
79
+ "src/index.ts:2429"
80
+ ],
81
+ "criteriaCovered": false,
82
+ "breaking": false
83
+ },
84
+ {
85
+ "name": "DISPOSABLE_PROMPT_SECTIONS",
86
+ "kind": "variable",
87
+ "tier": "advanced",
88
+ "at": [
89
+ "src/core/prompt-section-seat.ts:18",
90
+ "src/index.ts:3517"
91
+ ],
92
+ "criteriaCovered": false,
93
+ "breaking": false
94
+ },
95
+ {
96
+ "name": "DisposablePromptSection",
97
+ "kind": "type",
98
+ "tier": "advanced",
99
+ "at": [
100
+ "src/core/prompt-section-seat.ts:19",
101
+ "src/index.ts:3517"
102
+ ],
103
+ "criteriaCovered": false,
104
+ "breaking": false
105
+ },
106
+ {
107
+ "name": "Egress",
108
+ "kind": "type",
109
+ "tier": "advanced",
110
+ "at": [
111
+ "src/core/untrusted-egress.ts:42",
112
+ "src/index.ts:2964"
113
+ ],
114
+ "criteriaCovered": false,
115
+ "breaking": false
116
+ },
117
+ {
118
+ "name": "EgressTier",
119
+ "kind": "type",
120
+ "tier": "advanced",
121
+ "at": [
122
+ "src/core/untrusted-egress.ts:39",
123
+ "src/index.ts:2964"
124
+ ],
125
+ "criteriaCovered": false,
126
+ "breaking": false
127
+ },
128
+ {
129
+ "name": "McpInstructionsEntry",
130
+ "kind": "interface",
131
+ "tier": "advanced",
132
+ "at": [
133
+ "src/core/prompt-section-seat.ts:53",
134
+ "src/index.ts:3517"
135
+ ],
136
+ "criteriaCovered": false,
137
+ "breaking": false
138
+ },
139
+ {
140
+ "name": "McpMountIdentity",
141
+ "kind": "interface",
142
+ "tier": "advanced",
143
+ "at": [
144
+ "src/core/mcp-server-spec.ts:143",
145
+ "src/core/types.ts:32",
146
+ "src/index.ts:3519"
147
+ ],
148
+ "criteriaCovered": false,
149
+ "breaking": false
150
+ },
151
+ {
152
+ "name": "McpRevocationLedger",
153
+ "kind": "interface",
154
+ "tier": "advanced",
155
+ "at": [
156
+ "src/core/mcp-server-spec.ts:148",
157
+ "src/core/types.ts:32",
158
+ "src/index.ts:3519"
159
+ ],
160
+ "criteriaCovered": false,
161
+ "breaking": false
162
+ },
163
+ {
164
+ "name": "MediaDescriptor",
165
+ "kind": "type",
166
+ "tier": "advanced",
167
+ "at": [
168
+ "src/core/media-byte-cap.ts:67",
169
+ "src/index.ts:159"
170
+ ],
171
+ "criteriaCovered": false,
172
+ "breaking": false
173
+ },
174
+ {
175
+ "name": "PromptSectionAuthor",
176
+ "kind": "type",
177
+ "tier": "advanced",
178
+ "at": [
179
+ "src/core/prompt-section-seat.ts:37",
180
+ "src/index.ts:3517"
181
+ ],
182
+ "criteriaCovered": false,
183
+ "breaking": false
184
+ },
185
+ {
186
+ "name": "PromptSectionDisposition",
187
+ "kind": "type",
188
+ "tier": "advanced",
189
+ "at": [
190
+ "src/core/prompt-section-seat.ts:34",
191
+ "src/index.ts:3517"
192
+ ],
193
+ "criteriaCovered": false,
194
+ "breaking": false
195
+ },
196
+ {
197
+ "name": "PromptSectionEntry",
198
+ "kind": "interface",
199
+ "tier": "advanced",
200
+ "at": [
201
+ "src/core/prompt-section-seat.ts:23",
202
+ "src/index.ts:3517"
203
+ ],
204
+ "criteriaCovered": false,
205
+ "breaking": false
206
+ },
207
+ {
208
+ "name": "REOPEN_REASONS",
209
+ "kind": "variable",
210
+ "tier": "advanced",
211
+ "at": [
212
+ "src/core/checkpoint-store.ts:1850",
213
+ "src/core/resume-startup-cause.ts:43",
214
+ "src/index.ts:802"
215
+ ],
216
+ "criteriaCovered": false,
217
+ "breaking": false
218
+ },
219
+ {
220
+ "name": "RESUME_STARTUP_CAUSES",
221
+ "kind": "variable",
222
+ "tier": "advanced",
223
+ "at": [
224
+ "src/core/resume-startup-cause.ts:46",
225
+ "src/index.ts:802"
226
+ ],
227
+ "criteriaCovered": false,
228
+ "breaking": false
229
+ },
230
+ {
231
+ "name": "RETIRED_MEMBERS",
232
+ "kind": "variable",
233
+ "tier": "advanced",
234
+ "at": [
235
+ "src/core/gate-outcome.ts:444",
236
+ "src/index.ts:1490"
237
+ ],
238
+ "criteriaCovered": false,
239
+ "breaking": false
240
+ },
241
+ {
242
+ "name": "RULE_OFFERS_ABSENCES",
243
+ "kind": "variable",
244
+ "tier": "advanced",
245
+ "at": [
246
+ "src/core/ask-origin.ts:203",
247
+ "src/index.ts:3513"
248
+ ],
249
+ "criteriaCovered": false,
250
+ "breaking": false
251
+ },
252
+ {
253
+ "name": "ResumeStartupCause",
254
+ "kind": "type",
255
+ "tier": "advanced",
256
+ "at": [
257
+ "src/core/resume-startup-cause.ts:47",
258
+ "src/index.ts:802"
259
+ ],
260
+ "criteriaCovered": false,
261
+ "breaking": false
262
+ },
263
+ {
264
+ "name": "RuleEntryReading",
265
+ "kind": "type",
266
+ "tier": "advanced",
267
+ "at": [
268
+ "src/core/allow-entry.ts:129",
269
+ "src/index.ts:1479"
270
+ ],
271
+ "criteriaCovered": false,
272
+ "breaking": false
273
+ },
274
+ {
275
+ "name": "RuleOffersAbsence",
276
+ "kind": "type",
277
+ "tier": "advanced",
278
+ "at": [
279
+ "src/core/ask-origin.ts:204",
280
+ "src/index.ts:3513"
281
+ ],
282
+ "criteriaCovered": false,
283
+ "breaking": false
284
+ },
285
+ {
286
+ "name": "SHADOW_REASON",
287
+ "kind": "variable",
288
+ "tier": "advanced",
289
+ "at": [
290
+ "src/core/allow-entry.ts:570",
291
+ "src/index.ts:3511"
292
+ ],
293
+ "criteriaCovered": false,
294
+ "breaking": false
295
+ },
296
+ {
297
+ "name": "SessionRuleEntryField",
298
+ "kind": "type",
299
+ "tier": "advanced",
300
+ "at": [
301
+ "src/core/session-policy-store.ts:48",
302
+ "src/index.ts:376"
303
+ ],
304
+ "criteriaCovered": false,
305
+ "breaking": false
306
+ },
307
+ {
308
+ "name": "SessionRuleEntryRefusal",
309
+ "kind": "interface",
310
+ "tier": "advanced",
311
+ "at": [
312
+ "src/core/session-policy-store.ts:85",
313
+ "src/index.ts:375"
314
+ ],
315
+ "criteriaCovered": false,
316
+ "breaking": false
317
+ },
318
+ {
319
+ "name": "SessionRuleShapeRefusal",
320
+ "kind": "interface",
321
+ "tier": "advanced",
322
+ "at": [
323
+ "src/core/session-policy-store.ts:78",
324
+ "src/index.ts:374"
325
+ ],
326
+ "criteriaCovered": false,
327
+ "breaking": false
328
+ },
329
+ {
330
+ "name": "TASK_NOTIFICATION_TERMINAL_STATUSES",
331
+ "kind": "variable",
332
+ "tier": "advanced",
333
+ "at": [
334
+ "src/core/task-notification.ts:10",
335
+ "src/index.ts:986"
336
+ ],
337
+ "criteriaCovered": false,
338
+ "breaking": false
339
+ },
340
+ {
341
+ "name": "TaskNotificationTerminalStatus",
342
+ "kind": "type",
343
+ "tier": "advanced",
344
+ "at": [
345
+ "src/core/task-notification.ts:11",
346
+ "src/index.ts:987"
347
+ ],
348
+ "criteriaCovered": false,
349
+ "breaking": false
350
+ },
351
+ {
352
+ "name": "allowRuleShadowSentence",
353
+ "kind": "function",
354
+ "tier": "advanced",
355
+ "at": [
356
+ "src/core/allow-entry.ts:625",
357
+ "src/index.ts:3511"
358
+ ],
359
+ "criteriaCovered": false,
360
+ "breaking": false
361
+ },
362
+ {
363
+ "name": "approvalRouteOf",
364
+ "kind": "function",
365
+ "tier": "advanced",
366
+ "at": [
367
+ "src/core/wiring-manifest.ts:738",
368
+ "src/index.ts:3508"
369
+ ],
370
+ "criteriaCovered": false,
371
+ "breaking": false
372
+ },
373
+ {
374
+ "name": "cardDisclosureOf",
375
+ "kind": "function",
376
+ "tier": "advanced",
377
+ "at": [
378
+ "src/core/allow-entry.ts:638",
379
+ "src/index.ts:3511"
380
+ ],
381
+ "criteriaCovered": false,
382
+ "breaking": false
383
+ },
384
+ {
385
+ "name": "coworkPromptProvider",
386
+ "kind": "function",
387
+ "tier": "advanced",
388
+ "at": [
389
+ "src/index.ts:2563",
390
+ "src/prompts/cowork.ts:591"
391
+ ],
392
+ "criteriaCovered": false,
393
+ "breaking": false
394
+ },
395
+ {
396
+ "name": "createConsolidationWriteJudge",
397
+ "kind": "function",
398
+ "tier": "internal",
399
+ "at": [
400
+ "src/core/runner/memory-consolidation-write-judge.ts:86",
401
+ "src/index.ts:2429"
402
+ ],
403
+ "criteriaCovered": false,
404
+ "breaking": false
405
+ },
406
+ {
407
+ "name": "deliverWriteRefusal",
408
+ "kind": "function",
409
+ "tier": "internal",
410
+ "at": [
411
+ "src/core/runner/memory-consolidation-write-judge.ts:117",
412
+ "src/index.ts:2429"
413
+ ],
414
+ "criteriaCovered": false,
415
+ "breaking": false
416
+ },
417
+ {
418
+ "name": "isMediaBlock",
419
+ "kind": "function",
420
+ "tier": "advanced",
421
+ "at": [
422
+ "src/core/media-byte-cap.ts:61",
423
+ "src/index.ts:159"
424
+ ],
425
+ "criteriaCovered": false,
426
+ "breaking": false
427
+ },
428
+ {
429
+ "name": "isRetiredMember",
430
+ "kind": "function",
431
+ "tier": "advanced",
432
+ "at": [
433
+ "src/core/gate-outcome.ts:493",
434
+ "src/index.ts:1490"
435
+ ],
436
+ "criteriaCovered": false,
437
+ "breaking": false
438
+ },
439
+ {
440
+ "name": "judgeSessionRulesWrite",
441
+ "kind": "function",
442
+ "tier": "advanced",
443
+ "at": [
444
+ "src/core/session-policy-store.ts:327",
445
+ "src/index.ts:371"
446
+ ],
447
+ "criteriaCovered": false,
448
+ "breaking": false
449
+ },
450
+ {
451
+ "name": "mediaBlockDescriptor",
452
+ "kind": "function",
453
+ "tier": "advanced",
454
+ "at": [
455
+ "src/core/media-byte-cap.ts:73",
456
+ "src/index.ts:159"
457
+ ],
458
+ "criteriaCovered": false,
459
+ "breaking": false
460
+ },
461
+ {
462
+ "name": "noApproverSeatDeny",
463
+ "kind": "function",
464
+ "tier": "advanced",
465
+ "at": [
466
+ "src/core/tool-policy.ts:384",
467
+ "src/index.ts:1401"
468
+ ],
469
+ "criteriaCovered": false,
470
+ "breaking": false
471
+ },
472
+ {
473
+ "name": "readRuleEntry",
474
+ "kind": "function",
475
+ "tier": "advanced",
476
+ "at": [
477
+ "src/core/allow-entry.ts:141",
478
+ "src/index.ts:1479"
479
+ ],
480
+ "criteriaCovered": false,
481
+ "breaking": false
482
+ },
483
+ {
484
+ "name": "readSessionRulesShape",
485
+ "kind": "function",
486
+ "tier": "advanced",
487
+ "at": [
488
+ "src/core/session-policy-store.ts:242",
489
+ "src/index.ts:372"
490
+ ],
491
+ "criteriaCovered": false,
492
+ "breaking": false
493
+ },
494
+ {
495
+ "name": "reopenReasonOf",
496
+ "kind": "function",
497
+ "tier": "advanced",
498
+ "at": [
499
+ "src/core/resume-startup-cause.ts:84",
500
+ "src/index.ts:802"
501
+ ],
502
+ "criteriaCovered": false,
503
+ "breaking": false
504
+ },
505
+ {
506
+ "name": "resumeStartupCauseOf",
507
+ "kind": "function",
508
+ "tier": "advanced",
509
+ "at": [
510
+ "src/core/resume-startup-cause.ts:66",
511
+ "src/index.ts:802"
512
+ ],
513
+ "criteriaCovered": false,
514
+ "breaking": false
515
+ }
516
+ ],
517
+ "removed": [
518
+ {
519
+ "name": "SessionRuleNameRefusal",
520
+ "kind": "interface",
521
+ "tier": "advanced",
522
+ "at": [
523
+ "src/core/session-policy-store.ts:66",
524
+ "src/index.ts:372"
525
+ ],
526
+ "breaking": true
527
+ },
528
+ {
529
+ "name": "assertSessionRuleNamesCurrent",
530
+ "kind": "function",
531
+ "tier": "advanced",
532
+ "at": [
533
+ "src/core/session-policy-store.ts:133",
534
+ "src/index.ts:370"
535
+ ],
536
+ "breaking": true
537
+ },
538
+ {
539
+ "name": "compileAllowEntry",
540
+ "kind": "function",
541
+ "tier": "advanced",
542
+ "at": [
543
+ "src/core/allow-entry.ts:177",
544
+ "src/index.ts:1469"
545
+ ],
546
+ "breaking": true
547
+ },
548
+ {
549
+ "name": "stripRev",
550
+ "kind": "function",
551
+ "tier": "advanced",
552
+ "at": [
553
+ "src/core/session-policy-store.ts:359",
554
+ "src/index.ts:369"
555
+ ],
556
+ "breaking": true
557
+ }
558
+ ],
559
+ "changed": [
560
+ {
561
+ "name": "ShellReadVerdict",
562
+ "from": {
563
+ "kind": "interface",
564
+ "tier": "advanced"
565
+ },
566
+ "to": {
567
+ "kind": "type",
568
+ "tier": "advanced"
569
+ },
570
+ "at": [
571
+ "src/index.ts:1129",
572
+ "src/tools/fs/shell-read-check.ts:88"
573
+ ],
574
+ "breaking": true
575
+ }
576
+ ],
577
+ "narrowed": [
578
+ {
579
+ "id": "F5",
580
+ "source": "behaviorFlips.summary",
581
+ "text": "#1480 (behaviour narrowing): a session `toolAllow` is a narrowing — a command line is admitted only when EVERY segment is named by an entry."
582
+ },
583
+ {
584
+ "id": "F8",
585
+ "source": "behaviorFlips.summary",
586
+ "text": "#1534 (hard-breaking; auto-mode narrowing): a removal whose target the command text cannot resolve is a person's question, never the classifier's; the three removal-breaker classes hold one frozen row."
587
+ },
588
+ {
589
+ "id": "F12",
590
+ "source": "behaviorFlips.summary",
591
+ "text": "#1493 (hard-breaking notice reading; behaviour narrowing of the person's reach): a delegated child under a parent in `auto` arms from the ancestor's face, and the fold notice names the folded word on the parent's stream too."
592
+ },
593
+ {
594
+ "id": "F20",
595
+ "source": "behaviorFlips.summary",
596
+ "text": "#1561 / #1562 (additive; behaviour narrowing of the admission): the desktop Cowork base is carried verbatim as data and rendered section by section only where every operational claim in a section is established by a fact here."
597
+ },
598
+ {
599
+ "id": "F23",
600
+ "source": "behaviorFlips.summary",
601
+ "text": "#1708 (security; behaviour narrowing): a read station's answer is read one way by every reader — the resumed leg's belt refuses a RETURNED silence as it refused a thrown one."
602
+ },
603
+ {
604
+ "id": "F25",
605
+ "source": "behaviorFlips.summary",
606
+ "text": "#1694 (security; behaviour narrowing): a resolver that fails for a whole command is not an adapter without a file face."
607
+ },
608
+ {
609
+ "id": "F26",
610
+ "source": "behaviorFlips.summary",
611
+ "text": "#1684 (security; behaviour narrowing): a followed sed backup the station cannot follow is still a write."
612
+ },
613
+ {
614
+ "id": "G2",
615
+ "source": "criteria.title",
616
+ "text": "#1480 / #1497 / #1522 — a session's toolDeny / toolAllow are rule entries of one grammar (toolAllow narrows), commandAllow / commandDeny are retired, the store refuses in one family, and no refusal carries stored text"
617
+ }
618
+ ],
619
+ "closedSetMembers": [
620
+ {
621
+ "set": "ADMITTED_DOCUMENT_MIME_TYPES",
622
+ "at": [
623
+ "src/tools/fs/image-admission.ts:87"
624
+ ],
625
+ "newSet": true,
626
+ "added": [
627
+ "application/pdf"
628
+ ],
629
+ "removed": [],
630
+ "breaking": false,
631
+ "criteriaCovered": false
632
+ },
633
+ {
634
+ "set": "APPROVAL_ROUTES",
635
+ "at": [
636
+ "src/core/wiring-manifest.ts:728"
637
+ ],
638
+ "newSet": true,
639
+ "added": [
640
+ "durable_park",
641
+ "live_approver",
642
+ "none"
643
+ ],
644
+ "removed": [],
645
+ "breaking": false,
646
+ "criteriaCovered": false
647
+ },
648
+ {
649
+ "set": "ASK_CLASSES",
650
+ "at": [
651
+ "src/core/ask-origin.ts:631"
652
+ ],
653
+ "newSet": false,
654
+ "added": [],
655
+ "removed": [
656
+ "governance_unavailable"
657
+ ],
658
+ "persistedBy": "none",
659
+ "breaking": true,
660
+ "criteriaCovered": false
661
+ },
662
+ {
663
+ "set": "AdmissionPosture",
664
+ "at": [
665
+ "src/core/permission-rule-model.ts:2391"
666
+ ],
667
+ "newSet": true,
668
+ "added": [
669
+ "grant",
670
+ "narrowing"
671
+ ],
672
+ "removed": [],
673
+ "breaking": false,
674
+ "criteriaCovered": false
675
+ },
676
+ {
677
+ "set": "ApprovalRoute",
678
+ "at": [
679
+ "src/core/wiring-manifest.ts:729",
680
+ "src/index.ts:3508"
681
+ ],
682
+ "newSet": true,
683
+ "added": [
684
+ "durable_park",
685
+ "live_approver",
686
+ "none"
687
+ ],
688
+ "removed": [],
689
+ "breaking": false,
690
+ "criteriaCovered": false
691
+ },
692
+ {
693
+ "set": "AskRequest.ruleOffersAbsence",
694
+ "at": [
695
+ "src/core/tool-policy.ts:2666"
696
+ ],
697
+ "newSet": false,
698
+ "added": [
699
+ "allow_outranked",
700
+ "ask_rule_matched"
701
+ ],
702
+ "removed": [
703
+ "shadowed"
704
+ ],
705
+ "persistedBy": "none",
706
+ "breaking": true,
707
+ "criteriaCovered": false
708
+ },
709
+ {
710
+ "set": "BOUND_GRANT_ABSENCES",
711
+ "at": [
712
+ "src/core/skill-grant-binding.ts:26"
713
+ ],
714
+ "newSet": true,
715
+ "added": [
716
+ "not_bindable",
717
+ "unreadable"
718
+ ],
719
+ "removed": [],
720
+ "breaking": false,
721
+ "criteriaCovered": false
722
+ },
723
+ {
724
+ "set": "BackgroundChildEvent.stoppedBy",
725
+ "at": [
726
+ "src/core/delegation-frames.ts:196"
727
+ ],
728
+ "newSet": false,
729
+ "added": [],
730
+ "removed": [
731
+ "parent",
732
+ "system",
733
+ "user"
734
+ ],
735
+ "persistedBy": "none",
736
+ "breaking": true,
737
+ "criteriaCovered": false
738
+ },
739
+ {
740
+ "set": "BoundGrantAbsence",
741
+ "at": [
742
+ "src/core/skill-grant-binding.ts:27",
743
+ "src/index.ts:3514"
744
+ ],
745
+ "newSet": true,
746
+ "added": [
747
+ "not_bindable",
748
+ "unreadable"
749
+ ],
750
+ "removed": [],
751
+ "breaking": false,
752
+ "criteriaCovered": false
753
+ },
754
+ {
755
+ "set": "DISPOSABLE_PROMPT_SECTIONS",
756
+ "at": [
757
+ "src/core/prompt-section-seat.ts:18"
758
+ ],
759
+ "newSet": true,
760
+ "added": [
761
+ "core/discovery.mcp-instructions"
762
+ ],
763
+ "removed": [],
764
+ "breaking": false,
765
+ "criteriaCovered": false
766
+ },
767
+ {
768
+ "set": "DisposablePromptSection",
769
+ "at": [
770
+ "src/core/prompt-section-seat.ts:19",
771
+ "src/index.ts:3517"
772
+ ],
773
+ "newSet": true,
774
+ "added": [
775
+ "core/discovery.mcp-instructions"
776
+ ],
777
+ "removed": [],
778
+ "breaking": false,
779
+ "criteriaCovered": false
780
+ },
781
+ {
782
+ "set": "ENGINE_NOTICE_CODES",
783
+ "at": [
784
+ "src/core/governance-codes.ts:361"
785
+ ],
786
+ "newSet": false,
787
+ "added": [
788
+ "config.read_deny_swapped",
789
+ "permission.entry_mode_clamped",
790
+ "tool_result.media_refused"
791
+ ],
792
+ "removed": [],
793
+ "breaking": false,
794
+ "criteriaCovered": true
795
+ },
796
+ {
797
+ "set": "EgressTier",
798
+ "at": [
799
+ "src/core/untrusted-egress.ts:39"
800
+ ],
801
+ "newSet": true,
802
+ "added": [
803
+ "human",
804
+ "same-principal"
805
+ ],
806
+ "removed": [],
807
+ "breaking": false,
808
+ "criteriaCovered": false
809
+ },
810
+ {
811
+ "set": "MediaRefusalReason",
812
+ "at": [
813
+ "src/tools/fs/image-admission.ts:106"
814
+ ],
815
+ "newSet": true,
816
+ "added": [
817
+ "base64_too_large",
818
+ "magic_mismatch",
819
+ "mime_unsupported",
820
+ "raw_too_large",
821
+ "undecodable"
822
+ ],
823
+ "removed": [],
824
+ "breaking": false,
825
+ "criteriaCovered": false
826
+ },
827
+ {
828
+ "set": "PendingAction.ruleOffersAbsence",
829
+ "at": [
830
+ "src/core/checkpoint-store.ts:1034"
831
+ ],
832
+ "newSet": false,
833
+ "added": [
834
+ "allow_outranked",
835
+ "ask_rule_matched"
836
+ ],
837
+ "removed": [
838
+ "shadowed"
839
+ ],
840
+ "persistedBy": "none",
841
+ "breaking": true,
842
+ "criteriaCovered": false
843
+ },
844
+ {
845
+ "set": "PromptSectionAuthor",
846
+ "at": [
847
+ "src/core/prompt-section-seat.ts:37"
848
+ ],
849
+ "newSet": true,
850
+ "added": [
851
+ "host",
852
+ "server"
853
+ ],
854
+ "removed": [],
855
+ "breaking": false,
856
+ "criteriaCovered": false
857
+ },
858
+ {
859
+ "set": "READ_DENY_DEPLOYMENT_SEATS",
860
+ "at": [
861
+ "src/core/read-face-seats.ts:41"
862
+ ],
863
+ "newSet": true,
864
+ "added": [
865
+ "readDenyBuiltinExclude",
866
+ "readDenyBuiltinTiers",
867
+ "readDenyPatterns"
868
+ ],
869
+ "removed": [],
870
+ "breaking": false,
871
+ "criteriaCovered": false
872
+ },
873
+ {
874
+ "set": "REOPEN_REASONS",
875
+ "at": [
876
+ "src/core/resume-startup-cause.ts:43"
877
+ ],
878
+ "newSet": true,
879
+ "added": [
880
+ "config_refused",
881
+ "constraint_rejected",
882
+ "env_failed",
883
+ "tool_unavailable"
884
+ ],
885
+ "removed": [],
886
+ "breaking": false,
887
+ "criteriaCovered": false
888
+ },
889
+ {
890
+ "set": "RESUME_STARTUP_CAUSES",
891
+ "at": [
892
+ "src/core/resume-startup-cause.ts:46"
893
+ ],
894
+ "newSet": true,
895
+ "added": [
896
+ "configuration",
897
+ "decision_rejected",
898
+ "environment",
899
+ "session_gone",
900
+ "tool_unavailable"
901
+ ],
902
+ "removed": [],
903
+ "breaking": false,
904
+ "criteriaCovered": false
905
+ },
906
+ {
907
+ "set": "RULE_OFFERS_ABSENCES",
908
+ "at": [
909
+ "src/core/ask-origin.ts:203"
910
+ ],
911
+ "newSet": true,
912
+ "added": [
913
+ "allow_outranked",
914
+ "ask_rule_matched",
915
+ "lane_cannot_speak",
916
+ "mandated"
917
+ ],
918
+ "removed": [],
919
+ "breaking": false,
920
+ "criteriaCovered": false
921
+ },
922
+ {
923
+ "set": "ReadDenyDeploymentSeat",
924
+ "at": [
925
+ "src/core/read-face-seats.ts:42"
926
+ ],
927
+ "newSet": true,
928
+ "added": [
929
+ "readDenyBuiltinExclude",
930
+ "readDenyBuiltinTiers",
931
+ "readDenyPatterns"
932
+ ],
933
+ "removed": [],
934
+ "breaking": false,
935
+ "criteriaCovered": false
936
+ },
937
+ {
938
+ "set": "ReopenReason",
939
+ "at": [
940
+ "src/core/checkpoint-store.ts:1850",
941
+ "src/core/resume-startup-cause.ts:44",
942
+ "src/index.ts:779"
943
+ ],
944
+ "newSet": false,
945
+ "added": [
946
+ "config_refused"
947
+ ],
948
+ "removed": [],
949
+ "breaking": false,
950
+ "criteriaCovered": false
951
+ },
952
+ {
953
+ "set": "ResumeStartupCause",
954
+ "at": [
955
+ "src/core/resume-startup-cause.ts:47",
956
+ "src/index.ts:802"
957
+ ],
958
+ "newSet": true,
959
+ "added": [
960
+ "configuration",
961
+ "decision_rejected",
962
+ "environment",
963
+ "session_gone",
964
+ "tool_unavailable"
965
+ ],
966
+ "removed": [],
967
+ "breaking": false,
968
+ "criteriaCovered": false
969
+ },
970
+ {
971
+ "set": "RoutePairingPosture",
972
+ "at": [
973
+ "src/engine/llm/types.ts:1167"
974
+ ],
975
+ "newSet": false,
976
+ "added": [],
977
+ "removed": [
978
+ "unpinned"
979
+ ],
980
+ "breaking": true,
981
+ "criteriaCovered": false
982
+ },
983
+ {
984
+ "set": "RoutePairingStatus",
985
+ "at": [
986
+ "src/brain/route-adjudicator.ts:640"
987
+ ],
988
+ "newSet": false,
989
+ "added": [],
990
+ "removed": [
991
+ "ok:unpinned"
992
+ ],
993
+ "breaking": true,
994
+ "criteriaCovered": false
995
+ },
996
+ {
997
+ "set": "RuleOffersAbsence",
998
+ "at": [
999
+ "src/core/ask-origin.ts:204",
1000
+ "src/index.ts:3513"
1001
+ ],
1002
+ "newSet": true,
1003
+ "added": [
1004
+ "allow_outranked",
1005
+ "ask_rule_matched",
1006
+ "lane_cannot_speak",
1007
+ "mandated"
1008
+ ],
1009
+ "removed": [],
1010
+ "breaking": false,
1011
+ "criteriaCovered": false
1012
+ },
1013
+ {
1014
+ "set": "SWAPPABLE_DEP_SEATS",
1015
+ "at": [
1016
+ "src/core/swappable-deps.ts:74"
1017
+ ],
1018
+ "newSet": false,
1019
+ "added": [
1020
+ "readDenyBuiltinExclude",
1021
+ "readDenyBuiltinTiers",
1022
+ "readDenyPatterns"
1023
+ ],
1024
+ "removed": [],
1025
+ "breaking": false,
1026
+ "criteriaCovered": false
1027
+ },
1028
+ {
1029
+ "set": "SessionPolicyError.code",
1030
+ "at": [
1031
+ "src/core/session-policy-store.ts:99"
1032
+ ],
1033
+ "newSet": false,
1034
+ "added": [
1035
+ "inert_entry",
1036
+ "invalid_shape"
1037
+ ],
1038
+ "removed": [
1039
+ "legacy_tool_name"
1040
+ ],
1041
+ "persistedBy": "none",
1042
+ "breaking": true,
1043
+ "criteriaCovered": false
1044
+ },
1045
+ {
1046
+ "set": "SkillsDirectoryWarningCode",
1047
+ "at": [
1048
+ "src/core/skills-directory.ts:56"
1049
+ ],
1050
+ "newSet": false,
1051
+ "added": [
1052
+ "outside_root"
1053
+ ],
1054
+ "removed": [],
1055
+ "breaking": false,
1056
+ "criteriaCovered": false
1057
+ },
1058
+ {
1059
+ "set": "TASK_NOTIFICATION_TERMINAL_STATUSES",
1060
+ "at": [
1061
+ "src/core/task-notification.ts:10"
1062
+ ],
1063
+ "newSet": true,
1064
+ "added": [
1065
+ "cancelled",
1066
+ "completed",
1067
+ "failed",
1068
+ "killed"
1069
+ ],
1070
+ "removed": [],
1071
+ "breaking": false,
1072
+ "criteriaCovered": false
1073
+ },
1074
+ {
1075
+ "set": "TaskNotificationTerminalStatus",
1076
+ "at": [
1077
+ "src/core/task-notification.ts:11",
1078
+ "src/index.ts:987"
1079
+ ],
1080
+ "newSet": true,
1081
+ "added": [
1082
+ "cancelled",
1083
+ "completed",
1084
+ "failed",
1085
+ "killed"
1086
+ ],
1087
+ "removed": [],
1088
+ "breaking": false,
1089
+ "criteriaCovered": false
1090
+ }
1091
+ ],
1092
+ "closedSetsUnreadable": [],
1093
+ "typeKeys": [
1094
+ {
1095
+ "type": "AllowEntryInert",
1096
+ "at": [
1097
+ "src/core/allow-entry.ts:76"
1098
+ ],
1099
+ "via": "SkillGrantHit.readsAsNothing",
1100
+ "added": [
1101
+ "guidance"
1102
+ ],
1103
+ "addedDetail": [
1104
+ {
1105
+ "key": "guidance",
1106
+ "optional": true
1107
+ }
1108
+ ],
1109
+ "addedRequired": [],
1110
+ "removed": [],
1111
+ "breaking": false,
1112
+ "criteriaCovered": false
1113
+ },
1114
+ {
1115
+ "type": "AskRequest",
1116
+ "at": [
1117
+ "src/core/tool-policy.ts:2535"
1118
+ ],
1119
+ "added": [
1120
+ "boundGrantAbsence"
1121
+ ],
1122
+ "addedDetail": [
1123
+ {
1124
+ "key": "boundGrantAbsence",
1125
+ "optional": true
1126
+ }
1127
+ ],
1128
+ "addedRequired": [],
1129
+ "removed": [],
1130
+ "breaking": false,
1131
+ "criteriaCovered": true
1132
+ },
1133
+ {
1134
+ "type": "BackgroundChildEvent",
1135
+ "at": [
1136
+ "src/core/delegation-frames.ts:25"
1137
+ ],
1138
+ "added": [
1139
+ "result"
1140
+ ],
1141
+ "addedDetail": [
1142
+ {
1143
+ "key": "result",
1144
+ "optional": true
1145
+ }
1146
+ ],
1147
+ "addedRequired": [],
1148
+ "removed": [],
1149
+ "breaking": false,
1150
+ "criteriaCovered": true
1151
+ },
1152
+ {
1153
+ "type": "CheckpointSummary",
1154
+ "at": [
1155
+ "src/core/checkpoint-store.ts:2109"
1156
+ ],
1157
+ "added": [
1158
+ "boundGrantAbsence"
1159
+ ],
1160
+ "addedDetail": [
1161
+ {
1162
+ "key": "boundGrantAbsence",
1163
+ "optional": true
1164
+ }
1165
+ ],
1166
+ "addedRequired": [],
1167
+ "removed": [],
1168
+ "breaking": false,
1169
+ "criteriaCovered": true
1170
+ },
1171
+ {
1172
+ "type": "ClassifierUnavailableInfo",
1173
+ "at": [
1174
+ "src/core/classifier-unavailable-arm.ts:35"
1175
+ ],
1176
+ "added": [
1177
+ "route"
1178
+ ],
1179
+ "addedDetail": [
1180
+ {
1181
+ "key": "route",
1182
+ "optional": false
1183
+ }
1184
+ ],
1185
+ "addedRequired": [
1186
+ "route"
1187
+ ],
1188
+ "removed": [
1189
+ "disposition"
1190
+ ],
1191
+ "breaking": true,
1192
+ "criteriaCovered": true
1193
+ },
1194
+ {
1195
+ "type": "ClassifierUnavailableSeat",
1196
+ "at": [
1197
+ "src/core/classifier-unavailable-arm.ts:46"
1198
+ ],
1199
+ "added": [
1200
+ "route"
1201
+ ],
1202
+ "addedDetail": [
1203
+ {
1204
+ "key": "route",
1205
+ "optional": true
1206
+ }
1207
+ ],
1208
+ "addedRequired": [],
1209
+ "removed": [
1210
+ "approvalSeat"
1211
+ ],
1212
+ "breaking": true,
1213
+ "criteriaCovered": true
1214
+ },
1215
+ {
1216
+ "type": "InheritedGate",
1217
+ "at": [
1218
+ "src/core/runner/contracts.ts:1236"
1219
+ ],
1220
+ "via": "RunInternals.inheritedGate",
1221
+ "added": [
1222
+ "autoModeFace"
1223
+ ],
1224
+ "addedDetail": [
1225
+ {
1226
+ "key": "autoModeFace",
1227
+ "optional": true
1228
+ }
1229
+ ],
1230
+ "addedRequired": [],
1231
+ "removed": [],
1232
+ "breaking": false,
1233
+ "criteriaCovered": false
1234
+ },
1235
+ {
1236
+ "type": "MaterializedMcp",
1237
+ "at": [
1238
+ "src/core/mcp.ts:182"
1239
+ ],
1240
+ "added": [
1241
+ "instructionsDelta.pendingAdds[].author",
1242
+ "serverInstructions[].author"
1243
+ ],
1244
+ "addedDetail": [
1245
+ {
1246
+ "key": "instructionsDelta.pendingAdds[].author",
1247
+ "optional": false
1248
+ },
1249
+ {
1250
+ "key": "serverInstructions[].author",
1251
+ "optional": false
1252
+ }
1253
+ ],
1254
+ "addedRequired": [
1255
+ "instructionsDelta.pendingAdds[].author",
1256
+ "serverInstructions[].author"
1257
+ ],
1258
+ "removed": [],
1259
+ "breaking": true,
1260
+ "criteriaCovered": false
1261
+ },
1262
+ {
1263
+ "type": "McpServerSpec",
1264
+ "at": [
1265
+ "src/core/mcp-server-spec.ts:14"
1266
+ ],
1267
+ "added": [
1268
+ "fingerprint"
1269
+ ],
1270
+ "addedDetail": [
1271
+ {
1272
+ "key": "fingerprint",
1273
+ "optional": true
1274
+ }
1275
+ ],
1276
+ "addedRequired": [],
1277
+ "removed": [],
1278
+ "breaking": false,
1279
+ "criteriaCovered": true
1280
+ },
1281
+ {
1282
+ "type": "PendingAction",
1283
+ "at": [
1284
+ "src/core/checkpoint-store.ts:967"
1285
+ ],
1286
+ "added": [
1287
+ "tool_approval.boundGrantAbsence"
1288
+ ],
1289
+ "addedDetail": [
1290
+ {
1291
+ "key": "tool_approval.boundGrantAbsence",
1292
+ "optional": true
1293
+ }
1294
+ ],
1295
+ "addedRequired": [],
1296
+ "removed": [],
1297
+ "breaking": false,
1298
+ "criteriaCovered": false
1299
+ },
1300
+ {
1301
+ "type": "PromptProvider",
1302
+ "at": [
1303
+ "src/prompts/default.ts:1173"
1304
+ ],
1305
+ "added": [
1306
+ "section"
1307
+ ],
1308
+ "addedDetail": [
1309
+ {
1310
+ "key": "section",
1311
+ "optional": true
1312
+ }
1313
+ ],
1314
+ "addedRequired": [],
1315
+ "removed": [],
1316
+ "breaking": false,
1317
+ "criteriaCovered": true
1318
+ },
1319
+ {
1320
+ "type": "RoutePairingConfig",
1321
+ "at": [
1322
+ "src/engine/llm/types.ts:1158"
1323
+ ],
1324
+ "added": [
1325
+ "laneDefault"
1326
+ ],
1327
+ "addedDetail": [
1328
+ {
1329
+ "key": "laneDefault",
1330
+ "optional": true
1331
+ }
1332
+ ],
1333
+ "addedRequired": [],
1334
+ "removed": [],
1335
+ "breaking": false,
1336
+ "criteriaCovered": false
1337
+ },
1338
+ {
1339
+ "type": "SessionPermissionRules",
1340
+ "at": [
1341
+ "src/core/session-policy-store.ts:32"
1342
+ ],
1343
+ "added": [],
1344
+ "addedDetail": [],
1345
+ "addedRequired": [],
1346
+ "removed": [
1347
+ "commandAllow",
1348
+ "commandDeny"
1349
+ ],
1350
+ "breaking": true,
1351
+ "criteriaCovered": false
1352
+ },
1353
+ {
1354
+ "type": "ShellReadVerdict",
1355
+ "at": [
1356
+ "src/tools/fs/shell-read-check.ts:88"
1357
+ ],
1358
+ "arms": "flattened",
1359
+ "added": [],
1360
+ "addedDetail": [],
1361
+ "addedRequired": [],
1362
+ "removed": [
1363
+ "admit",
1364
+ "details",
1365
+ "disposition",
1366
+ "environmentSilent",
1367
+ "face",
1368
+ "finding",
1369
+ "readRootCandidate",
1370
+ "rowsUnread",
1371
+ "sentence",
1372
+ "targetUnresolved",
1373
+ "unestablished",
1374
+ "unplacedOptions",
1375
+ "unplacedOptions.program",
1376
+ "writeProtected",
1377
+ "writesPlaced"
1378
+ ],
1379
+ "uncertain": "admit, details, disposition, environmentSilent, face, finding, readRootCandidate, rowsUnread, sentence, targetUnresolved, unestablished, unplacedOptions, unplacedOptions.program, writeProtected, writesPlaced may have moved into a qualified reference (`ShellReadVouch`); a qualified reference (`ShellReadQuestion`) rather than left this type — this reader does not follow those, so check before writing the BREAKING line",
1380
+ "breaking": true,
1381
+ "criteriaCovered": false
1382
+ },
1383
+ {
1384
+ "type": "SkillsDirectoryOptions",
1385
+ "at": [
1386
+ "src/core/skills-directory.ts:87"
1387
+ ],
1388
+ "added": [
1389
+ "containWithin"
1390
+ ],
1391
+ "addedDetail": [
1392
+ {
1393
+ "key": "containWithin",
1394
+ "optional": true
1395
+ }
1396
+ ],
1397
+ "addedRequired": [],
1398
+ "removed": [],
1399
+ "breaking": false,
1400
+ "criteriaCovered": true
1401
+ },
1402
+ {
1403
+ "type": "StablePromptContext",
1404
+ "at": [
1405
+ "src/prompts/default.ts:1002"
1406
+ ],
1407
+ "added": [
1408
+ "envFacts"
1409
+ ],
1410
+ "addedDetail": [
1411
+ {
1412
+ "key": "envFacts",
1413
+ "optional": true
1414
+ }
1415
+ ],
1416
+ "addedRequired": [],
1417
+ "removed": [],
1418
+ "breaking": false,
1419
+ "criteriaCovered": true
1420
+ },
1421
+ {
1422
+ "type": "StoredSessionRules",
1423
+ "at": [
1424
+ "src/core/session-policy-store.ts:56"
1425
+ ],
1426
+ "added": [],
1427
+ "addedDetail": [],
1428
+ "addedRequired": [],
1429
+ "removed": [
1430
+ "commandAllow",
1431
+ "commandDeny"
1432
+ ],
1433
+ "breaking": true,
1434
+ "criteriaCovered": false
1435
+ },
1436
+ {
1437
+ "type": "ToolCallRequest",
1438
+ "at": [
1439
+ "src/core/tool-policy.ts:57"
1440
+ ],
1441
+ "added": [
1442
+ "approvalReach"
1443
+ ],
1444
+ "addedDetail": [
1445
+ {
1446
+ "key": "approvalReach",
1447
+ "optional": true
1448
+ }
1449
+ ],
1450
+ "addedRequired": [],
1451
+ "removed": [],
1452
+ "breaking": false,
1453
+ "criteriaCovered": true
1454
+ }
1455
+ ],
1456
+ "typeKeysUnreadableArms": [
1457
+ {
1458
+ "type": "ReopenReason",
1459
+ "at": "src/core/resume-startup-cause.ts:44",
1460
+ "reasons": [
1461
+ "the two refs do not name this type's union arms the same way (flat -> no union read), so the delta below is stated at UNION level, with arm prefixes dropped — a key that moved between arms without leaving the union is not visible in it"
1462
+ ]
1463
+ },
1464
+ {
1465
+ "type": "ShellReadVerdict",
1466
+ "at": "src/tools/fs/shell-read-check.ts:88",
1467
+ "reasons": [
1468
+ "a union carrying 2 arm(s) whose keys this reader does not follow (a qualified reference (`ShellReadVouch`); a qualified reference (`ShellReadQuestion`)) — a key missing from this type at `to` is still reported REMOVED, carrying `uncertain` so the writer checks whether it moved there",
1469
+ "a union of 0 key-bearing arm(s) with no discriminating property (no property is declared by every key-bearing arm with literal words that no other arm shares), so its arms are read TOGETHER — a key added to one arm while a sibling already carries that name moves nothing in this manifest",
1470
+ "the two refs do not name this type's union arms the same way (no union read -> flat), so the delta below is stated at UNION level, with arm prefixes dropped — a key that moved between arms without leaving the union is not visible in it"
1471
+ ]
1472
+ }
1473
+ ],
1474
+ "typeKeysFlattenedCount": 229,
1475
+ "signatures": [
1476
+ {
1477
+ "name": "RunnerDeps.loadProjectMemory",
1478
+ "at": [
1479
+ "src/core/runner-deps.ts:1110"
1480
+ ],
1481
+ "from": [
1482
+ "(ctx: { cwd: string; handsEnabled: boolean; isSubagent: boolean; agentName?: string; sessionId?: string; phase?: \"fresh\" | \"resume\" | \"post-compact\" | \"post-clear\"; }): ProjectMemoryLoad | Promise<string | null | ProjectMemoryLoad> | null | string"
1483
+ ],
1484
+ "to": [
1485
+ "(ctx: { cwd: string; handsEnabled: boolean; isSubagent: boolean; agentName?: string; sessionId?: string; runId?: string; phase?: \"fresh\" | \"resume\" | \"post-compact\" | \"post-clear\"; }): ProjectMemoryLoad | Promise<string | null | ProjectMemoryLoad> | null | string"
1486
+ ],
1487
+ "changes": [
1488
+ {
1489
+ "aspect": "param",
1490
+ "detail": "param 1 `ctx` type widened: …ng; sessionId?: string; [ -> runId?: string; ]phase?: \"fresh\" | \"resum…",
1491
+ "breaking": false
1492
+ }
1493
+ ],
1494
+ "breaking": false,
1495
+ "criteriaCovered": false
1496
+ },
1497
+ {
1498
+ "name": "SessionPolicyError.constructor",
1499
+ "at": [
1500
+ "src/core/session-policy-store.ts:98"
1501
+ ],
1502
+ "from": [
1503
+ "(code: \"conflict\" | \"corrupt\" | \"legacy_tool_name\" | \"loosen_forbidden\", message: string, detail?: SessionRuleNameRefusal)"
1504
+ ],
1505
+ "to": [
1506
+ "(code: \"conflict\" | \"corrupt\" | \"inert_entry\" | \"invalid_shape\" | \"loosen_forbidden\", message: string, detail?: SessionRuleEntryRefusal | SessionRuleShapeRefusal)"
1507
+ ],
1508
+ "changes": [
1509
+ {
1510
+ "aspect": "param",
1511
+ "detail": "param 3 `detail` type changed, direction not read: SessionRule[Nam -> EntryRefusal | SessionRuleShap]eRefusal",
1512
+ "breaking": true,
1513
+ "uncertain": true
1514
+ }
1515
+ ],
1516
+ "uncertain": "param 3 `detail` type changed, direction not read: SessionRule[Nam -> EntryRefusal | SessionRuleShap]eRefusal — 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",
1517
+ "breaking": true,
1518
+ "criteriaCovered": false
1519
+ },
1520
+ {
1521
+ "name": "boundedRedactedSummary",
1522
+ "at": [
1523
+ "src/core/untrusted-egress.ts:346"
1524
+ ],
1525
+ "from": [
1526
+ "(value: unknown, max: number): string"
1527
+ ],
1528
+ "to": [
1529
+ "(value: unknown, max: number): Egress<\"same-principal\">"
1530
+ ],
1531
+ "changes": [
1532
+ {
1533
+ "aspect": "returns",
1534
+ "detail": "return type [string -> Egress<\"same-principal\">]",
1535
+ "breaking": true
1536
+ }
1537
+ ],
1538
+ "breaking": true,
1539
+ "criteriaCovered": false
1540
+ },
1541
+ {
1542
+ "name": "createSessionRulePolicy",
1543
+ "at": [
1544
+ "src/core/runner/session-rule-policy.ts:323"
1545
+ ],
1546
+ "from": [
1547
+ "(rules: SessionPermissionRules | SessionRuleSource, opts: { env: ExecutionEnv; rootPath?: string; toolEffects?: ReadonlyMap<string, ToolEffect>; }): NamedToolPolicy"
1548
+ ],
1549
+ "to": [
1550
+ "(rules: SessionPermissionRules | SessionRuleSource, opts: { env: ExecutionEnv; rootPath?: string; toolEffects?: ReadonlyMap<string, ToolEffect>; anchors?: PathRuleBases; }): NamedToolPolicy"
1551
+ ],
1552
+ "changes": [
1553
+ {
1554
+ "aspect": "param",
1555
+ "detail": "param 2 `opts` type widened: …ap<string, ToolEffect>; [ -> anchors?: PathRuleBases; ]}",
1556
+ "breaking": false
1557
+ }
1558
+ ],
1559
+ "breaking": false,
1560
+ "criteriaCovered": false
1561
+ },
1562
+ {
1563
+ "name": "findAdmittingRule",
1564
+ "at": [
1565
+ "src/core/permission-rule-model.ts:2383"
1566
+ ],
1567
+ "from": [
1568
+ "(rules: readonly PersistedRule[], call: { tool: string; command: string; cwd: string | undefined; sessionId?: string; execCwd?: string; }): readonly PersistedRule[] | undefined"
1569
+ ],
1570
+ "to": [
1571
+ "(rules: readonly PersistedRule[], call: AdmissionCall): readonly PersistedRule[] | undefined"
1572
+ ],
1573
+ "changes": [
1574
+ {
1575
+ "aspect": "param",
1576
+ "detail": "param 2 `call` type changed, direction not read: [{ tool: string; command: string; cwd: string | undefined; sessionId?:… -> AdmissionCall]",
1577
+ "breaking": true,
1578
+ "uncertain": true
1579
+ }
1580
+ ],
1581
+ "uncertain": "param 2 `call` type changed, direction not read: [{ tool: string; command: string; cwd: string | undefined; sessionId?:… -> AdmissionCall] — 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",
1582
+ "breaking": true,
1583
+ "criteriaCovered": false
1584
+ },
1585
+ {
1586
+ "name": "materializeMcpTools",
1587
+ "at": [
1588
+ "src/core/mcp.ts:1956"
1589
+ ],
1590
+ "from": [
1591
+ "(specs: McpServerSpec[], principal?: string, onElicit?: OnElicit, imageResizer?: McpImageResizer, reminderDisclosure?: { reminderMark?: string; counts?: ReminderDisclosureCounts; }, mcpRevocations?: { isRevoked(serverName: string): boolean; onProbeFailure?: (error: unknown) => void; }, poolOpts?: { pool: McpConnectionPool; ownsPool?: boolean; }): Promise<MaterializedMcp>"
1592
+ ],
1593
+ "to": [
1594
+ "(specs: McpServerSpec[], principal?: string, onElicit?: OnElicit, imageResizer?: McpImageResizer, reminderDisclosure?: { reminderMark?: string; counts?: ReminderDisclosureCounts; }, mcpRevocations?: McpRevocationLedger & { onProbeFailure?: (error: unknown) => void; }, poolOpts?: { pool: McpConnectionPool; ownsPool?: boolean; }, promptSections?: PromptSectionSeat): Promise<MaterializedMcp>"
1595
+ ],
1596
+ "changes": [
1597
+ {
1598
+ "aspect": "param",
1599
+ "detail": "param 6 `mcpRevocations` type changed, direction not read: [{ isRevoked(serverName: string): boolean; -> McpRevocationLedger & {] onProbeFailure?: (error…",
1600
+ "breaking": true,
1601
+ "uncertain": true
1602
+ },
1603
+ {
1604
+ "aspect": "param",
1605
+ "detail": "+optional param `promptSections?: PromptSectionSeat`",
1606
+ "breaking": false
1607
+ }
1608
+ ],
1609
+ "uncertain": "param 6 `mcpRevocations` type changed, direction not read: [{ isRevoked(serverName: string): boolean; -> McpRevocationLedger & {] onProbeFailure?: (error… — 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",
1610
+ "breaking": true,
1611
+ "criteriaCovered": false
1612
+ },
1613
+ {
1614
+ "name": "normalizeRules",
1615
+ "at": [
1616
+ "src/core/session-policy-store.ts:275"
1617
+ ],
1618
+ "from": [
1619
+ "(rules: SessionPermissionRules): SessionPermissionRules"
1620
+ ],
1621
+ "to": [
1622
+ "(rules: unknown): SessionPermissionRules"
1623
+ ],
1624
+ "changes": [
1625
+ {
1626
+ "aspect": "param",
1627
+ "detail": "param 1 `rules` type changed, direction not read: [SessionPermissionRules -> unknown]",
1628
+ "breaking": true,
1629
+ "uncertain": true
1630
+ }
1631
+ ],
1632
+ "uncertain": "param 1 `rules` type changed, direction not read: [SessionPermissionRules -> unknown] — 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",
1633
+ "breaking": true,
1634
+ "criteriaCovered": false
1635
+ },
1636
+ {
1637
+ "name": "redactHostLeaks",
1638
+ "at": [
1639
+ "src/core/untrusted-egress.ts:129"
1640
+ ],
1641
+ "from": [
1642
+ "(s: string, report?: RedactionReport): string"
1643
+ ],
1644
+ "to": [
1645
+ "(s: string, report?: RedactionReport): Egress<\"human\">"
1646
+ ],
1647
+ "changes": [
1648
+ {
1649
+ "aspect": "returns",
1650
+ "detail": "return type [string -> Egress<\"human\">]",
1651
+ "breaking": true
1652
+ }
1653
+ ],
1654
+ "breaking": true,
1655
+ "criteriaCovered": false
1656
+ },
1657
+ {
1658
+ "name": "redactSecrets",
1659
+ "at": [
1660
+ "src/core/untrusted-egress.ts:124"
1661
+ ],
1662
+ "from": [
1663
+ "(s: string, report?: RedactionReport): string"
1664
+ ],
1665
+ "to": [
1666
+ "(s: string, report?: RedactionReport): Egress<\"same-principal\">"
1667
+ ],
1668
+ "changes": [
1669
+ {
1670
+ "aspect": "returns",
1671
+ "detail": "return type [string -> Egress<\"same-principal\">]",
1672
+ "breaking": true
1673
+ }
1674
+ ],
1675
+ "breaking": true,
1676
+ "criteriaCovered": false
1677
+ },
1678
+ {
1679
+ "name": "screenGateOutcome",
1680
+ "at": [
1681
+ "src/core/gate-outcome.ts:554"
1682
+ ],
1683
+ "from": [
1684
+ "(g: GateOutcome): string[]"
1685
+ ],
1686
+ "to": [
1687
+ "(g: unknown, opts?: { readonly reading?: \"archive\" | \"producer\"; }): string[]"
1688
+ ],
1689
+ "changes": [
1690
+ {
1691
+ "aspect": "param",
1692
+ "detail": "param 1 `g` type changed, direction not read: [GateOutcome -> unknown]",
1693
+ "breaking": true,
1694
+ "uncertain": true
1695
+ },
1696
+ {
1697
+ "aspect": "param",
1698
+ "detail": "+optional param `opts?: { readonly reading?: \"archive\" | \"producer\"; }`",
1699
+ "breaking": false
1700
+ }
1701
+ ],
1702
+ "uncertain": "param 1 `g` type changed, direction not read: [GateOutcome -> unknown] — 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",
1703
+ "breaking": true,
1704
+ "criteriaCovered": false
1705
+ },
1706
+ {
1707
+ "name": "untrustedEgressForHuman",
1708
+ "at": [
1709
+ "src/core/untrusted-egress.ts:355"
1710
+ ],
1711
+ "from": [
1712
+ "(value: unknown, opts: { label: string; max: number; }): string"
1713
+ ],
1714
+ "to": [
1715
+ "(value: unknown, opts: { label: string; max: number; }): Egress<\"human\">"
1716
+ ],
1717
+ "changes": [
1718
+ {
1719
+ "aspect": "returns",
1720
+ "detail": "return type [string -> Egress<\"human\">]",
1721
+ "breaking": true
1722
+ }
1723
+ ],
1724
+ "breaking": true,
1725
+ "criteriaCovered": false
1726
+ }
1727
+ ],
1728
+ "declarationMoves": [
1729
+ {
1730
+ "name": "AllowEntryInertDetail",
1731
+ "kind": "interface",
1732
+ "onSurface": true,
1733
+ "from": [
1734
+ "src/core/allow-entry.ts"
1735
+ ],
1736
+ "to": [
1737
+ "src/core/allow-entry.ts",
1738
+ "src/index.ts"
1739
+ ]
1740
+ },
1741
+ {
1742
+ "name": "ProtocolHttpAuth",
1743
+ "kind": null,
1744
+ "onSurface": false,
1745
+ "from": [
1746
+ "src/core/mcp.ts"
1747
+ ],
1748
+ "to": [
1749
+ "src/core/protocol-http-auth.ts"
1750
+ ]
1751
+ },
1752
+ {
1753
+ "name": "RedactionConfidence",
1754
+ "kind": "type",
1755
+ "onSurface": true,
1756
+ "from": [
1757
+ "src/core/arg-summary.ts",
1758
+ "src/core/credential-vocabulary.ts",
1759
+ "src/core/untrusted-egress.ts",
1760
+ "src/index.ts"
1761
+ ],
1762
+ "to": [
1763
+ "src/core/credential-vocabulary.ts",
1764
+ "src/core/redaction-passes.ts",
1765
+ "src/core/untrusted-egress.ts",
1766
+ "src/index.ts"
1767
+ ]
1768
+ },
1769
+ {
1770
+ "name": "RedactionFinding",
1771
+ "kind": "interface",
1772
+ "onSurface": true,
1773
+ "from": [
1774
+ "src/core/arg-summary.ts",
1775
+ "src/core/untrusted-egress.ts",
1776
+ "src/index.ts"
1777
+ ],
1778
+ "to": [
1779
+ "src/core/redaction-passes.ts",
1780
+ "src/core/untrusted-egress.ts",
1781
+ "src/index.ts"
1782
+ ]
1783
+ },
1784
+ {
1785
+ "name": "RedactionPass",
1786
+ "kind": null,
1787
+ "onSurface": false,
1788
+ "from": [
1789
+ "src/core/arg-summary.ts"
1790
+ ],
1791
+ "to": [
1792
+ "src/core/redaction-passes.ts"
1793
+ ]
1794
+ },
1795
+ {
1796
+ "name": "RedactionReport",
1797
+ "kind": "interface",
1798
+ "onSurface": true,
1799
+ "from": [
1800
+ "src/core/arg-summary.ts",
1801
+ "src/core/untrusted-egress.ts",
1802
+ "src/index.ts"
1803
+ ],
1804
+ "to": [
1805
+ "src/core/redaction-passes.ts",
1806
+ "src/core/untrusted-egress.ts",
1807
+ "src/index.ts"
1808
+ ]
1809
+ },
1810
+ {
1811
+ "name": "RedactionSource",
1812
+ "kind": "type",
1813
+ "onSurface": true,
1814
+ "from": [
1815
+ "src/core/arg-summary.ts",
1816
+ "src/core/credential-vocabulary.ts",
1817
+ "src/core/untrusted-egress.ts",
1818
+ "src/index.ts"
1819
+ ],
1820
+ "to": [
1821
+ "src/core/credential-vocabulary.ts",
1822
+ "src/core/redaction-passes.ts",
1823
+ "src/core/untrusted-egress.ts",
1824
+ "src/index.ts"
1825
+ ]
1826
+ },
1827
+ {
1828
+ "name": "ReopenReason",
1829
+ "kind": "type",
1830
+ "onSurface": true,
1831
+ "from": [
1832
+ "src/core/checkpoint-store.ts",
1833
+ "src/index.ts"
1834
+ ],
1835
+ "to": [
1836
+ "src/core/checkpoint-store.ts",
1837
+ "src/core/resume-startup-cause.ts",
1838
+ "src/index.ts"
1839
+ ]
1840
+ },
1841
+ {
1842
+ "name": "SummarizableFinding",
1843
+ "kind": "interface",
1844
+ "onSurface": true,
1845
+ "from": [
1846
+ "src/core/arg-summary.ts",
1847
+ "src/core/untrusted-egress.ts",
1848
+ "src/index.ts"
1849
+ ],
1850
+ "to": [
1851
+ "src/core/redaction-passes.ts",
1852
+ "src/core/untrusted-egress.ts",
1853
+ "src/index.ts"
1854
+ ]
1855
+ },
1856
+ {
1857
+ "name": "allowRuleShadowSentence",
1858
+ "kind": "function",
1859
+ "onSurface": true,
1860
+ "from": [
1861
+ "src/core/allow-entry.ts"
1862
+ ],
1863
+ "to": [
1864
+ "src/core/allow-entry.ts",
1865
+ "src/index.ts"
1866
+ ]
1867
+ },
1868
+ {
1869
+ "name": "cardDisclosureOf",
1870
+ "kind": "function",
1871
+ "onSurface": true,
1872
+ "from": [
1873
+ "src/core/allow-entry.ts"
1874
+ ],
1875
+ "to": [
1876
+ "src/core/allow-entry.ts",
1877
+ "src/index.ts"
1878
+ ]
1879
+ },
1880
+ {
1881
+ "name": "deliverWriteRefusal",
1882
+ "kind": "function",
1883
+ "onSurface": true,
1884
+ "from": [
1885
+ "src/core/runner/memory-consolidation-write-judge.ts"
1886
+ ],
1887
+ "to": [
1888
+ "src/core/runner/memory-consolidation-write-judge.ts",
1889
+ "src/index.ts"
1890
+ ]
1891
+ },
1892
+ {
1893
+ "name": "egressPasses",
1894
+ "kind": null,
1895
+ "onSurface": false,
1896
+ "from": [
1897
+ "src/core/arg-summary.ts"
1898
+ ],
1899
+ "to": [
1900
+ "src/core/redaction-passes.ts"
1901
+ ]
1902
+ },
1903
+ {
1904
+ "name": "notifyResultField",
1905
+ "kind": null,
1906
+ "onSurface": false,
1907
+ "from": [
1908
+ "src/agents/subagent.ts"
1909
+ ],
1910
+ "to": [
1911
+ "src/core/task-notification.ts"
1912
+ ]
1913
+ },
1914
+ {
1915
+ "name": "resolveProtocolHttpHeaders",
1916
+ "kind": null,
1917
+ "onSurface": false,
1918
+ "from": [
1919
+ "src/core/mcp.ts"
1920
+ ],
1921
+ "to": [
1922
+ "src/core/protocol-http-auth.ts"
1923
+ ]
1924
+ },
1925
+ {
1926
+ "name": "runRedactionPasses",
1927
+ "kind": null,
1928
+ "onSurface": false,
1929
+ "from": [
1930
+ "src/core/arg-summary.ts"
1931
+ ],
1932
+ "to": [
1933
+ "src/core/redaction-passes.ts"
1934
+ ]
1935
+ },
1936
+ {
1937
+ "name": "summarizeRedactions",
1938
+ "kind": "function",
1939
+ "onSurface": true,
1940
+ "from": [
1941
+ "src/core/arg-summary.ts",
1942
+ "src/core/untrusted-egress.ts",
1943
+ "src/index.ts"
1944
+ ],
1945
+ "to": [
1946
+ "src/core/redaction-passes.ts",
1947
+ "src/core/untrusted-egress.ts",
1948
+ "src/index.ts"
1949
+ ]
1950
+ }
1951
+ ],
1952
+ "mintMoves": [],
1953
+ "criteriaObserves": [
1954
+ {
1955
+ "kind": "engineNoticeCode",
1956
+ "name": "classifier.unavailable",
1957
+ "assertions": [
1958
+ "G5.a"
1959
+ ]
1960
+ },
1961
+ {
1962
+ "kind": "engineNoticeCode",
1963
+ "name": "config.permission_mode_unavailable",
1964
+ "assertions": [
1965
+ "G5.c"
1966
+ ]
1967
+ },
1968
+ {
1969
+ "kind": "engineNoticeCode",
1970
+ "name": "config.read_deny_swapped",
1971
+ "assertions": [
1972
+ "G10.c"
1973
+ ]
1974
+ },
1975
+ {
1976
+ "kind": "engineNoticeCode",
1977
+ "name": "memory.consolidation_refused",
1978
+ "assertions": [
1979
+ "G15.b",
1980
+ "G17.a"
1981
+ ]
1982
+ },
1983
+ {
1984
+ "kind": "engineNoticeCode",
1985
+ "name": "tool_result.media_refused",
1986
+ "assertions": [
1987
+ "G14.a"
1988
+ ]
1989
+ },
1990
+ {
1991
+ "kind": "taskEventField",
1992
+ "name": "tool_end.gate",
1993
+ "assertions": [
1994
+ "G2.a",
1995
+ "G3.b",
1996
+ "G5.a",
1997
+ "G5.c",
1998
+ "G11.a",
1999
+ "G11.b",
2000
+ "G11.c",
2001
+ "G11.d",
2002
+ "G13.c"
2003
+ ]
2004
+ },
2005
+ {
2006
+ "kind": "taskEventField",
2007
+ "name": "tool_end.isError",
2008
+ "assertions": [
2009
+ "G6.b"
2010
+ ]
2011
+ },
2012
+ {
2013
+ "kind": "taskEventField",
2014
+ "name": "tool_end.output",
2015
+ "assertions": [
2016
+ "G6.b",
2017
+ "G7.a",
2018
+ "G7.b",
2019
+ "G11.a",
2020
+ "G14.a",
2021
+ "G14.b",
2022
+ "G15.a"
2023
+ ]
2024
+ },
2025
+ {
2026
+ "kind": "typeMember",
2027
+ "name": "AskRequest.askClass",
2028
+ "assertions": [
2029
+ "G3.a",
2030
+ "G3.b",
2031
+ "G11.c"
2032
+ ]
2033
+ },
2034
+ {
2035
+ "kind": "typeMember",
2036
+ "name": "AskRequest.boundGrantAbsence",
2037
+ "assertions": [
2038
+ "G4.b"
2039
+ ]
2040
+ },
2041
+ {
2042
+ "kind": "typeMember",
2043
+ "name": "AskRequest.classes",
2044
+ "assertions": [
2045
+ "G3.a"
2046
+ ]
2047
+ },
2048
+ {
2049
+ "kind": "typeMember",
2050
+ "name": "AskRequest.message",
2051
+ "assertions": [
2052
+ "G11.d"
2053
+ ]
2054
+ },
2055
+ {
2056
+ "kind": "typeMember",
2057
+ "name": "AskRequest.ruleOffersAbsence",
2058
+ "assertions": [
2059
+ "G4.a"
2060
+ ]
2061
+ },
2062
+ {
2063
+ "kind": "typeMember",
2064
+ "name": "AssistantMessage.errorMessage",
2065
+ "assertions": [
2066
+ "G1.a",
2067
+ "G1.b",
2068
+ "G1.c"
2069
+ ]
2070
+ },
2071
+ {
2072
+ "kind": "typeMember",
2073
+ "name": "AssistantMessage.stopReason",
2074
+ "assertions": [
2075
+ "G1.a"
2076
+ ]
2077
+ },
2078
+ {
2079
+ "kind": "typeMember",
2080
+ "name": "BackgroundChildEvent.result",
2081
+ "assertions": [
2082
+ "G6.c"
2083
+ ]
2084
+ },
2085
+ {
2086
+ "kind": "typeMember",
2087
+ "name": "Checkpoint.reopenReason",
2088
+ "assertions": [
2089
+ "G6.a"
2090
+ ]
2091
+ },
2092
+ {
2093
+ "kind": "typeMember",
2094
+ "name": "CheckpointSummary.boundGrantAbsence",
2095
+ "assertions": [
2096
+ "G4.b"
2097
+ ]
2098
+ },
2099
+ {
2100
+ "kind": "typeMember",
2101
+ "name": "ClassifierUnavailableInfo.route",
2102
+ "assertions": [
2103
+ "G5.b"
2104
+ ]
2105
+ },
2106
+ {
2107
+ "kind": "typeMember",
2108
+ "name": "ClassifierUnavailableSeat.route",
2109
+ "assertions": [
2110
+ "G5.b"
2111
+ ]
2112
+ },
2113
+ {
2114
+ "kind": "typeMember",
2115
+ "name": "EngineNotice.code",
2116
+ "assertions": [
2117
+ "G5.b"
2118
+ ]
2119
+ },
2120
+ {
2121
+ "kind": "typeMember",
2122
+ "name": "GateOutcome.disposition",
2123
+ "assertions": [
2124
+ "G13.a",
2125
+ "G13.b"
2126
+ ]
2127
+ },
2128
+ {
2129
+ "kind": "typeMember",
2130
+ "name": "MaterializedA2a.warnings",
2131
+ "assertions": [
2132
+ "G8.b"
2133
+ ]
2134
+ },
2135
+ {
2136
+ "kind": "typeMember",
2137
+ "name": "MaterializedMcp.warnings",
2138
+ "assertions": [
2139
+ "G8.a",
2140
+ "G10.a"
2141
+ ]
2142
+ },
2143
+ {
2144
+ "kind": "typeMember",
2145
+ "name": "McpServerSpec.fingerprint",
2146
+ "assertions": [
2147
+ "G10.b"
2148
+ ]
2149
+ },
2150
+ {
2151
+ "kind": "typeMember",
2152
+ "name": "McpServerStatus.delivered",
2153
+ "assertions": [
2154
+ "G8.a"
2155
+ ]
2156
+ },
2157
+ {
2158
+ "kind": "typeMember",
2159
+ "name": "McpServerStatus.errorCode",
2160
+ "assertions": [
2161
+ "G8.a",
2162
+ "G10.b"
2163
+ ]
2164
+ },
2165
+ {
2166
+ "kind": "typeMember",
2167
+ "name": "McpServerStatus.status",
2168
+ "assertions": [
2169
+ "G8.a"
2170
+ ]
2171
+ },
2172
+ {
2173
+ "kind": "typeMember",
2174
+ "name": "ModeRelease.reason",
2175
+ "assertions": [
2176
+ "G13.a"
2177
+ ]
2178
+ },
2179
+ {
2180
+ "kind": "typeMember",
2181
+ "name": "PendingAction.ruleOffersAbsence",
2182
+ "assertions": [
2183
+ "G4.a"
2184
+ ]
2185
+ },
2186
+ {
2187
+ "kind": "typeMember",
2188
+ "name": "PermissionResult.message",
2189
+ "assertions": [
2190
+ "G2.a",
2191
+ "G2.c"
2192
+ ]
2193
+ },
2194
+ {
2195
+ "kind": "typeMember",
2196
+ "name": "PromptProvider.section",
2197
+ "assertions": [
2198
+ "G10.a"
2199
+ ]
2200
+ },
2201
+ {
2202
+ "kind": "typeMember",
2203
+ "name": "RedactionFinding.kind",
2204
+ "assertions": [
2205
+ "G7.b"
2206
+ ]
2207
+ },
2208
+ {
2209
+ "kind": "typeMember",
2210
+ "name": "SessionPolicyError.code",
2211
+ "assertions": [
2212
+ "G2.b"
2213
+ ]
2214
+ },
2215
+ {
2216
+ "kind": "typeMember",
2217
+ "name": "SessionPolicyError.detail",
2218
+ "assertions": [
2219
+ "G2.b"
2220
+ ]
2221
+ },
2222
+ {
2223
+ "kind": "typeMember",
2224
+ "name": "ShellReadVerdict.disposition",
2225
+ "assertions": [
2226
+ "G11.b"
2227
+ ]
2228
+ },
2229
+ {
2230
+ "kind": "typeMember",
2231
+ "name": "ShellReadVerdict.finding",
2232
+ "assertions": [
2233
+ "G11.b"
2234
+ ]
2235
+ },
2236
+ {
2237
+ "kind": "typeMember",
2238
+ "name": "SkillsDirectoryOptions.containWithin",
2239
+ "assertions": [
2240
+ "G12.a"
2241
+ ]
2242
+ },
2243
+ {
2244
+ "kind": "typeMember",
2245
+ "name": "SkillsDirectoryWarning.code",
2246
+ "assertions": [
2247
+ "G12.a"
2248
+ ]
2249
+ },
2250
+ {
2251
+ "kind": "typeMember",
2252
+ "name": "StablePromptContext.envFacts",
2253
+ "assertions": [
2254
+ "G9.b"
2255
+ ]
2256
+ },
2257
+ {
2258
+ "kind": "typeMember",
2259
+ "name": "TaskResult.runId",
2260
+ "assertions": [
2261
+ "G10.c"
2262
+ ]
2263
+ },
2264
+ {
2265
+ "kind": "typeMember",
2266
+ "name": "TaskSpec.agents",
2267
+ "assertions": [
2268
+ "G16.a",
2269
+ "G16.b"
2270
+ ]
2271
+ },
2272
+ {
2273
+ "kind": "typeMember",
2274
+ "name": "TaskSpec.excludeTools",
2275
+ "assertions": [
2276
+ "G16.a"
2277
+ ]
2278
+ },
2279
+ {
2280
+ "kind": "typeMember",
2281
+ "name": "ToolCallRequest.approvalReach",
2282
+ "assertions": [
2283
+ "G17.b"
2284
+ ]
2285
+ },
2286
+ {
2287
+ "kind": "typeMember",
2288
+ "name": "TraceEvent.sections",
2289
+ "assertions": [
2290
+ "G9.a",
2291
+ "G9.b"
2292
+ ]
2293
+ }
2294
+ ],
2295
+ "consumersHint": {
2296
+ "cli": [
2297
+ "ASK_CLASSES",
2298
+ "AllowEntryInert",
2299
+ "AllowEntryInertDetail",
2300
+ "AskRequest",
2301
+ "BackgroundChildEvent",
2302
+ "CheckpointSummary",
2303
+ "ENGINE_NOTICE_CODES",
2304
+ "Egress",
2305
+ "InheritedGate",
2306
+ "MaterializedMcp",
2307
+ "McpServerSpec",
2308
+ "PendingAction",
2309
+ "RunnerDeps",
2310
+ "SWAPPABLE_DEP_SEATS",
2311
+ "SessionPermissionRules",
2312
+ "SessionPolicyError",
2313
+ "SessionRuleNameRefusal",
2314
+ "ShellReadVerdict",
2315
+ "SkillsDirectoryOptions",
2316
+ "SkillsDirectoryWarningCode",
2317
+ "StablePromptContext",
2318
+ "StoredSessionRules",
2319
+ "TASK_NOTIFICATION_TERMINAL_STATUSES",
2320
+ "ToolCallRequest",
2321
+ "allowRuleShadowSentence",
2322
+ "compileAllowEntry",
2323
+ "normalizeRules",
2324
+ "redactSecrets",
2325
+ "screenGateOutcome"
2326
+ ],
2327
+ "server": [
2328
+ "ASK_CLASSES",
2329
+ "AskRequest",
2330
+ "BackgroundChildEvent",
2331
+ "CheckpointSummary",
2332
+ "ENGINE_NOTICE_CODES",
2333
+ "Egress",
2334
+ "InheritedGate",
2335
+ "MaterializedMcp",
2336
+ "McpRevocationLedger",
2337
+ "McpServerSpec",
2338
+ "PendingAction",
2339
+ "PromptProvider",
2340
+ "ReopenReason",
2341
+ "RoutePairingStatus",
2342
+ "RuleOffersAbsence",
2343
+ "RunnerDeps",
2344
+ "SWAPPABLE_DEP_SEATS",
2345
+ "SessionPermissionRules",
2346
+ "SessionPolicyError",
2347
+ "SessionRuleNameRefusal",
2348
+ "SkillsDirectoryOptions",
2349
+ "SkillsDirectoryWarningCode",
2350
+ "StablePromptContext",
2351
+ "StoredSessionRules",
2352
+ "ToolCallRequest",
2353
+ "assertSessionRuleNamesCurrent",
2354
+ "boundedRedactedSummary",
2355
+ "cardDisclosureOf",
2356
+ "compileAllowEntry",
2357
+ "createSessionRulePolicy",
2358
+ "findAdmittingRule",
2359
+ "isMediaBlock",
2360
+ "materializeMcpTools",
2361
+ "normalizeRules",
2362
+ "redactHostLeaks",
2363
+ "redactSecrets",
2364
+ "screenGateOutcome",
2365
+ "stripRev",
2366
+ "untrustedEgressForHuman"
2367
+ ],
2368
+ "sdk": [
2369
+ "ASK_CLASSES",
2370
+ "AskRequest",
2371
+ "BackgroundChildEvent",
2372
+ "CheckpointSummary",
2373
+ "ENGINE_NOTICE_CODES",
2374
+ "InheritedGate",
2375
+ "McpServerSpec",
2376
+ "PendingAction",
2377
+ "RoutePairingPosture",
2378
+ "RoutePairingStatus",
2379
+ "RuleOffersAbsence",
2380
+ "RunnerDeps",
2381
+ "SessionPermissionRules",
2382
+ "SessionPolicyError",
2383
+ "StoredSessionRules",
2384
+ "assertSessionRuleNamesCurrent",
2385
+ "redactSecrets",
2386
+ "screenGateOutcome"
2387
+ ],
2388
+ "note": "scanned cli@1ffe7822 server@c5a3c03a sdk@308eee7 — 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: 5 name(s) matched ONLY in bookkeeping files and were set aside (ClassifierUnavailableInfo, ClassifierUnavailableSeat, RoutePairingConfig, RoutePairingPosture, ShellReadVerdict)"
2389
+ },
2390
+ "breakingCount": 28,
2391
+ "breakingItems": [
2392
+ "closed set lost members: ASK_CLASSES -governance_unavailable",
2393
+ "closed set lost members: AskRequest.ruleOffersAbsence -shadowed",
2394
+ "closed set lost members: BackgroundChildEvent.stoppedBy -parent,system,user",
2395
+ "closed set lost members: PendingAction.ruleOffersAbsence -shadowed",
2396
+ "closed set lost members: RoutePairingPosture -unpinned",
2397
+ "closed set lost members: RoutePairingStatus -ok:unpinned",
2398
+ "closed set lost members: SessionPolicyError.code -legacy_tool_name",
2399
+ "export kind changed: ShellReadVerdict interface -> type",
2400
+ "export removed: SessionRuleNameRefusal (interface)",
2401
+ "export removed: assertSessionRuleNamesCurrent (function)",
2402
+ "export removed: compileAllowEntry (function)",
2403
+ "export removed: stripRev (function)",
2404
+ "signature changed: SessionPolicyError.constructor — param 3 `detail` type changed, direction not read: SessionRule[Nam -> EntryRefusal | SessionRuleShap]eRefusal",
2405
+ "signature changed: boundedRedactedSummary — return type [string -> Egress<\"same-principal\">]",
2406
+ "signature changed: findAdmittingRule — param 2 `call` type changed, direction not read: [{ tool: string; command: string; cwd: string | undefined; sessionId?:… -> AdmissionCall]",
2407
+ "signature changed: materializeMcpTools — param 6 `mcpRevocations` type changed, direction not read: [{ isRevoked(serverName: string): boolean; -> McpRevocationLedger & {] onProbeFailure?: (error…",
2408
+ "signature changed: normalizeRules — param 1 `rules` type changed, direction not read: [SessionPermissionRules -> unknown]",
2409
+ "signature changed: redactHostLeaks — return type [string -> Egress<\"human\">]",
2410
+ "signature changed: redactSecrets — return type [string -> Egress<\"same-principal\">]",
2411
+ "signature changed: screenGateOutcome — param 1 `g` type changed, direction not read: [GateOutcome -> unknown]",
2412
+ "signature changed: untrustedEgressForHuman — return type [string -> Egress<\"human\">]",
2413
+ "type gained required keys: ClassifierUnavailableInfo +route",
2414
+ "type gained required keys: MaterializedMcp +instructionsDelta.pendingAdds[].author,serverInstructions[].author",
2415
+ "type lost keys: ClassifierUnavailableInfo -disposition",
2416
+ "type lost keys: ClassifierUnavailableSeat -approvalSeat",
2417
+ "type lost keys: SessionPermissionRules -commandAllow,commandDeny",
2418
+ "type lost keys: ShellReadVerdict -admit,details,disposition,environmentSilent,face,finding,readRootCandidate,rowsUnread,sentence,targetUnresolved,unestablished,unplacedOptions,unplacedOptions.program,writeProtected,writesPlaced",
2419
+ "type lost keys: StoredSessionRules -commandAllow,commandDeny"
2420
+ ]
2421
+ }