@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,24 +1,10 @@
1
+ import { ZLinkFrameworkException, ZLinkSpotKind, type RoutingId } from '../../contracts';
1
2
  import {
2
- ZLinkFrameworkInternalErrorKind,
3
- createInternalFrameworkException,
4
- internalFrameworkErrorKind,
5
- internalFrameworkErrorKindFromWireReply,
6
- isCanonicalWireReplyTerminal
7
- } from '../framework-errors-internal';
8
- import {
9
- RequestResult,
10
- SubmitResult,
11
- type ZLinkBackendMessageLike as MessageLike
12
- } from '../backend/runtime-values';
13
- import { ZLinkFrameworkException, type RoutingId } from '../../contracts';
14
- import { ZLinkSubmitStatus, type ZLinkSubmitResult } from '../messaging/submission-result';
15
- import { ZLinkSpotKind } from '../../contracts';
16
- import {
17
- ZLinkRuntimeMessageFlowOutcome as ZLinkMessageFlowOutcome,
18
3
  ZLinkRuntimeDispatchErrorAction as ZLinkDispatchErrorAction,
19
4
  ZLinkRuntimeDispatchErrorReason as ZLinkDispatchErrorReason,
20
5
  ZLinkDispatchErrorSurface,
21
- ZLinkDispatchMessageKind
6
+ ZLinkDispatchMessageKind,
7
+ ZLinkRuntimeMessageFlowOutcome as ZLinkMessageFlowOutcome
22
8
  } from '../../contracts/Dispatch/ZLinkDispatchOptions';
23
9
  import { awaitWithAbort } from '../abort';
24
10
  import type { ZLinkBackendMeshNode } from '../backend/contracts';
@@ -27,16 +13,32 @@ import {
27
13
  type ZLinkMeshCompletionTable
28
14
  } from '../backend/mesh-completion-table';
29
15
  import {
16
+ RequestResult,
17
+ type ZLinkBackendMessageLike as MessageLike
18
+ } from '../backend/runtime-values';
19
+ import type { ZLinkDispatchErrorReporter } from '../channels';
20
+ import {
21
+ ZLinkChannelMessageKind,
30
22
  decodeChannelReply,
31
23
  encodeChannelEnvelopeParts,
32
24
  encodeChannelEnvelopePartsAtDeadline,
33
- type ZLinkChannelEnvelopeCodecRegistry,
34
- ZLinkChannelMessageKind
25
+ type ZLinkChannelEnvelopeCodecRegistry
35
26
  } from '../channels/channel-envelope';
36
- import type { ZLinkDispatchErrorReporter } from '../channels';
37
27
  import { flowIfEnabled } from '../diagnostics';
38
28
  import { runWithOutboundFlow } from '../diagnostics/flow-context';
29
+ import {
30
+ ZLinkFrameworkInternalErrorKind,
31
+ createInternalFrameworkException,
32
+ internalFrameworkErrorKind,
33
+ internalFrameworkErrorKindFromWireReply,
34
+ isCanonicalWireReplyTerminal
35
+ } from '../framework-errors-internal';
39
36
  import { resolveFrameworkPacketName } from '../messaging/packet-name';
37
+ import {
38
+ ZLinkSubmitStatus,
39
+ classifySubmitResult,
40
+ type ZLinkSubmitResult
41
+ } from '../messaging/submission-result';
40
42
  import type {
41
43
  ZLinkSpotAddressCallOptions,
42
44
  ZLinkSpotAddressTransport,
@@ -53,12 +55,6 @@ export interface ZLinkHostSpotAddressTransportOptions {
53
55
  readonly completions: (meshName: string) => ZLinkMeshCompletionTable | undefined;
54
56
  readonly codecs?: ZLinkChannelEnvelopeCodecRegistry;
55
57
  readonly defaultRequestTimeoutMs: number;
56
- /** Internal one-way deadline policy; public calls do not expose this option. */
57
- readonly defaultSendTimeoutMs?: number;
58
- /** Resolves the send timeout for a configured Spot Mesh. */
59
- readonly sendTimeoutMsForMesh?: (meshName: string) => number;
60
- /** Resolves the send timeout for a resolved Spot route channel. */
61
- readonly sendTimeoutMsForRouteChannel?: (routeChannelId: string) => number;
62
58
  readonly dispatchErrors?: ZLinkDispatchErrorReporter;
63
59
  }
64
60
 
@@ -84,11 +80,6 @@ type MissingTargetSelection =
84
80
  | { readonly kind: 'capacity' }
85
81
  | { readonly kind: 'unavailable' };
86
82
 
87
- // Only a synchronous target-admission rejection is safe to retry. A
88
- // completion with the same public error kind may already represent an
89
- // admitted application operation, so it must not enter the retry loop.
90
- const PRE_ADMISSION_MISSING_INSTANCE_ERRORS = new WeakSet<ZLinkFrameworkException>();
91
-
92
83
  /** Owns global Spot authority lookup and Missing Instance placement. */
93
84
  export class ZLinkHostSpotAddressTransport implements ZLinkSpotAddressTransport {
94
85
  constructor(private readonly options: ZLinkHostSpotAddressTransportOptions) {}
@@ -96,7 +87,7 @@ export class ZLinkHostSpotAddressTransport implements ZLinkSpotAddressTransport
96
87
  sendToSpotAddress(
97
88
  spotId: RoutingId,
98
89
  message: unknown,
99
- call: ZLinkSpotAddressCallOptions
90
+ call: Omit<ZLinkSpotAddressCallOptions, 'timeoutMs' | 'signal'>
100
91
  ): Promise<ZLinkSubmitResult> {
101
92
  // Call-scoped flow (spec 27 §4): the envelope encoders and the
102
93
  // traceInstanceAddress points share one ambient flow that does not
@@ -110,155 +101,136 @@ export class ZLinkHostSpotAddressTransport implements ZLinkSpotAddressTransport
110
101
  private async sendToSpotAddressScoped(
111
102
  spotId: RoutingId,
112
103
  message: unknown,
113
- call: ZLinkSpotAddressCallOptions
104
+ call: Omit<ZLinkSpotAddressCallOptions, 'timeoutMs' | 'signal'>
114
105
  ): Promise<ZLinkSubmitResult> {
115
- const timeoutMs = initialSendTimeoutMs(this.options, call);
116
- const deadline = createSpotAddressDeadline(timeoutMs, call.signal);
117
- try {
118
- const existing = await this.resolveExisting(spotId, deadline.signal);
119
- deadline.requireRemaining();
120
- if (existing !== undefined) {
121
- this.validateExisting(existing, call);
122
- deadline.setOwnerTimeout(this.sendTimeoutMsForRouteChannel(existing.routerChannelId));
123
- try {
124
- const result = await awaitWithAbort(
125
- this.options.routed.sendToSpot(existing, message, {
126
- timeoutMs: deadline.requireRemaining(),
127
- signal: deadline.signal,
128
- metadata: call.metadata
129
- }),
130
- deadline.signal
106
+ const activationDeadlineUnixMs = BigInt(
107
+ Math.round(Date.now() + this.options.defaultRequestTimeoutMs)
108
+ );
109
+ const existing = await this.resolveExisting(spotId);
110
+ if (existing !== undefined) {
111
+ this.validateExisting(existing, call);
112
+ try {
113
+ const result = await this.options.routed.sendToSpot(existing, message, {
114
+ instanceSpot: call.instanceSpot,
115
+ metadata: call.metadata
116
+ });
117
+ if (result.status === ZLinkSubmitStatus.Submitted) {
118
+ this.traceInstanceAddress(
119
+ ZLinkMessageFlowOutcome.Sent,
120
+ ZLinkDispatchMessageKind.Send,
121
+ spotId,
122
+ message,
123
+ existing.routerChannelId,
124
+ existing.stableType,
125
+ existing.targetNodeRid
131
126
  );
132
- if (result.status === ZLinkSubmitStatus.Submitted) {
133
- this.traceInstanceAddress(
134
- ZLinkMessageFlowOutcome.Sent,
135
- ZLinkDispatchMessageKind.Send,
136
- spotId,
137
- message,
138
- existing.routerChannelId,
139
- existing.stableType,
140
- existing.targetNodeRid
141
- );
142
- } else {
143
- this.traceInstanceAddress(
144
- submitResultFlowOutcome(result.status),
145
- ZLinkDispatchMessageKind.Send,
146
- spotId,
147
- message,
148
- existing.routerChannelId,
149
- existing.stableType,
150
- existing.targetNodeRid,
151
- submitResultReason(result.status)
152
- );
153
- }
154
- if (
155
- result.status === ZLinkSubmitStatus.TargetNotFound ||
156
- result.status === ZLinkSubmitStatus.RouteNotConnected
157
- ) {
158
- this.options.resolver()?.invalidate?.(spotId);
159
- }
160
- return result;
161
- } catch (error) {
162
- if (isSpotRouteRefreshError(error)) {
163
- this.options.resolver()?.invalidate?.(spotId);
164
- }
165
- const reason = addressedInstanceErrorReason(error);
127
+ } else {
166
128
  this.traceInstanceAddress(
167
- reason === ZLinkDispatchErrorReason.Backpressure
168
- ? ZLinkMessageFlowOutcome.Backpressured
169
- : ZLinkMessageFlowOutcome.Dropped,
129
+ submitResultFlowOutcome(result.status),
170
130
  ZLinkDispatchMessageKind.Send,
171
131
  spotId,
172
132
  message,
173
133
  existing.routerChannelId,
174
134
  existing.stableType,
175
135
  existing.targetNodeRid,
176
- reason
136
+ submitResultReason(result.status)
177
137
  );
178
- throw error;
179
138
  }
180
- }
181
- if (!call.instanceSpot) {
182
- return { status: ZLinkSubmitStatus.TargetNotFound };
183
- }
184
- const selected = this.selectMissingTarget(spotId, call);
185
- if (selected.kind === 'unsupported') {
186
- this.traceInstanceAddress(
187
- ZLinkMessageFlowOutcome.Dropped,
188
- ZLinkDispatchMessageKind.Send,
189
- spotId,
190
- message,
191
- call.initialMeshName,
192
- call.instanceSpotType,
193
- undefined,
194
- ZLinkDispatchErrorReason.StaleTarget
195
- );
196
- return { status: ZLinkSubmitStatus.TargetNotFound };
197
- }
198
- if (selected.kind === 'capacity') {
199
- const error = missingInstancePlacementCapacity(spotId, call.instanceSpotType);
139
+ if (
140
+ result.status === ZLinkSubmitStatus.TargetNotFound ||
141
+ result.status === ZLinkSubmitStatus.RouteNotConnected
142
+ ) {
143
+ this.options.resolver()?.invalidate?.(spotId);
144
+ }
145
+ return result;
146
+ } catch (error) {
147
+ if (isSpotRouteRefreshError(error)) {
148
+ this.options.resolver()?.invalidate?.(spotId);
149
+ }
150
+ const reason = addressedInstanceErrorReason(error);
200
151
  this.traceInstanceAddress(
201
- ZLinkMessageFlowOutcome.Backpressured,
152
+ reason === ZLinkDispatchErrorReason.Backpressure
153
+ ? ZLinkMessageFlowOutcome.Backpressured
154
+ : ZLinkMessageFlowOutcome.Dropped,
202
155
  ZLinkDispatchMessageKind.Send,
203
156
  spotId,
204
157
  message,
205
- call.initialMeshName,
206
- call.instanceSpotType,
207
- undefined,
208
- ZLinkDispatchErrorReason.Backpressure
158
+ existing.routerChannelId,
159
+ existing.stableType,
160
+ existing.targetNodeRid,
161
+ reason
209
162
  );
210
163
  throw error;
211
164
  }
212
- if (selected.kind === 'unavailable') {
213
- this.traceInstanceAddress(
214
- ZLinkMessageFlowOutcome.Dropped,
215
- ZLinkDispatchMessageKind.Send,
216
- spotId,
217
- message,
218
- call.initialMeshName,
219
- call.instanceSpotType,
220
- undefined,
221
- ZLinkDispatchErrorReason.StaleTarget
222
- );
223
- return { status: ZLinkSubmitStatus.RouteNotConnected };
224
- }
225
- deadline.setOwnerTimeout(this.sendTimeoutMsForMesh(selected.meshName));
226
- const encoded = this.encode(ZLinkChannelMessageKind.Command, selected.meshName, message);
227
- const sourceSpotId =
228
- call.sourceSpot === undefined ? undefined : String(call.sourceSpot.routingId);
229
- const mapped = mapSubmitResult(
230
- await awaitWithAbort(
231
- selected.node.sendToMissingInstanceSpot(
232
- selected.target,
233
- encoded,
234
- BigInt(deadline.deadlineUnixMs),
235
- sourceSpotId,
236
- call.metadata
237
- ),
238
- deadline.signal
239
- )
165
+ }
166
+ if (!call.instanceSpot) {
167
+ return { status: ZLinkSubmitStatus.TargetNotFound };
168
+ }
169
+ const selected = this.selectMissingTarget(spotId, call);
170
+ if (selected.kind === 'unsupported') {
171
+ this.traceInstanceAddress(
172
+ ZLinkMessageFlowOutcome.Dropped,
173
+ ZLinkDispatchMessageKind.Send,
174
+ spotId,
175
+ message,
176
+ call.initialMeshName,
177
+ call.instanceSpotType,
178
+ undefined,
179
+ ZLinkDispatchErrorReason.StaleTarget
240
180
  );
181
+ return { status: ZLinkSubmitStatus.TargetNotFound };
182
+ }
183
+ if (selected.kind === 'capacity') {
184
+ const error = missingInstancePlacementCapacity(spotId, call.instanceSpotType);
241
185
  this.traceInstanceAddress(
242
- submitResultFlowOutcome(mapped.status),
186
+ ZLinkMessageFlowOutcome.Backpressured,
243
187
  ZLinkDispatchMessageKind.Send,
244
188
  spotId,
245
189
  message,
246
- selected.meshName,
247
- selected.target.stableType,
248
- selected.target.targetNodeRid,
249
- mapped.status === ZLinkSubmitStatus.Submitted
250
- ? undefined
251
- : submitResultReason(mapped.status)
190
+ call.initialMeshName,
191
+ call.instanceSpotType,
192
+ undefined,
193
+ ZLinkDispatchErrorReason.Backpressure
252
194
  );
253
- return mapped;
254
- } catch (error) {
255
- if (deadline.expired()) {
256
- return { status: ZLinkSubmitStatus.TimedOut };
257
- }
258
195
  throw error;
259
- } finally {
260
- deadline.close();
261
196
  }
197
+ if (selected.kind === 'unavailable') {
198
+ this.traceInstanceAddress(
199
+ ZLinkMessageFlowOutcome.Dropped,
200
+ ZLinkDispatchMessageKind.Send,
201
+ spotId,
202
+ message,
203
+ call.initialMeshName,
204
+ call.instanceSpotType,
205
+ undefined,
206
+ ZLinkDispatchErrorReason.StaleTarget
207
+ );
208
+ return { status: ZLinkSubmitStatus.RouteNotConnected };
209
+ }
210
+ const encoded = this.encode(ZLinkChannelMessageKind.Command, selected.meshName, message);
211
+ const sourceSpotId =
212
+ call.sourceSpot === undefined ? undefined : String(call.sourceSpot.routingId);
213
+ const mapped = classifySubmitResult(
214
+ await selected.node.sendToMissingInstanceSpot(
215
+ selected.target,
216
+ encoded,
217
+ activationDeadlineUnixMs,
218
+ sourceSpotId,
219
+ call.metadata
220
+ ),
221
+ 'Instance Spot submission'
222
+ );
223
+ this.traceInstanceAddress(
224
+ submitResultFlowOutcome(mapped.status),
225
+ ZLinkDispatchMessageKind.Send,
226
+ spotId,
227
+ message,
228
+ selected.meshName,
229
+ selected.target.stableType,
230
+ selected.target.targetNodeRid,
231
+ mapped.status === ZLinkSubmitStatus.Submitted ? undefined : submitResultReason(mapped.status)
232
+ );
233
+ return mapped;
262
234
  }
263
235
 
264
236
  requestToSpotAddress<TReply = unknown>(
@@ -280,57 +252,41 @@ export class ZLinkHostSpotAddressTransport implements ZLinkSpotAddressTransport
280
252
  const timeoutMs = call.timeoutMs ?? this.options.defaultRequestTimeoutMs;
281
253
  const deadline = createSpotAddressDeadline(timeoutMs, call.signal);
282
254
  try {
283
- for (;;) {
284
- const existing = await this.resolveExisting(spotId, deadline.signal);
285
- deadline.requireRemaining();
286
-
287
- if (existing !== undefined) {
288
- this.validateExisting(existing, call);
289
- try {
290
- return await this.requestToExistingSpot(spotId, request, call, existing, deadline);
291
- } catch (error) {
292
- if (isSpotRouteRefreshError(error)) {
293
- this.options.resolver()?.invalidate?.(spotId);
294
- }
295
- const recovery = await this.recoverStaleInstanceRoute(
296
- spotId,
297
- call,
298
- deadline,
299
- error,
300
- existing
301
- );
302
- if (recovery.kind === 'route') {
303
- // Retry only after the resolver exposes a different route. The
304
- // stale target cannot have admitted the application operation.
305
- continue;
306
- }
307
- if (recovery.kind !== 'cold') {
308
- this.reportInstanceRequestError(
309
- spotId,
310
- request,
311
- error,
312
- existing.routerChannelId,
313
- existing.targetNodeRid,
314
- existing.stableType,
315
- addressedInstanceErrorReason(error)
316
- );
317
- throw error;
318
- }
319
- // The logical authority is no longer Ready, so the Instance
320
- // intent path below may submit the original operation once.
321
- }
255
+ const existing = await this.resolveExisting(spotId, deadline.signal);
256
+ deadline.requireRemaining();
257
+ if (existing === undefined) {
258
+ return await this.requestToMissingInstance(spotId, request, call, deadline);
259
+ }
260
+ this.validateExisting(existing, call);
261
+ try {
262
+ return await this.requestToExistingSpot(spotId, request, call, existing, deadline);
263
+ } catch (error) {
264
+ if (isSpotRouteRefreshError(error)) {
265
+ this.options.resolver()?.invalidate?.(spotId);
322
266
  }
323
-
324
- try {
267
+ // Failover policy §4.4: SpotMoving is the owner's Ready owner-fence
268
+ // refusal, made before admission. With Instance intent, one authority
269
+ // read under the same deadline decides: Missing means Close released
270
+ // the incarnation, so the request activates a new one. Any other
271
+ // answer, and any message the owner admitted, keeps this terminal.
272
+ if (
273
+ call.instanceSpot &&
274
+ isOwnerFenceRefusal(error) &&
275
+ (await this.resolveExisting(spotId, deadline.signal)) === undefined
276
+ ) {
277
+ deadline.requireRemaining();
325
278
  return await this.requestToMissingInstance(spotId, request, call, deadline);
326
- } catch (error) {
327
- if (!isMissingInstanceRetryError(error)) throw error;
328
- // A placement node can finish cleanup before its stale native result
329
- // reaches this process. Refresh authority and select again under the
330
- // same end-to-end deadline; the old envelope was not admitted.
331
- this.options.resolver()?.invalidate?.(spotId);
332
- await waitForSpotRouteRefresh(Math.min(10, deadline.requireRemaining()), deadline.signal);
333
279
  }
280
+ this.reportInstanceRequestError(
281
+ spotId,
282
+ request,
283
+ error,
284
+ existing.routerChannelId,
285
+ existing.targetNodeRid,
286
+ existing.stableType,
287
+ addressedInstanceErrorReason(error)
288
+ );
289
+ throw error;
334
290
  }
335
291
  } catch (error) {
336
292
  if (
@@ -372,6 +328,7 @@ export class ZLinkHostSpotAddressTransport implements ZLinkSpotAddressTransport
372
328
  );
373
329
  const reply = await awaitWithAbort(
374
330
  this.options.routed.requestToSpot<TReply>(existing, request, {
331
+ instanceSpot: call.instanceSpot,
375
332
  timeoutMs: deadline.requireRemaining(),
376
333
  signal: deadline.signal,
377
334
  metadata: call.metadata
@@ -446,28 +403,17 @@ export class ZLinkHostSpotAddressTransport implements ZLinkSpotAddressTransport
446
403
  const table = this.options.completions(selected.meshName);
447
404
  if (table === undefined)
448
405
  throw new Error(`MeshNode '${selected.meshName}' completion table is not started.`);
449
- let completionPromise: ReturnType<ZLinkMeshCompletionTable['submit']>;
450
- try {
451
- completionPromise = table.submit(
452
- () =>
453
- selected.node.requestToMissingInstanceSpot(
454
- selected.target,
455
- encoded,
456
- deadlineUnixMs,
457
- call.sourceSpot === undefined ? undefined : String(call.sourceSpot.routingId),
458
- call.metadata
459
- ),
460
- deadline.signal
461
- );
462
- } catch (error) {
463
- if (
464
- error instanceof ZLinkFrameworkException &&
465
- internalFrameworkErrorKind(error) === ZLinkFrameworkInternalErrorKind.RequestTargetNotFound
466
- ) {
467
- PRE_ADMISSION_MISSING_INSTANCE_ERRORS.add(error);
468
- }
469
- throw error;
470
- }
406
+ const completionPromise = table.submit(
407
+ () =>
408
+ selected.node.requestToMissingInstanceSpot(
409
+ selected.target,
410
+ encoded,
411
+ deadlineUnixMs,
412
+ call.sourceSpot === undefined ? undefined : String(call.sourceSpot.routingId),
413
+ call.metadata
414
+ ),
415
+ deadline.signal
416
+ );
471
417
  this.traceInstanceAddress(
472
418
  ZLinkMessageFlowOutcome.Sent,
473
419
  ZLinkDispatchMessageKind.Request,
@@ -580,35 +526,6 @@ export class ZLinkHostSpotAddressTransport implements ZLinkSpotAddressTransport
580
526
  }
581
527
  }
582
528
 
583
- private async recoverStaleInstanceRoute(
584
- spotId: RoutingId,
585
- call: ZLinkSpotAddressCallOptions,
586
- deadline: ZLinkSpotAddressDeadline,
587
- error: unknown,
588
- staleRoute: ZLinkSpotRouteTarget
589
- ): Promise<
590
- | { readonly kind: 'route'; readonly route: ZLinkSpotRouteTarget }
591
- | { readonly kind: 'cold' }
592
- | { readonly kind: 'fail' }
593
- > {
594
- if (
595
- !call.instanceSpot ||
596
- !(error instanceof ZLinkFrameworkException) ||
597
- !isInstanceRouteStaleError(error)
598
- ) {
599
- return { kind: 'fail' };
600
- }
601
- for (;;) {
602
- deadline.requireRemaining();
603
- const current = await this.resolveExisting(spotId, deadline.signal);
604
- if (current === undefined) return { kind: 'cold' };
605
- if (!sameSpotRouteSnapshot(current, staleRoute)) {
606
- return { kind: 'route', route: current };
607
- }
608
- await waitForSpotRouteRefresh(Math.min(10, deadline.requireRemaining()), deadline.signal);
609
- }
610
- }
611
-
612
529
  private selectMissingTarget(
613
530
  spotId: RoutingId,
614
531
  call: ZLinkSpotAddressCallOptions
@@ -698,22 +615,6 @@ export class ZLinkHostSpotAddressTransport implements ZLinkSpotAddressTransport
698
615
  return { kind: 'unavailable' };
699
616
  }
700
617
 
701
- private sendTimeoutMsForMesh(meshName: string): number {
702
- return (
703
- this.options.sendTimeoutMsForMesh?.(meshName) ??
704
- this.options.defaultSendTimeoutMs ??
705
- this.options.defaultRequestTimeoutMs
706
- );
707
- }
708
-
709
- private sendTimeoutMsForRouteChannel(routeChannelId: string): number {
710
- return (
711
- this.options.sendTimeoutMsForRouteChannel?.(routeChannelId) ??
712
- this.options.defaultSendTimeoutMs ??
713
- this.options.defaultRequestTimeoutMs
714
- );
715
- }
716
-
717
618
  private validateExisting(
718
619
  target: import('../spots/spot-routing-internal').ZLinkSpotRouteTarget,
719
620
  call: ZLinkSpotAddressCallOptions
@@ -771,25 +672,6 @@ export class ZLinkHostSpotAddressTransport implements ZLinkSpotAddressTransport
771
672
  }
772
673
  }
773
674
 
774
- function isInstanceRouteStaleError(error: unknown): error is ZLinkFrameworkException {
775
- if (!(error instanceof ZLinkFrameworkException)) return false;
776
- const kind = internalFrameworkErrorKind(error);
777
- // RequestTargetNotFound from an existing route is a pre-admission route
778
- // lookup failure. A stale owner result is terminal for this application
779
- // operation: the routed request may already have crossed the transport
780
- // boundary, so refreshing the route and resubmitting it could execute the
781
- // same operation twice. Instance cold activation is selected only when the
782
- // authority resolver itself reports that the Ready route is absent.
783
- if (kind === ZLinkFrameworkInternalErrorKind.RequestTargetNotFound) return true;
784
- return false;
785
- }
786
-
787
- function isMissingInstanceRetryError(error: unknown): error is ZLinkFrameworkException {
788
- return (
789
- error instanceof ZLinkFrameworkException && PRE_ADMISSION_MISSING_INSTANCE_ERRORS.has(error)
790
- );
791
- }
792
-
793
675
  function missingInstanceRequestFailure(
794
676
  result: number,
795
677
  nativeErrno: number
@@ -819,27 +701,6 @@ function missingInstanceRequestFailure(
819
701
  );
820
702
  }
821
703
 
822
- function mapSubmitResult(result: number): ZLinkSubmitResult {
823
- switch (result) {
824
- case SubmitResult.Ok:
825
- return { status: ZLinkSubmitStatus.Submitted };
826
- case SubmitResult.Backpressured:
827
- case SubmitResult.NotAdmitted:
828
- return { status: ZLinkSubmitStatus.Backpressured };
829
- case SubmitResult.NotFound:
830
- return { status: ZLinkSubmitStatus.TargetNotFound };
831
- case SubmitResult.NotConnected:
832
- return { status: ZLinkSubmitStatus.RouteNotConnected };
833
- case SubmitResult.Terminated:
834
- return { status: ZLinkSubmitStatus.Shutdown };
835
- default:
836
- throw createInternalFrameworkException(
837
- ZLinkFrameworkInternalErrorKind.RequestFailed,
838
- `Instance Spot submission failed with result ${result}.`
839
- );
840
- }
841
- }
842
-
843
704
  function missingInstancePlacementCapacity(
844
705
  spotId: RoutingId,
845
706
  stableType: string | undefined
@@ -877,39 +738,13 @@ function isSpotRouteRefreshError(error: unknown): error is ZLinkFrameworkExcepti
877
738
  );
878
739
  }
879
740
 
880
- function sameSpotRouteSnapshot(left: ZLinkSpotRouteTarget, right: ZLinkSpotRouteTarget): boolean {
741
+ function isOwnerFenceRefusal(error: unknown): boolean {
881
742
  return (
882
- String(left.targetNodeRid) === String(right.targetNodeRid) &&
883
- String(left.spotId) === String(right.spotId) &&
884
- left.routerChannelId === right.routerChannelId &&
885
- left.spotKind === right.spotKind &&
886
- left.stableType === right.stableType &&
887
- left.targetSpotGeneration === right.targetSpotGeneration &&
888
- left.targetNodeGeneration === right.targetNodeGeneration &&
889
- left.authorityOwnerGeneration === right.authorityOwnerGeneration &&
890
- left.targetOwnerId === right.targetOwnerId &&
891
- left.ownerLeaseGeneration === right.ownerLeaseGeneration &&
892
- left.authorityStoreVersion === right.authorityStoreVersion
743
+ error instanceof ZLinkFrameworkException &&
744
+ internalFrameworkErrorKind(error) === ZLinkFrameworkInternalErrorKind.SpotMoving
893
745
  );
894
746
  }
895
747
 
896
- function waitForSpotRouteRefresh(delayMs: number, signal: AbortSignal): Promise<void> {
897
- return new Promise((resolve, reject) => {
898
- const finish = () => {
899
- signal.removeEventListener('abort', abort);
900
- resolve();
901
- };
902
- const abort = () => {
903
- clearTimeout(timer);
904
- signal.removeEventListener('abort', abort);
905
- reject(signal.reason);
906
- };
907
- const timer = setTimeout(finish, delayMs);
908
- signal.addEventListener('abort', abort, { once: true });
909
- if (signal.aborted) abort();
910
- });
911
- }
912
-
913
748
  function submitResultReason(status: ZLinkSubmitStatus): ZLinkDispatchErrorReason {
914
749
  switch (status) {
915
750
  case ZLinkSubmitStatus.Backpressured:
@@ -967,21 +802,9 @@ function addressedInstanceErrorReason(error: unknown): ZLinkDispatchErrorReason
967
802
  return ZLinkDispatchErrorReason.HandlerException;
968
803
  }
969
804
 
970
- function initialSendTimeoutMs(
971
- options: ZLinkHostSpotAddressTransportOptions,
972
- call: ZLinkSpotAddressCallOptions
973
- ): number {
974
- return call.initialMeshName === undefined
975
- ? (options.defaultSendTimeoutMs ?? options.defaultRequestTimeoutMs)
976
- : (options.sendTimeoutMsForMesh?.(call.initialMeshName) ??
977
- options.defaultSendTimeoutMs ??
978
- options.defaultRequestTimeoutMs);
979
- }
980
-
981
805
  interface ZLinkSpotAddressDeadline {
982
806
  readonly deadlineUnixMs: number;
983
807
  readonly signal: AbortSignal;
984
- setOwnerTimeout(timeoutMs: number): void;
985
808
  requireRemaining(): number;
986
809
  expired(): boolean;
987
810
  close(): void;
@@ -993,7 +816,7 @@ function createSpotAddressDeadline(
993
816
  ): ZLinkSpotAddressDeadline {
994
817
  const startedAtMs = performance.now();
995
818
  const startedAtUnixMs = Date.now();
996
- let deadlineMs = startedAtMs + Math.max(0, timeoutMs);
819
+ const deadlineMs = startedAtMs + Math.max(0, timeoutMs);
997
820
  const controller = new AbortController();
998
821
  let expired = false;
999
822
  let timeout: ReturnType<typeof setTimeout> | undefined;
@@ -1019,10 +842,6 @@ function createSpotAddressDeadline(
1019
842
  return Math.round(startedAtUnixMs + (deadlineMs - startedAtMs));
1020
843
  },
1021
844
  signal: controller.signal,
1022
- setOwnerTimeout(ownerTimeoutMs: number) {
1023
- deadlineMs = startedAtMs + Math.max(0, ownerTimeoutMs);
1024
- arm();
1025
- },
1026
845
  requireRemaining() {
1027
846
  const remainingMs = deadlineMs - performance.now();
1028
847
  if (remainingMs <= 0) {