@sema-agent/server 7.141.0 → 7.143.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 (341) hide show
  1. package/MIGRATION.md +657 -0
  2. package/USAGE.md +102 -30
  3. package/dist/adoption/plan.js +22 -0
  4. package/dist/approval-ask-audit-store.d.ts +61 -43
  5. package/dist/approval-ask-audit-store.js +69 -44
  6. package/dist/approval-ask-machine.d.ts +15 -7
  7. package/dist/approval-ask-machine.js +10 -4
  8. package/dist/approval-card.d.ts +126 -27
  9. package/dist/approval-card.js +103 -23
  10. package/dist/approval-crash-convergence.d.ts +17 -7
  11. package/dist/approval-crash-convergence.js +94 -22
  12. package/dist/approval-deny-reasons.d.ts +34 -30
  13. package/dist/approval-deny-reasons.js +21 -6
  14. package/dist/approval-policy-settlement.d.ts +1 -1
  15. package/dist/approval-queue-kind.d.ts +27 -0
  16. package/dist/approval-queue-kind.js +6 -0
  17. package/dist/approval-reconciler.d.ts +41 -9
  18. package/dist/approval-reconciler.js +45 -42
  19. package/dist/audit.js +4 -2
  20. package/dist/auth-bridge.d.ts +9 -6
  21. package/dist/auth-bridge.js +9 -3
  22. package/dist/boot/adoption.js +2 -1
  23. package/dist/boot/budget-tracing.d.ts +17 -1
  24. package/dist/boot/budget-tracing.js +10 -6
  25. package/dist/boot/device-lane.d.ts +1 -1
  26. package/dist/boot/execution-env.d.ts +24 -4
  27. package/dist/boot/execution-env.js +26 -23
  28. package/dist/boot/execution-lane.js +2 -1
  29. package/dist/boot/exit-boundary.js +5 -4
  30. package/dist/boot/governance-seams.d.ts +26 -41
  31. package/dist/boot/governance-seams.js +61 -28
  32. package/dist/boot/late-binds.d.ts +7 -4
  33. package/dist/boot/late-binds.js +3 -1
  34. package/dist/boot/leader.js +2 -4
  35. package/dist/boot/memory-consolidation.d.ts +0 -8
  36. package/dist/boot/memory-consolidation.js +5 -4
  37. package/dist/boot/parked-revive-gate.js +2 -1
  38. package/dist/boot/permission-rules-audit.d.ts +0 -28
  39. package/dist/boot/permission-rules-audit.js +2 -1
  40. package/dist/boot/read-deny-anchor-audit.js +2 -1
  41. package/dist/boot/reapers.js +9 -7
  42. package/dist/boot/resolve-spec.d.ts +1 -1
  43. package/dist/boot/resolve-spec.js +19 -10
  44. package/dist/boot/retention-lane.js +5 -3
  45. package/dist/boot/runner-deps.d.ts +10 -7
  46. package/dist/boot/runner-deps.js +20 -29
  47. package/dist/boot/runtime-caps.js +3 -2
  48. package/dist/boot/session-faces.js +4 -3
  49. package/dist/boot/shutdown.d.ts +9 -0
  50. package/dist/boot/shutdown.js +19 -4
  51. package/dist/boot/stage-02-web-admin-pull.js +3 -0
  52. package/dist/boot/stage-03-store-backend.d.ts +4 -1
  53. package/dist/boot/stage-03-store-backend.js +1 -2
  54. package/dist/boot/stage-04-stores.d.ts +5 -2
  55. package/dist/boot/stage-04-stores.js +6 -7
  56. package/dist/boot/stage-05-execution-env.d.ts +6 -3
  57. package/dist/boot/stage-05-execution-env.js +8 -6
  58. package/dist/boot/stage-06-runners.d.ts +6 -3
  59. package/dist/boot/stage-06-runners.js +3 -4
  60. package/dist/boot/stage-07-capability-layer.d.ts +6 -3
  61. package/dist/boot/stage-07-capability-layer.js +7 -2
  62. package/dist/boot/stage-08-reapers.d.ts +6 -3
  63. package/dist/boot/stage-08-reapers.js +3 -2
  64. package/dist/boot/stage-09-leader.d.ts +6 -3
  65. package/dist/boot/stage-10-http-server.d.ts +6 -3
  66. package/dist/boot/stage-10-http-server.js +14 -5
  67. package/dist/boot/stores.d.ts +5 -2
  68. package/dist/boot/stores.js +10 -9
  69. package/dist/boot/web-admin.d.ts +5 -1
  70. package/dist/boot/web-admin.js +48 -36
  71. package/dist/boot/webfetch-summarize-lane.js +2 -1
  72. package/dist/boot/workflow-orchestration.js +3 -2
  73. package/dist/capabilities/builtin-tools.d.ts +2 -1
  74. package/dist/capabilities/builtin-tools.js +2 -4
  75. package/dist/capabilities/composite-members.d.ts +2 -1
  76. package/dist/capabilities/composite-members.js +2 -1
  77. package/dist/capabilities/hands-lane.d.ts +9 -39
  78. package/dist/capabilities/hands-lane.js +8 -13
  79. package/dist/capabilities/mcp-probe.d.ts +3 -2
  80. package/dist/capabilities/scenarios.d.ts +11 -1
  81. package/dist/capabilities/scenarios.js +1 -0
  82. package/dist/capabilities/skills.d.ts +1 -17
  83. package/dist/capabilities/skills.js +0 -8
  84. package/dist/capability-facts.d.ts +31 -7
  85. package/dist/capability-facts.js +27 -4
  86. package/dist/card-void.d.ts +6 -9
  87. package/dist/config-catalog.js +2 -1
  88. package/dist/config-dir-trust.js +58 -29
  89. package/dist/config-invariants.d.ts +7 -1
  90. package/dist/config-invariants.js +7 -0
  91. package/dist/config-provider.d.ts +10 -0
  92. package/dist/config-provider.js +15 -4
  93. package/dist/config-root-migration.d.ts +13 -0
  94. package/dist/config-root-migration.js +99 -0
  95. package/dist/config-types.d.ts +19 -8
  96. package/dist/config.d.ts +10 -3
  97. package/dist/config.js +18 -4
  98. package/dist/delegated-session-owner.d.ts +5 -3
  99. package/dist/delegated-session-owner.js +1 -1
  100. package/dist/device-ws-protocol.d.ts +1 -0
  101. package/dist/device-ws-protocol.js +2 -1
  102. package/dist/env-model-table-gate.d.ts +53 -0
  103. package/dist/env-model-table-gate.js +53 -0
  104. package/dist/execution-lane-caps.d.ts +2 -1
  105. package/dist/fleet/fleet-bus.d.ts +34 -55
  106. package/dist/fleet/fleet-bus.js +35 -100
  107. package/dist/fleet/fleet-reconciler.d.ts +4 -4
  108. package/dist/fleet/fleet-reconciler.js +1 -1
  109. package/dist/fleet/subagent-tail-bus.d.ts +14 -11
  110. package/dist/fleet/subagent-tail-bus.js +15 -28
  111. package/dist/hooks/hook-runner.d.ts +6 -0
  112. package/dist/hooks/hook-runner.js +58 -8
  113. package/dist/host-decision.d.ts +54 -20
  114. package/dist/host-decision.js +42 -14
  115. package/dist/http/admission.d.ts +1 -1
  116. package/dist/http/admission.js +7 -3
  117. package/dist/http/approval-sweeps.js +11 -8
  118. package/dist/http/caller-trust.d.ts +1 -1
  119. package/dist/http/dispatch.js +4 -2
  120. package/dist/http/durable-run-leg.js +2 -2
  121. package/dist/http/engine-refusal.d.ts +16 -0
  122. package/dist/http/engine-refusal.js +17 -0
  123. package/dist/http/execution-context.d.ts +2 -2
  124. package/dist/http/idempotency.d.ts +1 -1
  125. package/dist/http/memory-compliance-failure-reply.d.ts +1 -3
  126. package/dist/http/memory-compliance-failure-reply.js +4 -6
  127. package/dist/http/owner-access.d.ts +11 -0
  128. package/dist/http/owner-access.js +13 -0
  129. package/dist/http/principal-gate.d.ts +3 -1
  130. package/dist/http/principal-gate.js +17 -8
  131. package/dist/http/resume-legs.d.ts +21 -7
  132. package/dist/http/resume-legs.js +76 -58
  133. package/dist/http/resume-restatement.d.ts +39 -0
  134. package/dist/http/resume-restatement.js +25 -0
  135. package/dist/http/route-ctx.d.ts +35 -10
  136. package/dist/http/route-ctx.js +1 -1
  137. package/dist/http/route-table.js +2 -0
  138. package/dist/http/routes/approvals-assistant.d.ts +9 -1
  139. package/dist/http/routes/approvals-assistant.js +142 -31
  140. package/dist/http/routes/attachments.js +18 -0
  141. package/dist/http/routes/capabilities.js +16 -4
  142. package/dist/http/routes/memory-policy.d.ts +2 -2
  143. package/dist/http/routes/memory-policy.js +27 -7
  144. package/dist/http/routes/notify-wake.js +23 -25
  145. package/dist/http/routes/rules.js +48 -13
  146. package/dist/http/routes/runs.js +12 -11
  147. package/dist/http/routes/session-memory-sync.d.ts +91 -0
  148. package/dist/http/routes/session-memory-sync.js +174 -0
  149. package/dist/http/routes/session-sync.js +13 -20
  150. package/dist/http/routes/sessions-list.d.ts +2 -1
  151. package/dist/http/routes/sessions.d.ts +2 -2
  152. package/dist/http/routes/sessions.js +22 -23
  153. package/dist/http/routes/tasks.js +34 -54
  154. package/dist/http/run-read-face.d.ts +7 -0
  155. package/dist/http/run-read-face.js +9 -3
  156. package/dist/http/send.d.ts +5 -0
  157. package/dist/http/send.js +9 -2
  158. package/dist/http/server.d.ts +27 -15
  159. package/dist/http/server.js +4 -6
  160. package/dist/http/stored-body-replay.js +15 -4
  161. package/dist/http/submit-replay.d.ts +4 -3
  162. package/dist/http/submit-replay.js +2 -2
  163. package/dist/http/sync-submit-body.d.ts +21 -4
  164. package/dist/http/sync-submit-body.js +13 -0
  165. package/dist/http/wire-types.d.ts +17 -7
  166. package/dist/identity-source.d.ts +21 -2
  167. package/dist/identity-source.js +6 -0
  168. package/dist/leader/leader.js +5 -2
  169. package/dist/leader/wire.d.ts +7 -1
  170. package/dist/leader/wire.js +6 -5
  171. package/dist/leg-facts.d.ts +37 -0
  172. package/dist/leg-facts.js +15 -0
  173. package/dist/memory-bundle-engine.d.ts +1 -4
  174. package/dist/memory-bundle-engine.js +2 -2
  175. package/dist/memory-incident-sink.d.ts +19 -6
  176. package/dist/memory-incident-sink.js +8 -4
  177. package/dist/memory-operator-faces.d.ts +30 -66
  178. package/dist/memory-operator-faces.js +17 -88
  179. package/dist/memory-scope-stores.d.ts +38 -40
  180. package/dist/memory-scope-stores.js +51 -36
  181. package/dist/memory-scope.d.ts +0 -9
  182. package/dist/memory-scope.js +0 -9
  183. package/dist/memory-sync-client.d.ts +21 -21
  184. package/dist/memory-sync-client.js +62 -43
  185. package/dist/memory-sync-identity.d.ts +24 -0
  186. package/dist/memory-sync-identity.js +57 -0
  187. package/dist/memory-sync.d.ts +27 -5
  188. package/dist/memory-sync.js +29 -7
  189. package/dist/model-plane-face.d.ts +13 -7
  190. package/dist/model-plane-face.js +2 -1
  191. package/dist/observability/fail-open.d.ts +47 -14
  192. package/dist/observability/fail-open.js +37 -11
  193. package/dist/observability/run-terminal.d.ts +92 -34
  194. package/dist/observability/run-terminal.js +171 -162
  195. package/dist/orchestration/workflow-completion-inbox.d.ts +5 -19
  196. package/dist/orchestration/workflow-completion-inbox.js +0 -12
  197. package/dist/orchestration/workflow-notify-journal.d.ts +3 -2
  198. package/dist/orchestration/workflow-park-decision.d.ts +8 -3
  199. package/dist/orchestration/workflow-park-decision.js +5 -3
  200. package/dist/org-delivery-gate.d.ts +11 -0
  201. package/dist/org-delivery-gate.js +19 -1
  202. package/dist/parked-decide.d.ts +13 -9
  203. package/dist/parked-decide.js +7 -7
  204. package/dist/parked-revive-surface.js +1 -1
  205. package/dist/peer-inbound-face.d.ts +127 -0
  206. package/dist/peer-inbound-face.js +158 -0
  207. package/dist/permission-rule-list.d.ts +13 -9
  208. package/dist/permission-rule-list.js +7 -3
  209. package/dist/plugins/approval-ask-store-file.d.ts +14 -4
  210. package/dist/plugins/approval-ask-store-file.js +64 -11
  211. package/dist/plugins/approval-ask-store-memory.d.ts +2 -1
  212. package/dist/plugins/approval-ask-store-memory.js +17 -14
  213. package/dist/plugins/approval-ask-store-sql.d.ts +70 -23
  214. package/dist/plugins/approval-ask-store-sql.js +79 -30
  215. package/dist/plugins/checkpoint-store-sql.d.ts +4 -4
  216. package/dist/plugins/checkpoint-store-sql.js +9 -7
  217. package/dist/plugins/file-history-store-sql.d.ts +24 -18
  218. package/dist/plugins/file-history-store-sql.js +24 -19
  219. package/dist/plugins/file-run-store.d.ts +35 -1
  220. package/dist/plugins/file-run-store.js +108 -9
  221. package/dist/plugins/imported-layer-root-retirement.d.ts +82 -0
  222. package/dist/plugins/imported-layer-root-retirement.js +96 -0
  223. package/dist/plugins/local-checkpoint-store.d.ts +1 -1
  224. package/dist/plugins/local-checkpoint-store.js +2 -2
  225. package/dist/plugins/local-session-store.d.ts +42 -9
  226. package/dist/plugins/local-session-store.js +83 -33
  227. package/dist/plugins/local-task-attachment-store.d.ts +12 -2
  228. package/dist/plugins/local-task-attachment-store.js +67 -43
  229. package/dist/plugins/mailbox-recipient-lifecycle.d.ts +9 -31
  230. package/dist/plugins/mailbox-recipient-lifecycle.js +4 -0
  231. package/dist/plugins/mailbox-store-sql.d.ts +12 -8
  232. package/dist/plugins/mailbox-store-sql.js +76 -7
  233. package/dist/plugins/memory-key-guards.d.ts +3 -3
  234. package/dist/plugins/memory-run-store.d.ts +6 -1
  235. package/dist/plugins/memory-run-store.js +11 -1
  236. package/dist/plugins/memory-sync-store-pg.d.ts +15 -0
  237. package/dist/plugins/memory-sync-store-pg.js +21 -0
  238. package/dist/plugins/memory-sync-store-tidb.d.ts +2 -0
  239. package/dist/plugins/memory-sync-store-tidb.js +13 -1
  240. package/dist/plugins/one-time-migrations.d.ts +58 -2
  241. package/dist/plugins/one-time-migrations.js +161 -4
  242. package/dist/plugins/org-delivery-quota-store.d.ts +1 -1
  243. package/dist/plugins/org-delivery-quota-store.js +2 -12
  244. package/dist/plugins/park-commit-watch.d.ts +1 -1
  245. package/dist/plugins/permission-rule-store-file.d.ts +10 -1
  246. package/dist/plugins/permission-rule-store-file.js +15 -2
  247. package/dist/plugins/permission-rule-store-sql.d.ts +31 -1
  248. package/dist/plugins/permission-rule-store-sql.js +35 -2
  249. package/dist/plugins/remote-env-device.d.ts +8 -11
  250. package/dist/plugins/remote-env-device.js +6 -3
  251. package/dist/plugins/remote-env-e2b.d.ts +23 -4
  252. package/dist/plugins/remote-env-e2b.js +111 -28
  253. package/dist/plugins/remote-env-k8s.d.ts +61 -22
  254. package/dist/plugins/remote-env-k8s.js +133 -33
  255. package/dist/plugins/remote-env-local-docker.d.ts +15 -3
  256. package/dist/plugins/remote-env-local-docker.js +40 -12
  257. package/dist/plugins/retention-store-sql.d.ts +2 -2
  258. package/dist/plugins/run-store-sql.d.ts +9 -1
  259. package/dist/plugins/run-store-sql.js +9 -1
  260. package/dist/plugins/sandbox-read-floor.d.ts +5 -7
  261. package/dist/plugins/sandbox-read-floor.js +2 -7
  262. package/dist/plugins/sql-errors.d.ts +10 -1
  263. package/dist/plugins/sql-errors.js +13 -0
  264. package/dist/plugins/store-backend.d.ts +33 -35
  265. package/dist/plugins/store-backend.js +10 -1
  266. package/dist/plugins/store-contracts.d.ts +50 -1
  267. package/dist/plugins/store-contracts.js +6 -0
  268. package/dist/plugins/task-attachment-store.d.ts +112 -14
  269. package/dist/plugins/task-attachment-store.js +207 -29
  270. package/dist/plugins/tool-result-store-sql.d.ts +9 -8
  271. package/dist/plugins/tool-result-store-sql.js +23 -2
  272. package/dist/plugins/wiring-section-codec.d.ts +32 -0
  273. package/dist/plugins/wiring-section-codec.js +55 -0
  274. package/dist/plugins/workspace-fill.d.ts +60 -0
  275. package/dist/plugins/workspace-fill.js +106 -0
  276. package/dist/project-bundle.d.ts +38 -0
  277. package/dist/project-bundle.js +609 -0
  278. package/dist/rule-entry-list.d.ts +3 -2
  279. package/dist/rule-entry-list.js +5 -1
  280. package/dist/rules-consent.d.ts +28 -5
  281. package/dist/rules-consent.js +40 -28
  282. package/dist/run-local.js +11 -13
  283. package/dist/runs.d.ts +12 -8
  284. package/dist/runs.js +6 -8
  285. package/dist/runtime-governance.d.ts +1 -1
  286. package/dist/sandbox-egress-policy.d.ts +4 -1
  287. package/dist/sandbox-egress-policy.js +3 -1
  288. package/dist/sandbox-git-plane.d.ts +31 -12
  289. package/dist/sandbox-git-plane.js +24 -4
  290. package/dist/security.d.ts +9 -0
  291. package/dist/security.js +8 -0
  292. package/dist/server-secret-env.d.ts +4 -0
  293. package/dist/session-error-wire.d.ts +36 -0
  294. package/dist/session-error-wire.js +13 -0
  295. package/dist/session-incarnation.d.ts +1 -1
  296. package/dist/session-notify-door.d.ts +106 -0
  297. package/dist/session-notify-door.js +93 -0
  298. package/dist/session-sync.d.ts +9 -14
  299. package/dist/session-sync.js +5 -5
  300. package/dist/session-workspace.d.ts +3 -13
  301. package/dist/session-workspace.js +0 -9
  302. package/dist/standing-answer-grant.d.ts +5 -0
  303. package/dist/standing-answer-grant.js +10 -0
  304. package/dist/stores-sql/session-policy-store-sql.d.ts +4 -2
  305. package/dist/stores-sql/session-policy-store-sql.js +3 -13
  306. package/dist/task-mcp.d.ts +1 -1
  307. package/dist/task-settings.d.ts +21 -10
  308. package/dist/task-settings.js +46 -13
  309. package/dist/terminal.d.ts +39 -19
  310. package/dist/terminal.js +65 -22
  311. package/dist/tool-approval.d.ts +56 -37
  312. package/dist/tool-approval.js +78 -71
  313. package/dist/trace/core-keyset-guard.d.ts +134 -14
  314. package/dist/trace/engine-notice-wire.d.ts +9 -3
  315. package/dist/trace/engine-notice-wire.js +7 -3
  316. package/dist/trace/exit-seat.d.ts +9 -2
  317. package/dist/trace/exit-seat.js +1 -0
  318. package/dist/trace/ledger-sink.d.ts +10 -6
  319. package/dist/trace/ledger-sink.js +2 -2
  320. package/dist/trace/model-segment.d.ts +55 -25
  321. package/dist/trace/model-segment.js +101 -33
  322. package/dist/trace/project.d.ts +25 -5
  323. package/dist/trace/project.js +22 -0
  324. package/dist/trace/redact.d.ts +61 -9
  325. package/dist/trace/redact.js +1490 -468
  326. package/dist/trace/self-minted-wire.d.ts +745 -24
  327. package/dist/trace/self-minted-wire.js +239 -9
  328. package/dist/trace/wire-projection-faces.d.ts +2 -2
  329. package/dist/trace/wire-projection-faces.js +2 -2
  330. package/dist/verifier-pause-card.d.ts +33 -5
  331. package/dist/verifier-pause-card.js +15 -10
  332. package/dist/web-admin-client/apply-effective.d.ts +12 -16
  333. package/dist/web-admin-client/apply-effective.js +109 -9
  334. package/dist/web-admin-client/effective-keys.js +2 -0
  335. package/dist/web-admin-client/types.d.ts +4 -0
  336. package/dist/workspace-space.d.ts +19 -3
  337. package/dist/workspace-space.js +8 -4
  338. package/docs/DEVICE-EXECUTOR-PROTOCOL.md +3 -1
  339. package/package.json +3 -2
  340. package/wire-changes/server@7.142.0.json +639 -0
  341. package/wire-changes/server@7.143.0.json +1167 -0
@@ -45,7 +45,6 @@ export const SELF_MINTED_WIRE = {
45
45
  "memory.erasure_evidence_unavailable": { attr: 409, since: "7.108.0" },
46
46
  "memory.erasure_selector_mismatch": { attr: 409, since: "7.108.0" },
47
47
  "memory.erasure_census_incomplete": { attr: 409, since: "7.108.0" },
48
- "memory.erasure_store_unjudged": { attr: 409, since: "7.140.0" },
49
48
  "internal.memory_control_plane_corrupt": { attr: 500, since: "7.108.0" },
50
49
  },
51
50
  },
@@ -258,6 +257,13 @@ export const SELF_MINTED_WIRE = {
258
257
  at: "GET /v1/sessions sessions[] 行键 = PATCH /v1/sessions/:id 200 体 = 409 conflict.session_row_changed currentRow(<键> → 在场律)",
259
258
  members: {
260
259
  rowTag: { attr: "present-iff the row can be written conditionally (the store has the row write primitive and the row carries an incarnation)", since: "7.139.0" },
260
+ unreadable: { attr: "present-iff the session head's leaf cannot be read (the file backend: the archive header is corrupt / truncated, or the archive cannot be read); the SQL backends never carry it; PATCH answers 500 for such a session before writing, so its 200 / 409 rows never carry it", since: "7.142.0" },
261
+ },
262
+ },
263
+ sessionsListRowUnreadableKey: {
264
+ at: "GET /v1/sessions sessions[].unreadable 键(<键> → 在场律)",
265
+ members: {
266
+ errorCode: { attr: "always; the errorCode GET /v1/sessions/:id answers for the same session (corrupt_session | internal.error today)", since: "7.142.0" },
261
267
  },
262
268
  },
263
269
  toolEndGateDispositionKey: {
@@ -352,6 +358,18 @@ export const SELF_MINTED_WIRE = {
352
358
  no_authorizer_session: { attr: "-", since: "7.137.0" },
353
359
  },
354
360
  },
361
+ projectBundleInvalidReason: {
362
+ at: "400 attachment.bundle_invalid reason(上传项目包 mime 的体过不了项目包的读者;另带 path?)",
363
+ members: {
364
+ not_archive: { attr: "-", since: "7.142.0" },
365
+ unsafe_path: { attr: "-", since: "7.142.0" },
366
+ entry_type: { attr: "-", since: "7.142.0" },
367
+ reserved_path: { attr: "-", since: "7.142.0" },
368
+ duplicate_path: { attr: "-", since: "7.142.0" },
369
+ expanded_too_large: { attr: "-", since: "7.142.0" },
370
+ too_many_entries: { attr: "-", since: "7.142.0" },
371
+ },
372
+ },
355
373
  submitIdempotency: {
356
374
  at: "提交幂等(<端点>#<面> → 应答状态)",
357
375
  members: {
@@ -360,6 +378,7 @@ export const SELF_MINTED_WIRE = {
360
378
  "GET /v1/leader?idempotencyKey": { attr: 200, since: "7.125.0" },
361
379
  "POST /v1/runs|/v1/tasks Idempotency-Key#conflict.run_exists": { attr: 409, since: "7.125.0" },
362
380
  "POST /v1/runs|/v1/tasks Idempotency-Key#conflict.idempotency_payload_mismatch": { attr: 409, since: "7.126.0" },
381
+ "POST /v1/tasks|/v1/tasks/stream#replay_first_answer_envelope(同键重放的体 = 首答的信封 + replay: true:终局 = 引擎结果(result 是串),停驻 = 结果 + 回执三键,行还在跑 = 回执三键;流式腿放进 done.result)": { attr: 200, since: "7.142.0" },
363
382
  },
364
383
  },
365
384
  builtinScenario: {
@@ -412,12 +431,48 @@ export const SELF_MINTED_WIRE = {
412
431
  aliases: { attr: "always", since: "7.135.0" },
413
432
  },
414
433
  },
434
+ modelPlaneKey: {
435
+ at: "GET /v1/models modelPlane.<键>(<键> → 在场律)",
436
+ members: {
437
+ servedTable: { attr: "always", since: "7.133.0" },
438
+ catalog: { attr: "always", since: "7.133.0" },
439
+ refusalCode: { attr: "present-iff the boot route judge refuses the table in force", since: "7.133.0" },
440
+ gap: { attr: "present-iff the boot route judge refuses the table in force", since: "7.133.0" },
441
+ planeRefusalCode: { attr: "present-iff the latest arriving catalog candidate is refused at the model plane group", since: "7.143.0" },
442
+ },
443
+ },
415
444
  approvalRequestCardKey: {
416
445
  at: "approval_request 帧 card.<键>(活铸帧的 card · 落库的卡信封 card_json · 断连重放帧的 card)",
417
446
  members: {
418
447
  approvalCard: { attr: "present-iff", since: "7.136.0" },
419
448
  },
420
449
  },
450
+ approvalRequestReplayFact: {
451
+ at: "approval_request 断连重放帧顶层(断流续读 · 开流 preamble · livePending 接管行 / 按问读口的 frame)",
452
+ members: {
453
+ mandated: { attr: "present-iff recorded on the ask row (same value as the live frame)", since: "7.143.0" },
454
+ mandate: { attr: "present-iff recorded on the ask row (same value as the live frame)", since: "7.143.0" },
455
+ origin: { attr: "present-iff recorded on the ask row (same value as the live frame)", since: "7.143.0" },
456
+ boundGrantDigest: { attr: "present-iff recorded on the ask row (same value as the live frame)", since: "7.143.0" },
457
+ boundGrants: { attr: "present-iff recorded on the ask row (same value as the live frame)", since: "7.143.0" },
458
+ classifierNoRuling: { attr: "present-iff recorded on the ask row (same value as the live frame)", since: "7.143.0" },
459
+ boundGrantAbsence: { attr: "present-iff recorded on the ask row (same value as the live frame)", since: "7.143.0" },
460
+ approvalCard: { attr: "present-iff recorded on the ask row (same value as the live frame)", since: "7.143.0" },
461
+ readRootCandidate: { attr: "present-iff recorded on the ask row (same value as the live frame)", since: "7.143.0" },
462
+ probeReason: { attr: "present-iff recorded on the ask row (same value as the live frame)", since: "7.143.0" },
463
+ requestedBy: { attr: "present-iff recorded on the ask row (same value as the live frame)", since: "7.143.0" },
464
+ liveFactsUnknown: { attr: "present-iff the ask row carries no readable live facts (replay frames only)", since: "7.143.0" },
465
+ },
466
+ },
467
+ livePendingAdoptedRowKey: {
468
+ at: "GET /v1/approvals livePending[] 行顶层 · /v1/approvals/stream live_pending 帧 · GET /v1/tool-approvals/:id pending 体(起服接管行)",
469
+ members: {
470
+ mandated: { attr: "present-iff recorded on the ask row (adopted rows; same value as row.frame)", since: "7.143.0" },
471
+ mandate: { attr: "present-iff recorded on the ask row (adopted rows; same value as row.frame)", since: "7.143.0" },
472
+ origin: { attr: "present-iff recorded on the ask row (adopted rows; same value as row.frame)", since: "7.143.0" },
473
+ liveFactsUnknown: { attr: "present-iff row.frame.liveFactsUnknown (adopted rows only)", since: "7.143.0" },
474
+ },
475
+ },
421
476
  approvalQueuePendingKey: {
422
477
  at: "GET /v1/approvals pending[] 行 · GET /v1/approvals/stream pending 帧(停驻技能卡的批准绑定三位;与助手收件箱行同一只投影)",
423
478
  members: {
@@ -426,6 +481,51 @@ export const SELF_MINTED_WIRE = {
426
481
  classifierNoRuling: { attr: "present-iff", since: "7.136.0" },
427
482
  },
428
483
  },
484
+ approvalQueueKind: {
485
+ at: "GET /v1/approvals pending[].kind · GET /v1/approvals/stream pending / resolved 帧的 kind(恒带)",
486
+ members: {
487
+ checkpoint: { attr: "-", since: "7.143.0" },
488
+ peer_inbound: { attr: "-", since: "7.143.0" },
489
+ },
490
+ },
491
+ peerInboundRowKey: {
492
+ at: "GET /v1/approvals pending[] 的 peer_inbound 行 · GET /v1/approvals/stream 的 peer_inbound pending 帧(<键> → 在场律)",
493
+ members: {
494
+ kind: { attr: "always", since: "7.143.0" },
495
+ id: { attr: "always", since: "7.143.0" },
496
+ recipientSessionId: { attr: "always", since: "7.143.0" },
497
+ lane: { attr: "always", since: "7.143.0" },
498
+ cause: { attr: "always", since: "7.143.0" },
499
+ content: { attr: "always", since: "7.143.0" },
500
+ sentAt: { attr: "always", since: "7.143.0" },
501
+ heldAt: { attr: "always", since: "7.143.0" },
502
+ fromSession: { attr: "present-iff", since: "7.143.0" },
503
+ fromName: { attr: "present-iff", since: "7.143.0" },
504
+ fromScope: { attr: "present-iff", since: "7.143.0" },
505
+ },
506
+ },
507
+ peerInboundLane: {
508
+ at: "GET /v1/approvals pending[] 的 peer_inbound 行 lane",
509
+ members: {
510
+ session: { attr: "-", since: "7.143.0" },
511
+ principal_inbox: { attr: "-", since: "7.143.0" },
512
+ },
513
+ },
514
+ approvalsResolvedFrameKey: {
515
+ at: "GET /v1/approvals/stream resolved 帧(<键> → 在场律;只登本版新增的)",
516
+ members: {
517
+ kind: { attr: "always", since: "7.143.0" },
518
+ id: { attr: "present-iff kind = peer_inbound", since: "7.143.0" },
519
+ },
520
+ },
521
+ peerInboundDecideBodyKey: {
522
+ at: "POST /v1/approvals/:id/decide 200 体(peer_inbound 族;<键> → 在场律)",
523
+ members: {
524
+ kind: { attr: "always", since: "7.143.0" },
525
+ id: { attr: "always", since: "7.143.0" },
526
+ outcome: { attr: "always", since: "7.143.0" },
527
+ },
528
+ },
429
529
  constraintRejectedBodyKey: {
430
530
  at: "409 resume.constraint_rejected 拒体(<键> → 在场律)",
431
531
  members: {
@@ -496,6 +596,8 @@ export const SELF_MINTED_WIRE = {
496
596
  "POST /v1/tasks|/v1/tasks/stream|/v1/runs#限制侧名内带 *(settings.permissions.deny|ask)": { attr: 200, since: "7.137.0" },
497
597
  "POST /v1/tasks|/v1/tasks/stream|/v1/runs#settings.permissions.deny|ask 带层条目 { rule, layer }(新提交;layer = 设置来源词)": { attr: 200, since: "7.141.0" },
498
598
  "POST /v1/tasks|/v1/tasks/stream|/v1/runs#user 层 / 形路径规则而执行环境的配置根读不出(沙箱车道没转 SEMA_CONFIG_DIR 且 home 未知;体 request.unprocessable + problems[].reason home_unresolvable;续跑 409 同句)": { attr: 422, since: "7.141.0" },
599
+ "POST /v1/tasks|/v1/tasks/stream|/v1/runs#settings.permissions.allow 带层条目 { rule, layer }(新提交;layer = 设置来源词)": { attr: 200, since: "7.143.0" },
600
+ "POST /v1/tasks|/v1/tasks/stream|/v1/runs#allow 桶里 user 层 / 形路径规则而执行环境的配置根读不出(沙箱车道没转 SEMA_CONFIG_DIR 且 home 未知;体 request.unprocessable + field settings.permissions.allow + problems[].reason home_unresolvable;续跑 409 同句)": { attr: 422, since: "7.143.0" },
499
601
  "POST /v1/tasks|/v1/tasks/stream|/v1/runs#限制侧名内带 *(excludeTools)": { attr: 200, since: "7.137.0" },
500
602
  "POST /v1/tasks|/v1/tasks/stream|/v1/runs#限制侧名内带 *(skills[i].disallowedTools|agents[i].skills[j].disallowedTools)": { attr: 200, since: "7.137.0" },
501
603
  "POST /v1/tasks|/v1/tasks/stream|/v1/runs#限制侧名内带 *(agents[i].denyTools)": { attr: 200, since: "7.137.0" },
@@ -503,14 +605,39 @@ export const SELF_MINTED_WIRE = {
503
605
  "POST /v1/assistant/tasks/:id/plan_review#checkpointId_current(体带当前门的身份;受理形与不带键同)": { attr: 200, since: "7.137.0" },
504
606
  "POST /v1/tasks|/v1/tasks/stream|/v1/runs#rewindFiles(新提交;体 request.body_shape + unknownKeys [rewindFiles])": { attr: 400, since: "7.139.0" },
505
607
  "POST /v1/side-query#uncoded_error_with_preflight_prefix(没有引擎码、英文开头与前缀表同形的错误;体 internal.error)": { attr: 500, since: "7.139.0" },
608
+ "POST /v1/approvals/:sessionId/decide#parked_principal_lane_not_permitted(停驻赎回;卡的主体此刻不被许可本部署的执行车道;approve 与 deny 同答;认领之前,停驻行不动、卡仍待决;体 resume_blocked_by_policy + blockedBy execution_lane_not_allowed + allowedLanes + lane + retriable)": { attr: 409, since: "7.139.0" },
506
609
  "PATCH /v1/sessions/:id#mirror_row(只读镜像行上的写,带不带 expectedRowTag;体 conflict.session_mirror + forkPath)": { attr: 409, since: "7.139.0" },
507
610
  "PATCH /v1/sessions/:id#owner_changed_after_gate(门那一读之后同一会话的属主被改;体 not_found.session)": { attr: 404, since: "7.139.0" },
508
611
  "PATCH /v1/sessions/:id#expectedRowTag_stale(行已不在那只标签上;体 conflict.session_row_changed + currentRow)": { attr: 409, since: "7.139.0" },
509
612
  "PATCH /v1/sessions/:id#expectedRowTag_current(行仍在那只标签上;体 = 列表行)": { attr: 200, since: "7.139.0" },
510
- "GET /v1/memory/entries/:entryId/provenance|POST /v1/memory/erase|GET /v1/memory/origin/clearances|POST /v1/memory/origin/entries/:entryId/clear#layer_unaddressed_two_stores(不点名层的条目 id / 店级账本请求,本部署点名的层分住两只店;体 request.memory_layer)": { attr: 400, since: "7.140.0" },
511
- "POST /v1/memory/erase|POST /v1/sessions/:id/memory/erase#erasure_store_unjudged(抹除落到部署的店之外的那只店:点名的层住在个人挂载上,或按会话抹除而这只会话在另一只店有贡献 / 那只店的账读不出;体 memory.erasure_store_unjudged,什么都没删)": { attr: 409, since: "7.140.0" },
512
- "POST /v1/memory/export|POST /v1/memory/import|GET /v1/memory/origin/external|POST /v1/memory/erase#layers_span_two_stores(请求点名的层分住两只店;体 request.memory_layer)": { attr: 400, since: "7.140.0" },
513
- "记忆诸口 + POST /v1/admin/memory/consolidation/run|GET /v1/admin/memory/consolidation|GET /v1/memory/export|POST /v1/memory/sync/:scope#layer_unreadable(请求点名的层引擎读不出;体 request.memory_layer)": { attr: 400, since: "7.140.0" },
613
+ "GET /v1/memory/entries/:entryId/provenance|GET /v1/memory/origin/clearances|POST /v1/memory/origin/entries/:entryId/clear#layer_unaddressed_two_stores(不点名层的条目 id / 店级账本请求,本部署有两只店 —— 盘上的店集:个人挂载上有个人店;体 request.memory_layer)": { attr: 400, since: "7.143.0" },
614
+ "POST /v1/memory/export|POST /v1/memory/import|GET /v1/memory/origin/external#layers_span_two_stores(请求点名的层分住两只店;体 request.memory_layer)": { attr: 400, since: "7.143.0" },
615
+ "POST /v1/memory/erase#grant_spans_two_stores(expectedScopes 的层分住两只店;体 config.memory_erasure_scope,什么都没删、什么都没记)": { attr: 400, since: "7.143.0" },
616
+ "POST /v1/memory/erase|POST /v1/sessions/:id/memory/erase#reaches_second_store(点名的层住在个人店 / 按会话或按 id 抹除而另一只店里有那一份;每只到达的店各擦各的那一份,收执合成一份)": { attr: 200, since: "7.143.0" },
617
+ "POST /v1/memory/erase|POST /v1/sessions/:id/memory/erase#requestId_reused_across_stores(同一个 requestId 先在一只店执行过、再换选择子或落到另一只店;体 memory.erasure_selector_mismatch,什么都没删、什么都没记)": { attr: 409, since: "7.143.0" },
618
+ "POST /v1/sessions/:id/memory/erase#body.scope(层座退役;体 request.body_shape)": { attr: 400, since: "7.143.0" },
619
+ "记忆诸口 + POST /v1/admin/memory/consolidation/run|GET /v1/admin/memory/consolidation|GET /v1/memory/export#layer_unreadable(请求点名的层引擎读不出;体 request.memory_layer)": { attr: 400, since: "7.140.0" },
620
+ "POST /v1/memory/sync/:scope#any(同步口改到 /v2;旧路径无人认领;体 not_found.route)": { attr: 404, since: "7.143.0" },
621
+ "POST /v2/memory/sync/:scope#layer_unreadable(请求点名的层引擎读不出;任何读写之前;体 request.memory_layer)": { attr: 400, since: "7.143.0" },
622
+ "POST /v2/memory/sync/:scope#identity_undeclared(DB 记忆平面没声明 MEMORY_SYNC_SERVE_IDENTITY;鉴权之后;体 feature.memory_sync_serve_disabled)": { attr: 501, since: "7.143.0" },
623
+ "POST /v2/memory/sync/:scope#peer_not_declared_identity(peer 不是同步身份的规范形 / 带凭据 / 非 http(s) / 超宽 / 空串;体 request.field_invalid + field peer + reason)": { attr: 400, since: "7.143.0" },
624
+ "POST /v2/memory/sync/:scope#peer_not_this_center(peer 是规范形但不等于本中心声明的身份;零读零写;体 config.memory_sync_target_mismatch)": { attr: 409, since: "7.143.0" },
625
+ "POST /v2/memory/sync/:scope#partition_reset(一轮的最后一次写之后分区化身已变;体 internal.error)": { attr: 500, since: "7.143.0" },
626
+ "POST /v1/approvals/:id/decide#peer_inbound_decided(:id 带 peer_inbound: 前缀,调用方自己的、成因人能答的被扣来信;体 { kind, id, outcome })": { attr: 200, since: "7.143.0" },
627
+ "POST /v1/approvals/:id/decide#peer_inbound_keys_do_not_apply(体带 decision 以外的停驻门键;体 request.body_shape + unsupportedKeys)": { attr: 400, since: "7.143.0" },
628
+ "POST /v1/approvals/:id/decide#peer_inbound_store_refused(信箱店拒了决断那一步,什么都没决;体 state.peer_decision_unrecorded)": { attr: 503, since: "7.143.0" },
629
+ "POST /v1/approvals/:sessionId/decide#tool_approval_decided_without_boundInputHash(工具审批门;只回显 boundCallId 或一位都不回显;门型守卫之后;体 decide_requires_binding + bindingEnforced + missingKeys;卡仍 pending)": { attr: 400, since: "7.143.0" },
630
+ "POST /v1/approvals/:sessionId/decide#replay_without_boundInputHash(首决已结清、同一份体不带 boundInputHash 重发;体 not_found.approval)": { attr: 404, since: "7.143.0" },
631
+ "GET /v1/sessions/:id#owner_unreadable(DB_BACKEND=local;行事实没有落下 ∧ 存档读不出 ⇒ 属主不可判;体 not_found.session,与非属主 / 不存在同码同文)": { attr: 404, since: "7.143.0" },
632
+ "GET /v1/sessions/:id/memory-status#owner_unreadable(DB_BACKEND=local;行事实没有落下 ∧ 存档读不出 ⇒ 属主不可判;体 not_found.session,与非属主 / 不存在同码同文)": { attr: 404, since: "7.143.0" },
633
+ "POST /v1/sessions/:id/memory/erase#owner_unreadable(DB_BACKEND=local;行事实没有落下 ∧ 存档读不出 ⇒ 属主不可判;体 not_found.session,与非属主 / 不存在同码同文)": { attr: 404, since: "7.143.0" },
634
+ "GET /v1/sessions/:id/head#owner_unreadable(DB_BACKEND=local;行事实没有落下 ∧ 存档读不出 ⇒ 属主不可判;体 not_found.session,与非属主 / 不存在同码同文)": { attr: 404, since: "7.143.0" },
635
+ "GET /v1/sessions/:id/events#owner_unreadable(DB_BACKEND=local;行事实没有落下 ∧ 存档读不出 ⇒ 属主不可判;体 not_found.session,与非属主 / 不存在同码同文)": { attr: 404, since: "7.143.0" },
636
+ "GET /v1/sessions/:id/execution-placement#owner_unreadable(DB_BACKEND=local;行事实没有落下 ∧ 存档读不出 ⇒ 属主不可判;体 not_found.session,与非属主 / 不存在同码同文)": { attr: 404, since: "7.143.0" },
637
+ "POST /v1/sessions/:id/notify#occupant_changed_before_delivery(属主门读过之后、投递之前会话被删或同 id 换了住客;零投递;体 not_found.session,与不存在同码同文)": { attr: 404, since: "7.143.0" },
638
+ "GET /v1/capabilities/mcp#engine_name_collision(中心声明两台归一后同挂一个工具命名空间前缀,引擎在任何传输被触碰之前整集拒;体 config.mcp_server_name_collision + 引擎原句;与同步提交腿同一张码 → 状态表)": { attr: 409, since: "7.143.0" },
639
+ "POST /v1/tasks#engine_name_collision(同步腿;同一份声明集被引擎整集拒;零工作的拒;体 config.mcp_server_name_collision)": { attr: 409, since: "7.143.0" },
640
+ "POST /v1/rules/local-import/prepare#tightening_write_failed(一条收下的 deny / ask 写不进店;这一批的放行扣下、没有票;体 state.rule_write_failed + committed,同 POST /v1/rules)": { attr: 503, since: "7.143.0" },
514
641
  },
515
642
  },
516
643
  memoryLayerSeatKey: {
@@ -519,8 +646,7 @@ export const SELF_MINTED_WIRE = {
519
646
  "GET /v1/memory/entries/:entryId/provenance#query.scope": { attr: "optional;non-empty-string else 400 request.field_invalid;names the layer whose store answers", since: "7.140.0" },
520
647
  "GET /v1/memory/origin/clearances#query.scope": { attr: "optional;non-empty-string else 400 request.field_invalid;names the layer whose store answers", since: "7.140.0" },
521
648
  "POST /v1/memory/origin/entries/:entryId/clear#body.scope": { attr: "optional;non-empty-string else 400 request.field_invalid;names the layer whose store answers;not passed to the engine", since: "7.140.0" },
522
- "GET /v1/sessions/:id/memory-status#query.scope": { attr: "optional;non-empty-string else 400 request.field_invalid;names the layer whose store answers;absent ⇒ every store of this deployment, folded;cache keyed by (session, store control plane)", since: "7.140.0" },
523
- "POST /v1/sessions/:id/memory/erase#body.scope": { attr: "optional;non-empty-string else 400 request.field_invalid;names the layer whose store answers;absent ⇒ the deployment's store;selector still minted from the path", since: "7.140.0" },
649
+ "GET /v1/sessions/:id/memory-status#query.scope": { attr: "optional;non-empty-string else 400 request.field_invalid;names the layer whose store answers (that store's engine answer);absent ⇒ the deployment's answer (the engine folds every store on disk);cache keyed by (session, store control plane | deployment)", since: "7.140.0" },
524
650
  },
525
651
  },
526
652
  sessionMemoryStatusKey: {
@@ -535,6 +661,57 @@ export const SELF_MINTED_WIRE = {
535
661
  delete_cursor: { attr: "-", since: "7.141.0" },
536
662
  },
537
663
  },
664
+ memorySyncIdentityFlaw: {
665
+ at: "400 request.field_invalid reason(POST /v1/sessions/:id/memory/sync 的 target · POST /v2/memory/sync/:scope 的 peer;另带 field)",
666
+ members: {
667
+ "not-http-url": { attr: "-", since: "7.142.0" },
668
+ userinfo: { attr: "-", since: "7.142.0" },
669
+ query: { attr: "-", since: "7.142.0" },
670
+ fragment: { attr: "-", since: "7.142.0" },
671
+ credential: { attr: "-", since: "7.142.0" },
672
+ "too-long": { attr: "-", since: "7.142.0" },
673
+ "not-canonical": { attr: "-", since: "7.142.0" },
674
+ },
675
+ },
676
+ sessionMemorySyncWire: {
677
+ at: "POST /v1/sessions/:id/memory/sync(<面>#<键> → 读法 / 在场律)",
678
+ members: {
679
+ "body#target": { attr: "required;the only key;the target engine's GET /v1/capabilities memorySyncServe.identity verbatim;not a declared sync identity ⇒ 400 request.field_invalid", since: "7.142.0" },
680
+ "200#target": { attr: "always;engine report verbatim", since: "7.142.0" },
681
+ "200#sourceRevision": { attr: "always;the session leafId read in the same head read as the owner gate", since: "7.142.0" },
682
+ "200#scopes": { attr: "always;the read set: latest settled run's effectiveMemoryScopes (mounted ⇒ scope keys in serving order; none ⇒ []; memoryless ⇒ no read set, 409 reason memory_not_mounted)", since: "7.143.0" },
683
+ "200#layers": { attr: "present-iff no whole-round refusal;one entry per read-set layer the round ran (engine outcome synced | incomplete | refused | failed)", since: "7.142.0" },
684
+ "200#refused": { attr: "present-iff whole-round refusal;{code: config.memory_sync_target_mismatch | session_active, message}", since: "7.142.0" },
685
+ "409 conflict.session_memory_unobserved#activeTaskId": { attr: "present-iff the session has a run in flight", since: "7.142.0" },
686
+ "409 conflict.session_memory_unobserved#reason": { attr: "always;closed set sessionMemoryUnobservedReason, judged in read order (no settled run → the latest settled run's observation gives no read set: empty observation or memory not mounted → no leaf);the message is a function of reason", since: "7.143.0" },
687
+ },
688
+ },
689
+ centralMemorySyncWire: {
690
+ at: "POST /v2/memory/sync/:scope(<面>#<键> → 读法 / 在场律)",
691
+ members: {
692
+ "path#version": { attr: "/v2/memory/sync/:scope (the engine's path);/v1/memory/sync/… is unclaimed ⇒ 404 not_found.route", since: "7.143.0" },
693
+ "body#peerIncarnation": { attr: "optional;the client cursor's peerIncarnation verbatim;1..128 chars else 422 memory_sync_invalid_body;compared with the scope partition's incarnation before any read or write", since: "7.143.0" },
694
+ "200#cursor.incarnation": { attr: "always on a result;the scope partition's incarnation (minted when the partition is first read by a sync, then stored);equals the claim when one was made", since: "7.143.0" },
695
+ "200#refused": { attr: "present-iff the round is refused on the incarnation axis;\"baseline_incarnation\";the claim is not the partition's incarnation, or a non-empty baseRevs with no claim;nothing read or written", since: "7.143.0" },
696
+ "200#incarnation": { attr: "present-iff refused;the scope partition's incarnation", since: "7.143.0" },
697
+ },
698
+ },
699
+ sessionMemoryUnobservedReason: {
700
+ at: "409 conflict.session_memory_unobserved reason(POST /v1/sessions/:id/memory/sync)",
701
+ members: {
702
+ no_settled_run: { attr: "-", since: "7.143.0" },
703
+ run_result_missing: { attr: "-", since: "7.143.0" },
704
+ run_result_unobserved: { attr: "-", since: "7.143.0" },
705
+ memory_not_mounted: { attr: "-", since: "7.143.0" },
706
+ no_leaf: { attr: "-", since: "7.143.0" },
707
+ },
708
+ },
709
+ decideRequiresBindingBodyKey: {
710
+ at: "400 decide_requires_binding 拒体(<键> → 在场律)",
711
+ members: {
712
+ missingKeys: { attr: "always;non-empty subset of [boundCallId, boundInputHash] in that order (absent or empty string ⇒ missing)", since: "7.143.0" },
713
+ },
714
+ },
538
715
  refusalSentenceForm: {
539
716
  at: "拒体 message 的句型(<码>#<座> → 句型骨架;码 / 状态 / 机读位不变)",
540
717
  members: {
@@ -548,7 +725,7 @@ export const SELF_MINTED_WIRE = {
548
725
  "connect_failed(run 失败终局)#snapshot_bucket_missing(k8s 车道读 latest 得 404 NoSuchBucket;连沙箱失败,一只 pod 都不建)": { attr: "workspace space pointer read failed (snapshot_bucket_missing): the workspace snapshot bucket <name> (WORKSPACE_SNAPSHOT_BUCKET; default workspaces) does not exist in the object store — refusing to start this run … Ways out: create the bucket, or set WORKSPACE_SNAPSHOT_BUCKET to one that exists, or set WORKSPACE_PERSIST=off …", since: "7.136.0" },
549
726
  "400 request.field_invalid#images[i].url.credential": { attr: "<field> <规则句> — the URL is kept as written (a parked task's resume context, logs), while images[i] can carry the image bytes inline: send { data, mimeType } instead of a URL that holds the credential", since: "7.136.0" },
550
727
  "400 request.field_invalid#settings.permissions.deny|ask.bad_entry": { attr: "<field>[<index>] is neither a non-empty rule string nor a { \"rule\", \"layer\" } entry (…) — every entry must be one. …", since: "7.141.0" },
551
- "400 request.field_invalid#settings.permissions.allow.bad_entry": { attr: "<field>[<index>] is not a string — every entry must be a permission-rule string (a settings layer's { \"rule\", \"layer\" } entry is read in deny / ask only). …", since: "7.141.0" },
728
+ "400 request.field_invalid#settings.permissions.allow.bad_entry": { attr: "<field>[<index>] is neither a rule string nor a { \"rule\", \"layer\" } entry (…) — every entry must be one. …", since: "7.143.0" },
552
729
  "400 request.field_invalid#a2aPeers.not_array": { attr: "head: a2aPeers is <shape>, not an array of A2A peer declarations", since: "7.136.0" },
553
730
  "400 request.field_invalid#a2aPeers[i].not_object": { attr: "head: a2aPeers[i] is <shape>, not an A2A peer declaration (an object)", since: "7.136.0" },
554
731
  "400 request.field_invalid#a2aPeers[i].<key>.unusable(url / cardUrl 凭据拒之外的键值坏形)": { attr: "<field> (peer <name>) is not a usable declaration — <rule> …", since: "7.136.0" },
@@ -569,12 +746,28 @@ export const SELF_MINTED_WIRE = {
569
746
  "400 request.field_invalid#PATCH /v1/sessions/:id.expectedRowTag": { attr: "expectedRowTag must be the `rowTag` string a session list row carries (43 characters: letters, digits, `-` and `_`)", since: "7.139.0" },
570
747
  "409 conflict.session_mirror#PATCH /v1/sessions/:id": { attr: "this session is a read-only mirror of a session whose writer is elsewhere — it cannot be renamed or pinned here; fork it (forkPath) to continue here; nothing was written", since: "7.139.0" },
571
748
  "409 conflict.session_row_changed#PATCH /v1/sessions/:id": { attr: "the session row changed since the rowTag you sent was read — nothing was written; currentRow is the row as it stands now: decide again, then send its rowTag", since: "7.139.0" },
749
+ "400 decide_requires_binding#POST /v1/approvals/:sessionId/decide": { attr: "decide requires the decision-action binding — echo boundCallId and boundInputHash exactly as the pending approval you are deciding shows them (GET /v1/approvals), so a decision on a view that has since been replaced is refused instead of landing on the gate that replaced it", since: "7.143.0" },
750
+ "400 request.body_shape#/decide.root_shape": { attr: "body must be { decision: 'approve' | 'deny', boundCallId, boundInputHash, reason?, answer?, checkpointToken?, updatedInput?, remember?, decidedBy?, feedback? }", since: "7.143.0" },
751
+ "409 conflict.session_memory_unobserved#run_result_missing|run_result_unobserved": { attr: "the latest settled run in this session has no memory observation on record, and an earlier run is never read in its place — run another task in this session (…), then sync", since: "7.143.0" },
752
+ "409 conflict.session_memory_unobserved#memory_not_mounted": { attr: "memory was configured for the latest settled run in this session but did not mount, so which memory this session reads is unknown, and an earlier run is never read in its place — run another task in this session (…), then sync", since: "7.143.0" },
753
+ "409 conflict.session_memory_unobserved#no_leaf": { attr: "this session has no transcript yet, so there is no revision to sync from — run a task in it (…), then sync", since: "7.143.0" },
572
754
  },
573
755
  },
574
756
  decisionBodyKey: {
575
757
  at: "回决门族决断体的受理键(<端点>#<键> → 读法;只登本版新增的键)",
576
758
  members: {
577
759
  "POST /v1/assistant/tasks/:id/plan_review#checkpointId": { attr: "optional;non-empty-string≤128;not-current⇒409 approval_stale;direct-door:signed-envelope-ext", since: "7.137.0" },
760
+ "POST /v1/tool-approvals/:id/respond#decidedVia": { attr: "optional;DECIDED_VIA word beside decidedBy \"policy\" only;else⇒400 request.field_invalid (this door: request.body_shape)", since: "7.143.0" },
761
+ "POST /v1/tasks/:taskId/asks/:askId/decision#decidedVia": { attr: "optional;DECIDED_VIA word beside decidedBy \"policy\" only;else⇒400 request.field_invalid", since: "7.143.0" },
762
+ "POST /v1/approvals/:sessionId/decide#decidedVia": { attr: "optional;DECIDED_VIA word beside decidedBy \"policy\" only;else⇒400 request.field_invalid;direct-door:never accepted", since: "7.143.0" },
763
+ "POST /v1/assistant/tasks/:id/plan_review#decidedVia": { attr: "optional;DECIDED_VIA word beside decidedBy \"policy\" only;else⇒400 request.field_invalid;direct-door:never accepted", since: "7.143.0" },
764
+ },
765
+ },
766
+ resumeRestatementKey: {
767
+ at: "续跑门族请求体(POST /v1/approvals/:id/decide · /v1/assistant/tasks/:id/plan_review · /v1/assistant/tasks/:id/resume · /v1/sessions/:id/wake)的重述键",
768
+ members: {
769
+ a2aPeers: { attr: "optional;submit-shape;present⇒replaces-stored-table+written-back;absent|null⇒frozen;direct-door(decide,plan_review)⇒400 restatement_not_in_proof", since: "7.143.0" },
770
+ mcpServers: { attr: "optional;submit-shape;present⇒replaces-stored-table+written-back;absent|null⇒frozen;direct-door(decide,plan_review)⇒400 restatement_not_in_proof", since: "7.143.0" },
578
771
  },
579
772
  },
580
773
  sessionRowWriteKey: {
@@ -626,6 +819,7 @@ export const SELF_MINTED_WIRE = {
626
819
  at: "GET /v1/config/catalog rows[](<行名> → 域;只登本版新增的行)",
627
820
  members: {
628
821
  SEALED_KEY_DIR: { attr: "store", since: "7.136.0" },
822
+ MEMORY_SYNC_SERVE_IDENTITY: { attr: "memory", since: "7.142.0" },
629
823
  },
630
824
  },
631
825
  deviceProtocolRevision: {
@@ -634,6 +828,37 @@ export const SELF_MINTED_WIRE = {
634
828
  1: { attr: "base", since: "7.51.0" },
635
829
  2: { attr: "+liveness_no_output", since: "7.133.0" },
636
830
  3: { attr: "+name_too_long", since: "7.137.0" },
831
+ 4: { attr: "+symlink_loop", since: "7.143.0" },
832
+ },
833
+ },
834
+ hookNonBlockingFailureReason: {
835
+ at: "fleet stream hook_notice kind:hook_non_blocking_failure reason",
836
+ members: {
837
+ exit_nonzero: { attr: "-", since: "7.48.0" },
838
+ timeout: { attr: "-", since: "7.48.0" },
839
+ spawn_failed: { attr: "-", since: "7.48.0" },
840
+ bad_json: { attr: "-", since: "7.48.0" },
841
+ matcher_over_budget: { attr: "-", since: "7.133.0" },
842
+ url_not_allowed: { attr: "-", since: "7.142.0" },
843
+ },
844
+ },
845
+ hookManagedUnrunReason: {
846
+ at: "fleet stream hook_notice kind:hook_managed_unrun reason",
847
+ members: {
848
+ matcher_invalid: { attr: "-", since: "7.133.0" },
849
+ llm_carrier_unavailable: { attr: "-", since: "7.133.0" },
850
+ llm_cap: { attr: "-", since: "7.133.0" },
851
+ powershell_unsupported: { attr: "-", since: "7.133.0" },
852
+ if_unevaluable: { attr: "-", since: "7.133.0" },
853
+ budget_exhausted: { attr: "-", since: "7.133.0" },
854
+ spawn_failed: { attr: "-", since: "7.133.0" },
855
+ timeout: { attr: "-", since: "7.133.0" },
856
+ exit_nonzero: { attr: "-", since: "7.133.0" },
857
+ bad_json: { attr: "-", since: "7.133.0" },
858
+ decision_out_of_set: { attr: "-", since: "7.133.0" },
859
+ evidence_unavailable: { attr: "-", since: "7.133.0" },
860
+ rewrite_unsettled: { attr: "-", since: "7.133.0" },
861
+ url_not_allowed: { attr: "-", since: "7.142.0" },
637
862
  },
638
863
  },
639
864
  wireValueRule: {
@@ -668,12 +893,17 @@ export const SELF_MINTED_WIRE = {
668
893
  "GET /v1/config/catalog#rows[DEVICE_RELAY_URL].semantics": { attr: "required-on-device-lane;ws-url-or-literal-none;none-with-bindings-warns", since: "7.141.0" },
669
894
  "GET /v1/config/catalog#rows[DEVICE_RELAY_URL].derivedDefaultNote": { attr: "no-default;absent-refuses-boot", since: "7.141.0" },
670
895
  "GET /v1/config/catalog#rows[DEVICE_RELAY_URL].enumValues": { attr: "none(echoed-verbatim)", since: "7.141.0" },
896
+ "GET /v1/config/catalog#rows[MODEL_ROUTER_ID].derivedDefaultNote": { attr: "absent=>classifier-role-in-served-table", since: "7.143.0" },
671
897
  "GET /v1/sessions/:id/mcp#servers[].error": { attr: "exit-seat:mcp-remote-text(engine-mark=masked-value)+truncate:200", since: "7.138.0" },
672
898
  "POST /v1/sessions/:id/mcp/reconnect#reason|status.error|listingIncomplete.error": { attr: "exit-seat:mcp-remote-text(engine-mark=masked-value)+truncate:200", since: "7.138.0" },
673
899
  "GET /v1/config/catalog#rows[MODEL_VISION].semantics": { attr: "names-engine-notice:model.capability_downgraded", since: "7.137.0" },
674
900
  "GET /v1/config/catalog#rows[MODEL_VISION].derivedDefaultNote": { attr: "names-engine-notice:model.capability_downgraded", since: "7.137.0" },
675
901
  "GET /v1/config/catalog#rows[MODEL_CHEAP_VISION].semantics": { attr: "names-engine-notice:model.capability_downgraded", since: "7.137.0" },
676
- "GET /v1/sessions/:id/memory-status#committedCount|foldedCount|lastCaptureAt|captureOptedOut|optOutSource(不带层座)": { attr: "fold-across-deployment-stores(sum|max|any-record|absent-if-any-unreadable);one-store⇒identity", since: "7.140.0" },
902
+ "GET /v1/sessions/:id/memory-status#committedCount|foldedCount|lastCaptureAt|captureOptedOut|optOutSource(不带层座)": { attr: "engine-deployment-fold(memory.deployment_status.fold:sum|latest|any-record⇒true+record|all-false⇒false|else optOutSource:fault);store set = stores on disk;one-store⇒identity", since: "7.140.0" },
903
+ "GET /v1/models#modelPlane.catalog(refused 的模型面那一半)": { attr: "latest-arrival", since: "7.143.0" },
904
+ "SSE text_delta#delta": { attr: "live-hold:same-redactor-stream(pending-tail-from-arm-table);concat=segment-end-content;remainder-frame-without-eventId", since: "7.143.0" },
905
+ "SSE reasoning_delta#delta": { attr: "live-hold:same-redactor-stream(pending-tail-from-arm-table);concat=segment-end-content;remainder-frame-without-eventId", since: "7.143.0" },
906
+ "GET /v1/runs/:id/subagents/:handle/stream#reasoning_end.content": { attr: "whole-segment-for-late-subscriber", since: "7.143.0" },
677
907
  },
678
908
  },
679
909
  };
@@ -219,7 +219,7 @@ export declare const WIRE_PROJECTION_FACES: {
219
219
  readonly task_notification: {
220
220
  readonly projector: "taskNotificationEventData";
221
221
  readonly coreType: `TaskNotificationPayload & ${string}`;
222
- readonly excluded: readonly ["peer", "crossSessionMessage", "crossSessionNotice", "inboxNotice"];
222
+ readonly excluded: readonly ["peer", "crossSessionMessage", "crossSessionNotice", "inboxNotice", "received"];
223
223
  readonly unwrapped: readonly ["notification"];
224
224
  readonly minted: readonly ["injected"];
225
225
  };
@@ -243,7 +243,7 @@ export declare const WIRE_PROJECTION_FACES: {
243
243
  readonly projector: "engineNoticeEventData";
244
244
  readonly coreType: "EngineNotice";
245
245
  readonly excluded: readonly [];
246
- readonly minted: readonly ["ts"];
246
+ readonly minted: readonly ["ts", "eventId"];
247
247
  };
248
248
  readonly memory_import_report: {
249
249
  readonly projector: "buildImportReportWire";
@@ -45,7 +45,7 @@ export const WIRE_PROJECTION_FACES = {
45
45
  task_notification: {
46
46
  projector: "taskNotificationEventData",
47
47
  coreType: `TaskNotificationPayload & ${arm("task_notification")}`,
48
- excluded: ["peer", "crossSessionMessage", "crossSessionNotice", "inboxNotice"],
48
+ excluded: ["peer", "crossSessionMessage", "crossSessionNotice", "inboxNotice", "received"],
49
49
  unwrapped: ["notification"],
50
50
  minted: ["injected"],
51
51
  },
@@ -71,7 +71,7 @@ export const WIRE_PROJECTION_FACES = {
71
71
  return WIRE_PROJECTION_FACES.wiring_manifest_tenant.mintedConditional;
72
72
  },
73
73
  },
74
- engine_notice: { projector: "engineNoticeEventData", coreType: "EngineNotice", excluded: [], minted: ["ts"] },
74
+ engine_notice: { projector: "engineNoticeEventData", coreType: "EngineNotice", excluded: [], minted: ["ts", "eventId"] },
75
75
  memory_import_report: { projector: "buildImportReportWire", coreType: "MemoryImportReport", excluded: [], minted: [] },
76
76
  origin_clearance_row: {
77
77
  projector: "buildClearanceRowWire",
@@ -1,8 +1,36 @@
1
- import { type CardVoidPort } from "./card-void.js";
2
1
  /**
3
- * 结果上若有验证器自己的停驻(带凭据)⇒ 作废它那张 pending 卡;否则零 I/O。**必须在出口封口之前调**(封口摘掉的正是这里要用的凭据)。
4
- * 不抛:作废失败只让卡回到修前的形(由兜底收割),响亮留痕({@link VOID_FAILED});结算照常往下走。
5
- * 卡已不 pending / 已不在 ⇒ 什么都不做(CAS 输给了收割,结局相同)。卡的会话与停驻报的验证器会话不一致 ⇒ 不动它(只作废**这一张**)。
2
+ * **验证器自己的停驻卡,结算时当场作废** —— 本服务兑现不了它,就不让它挂在待决面上;动词是引擎的 `Runner.voidVerifierPause`。
3
+ *
4
+ * ## 这张卡是什么
5
+ * 验证门(core `runWithVerification` / `resumeWithVerification`)里,**验证器腿**自己在耐久门上停住时,引擎把那次停驻交回在
6
+ * `verification.verifierPause`(`unverifiedReason: "verifier_paused"`),实现腿照常 `completed`,run 照常终局。那张卡落在验证器
7
+ * **现铸的会话**上,不在本 run 的会话上 —— 宿主判官看不见它(`terminal.ts` 的 `atHostBoundary`:它不在结果因由里);
8
+ * 卡上记着它是谁的哪条腿(`CheckpointState.compositionLeg`,`entry: "verify"`)。
9
+ *
10
+ * ## 为什么作废,而不是留着等人决
11
+ * 本服务的续跑链按会话把一张卡连回 run(决定腿读这只会话的续跑输入);验证器会话上没有续跑输入 ⇒ `/decide` 恒答
12
+ * `409 conflict.resume_context_unavailable`。即便能续上,验证器跑完的判词也回不到那条已经终局的 run。判据只有一条,与
13
+ * `parked-decide.ts` 的「复活不了的卡作废」同一条:**本服务兑现不了的卡不留在待决面上**。
14
+ *
15
+ * ## 规则(一条读法)
16
+ * 「手里这张是不是验证器的卡」只有引擎答:`Runner.voidVerifierPause(token)` 读卡上的组合腿,只作废 `entry: "verify"` 的卡
17
+ * (别的卡拒 `resume.composition_mismatch`,一行不动),作废 = 与到期同一只 CAS(行 `expired`)+ 本进程持有的停驻环境销毁 +
18
+ * **释放验证器会话的钉**。本文件只答「结果上有没有那枚凭据」,不读店、不比会话、不判腿 —— 服务端不留第二份读法。
19
+ * 动词必须是**跑过这次验证门的那只 Runner** 的(停驻环境的回收记录在它手里)。
20
+ *
21
+ * ## 三问
22
+ * · 谁要:看待决列表 / 审批收件箱的人与壳 —— 修前那里躺着一张点不动的卡;长寿副本 —— 修前每次验证器停驻都钉住一只会话直到进程重启;
23
+ * · 谁伤:想让验证器把那一步做完的人 —— 修前也做不到(决不掉、判词回不到 run);run 的判词照旧是 `unverified` /
24
+ * `verifier_paused`,停驻的门、状态、验证器会话 id 与 `checkpointId` 照旧在结果上(凭据由出口封口摘);
25
+ * · 补偿:重新提交带 `verify` 的任务再验一次;作废没做成 ⇒ 卡回到修前的形(兜底收割),计数 + 一次性 warn 显形。
6
26
  */
7
- export declare function voidVerifierPauseCard(result: unknown, cards: CardVoidPort | undefined): Promise<void>;
27
+ import type { Runner } from "@sema-agent/core";
28
+ /** 结算点手里那只 Runner 的作废动词(跑过这次验证门的那只)。 */
29
+ export type VerifierPauseVoider = Pick<Runner, "voidVerifierPause">;
30
+ /**
31
+ * 结果上若有验证器自己的停驻(带凭据)⇒ 交引擎作废那张卡;否则零调用。**必须在出口封口之前调**(封口摘掉的正是这里要用的凭据)。
32
+ * 不抛:动词答 `false`(别的结算者先到了:续跑赢了 / 收割或更早的作废已到期它)⇒ 什么都不做;动词抛(卡不在、卡不是验证器的、
33
+ * 店抛、作废了但会话钉没放掉 `checkpoint.void_unpin_failed`)⇒ 结算照常往下走,响亮留痕({@link VOID_FAILED})。
34
+ */
35
+ export declare function voidVerifierPauseCard(result: unknown, runner: VerifierPauseVoider): Promise<void>;
8
36
  //# sourceMappingURL=verifier-pause-card.d.ts.map
@@ -1,19 +1,24 @@
1
- import { voidPendingCard } from "./card-void.js";
1
+ import { errorCodeOf, errorText } from "./observability/err-text.js";
2
+ import { recordFailOpen } from "./observability/fail-open.js";
2
3
  const VOID_FAILED = "server.verifier-pause.card-void-failed";
3
- export async function voidVerifierPauseCard(result, cards) {
4
- const pause = verifierPauseCardOf(result);
5
- if (pause !== undefined)
6
- await voidPendingCard(pause, cards, VOID_FAILED);
4
+ export async function voidVerifierPauseCard(result, runner) {
5
+ const token = verifierPauseTokenOf(result);
6
+ if (token === undefined)
7
+ return;
8
+ try {
9
+ await runner.voidVerifierPause(token);
10
+ }
11
+ catch (e) {
12
+ recordFailOpen(VOID_FAILED, `code=${errorCodeOf(e) ?? "thrown"} err=${errorText(e)}`);
13
+ }
7
14
  }
8
- function verifierPauseCardOf(result) {
15
+ function verifierPauseTokenOf(result) {
9
16
  if (result === null || typeof result !== "object")
10
17
  return undefined;
11
18
  const pause = result.verification?.verifierPause;
12
19
  if (pause === null || typeof pause !== "object")
13
20
  return undefined;
14
- const { checkpointToken, sessionId } = pause;
15
- return typeof checkpointToken === "string" && checkpointToken !== "" && typeof sessionId === "string"
16
- ? { token: checkpointToken, sessionId }
17
- : undefined;
21
+ const { checkpointToken } = pause;
22
+ return typeof checkpointToken === "string" && checkpointToken !== "" ? checkpointToken : undefined;
18
23
  }
19
24
  //# sourceMappingURL=verifier-pause-card.js.map
@@ -13,6 +13,7 @@ import type { EffectiveConfig } from "./types.js";
13
13
  import { type ModelRefusalVerdict } from "../model-entry-refusal.js";
14
14
  import { type ConfigApplyReport } from "./apply-ledger.js";
15
15
  import { type ConfigCandidateRead } from "./candidate-gate.js";
16
+ import type { CatalogSource } from "../env-model-table-gate.js";
16
17
  /** Apply center config OVER the env-derived config (mutates `config`). Empty domains keep env defaults. */
17
18
  /** Replace a record's contents IN PLACE (clear keys, copy source) so holders of the SAME reference see the
18
19
  * change. This is what makes models/roles/pricing HOT-apply: core's Runner reads
@@ -50,6 +51,11 @@ export type ApplyLeg = {
50
51
  readonly checkpointStorePresent: boolean;
51
52
  };
52
53
  export type ApplyEffectiveOpts = ApplyLeg & {
54
+ /**
55
+ * 这份候选**从哪条配置腿来**(本地腿另带配置根上 env 模型表的决定在同一拍的读数)—— 模型面 stage 的本地腿确认闸只读它({@link stageModelPlane})。
56
+ * 必填、没有缺省腿(同 {@link ApplyLeg}):取自候选自己的 `FetchEffectiveResult.catalogSource`,LKG 读回 / 降档 / 按组回落的合成是中心腿的事(LKG 只在中心腿启用)。
57
+ */
58
+ readonly catalogSource: CatalogSource;
53
59
  readonly sealedKeys?: SealedKeyOpener;
54
60
  readonly generation?: number;
55
61
  readonly report?: (r: ApplyReport) => void;
@@ -94,28 +100,18 @@ export declare function withModelPlaneOf<E extends EffectiveConfig>(target: E, s
94
100
  */
95
101
  export declare function fullyLandedForLkg(read: ConfigCandidateRead, report: ApplyReport | undefined): boolean;
96
102
  /**
97
- * [ref]:组拒码 → 铸它的那条模型面不变量 —— **以码为键**。组拒码闭集的属主是 settings-schema `MODEL_PLANE_REFUSAL_CODES`,每个码恰有**一个铸码方**,
98
- * 分两本账(下面两个表 + 三道编译门;那边加一个码而这两本都没收 ⇒ 本仓 tsc 红):
99
- * · 本表 = **本仓模型面 stage 自己铸**的码 → 铸它的不变量。模型面 stage 的组拒按**码**铸(码是判决那刻的数据),不变量 id 由本表派生 —— 一个 id 两个码
100
- * (`model-route-endpoint`)时码不可能从 id 反推,反过来查才是全函数;
101
- * · {@link ENGINE_MINTED_PLANE_REFUSAL_CODES} = 契约包出码、执法者是本仓但**今天未执法**的码(名字里的 ENGINE 沿契约包的词义 = worker,即本仓),本仓 stage 现在不铸。
103
+ * [ref]:组拒码 → 铸它的那条模型面不变量 —— **以码为键**,键集**恰是**契约包的组拒码闭集 `MODEL_PLANE_REFUSAL_CODES`(每个码恰有一个铸码方,就是本仓模型面 stage):
104
+ * 契约包加一个码而本表没收 ⇒ 本仓 tsc 红(`satisfies` 的映射型要求每个键)。模型面 stage 的组拒按**码**铸(码是判决那刻的数据),不变量 id 由本表派生 ——
105
+ * 一个 id 两个码(`model-route-endpoint`)时码不可能从 id 反推,反过来查才是全函数。
106
+ * (曾有第二本账 `ENGINE_MINTED_PLANE_REFUSAL_CODES`:契约包出码、执法者是本仓而尚未执法的码。本地腿确认闸落地后那一码由 stage 铸,第二本账与它的三道交叉门一并退役 —— 一本账、一道门。)
102
107
  */
103
108
  export declare const PLANE_REFUSAL_INVARIANT_OF: {
104
109
  readonly "config.default_model_missing": "default-model-resolvable";
105
110
  readonly "config.model_refused_name_minted": "refused-names-not-minted";
106
111
  readonly "config.model_route_endpoint_missing": "model-route-endpoint";
107
112
  readonly "config.gateway_fallback_without_primary": "model-route-endpoint";
113
+ readonly "config.catalog_replaces_env_models": "env-table-replacement-acknowledged";
108
114
  };
109
- /**
110
- * 契约包出码、执法者是本仓但今天**未执法**的组拒码:本地配置腿上「管模型面的目录会顶替已声明的 env 表、决定不是 `replaced`」那道闸。
111
- *
112
- * 词义:settings-schema 发布说明里的「engine / 引擎一侧」指**本仓(worker)**,不是 `@sema-agent/core` —— 这个码要的全部输入(本地配置腿、env 表、模型面 stage 与组拒口)只在本仓,core 里没有读
113
- * `MODEL_ID` / `config.d` 的地方、也没有组拒码。所以本仓 stage 现在没有对应的不变量、不铸这个码,不是因为「归引擎」,而是**还没做**:
114
- * · `CATALOG_REPLACES_ENV_MODELS_CODE`:执法是一整组跨仓件 —— 开机迁移 SS-M11(铸决定文档)· 本地腿每拍读决定(读数身份进候选的 etag)· 目录信任判官走根级文档 · 命令行 / 桌面 / 客户端核心三个写者先接契约包的计划助手;
115
- * 候设计票。在那之前,候选目录管着模型面而 env 表也声明了时,仍照旧由目录服务(与升级前逐位同)。
116
- * 这个码开始被铸之后,它进 `/health.modelRefusals.plane` 的座位是**另案设计**(现在没有座:见 `model-plane-face.ts` 对「装配期被引擎整份拒收」的披露),不在这张表里偷铸一个不变量替它占位。
117
- */
118
- export declare const ENGINE_MINTED_PLANE_REFUSAL_CODES: readonly ["config.catalog_replaces_env_models"];
119
115
  /**
120
116
  * [ref] —— **「无中心配置」档的候选**:中心凭证换人时,server 把在用的中心配置降到这一档({@link applyEffective} 吃它,和吃任何候选走同一条 stage → swap → commit)。
121
117
  * 它的意思是「**撤回**中心配置」—— 中心下发的每个热面回 env 底:
@@ -159,5 +155,5 @@ export declare function applyRuntimeHot(config: ServiceConfig, gov: EffectiveCon
159
155
  * (env-derived) config, WITHOUT applying it. The safe-rollout step the web-admin recommends — verify
160
156
  * the center's models/roles match (or intentionally differ from) the env baseline before going live.
161
157
  */
162
- export declare function logEffectiveDiff(config: ServiceConfig, eff: EffectiveConfig, logger?: Logger): void;
158
+ export declare function logEffectiveDiff(config: ServiceConfig, eff: EffectiveConfig, catalogSource: CatalogSource, logger?: Logger): void;
163
159
  //# sourceMappingURL=apply-effective.d.ts.map