@zlink-systems/framework 0.26.0 → 0.28.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 (561) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/contracts/Actors/ZLinkActorClient.d.ts +1 -1
  3. package/dist/contracts/Channels/Calls.d.ts +1 -1
  4. package/dist/contracts/Common/CoreTypes.d.ts +6 -0
  5. package/dist/contracts/Common/CoreTypes.js +7 -0
  6. package/dist/contracts/Common/index.d.ts +1 -1
  7. package/dist/contracts/Common/index.js +0 -1
  8. package/dist/contracts/Configuration/Builders.d.ts +0 -1
  9. package/dist/contracts/Configuration/Configs.d.ts +0 -1
  10. package/dist/contracts/Configuration/InternalDefaults.d.ts +8 -0
  11. package/dist/contracts/Configuration/InternalDefaults.js +9 -1
  12. package/dist/contracts/Configuration/Registration.d.ts +13 -2
  13. package/dist/contracts/Configuration/Registration.js +58 -36
  14. package/dist/contracts/Configuration/RegistrationBuilderPolicy.d.ts +13 -1
  15. package/dist/contracts/Configuration/RegistrationBuilderPolicy.js +38 -1
  16. package/dist/contracts/Configuration/RegistrationBuilders.d.ts +2 -3
  17. package/dist/contracts/Configuration/RegistrationBuilders.js +27 -32
  18. package/dist/contracts/Configuration/RegistrationTypes.d.ts +1 -5
  19. package/dist/contracts/Configuration/RegistrationValidators.js +15 -14
  20. package/dist/contracts/Configuration/TimerRegistrationValidator.js +3 -2
  21. package/dist/contracts/Dispatch/ZLinkDispatchOptions.d.ts +1 -1
  22. package/dist/contracts/Handlers/JsonContract.js +10 -4
  23. package/dist/contracts/Locations/Authority.d.ts +1 -1
  24. package/dist/contracts/Locations/Authority.js +3 -2
  25. package/dist/contracts/Locations/Options.js +1 -1
  26. package/dist/contracts/Locations/Stores.d.ts +12 -0
  27. package/dist/contracts/Locations/Stores.js +9 -0
  28. package/dist/contracts/Spots/Contracts.d.ts +2 -2
  29. package/dist/contracts/Streams/BoundSessionContracts.d.ts +1 -1
  30. package/dist/contracts/Streams/IZLinkSession.d.ts +2 -3
  31. package/dist/contracts/Streams/IZLinkSessionActor.d.ts +2 -2
  32. package/dist/internal.d.ts +4 -0
  33. package/dist/internal.js +15 -1
  34. package/dist/nest-integration.d.ts +4 -2
  35. package/dist/nest-integration.js +14 -4
  36. package/dist/runtime/abort.d.ts +1 -0
  37. package/dist/runtime/abort.js +8 -5
  38. package/dist/runtime/activation-admission.d.ts +1 -2
  39. package/dist/runtime/activation-admission.js +2 -6
  40. package/dist/runtime/actors/actor-authority-payload-codec.d.ts +1 -2
  41. package/dist/runtime/actors/actor-authority-payload-codec.js +34 -18
  42. package/dist/runtime/actors/actor-client.d.ts +2 -2
  43. package/dist/runtime/actors/actor-client.js +49 -153
  44. package/dist/runtime/actors/actor-context.d.ts +3 -5
  45. package/dist/runtime/actors/actor-context.js +13 -11
  46. package/dist/runtime/actors/actor-handoff.d.ts +4 -4
  47. package/dist/runtime/actors/actor-handoff.js +8 -8
  48. package/dist/runtime/actors/actor-lifecycle-snapshot.js +2 -1
  49. package/dist/runtime/actors/actor-local-native-join.d.ts +11 -6
  50. package/dist/runtime/actors/actor-local-native-join.js +83 -105
  51. package/dist/runtime/actors/actor-native-lookup.js +2 -8
  52. package/dist/runtime/actors/actor-packet-relay-wire.d.ts +3 -3
  53. package/dist/runtime/actors/actor-packet-relay-wire.js +5 -3
  54. package/dist/runtime/actors/actor-remote-joiner.d.ts +1 -1
  55. package/dist/runtime/actors/actor-remote-joiner.js +5 -9
  56. package/dist/runtime/actors/actor-remote-wire.js +5 -3
  57. package/dist/runtime/actors/actor-request-deadline.d.ts +1 -0
  58. package/dist/runtime/actors/actor-request-deadline.js +6 -0
  59. package/dist/runtime/actors/actor-retry-delay.js +2 -1
  60. package/dist/runtime/actors/actor-routed-join-transport.d.ts +2 -3
  61. package/dist/runtime/actors/actor-runtime-state.d.ts +9 -21
  62. package/dist/runtime/actors/actor-runtime-state.js +70 -187
  63. package/dist/runtime/actors/bound-session-wire.js +2 -7
  64. package/dist/runtime/actors/deferred-join-completion.d.ts +11 -6
  65. package/dist/runtime/actors/deferred-join-completion.js +1 -0
  66. package/dist/runtime/actors/index.d.ts +9 -7
  67. package/dist/runtime/actors/index.js +87 -69
  68. package/dist/runtime/actors/spot-actor-dispatch.d.ts +3 -3
  69. package/dist/runtime/actors/spot-actor-dispatch.js +25 -10
  70. package/dist/runtime/actors/transferred-actor-rollback.d.ts +3 -5
  71. package/dist/runtime/actors/transferred-actor-rollback.js +9 -42
  72. package/dist/runtime/admission.d.ts +2 -0
  73. package/dist/runtime/admission.js +7 -1
  74. package/dist/runtime/application-jobs/application-job-queue-scope.d.ts +1 -1
  75. package/dist/runtime/application-jobs/application-job-queue-scope.js +1 -1
  76. package/dist/runtime/backend/contracts/index.d.ts +7 -27
  77. package/dist/runtime/backend/mesh-actor-session-node-adapter.js +1 -17
  78. package/dist/runtime/backend/mesh-dispatch-pump.d.ts +1 -2
  79. package/dist/runtime/backend/mesh-dispatch-pump.js +95 -107
  80. package/dist/runtime/backend/node/node-backend-adapter-support.d.ts +3 -1
  81. package/dist/runtime/backend/node/node-backend-adapter-support.js +51 -10
  82. package/dist/runtime/backend/node/node-dealer-channel-client-transport.d.ts +1 -1
  83. package/dist/runtime/backend/node/node-dealer-channel-client-transport.js +1 -2
  84. package/dist/runtime/backend/node/node-event-loop-poller.d.ts +2 -2
  85. package/dist/runtime/backend/node/node-event-loop-poller.js +6 -7
  86. package/dist/runtime/backend/node/node-monitor-backend-adapter.js +1 -0
  87. package/dist/runtime/backend/node/node-raw-binding-port.js +41 -34
  88. package/dist/runtime/backend/node/node-raw-mesh-backend.d.ts +14 -15
  89. package/dist/runtime/backend/node/node-raw-mesh-backend.js +146 -118
  90. package/dist/runtime/backend/node/node-socket-backend-adapter.js +4 -3
  91. package/dist/runtime/backend/raw-binding-port.d.ts +1 -1
  92. package/dist/runtime/backend/runtime-values.d.ts +4 -1
  93. package/dist/runtime/backend/runtime-values.js +2 -0
  94. package/dist/runtime/channels/channel-clients.d.ts +20 -8
  95. package/dist/runtime/channels/channel-clients.js +73 -59
  96. package/dist/runtime/channels/channel-envelope-inspection.js +2 -1
  97. package/dist/runtime/channels/channel-envelope.d.ts +1 -1
  98. package/dist/runtime/channels/channel-envelope.js +51 -39
  99. package/dist/runtime/channels/channel-outbound-operations.d.ts +5 -2
  100. package/dist/runtime/channels/channel-outbound-operations.js +25 -42
  101. package/dist/runtime/channels/channel-receive-loops.d.ts +8 -3
  102. package/dist/runtime/channels/channel-receive-loops.js +27 -6
  103. package/dist/runtime/channels/channel-runtime-lifecycle.d.ts +12 -1
  104. package/dist/runtime/channels/channel-runtime-lifecycle.js +48 -28
  105. package/dist/runtime/channels/channel-runtime-manager.d.ts +4 -4
  106. package/dist/runtime/channels/channel-runtime-manager.js +13 -10
  107. package/dist/runtime/channels/channel-socket-options.js +3 -12
  108. package/dist/runtime/channels/channel-socket-registry.d.ts +14 -29
  109. package/dist/runtime/channels/channel-socket-registry.js +240 -177
  110. package/dist/runtime/channels/channel-transports.d.ts +21 -31
  111. package/dist/runtime/channels/channel-transports.js +80 -62
  112. package/dist/runtime/channels/client-server-location-runtime.d.ts +1 -1
  113. package/dist/runtime/channels/client-server-location-runtime.js +10 -11
  114. package/dist/runtime/channels/client-server-service-wire.d.ts +7 -2
  115. package/dist/runtime/channels/client-server-service-wire.js +32 -11
  116. package/dist/runtime/channels/dispatch-error-reporter.d.ts +1 -2
  117. package/dist/runtime/channels/dispatch-error-reporter.js +2 -1
  118. package/dist/runtime/channels/fanout-location-runtime.d.ts +16 -3
  119. package/dist/runtime/channels/fanout-location-runtime.js +130 -72
  120. package/dist/runtime/channels/local-spot-route-transport.d.ts +1 -1
  121. package/dist/runtime/channels/local-spot-route-transport.js +1 -3
  122. package/dist/runtime/channels/router-socket-spot-route-transport.d.ts +1 -1
  123. package/dist/runtime/channels/router-socket-spot-route-transport.js +2 -2
  124. package/dist/runtime/channels/source-spot-router.d.ts +1 -1
  125. package/dist/runtime/channels/source-spot-router.js +2 -4
  126. package/dist/runtime/channels/spot-direct-envelope.d.ts +1 -0
  127. package/dist/runtime/channels/spot-direct-envelope.js +4 -3
  128. package/dist/runtime/channels/spot-node-route-transport.d.ts +1 -1
  129. package/dist/runtime/channels/spot-node-route-transport.js +5 -5
  130. package/dist/runtime/channels/spot-route-bridge-transport.d.ts +1 -1
  131. package/dist/runtime/channels/spot-route-bridge-transport.js +2 -2
  132. package/dist/runtime/channels/spot-route-dispatch-strategy.d.ts +2 -4
  133. package/dist/runtime/channels/spot-route-dispatch-strategy.js +11 -12
  134. package/dist/runtime/diagnostics/diagnostic-text.d.ts +2 -0
  135. package/dist/runtime/diagnostics/diagnostic-text.js +7 -0
  136. package/dist/runtime/diagnostics/dispatch-error-details.d.ts +3 -0
  137. package/dist/runtime/diagnostics/dispatch-error-details.js +30 -2
  138. package/dist/runtime/diagnostics/flow-context.d.ts +6 -0
  139. package/dist/runtime/diagnostics/flow-context.js +16 -2
  140. package/dist/runtime/diagnostics/index.d.ts +4 -2
  141. package/dist/runtime/diagnostics/index.js +14 -4
  142. package/dist/runtime/diagnostics/message-flow.d.ts +1 -1
  143. package/dist/runtime/diagnostics/message-flow.js +10 -19
  144. package/dist/runtime/diagnostics/runtime-metrics.d.ts +94 -31
  145. package/dist/runtime/diagnostics/runtime-metrics.js +168 -105
  146. package/dist/runtime/diagnostics/runtime-observation-queue.js +3 -2
  147. package/dist/runtime/diagnostics/topology-runtime-projections.d.ts +2 -4
  148. package/dist/runtime/diagnostics/topology-runtime-projections.js +135 -154
  149. package/dist/runtime/disposal.d.ts +5 -0
  150. package/dist/runtime/disposal.js +22 -0
  151. package/dist/runtime/execution/index.d.ts +12 -9
  152. package/dist/runtime/execution/index.js +58 -14
  153. package/dist/runtime/execution/serial-execution-queue.d.ts +8 -2
  154. package/dist/runtime/execution/serial-execution-queue.js +54 -15
  155. package/dist/runtime/execution/state-lane.d.ts +8 -1
  156. package/dist/runtime/execution/state-lane.js +118 -3
  157. package/dist/runtime/foundation/actor-join-recovery-codec.d.ts +3 -0
  158. package/dist/runtime/foundation/actor-join-recovery-codec.js +15 -11
  159. package/dist/runtime/foundation/event-loop-resources.d.ts +2 -24
  160. package/dist/runtime/foundation/event-loop-resources.js +6 -119
  161. package/dist/runtime/foundation/operation-identity.d.ts +2 -0
  162. package/dist/runtime/foundation/operation-identity.js +9 -5
  163. package/dist/runtime/foundation/operation-registry.d.ts +5 -7
  164. package/dist/runtime/foundation/operation-registry.js +34 -44
  165. package/dist/runtime/foundation/raw-service-mesh-runtime.d.ts +8 -5
  166. package/dist/runtime/foundation/raw-service-mesh-runtime.js +79 -94
  167. package/dist/runtime/foundation/runtime-state-projections.d.ts +3 -1
  168. package/dist/runtime/foundation/runtime-state-projections.js +8 -0
  169. package/dist/runtime/foundation/service-authority-payload-codec.js +22 -12
  170. package/dist/runtime/foundation/service-discovery-registry.d.ts +4 -0
  171. package/dist/runtime/foundation/service-discovery-registry.js +22 -3
  172. package/dist/runtime/foundation/service-instance-activation-recovery-codec.js +8 -4
  173. package/dist/runtime/foundation/service-liveness-registry.js +2 -1
  174. package/dist/runtime/foundation/service-maintenance-runtime.d.ts +0 -1
  175. package/dist/runtime/foundation/service-maintenance-runtime.js +0 -6
  176. package/dist/runtime/foundation/service-metadata-codec.js +3 -3
  177. package/dist/runtime/foundation/service-relocation-aggregate-committer.d.ts +2 -5
  178. package/dist/runtime/foundation/service-relocation-aggregate-committer.js +1 -48
  179. package/dist/runtime/foundation/service-relocation-object-owner.js +3 -2
  180. package/dist/runtime/foundation/service-relocation-runtime.js +43 -32
  181. package/dist/runtime/foundation/service-runtime-contracts.d.ts +40 -8
  182. package/dist/runtime/foundation/service-runtime-contracts.js +25 -1
  183. package/dist/runtime/foundation/service-session-binding-ingress-port.d.ts +0 -12
  184. package/dist/runtime/foundation/service-stateful-registry.d.ts +2 -0
  185. package/dist/runtime/foundation/service-stateful-registry.js +10 -2
  186. package/dist/runtime/foundation/service-stateful-runtime.d.ts +26 -25
  187. package/dist/runtime/foundation/service-stateful-runtime.js +217 -204
  188. package/dist/runtime/foundation/service-stateful-wire-codec.d.ts +3 -3
  189. package/dist/runtime/foundation/service-stateful-wire-codec.js +89 -55
  190. package/dist/runtime/foundation/service-topology-registry.d.ts +0 -1
  191. package/dist/runtime/foundation/service-topology-registry.js +17 -32
  192. package/dist/runtime/foundation/service-wire-binary-primitives.d.ts +5 -0
  193. package/dist/runtime/foundation/service-wire-binary-primitives.js +6 -0
  194. package/dist/runtime/foundation/service-wire-codec.js +10 -8
  195. package/dist/runtime/foundation/service-wire-constants.generated.d.ts +1 -0
  196. package/dist/runtime/foundation/service-wire-constants.generated.js +2 -1
  197. package/dist/runtime/foundation/service-wire-m6a-codec.d.ts +2 -0
  198. package/dist/runtime/foundation/service-wire-m6a-codec.js +23 -13
  199. package/dist/runtime/framework-errors-internal.d.ts +2 -1
  200. package/dist/runtime/framework-errors-internal.js +343 -122
  201. package/dist/runtime/handlers/handler-instance-scope.d.ts +3 -1
  202. package/dist/runtime/handlers/handler-instance-scope.js +61 -74
  203. package/dist/runtime/host/actor-packet-relay.d.ts +11 -8
  204. package/dist/runtime/host/actor-packet-relay.js +54 -99
  205. package/dist/runtime/host/actor-placement-coordinator.js +7 -5
  206. package/dist/runtime/host/actor-runtime-options-factory.d.ts +2 -0
  207. package/dist/runtime/host/actor-runtime-options-factory.js +17 -4
  208. package/dist/runtime/host/actor-transfer-runtime.d.ts +16 -18
  209. package/dist/runtime/host/actor-transfer-runtime.js +143 -176
  210. package/dist/runtime/host/application-job-queue.js +16 -33
  211. package/dist/runtime/host/bound-session-relay.js +1 -1
  212. package/dist/runtime/host/channel-runtime-options-factory.js +1 -1
  213. package/dist/runtime/host/index.d.ts +14 -13
  214. package/dist/runtime/host/index.js +190 -171
  215. package/dist/runtime/host/instance-activation-authority.d.ts +2 -3
  216. package/dist/runtime/host/instance-activation-authority.js +17 -45
  217. package/dist/runtime/host/location-runtime-owner.d.ts +1 -1
  218. package/dist/runtime/host/location-runtime-owner.js +2 -2
  219. package/dist/runtime/host/remote-actor-join-receiver.d.ts +2 -2
  220. package/dist/runtime/host/remote-actor-join-receiver.js +1 -14
  221. package/dist/runtime/host/remote-actor-packet-target-store.d.ts +3 -2
  222. package/dist/runtime/host/remote-actor-packet-target-store.js +8 -47
  223. package/dist/runtime/host/remote-bound-session-relay.d.ts +2 -3
  224. package/dist/runtime/host/remote-bound-session-relay.js +15 -28
  225. package/dist/runtime/host/route-mesh-runtime.d.ts +13 -11
  226. package/dist/runtime/host/route-mesh-runtime.js +171 -252
  227. package/dist/runtime/host/runtime-shutdown.d.ts +2 -0
  228. package/dist/runtime/host/runtime-shutdown.js +18 -21
  229. package/dist/runtime/host/service-relocation-control.js +6 -1
  230. package/dist/runtime/host/service-relocation-host-runtime.d.ts +21 -30
  231. package/dist/runtime/host/service-relocation-host-runtime.js +508 -416
  232. package/dist/runtime/host/spot-address-transport.d.ts +3 -12
  233. package/dist/runtime/host/spot-address-transport.js +78 -220
  234. package/dist/runtime/host/spot-node-runtime-options-factory.d.ts +1 -1
  235. package/dist/runtime/host/spot-node-runtime-options-factory.js +3 -2
  236. package/dist/runtime/host/spot-runtime-options-factory.d.ts +4 -10
  237. package/dist/runtime/host/spot-runtime-options-factory.js +50 -14
  238. package/dist/runtime/host/user-spot-creation-coordinator.d.ts +3 -3
  239. package/dist/runtime/host/user-spot-creation-coordinator.js +11 -8
  240. package/dist/runtime/locations/aggregate-inventory-store.js +13 -10
  241. package/dist/runtime/locations/authority-key-codec.js +4 -3
  242. package/dist/runtime/locations/auto-connect-reconciler.d.ts +4 -0
  243. package/dist/runtime/locations/auto-connect-reconciler.js +37 -25
  244. package/dist/runtime/locations/creation-operation-id.js +6 -4
  245. package/dist/runtime/locations/domain-store-contract.d.ts +3 -3
  246. package/dist/runtime/locations/in-memory-authority-store.js +31 -15
  247. package/dist/runtime/locations/in-memory-location-store.d.ts +2 -2
  248. package/dist/runtime/locations/in-memory-location-store.js +17 -14
  249. package/dist/runtime/locations/in-memory-provider-location-store.d.ts +1 -0
  250. package/dist/runtime/locations/in-memory-provider-location-store.js +72 -22
  251. package/dist/runtime/locations/key-codec.js +3 -2
  252. package/dist/runtime/locations/lease-tracker.d.ts +3 -5
  253. package/dist/runtime/locations/lease-tracker.js +7 -11
  254. package/dist/runtime/locations/lifecycle.d.ts +4 -9
  255. package/dist/runtime/locations/lifecycle.js +2 -31
  256. package/dist/runtime/locations/location-store-failure.d.ts +2 -0
  257. package/dist/runtime/locations/location-store-failure.js +7 -0
  258. package/dist/runtime/locations/location-store-pages.d.ts +3 -0
  259. package/dist/runtime/locations/location-store-pages.js +13 -0
  260. package/dist/runtime/locations/location-store-repository.d.ts +5 -7
  261. package/dist/runtime/locations/location-store-repository.js +309 -336
  262. package/dist/runtime/locations/relocation-blob.js +18 -5
  263. package/dist/runtime/locations/resolvers.d.ts +5 -5
  264. package/dist/runtime/locations/resolvers.js +37 -28
  265. package/dist/runtime/locations/runtime.d.ts +5 -4
  266. package/dist/runtime/locations/runtime.js +123 -92
  267. package/dist/runtime/locations/spot-location-claims.d.ts +6 -0
  268. package/dist/runtime/locations/spot-location-claims.js +42 -1
  269. package/dist/runtime/messaging/payload-codec.js +26 -20
  270. package/dist/runtime/messaging/request-deadline.d.ts +3 -0
  271. package/dist/runtime/messaging/request-deadline.js +39 -0
  272. package/dist/runtime/messaging/submission-result.d.ts +4 -0
  273. package/dist/runtime/messaging/submission-result.js +56 -1
  274. package/dist/runtime/protocol/service_wire_codec.generated.d.ts +1 -0
  275. package/dist/runtime/protocol/service_wire_codec.generated.js +12 -7
  276. package/dist/runtime/spots/formal-remote-actor-transfer-registry.d.ts +4 -1
  277. package/dist/runtime/spots/index.d.ts +14 -20
  278. package/dist/runtime/spots/index.js +302 -176
  279. package/dist/runtime/spots/spot-activation-registry.d.ts +3 -5
  280. package/dist/runtime/spots/spot-activation-registry.js +14 -50
  281. package/dist/runtime/spots/spot-activation-state.d.ts +1 -1
  282. package/dist/runtime/spots/spot-activation-state.js +2 -2
  283. package/dist/runtime/spots/spot-activation.d.ts +3 -4
  284. package/dist/runtime/spots/spot-activation.js +49 -32
  285. package/dist/runtime/spots/spot-actor-admission-coordinator.d.ts +1 -2
  286. package/dist/runtime/spots/spot-actor-admission-coordinator.js +3 -40
  287. package/dist/runtime/spots/spot-actor-join-dispatch.d.ts +10 -18
  288. package/dist/runtime/spots/spot-actor-join-dispatch.js +4 -52
  289. package/dist/runtime/spots/spot-actor-membership.d.ts +4 -6
  290. package/dist/runtime/spots/spot-actor-membership.js +22 -45
  291. package/dist/runtime/spots/spot-actor-packet-dispatch.d.ts +0 -1
  292. package/dist/runtime/spots/spot-actor-packet-dispatch.js +0 -9
  293. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.d.ts +2 -2
  294. package/dist/runtime/spots/spot-actor-packet-relay-dispatch.js +1 -7
  295. package/dist/runtime/spots/spot-context.d.ts +2 -2
  296. package/dist/runtime/spots/spot-entry-activation.d.ts +2 -2
  297. package/dist/runtime/spots/spot-entry-activation.js +9 -20
  298. package/dist/runtime/spots/spot-lifecycle-metrics.js +3 -2
  299. package/dist/runtime/spots/spot-manager-public.d.ts +5 -6
  300. package/dist/runtime/spots/spot-manager-public.js +5 -4
  301. package/dist/runtime/spots/spot-node-autoconnect.js +22 -31
  302. package/dist/runtime/spots/spot-node-runtime-manager.d.ts +19 -18
  303. package/dist/runtime/spots/spot-node-runtime-manager.js +67 -72
  304. package/dist/runtime/spots/spot-outbound.d.ts +7 -8
  305. package/dist/runtime/spots/spot-outbound.js +21 -23
  306. package/dist/runtime/spots/spot-remote-codec.js +5 -3
  307. package/dist/runtime/spots/spot-route-packet-dispatch.d.ts +2 -2
  308. package/dist/runtime/spots/spot-route-packet-dispatch.js +8 -8
  309. package/dist/runtime/spots/spot-route-replies.d.ts +2 -2
  310. package/dist/runtime/spots/spot-route-replies.js +3 -1
  311. package/dist/runtime/spots/spot-routed-actor-admission.d.ts +3 -3
  312. package/dist/runtime/spots/spot-routed-actor-admission.js +3 -12
  313. package/dist/runtime/spots/spot-routed-frame-dispatch.d.ts +1 -2
  314. package/dist/runtime/spots/spot-routed-frame-dispatch.js +0 -1
  315. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.d.ts +4 -0
  316. package/dist/runtime/spots/spot-routed-spot-packet-dispatch.js +65 -15
  317. package/dist/runtime/spots/spot-runtime-ports.d.ts +2 -16
  318. package/dist/runtime/spots/spot-serial-executor.js +2 -2
  319. package/dist/runtime/spots/spot-serial-turn-executor.d.ts +27 -7
  320. package/dist/runtime/spots/spot-serial-turn-executor.js +83 -11
  321. package/dist/runtime/spots/spot-timer.d.ts +3 -2
  322. package/dist/runtime/streams/actor-session-binding-registry.d.ts +16 -29
  323. package/dist/runtime/streams/actor-session-binding-registry.js +142 -212
  324. package/dist/runtime/streams/actor-session-binding-runtime-owner.d.ts +1 -4
  325. package/dist/runtime/streams/bound-actor-relay-sender.d.ts +8 -4
  326. package/dist/runtime/streams/bound-actor-relay-sender.js +65 -41
  327. package/dist/runtime/streams/bound-session-service.d.ts +7 -0
  328. package/dist/runtime/streams/bound-session-service.js +12 -2
  329. package/dist/runtime/streams/index.d.ts +16 -17
  330. package/dist/runtime/streams/index.js +22 -23
  331. package/dist/runtime/streams/managed-stream.d.ts +5 -2
  332. package/dist/runtime/streams/managed-stream.js +20 -13
  333. package/dist/runtime/streams/native-fallback-bound-session.js +14 -19
  334. package/dist/runtime/streams/protocol.d.ts +6 -33
  335. package/dist/runtime/streams/protocol.js +38 -110
  336. package/dist/runtime/streams/session-actor-coordinator.d.ts +2 -3
  337. package/dist/runtime/streams/session-actor-coordinator.js +12 -4
  338. package/dist/runtime/streams/session-calls.d.ts +6 -8
  339. package/dist/runtime/streams/session-calls.js +6 -22
  340. package/dist/runtime/streams/session-context.d.ts +10 -10
  341. package/dist/runtime/streams/session-context.js +25 -10
  342. package/dist/runtime/streams/session-requests.js +2 -1
  343. package/dist/runtime/streams/stream-binding-runtime-ports.d.ts +16 -1
  344. package/dist/runtime/streams/stream-frame-factory.js +2 -2
  345. package/dist/runtime/streams/stream-session-runtime.d.ts +10 -11
  346. package/dist/runtime/streams/stream-session-runtime.js +25 -33
  347. package/dist/runtime/workers/index.d.ts +2 -2
  348. package/dist/runtime/workers/index.js +5 -4
  349. package/package.json +3 -3
  350. package/src/contracts/Actors/ZLinkActorClient.ts +1 -1
  351. package/src/contracts/Channels/Calls.ts +1 -1
  352. package/src/contracts/Common/CoreTypes.ts +7 -0
  353. package/src/contracts/Common/index.ts +1 -1
  354. package/src/contracts/Configuration/Builders.ts +0 -1
  355. package/src/contracts/Configuration/Configs.ts +0 -1
  356. package/src/contracts/Configuration/InternalDefaults.ts +12 -0
  357. package/src/contracts/Configuration/Registration.ts +92 -48
  358. package/src/contracts/Configuration/RegistrationBuilderPolicy.ts +44 -2
  359. package/src/contracts/Configuration/RegistrationBuilders.ts +77 -71
  360. package/src/contracts/Configuration/RegistrationTypes.ts +1 -5
  361. package/src/contracts/Configuration/RegistrationValidators.ts +19 -17
  362. package/src/contracts/Configuration/TimerRegistrationValidator.ts +4 -2
  363. package/src/contracts/Dispatch/ZLinkDispatchOptions.ts +1 -0
  364. package/src/contracts/Handlers/JsonContract.ts +14 -4
  365. package/src/contracts/Locations/Authority.ts +7 -3
  366. package/src/contracts/Locations/Options.ts +1 -1
  367. package/src/contracts/Locations/Stores.ts +14 -0
  368. package/src/contracts/Spots/Contracts.ts +2 -2
  369. package/src/contracts/Streams/BoundSessionContracts.ts +1 -1
  370. package/src/contracts/Streams/IZLinkSession.ts +2 -3
  371. package/src/contracts/Streams/IZLinkSessionActor.ts +2 -6
  372. package/src/internal.ts +14 -0
  373. package/src/nest-integration.ts +28 -10
  374. package/src/runtime/abort.ts +6 -5
  375. package/src/runtime/activation-admission.ts +2 -8
  376. package/src/runtime/actors/actor-authority-payload-codec.ts +58 -20
  377. package/src/runtime/actors/actor-client.ts +85 -218
  378. package/src/runtime/actors/actor-context.ts +39 -33
  379. package/src/runtime/actors/actor-handoff.ts +24 -22
  380. package/src/runtime/actors/actor-lifecycle-snapshot.ts +2 -1
  381. package/src/runtime/actors/actor-local-native-join.ts +172 -174
  382. package/src/runtime/actors/actor-native-lookup.ts +2 -9
  383. package/src/runtime/actors/actor-packet-relay-wire.ts +18 -12
  384. package/src/runtime/actors/actor-remote-joiner.ts +9 -11
  385. package/src/runtime/actors/actor-remote-wire.ts +5 -3
  386. package/src/runtime/actors/actor-request-deadline.ts +4 -0
  387. package/src/runtime/actors/actor-retry-delay.ts +2 -1
  388. package/src/runtime/actors/actor-routed-join-transport.ts +3 -5
  389. package/src/runtime/actors/actor-runtime-state.ts +85 -247
  390. package/src/runtime/actors/bound-session-wire.ts +2 -8
  391. package/src/runtime/actors/deferred-join-completion.ts +10 -6
  392. package/src/runtime/actors/index.ts +100 -79
  393. package/src/runtime/actors/spot-actor-dispatch.ts +60 -29
  394. package/src/runtime/actors/transferred-actor-rollback.ts +11 -62
  395. package/src/runtime/admission.ts +8 -1
  396. package/src/runtime/application-jobs/application-job-queue-scope.ts +4 -4
  397. package/src/runtime/backend/contracts/index.ts +14 -37
  398. package/src/runtime/backend/mesh-actor-session-node-adapter.ts +2 -18
  399. package/src/runtime/backend/mesh-dispatch-pump.ts +111 -117
  400. package/src/runtime/backend/node/node-backend-adapter-support.ts +67 -10
  401. package/src/runtime/backend/node/node-dealer-channel-client-transport.ts +0 -2
  402. package/src/runtime/backend/node/node-event-loop-poller.ts +8 -12
  403. package/src/runtime/backend/node/node-monitor-backend-adapter.ts +1 -0
  404. package/src/runtime/backend/node/node-raw-binding-port.ts +44 -49
  405. package/src/runtime/backend/node/node-raw-mesh-backend.ts +227 -170
  406. package/src/runtime/backend/node/node-socket-backend-adapter.ts +4 -3
  407. package/src/runtime/backend/raw-binding-port.ts +1 -1
  408. package/src/runtime/backend/runtime-values.ts +4 -1
  409. package/src/runtime/channels/channel-clients.ts +139 -102
  410. package/src/runtime/channels/channel-envelope-inspection.ts +2 -1
  411. package/src/runtime/channels/channel-envelope.ts +74 -57
  412. package/src/runtime/channels/channel-outbound-operations.ts +40 -55
  413. package/src/runtime/channels/channel-receive-loops.ts +39 -7
  414. package/src/runtime/channels/channel-runtime-lifecycle.ts +60 -27
  415. package/src/runtime/channels/channel-runtime-manager.ts +12 -30
  416. package/src/runtime/channels/channel-socket-options.ts +8 -15
  417. package/src/runtime/channels/channel-socket-registry.ts +291 -196
  418. package/src/runtime/channels/channel-transports.ts +168 -145
  419. package/src/runtime/channels/client-server-location-runtime.ts +17 -17
  420. package/src/runtime/channels/client-server-service-wire.ts +40 -12
  421. package/src/runtime/channels/dispatch-error-reporter.ts +7 -5
  422. package/src/runtime/channels/fanout-location-runtime.ts +172 -91
  423. package/src/runtime/channels/local-spot-route-transport.ts +1 -5
  424. package/src/runtime/channels/router-socket-spot-route-transport.ts +2 -6
  425. package/src/runtime/channels/source-spot-router.ts +2 -9
  426. package/src/runtime/channels/spot-direct-envelope.ts +1 -1
  427. package/src/runtime/channels/spot-node-route-transport.ts +7 -9
  428. package/src/runtime/channels/spot-route-bridge-transport.ts +5 -12
  429. package/src/runtime/channels/spot-route-dispatch-strategy.ts +11 -30
  430. package/src/runtime/diagnostics/diagnostic-text.ts +4 -0
  431. package/src/runtime/diagnostics/dispatch-error-details.ts +36 -1
  432. package/src/runtime/diagnostics/flow-context.ts +16 -2
  433. package/src/runtime/diagnostics/index.ts +27 -17
  434. package/src/runtime/diagnostics/message-flow.ts +15 -25
  435. package/src/runtime/diagnostics/runtime-metrics.ts +181 -113
  436. package/src/runtime/diagnostics/runtime-observation-queue.ts +3 -2
  437. package/src/runtime/diagnostics/topology-runtime-projections.ts +194 -162
  438. package/src/runtime/disposal.ts +19 -0
  439. package/src/runtime/execution/index.ts +60 -20
  440. package/src/runtime/execution/serial-execution-queue.ts +131 -18
  441. package/src/runtime/execution/state-lane.ts +142 -4
  442. package/src/runtime/foundation/actor-join-recovery-codec.ts +13 -8
  443. package/src/runtime/foundation/event-loop-resources.ts +5 -122
  444. package/src/runtime/foundation/operation-identity.ts +11 -5
  445. package/src/runtime/foundation/operation-registry.ts +33 -50
  446. package/src/runtime/foundation/raw-service-mesh-runtime.ts +127 -125
  447. package/src/runtime/foundation/runtime-state-projections.ts +9 -1
  448. package/src/runtime/foundation/service-authority-payload-codec.ts +31 -13
  449. package/src/runtime/foundation/service-discovery-registry.ts +32 -3
  450. package/src/runtime/foundation/service-instance-activation-recovery-codec.ts +12 -4
  451. package/src/runtime/foundation/service-liveness-registry.ts +2 -1
  452. package/src/runtime/foundation/service-maintenance-runtime.ts +0 -10
  453. package/src/runtime/foundation/service-metadata-codec.ts +2 -2
  454. package/src/runtime/foundation/service-relocation-aggregate-committer.ts +3 -66
  455. package/src/runtime/foundation/service-relocation-object-owner.ts +5 -2
  456. package/src/runtime/foundation/service-relocation-runtime.ts +57 -35
  457. package/src/runtime/foundation/service-runtime-contracts.ts +46 -10
  458. package/src/runtime/foundation/service-session-binding-ingress-port.ts +0 -17
  459. package/src/runtime/foundation/service-stateful-registry.ts +14 -2
  460. package/src/runtime/foundation/service-stateful-runtime.ts +322 -276
  461. package/src/runtime/foundation/service-stateful-wire-codec.ts +128 -80
  462. package/src/runtime/foundation/service-topology-registry.ts +23 -32
  463. package/src/runtime/foundation/service-wire-binary-primitives.ts +6 -0
  464. package/src/runtime/foundation/service-wire-codec.ts +15 -8
  465. package/src/runtime/foundation/service-wire-constants.generated.ts +1 -0
  466. package/src/runtime/foundation/service-wire-m6a-codec.ts +29 -15
  467. package/src/runtime/framework-errors-internal.ts +380 -134
  468. package/src/runtime/handlers/handler-instance-scope.ts +68 -95
  469. package/src/runtime/host/actor-packet-relay.ts +63 -160
  470. package/src/runtime/host/actor-placement-coordinator.ts +8 -5
  471. package/src/runtime/host/actor-runtime-options-factory.ts +27 -8
  472. package/src/runtime/host/actor-transfer-runtime.ts +180 -260
  473. package/src/runtime/host/application-job-queue.ts +28 -34
  474. package/src/runtime/host/bound-session-relay.ts +1 -2
  475. package/src/runtime/host/channel-runtime-options-factory.ts +1 -2
  476. package/src/runtime/host/index.ts +327 -320
  477. package/src/runtime/host/instance-activation-authority.ts +89 -109
  478. package/src/runtime/host/location-runtime-owner.ts +4 -2
  479. package/src/runtime/host/remote-actor-join-receiver.ts +3 -31
  480. package/src/runtime/host/remote-actor-packet-target-store.ts +17 -58
  481. package/src/runtime/host/remote-bound-session-relay.ts +16 -57
  482. package/src/runtime/host/route-mesh-runtime.ts +228 -271
  483. package/src/runtime/host/runtime-shutdown.ts +17 -21
  484. package/src/runtime/host/service-relocation-control.ts +14 -1
  485. package/src/runtime/host/service-relocation-host-runtime.ts +699 -561
  486. package/src/runtime/host/spot-address-transport.ts +175 -356
  487. package/src/runtime/host/spot-node-runtime-options-factory.ts +6 -3
  488. package/src/runtime/host/spot-runtime-options-factory.ts +73 -22
  489. package/src/runtime/host/user-spot-creation-coordinator.ts +36 -22
  490. package/src/runtime/locations/aggregate-inventory-store.ts +16 -13
  491. package/src/runtime/locations/authority-key-codec.ts +7 -3
  492. package/src/runtime/locations/auto-connect-reconciler.ts +39 -26
  493. package/src/runtime/locations/creation-operation-id.ts +6 -3
  494. package/src/runtime/locations/domain-store-contract.ts +12 -3
  495. package/src/runtime/locations/in-memory-authority-store.ts +44 -15
  496. package/src/runtime/locations/in-memory-location-store.ts +50 -39
  497. package/src/runtime/locations/in-memory-provider-location-store.ts +100 -25
  498. package/src/runtime/locations/key-codec.ts +3 -2
  499. package/src/runtime/locations/lease-tracker.ts +8 -14
  500. package/src/runtime/locations/lifecycle.ts +13 -43
  501. package/src/runtime/locations/location-store-failure.ts +4 -0
  502. package/src/runtime/locations/location-store-pages.ts +18 -0
  503. package/src/runtime/locations/location-store-repository.ts +457 -482
  504. package/src/runtime/locations/relocation-blob.ts +17 -6
  505. package/src/runtime/locations/resolvers.ts +75 -49
  506. package/src/runtime/locations/runtime.ts +220 -110
  507. package/src/runtime/locations/spot-location-claims.ts +58 -1
  508. package/src/runtime/messaging/payload-codec.ts +35 -24
  509. package/src/runtime/messaging/request-deadline.ts +58 -0
  510. package/src/runtime/messaging/submission-result.ts +72 -2
  511. package/src/runtime/protocol/service_wire_codec.generated.ts +18 -8
  512. package/src/runtime/protocol/service_wire_pilot_codec.generated.ts +1 -1
  513. package/src/runtime/spots/formal-remote-actor-transfer-registry.ts +4 -1
  514. package/src/runtime/spots/index.ts +433 -229
  515. package/src/runtime/spots/spot-activation-registry.ts +30 -69
  516. package/src/runtime/spots/spot-activation-state.ts +2 -2
  517. package/src/runtime/spots/spot-activation.ts +67 -37
  518. package/src/runtime/spots/spot-actor-admission-coordinator.ts +5 -57
  519. package/src/runtime/spots/spot-actor-join-dispatch.ts +24 -77
  520. package/src/runtime/spots/spot-actor-membership.ts +40 -72
  521. package/src/runtime/spots/spot-actor-packet-dispatch.ts +0 -16
  522. package/src/runtime/spots/spot-actor-packet-relay-dispatch.ts +3 -15
  523. package/src/runtime/spots/spot-context.ts +3 -3
  524. package/src/runtime/spots/spot-entry-activation.ts +13 -30
  525. package/src/runtime/spots/spot-lifecycle-metrics.ts +3 -2
  526. package/src/runtime/spots/spot-manager-public.ts +21 -17
  527. package/src/runtime/spots/spot-node-autoconnect.ts +20 -26
  528. package/src/runtime/spots/spot-node-runtime-manager.ts +136 -125
  529. package/src/runtime/spots/spot-outbound.ts +59 -47
  530. package/src/runtime/spots/spot-remote-codec.ts +7 -3
  531. package/src/runtime/spots/spot-route-packet-dispatch.ts +25 -24
  532. package/src/runtime/spots/spot-route-replies.ts +6 -4
  533. package/src/runtime/spots/spot-routed-actor-admission.ts +13 -26
  534. package/src/runtime/spots/spot-routed-frame-dispatch.ts +2 -3
  535. package/src/runtime/spots/spot-routed-spot-packet-dispatch.ts +95 -22
  536. package/src/runtime/spots/spot-runtime-ports.ts +5 -27
  537. package/src/runtime/spots/spot-serial-executor.ts +2 -2
  538. package/src/runtime/spots/spot-serial-turn-executor.ts +112 -11
  539. package/src/runtime/spots/spot-timer.ts +3 -2
  540. package/src/runtime/streams/actor-session-binding-registry.ts +179 -269
  541. package/src/runtime/streams/actor-session-binding-runtime-owner.ts +0 -8
  542. package/src/runtime/streams/bound-actor-relay-sender.ts +98 -66
  543. package/src/runtime/streams/bound-session-service.ts +22 -2
  544. package/src/runtime/streams/index.ts +78 -68
  545. package/src/runtime/streams/managed-stream.ts +32 -23
  546. package/src/runtime/streams/native-fallback-bound-session.ts +14 -28
  547. package/src/runtime/streams/protocol.ts +34 -88
  548. package/src/runtime/streams/session-actor-coordinator.ts +17 -5
  549. package/src/runtime/streams/session-calls.ts +11 -36
  550. package/src/runtime/streams/session-context.ts +60 -25
  551. package/src/runtime/streams/session-requests.ts +2 -1
  552. package/src/runtime/streams/stream-binding-runtime-ports.ts +22 -1
  553. package/src/runtime/streams/stream-frame-factory.ts +2 -3
  554. package/src/runtime/streams/stream-session-runtime.ts +57 -59
  555. package/src/runtime/workers/index.ts +13 -12
  556. package/dist/runtime/actors/post-commit-actor-location.d.ts +0 -19
  557. package/dist/runtime/actors/post-commit-actor-location.js +0 -72
  558. package/dist/runtime/spots/spot-native-actor-join-admission.d.ts +0 -26
  559. package/dist/runtime/spots/spot-native-actor-join-admission.js +0 -106
  560. package/src/runtime/actors/post-commit-actor-location.ts +0 -121
  561. package/src/runtime/spots/spot-native-actor-join-admission.ts +0 -155
@@ -1,69 +1,72 @@
1
- import { createHash, randomUUID } from 'node:crypto';
2
- import type {
3
- ActorRef,
4
- RoutingId,
5
- ZLinkActor,
6
- ZLinkActorJoinOperationId,
7
- ZLinkMessageSerializer,
8
- ZLinkSpot
1
+ import { createHash } from 'node:crypto';
2
+ import {
3
+ type ActorRef,
4
+ type RoutingId,
5
+ type ZLinkActor,
6
+ type ZLinkActorJoinOperationId,
7
+ type ZLinkMessageSerializer,
8
+ type ZLinkSpot,
9
+ ZLinkEncodedPayload,
10
+ ZLinkMessage,
11
+ ZLinkSpotKind
9
12
  } from '../../contracts';
10
- import { ZLinkEncodedPayload, ZLinkMessage, ZLinkSpotKind } from '../../contracts';
11
- import { ZLinkBufferMessage as RuntimeMessage } from '../backend/runtime-message';
12
- import type {
13
- ZLinkAggregateId,
14
- ZLinkAuthoritySnapshot,
15
- ZLinkLocationOwnerToken
16
- } from '../locations/internal-location-contracts';
17
- import type {
18
- ZLinkAuthorityStore,
19
- ZLinkObjectCreationStore,
20
- ZLinkOwnerLeaseStore
21
- } from '../locations/internal-store-contracts';
22
- import { encodeAuthorityKey } from '../locations/authority-key-codec';
13
+
23
14
  import type { Message } from '../../contracts/Common/Message';
24
- import type { ZLinkBackendActorRef, ZLinkBackendMeshNode } from '../backend';
25
15
  import {
16
+ createDeferredJoinCompletion,
17
+ rewriteActorAuthorityRoute,
26
18
  toFrameworkActorRef,
27
- mergeRemoteBoundSessionTarget,
28
- preferredRemoteBoundSessionTarget,
29
19
  type ZLinkActorHandoffCoordinator,
30
20
  type ZLinkActorHandoffPrefixAdmission,
31
21
  type ZLinkActorHandoffPrefixQueue,
32
22
  type ZLinkActorHandoffReplayPreparation,
33
23
  type ZLinkActorRoutedJoinTransport,
34
24
  type ZLinkActorTransferRegistry,
35
- createDeferredJoinCompletion,
36
- rewriteActorAuthorityRoute,
37
25
  type ZLinkDeferredJoinCompletion,
38
26
  type ZLinkRemoteBoundSessionTarget
39
27
  } from '../actors';
40
- import type { ZLinkActorRuntimeState } from '../actors/actor-runtime-state';
41
- import { ZLinkActorRetryDelay } from '../actors/actor-retry-delay';
42
- import { encodeRoutingIdStorageHex, routingIdsEqual } from '../routing-id';
43
- import type { ZLinkLocationLifecycle } from '../locations';
44
- import { wrapFrameworkPayloadMessage } from '../messaging/payload-codec';
45
- import type { DefaultZLinkSpotManager } from '../spots';
46
- import type { ZLinkSpotRouteResolver, ZLinkSpotRouteTarget } from '../spots/spot-routing-internal';
47
28
  import type {
48
29
  ZLinkActorHandoffPacket,
49
30
  ZLinkActorHandoffResult,
50
31
  ZLinkActorHandoffTerminalAcceptance,
51
32
  ZLinkActorHandoffTerminalAck
52
33
  } from '../actors/actor-handoff';
53
- import type { ZLinkNativeActorJoinSnapshot } from '../spots/spot-runtime-ports';
54
34
  import {
55
35
  ownerFence,
56
36
  type ZLinkActorMessageFollowOwnerFence
57
37
  } from '../actors/actor-message-follow-context';
58
- import type {
59
- ServiceSessionRelocationRoute,
60
- ServiceSessionRelocationSeal,
61
- ServiceSessionRelocationSealed,
62
- ServiceWireOperationId
63
- } from '../foundation/service-stateful-wire-codec';
64
- import { serviceSessionRelocationIdentityKey } from '../foundation/service-stateful-wire-codec';
38
+ import type { ZLinkActorRuntimeState } from '../actors/actor-runtime-state';
39
+ import type { ZLinkBackendActorRef, ZLinkBackendMeshNode } from '../backend';
40
+ import { ZLinkBufferMessage as RuntimeMessage } from '../backend/runtime-message';
41
+ import { isRelocationDebugEnabled, relocationDebug } from '../diagnostics';
65
42
  import { operationIdentityKey } from '../foundation/operation-identity';
43
+ import {
44
+ type ServiceSessionRelocationRoute,
45
+ type ServiceSessionRelocationSeal,
46
+ type ServiceSessionRelocationSealed,
47
+ type ServiceWireOperationId,
48
+ serviceSessionRelocationIdentityKey
49
+ } from '../foundation/service-stateful-wire-codec';
50
+
51
+ import type { ZLinkLocationLifecycle } from '../locations';
52
+ import { encodeAuthorityKey } from '../locations/authority-key-codec';
53
+ import type {
54
+ ZLinkAggregateId,
55
+ ZLinkAuthoritySnapshot,
56
+ ZLinkLocationOwnerToken
57
+ } from '../locations/internal-location-contracts';
58
+ import type {
59
+ ZLinkAuthorityStore,
60
+ ZLinkObjectCreationStore,
61
+ ZLinkOwnerLeaseStore
62
+ } from '../locations/internal-store-contracts';
63
+ import { wrapFrameworkPayloadMessage } from '../messaging/payload-codec';
64
+ import { encodeRoutingIdStorageHex, routingIdsEqual } from '../routing-id';
65
+ import type { DefaultZLinkSpotManager } from '../spots';
66
+ import type { ZLinkSpotRouteResolver, ZLinkSpotRouteTarget } from '../spots/spot-routing-internal';
66
67
  import { BoundedReplayMap } from './bounded-replay-map';
68
+ const TRANSFER_RESOLUTION_TIMEOUT_MS = 5_000;
69
+ const TRANSFER_POLL_INTERVAL_MS = 10;
67
70
 
68
71
  const DEFERRED_JOIN_TERMINAL_CAPACITY = 4096;
69
72
 
@@ -165,7 +168,7 @@ export interface ZLinkActorTransferRuntimeActorManager {
165
168
  actorType: string,
166
169
  objectGeneration: bigint,
167
170
  authorityOwnerGeneration: bigint,
168
- spotId: RoutingId,
171
+ spotId: RoutingId | undefined,
169
172
  spotGeneration: bigint,
170
173
  membershipEpoch: bigint,
171
174
  signal?: AbortSignal,
@@ -212,7 +215,6 @@ export interface ZLinkActorTransferRuntimeOptions {
212
215
  }
213
216
 
214
217
  export class ZLinkActorTransferRuntime {
215
- private readonly sourceDepartureTasks = new Map<string, Promise<void>>();
216
218
  private readonly coreSourceLeaves = new Map<
217
219
  string,
218
220
  {
@@ -284,11 +286,11 @@ export class ZLinkActorTransferRuntime {
284
286
  }
285
287
 
286
288
  /**
287
- * Runs the Accepted completion callback once in the target Actor mailbox.
289
+ * Runs the completion callback once in the target Actor mailbox.
288
290
  * A repeated delivery of the same OperationId in this process observes the
289
291
  * first terminal (completion idempotency only).
290
292
  */
291
- async deliverDeferredJoinAccepted(
293
+ async deliverDeferredJoinCompletion(
292
294
  completion: ZLinkDeferredJoinCompletion,
293
295
  actor: ZLinkActor,
294
296
  actorRef: ActorRef,
@@ -302,7 +304,7 @@ export class ZLinkActorTransferRuntime {
302
304
  }
303
305
  const active = this.activeDeferredJoinTerminals.get(terminalKey);
304
306
  if (active !== undefined) return await waitForOperation(active, signal);
305
- const delivery = this.deliverDeferredJoinAcceptedCore(
307
+ const delivery = this.deliverDeferredJoinCompletionCore(
306
308
  completion,
307
309
  actor,
308
310
  actorRef,
@@ -325,7 +327,7 @@ export class ZLinkActorTransferRuntime {
325
327
  return await waitForOperation(delivery, signal);
326
328
  }
327
329
 
328
- private async deliverDeferredJoinAcceptedCore(
330
+ private async deliverDeferredJoinCompletionCore(
329
331
  completion: ZLinkDeferredJoinCompletion,
330
332
  actor: ZLinkActor,
331
333
  actorRef: ActorRef,
@@ -349,6 +351,14 @@ export class ZLinkActorTransferRuntime {
349
351
  );
350
352
  }
351
353
  await submitMailbox(async () => {
354
+ if (completion.status === 'failed') {
355
+ await actor.onJoinCompleted?.({
356
+ status: 'failed',
357
+ operationId: completion.operationId,
358
+ kind: completion.kind
359
+ });
360
+ return;
361
+ }
352
362
  await actor.onJoinCompleted?.({
353
363
  status: 'accepted',
354
364
  operationId: completion.operationId,
@@ -416,15 +426,19 @@ export class ZLinkActorTransferRuntime {
416
426
  }
417
427
  try {
418
428
  if (state.spotId !== undefined) {
419
- relocationDebug('source_actor_move.await_spot_transfer', {
420
- actorId: actor.context.actorId,
421
- spotId: String(state.spotId)
422
- });
429
+ if (isRelocationDebugEnabled()) {
430
+ relocationDebug('source_actor_move.await_spot_transfer', {
431
+ actorId: actor.context.actorId,
432
+ spotId: String(state.spotId)
433
+ });
434
+ }
423
435
  await this.options.spotManager()?.beginActorTransfer(state.spotId, actor.context.actorId);
424
- relocationDebug('source_actor_move.spot_transfer_complete', {
425
- actorId: actor.context.actorId,
426
- spotId: String(state.spotId)
427
- });
436
+ if (isRelocationDebugEnabled()) {
437
+ relocationDebug('source_actor_move.spot_transfer_complete', {
438
+ actorId: actor.context.actorId,
439
+ spotId: String(state.spotId)
440
+ });
441
+ }
428
442
  }
429
443
  } catch (error) {
430
444
  if (!deferredJoin) {
@@ -549,12 +563,12 @@ export class ZLinkActorTransferRuntime {
549
563
  );
550
564
  const sourceSpotId = state.spotId;
551
565
  let sourceLeaveStarted = false;
552
- let sealId: string | undefined;
566
+ // The relocation operation owns its Session seal; the Actor keeps only
567
+ // its current binding (Session–Actor binding §8.1).
568
+ let sealedSession: ZLinkRemoteBoundSessionTarget | undefined;
553
569
  try {
554
- if (state.remoteBoundSessionTarget !== undefined) {
555
- sealId = randomUUID();
556
- const sealedTarget = await this.sealBoundSessionRoute(actor, state, signal, relocation);
557
- state.setRemoteBoundSessionTarget(sealedTarget);
570
+ if (state.boundSession !== undefined) {
571
+ sealedSession = await this.sealBoundSessionRoute(actor, state, signal, relocation);
558
572
  this.options.actorHandoff.sealConnectionBoundIngress(actor.context.actorId);
559
573
  }
560
574
  const transfer = await this.options.actorTransferRegistry.transferOut(
@@ -667,8 +681,7 @@ export class ZLinkActorTransferRuntime {
667
681
  void sourceLeaveCompletion.then(
668
682
  () => this.scheduleSourceDeparture(actor, sourceSpotId, true),
669
683
  (error) => {
670
- this.options.reportPostCommitError?.(error);
671
- this.scheduleSourceDeparture(actor, sourceSpotId, true);
684
+ this.scheduleSourceDeparture(actor, sourceSpotId, true, [error]);
672
685
  }
673
686
  );
674
687
  } else {
@@ -685,8 +698,8 @@ export class ZLinkActorTransferRuntime {
685
698
  try {
686
699
  await this.cancelSourceActorMove(actor, state, deferredJoin, replayGate.start);
687
700
  await this.restoreSourceActor(actor, sourceSpotId);
688
- if (sealId !== undefined) {
689
- await this.observeBoundSessionSealAbort(actor, state);
701
+ if (sealedSession !== undefined) {
702
+ await this.observeBoundSessionSealAbort(actor, state, sealedSession);
690
703
  }
691
704
  } finally {
692
705
  replayGate.open();
@@ -699,8 +712,8 @@ export class ZLinkActorTransferRuntime {
699
712
  try {
700
713
  await this.cancelSourceActorMove(actor, state, deferredJoin, replayGate.start);
701
714
  if (sourceLeaveStarted) await this.restoreSourceActor(actor, sourceSpotId);
702
- if (sealId !== undefined) {
703
- await this.observeBoundSessionSealAbort(actor, state);
715
+ if (sealedSession !== undefined) {
716
+ await this.observeBoundSessionSealAbort(actor, state, sealedSession);
704
717
  }
705
718
  } catch (rollbackError) {
706
719
  throw new AggregateError(
@@ -733,10 +746,12 @@ export class ZLinkActorTransferRuntime {
733
746
  rollback(): Promise<void>;
734
747
  discard(reason: unknown): void;
735
748
  }> {
736
- relocationDebug('maintenance_session.begin', {
737
- actorId: actor.context.actorId,
738
- spotId: state.spotId === undefined ? undefined : String(state.spotId)
739
- });
749
+ if (isRelocationDebugEnabled()) {
750
+ relocationDebug('maintenance_session.begin', {
751
+ actorId: actor.context.actorId,
752
+ spotId: state.spotId === undefined ? undefined : String(state.spotId)
753
+ });
754
+ }
740
755
  if (manageMembership) {
741
756
  await this.beginSourceActorMove(actor, state);
742
757
  } else {
@@ -746,23 +761,22 @@ export class ZLinkActorTransferRuntime {
746
761
  requireSourceObjectGeneration(actor.context.actorId, state)
747
762
  );
748
763
  }
749
- relocationDebug('maintenance_session.source_move_complete', {
750
- actorId: actor.context.actorId
751
- });
752
- let sealId: string | undefined;
764
+ if (isRelocationDebugEnabled()) {
765
+ relocationDebug('maintenance_session.source_move_complete', {
766
+ actorId: actor.context.actorId
767
+ });
768
+ }
769
+ let sealedSession: ZLinkRemoteBoundSessionTarget | undefined;
753
770
  try {
754
- if (state.remoteBoundSessionTarget !== undefined) {
755
- sealId = randomUUID();
756
- state.setRemoteBoundSessionTarget(
757
- await this.sealBoundSessionRoute(actor, state, signal, relocation)
758
- );
771
+ if (state.boundSession !== undefined) {
772
+ sealedSession = await this.sealBoundSessionRoute(actor, state, signal, relocation);
759
773
  this.options.actorHandoff.sealConnectionBoundIngress(actor.context.actorId);
760
774
  }
761
775
  const handoffBacklog = this.options.actorHandoff.snapshot(actor.context.actorId);
762
776
  let terminal: 'prepared' | 'committed' | 'rolledBack' = 'prepared';
763
777
  let replayResults: readonly import('../actors').ZLinkActorHandoffResult[] = [];
764
778
  return {
765
- target: state.remoteBoundSessionTarget,
779
+ target: sealedSession,
766
780
  handoffBacklog,
767
781
  takeRelocationRelay: () =>
768
782
  this.options.actorHandoff.takeRelocationRelay(actor.context.actorId),
@@ -770,8 +784,10 @@ export class ZLinkActorTransferRuntime {
770
784
  if (terminal === 'prepared') replayResults = [...results];
771
785
  },
772
786
  commit: async (target, targetActorRef, targetOwnerFence) => {
773
- if (terminal === 'rolledBack') return;
774
- if (terminal === 'prepared') {
787
+ if (terminal !== 'prepared') return;
788
+ terminal = 'committed';
789
+ const failures: unknown[] = [];
790
+ try {
775
791
  this.options.actorHandoff.complete(
776
792
  actor.context.actorId,
777
793
  target,
@@ -779,13 +795,27 @@ export class ZLinkActorTransferRuntime {
779
795
  replayResults,
780
796
  targetOwnerFence
781
797
  );
798
+ } catch (error) {
799
+ failures.push(error);
800
+ }
801
+ try {
782
802
  if (manageMembership && state.spotId !== undefined) {
783
803
  await this.options
784
804
  .spotManager()
785
805
  ?.commitActorLeaveAfterTransfer(state.spotId, actor.context.actorId);
786
806
  }
807
+ } catch (error) {
808
+ failures.push(error);
809
+ }
810
+ try {
787
811
  state.endMove();
788
- terminal = 'committed';
812
+ } catch (error) {
813
+ failures.push(error);
814
+ }
815
+ if (failures.length > 0) {
816
+ throw failures.length === 1
817
+ ? failures[0]
818
+ : new AggregateError(failures, 'Actor source retirement failed.');
789
819
  }
790
820
  },
791
821
  discard: (reason) => {
@@ -808,8 +838,8 @@ export class ZLinkActorTransferRuntime {
808
838
  state.endMove();
809
839
  }
810
840
  }
811
- if (sealId !== undefined) {
812
- await this.observeBoundSessionSealAbort(actor, state);
841
+ if (sealedSession !== undefined) {
842
+ await this.observeBoundSessionSealAbort(actor, state, sealedSession);
813
843
  }
814
844
  } finally {
815
845
  replayGate.open();
@@ -837,8 +867,8 @@ export class ZLinkActorTransferRuntime {
837
867
  state.endMove();
838
868
  }
839
869
  }
840
- if (sourceRestored && sealId !== undefined) {
841
- await this.observeBoundSessionSealAbort(actor, state);
870
+ if (sourceRestored && sealedSession !== undefined) {
871
+ await this.observeBoundSessionSealAbort(actor, state, sealedSession);
842
872
  }
843
873
  } finally {
844
874
  replayGate.open();
@@ -927,7 +957,7 @@ export class ZLinkActorTransferRuntime {
927
957
  signal?: AbortSignal,
928
958
  relocation?: ServiceWireOperationId
929
959
  ): Promise<ZLinkRemoteBoundSessionTarget> {
930
- const target = state.remoteBoundSessionTarget;
960
+ const target = state.boundSession;
931
961
  const actorRef = state.nativeActorRef;
932
962
  if (
933
963
  target === undefined ||
@@ -1028,17 +1058,10 @@ export class ZLinkActorTransferRuntime {
1028
1058
  private async abortBoundSessionRouteSeal(
1029
1059
  actor: ZLinkActor,
1030
1060
  state: ZLinkActorRuntimeState,
1031
- targetOverride?: ZLinkRemoteBoundSessionTarget
1061
+ target: ZLinkRemoteBoundSessionTarget
1032
1062
  ): Promise<void> {
1033
- const target =
1034
- targetOverride ??
1035
- preferredRemoteBoundSessionTarget(
1036
- state.remoteBoundSessionTarget,
1037
- state.boundSessionTransferTarget
1038
- );
1039
1063
  const actorRef = state.nativeActorRef;
1040
1064
  if (
1041
- target === undefined ||
1042
1065
  actorRef === undefined ||
1043
1066
  target.bindingGeneration === undefined ||
1044
1067
  target.previousAuthorityOwnerGeneration === undefined ||
@@ -1085,10 +1108,11 @@ export class ZLinkActorTransferRuntime {
1085
1108
 
1086
1109
  private async observeBoundSessionSealAbort(
1087
1110
  actor: ZLinkActor,
1088
- state: ZLinkActorRuntimeState
1111
+ state: ZLinkActorRuntimeState,
1112
+ sealedSession: ZLinkRemoteBoundSessionTarget
1089
1113
  ): Promise<void> {
1090
1114
  try {
1091
- await this.abortBoundSessionRouteSeal(actor, state);
1115
+ await this.abortBoundSessionRouteSeal(actor, state, sealedSession);
1092
1116
  } catch (error) {
1093
1117
  try {
1094
1118
  this.options.reportPostCommitError?.(error);
@@ -1130,49 +1154,58 @@ export class ZLinkActorTransferRuntime {
1130
1154
  private scheduleSourceDeparture(
1131
1155
  actor: ZLinkActor,
1132
1156
  sourceSpotId: RoutingId | undefined,
1133
- releaseLocation: boolean
1157
+ releaseLocation: boolean,
1158
+ failures: unknown[] = []
1134
1159
  ): void {
1135
- if (this.sourceDepartureTasks.has(actor.context.actorId)) return;
1136
- const task = this.finishSourceDeparture(actor, sourceSpotId, releaseLocation).finally(() =>
1137
- this.sourceDepartureTasks.delete(actor.context.actorId)
1138
- );
1139
- this.sourceDepartureTasks.set(actor.context.actorId, task);
1160
+ void this.finishSourceDeparture(actor, sourceSpotId, releaseLocation, failures);
1140
1161
  }
1141
1162
 
1142
1163
  private async finishSourceDeparture(
1143
1164
  actor: ZLinkActor,
1144
1165
  sourceSpotId: RoutingId | undefined,
1145
- releaseLocation: boolean
1166
+ releaseLocation: boolean,
1167
+ failures: unknown[]
1146
1168
  ): Promise<void> {
1147
- const retry = new ZLinkActorRetryDelay();
1148
- while (this.options.shutdownSignal?.()?.aborted !== true) {
1169
+ if (sourceSpotId !== undefined) {
1170
+ try {
1171
+ await this.options
1172
+ .spotManager()
1173
+ ?.commitActorLeaveAfterTransfer(sourceSpotId, actor.context.actorId);
1174
+ } catch (error) {
1175
+ failures.push(error);
1176
+ }
1177
+ }
1178
+ if (releaseLocation) {
1149
1179
  try {
1150
- if (sourceSpotId !== undefined) {
1180
+ const state = this.options.actorManager()?.getState(actor.context.actorId);
1181
+ if (state?.actorType !== undefined && state.ownsLocation) {
1151
1182
  await this.options
1152
- .spotManager()
1153
- ?.commitActorLeaveAfterTransfer(sourceSpotId, actor.context.actorId);
1154
- }
1155
- if (releaseLocation) {
1156
- const state = this.options.actorManager()?.getState(actor.context.actorId);
1157
- if (state?.actorType !== undefined && state.ownsLocation) {
1158
- await this.options
1159
- .locationLifecycle()
1160
- ?.releaseActor(state.actorType, actor.context.actorId);
1161
- state.markLocationReleased();
1162
- }
1163
- // Message Follow owns the bounded stale route after the native leave.
1164
- // The source Actor shell must therefore be removed from the process
1165
- // registry so a later relocation can materialize the same Actor ID on
1166
- // this node without colliding with its previous incarnation.
1167
- await this.options.actorManager()?.completeCoreRelocationSource(actor.context.actorId);
1183
+ .locationLifecycle()
1184
+ ?.releaseActor(state.actorType, actor.context.actorId);
1185
+ state.markLocationReleased();
1168
1186
  }
1169
- this.options.onSourceDepartureCompleted?.(actor.context.actorId);
1170
- return;
1171
1187
  } catch (error) {
1172
- this.options.reportPostCommitError?.(error);
1173
- if (!(await retry.wait(this.options.shutdownSignal?.()))) return;
1188
+ failures.push(error);
1174
1189
  }
1175
1190
  }
1191
+ try {
1192
+ // Message Follow keeps its route separately from the retired application instance.
1193
+ await this.options.actorManager()?.completeCoreRelocationSource(actor.context.actorId);
1194
+ } catch (error) {
1195
+ failures.push(error);
1196
+ }
1197
+ try {
1198
+ this.options.onSourceDepartureCompleted?.(actor.context.actorId);
1199
+ } catch (error) {
1200
+ failures.push(error);
1201
+ }
1202
+ if (failures.length > 0) {
1203
+ this.options.reportPostCommitError?.(
1204
+ failures.length === 1
1205
+ ? failures[0]
1206
+ : new AggregateError(failures, 'Actor source retirement failed.')
1207
+ );
1208
+ }
1176
1209
  }
1177
1210
 
1178
1211
  async getOrCreateRoutedActor(
@@ -1204,7 +1237,9 @@ export class ZLinkActorTransferRuntime {
1204
1237
  }
1205
1238
  if (actorRef !== undefined) {
1206
1239
  state.setNativeActorRef(actorRef as unknown as ZLinkBackendActorRef);
1207
- state.setRemoteBoundSessionTarget(remoteBoundSessionTarget);
1240
+ if (remoteBoundSessionTarget !== undefined) {
1241
+ state.installBoundSessionBinding(remoteBoundSessionTarget);
1242
+ }
1208
1243
  return { actor, actorRef: actorRef as unknown as ZLinkBackendActorRef };
1209
1244
  }
1210
1245
  return { actor, actorRef: state.ensureNativeActorRef(this.options.primaryMeshNode()) };
@@ -1234,14 +1269,10 @@ export class ZLinkActorTransferRuntime {
1234
1269
  throw new Error(`Actor '${actorId}' transfer state was not created.`);
1235
1270
  }
1236
1271
  if (actorEntryNodeRid !== undefined) state.setEntryNodeRid(actorEntryNodeRid);
1237
- state.setBoundSessionTransferTarget(remoteBoundSessionTarget);
1272
+ // The relocation delivers the binding it carried; the target installs it
1273
+ // through the one install rule (Session–Actor binding §6, §8).
1238
1274
  if (remoteBoundSessionTarget !== undefined) {
1239
- state.setRemoteBoundSessionTarget(
1240
- mergeRemoteBoundSessionTarget(remoteBoundSessionTarget, state.remoteBoundSessionTarget)
1241
- );
1242
- }
1243
- if (remoteBoundSessionTarget?.bindingGeneration !== undefined) {
1244
- state.setBoundSessionBindingGeneration(remoteBoundSessionTarget.bindingGeneration);
1275
+ state.installBoundSessionBinding(remoteBoundSessionTarget);
1245
1276
  }
1246
1277
  return {
1247
1278
  actor: materialized.actor,
@@ -1419,29 +1450,11 @@ export class ZLinkActorTransferRuntime {
1419
1450
  }
1420
1451
  }
1421
1452
 
1422
- rememberRoutedActorTransferTarget(
1423
- actorId: string,
1424
- target: ZLinkRemoteBoundSessionTarget | undefined
1425
- ): void {
1426
- if (target === undefined) return;
1427
- const state = this.options.actorManager()?.getState(actorId);
1428
- if (state === undefined) {
1429
- return;
1430
- }
1431
- state.setBoundSessionTransferTarget(target);
1432
- state.setRemoteBoundSessionTarget(
1433
- mergeRemoteBoundSessionTarget(target, state.remoteBoundSessionTarget)
1434
- );
1435
- if (target.bindingGeneration !== undefined) {
1436
- state.setBoundSessionBindingGeneration(target.bindingGeneration);
1437
- }
1438
- }
1439
-
1440
1453
  commitRoutedActor(actor: ZLinkActor, spotId: RoutingId, spot: ZLinkSpot): void {
1441
1454
  const state = this.options.actorManager()?.getState(actor.context.actorId);
1442
1455
  state?.setJoinedSpot(spotId, spot);
1443
1456
  const actorRef = state?.nativeActorRef;
1444
- const binding = state?.boundSessionTransferTarget;
1457
+ const binding = state?.boundSession;
1445
1458
  if (
1446
1459
  actorRef !== undefined &&
1447
1460
  binding?.sessionNodeRid !== undefined &&
@@ -1509,7 +1522,7 @@ export class ZLinkActorTransferRuntime {
1509
1522
  `Actor '${actor.context.actorId}' Core location does not match the committed target SPOT.`
1510
1523
  );
1511
1524
  }
1512
- const deadline = performance.now() + 5_000;
1525
+ const deadline = performance.now() + TRANSFER_RESOLUTION_TIMEOUT_MS;
1513
1526
  const ownerNodeGeneration = node.status().lifecycleGeneration;
1514
1527
  if (ownerNodeGeneration <= 0n) {
1515
1528
  throw new Error(
@@ -1547,7 +1560,7 @@ export class ZLinkActorTransferRuntime {
1547
1560
  if (claim.status !== 'conflict' || performance.now() >= deadline) {
1548
1561
  break;
1549
1562
  }
1550
- await new Promise<void>((resolve) => setTimeout(resolve, 10));
1563
+ await new Promise<void>((resolve) => setTimeout(resolve, TRANSFER_POLL_INTERVAL_MS));
1551
1564
  }
1552
1565
  if (claim.status === 'conflict') {
1553
1566
  throw new Error(`Actor '${actor.context.actorId}' target location takeover was rejected.`);
@@ -1581,44 +1594,24 @@ export class ZLinkActorTransferRuntime {
1581
1594
  state.setRemoteActorPacketTarget(target);
1582
1595
  }
1583
1596
 
1584
- async claimNativeActorLocation(
1597
+ /**
1598
+ * Publishes the committed route of the Session seal that the relocation
1599
+ * operation carried to this target (command 44, Session–Actor binding §8.2).
1600
+ */
1601
+ async publishRoutedActorOwnership(
1585
1602
  actor: ZLinkActor,
1586
- spotId: RoutingId,
1587
- spotMeshName: string
1588
- ): Promise<ZLinkNativeActorJoinSnapshot> {
1589
- const state = this.options.actorManager()?.getState(actor.context.actorId);
1590
- const previousLocation = this.options
1591
- .locationLifecycle()
1592
- ?.actorLocationSnapshot(actor.context.actorId);
1593
- const snapshot = {
1594
- spotId: state?.spotId,
1595
- spot: state?.spot,
1596
- locationSpotId: previousLocation?.spotId,
1597
- spotMeshName: previousLocation?.meshName,
1598
- actorRef: previousLocation?.actorRef,
1599
- spotGeneration: previousLocation?.spotGeneration,
1600
- membershipEpoch: previousLocation?.membershipEpoch,
1601
- ownerNodeGeneration: previousLocation?.ownerNodeGeneration
1602
- };
1603
- await this.claimRoutedActorLocation(actor, spotId, spotMeshName);
1604
- return snapshot;
1605
- }
1606
-
1607
- async publishRoutedActorOwnership(actor: ZLinkActor): Promise<void> {
1603
+ sealedSession: ZLinkRemoteBoundSessionTarget | undefined
1604
+ ): Promise<void> {
1608
1605
  const state = this.options.actorManager()?.getState(actor.context.actorId);
1609
1606
  const actorRef = state?.nativeActorRef;
1610
1607
  const generation = state?.locationGeneration;
1611
1608
  if (state === undefined || actorRef === undefined || generation === undefined) return;
1612
- const boundSessionTarget = preferredRemoteBoundSessionTarget(
1613
- state.remoteBoundSessionTarget,
1614
- state.boundSessionTransferTarget
1615
- );
1616
- if (boundSessionTarget?.serviceWireRelocation === undefined) return;
1609
+ if (sealedSession?.serviceWireRelocation === undefined) return;
1617
1610
  await this.publishBoundSessionOwnership(
1618
1611
  actor.context.actorId,
1619
1612
  actorRef,
1620
1613
  generation,
1621
- boundSessionTarget,
1614
+ sealedSession,
1622
1615
  state.ownerLeaseGeneration
1623
1616
  );
1624
1617
  }
@@ -1630,73 +1623,6 @@ export class ZLinkActorTransferRuntime {
1630
1623
  this.options.clearRemoteActorPacketTarget(actor.context.actorId);
1631
1624
  }
1632
1625
 
1633
- async rollbackNativeActorJoin(
1634
- actor: ZLinkActor,
1635
- snapshot: ZLinkNativeActorJoinSnapshot
1636
- ): Promise<void> {
1637
- const state = this.options.actorManager()?.getState(actor.context.actorId);
1638
- const actorType = state?.actorType;
1639
- const lifecycle = this.options.locationLifecycle();
1640
- if (snapshot.spotId === undefined) state?.clearJoinedSpot();
1641
- else state?.setJoinedSpot(snapshot.spotId, snapshot.spot);
1642
- if (state?.ownsLocation !== true || actorType === undefined || lifecycle === undefined) return;
1643
- if (snapshot.spotId === undefined) {
1644
- if (
1645
- snapshot.locationSpotId === undefined ||
1646
- snapshot.spotGeneration === undefined ||
1647
- snapshot.membershipEpoch === undefined ||
1648
- snapshot.ownerNodeGeneration === undefined
1649
- ) {
1650
- throw new Error(
1651
- `Actor '${actor.context.actorId}' cannot restore its Entry SPOT location without its exact generation fields.`
1652
- );
1653
- }
1654
- await lifecycle.notifyActorLeftSpot(
1655
- actorType,
1656
- actor.context.actorId,
1657
- snapshot.locationSpotId,
1658
- snapshot.spotGeneration,
1659
- snapshot.membershipEpoch,
1660
- snapshot.ownerNodeGeneration
1661
- );
1662
- return;
1663
- }
1664
- if (snapshot.actorRef === undefined) {
1665
- throw new Error(
1666
- `Actor '${actor.context.actorId}' cannot restore its previous SPOT location without a native ref.`
1667
- );
1668
- }
1669
- if (
1670
- snapshot.spotMeshName === undefined ||
1671
- snapshot.spotGeneration === undefined ||
1672
- snapshot.membershipEpoch === undefined ||
1673
- snapshot.ownerNodeGeneration === undefined
1674
- ) {
1675
- throw new Error(
1676
- `Actor '${actor.context.actorId}' cannot restore its previous SPOT location without its exact generation fields.`
1677
- );
1678
- }
1679
- const restored = await lifecycle.takeoverActorJoinedSpot(
1680
- actorType,
1681
- actor.context.actorId,
1682
- snapshot.actorRef,
1683
- snapshot.spotMeshName,
1684
- snapshot.spotId,
1685
- snapshot.spotGeneration,
1686
- snapshot.membershipEpoch,
1687
- snapshot.ownerNodeGeneration,
1688
- async () => state.clearAfterDestroy()
1689
- );
1690
- if (restored.status === 'conflict') {
1691
- throw new Error(
1692
- `Actor '${actor.context.actorId}' previous SPOT location could not be restored.`
1693
- );
1694
- }
1695
- if (restored.generation !== undefined) state.setLocationGeneration(restored.generation);
1696
- if (restored.claimed !== undefined)
1697
- state.setOwnerLeaseGeneration(restored.claimed.leaseGeneration);
1698
- }
1699
-
1700
1626
  async rollbackRoutedActor(actor: ZLinkActor, signal?: AbortSignal): Promise<void> {
1701
1627
  const manager = this.options.actorManager();
1702
1628
  const state = manager?.getState(actor.context.actorId);
@@ -1709,7 +1635,6 @@ export class ZLinkActorTransferRuntime {
1709
1635
  state.markLocationReleased();
1710
1636
  } catch (error) {
1711
1637
  locationError = error;
1712
- void lifecycle.releaseActorEventually(actorType, actor.context.actorId);
1713
1638
  }
1714
1639
  }
1715
1640
  try {
@@ -1808,11 +1733,6 @@ export class ZLinkActorTransferRuntime {
1808
1733
  }
1809
1734
  }
1810
1735
 
1811
- function relocationDebug(marker: string, detail: Record<string, unknown>): void {
1812
- if (process.env.ZLINK_DEBUG_FRAMEWORK_RELOCATION !== '1') return;
1813
- console.error('[zlink.runtime.relocation]', marker, detail);
1814
- }
1815
-
1816
1736
  function deferredJoinTerminalKey(completion: ZLinkDeferredJoinCompletion): string {
1817
1737
  return (
1818
1738
  `${completion.actor.actorId}:${completion.actor.objectGeneration.toString()}:` +
@@ -1870,7 +1790,7 @@ async function waitForActorAuthorityRetry(
1870
1790
  throw new Error('Actor target authority deadline expired.', { cause });
1871
1791
  }
1872
1792
  await new Promise<void>((resolve, reject) => {
1873
- const timer = setTimeout(resolve, Math.min(10, remaining));
1793
+ const timer = setTimeout(resolve, Math.min(TRANSFER_POLL_INTERVAL_MS, remaining));
1874
1794
  timer.unref();
1875
1795
  const abort = () => {
1876
1796
  clearTimeout(timer);