@sema-agent/core 7.52.0 → 7.54.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 (357) hide show
  1. package/CHANGELOG.md +470 -0
  2. package/LICENSE +3 -1
  3. package/README.md +3 -1
  4. package/dist/agents/cross-session-envelope.d.ts +8 -0
  5. package/dist/agents/cross-session-envelope.js +6 -0
  6. package/dist/agents/cross-session-judge.d.ts +21 -1
  7. package/dist/agents/cross-session-judge.js +8 -0
  8. package/dist/agents/cross-session-ref.d.ts +5 -0
  9. package/dist/agents/cross-session-ref.js +1 -0
  10. package/dist/agents/org-delivery-gate.d.ts +122 -0
  11. package/dist/agents/org-delivery-gate.js +69 -0
  12. package/dist/agents/peer-held-queue.d.ts +9 -4
  13. package/dist/agents/peer-held-queue.js +6 -5
  14. package/dist/agents/peer-session-drain.d.ts +35 -6
  15. package/dist/agents/peer-session-drain.js +271 -182
  16. package/dist/agents/read-inbox-tool.d.ts +7 -0
  17. package/dist/agents/read-inbox-tool.js +5 -1
  18. package/dist/agents/send-message-tool.js +3 -4
  19. package/dist/agents/subagent.d.ts +6 -5
  20. package/dist/agents/subagent.js +117 -83
  21. package/dist/agents/tool-filter.d.ts +25 -4
  22. package/dist/agents/tool-filter.js +13 -3
  23. package/dist/brain/anthropic.d.ts +6 -1
  24. package/dist/brain/anthropic.js +4 -4
  25. package/dist/brain/model-presets.js +2 -1
  26. package/dist/brain/route-adjudicator.d.ts +6 -0
  27. package/dist/brain/routing.d.ts +24 -1
  28. package/dist/brain/routing.js +54 -19
  29. package/dist/brain/timeout.js +5 -4
  30. package/dist/core/a2a.d.ts +5 -2
  31. package/dist/core/a2a.js +33 -14
  32. package/dist/core/allow-entry.d.ts +3 -1
  33. package/dist/core/allow-entry.js +3 -2
  34. package/dist/core/approval-object.d.ts +87 -0
  35. package/dist/core/approval-object.js +85 -0
  36. package/dist/core/arg-summary.d.ts +3 -2
  37. package/dist/core/arg-summary.js +17 -11
  38. package/dist/core/ask-origin.d.ts +43 -27
  39. package/dist/core/ask-origin.js +20 -11
  40. package/dist/core/ask-question.d.ts +0 -1
  41. package/dist/core/ask-question.js +4 -67
  42. package/dist/core/ask-unresolvable-notice.d.ts +3 -2
  43. package/dist/core/auto-compaction.d.ts +106 -50
  44. package/dist/core/auto-compaction.js +69 -53
  45. package/dist/core/auto-mode-prompt.d.ts +4 -2
  46. package/dist/core/auto-mode-prompt.js +4 -3
  47. package/dist/core/canonical-json.d.ts +69 -0
  48. package/dist/core/canonical-json.js +130 -8
  49. package/dist/core/checkpoint-requirements.d.ts +13 -7
  50. package/dist/core/checkpoint-requirements.js +4 -1
  51. package/dist/core/checkpoint-store.d.ts +60 -36
  52. package/dist/core/checkpoint-store.js +7 -6
  53. package/dist/core/child-clamp-seats.d.ts +45 -6
  54. package/dist/core/child-clamp-seats.js +56 -4
  55. package/dist/core/compliance.js +3 -1
  56. package/dist/core/consolidate-scope.d.ts +1 -1
  57. package/dist/core/cross-boundary-taint.d.ts +213 -0
  58. package/dist/core/cross-boundary-taint.js +196 -0
  59. package/dist/core/decision-receipt.d.ts +44 -1
  60. package/dist/core/decision-receipt.js +16 -0
  61. package/dist/core/effective-path-target.d.ts +28 -6
  62. package/dist/core/effective-path-target.js +28 -2
  63. package/dist/core/engine-notice.d.ts +47 -4
  64. package/dist/core/engine-notice.js +17 -1
  65. package/dist/core/engine-storage-backend.d.ts +73 -0
  66. package/dist/core/engine-storage-backend.js +1 -0
  67. package/dist/core/file-history-store.d.ts +6 -2
  68. package/dist/core/file-history-store.js +1 -0
  69. package/dist/core/gate-fold.js +13 -4
  70. package/dist/core/gate-lanes.js +41 -34
  71. package/dist/core/gate-outcome.d.ts +18 -9
  72. package/dist/core/governance-codes.d.ts +9 -2
  73. package/dist/core/governance-codes.js +9 -0
  74. package/dist/core/hands-band-screen.d.ts +7 -0
  75. package/dist/core/hands-band-screen.js +32 -0
  76. package/dist/core/hooks.d.ts +21 -19
  77. package/dist/core/hooks.js +6 -5
  78. package/dist/core/locked-config.d.ts +110 -31
  79. package/dist/core/locked-config.js +155 -42
  80. package/dist/core/lsp.d.ts +1 -1
  81. package/dist/core/mcp-probe.js +1 -1
  82. package/dist/core/mcp-server-spec.d.ts +152 -17
  83. package/dist/core/mcp-server-spec.js +223 -40
  84. package/dist/core/mcp.d.ts +21 -14
  85. package/dist/core/mcp.js +59 -54
  86. package/dist/core/memory-engine/engine.d.ts +14 -19
  87. package/dist/core/memory-engine/engine.js +9 -6
  88. package/dist/core/memory-engine/export-bundle.d.ts +1 -1
  89. package/dist/core/memory-engine/export-bundle.js +1 -1
  90. package/dist/core/memory-engine/file-backend.d.ts +2 -6
  91. package/dist/core/memory-engine/file-backend.js +1 -12
  92. package/dist/core/memory.d.ts +3 -3
  93. package/dist/core/mode-policy.d.ts +16 -26
  94. package/dist/core/mode-policy.js +5 -18
  95. package/dist/core/mods/kernel/dispatch.js +13 -15
  96. package/dist/core/mods/kernel/events.d.ts +9 -6
  97. package/dist/core/mods/kernel/events.js +2 -2
  98. package/dist/core/mods/kernel/receive.d.ts +41 -11
  99. package/dist/core/mods/kernel/receive.js +124 -54
  100. package/dist/core/mods/kernel/site-rules.d.ts +80 -15
  101. package/dist/core/mods/kernel/site-rules.js +232 -40
  102. package/dist/core/mods/stations.d.ts +0 -6
  103. package/dist/core/mods/stations.js +0 -7
  104. package/dist/core/mounted-mcp.d.ts +57 -0
  105. package/dist/core/mounted-mcp.js +71 -2
  106. package/dist/core/own-property-receipt.d.ts +13 -0
  107. package/dist/core/own-property-receipt.js +3 -1
  108. package/dist/core/parent-spec-seat.d.ts +12 -15
  109. package/dist/core/parent-spec-seat.js +14 -6
  110. package/dist/core/pause-registry.d.ts +35 -1
  111. package/dist/core/pause-registry.js +10 -0
  112. package/dist/core/permission-rule-consent.d.ts +18 -5
  113. package/dist/core/permission-rule-consent.js +13 -8
  114. package/dist/core/permission-rule-model.d.ts +87 -15
  115. package/dist/core/permission-rule-model.js +87 -8
  116. package/dist/core/permission-rule-org.d.ts +200 -33
  117. package/dist/core/permission-rule-org.js +217 -91
  118. package/dist/core/permission-rule-session.js +2 -2
  119. package/dist/core/permission-rule-store.d.ts +8 -0
  120. package/dist/core/permission-rule-store.js +1 -0
  121. package/dist/core/permission-rule-sync.js +3 -2
  122. package/dist/core/permission-rules.d.ts +7 -1
  123. package/dist/core/permission-rules.js +37 -8
  124. package/dist/core/read-only-shell.d.ts +1 -1
  125. package/dist/core/read-only-shell.js +30 -9
  126. package/dist/core/remote-env.d.ts +41 -1
  127. package/dist/core/remote-env.js +18 -0
  128. package/dist/core/resume-startup-cause.d.ts +18 -0
  129. package/dist/core/resume-startup-cause.js +12 -0
  130. package/dist/core/retention.js +7 -2
  131. package/dist/core/retired-keys.d.ts +8 -2
  132. package/dist/core/retired-keys.js +12 -1
  133. package/dist/core/roles.js +60 -10
  134. package/dist/core/rule-lane-reads.js +1 -1
  135. package/dist/core/runner/approval-feedback.d.ts +46 -0
  136. package/dist/core/runner/approval-feedback.js +41 -0
  137. package/dist/core/runner/compaction-call-options.d.ts +3 -3
  138. package/dist/core/runner/compaction-call-options.js +2 -2
  139. package/dist/core/runner/contracts.d.ts +34 -41
  140. package/dist/core/runner/cross-boundary-lane.d.ts +87 -0
  141. package/dist/core/runner/cross-boundary-lane.js +190 -0
  142. package/dist/core/runner/decide-continuation.d.ts +4 -4
  143. package/dist/core/runner/decide-continuation.js +3 -1
  144. package/dist/core/runner/gate-exit.d.ts +32 -12
  145. package/dist/core/runner/gate-exit.js +77 -34
  146. package/dist/core/runner/inherited-ask-grants.js +2 -2
  147. package/dist/core/runner/mcp-redial.d.ts +52 -10
  148. package/dist/core/runner/mcp-redial.js +38 -9
  149. package/dist/core/runner/permission-rule-lanes.d.ts +5 -2
  150. package/dist/core/runner/permission-rule-lanes.js +22 -10
  151. package/dist/core/runner/person-path-rows.d.ts +5 -3
  152. package/dist/core/runner/person-path-rows.js +2 -2
  153. package/dist/core/runner/prepare-acquire-reconcile.d.ts +3 -4
  154. package/dist/core/runner/prepare-acquire-reconcile.js +3 -3
  155. package/dist/core/runner/prepare-ask-lane.js +3 -3
  156. package/dist/core/runner/prepare-caps-and-workflow.d.ts +6 -5
  157. package/dist/core/runner/prepare-caps-and-workflow.js +3 -3
  158. package/dist/core/runner/prepare-config-doors.d.ts +58 -15
  159. package/dist/core/runner/prepare-config-doors.js +167 -146
  160. package/dist/core/runner/prepare-context-lane.js +6 -3
  161. package/dist/core/runner/prepare-defer-classify.js +4 -7
  162. package/dist/core/runner/prepare-delegation-surface.d.ts +5 -4
  163. package/dist/core/runner/prepare-delegation-surface.js +8 -7
  164. package/dist/core/runner/prepare-execution-env.d.ts +1 -2
  165. package/dist/core/runner/prepare-execution-env.js +2 -1
  166. package/dist/core/runner/prepare-gate-stations.d.ts +2 -0
  167. package/dist/core/runner/prepare-gate-stations.js +4 -3
  168. package/dist/core/runner/prepare-hands-readface.d.ts +3 -3
  169. package/dist/core/runner/prepare-hands-readface.js +3 -2
  170. package/dist/core/runner/prepare-inherited-gate.d.ts +2 -0
  171. package/dist/core/runner/prepare-inherited-gate.js +3 -2
  172. package/dist/core/runner/prepare-listings.d.ts +1 -1
  173. package/dist/core/runner/prepare-listings.js +4 -2
  174. package/dist/core/runner/prepare-memory-engine-session.d.ts +0 -6
  175. package/dist/core/runner/prepare-memory-engine-session.js +19 -6
  176. package/dist/core/runner/prepare-memory.d.ts +3 -2
  177. package/dist/core/runner/prepare-memory.js +6 -2
  178. package/dist/core/runner/prepare-offload-wrappers.d.ts +4 -4
  179. package/dist/core/runner/prepare-offload-wrappers.js +2 -1
  180. package/dist/core/runner/prepare-park-ask.d.ts +1 -1
  181. package/dist/core/runner/prepare-park-ask.js +9 -3
  182. package/dist/core/runner/prepare-policy-chain.d.ts +1 -1
  183. package/dist/core/runner/prepare-policy-chain.js +14 -19
  184. package/dist/core/runner/prepare-project-context.d.ts +1 -1
  185. package/dist/core/runner/prepare-project-context.js +6 -4
  186. package/dist/core/runner/prepare-prompt-assembly.d.ts +1 -1
  187. package/dist/core/runner/prepare-prompt-assembly.js +20 -16
  188. package/dist/core/runner/prepare-prompt-inputs.d.ts +12 -6
  189. package/dist/core/runner/prepare-prompt-inputs.js +6 -3
  190. package/dist/core/runner/prepare-protocol-tools.d.ts +7 -5
  191. package/dist/core/runner/prepare-protocol-tools.js +19 -12
  192. package/dist/core/runner/prepare-question-face.d.ts +4 -2
  193. package/dist/core/runner/prepare-question-face.js +4 -3
  194. package/dist/core/runner/prepare-safety-scan.d.ts +7 -2
  195. package/dist/core/runner/prepare-safety-scan.js +34 -27
  196. package/dist/core/runner/prepare-suspend-saga.d.ts +2 -2
  197. package/dist/core/runner/prepare-suspend-saga.js +6 -2
  198. package/dist/core/runner/prepare-task.js +22 -19
  199. package/dist/core/runner/prepare-turn-wiring.d.ts +10 -5
  200. package/dist/core/runner/prepare-turn-wiring.js +14 -49
  201. package/dist/core/runner/prepare-wiring-manifest.d.ts +10 -5
  202. package/dist/core/runner/prepare-wiring-manifest.js +9 -6
  203. package/dist/core/runner/prepare-workspace-restore.js +2 -2
  204. package/dist/core/runner/resume-admission.d.ts +4 -1
  205. package/dist/core/runner/resume-admission.js +16 -14
  206. package/dist/core/runner/resume-apply.js +4 -4
  207. package/dist/core/runner/resume-internals-and-config.d.ts +3 -3
  208. package/dist/core/runner/resume-internals-and-config.js +3 -8
  209. package/dist/core/runner/resume-policy-outcome.d.ts +2 -2
  210. package/dist/core/runner/resume-policy-outcome.js +18 -15
  211. package/dist/core/runner/resume-preflight.js +2 -2
  212. package/dist/core/runner/resume-review-outcome.js +3 -3
  213. package/dist/core/runner/retired-runner-deps.d.ts +5 -6
  214. package/dist/core/runner/retired-runner-deps.js +1 -4
  215. package/dist/core/runner/run-leg.js +97 -43
  216. package/dist/core/runner/run-recovery-lanes.js +5 -3
  217. package/dist/core/runner/run-settle-and-teardown.js +2 -0
  218. package/dist/core/runner/run-terminal-adoption.js +21 -9
  219. package/dist/core/runner/run-turn-boundary.js +9 -3
  220. package/dist/core/runner/runtask.js +1 -1
  221. package/dist/core/runner/session-file-state-replay.d.ts +5 -2
  222. package/dist/core/runner/session-file-state-replay.js +3 -2
  223. package/dist/core/runner/skills-seat.d.ts +15 -0
  224. package/dist/core/runner/skills-seat.js +57 -0
  225. package/dist/core/runner/stream-steer-verb.js +2 -2
  226. package/dist/core/runner/sub-agent-deny-lists.d.ts +13 -11
  227. package/dist/core/runner/sub-agent-deny-lists.js +7 -5
  228. package/dist/core/runner/synthetic-tools.d.ts +5 -2
  229. package/dist/core/runner/synthetic-tools.js +2 -12
  230. package/dist/core/runner/tool-face-overlay.d.ts +24 -6
  231. package/dist/core/runner/tool-face-overlay.js +24 -15
  232. package/dist/core/runner-deps.d.ts +37 -22
  233. package/dist/core/session-policy-store.d.ts +19 -0
  234. package/dist/core/session-policy-store.js +22 -2
  235. package/dist/core/session-store.d.ts +35 -16
  236. package/dist/core/session-store.js +20 -12
  237. package/dist/core/{shell-lexer.d.ts → shell-run-candidates.d.ts} +36 -12
  238. package/dist/core/{shell-lexer.js → shell-run-candidates.js} +145 -225
  239. package/dist/core/shell-wrapper-table.d.ts +5 -3
  240. package/dist/core/shell-wrapper-table.js +1 -1
  241. package/dist/core/store-contracts/checkpoint-store-contract.js +2 -2
  242. package/dist/core/store-contracts/mailbox-store-contract.js +13 -0
  243. package/dist/core/store-contracts/session-store-contract.d.ts +49 -0
  244. package/dist/core/store-contracts/session-store-contract.js +639 -0
  245. package/dist/core/store-contracts/session-store-incarnation-contract.d.ts +12 -0
  246. package/dist/core/store-contracts/session-store-incarnation-contract.js +5 -2
  247. package/dist/core/task-event.d.ts +44 -6
  248. package/dist/core/task-notification.js +2 -2
  249. package/dist/core/task-registry-agent.js +1 -0
  250. package/dist/core/task-registry-shared.d.ts +5 -0
  251. package/dist/core/task-registry.d.ts +7 -0
  252. package/dist/core/task-registry.js +17 -0
  253. package/dist/core/task-result.d.ts +1 -1
  254. package/dist/core/task-spec.d.ts +7 -7
  255. package/dist/core/tighten-task-spec.d.ts +6 -4
  256. package/dist/core/tighten-task-spec.js +2 -2
  257. package/dist/core/tool-catalog-entries.d.ts +1 -1
  258. package/dist/core/tool-catalog-entries.js +52 -52
  259. package/dist/core/tool-face-reader.d.ts +49 -0
  260. package/dist/core/tool-face-reader.js +94 -0
  261. package/dist/core/tool-face.d.ts +17 -8
  262. package/dist/core/tool-face.js +1 -0
  263. package/dist/core/tool-policy.d.ts +67 -23
  264. package/dist/core/tool-policy.js +72 -60
  265. package/dist/core/tool-roster.d.ts +46 -28
  266. package/dist/core/tool-roster.js +91 -14
  267. package/dist/core/tool-spec-members.js +2 -2
  268. package/dist/core/tool-spec.d.ts +20 -4
  269. package/dist/core/tools.js +2 -0
  270. package/dist/core/trace.d.ts +24 -2
  271. package/dist/core/types.d.ts +3 -3
  272. package/dist/core/types.js +1 -1
  273. package/dist/core/untrusted-text.d.ts +23 -0
  274. package/dist/core/untrusted-text.js +10 -10
  275. package/dist/core/user-attachment.d.ts +56 -2
  276. package/dist/core/user-attachment.js +139 -56
  277. package/dist/core/wiring-manifest.d.ts +4 -2
  278. package/dist/engine/compaction/compaction.d.ts +2 -2
  279. package/dist/engine/compaction/utils.d.ts +2 -2
  280. package/dist/engine/harness/agent-harness.js +2 -1
  281. package/dist/engine/harness/types.d.ts +10 -4
  282. package/dist/engine/llm/types.d.ts +7 -2
  283. package/dist/engine/llm/types.js +2 -1
  284. package/dist/engine/loop/agent-loop.d.ts +12 -1
  285. package/dist/engine/loop/agent-loop.js +17 -5
  286. package/dist/engine/loop/types.d.ts +7 -1
  287. package/dist/engine/session/repo-utils.d.ts +5 -0
  288. package/dist/engine/session/repo-utils.js +9 -0
  289. package/dist/engine/session/storage-base.js +2 -2
  290. package/dist/index.d.ts +37 -17
  291. package/dist/index.js +31 -14
  292. package/dist/internal/harness.d.ts +1 -0
  293. package/dist/internal/harness.js +1 -0
  294. package/dist/internal/llm.d.ts +1 -1
  295. package/dist/internal/llm.js +1 -1
  296. package/dist/orchestration/goal.d.ts +24 -1
  297. package/dist/orchestration/goal.js +3 -2
  298. package/dist/orchestration/run-workflow-tool.d.ts +3 -0
  299. package/dist/orchestration/run-workflow-tool.js +1 -0
  300. package/dist/orchestration/workflow-governance.d.ts +1 -1
  301. package/dist/orchestration/workflow.d.ts +3 -0
  302. package/dist/orchestration/workflow.js +2 -1
  303. package/dist/prompt-assembly/artifact-store.d.ts +44 -9
  304. package/dist/prompt-assembly/artifact-store.js +38 -12
  305. package/dist/prompt-assembly/artifact.d.ts +12 -11
  306. package/dist/prompt-assembly/artifact.js +52 -21
  307. package/dist/prompt-assembly/assemble.d.ts +2 -0
  308. package/dist/prompt-assembly/assemble.js +2 -1
  309. package/dist/prompt-assembly/catalog/index.js +2 -1
  310. package/dist/prompt-assembly/catalog/memory.d.ts +13 -0
  311. package/dist/prompt-assembly/catalog/memory.js +6 -0
  312. package/dist/prompt-assembly/catalog/schema.d.ts +19 -2
  313. package/dist/prompt-assembly/catalog/schema.js +3 -0
  314. package/dist/prompt-assembly/composer.d.ts +2 -0
  315. package/dist/prompt-assembly/composer.js +1 -1
  316. package/dist/prompt-assembly/overlay.d.ts +21 -11
  317. package/dist/prompt-assembly/overlay.js +57 -19
  318. package/dist/prompt-assembly/select.d.ts +21 -6
  319. package/dist/prompt-assembly/select.js +41 -4
  320. package/dist/prompts/default.d.ts +1 -12
  321. package/dist/prompts/default.js +0 -3
  322. package/dist/shell/lex.d.ts +87 -8
  323. package/dist/shell/lex.js +283 -49
  324. package/dist/stores/file/index.d.ts +8 -6
  325. package/dist/stores/file/permission-rule-store.d.ts +1 -1
  326. package/dist/stores/file/permission-rule-store.js +2 -1
  327. package/dist/tools/artifact/artifact-tool.js +14 -3
  328. package/dist/tools/fs/bash-program-position.d.ts +3 -15
  329. package/dist/tools/fs/bash-program-position.js +3 -10
  330. package/dist/tools/fs/bash-readonly-classifier.js +2 -0
  331. package/dist/tools/fs/fs-bash.d.ts +3 -3
  332. package/dist/tools/fs/fs-bash.js +72 -101
  333. package/dist/tools/fs/fs-read.d.ts +12 -0
  334. package/dist/tools/fs/fs-read.js +10 -9
  335. package/dist/tools/fs/fs-shared.d.ts +27 -31
  336. package/dist/tools/fs/fs-shared.js +12 -15
  337. package/dist/tools/fs/fs-write.js +1 -1
  338. package/dist/tools/fs/index.js +2 -2
  339. package/dist/tools/fs/read-deny-home.d.ts +1 -1
  340. package/dist/tools/fs/read-deny-home.js +5 -4
  341. package/dist/tools/fs/read-deny.d.ts +16 -3
  342. package/dist/tools/fs/read-deny.js +12 -9
  343. package/dist/tools/fs/safety.d.ts +7 -6
  344. package/dist/tools/fs/shell-read-bindings.d.ts +5 -3
  345. package/dist/tools/fs/shell-read-bindings.js +15 -16
  346. package/dist/tools/fs/shell-read-device.js +1 -1
  347. package/dist/tools/fs/shell-read-plan.js +36 -47
  348. package/dist/tools/fs/shell-read-word.d.ts +1 -6
  349. package/dist/tools/fs/shell-read-word.js +2 -20
  350. package/dist/tools/fs/shell-reentry-text.js +1 -1
  351. package/dist/tools/web.d.ts +2 -2
  352. package/package.json +4 -1
  353. package/test/export-surface.snapshot.json +5651 -5457
  354. package/wire-changes/core@7.53.0.json +1968 -0
  355. package/wire-changes/core@7.54.0.json +2870 -0
  356. package/dist/core/shell-scan.d.ts +0 -60
  357. package/dist/core/shell-scan.js +0 -183
@@ -0,0 +1,2870 @@
1
+ {
2
+ "repo": "core",
3
+ "version": "7.54.0",
4
+ "from": "d1d7d4b6712ddedd92e0d6457be34e4ff2a97dd6",
5
+ "to": "dc4ca90776e56a0912052ef806c75d56427bd812",
6
+ "added": [
7
+ {
8
+ "name": "APPROVAL_STATION_MEMBERS",
9
+ "kind": "variable",
10
+ "tier": "advanced",
11
+ "at": [
12
+ "src/core/approval-object.ts:81",
13
+ "src/index.ts:1178"
14
+ ],
15
+ "criteriaCovered": false,
16
+ "breaking": false
17
+ },
18
+ {
19
+ "name": "APPROVAL_TARGET_ROLES",
20
+ "kind": "variable",
21
+ "tier": "advanced",
22
+ "at": [
23
+ "src/core/approval-object.ts:26",
24
+ "src/index.ts:1178"
25
+ ],
26
+ "criteriaCovered": false,
27
+ "breaking": false
28
+ },
29
+ {
30
+ "name": "ApprovalDisposition",
31
+ "kind": "type",
32
+ "tier": "advanced",
33
+ "at": [
34
+ "src/core/approval-object.ts:89",
35
+ "src/index.ts:1178"
36
+ ],
37
+ "criteriaCovered": false,
38
+ "breaking": false
39
+ },
40
+ {
41
+ "name": "ApprovalMember",
42
+ "kind": "type",
43
+ "tier": "advanced",
44
+ "at": [
45
+ "src/core/approval-object.ts:79",
46
+ "src/index.ts:1178"
47
+ ],
48
+ "criteriaCovered": false,
49
+ "breaking": false
50
+ },
51
+ {
52
+ "name": "ApprovalMismatch",
53
+ "kind": "interface",
54
+ "tier": "advanced",
55
+ "at": [
56
+ "src/core/approval-object.ts:90",
57
+ "src/index.ts:1178"
58
+ ],
59
+ "criteriaCovered": false,
60
+ "breaking": false
61
+ },
62
+ {
63
+ "name": "ApprovalObject",
64
+ "kind": "interface",
65
+ "tier": "advanced",
66
+ "at": [
67
+ "src/core/approval-object.ts:44",
68
+ "src/index.ts:1178"
69
+ ],
70
+ "criteriaCovered": false,
71
+ "breaking": false
72
+ },
73
+ {
74
+ "name": "ApprovalStation",
75
+ "kind": "type",
76
+ "tier": "advanced",
77
+ "at": [
78
+ "src/core/approval-object.ts:78",
79
+ "src/index.ts:1178"
80
+ ],
81
+ "criteriaCovered": false,
82
+ "breaking": false
83
+ },
84
+ {
85
+ "name": "ApprovalTargets",
86
+ "kind": "type",
87
+ "tier": "advanced",
88
+ "at": [
89
+ "src/core/approval-object.ts:32",
90
+ "src/index.ts:1178"
91
+ ],
92
+ "criteriaCovered": false,
93
+ "breaking": false
94
+ },
95
+ {
96
+ "name": "BOUNDARY_LEGS",
97
+ "kind": "variable",
98
+ "tier": "advanced",
99
+ "at": [
100
+ "src/core/cross-boundary-taint.ts:50",
101
+ "src/index.ts:1496"
102
+ ],
103
+ "criteriaCovered": false,
104
+ "breaking": false
105
+ },
106
+ {
107
+ "name": "BoundaryLeg",
108
+ "kind": "type",
109
+ "tier": "advanced",
110
+ "at": [
111
+ "src/core/cross-boundary-taint.ts:51",
112
+ "src/index.ts:1496"
113
+ ],
114
+ "criteriaCovered": false,
115
+ "breaking": false
116
+ },
117
+ {
118
+ "name": "BoundaryLegList",
119
+ "kind": "type",
120
+ "tier": "advanced",
121
+ "at": [
122
+ "src/core/cross-boundary-taint.ts:57",
123
+ "src/index.ts:1496"
124
+ ],
125
+ "criteriaCovered": false,
126
+ "breaking": false
127
+ },
128
+ {
129
+ "name": "BoundaryLegsDeclaration",
130
+ "kind": "type",
131
+ "tier": "advanced",
132
+ "at": [
133
+ "src/core/cross-boundary-taint.ts:55",
134
+ "src/index.ts:1496"
135
+ ],
136
+ "criteriaCovered": false,
137
+ "breaking": false
138
+ },
139
+ {
140
+ "name": "BoundaryLegsFor",
141
+ "kind": "type",
142
+ "tier": "advanced",
143
+ "at": [
144
+ "src/core/cross-boundary-taint.ts:81",
145
+ "src/index.ts:1496"
146
+ ],
147
+ "criteriaCovered": false,
148
+ "breaking": false
149
+ },
150
+ {
151
+ "name": "BoundaryLegsGiven",
152
+ "kind": "interface",
153
+ "tier": "advanced",
154
+ "at": [
155
+ "src/core/cross-boundary-taint.ts:68",
156
+ "src/index.ts:1496"
157
+ ],
158
+ "criteriaCovered": false,
159
+ "breaking": false
160
+ },
161
+ {
162
+ "name": "CROSS_BOUNDARY_POSTURES",
163
+ "kind": "variable",
164
+ "tier": "advanced",
165
+ "at": [
166
+ "src/core/cross-boundary-taint.ts:37",
167
+ "src/index.ts:1496"
168
+ ],
169
+ "criteriaCovered": false,
170
+ "breaking": false
171
+ },
172
+ {
173
+ "name": "CROSS_BOUNDARY_RECORD_TYPE",
174
+ "kind": "variable",
175
+ "tier": "advanced",
176
+ "at": [
177
+ "src/core/cross-boundary-taint.ts:198",
178
+ "src/index.ts:1496"
179
+ ],
180
+ "criteriaCovered": false,
181
+ "breaking": false
182
+ },
183
+ {
184
+ "name": "CROSS_BOUNDARY_TAINT_BITS",
185
+ "kind": "variable",
186
+ "tier": "advanced",
187
+ "at": [
188
+ "src/core/cross-boundary-taint.ts:21",
189
+ "src/index.ts:1496"
190
+ ],
191
+ "criteriaCovered": false,
192
+ "breaking": false
193
+ },
194
+ {
195
+ "name": "CompactionRestoreAsk",
196
+ "kind": "interface",
197
+ "tier": "advanced",
198
+ "at": [
199
+ "src/core/auto-compaction.ts:326",
200
+ "src/index.ts:973"
201
+ ],
202
+ "criteriaCovered": false,
203
+ "breaking": false
204
+ },
205
+ {
206
+ "name": "CrossBoundaryCall",
207
+ "kind": "interface",
208
+ "tier": "advanced",
209
+ "at": [
210
+ "src/core/cross-boundary-taint.ts:92",
211
+ "src/index.ts:1496"
212
+ ],
213
+ "criteriaCovered": false,
214
+ "breaking": false
215
+ },
216
+ {
217
+ "name": "CrossBoundaryCheck",
218
+ "kind": "interface",
219
+ "tier": "advanced",
220
+ "at": [
221
+ "src/core/cross-boundary-taint.ts:99",
222
+ "src/index.ts:1496"
223
+ ],
224
+ "criteriaCovered": false,
225
+ "breaking": false
226
+ },
227
+ {
228
+ "name": "CrossBoundaryExitRefusal",
229
+ "kind": "interface",
230
+ "tier": "advanced",
231
+ "at": [
232
+ "src/core/cross-boundary-taint.ts:86",
233
+ "src/index.ts:1496"
234
+ ],
235
+ "criteriaCovered": false,
236
+ "breaking": false
237
+ },
238
+ {
239
+ "name": "CrossBoundaryObligation",
240
+ "kind": "interface",
241
+ "tier": "advanced",
242
+ "at": [
243
+ "src/core/cross-boundary-taint.ts:60",
244
+ "src/index.ts:1496"
245
+ ],
246
+ "criteriaCovered": false,
247
+ "breaking": false
248
+ },
249
+ {
250
+ "name": "CrossBoundaryPosture",
251
+ "kind": "type",
252
+ "tier": "advanced",
253
+ "at": [
254
+ "src/core/cross-boundary-taint.ts:38",
255
+ "src/index.ts:1496"
256
+ ],
257
+ "criteriaCovered": false,
258
+ "breaking": false
259
+ },
260
+ {
261
+ "name": "CrossBoundaryRecordData",
262
+ "kind": "interface",
263
+ "tier": "advanced",
264
+ "at": [
265
+ "src/core/cross-boundary-taint.ts:201",
266
+ "src/index.ts:1496"
267
+ ],
268
+ "criteriaCovered": false,
269
+ "breaking": false
270
+ },
271
+ {
272
+ "name": "CrossBoundaryRecordEntry",
273
+ "kind": "interface",
274
+ "tier": "advanced",
275
+ "at": [
276
+ "src/core/cross-boundary-taint.ts:224",
277
+ "src/index.ts:1496"
278
+ ],
279
+ "criteriaCovered": false,
280
+ "breaking": false
281
+ },
282
+ {
283
+ "name": "CrossBoundaryRecordRead",
284
+ "kind": "type",
285
+ "tier": "advanced",
286
+ "at": [
287
+ "src/core/cross-boundary-taint.ts:218",
288
+ "src/index.ts:1496"
289
+ ],
290
+ "criteriaCovered": false,
291
+ "breaking": false
292
+ },
293
+ {
294
+ "name": "CrossBoundaryTaintBit",
295
+ "kind": "type",
296
+ "tier": "advanced",
297
+ "at": [
298
+ "src/core/cross-boundary-taint.ts:22",
299
+ "src/index.ts:1496"
300
+ ],
301
+ "criteriaCovered": false,
302
+ "breaking": false
303
+ },
304
+ {
305
+ "name": "CrossBoundaryTree",
306
+ "kind": "interface",
307
+ "tier": "advanced",
308
+ "at": [
309
+ "src/core/cross-boundary-taint.ts:29",
310
+ "src/index.ts:1496"
311
+ ],
312
+ "criteriaCovered": false,
313
+ "breaking": false
314
+ },
315
+ {
316
+ "name": "CrossBoundaryTreeToken",
317
+ "kind": "interface",
318
+ "tier": "advanced",
319
+ "at": [
320
+ "src/core/cross-boundary-taint.ts:76",
321
+ "src/index.ts:1496"
322
+ ],
323
+ "criteriaCovered": false,
324
+ "breaking": false
325
+ },
326
+ {
327
+ "name": "DECLARATION_PATH_RULES",
328
+ "kind": "variable",
329
+ "tier": "advanced",
330
+ "at": [
331
+ "src/core/mcp-server-spec.ts:313",
332
+ "src/core/types.ts:33",
333
+ "src/index.ts:3653"
334
+ ],
335
+ "criteriaCovered": false,
336
+ "breaking": false
337
+ },
338
+ {
339
+ "name": "DeclarationFault",
340
+ "kind": "interface",
341
+ "tier": "advanced",
342
+ "at": [
343
+ "src/core/mcp-server-spec.ts:267",
344
+ "src/core/types.ts:32",
345
+ "src/index.ts:3654"
346
+ ],
347
+ "criteriaCovered": false,
348
+ "breaking": false
349
+ },
350
+ {
351
+ "name": "DeclarationPathRule",
352
+ "kind": "interface",
353
+ "tier": "advanced",
354
+ "at": [
355
+ "src/core/mcp-server-spec.ts:300",
356
+ "src/core/types.ts:32",
357
+ "src/index.ts:3654"
358
+ ],
359
+ "criteriaCovered": false,
360
+ "breaking": false
361
+ },
362
+ {
363
+ "name": "DeclarationRead",
364
+ "kind": "type",
365
+ "tier": "advanced",
366
+ "at": [
367
+ "src/core/mcp-server-spec.ts:273",
368
+ "src/core/types.ts:32",
369
+ "src/index.ts:3654"
370
+ ],
371
+ "criteriaCovered": false,
372
+ "breaking": false
373
+ },
374
+ {
375
+ "name": "EDITED_RULE_BREADTH_WARNING_CODES",
376
+ "kind": "variable",
377
+ "tier": "advanced",
378
+ "at": [
379
+ "src/core/permission-rule-model.ts:2056",
380
+ "src/index.ts:1733"
381
+ ],
382
+ "criteriaCovered": false,
383
+ "breaking": false
384
+ },
385
+ {
386
+ "name": "EngineStorageBackend",
387
+ "kind": "interface",
388
+ "tier": "advanced",
389
+ "at": [
390
+ "src/core/engine-storage-backend.ts:34",
391
+ "src/index.ts:3660"
392
+ ],
393
+ "criteriaCovered": false,
394
+ "breaking": false
395
+ },
396
+ {
397
+ "name": "FILE_HISTORY_ERROR_CODES",
398
+ "kind": "variable",
399
+ "tier": "advanced",
400
+ "at": [
401
+ "src/core/file-history-store.ts:173",
402
+ "src/index.ts:868"
403
+ ],
404
+ "criteriaCovered": false,
405
+ "breaking": false
406
+ },
407
+ {
408
+ "name": "IMPORTED_SETTINGS_LAYERS",
409
+ "kind": "variable",
410
+ "tier": "advanced",
411
+ "at": [
412
+ "src/core/permission-rule-consent.ts:1574",
413
+ "src/index.ts:1950"
414
+ ],
415
+ "criteriaCovered": false,
416
+ "breaking": false
417
+ },
418
+ {
419
+ "name": "LiveApprovalObject",
420
+ "kind": "interface",
421
+ "tier": "advanced",
422
+ "at": [
423
+ "src/core/approval-object.ts:100",
424
+ "src/index.ts:1178"
425
+ ],
426
+ "criteriaCovered": false,
427
+ "breaking": false
428
+ },
429
+ {
430
+ "name": "MintedAttachmentFrame",
431
+ "kind": "interface",
432
+ "tier": "advanced",
433
+ "at": [
434
+ "src/core/user-attachment.ts:418",
435
+ "src/index.ts:975"
436
+ ],
437
+ "criteriaCovered": false,
438
+ "breaking": false
439
+ },
440
+ {
441
+ "name": "PERSISTED_RULE_MATCHES",
442
+ "kind": "variable",
443
+ "tier": "advanced",
444
+ "at": [
445
+ "src/core/permission-rule-model.ts:332",
446
+ "src/index.ts:1730"
447
+ ],
448
+ "criteriaCovered": false,
449
+ "breaking": false
450
+ },
451
+ {
452
+ "name": "ParkedApprovalCardReading",
453
+ "kind": "type",
454
+ "tier": "advanced",
455
+ "at": [
456
+ "src/core/pause-registry.ts:64",
457
+ "src/index.ts:3672"
458
+ ],
459
+ "criteriaCovered": false,
460
+ "breaking": false
461
+ },
462
+ {
463
+ "name": "RULE_ADD_ORIGINS",
464
+ "kind": "variable",
465
+ "tier": "advanced",
466
+ "at": [
467
+ "src/core/permission-rule-model.ts:407",
468
+ "src/index.ts:1734"
469
+ ],
470
+ "criteriaCovered": false,
471
+ "breaking": false
472
+ },
473
+ {
474
+ "name": "RULE_APPROVAL_KINDS",
475
+ "kind": "variable",
476
+ "tier": "advanced",
477
+ "at": [
478
+ "src/core/permission-rule-consent.ts:78",
479
+ "src/index.ts:1948"
480
+ ],
481
+ "criteriaCovered": false,
482
+ "breaking": false
483
+ },
484
+ {
485
+ "name": "RULE_APPROVAL_RECORD_SCHEMA",
486
+ "kind": "variable",
487
+ "tier": "advanced",
488
+ "at": [
489
+ "src/core/permission-rule-consent.ts:131",
490
+ "src/index.ts:1953"
491
+ ],
492
+ "criteriaCovered": false,
493
+ "breaking": false
494
+ },
495
+ {
496
+ "name": "RULE_APPROVAL_STATES",
497
+ "kind": "variable",
498
+ "tier": "advanced",
499
+ "at": [
500
+ "src/core/permission-rule-consent.ts:84",
501
+ "src/index.ts:1949"
502
+ ],
503
+ "criteriaCovered": false,
504
+ "breaking": false
505
+ },
506
+ {
507
+ "name": "RULE_OFFER_BATCH_MEMBER_KINDS",
508
+ "kind": "variable",
509
+ "tier": "advanced",
510
+ "at": [
511
+ "src/core/permission-rule-model.ts:2922",
512
+ "src/index.ts:1731"
513
+ ],
514
+ "criteriaCovered": false,
515
+ "breaking": false
516
+ },
517
+ {
518
+ "name": "RULE_OWNER_KINDS",
519
+ "kind": "variable",
520
+ "tier": "advanced",
521
+ "at": [
522
+ "src/core/permission-rule-store.ts:102",
523
+ "src/index.ts:1800"
524
+ ],
525
+ "criteriaCovered": false,
526
+ "breaking": false
527
+ },
528
+ {
529
+ "name": "RuleApprovalState",
530
+ "kind": "type",
531
+ "tier": "advanced",
532
+ "at": [
533
+ "src/core/permission-rule-consent.ts:88",
534
+ "src/index.ts:1946"
535
+ ],
536
+ "criteriaCovered": false,
537
+ "breaking": false
538
+ },
539
+ {
540
+ "name": "SessionStoreContractHooks",
541
+ "kind": "interface",
542
+ "tier": "advanced",
543
+ "at": [
544
+ "src/core/store-contracts/session-store-contract.ts:31",
545
+ "src/index.ts:3665"
546
+ ],
547
+ "criteriaCovered": false,
548
+ "breaking": false
549
+ },
550
+ {
551
+ "name": "UNCOVERED_SEGMENT_REASONS",
552
+ "kind": "variable",
553
+ "tier": "advanced",
554
+ "at": [
555
+ "src/core/permission-rule-model.ts:3026",
556
+ "src/index.ts:1732"
557
+ ],
558
+ "criteriaCovered": false,
559
+ "breaking": false
560
+ },
561
+ {
562
+ "name": "admitSessionPlacement",
563
+ "kind": "function",
564
+ "tier": "advanced",
565
+ "at": [
566
+ "src/core/session-store.ts:113",
567
+ "src/index.ts:3673"
568
+ ],
569
+ "criteriaCovered": false,
570
+ "breaking": false
571
+ },
572
+ {
573
+ "name": "approvalObjectOf",
574
+ "kind": "function",
575
+ "tier": "advanced",
576
+ "at": [
577
+ "src/core/approval-object.ts:53",
578
+ "src/index.ts:1178"
579
+ ],
580
+ "criteriaCovered": false,
581
+ "breaking": false
582
+ },
583
+ {
584
+ "name": "assertForkTarget",
585
+ "kind": "function",
586
+ "tier": "internal",
587
+ "at": [
588
+ "src/engine/session/repo-utils.ts:37",
589
+ "src/index.ts:3674",
590
+ "src/internal/harness.ts:50"
591
+ ],
592
+ "criteriaCovered": false,
593
+ "breaking": false
594
+ },
595
+ {
596
+ "name": "canonicalJsonStringify",
597
+ "kind": "function",
598
+ "tier": "advanced",
599
+ "at": [
600
+ "src/core/canonical-json.ts:575",
601
+ "src/index.ts:3671"
602
+ ],
603
+ "criteriaCovered": false,
604
+ "breaking": false
605
+ },
606
+ {
607
+ "name": "crossBoundaryObligation",
608
+ "kind": "function",
609
+ "tier": "advanced",
610
+ "at": [
611
+ "src/core/cross-boundary-taint.ts:147",
612
+ "src/index.ts:1496"
613
+ ],
614
+ "criteriaCovered": false,
615
+ "breaking": false
616
+ },
617
+ {
618
+ "name": "forkRowCells",
619
+ "kind": "function",
620
+ "tier": "internal",
621
+ "at": [
622
+ "src/engine/session/repo-utils.ts:42",
623
+ "src/index.ts:3674",
624
+ "src/internal/harness.ts:50"
625
+ ],
626
+ "criteriaCovered": false,
627
+ "breaking": false
628
+ },
629
+ {
630
+ "name": "incarnationCell",
631
+ "kind": "function",
632
+ "tier": "internal",
633
+ "at": [
634
+ "src/engine/session/repo-utils.ts:19",
635
+ "src/index.ts:3674",
636
+ "src/internal/harness.ts:50"
637
+ ],
638
+ "criteriaCovered": false,
639
+ "breaking": false
640
+ },
641
+ {
642
+ "name": "isHostRole",
643
+ "kind": "function",
644
+ "tier": "advanced",
645
+ "at": [
646
+ "src/index.ts:2629",
647
+ "src/prompt-assembly/catalog/schema.ts:45"
648
+ ],
649
+ "criteriaCovered": false,
650
+ "breaking": false
651
+ },
652
+ {
653
+ "name": "judgeApprovalObject",
654
+ "kind": "function",
655
+ "tier": "advanced",
656
+ "at": [
657
+ "src/core/approval-object.ts:171",
658
+ "src/index.ts:1178"
659
+ ],
660
+ "criteriaCovered": false,
661
+ "breaking": false
662
+ },
663
+ {
664
+ "name": "mcpStartupTimeoutMs",
665
+ "kind": "function",
666
+ "tier": "advanced",
667
+ "at": [
668
+ "src/core/mcp.ts:761",
669
+ "src/index.ts:333"
670
+ ],
671
+ "criteriaCovered": false,
672
+ "breaking": false
673
+ },
674
+ {
675
+ "name": "parkedApprovalCardOf",
676
+ "kind": "function",
677
+ "tier": "advanced",
678
+ "at": [
679
+ "src/core/pause-registry.ts:81",
680
+ "src/index.ts:3672"
681
+ ],
682
+ "criteriaCovered": false,
683
+ "breaking": false
684
+ },
685
+ {
686
+ "name": "readCrossBoundaryRecord",
687
+ "kind": "function",
688
+ "tier": "advanced",
689
+ "at": [
690
+ "src/core/cross-boundary-taint.ts:272",
691
+ "src/index.ts:1496"
692
+ ],
693
+ "criteriaCovered": false,
694
+ "breaking": false
695
+ },
696
+ {
697
+ "name": "readDenyRowAnchor",
698
+ "kind": "function",
699
+ "tier": "advanced",
700
+ "at": [
701
+ "src/index.ts:645",
702
+ "src/tools/fs/read-deny.ts:1086"
703
+ ],
704
+ "criteriaCovered": false,
705
+ "breaking": false
706
+ },
707
+ {
708
+ "name": "readIncarnationCell",
709
+ "kind": "function",
710
+ "tier": "internal",
711
+ "at": [
712
+ "src/engine/session/repo-utils.ts:28",
713
+ "src/index.ts:3674"
714
+ ],
715
+ "criteriaCovered": false,
716
+ "breaking": false
717
+ },
718
+ {
719
+ "name": "readToolFaces",
720
+ "kind": "function",
721
+ "tier": "advanced",
722
+ "at": [
723
+ "src/core/tool-face-reader.ts:130",
724
+ "src/index.ts:1175"
725
+ ],
726
+ "criteriaCovered": false,
727
+ "breaking": false
728
+ },
729
+ {
730
+ "name": "receiveDeclaration",
731
+ "kind": "function",
732
+ "tier": "advanced",
733
+ "at": [
734
+ "src/core/mcp-server-spec.ts:426",
735
+ "src/core/types.ts:33",
736
+ "src/index.ts:3653"
737
+ ],
738
+ "criteriaCovered": false,
739
+ "breaking": false
740
+ },
741
+ {
742
+ "name": "sameOrgPolicyContent",
743
+ "kind": "function",
744
+ "tier": "advanced",
745
+ "at": [
746
+ "src/core/permission-rule-org.ts:526",
747
+ "src/index.ts:1902"
748
+ ],
749
+ "criteriaCovered": false,
750
+ "breaking": false
751
+ },
752
+ {
753
+ "name": "sessionStoreContract",
754
+ "kind": "function",
755
+ "tier": "advanced",
756
+ "at": [
757
+ "src/core/store-contracts/session-store-contract.ts:209",
758
+ "src/index.ts:3665"
759
+ ],
760
+ "criteriaCovered": false,
761
+ "breaking": false
762
+ }
763
+ ],
764
+ "removed": [
765
+ {
766
+ "name": "judgeParkedToolIdentity",
767
+ "kind": "function",
768
+ "tier": "advanced",
769
+ "at": [
770
+ "src/core/tool-roster.ts:951",
771
+ "src/index.ts:1107"
772
+ ],
773
+ "breaking": true
774
+ }
775
+ ],
776
+ "changed": [],
777
+ "narrowed": [
778
+ {
779
+ "id": "F2",
780
+ "source": "behaviorFlips.summary",
781
+ "text": "#1581 (behavior narrowing, open to veto): a written `feedback` on a deny, on a decide a machine made, as a non-string, or carrying a `<system-reminder>` tag is refused before the claim."
782
+ },
783
+ {
784
+ "id": "F4",
785
+ "source": "behaviorFlips.summary",
786
+ "text": "#1329 C1a (behavior narrowing for a host's own `runToolGate` input only, open to veto): the `egress` mark is the operator's class on every seat."
787
+ },
788
+ {
789
+ "id": "F6",
790
+ "source": "behaviorFlips.summary",
791
+ "text": "#1359 (behavior narrowing, hard-breaking for the name-list factories, ruled: clay C-R638): a name-list hit or a policy's reason word is no consent for a server's tool nobody granted."
792
+ },
793
+ {
794
+ "id": "F8",
795
+ "source": "behaviorFlips.summary",
796
+ "text": "#1359 (behavior narrowing, two shapes that ran unasked before, ruled: clay C-R638): an inherited screening allow, an inherited classifier allow and the write gate's session exemption no longer clear a passthrough tool's question."
797
+ },
798
+ {
799
+ "id": "F12",
800
+ "source": "behaviorFlips.summary",
801
+ "text": "#2111 / #1391 (behavior narrowing, ruled: clay C-R646): a call whose arguments are not a record of plain JSON data nested at most 256 levels deep (nesting past 256 levels, a cyclic object graph, a bigint, a number that is not finite, a hole / a named member / an `undefined` element in a list, one object met twice, a getter, a class instance, a list of a subclass or of another realm, a symbol-keyed or non-enumerable member, a list, `undefined` or a bare scalar as the arguments) is refused before anyone is asked; a person's edit into such a shape (from the engine's resolver, from a host's own `resolveAsk`, or in a durable decide) is refused where it would be adopted."
802
+ },
803
+ {
804
+ "id": "F13",
805
+ "source": "behaviorFlips.summary",
806
+ "text": "#2111 (behavior narrowing, ruled: clay C-R646): `createApprovalPolicy` refuses arguments no approval can be bound to before its approver is asked, in the same sentence — including a `Date` / `Map` / binary value it used to clone and judge."
807
+ },
808
+ {
809
+ "id": "F14",
810
+ "source": "behaviorFlips.summary",
811
+ "text": "#1680 (behavior narrowing, ruled: clay C-R638): a caller tool under an engine-tool name the engine does not mount on this leg is read by its own declaration."
812
+ },
813
+ {
814
+ "id": "F15",
815
+ "source": "behaviorFlips.summary",
816
+ "text": "#2105 (safety narrowing, ruled: clay C-R646): a caller alias of an engine tool's name no longer lends its irreversibility tier or reversibility probe to the engine shell."
817
+ },
818
+ {
819
+ "id": "F17",
820
+ "source": "behaviorFlips.summary",
821
+ "text": "#1567 (behavior narrowing, ruled: clay C-R638): `tightenTaskSpec` refuses an override that turns `memory.enabled: false` back on."
822
+ },
823
+ {
824
+ "id": "F20",
825
+ "source": "behaviorFlips.summary",
826
+ "text": "#1973 / #2093 (behavior narrowing, open to veto): an MCP server's `toolFaces` declaration that does not fit refuses the whole entry under `config.tool_face_invalid` at the door."
827
+ },
828
+ {
829
+ "id": "F21",
830
+ "source": "behaviorFlips.summary",
831
+ "text": "#1973 (behavior narrowing, open to veto): an MCP face whose `resultCards` name another namespace is refused at the listing as a caller's is."
832
+ },
833
+ {
834
+ "id": "F23",
835
+ "source": "behaviorFlips.summary",
836
+ "text": "#2070 (behavior narrowing, ruled: clay C-R646): a teammate leg's protocol tools follow the spawner's allowlist."
837
+ },
838
+ {
839
+ "id": "F28",
840
+ "source": "behaviorFlips.summary",
841
+ "text": "#469 O9b S1 (behavior narrowing, open to veto; only on a tree that executes on a target device under `multi_tenant`): a call that writes beyond the device — and, once content from beyond it was let in, every call back into the device — is put to a person; a configuration's allow of such a call is refused."
842
+ },
843
+ {
844
+ "id": "F29",
845
+ "source": "behaviorFlips.summary",
846
+ "text": "#469 O9b S1 / C-R655 (behavior narrowing, open to veto): a session record the tree owes that cannot be written refuses the call that owes it on a governed tree, and is reported as an operator notice on a tree that is not governed; a parked row of an armed tree lists the requirement word `cross_boundary`."
847
+ },
848
+ {
849
+ "id": "F30",
850
+ "source": "behaviorFlips.summary",
851
+ "text": "#469 O9b S1 (behavior narrowing on every lane, open to veto): the decision receipt holds each ask-only member to the ask arm — an allow, a deny or a hook result with no `action` carrying one is denied by policy."
852
+ }
853
+ ],
854
+ "closedSetMembers": [
855
+ {
856
+ "set": "APPROVAL_TARGET_ROLES",
857
+ "at": [
858
+ "src/core/approval-object.ts:26"
859
+ ],
860
+ "newSet": true,
861
+ "added": [
862
+ "declared",
863
+ "protective"
864
+ ],
865
+ "removed": [],
866
+ "breaking": false,
867
+ "criteriaCovered": false
868
+ },
869
+ {
870
+ "set": "ASK_CLASSES",
871
+ "at": [
872
+ "src/core/ask-origin.ts:638"
873
+ ],
874
+ "newSet": false,
875
+ "added": [
876
+ "cross_boundary"
877
+ ],
878
+ "removed": [],
879
+ "breaking": false,
880
+ "criteriaCovered": false
881
+ },
882
+ {
883
+ "set": "ApprovalCarryRefusal",
884
+ "at": [
885
+ "src/core/engine-notice.ts:1169"
886
+ ],
887
+ "newSet": true,
888
+ "added": [
889
+ "steering.invalid_content",
890
+ "steering.queue_full"
891
+ ],
892
+ "removed": [],
893
+ "breaking": false,
894
+ "criteriaCovered": false
895
+ },
896
+ {
897
+ "set": "ApprovalDisposition",
898
+ "at": [
899
+ "src/core/approval-object.ts:89"
900
+ ],
901
+ "newSet": true,
902
+ "added": [
903
+ "refuse_pending",
904
+ "reopen",
905
+ "veto"
906
+ ],
907
+ "removed": [],
908
+ "breaking": false,
909
+ "criteriaCovered": false
910
+ },
911
+ {
912
+ "set": "ApprovalMember",
913
+ "at": [
914
+ "src/core/approval-object.ts:79"
915
+ ],
916
+ "newSet": true,
917
+ "added": [
918
+ "grants",
919
+ "targets",
920
+ "tool"
921
+ ],
922
+ "removed": [],
923
+ "breaking": false,
924
+ "criteriaCovered": false
925
+ },
926
+ {
927
+ "set": "ApprovalStation",
928
+ "at": [
929
+ "src/core/approval-object.ts:78"
930
+ ],
931
+ "newSet": true,
932
+ "added": [
933
+ "claim",
934
+ "execution",
935
+ "session"
936
+ ],
937
+ "removed": [],
938
+ "breaking": false,
939
+ "criteriaCovered": false
940
+ },
941
+ {
942
+ "set": "ApprovalTargetRole",
943
+ "at": [
944
+ "src/core/approval-object.ts:27"
945
+ ],
946
+ "newSet": true,
947
+ "added": [
948
+ "declared",
949
+ "protective"
950
+ ],
951
+ "removed": [],
952
+ "breaking": false,
953
+ "criteriaCovered": false
954
+ },
955
+ {
956
+ "set": "BOUNDARY_LEGS",
957
+ "at": [
958
+ "src/core/cross-boundary-taint.ts:50"
959
+ ],
960
+ "newSet": true,
961
+ "added": [
962
+ "env",
963
+ "outside_read",
964
+ "outside_write"
965
+ ],
966
+ "removed": [],
967
+ "breaking": false,
968
+ "criteriaCovered": false
969
+ },
970
+ {
971
+ "set": "BindingTop",
972
+ "at": [
973
+ "src/core/canonical-json.ts:122"
974
+ ],
975
+ "newSet": true,
976
+ "added": [
977
+ "list",
978
+ "record"
979
+ ],
980
+ "removed": [],
981
+ "breaking": false,
982
+ "criteriaCovered": false
983
+ },
984
+ {
985
+ "set": "BoundaryLeg",
986
+ "at": [
987
+ "src/core/cross-boundary-taint.ts:51",
988
+ "src/index.ts:1496"
989
+ ],
990
+ "newSet": true,
991
+ "added": [
992
+ "env",
993
+ "outside_read",
994
+ "outside_write"
995
+ ],
996
+ "removed": [],
997
+ "breaking": false,
998
+ "criteriaCovered": false
999
+ },
1000
+ {
1001
+ "set": "BoundaryLegsDeclaration",
1002
+ "at": [
1003
+ "src/core/cross-boundary-taint.ts:55"
1004
+ ],
1005
+ "newSet": true,
1006
+ "added": [
1007
+ "per_call"
1008
+ ],
1009
+ "removed": [],
1010
+ "breaking": false,
1011
+ "criteriaCovered": false
1012
+ },
1013
+ {
1014
+ "set": "CHECKPOINT_CONFIG_REFUSAL_CODES",
1015
+ "at": [
1016
+ "src/core/checkpoint-store.ts:2499"
1017
+ ],
1018
+ "newSet": false,
1019
+ "added": [
1020
+ "config.cross_boundary_posture",
1021
+ "config.tool_face_invalid"
1022
+ ],
1023
+ "removed": [],
1024
+ "breaking": false,
1025
+ "criteriaCovered": true
1026
+ },
1027
+ {
1028
+ "set": "CROSS_BOUNDARY_POSTURES",
1029
+ "at": [
1030
+ "src/core/cross-boundary-taint.ts:37"
1031
+ ],
1032
+ "newSet": true,
1033
+ "added": [
1034
+ "multi_tenant",
1035
+ "single_user"
1036
+ ],
1037
+ "removed": [],
1038
+ "breaking": false,
1039
+ "criteriaCovered": false
1040
+ },
1041
+ {
1042
+ "set": "CROSS_BOUNDARY_TAINT_BITS",
1043
+ "at": [
1044
+ "src/core/cross-boundary-taint.ts:21"
1045
+ ],
1046
+ "newSet": true,
1047
+ "added": [
1048
+ "offTargetReadObserved",
1049
+ "targetExecutionArmed"
1050
+ ],
1051
+ "removed": [],
1052
+ "breaking": false,
1053
+ "criteriaCovered": false
1054
+ },
1055
+ {
1056
+ "set": "CrossBoundaryPosture",
1057
+ "at": [
1058
+ "src/core/cross-boundary-taint.ts:38",
1059
+ "src/index.ts:1496"
1060
+ ],
1061
+ "newSet": true,
1062
+ "added": [
1063
+ "multi_tenant",
1064
+ "single_user"
1065
+ ],
1066
+ "removed": [],
1067
+ "breaking": false,
1068
+ "criteriaCovered": false
1069
+ },
1070
+ {
1071
+ "set": "CrossBoundaryRecordPhase",
1072
+ "at": [
1073
+ "src/core/cross-boundary-taint.ts:318"
1074
+ ],
1075
+ "newSet": true,
1076
+ "added": [
1077
+ "exit",
1078
+ "prepare",
1079
+ "settle",
1080
+ "suspend"
1081
+ ],
1082
+ "removed": [],
1083
+ "breaking": false,
1084
+ "criteriaCovered": false
1085
+ },
1086
+ {
1087
+ "set": "CrossBoundaryTaintBit",
1088
+ "at": [
1089
+ "src/core/cross-boundary-taint.ts:22",
1090
+ "src/index.ts:1496"
1091
+ ],
1092
+ "newSet": true,
1093
+ "added": [
1094
+ "offTargetReadObserved",
1095
+ "targetExecutionArmed"
1096
+ ],
1097
+ "removed": [],
1098
+ "breaking": false,
1099
+ "criteriaCovered": false
1100
+ },
1101
+ {
1102
+ "set": "EDITED_RULE_BREADTH_WARNING_CODES",
1103
+ "at": [
1104
+ "src/core/permission-rule-model.ts:2056"
1105
+ ],
1106
+ "newSet": true,
1107
+ "added": [
1108
+ "broad_prefix",
1109
+ "compound_prefix"
1110
+ ],
1111
+ "removed": [],
1112
+ "breaking": false,
1113
+ "criteriaCovered": false
1114
+ },
1115
+ {
1116
+ "set": "ENGINE_NOTICE_CODES",
1117
+ "at": [
1118
+ "src/core/governance-codes.ts:363"
1119
+ ],
1120
+ "newSet": false,
1121
+ "added": [
1122
+ "config.cross_boundary_posture_undeclared",
1123
+ "config.cross_boundary_record_unwritten"
1124
+ ],
1125
+ "removed": [],
1126
+ "breaking": false,
1127
+ "criteriaCovered": true
1128
+ },
1129
+ {
1130
+ "set": "EditedRuleBreadthWarning.code",
1131
+ "at": [
1132
+ "src/core/permission-rule-model.ts:2049"
1133
+ ],
1134
+ "newSet": false,
1135
+ "added": [],
1136
+ "removed": [
1137
+ "broad_prefix",
1138
+ "compound_prefix"
1139
+ ],
1140
+ "breaking": true,
1141
+ "criteriaCovered": false
1142
+ },
1143
+ {
1144
+ "set": "FILE_HISTORY_ERROR_CODES",
1145
+ "at": [
1146
+ "src/core/file-history-store.ts:173"
1147
+ ],
1148
+ "newSet": true,
1149
+ "added": [
1150
+ "aborted",
1151
+ "adopt_failed",
1152
+ "conflict",
1153
+ "not_found",
1154
+ "restore_failed",
1155
+ "snapshot_failed",
1156
+ "track_failed",
1157
+ "unsupported_format"
1158
+ ],
1159
+ "removed": [],
1160
+ "breaking": false,
1161
+ "criteriaCovered": false
1162
+ },
1163
+ {
1164
+ "set": "FileErrorCode",
1165
+ "at": [
1166
+ "src/engine/harness/types.ts:153"
1167
+ ],
1168
+ "newSet": false,
1169
+ "added": [
1170
+ "target_unavailable"
1171
+ ],
1172
+ "removed": [],
1173
+ "breaking": false,
1174
+ "criteriaCovered": false
1175
+ },
1176
+ {
1177
+ "set": "FileHistoryError.code",
1178
+ "at": [
1179
+ "src/core/file-history-store.ts:184"
1180
+ ],
1181
+ "newSet": false,
1182
+ "added": [],
1183
+ "removed": [
1184
+ "aborted",
1185
+ "adopt_failed",
1186
+ "conflict",
1187
+ "not_found",
1188
+ "restore_failed",
1189
+ "snapshot_failed",
1190
+ "track_failed",
1191
+ "unsupported_format"
1192
+ ],
1193
+ "persistedBy": "none",
1194
+ "breaking": true,
1195
+ "criteriaCovered": false
1196
+ },
1197
+ {
1198
+ "set": "IMPORTED_SETTINGS_LAYERS",
1199
+ "at": [
1200
+ "src/core/permission-rule-consent.ts:1574"
1201
+ ],
1202
+ "newSet": true,
1203
+ "added": [
1204
+ "localSettings",
1205
+ "projectSettings",
1206
+ "userSettings"
1207
+ ],
1208
+ "removed": [],
1209
+ "breaking": false,
1210
+ "criteriaCovered": false
1211
+ },
1212
+ {
1213
+ "set": "LexedRedirect.op",
1214
+ "at": [
1215
+ "src/shell/lex.ts:220"
1216
+ ],
1217
+ "newSet": false,
1218
+ "added": [
1219
+ "<>"
1220
+ ],
1221
+ "removed": [],
1222
+ "breaking": false,
1223
+ "criteriaCovered": false
1224
+ },
1225
+ {
1226
+ "set": "PARSE_FAILURE_REASONS",
1227
+ "at": [
1228
+ "src/shell/lex.ts:57"
1229
+ ],
1230
+ "newSet": false,
1231
+ "added": [
1232
+ "unterminated_arithmetic_expansion"
1233
+ ],
1234
+ "removed": [],
1235
+ "breaking": false,
1236
+ "criteriaCovered": false
1237
+ },
1238
+ {
1239
+ "set": "PERSISTED_RULE_MANDATES",
1240
+ "at": [
1241
+ "src/core/ask-origin.ts:408"
1242
+ ],
1243
+ "newSet": false,
1244
+ "added": [
1245
+ "cross_boundary_taint"
1246
+ ],
1247
+ "removed": [],
1248
+ "breaking": false,
1249
+ "criteriaCovered": false
1250
+ },
1251
+ {
1252
+ "set": "PERSISTED_RULE_MATCHES",
1253
+ "at": [
1254
+ "src/core/permission-rule-model.ts:332"
1255
+ ],
1256
+ "newSet": true,
1257
+ "added": [
1258
+ "exact",
1259
+ "host",
1260
+ "name",
1261
+ "name_prefix",
1262
+ "path",
1263
+ "prefix",
1264
+ "subdomain",
1265
+ "subpath",
1266
+ "wildcard"
1267
+ ],
1268
+ "removed": [],
1269
+ "breaking": false,
1270
+ "criteriaCovered": false
1271
+ },
1272
+ {
1273
+ "set": "REQUIREMENT_WORDS",
1274
+ "at": [
1275
+ "src/core/checkpoint-requirements.ts:36"
1276
+ ],
1277
+ "newSet": false,
1278
+ "added": [
1279
+ "approval_targets",
1280
+ "cross_boundary"
1281
+ ],
1282
+ "removed": [],
1283
+ "breaking": false,
1284
+ "criteriaCovered": false
1285
+ },
1286
+ {
1287
+ "set": "RESUME_REFUSAL_MEMBERS",
1288
+ "at": [
1289
+ "src/core/resume-startup-cause.ts:87"
1290
+ ],
1291
+ "newSet": true,
1292
+ "added": [
1293
+ "code",
1294
+ "field",
1295
+ "reason"
1296
+ ],
1297
+ "removed": [],
1298
+ "breaking": false,
1299
+ "criteriaCovered": false
1300
+ },
1301
+ {
1302
+ "set": "RULE_ADD_ORIGINS",
1303
+ "at": [
1304
+ "src/core/permission-rule-model.ts:407"
1305
+ ],
1306
+ "newSet": true,
1307
+ "added": [
1308
+ "imported-cc",
1309
+ "starter",
1310
+ "user"
1311
+ ],
1312
+ "removed": [],
1313
+ "breaking": false,
1314
+ "criteriaCovered": false
1315
+ },
1316
+ {
1317
+ "set": "RULE_APPROVAL_KINDS",
1318
+ "at": [
1319
+ "src/core/permission-rule-consent.ts:78"
1320
+ ],
1321
+ "newSet": true,
1322
+ "added": [
1323
+ "card",
1324
+ "import",
1325
+ "starter"
1326
+ ],
1327
+ "removed": [],
1328
+ "breaking": false,
1329
+ "criteriaCovered": false
1330
+ },
1331
+ {
1332
+ "set": "RULE_APPROVAL_STATES",
1333
+ "at": [
1334
+ "src/core/permission-rule-consent.ts:84"
1335
+ ],
1336
+ "newSet": true,
1337
+ "added": [
1338
+ "approved",
1339
+ "pending",
1340
+ "redeemed"
1341
+ ],
1342
+ "removed": [],
1343
+ "breaking": false,
1344
+ "criteriaCovered": false
1345
+ },
1346
+ {
1347
+ "set": "RULE_OFFER_BATCH_MEMBER_KINDS",
1348
+ "at": [
1349
+ "src/core/permission-rule-model.ts:2922"
1350
+ ],
1351
+ "newSet": true,
1352
+ "added": [
1353
+ "command",
1354
+ "directoryRead"
1355
+ ],
1356
+ "removed": [],
1357
+ "breaking": false,
1358
+ "criteriaCovered": false
1359
+ },
1360
+ {
1361
+ "set": "RULE_OWNER_KINDS",
1362
+ "at": [
1363
+ "src/core/permission-rule-store.ts:102"
1364
+ ],
1365
+ "newSet": true,
1366
+ "added": [
1367
+ "local-owner",
1368
+ "principal"
1369
+ ],
1370
+ "removed": [],
1371
+ "breaking": false,
1372
+ "criteriaCovered": false
1373
+ },
1374
+ {
1375
+ "set": "ReadDenyRowAnchorWord",
1376
+ "at": [
1377
+ "src/tools/fs/read-deny.ts:1071"
1378
+ ],
1379
+ "newSet": true,
1380
+ "added": [
1381
+ "home",
1382
+ "none",
1383
+ "root"
1384
+ ],
1385
+ "removed": [],
1386
+ "breaking": false,
1387
+ "criteriaCovered": false
1388
+ },
1389
+ {
1390
+ "set": "RuleApprovalState",
1391
+ "at": [
1392
+ "src/core/permission-rule-consent.ts:88",
1393
+ "src/index.ts:1946"
1394
+ ],
1395
+ "newSet": true,
1396
+ "added": [
1397
+ "approved",
1398
+ "pending",
1399
+ "redeemed"
1400
+ ],
1401
+ "removed": [],
1402
+ "breaking": false,
1403
+ "criteriaCovered": false
1404
+ },
1405
+ {
1406
+ "set": "RunnerDeps.crossBoundaryPosture",
1407
+ "at": [
1408
+ "src/core/runner-deps.ts:337"
1409
+ ],
1410
+ "newSet": true,
1411
+ "added": [
1412
+ "multi_tenant",
1413
+ "single_user"
1414
+ ],
1415
+ "removed": [],
1416
+ "breaking": false,
1417
+ "criteriaCovered": false
1418
+ },
1419
+ {
1420
+ "set": "SPAWNER_SURFACE_LEG_KINDS",
1421
+ "at": [
1422
+ "src/core/tool-face.ts:266"
1423
+ ],
1424
+ "newSet": true,
1425
+ "added": [
1426
+ "teammate"
1427
+ ],
1428
+ "removed": [],
1429
+ "breaking": false,
1430
+ "criteriaCovered": false
1431
+ },
1432
+ {
1433
+ "set": "TraceEvent.kind",
1434
+ "at": [
1435
+ "src/core/trace.ts:97",
1436
+ "src/core/trace.ts:130",
1437
+ "src/core/trace.ts:162",
1438
+ "src/core/trace.ts:192",
1439
+ "src/core/trace.ts:233",
1440
+ "src/core/trace.ts:251",
1441
+ "src/core/trace.ts:266",
1442
+ "src/core/trace.ts:301",
1443
+ "src/core/trace.ts:303",
1444
+ "src/core/trace.ts:349",
1445
+ "src/core/trace.ts:378",
1446
+ "src/core/trace.ts:396",
1447
+ "src/core/trace.ts:410",
1448
+ "src/core/trace.ts:427",
1449
+ "src/core/trace.ts:443",
1450
+ "src/core/trace.ts:458",
1451
+ "src/core/trace.ts:475",
1452
+ "src/core/trace.ts:491",
1453
+ "src/core/trace.ts:505",
1454
+ "src/core/trace.ts:523",
1455
+ "src/core/trace.ts:542",
1456
+ "src/core/trace.ts:558",
1457
+ "src/core/trace.ts:580",
1458
+ "src/core/trace.ts:605",
1459
+ "src/core/trace.ts:633",
1460
+ "src/core/trace.ts:647",
1461
+ "src/core/trace.ts:661",
1462
+ "src/core/trace.ts:682",
1463
+ "src/core/trace.ts:693",
1464
+ "src/core/trace.ts:708",
1465
+ "src/core/trace.ts:720",
1466
+ "src/core/trace.ts:734",
1467
+ "src/core/trace.ts:753",
1468
+ "src/core/trace.ts:763",
1469
+ "src/core/trace.ts:771",
1470
+ "src/core/trace.ts:781",
1471
+ "src/core/trace.ts:797",
1472
+ "src/core/trace.ts:814",
1473
+ "src/core/trace.ts:826",
1474
+ "src/core/trace.ts:836",
1475
+ "src/core/trace.ts:858",
1476
+ "src/core/trace.ts:880",
1477
+ "src/core/trace.ts:888",
1478
+ "src/core/trace.ts:908",
1479
+ "src/core/trace.ts:924",
1480
+ "src/core/trace.ts:934",
1481
+ "src/core/trace.ts:947",
1482
+ "src/core/trace.ts:961",
1483
+ "src/core/trace.ts:970",
1484
+ "src/core/trace.ts:981",
1485
+ "src/core/trace.ts:991"
1486
+ ],
1487
+ "newSet": false,
1488
+ "added": [
1489
+ "permission.cross_boundary_taint"
1490
+ ],
1491
+ "removed": [],
1492
+ "breaking": false,
1493
+ "criteriaCovered": false
1494
+ },
1495
+ {
1496
+ "set": "TraceEvent.phase",
1497
+ "at": [
1498
+ "src/core/trace.ts:562",
1499
+ "src/core/trace.ts:652",
1500
+ "src/core/trace.ts:666"
1501
+ ],
1502
+ "newSet": false,
1503
+ "added": [
1504
+ "observed",
1505
+ "prepare",
1506
+ "resume"
1507
+ ],
1508
+ "removed": [],
1509
+ "breaking": false,
1510
+ "criteriaCovered": false
1511
+ },
1512
+ {
1513
+ "set": "UNCOVERED_SEGMENT_REASONS",
1514
+ "at": [
1515
+ "src/core/permission-rule-model.ts:3026"
1516
+ ],
1517
+ "newSet": true,
1518
+ "added": [
1519
+ "cap_overflow",
1520
+ "no_rule_form",
1521
+ "redirection"
1522
+ ],
1523
+ "removed": [],
1524
+ "breaking": false,
1525
+ "criteriaCovered": false
1526
+ },
1527
+ {
1528
+ "set": "UNRESOLVED_REASONS",
1529
+ "at": [
1530
+ "src/shell/lex.ts:41"
1531
+ ],
1532
+ "newSet": false,
1533
+ "added": [
1534
+ "trailing_backslash"
1535
+ ],
1536
+ "removed": [],
1537
+ "breaking": false,
1538
+ "criteriaCovered": false
1539
+ },
1540
+ {
1541
+ "set": "UncoveredSegmentDetail.reason",
1542
+ "at": [
1543
+ "src/core/permission-rule-model.ts:3022"
1544
+ ],
1545
+ "newSet": false,
1546
+ "added": [],
1547
+ "removed": [
1548
+ "cap_overflow",
1549
+ "no_rule_form",
1550
+ "redirection"
1551
+ ],
1552
+ "persistedBy": "none",
1553
+ "breaking": true,
1554
+ "criteriaCovered": false
1555
+ },
1556
+ {
1557
+ "set": "UserMessageAttachment.origin",
1558
+ "at": [
1559
+ "src/engine/llm/types.ts:507"
1560
+ ],
1561
+ "newSet": true,
1562
+ "added": [
1563
+ "compaction_restore"
1564
+ ],
1565
+ "removed": [],
1566
+ "breaking": false,
1567
+ "criteriaCovered": false
1568
+ }
1569
+ ],
1570
+ "closedSetsUnreadable": [],
1571
+ "typeKeys": [
1572
+ {
1573
+ "type": "AskClassification",
1574
+ "at": [
1575
+ "src/core/ask-origin.ts:843"
1576
+ ],
1577
+ "added": [
1578
+ "askFace"
1579
+ ],
1580
+ "addedDetail": [
1581
+ {
1582
+ "key": "askFace",
1583
+ "optional": true
1584
+ }
1585
+ ],
1586
+ "addedRequired": [],
1587
+ "removed": [],
1588
+ "breaking": false,
1589
+ "criteriaCovered": true
1590
+ },
1591
+ {
1592
+ "type": "BackgroundAgentTaskHandle",
1593
+ "at": [
1594
+ "src/core/task-registry-shared.ts:265"
1595
+ ],
1596
+ "via": "TaskRegistry.BackgroundAgentTaskHandle",
1597
+ "added": [
1598
+ "crossBoundaryTree"
1599
+ ],
1600
+ "addedDetail": [
1601
+ {
1602
+ "key": "crossBoundaryTree",
1603
+ "optional": true
1604
+ }
1605
+ ],
1606
+ "addedRequired": [],
1607
+ "removed": [],
1608
+ "breaking": false,
1609
+ "criteriaCovered": false
1610
+ },
1611
+ {
1612
+ "type": "CheckpointState",
1613
+ "at": [
1614
+ "src/core/checkpoint-store.ts:1207"
1615
+ ],
1616
+ "added": [
1617
+ "crossBoundaryRecorded"
1618
+ ],
1619
+ "addedDetail": [
1620
+ {
1621
+ "key": "crossBoundaryRecorded",
1622
+ "optional": true
1623
+ }
1624
+ ],
1625
+ "addedRequired": [],
1626
+ "removed": [],
1627
+ "breaking": false,
1628
+ "criteriaCovered": true
1629
+ },
1630
+ {
1631
+ "type": "EngineAttestation",
1632
+ "at": [
1633
+ "src/core/tool-policy.ts:273"
1634
+ ],
1635
+ "added": [
1636
+ "bindingRefusal"
1637
+ ],
1638
+ "addedDetail": [
1639
+ {
1640
+ "key": "bindingRefusal",
1641
+ "optional": true
1642
+ }
1643
+ ],
1644
+ "addedRequired": [],
1645
+ "removed": [],
1646
+ "breaking": false,
1647
+ "criteriaCovered": true
1648
+ },
1649
+ {
1650
+ "type": "ExecutionEnvFactoryContext",
1651
+ "at": [
1652
+ "src/core/remote-env.ts:498"
1653
+ ],
1654
+ "added": [
1655
+ "resumeWorkspace"
1656
+ ],
1657
+ "addedDetail": [
1658
+ {
1659
+ "key": "resumeWorkspace",
1660
+ "optional": true
1661
+ }
1662
+ ],
1663
+ "addedRequired": [],
1664
+ "removed": [],
1665
+ "breaking": false,
1666
+ "criteriaCovered": true
1667
+ },
1668
+ {
1669
+ "type": "MaybeCompactOptions",
1670
+ "at": [
1671
+ "src/core/auto-compaction.ts:340"
1672
+ ],
1673
+ "added": [
1674
+ "workingFileAttachments.restore",
1675
+ "workingFileAttachments.undelivered"
1676
+ ],
1677
+ "addedDetail": [
1678
+ {
1679
+ "key": "workingFileAttachments.restore",
1680
+ "optional": false
1681
+ },
1682
+ {
1683
+ "key": "workingFileAttachments.undelivered",
1684
+ "optional": true
1685
+ }
1686
+ ],
1687
+ "addedRequired": [
1688
+ "workingFileAttachments.restore"
1689
+ ],
1690
+ "removed": [
1691
+ "workingFileAttachments.readFile"
1692
+ ],
1693
+ "breaking": true,
1694
+ "criteriaCovered": false
1695
+ },
1696
+ {
1697
+ "type": "ParentSpecSeat",
1698
+ "at": [
1699
+ "src/core/parent-spec-seat.ts:81"
1700
+ ],
1701
+ "added": [
1702
+ "memory",
1703
+ "memory.enabled"
1704
+ ],
1705
+ "addedDetail": [
1706
+ {
1707
+ "key": "memory",
1708
+ "optional": true
1709
+ },
1710
+ {
1711
+ "key": "memory.enabled",
1712
+ "optional": false
1713
+ }
1714
+ ],
1715
+ "addedRequired": [],
1716
+ "removed": [
1717
+ "memoryOff"
1718
+ ],
1719
+ "breaking": true,
1720
+ "criteriaCovered": true
1721
+ },
1722
+ {
1723
+ "type": "PendingAction",
1724
+ "at": [
1725
+ "src/core/checkpoint-store.ts:976"
1726
+ ],
1727
+ "added": [
1728
+ "tool_approval.targets"
1729
+ ],
1730
+ "addedDetail": [
1731
+ {
1732
+ "key": "tool_approval.targets",
1733
+ "optional": true
1734
+ }
1735
+ ],
1736
+ "addedRequired": [],
1737
+ "removed": [
1738
+ "tool_approval.rosterDigest"
1739
+ ],
1740
+ "breaking": true,
1741
+ "criteriaCovered": false
1742
+ },
1743
+ {
1744
+ "type": "PermissionResult",
1745
+ "at": [
1746
+ "src/core/tool-policy.ts:515"
1747
+ ],
1748
+ "added": [
1749
+ "ask.crossBoundaryMandated"
1750
+ ],
1751
+ "addedDetail": [
1752
+ {
1753
+ "key": "ask.crossBoundaryMandated",
1754
+ "optional": true
1755
+ }
1756
+ ],
1757
+ "addedRequired": [],
1758
+ "removed": [],
1759
+ "breaking": false,
1760
+ "criteriaCovered": false
1761
+ },
1762
+ {
1763
+ "type": "PreToolUseResult",
1764
+ "at": [
1765
+ "src/core/hooks.ts:678"
1766
+ ],
1767
+ "added": [
1768
+ "ask.crossBoundaryMandated"
1769
+ ],
1770
+ "addedDetail": [
1771
+ {
1772
+ "key": "ask.crossBoundaryMandated",
1773
+ "optional": true
1774
+ }
1775
+ ],
1776
+ "addedRequired": [],
1777
+ "removed": [],
1778
+ "breaking": false,
1779
+ "criteriaCovered": false
1780
+ },
1781
+ {
1782
+ "type": "RegisterBackgroundAgentInput",
1783
+ "at": [
1784
+ "src/core/task-registry-shared.ts:1312"
1785
+ ],
1786
+ "via": "TaskRegistry.RegisterBackgroundAgentInput",
1787
+ "added": [
1788
+ "crossBoundaryTree"
1789
+ ],
1790
+ "addedDetail": [
1791
+ {
1792
+ "key": "crossBoundaryTree",
1793
+ "optional": true
1794
+ }
1795
+ ],
1796
+ "addedRequired": [],
1797
+ "removed": [],
1798
+ "breaking": false,
1799
+ "criteriaCovered": false
1800
+ },
1801
+ {
1802
+ "type": "ResolvedOutcome",
1803
+ "at": [
1804
+ "src/core/checkpoint-store.ts:1821"
1805
+ ],
1806
+ "added": [
1807
+ "feedback"
1808
+ ],
1809
+ "addedDetail": [
1810
+ {
1811
+ "key": "feedback",
1812
+ "optional": true
1813
+ }
1814
+ ],
1815
+ "addedRequired": [],
1816
+ "removed": [],
1817
+ "breaking": false,
1818
+ "criteriaCovered": true
1819
+ },
1820
+ {
1821
+ "type": "ResumeOutcome",
1822
+ "at": [
1823
+ "src/core/checkpoint-store.ts:798"
1824
+ ],
1825
+ "added": [
1826
+ "policy_ask.feedback"
1827
+ ],
1828
+ "addedDetail": [
1829
+ {
1830
+ "key": "policy_ask.feedback",
1831
+ "optional": true
1832
+ }
1833
+ ],
1834
+ "addedRequired": [],
1835
+ "removed": [],
1836
+ "breaking": false,
1837
+ "criteriaCovered": false
1838
+ },
1839
+ {
1840
+ "type": "RunInternals",
1841
+ "at": [
1842
+ "src/core/runner/contracts.ts:1458"
1843
+ ],
1844
+ "added": [
1845
+ "crossBoundaryTree"
1846
+ ],
1847
+ "addedDetail": [
1848
+ {
1849
+ "key": "crossBoundaryTree",
1850
+ "optional": true
1851
+ }
1852
+ ],
1853
+ "addedRequired": [],
1854
+ "removed": [],
1855
+ "breaking": false,
1856
+ "criteriaCovered": false
1857
+ },
1858
+ {
1859
+ "type": "RunWorkflowOptions",
1860
+ "at": [
1861
+ "src/orchestration/workflow.ts:882"
1862
+ ],
1863
+ "added": [
1864
+ "crossBoundaryTree"
1865
+ ],
1866
+ "addedDetail": [
1867
+ {
1868
+ "key": "crossBoundaryTree",
1869
+ "optional": true
1870
+ }
1871
+ ],
1872
+ "addedRequired": [],
1873
+ "removed": [],
1874
+ "breaking": false,
1875
+ "criteriaCovered": false
1876
+ },
1877
+ {
1878
+ "type": "RunWorkflowToolDeps",
1879
+ "at": [
1880
+ "src/orchestration/run-workflow-tool.ts:358"
1881
+ ],
1882
+ "added": [
1883
+ "crossBoundaryTree"
1884
+ ],
1885
+ "addedDetail": [
1886
+ {
1887
+ "key": "crossBoundaryTree",
1888
+ "optional": true
1889
+ }
1890
+ ],
1891
+ "addedRequired": [],
1892
+ "removed": [],
1893
+ "breaking": false,
1894
+ "criteriaCovered": false
1895
+ },
1896
+ {
1897
+ "type": "RunnerDeps",
1898
+ "at": [
1899
+ "src/core/runner-deps.ts:105"
1900
+ ],
1901
+ "added": [
1902
+ "crossBoundaryPosture"
1903
+ ],
1904
+ "addedDetail": [
1905
+ {
1906
+ "key": "crossBoundaryPosture",
1907
+ "optional": true
1908
+ }
1909
+ ],
1910
+ "addedRequired": [],
1911
+ "removed": [],
1912
+ "breaking": false,
1913
+ "criteriaCovered": true
1914
+ },
1915
+ {
1916
+ "type": "TaskRegistry",
1917
+ "at": [
1918
+ "src/core/task-registry.ts:485"
1919
+ ],
1920
+ "added": [
1921
+ "boundaryLegsOf"
1922
+ ],
1923
+ "addedDetail": [
1924
+ {
1925
+ "key": "boundaryLegsOf",
1926
+ "optional": true
1927
+ }
1928
+ ],
1929
+ "addedRequired": [],
1930
+ "removed": [],
1931
+ "breaking": false,
1932
+ "criteriaCovered": false
1933
+ },
1934
+ {
1935
+ "type": "ToolCatalogEntry",
1936
+ "at": [
1937
+ "src/core/tool-face.ts:298"
1938
+ ],
1939
+ "added": [],
1940
+ "addedDetail": [],
1941
+ "addedRequired": [],
1942
+ "removed": [
1943
+ "protocolUnderCeiling"
1944
+ ],
1945
+ "breaking": true,
1946
+ "criteriaCovered": false
1947
+ },
1948
+ {
1949
+ "type": "ToolExecuteContext",
1950
+ "at": [
1951
+ "src/core/tool-spec.ts:654"
1952
+ ],
1953
+ "added": [
1954
+ "crossBoundaryTreeForChildren"
1955
+ ],
1956
+ "addedDetail": [
1957
+ {
1958
+ "key": "crossBoundaryTreeForChildren",
1959
+ "optional": true
1960
+ }
1961
+ ],
1962
+ "addedRequired": [],
1963
+ "removed": [],
1964
+ "breaking": false,
1965
+ "criteriaCovered": false
1966
+ },
1967
+ {
1968
+ "type": "ToolFaceDeclaration",
1969
+ "at": [
1970
+ "src/core/tool-face.ts:225"
1971
+ ],
1972
+ "added": [
1973
+ "boundaryLegs"
1974
+ ],
1975
+ "addedDetail": [
1976
+ {
1977
+ "key": "boundaryLegs",
1978
+ "optional": false
1979
+ }
1980
+ ],
1981
+ "addedRequired": [
1982
+ "boundaryLegs"
1983
+ ],
1984
+ "removed": [],
1985
+ "breaking": true,
1986
+ "criteriaCovered": false
1987
+ },
1988
+ {
1989
+ "type": "ToolGateInput",
1990
+ "at": [
1991
+ "src/core/hooks.ts:886"
1992
+ ],
1993
+ "via": "runToolGate.ToolGateInput",
1994
+ "added": [
1995
+ "crossBoundaryCheck"
1996
+ ],
1997
+ "addedDetail": [
1998
+ {
1999
+ "key": "crossBoundaryCheck",
2000
+ "optional": true
2001
+ }
2002
+ ],
2003
+ "addedRequired": [],
2004
+ "removed": [],
2005
+ "breaking": false,
2006
+ "criteriaCovered": false
2007
+ },
2008
+ {
2009
+ "type": "ToolSpec",
2010
+ "at": [
2011
+ "src/core/tool-spec.ts:131"
2012
+ ],
2013
+ "added": [
2014
+ "boundaryLegs",
2015
+ "boundaryLegsFor"
2016
+ ],
2017
+ "addedDetail": [
2018
+ {
2019
+ "key": "boundaryLegs",
2020
+ "optional": true
2021
+ },
2022
+ {
2023
+ "key": "boundaryLegsFor",
2024
+ "optional": true
2025
+ }
2026
+ ],
2027
+ "addedRequired": [],
2028
+ "removed": [],
2029
+ "breaking": false,
2030
+ "criteriaCovered": false
2031
+ },
2032
+ {
2033
+ "type": "TraceEvent",
2034
+ "at": [
2035
+ "src/core/trace.ts:95"
2036
+ ],
2037
+ "added": [
2038
+ "permission.cross_boundary_taint.governed",
2039
+ "permission.cross_boundary_taint.kind",
2040
+ "permission.cross_boundary_taint.phase",
2041
+ "permission.cross_boundary_taint.runId",
2042
+ "permission.cross_boundary_taint.taint",
2043
+ "permission.cross_boundary_taint.taskId",
2044
+ "permission.cross_boundary_taint.toolCallId",
2045
+ "permission.cross_boundary_taint.toolName",
2046
+ "permission.cross_boundary_taint.ts",
2047
+ "permission.cross_boundary_taint.version"
2048
+ ],
2049
+ "addedDetail": [
2050
+ {
2051
+ "key": "permission.cross_boundary_taint.governed",
2052
+ "optional": false
2053
+ },
2054
+ {
2055
+ "key": "permission.cross_boundary_taint.kind",
2056
+ "optional": false
2057
+ },
2058
+ {
2059
+ "key": "permission.cross_boundary_taint.phase",
2060
+ "optional": false
2061
+ },
2062
+ {
2063
+ "key": "permission.cross_boundary_taint.runId",
2064
+ "optional": false
2065
+ },
2066
+ {
2067
+ "key": "permission.cross_boundary_taint.taint",
2068
+ "optional": false
2069
+ },
2070
+ {
2071
+ "key": "permission.cross_boundary_taint.taskId",
2072
+ "optional": false
2073
+ },
2074
+ {
2075
+ "key": "permission.cross_boundary_taint.toolCallId",
2076
+ "optional": true
2077
+ },
2078
+ {
2079
+ "key": "permission.cross_boundary_taint.toolName",
2080
+ "optional": true
2081
+ },
2082
+ {
2083
+ "key": "permission.cross_boundary_taint.ts",
2084
+ "optional": false
2085
+ },
2086
+ {
2087
+ "key": "permission.cross_boundary_taint.version",
2088
+ "optional": false
2089
+ }
2090
+ ],
2091
+ "addedRequired": [],
2092
+ "removed": [],
2093
+ "breaking": false,
2094
+ "criteriaCovered": false
2095
+ },
2096
+ {
2097
+ "type": "UserMessageAttachment",
2098
+ "at": [
2099
+ "src/engine/llm/types.ts:501"
2100
+ ],
2101
+ "added": [
2102
+ "origin"
2103
+ ],
2104
+ "addedDetail": [
2105
+ {
2106
+ "key": "origin",
2107
+ "optional": true
2108
+ }
2109
+ ],
2110
+ "addedRequired": [],
2111
+ "removed": [],
2112
+ "breaking": false,
2113
+ "criteriaCovered": false
2114
+ },
2115
+ {
2116
+ "type": "WordExpansion",
2117
+ "at": [
2118
+ "src/shell/lex.ts:138"
2119
+ ],
2120
+ "via": "ShellReadSegment.argv.pieces.expansion",
2121
+ "added": [
2122
+ "inner"
2123
+ ],
2124
+ "addedDetail": [
2125
+ {
2126
+ "key": "inner",
2127
+ "optional": true
2128
+ }
2129
+ ],
2130
+ "addedRequired": [],
2131
+ "removed": [],
2132
+ "breaking": false,
2133
+ "criteriaCovered": false
2134
+ }
2135
+ ],
2136
+ "typeKeysUnreadableArms": [
2137
+ {
2138
+ "type": "ImportedSettingsLayer",
2139
+ "at": "src/core/permission-rule-consent.ts:1577",
2140
+ "reasons": [
2141
+ "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"
2142
+ ]
2143
+ },
2144
+ {
2145
+ "type": "PersistedRuleMatch",
2146
+ "at": "src/core/permission-rule-model.ts:360",
2147
+ "reasons": [
2148
+ "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"
2149
+ ]
2150
+ },
2151
+ {
2152
+ "type": "RuleAddOrigin",
2153
+ "at": "src/core/permission-rule-model.ts:411",
2154
+ "reasons": [
2155
+ "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"
2156
+ ]
2157
+ },
2158
+ {
2159
+ "type": "RuleApprovalKind",
2160
+ "at": "src/core/permission-rule-consent.ts:81",
2161
+ "reasons": [
2162
+ "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"
2163
+ ]
2164
+ }
2165
+ ],
2166
+ "typeKeysFlattenedCount": 232,
2167
+ "signatures": [
2168
+ {
2169
+ "name": "MaybeCompactOptions.onApplied",
2170
+ "at": [
2171
+ "src/core/auto-compaction.ts:578"
2172
+ ],
2173
+ "from": [
2174
+ "(attachedComplete: ReadonlyArray<{ path: string; content: string; }>, preserveReadState?: ReadonlyArray<string>): void"
2175
+ ],
2176
+ "to": [
2177
+ "(preserveReadState: ReadonlyArray<string>): void"
2178
+ ],
2179
+ "changes": [
2180
+ {
2181
+ "aspect": "param",
2182
+ "detail": "param 1 `preserveReadState` type changed, direction not read: ReadonlyArray<[{ path: string; content: string; } -> string]>",
2183
+ "breaking": true,
2184
+ "uncertain": true
2185
+ },
2186
+ {
2187
+ "aspect": "param",
2188
+ "detail": "-param `preserveReadState?: ReadonlyArray<string>`",
2189
+ "breaking": true
2190
+ }
2191
+ ],
2192
+ "uncertain": "param 1 `preserveReadState` type changed, direction not read: ReadonlyArray<[{ path: string; content: string; } -> string]> — 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",
2193
+ "breaking": true,
2194
+ "criteriaCovered": false
2195
+ },
2196
+ {
2197
+ "name": "createAllowDenyPolicy",
2198
+ "at": [
2199
+ "src/core/tool-policy.ts:1422"
2200
+ ],
2201
+ "from": [
2202
+ "(opts: { allow?: string[]; deny?: string[]; onInvalidName?: \"throw\" | \"skip\"; onInvalidNameIssue?: (issue: { entry: string; list: \"allow\" | \"deny\"; message: string; }) => void; scope?: \"grant\" | \"narrowing\"; }): NamedToolPolicy"
2203
+ ],
2204
+ "to": [
2205
+ "(opts: { allow?: string[]; deny?: string[]; onInvalidName?: \"throw\" | \"skip\"; onInvalidNameIssue?: (issue: { entry: string; list: \"allow\" | \"deny\"; message: string; }) => void; }): NamedToolPolicy"
2206
+ ],
2207
+ "changes": [
2208
+ {
2209
+ "aspect": "param",
2210
+ "detail": "param 1 `opts` type changed, direction not read: …ge: string; }) => void; [scope?: \"grant\" | \"narrowing\"; -> ]}",
2211
+ "breaking": true,
2212
+ "uncertain": true
2213
+ }
2214
+ ],
2215
+ "uncertain": "param 1 `opts` type changed, direction not read: …ge: string; }) => void; [scope?: \"grant\" | \"narrowing\"; -> ]} — 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",
2216
+ "breaking": true,
2217
+ "criteriaCovered": false
2218
+ },
2219
+ {
2220
+ "name": "parkedToolIdentity",
2221
+ "at": [
2222
+ "src/core/tool-roster.ts:269"
2223
+ ],
2224
+ "from": [
2225
+ "(roster: ToolRoster | undefined, toolName: string): { capabilityId?: string; contractId?: string; shapeDigest?: string; implementationRevision?: string; rosterDigest?: string; }"
2226
+ ],
2227
+ "to": [
2228
+ "(roster: ToolRoster | undefined, toolName: string): Partial<ToolIdentity>"
2229
+ ],
2230
+ "changes": [
2231
+ {
2232
+ "aspect": "returns",
2233
+ "detail": "return type [{ capabilityId?: string; contractId?: string; shapeDigest?: string; i… -> Partial<ToolIdentity>]",
2234
+ "breaking": true
2235
+ }
2236
+ ],
2237
+ "breaking": true,
2238
+ "criteriaCovered": false
2239
+ },
2240
+ {
2241
+ "name": "toolFaceProblem",
2242
+ "at": [
2243
+ "src/core/runner/tool-face-overlay.ts:61"
2244
+ ],
2245
+ "from": [
2246
+ "(face: McpToolFace, schema: AgentTool[\"parameters\"], tool?: { readonly toolName: string; }): string | undefined"
2247
+ ],
2248
+ "to": [
2249
+ "(face: McpToolFace, schema: AgentTool[\"parameters\"], tool?: FaceTool): string | undefined"
2250
+ ],
2251
+ "changes": [
2252
+ {
2253
+ "aspect": "param",
2254
+ "detail": "param 3 `tool` type changed, direction not read: [{ readonly toolName: string; } -> FaceTool]",
2255
+ "breaking": true,
2256
+ "uncertain": true
2257
+ }
2258
+ ],
2259
+ "uncertain": "param 3 `tool` type changed, direction not read: [{ readonly toolName: string; } -> FaceTool] — 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",
2260
+ "breaking": true,
2261
+ "criteriaCovered": false
2262
+ }
2263
+ ],
2264
+ "declarationMoves": [
2265
+ {
2266
+ "name": "DECLARATION_PATH_RULES",
2267
+ "kind": "variable",
2268
+ "onSurface": true,
2269
+ "from": [
2270
+ "src/core/mcp-server-spec.ts",
2271
+ "src/core/types.ts"
2272
+ ],
2273
+ "to": [
2274
+ "src/core/mcp-server-spec.ts",
2275
+ "src/core/types.ts",
2276
+ "src/index.ts"
2277
+ ]
2278
+ },
2279
+ {
2280
+ "name": "DeclarationFault",
2281
+ "kind": "interface",
2282
+ "onSurface": true,
2283
+ "from": [
2284
+ "src/core/mcp-server-spec.ts",
2285
+ "src/core/types.ts"
2286
+ ],
2287
+ "to": [
2288
+ "src/core/mcp-server-spec.ts",
2289
+ "src/core/types.ts",
2290
+ "src/index.ts"
2291
+ ]
2292
+ },
2293
+ {
2294
+ "name": "DeclarationPathRule",
2295
+ "kind": "interface",
2296
+ "onSurface": true,
2297
+ "from": [
2298
+ "src/core/mcp-server-spec.ts",
2299
+ "src/core/types.ts"
2300
+ ],
2301
+ "to": [
2302
+ "src/core/mcp-server-spec.ts",
2303
+ "src/core/types.ts",
2304
+ "src/index.ts"
2305
+ ]
2306
+ },
2307
+ {
2308
+ "name": "DeclarationRead",
2309
+ "kind": "type",
2310
+ "onSurface": true,
2311
+ "from": [
2312
+ "src/core/mcp-server-spec.ts",
2313
+ "src/core/types.ts"
2314
+ ],
2315
+ "to": [
2316
+ "src/core/mcp-server-spec.ts",
2317
+ "src/core/types.ts",
2318
+ "src/index.ts"
2319
+ ]
2320
+ },
2321
+ {
2322
+ "name": "MAX_SHELL_READ_CHARS",
2323
+ "kind": "variable",
2324
+ "onSurface": true,
2325
+ "from": [
2326
+ "src/core/shell-lexer.ts",
2327
+ "src/index.ts"
2328
+ ],
2329
+ "to": [
2330
+ "src/core/shell-run-candidates.ts",
2331
+ "src/index.ts"
2332
+ ]
2333
+ },
2334
+ {
2335
+ "name": "MintedAttachmentFrame",
2336
+ "kind": "interface",
2337
+ "onSurface": true,
2338
+ "from": [
2339
+ "src/core/user-attachment.ts"
2340
+ ],
2341
+ "to": [
2342
+ "src/core/user-attachment.ts",
2343
+ "src/index.ts"
2344
+ ]
2345
+ },
2346
+ {
2347
+ "name": "SHELL_WRAPPER_TABLE",
2348
+ "kind": "variable",
2349
+ "onSurface": true,
2350
+ "from": [
2351
+ "src/core/shell-lexer.ts",
2352
+ "src/core/shell-wrapper-table.ts",
2353
+ "src/index.ts"
2354
+ ],
2355
+ "to": [
2356
+ "src/core/shell-run-candidates.ts",
2357
+ "src/core/shell-wrapper-table.ts",
2358
+ "src/index.ts"
2359
+ ]
2360
+ },
2361
+ {
2362
+ "name": "ShellCommandShape",
2363
+ "kind": "interface",
2364
+ "onSurface": true,
2365
+ "from": [
2366
+ "src/core/shell-lexer.ts",
2367
+ "src/index.ts"
2368
+ ],
2369
+ "to": [
2370
+ "src/core/shell-run-candidates.ts",
2371
+ "src/index.ts"
2372
+ ]
2373
+ },
2374
+ {
2375
+ "name": "ShellRedirection",
2376
+ "kind": "interface",
2377
+ "onSurface": true,
2378
+ "from": [
2379
+ "src/core/shell-lexer.ts",
2380
+ "src/index.ts"
2381
+ ],
2382
+ "to": [
2383
+ "src/core/shell-run-candidates.ts",
2384
+ "src/index.ts"
2385
+ ]
2386
+ },
2387
+ {
2388
+ "name": "ShellSegment",
2389
+ "kind": "interface",
2390
+ "onSurface": true,
2391
+ "from": [
2392
+ "src/core/shell-lexer.ts",
2393
+ "src/index.ts"
2394
+ ],
2395
+ "to": [
2396
+ "src/core/shell-run-candidates.ts",
2397
+ "src/index.ts"
2398
+ ]
2399
+ },
2400
+ {
2401
+ "name": "ShellWord",
2402
+ "kind": "interface",
2403
+ "onSurface": true,
2404
+ "from": [
2405
+ "src/core/shell-lexer.ts",
2406
+ "src/index.ts"
2407
+ ],
2408
+ "to": [
2409
+ "src/core/shell-run-candidates.ts",
2410
+ "src/index.ts"
2411
+ ]
2412
+ },
2413
+ {
2414
+ "name": "ShellWrapperName",
2415
+ "kind": "type",
2416
+ "onSurface": true,
2417
+ "from": [
2418
+ "src/core/shell-lexer.ts",
2419
+ "src/core/shell-wrapper-table.ts",
2420
+ "src/index.ts"
2421
+ ],
2422
+ "to": [
2423
+ "src/core/shell-run-candidates.ts",
2424
+ "src/core/shell-wrapper-table.ts",
2425
+ "src/index.ts"
2426
+ ]
2427
+ },
2428
+ {
2429
+ "name": "assertForkTarget",
2430
+ "kind": "function",
2431
+ "onSurface": true,
2432
+ "from": [
2433
+ "src/engine/session/repo-utils.ts",
2434
+ "src/internal/harness.ts"
2435
+ ],
2436
+ "to": [
2437
+ "src/engine/session/repo-utils.ts",
2438
+ "src/index.ts",
2439
+ "src/internal/harness.ts"
2440
+ ]
2441
+ },
2442
+ {
2443
+ "name": "canonicalJsonStringify",
2444
+ "kind": "function",
2445
+ "onSurface": true,
2446
+ "from": [
2447
+ "src/core/memory-engine/file-backend.ts"
2448
+ ],
2449
+ "to": [
2450
+ "src/core/canonical-json.ts",
2451
+ "src/index.ts"
2452
+ ]
2453
+ },
2454
+ {
2455
+ "name": "findToolByName",
2456
+ "kind": null,
2457
+ "onSurface": false,
2458
+ "from": [
2459
+ "src/engine/llm/validation.ts"
2460
+ ],
2461
+ "to": [
2462
+ "src/engine/llm/validation.ts",
2463
+ "src/internal/llm.ts"
2464
+ ]
2465
+ },
2466
+ {
2467
+ "name": "forkRowCells",
2468
+ "kind": "function",
2469
+ "onSurface": true,
2470
+ "from": [
2471
+ "src/engine/session/repo-utils.ts",
2472
+ "src/internal/harness.ts"
2473
+ ],
2474
+ "to": [
2475
+ "src/engine/session/repo-utils.ts",
2476
+ "src/index.ts",
2477
+ "src/internal/harness.ts"
2478
+ ]
2479
+ },
2480
+ {
2481
+ "name": "incarnationCell",
2482
+ "kind": "function",
2483
+ "onSurface": true,
2484
+ "from": [
2485
+ "src/engine/session/repo-utils.ts",
2486
+ "src/internal/harness.ts"
2487
+ ],
2488
+ "to": [
2489
+ "src/engine/session/repo-utils.ts",
2490
+ "src/index.ts",
2491
+ "src/internal/harness.ts"
2492
+ ]
2493
+ },
2494
+ {
2495
+ "name": "isFullyReadable",
2496
+ "kind": "function",
2497
+ "onSurface": true,
2498
+ "from": [
2499
+ "src/core/shell-lexer.ts",
2500
+ "src/index.ts"
2501
+ ],
2502
+ "to": [
2503
+ "src/core/shell-run-candidates.ts",
2504
+ "src/index.ts"
2505
+ ]
2506
+ },
2507
+ {
2508
+ "name": "mcpStartupTimeoutMs",
2509
+ "kind": "function",
2510
+ "onSurface": true,
2511
+ "from": [
2512
+ "src/core/mcp.ts"
2513
+ ],
2514
+ "to": [
2515
+ "src/core/mcp.ts",
2516
+ "src/index.ts"
2517
+ ]
2518
+ },
2519
+ {
2520
+ "name": "readShellCommand",
2521
+ "kind": "function",
2522
+ "onSurface": true,
2523
+ "from": [
2524
+ "src/core/shell-lexer.ts",
2525
+ "src/index.ts"
2526
+ ],
2527
+ "to": [
2528
+ "src/core/shell-run-candidates.ts",
2529
+ "src/index.ts"
2530
+ ]
2531
+ },
2532
+ {
2533
+ "name": "receiveDeclaration",
2534
+ "kind": "function",
2535
+ "onSurface": true,
2536
+ "from": [
2537
+ "src/core/mcp-server-spec.ts",
2538
+ "src/core/types.ts"
2539
+ ],
2540
+ "to": [
2541
+ "src/core/mcp-server-spec.ts",
2542
+ "src/core/types.ts",
2543
+ "src/index.ts"
2544
+ ]
2545
+ },
2546
+ {
2547
+ "name": "sameOrgPolicyContent",
2548
+ "kind": "function",
2549
+ "onSurface": true,
2550
+ "from": [
2551
+ "src/core/permission-rule-org.ts"
2552
+ ],
2553
+ "to": [
2554
+ "src/core/permission-rule-org.ts",
2555
+ "src/index.ts"
2556
+ ]
2557
+ }
2558
+ ],
2559
+ "mintMoves": [
2560
+ {
2561
+ "code": "resume.tool_unavailable",
2562
+ "from": [
2563
+ "src/agents/subagent.ts"
2564
+ ],
2565
+ "to": [
2566
+ "src/agents/subagent.ts",
2567
+ "src/core/approval-object.ts"
2568
+ ]
2569
+ }
2570
+ ],
2571
+ "criteriaObserves": [
2572
+ {
2573
+ "kind": "engineNoticeCode",
2574
+ "name": "classifier.denial_limit",
2575
+ "assertions": [
2576
+ "G5.a"
2577
+ ]
2578
+ },
2579
+ {
2580
+ "kind": "engineNoticeCode",
2581
+ "name": "config.cross_boundary_record_unwritten",
2582
+ "assertions": [
2583
+ "G12.a"
2584
+ ]
2585
+ },
2586
+ {
2587
+ "kind": "engineNoticeCode",
2588
+ "name": "config.tool_face_invalid",
2589
+ "assertions": [
2590
+ "G8.a"
2591
+ ]
2592
+ },
2593
+ {
2594
+ "kind": "engineNoticeCode",
2595
+ "name": "delegation.ask_unresolvable",
2596
+ "assertions": [
2597
+ "G5.a"
2598
+ ]
2599
+ },
2600
+ {
2601
+ "kind": "taskEventField",
2602
+ "name": "tool_end.errorCode",
2603
+ "assertions": [
2604
+ "G4.a",
2605
+ "G9.a"
2606
+ ]
2607
+ },
2608
+ {
2609
+ "kind": "taskEventField",
2610
+ "name": "tool_end.gate",
2611
+ "assertions": [
2612
+ "G4.a"
2613
+ ]
2614
+ },
2615
+ {
2616
+ "kind": "taskEventField",
2617
+ "name": "tool_end.isError",
2618
+ "assertions": [
2619
+ "G4.a",
2620
+ "G5.a",
2621
+ "G6.a",
2622
+ "G9.a",
2623
+ "G12.a"
2624
+ ]
2625
+ },
2626
+ {
2627
+ "kind": "typeMember",
2628
+ "name": "AskClassification.askFace",
2629
+ "assertions": [
2630
+ "G2.a"
2631
+ ]
2632
+ },
2633
+ {
2634
+ "kind": "typeMember",
2635
+ "name": "AskClassification.classes",
2636
+ "assertions": [
2637
+ "G2.a"
2638
+ ]
2639
+ },
2640
+ {
2641
+ "kind": "typeMember",
2642
+ "name": "AskRequest.requiresRealApproval",
2643
+ "assertions": [
2644
+ "G3.a"
2645
+ ]
2646
+ },
2647
+ {
2648
+ "kind": "typeMember",
2649
+ "name": "CheckpointError.detail",
2650
+ "assertions": [
2651
+ "G1.a",
2652
+ "G8.a"
2653
+ ]
2654
+ },
2655
+ {
2656
+ "kind": "typeMember",
2657
+ "name": "CheckpointState.crossBoundaryRecorded",
2658
+ "assertions": [
2659
+ "G12.a"
2660
+ ]
2661
+ },
2662
+ {
2663
+ "kind": "typeMember",
2664
+ "name": "EngineAttestation.bindingRefusal",
2665
+ "assertions": [
2666
+ "G5.a"
2667
+ ]
2668
+ },
2669
+ {
2670
+ "kind": "typeMember",
2671
+ "name": "EngineAttestation.inputDigest",
2672
+ "assertions": [
2673
+ "G5.a"
2674
+ ]
2675
+ },
2676
+ {
2677
+ "kind": "typeMember",
2678
+ "name": "ExecutionEnvFactoryContext.resumeWorkspace",
2679
+ "assertions": [
2680
+ "G10.a"
2681
+ ]
2682
+ },
2683
+ {
2684
+ "kind": "typeMember",
2685
+ "name": "FileError.code",
2686
+ "assertions": [
2687
+ "G10.a"
2688
+ ]
2689
+ },
2690
+ {
2691
+ "kind": "typeMember",
2692
+ "name": "GateOutcome.disposition",
2693
+ "assertions": [
2694
+ "G2.a",
2695
+ "G3.a",
2696
+ "G5.a",
2697
+ "G6.a"
2698
+ ]
2699
+ },
2700
+ {
2701
+ "kind": "typeMember",
2702
+ "name": "ModEventRow.side",
2703
+ "assertions": [
2704
+ "G11.a"
2705
+ ]
2706
+ },
2707
+ {
2708
+ "kind": "typeMember",
2709
+ "name": "ParentSpecSeat.memory",
2710
+ "assertions": [
2711
+ "G7.a"
2712
+ ]
2713
+ },
2714
+ {
2715
+ "kind": "typeMember",
2716
+ "name": "PendingAction.targets",
2717
+ "assertions": [
2718
+ "G4.a"
2719
+ ]
2720
+ },
2721
+ {
2722
+ "kind": "typeMember",
2723
+ "name": "ResolvedOutcome.feedback",
2724
+ "assertions": [
2725
+ "G1.a"
2726
+ ]
2727
+ },
2728
+ {
2729
+ "kind": "typeMember",
2730
+ "name": "ResumeOutcome.feedback",
2731
+ "assertions": [
2732
+ "G1.a"
2733
+ ]
2734
+ },
2735
+ {
2736
+ "kind": "typeMember",
2737
+ "name": "RunnerDeps.crossBoundaryPosture",
2738
+ "assertions": [
2739
+ "G12.a"
2740
+ ]
2741
+ },
2742
+ {
2743
+ "kind": "typeMember",
2744
+ "name": "TaskResult.terminal.code",
2745
+ "assertions": [
2746
+ "G8.a"
2747
+ ]
2748
+ },
2749
+ {
2750
+ "kind": "typeMember",
2751
+ "name": "VmLifecycleOptions.priorHandle",
2752
+ "assertions": [
2753
+ "G10.a"
2754
+ ]
2755
+ }
2756
+ ],
2757
+ "consumersHint": {
2758
+ "cli": [
2759
+ "ASK_CLASSES",
2760
+ "CHECKPOINT_CONFIG_REFUSAL_CODES",
2761
+ "CheckpointState",
2762
+ "ENGINE_NOTICE_CODES",
2763
+ "EngineAttestation",
2764
+ "IMPORTED_SETTINGS_LAYERS",
2765
+ "LexedRedirect",
2766
+ "MaybeCompactOptions",
2767
+ "PARSE_FAILURE_REASONS",
2768
+ "PERSISTED_RULE_MANDATES",
2769
+ "ParentSpecSeat",
2770
+ "PendingAction",
2771
+ "PermissionResult",
2772
+ "PreToolUseResult",
2773
+ "REQUIREMENT_WORDS",
2774
+ "RULE_OFFER_BATCH_MEMBER_KINDS",
2775
+ "RegisterBackgroundAgentInput",
2776
+ "ResumeOutcome",
2777
+ "RunInternals",
2778
+ "RunWorkflowOptions",
2779
+ "RunWorkflowToolDeps",
2780
+ "RunnerDeps",
2781
+ "TaskRegistry",
2782
+ "ToolCatalogEntry",
2783
+ "ToolExecuteContext",
2784
+ "ToolFaceDeclaration",
2785
+ "ToolGateInput",
2786
+ "ToolSpec",
2787
+ "TraceEvent",
2788
+ "UNCOVERED_SEGMENT_REASONS",
2789
+ "UNRESOLVED_REASONS",
2790
+ "WordExpansion",
2791
+ "createAllowDenyPolicy",
2792
+ "readDenyRowAnchor"
2793
+ ],
2794
+ "server": [
2795
+ "ASK_CLASSES",
2796
+ "BackgroundAgentTaskHandle",
2797
+ "CHECKPOINT_CONFIG_REFUSAL_CODES",
2798
+ "CheckpointState",
2799
+ "DECLARATION_PATH_RULES",
2800
+ "EDITED_RULE_BREADTH_WARNING_CODES",
2801
+ "ENGINE_NOTICE_CODES",
2802
+ "EditedRuleBreadthWarning",
2803
+ "ExecutionEnvFactoryContext",
2804
+ "FileErrorCode",
2805
+ "FileHistoryError",
2806
+ "PERSISTED_RULE_MANDATES",
2807
+ "PERSISTED_RULE_MATCHES",
2808
+ "ParentSpecSeat",
2809
+ "PendingAction",
2810
+ "PermissionResult",
2811
+ "PreToolUseResult",
2812
+ "RULE_APPROVAL_RECORD_SCHEMA",
2813
+ "RULE_OFFER_BATCH_MEMBER_KINDS",
2814
+ "ResolvedOutcome",
2815
+ "ResumeOutcome",
2816
+ "RunInternals",
2817
+ "RunWorkflowOptions",
2818
+ "RunWorkflowToolDeps",
2819
+ "RunnerDeps",
2820
+ "TaskRegistry",
2821
+ "ToolExecuteContext",
2822
+ "ToolFaceDeclaration",
2823
+ "ToolGateInput",
2824
+ "ToolSpec",
2825
+ "TraceEvent",
2826
+ "UNCOVERED_SEGMENT_REASONS",
2827
+ "UncoveredSegmentDetail",
2828
+ "WordExpansion",
2829
+ "canonicalJsonStringify",
2830
+ "createAllowDenyPolicy",
2831
+ "mcpStartupTimeoutMs",
2832
+ "receiveDeclaration",
2833
+ "toolFaceProblem"
2834
+ ],
2835
+ "sdk": [
2836
+ "ASK_CLASSES",
2837
+ "CHECKPOINT_CONFIG_REFUSAL_CODES",
2838
+ "ENGINE_NOTICE_CODES",
2839
+ "FileErrorCode",
2840
+ "PERSISTED_RULE_MANDATES",
2841
+ "PERSISTED_RULE_MATCHES",
2842
+ "PendingAction",
2843
+ "PermissionResult",
2844
+ "PreToolUseResult",
2845
+ "RULE_OFFER_BATCH_MEMBER_KINDS",
2846
+ "RunnerDeps",
2847
+ "TaskRegistry",
2848
+ "TraceEvent",
2849
+ "UNCOVERED_SEGMENT_REASONS"
2850
+ ],
2851
+ "note": "scanned cli@2b577d42 server@5df75153 sdk@accb19e — 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 (AskClassification, EngineAttestation, MaybeCompactOptions, REQUIREMENT_WORDS, RegisterBackgroundAgentInput, ToolCatalogEntry, UserMessageAttachment, judgeParkedToolIdentity, parkedToolIdentity, readDenyRowAnchor)"
2852
+ },
2853
+ "breakingCount": 14,
2854
+ "breakingItems": [
2855
+ "closed set lost members: EditedRuleBreadthWarning.code -broad_prefix,compound_prefix",
2856
+ "closed set lost members: FileHistoryError.code -aborted,adopt_failed,conflict,not_found,restore_failed,snapshot_failed,track_failed,unsupported_format",
2857
+ "closed set lost members: UncoveredSegmentDetail.reason -cap_overflow,no_rule_form,redirection",
2858
+ "export removed: judgeParkedToolIdentity (function)",
2859
+ "signature changed: MaybeCompactOptions.onApplied — param 1 `preserveReadState` type changed, direction not read: ReadonlyArray<[{ path: string; content: string; } -> string]>; -param `preserveReadState?: ReadonlyArray<string>`",
2860
+ "signature changed: createAllowDenyPolicy — param 1 `opts` type changed, direction not read: …ge: string; }) => void; [scope?: \"grant\" | \"narrowing\"; -> ]}",
2861
+ "signature changed: parkedToolIdentity — return type [{ capabilityId?: string; contractId?: string; shapeDigest?: string; i… -> Partial<ToolIdentity>]",
2862
+ "signature changed: toolFaceProblem — param 3 `tool` type changed, direction not read: [{ readonly toolName: string; } -> FaceTool]",
2863
+ "type gained required keys: MaybeCompactOptions +workingFileAttachments.restore",
2864
+ "type gained required keys: ToolFaceDeclaration +boundaryLegs",
2865
+ "type lost keys: MaybeCompactOptions -workingFileAttachments.readFile",
2866
+ "type lost keys: ParentSpecSeat -memoryOff",
2867
+ "type lost keys: PendingAction -tool_approval.rosterDigest",
2868
+ "type lost keys: ToolCatalogEntry -protocolUnderCeiling"
2869
+ ]
2870
+ }