@serve.zone/interfaces 31.9.0 → 32.0.1

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 (203) hide show
  1. package/changelog.md +476 -0
  2. package/dist_ts/00_commitinfo_data.js +3 -3
  3. package/dist_ts/appstore/types.d.ts +4 -6
  4. package/dist_ts/appstore/types.js +5 -5
  5. package/dist_ts/data/backup.d.ts +3 -26
  6. package/dist_ts/data/cluster.d.ts +36 -11
  7. package/dist_ts/data/cluster.js +33 -22
  8. package/dist_ts/data/clusteringress.d.ts +8 -0
  9. package/dist_ts/data/clusteringress.js +13 -8
  10. package/dist_ts/data/clusternode.d.ts +121 -74
  11. package/dist_ts/data/clusternode.js +109 -132
  12. package/dist_ts/data/coremail.d.ts +3 -7
  13. package/dist_ts/data/coremail.js +2 -2
  14. package/dist_ts/data/coremail.runtime.d.ts +0 -1
  15. package/dist_ts/data/coremail.runtime.js +5 -22
  16. package/dist_ts/data/deploymentadoption.d.ts +0 -2
  17. package/dist_ts/data/deploymentadoption.js +40 -6
  18. package/dist_ts/data/deploymentoperation.js +16 -3
  19. package/dist_ts/data/deploymentpreflight.d.ts +0 -2
  20. package/dist_ts/data/deploymentpreflight.js +1 -1
  21. package/dist_ts/data/immutableimage.d.ts +38 -21
  22. package/dist_ts/data/immutableimage.js +45 -5
  23. package/dist_ts/data/index.d.ts +1 -1
  24. package/dist_ts/data/isolatedrestore.d.ts +139 -21
  25. package/dist_ts/data/isolatedrestore.golden.d.ts +0 -1
  26. package/dist_ts/data/isolatedrestore.golden.js +6 -9
  27. package/dist_ts/data/isolatedrestore.js +176 -40
  28. package/dist_ts/data/mail.d.ts +1 -1
  29. package/dist_ts/data/networkaddressplan.d.ts +8 -8
  30. package/dist_ts/data/networkaddressplan.js +4 -4
  31. package/dist_ts/data/networkauthority.d.ts +20 -22
  32. package/dist_ts/data/networkauthority.js +26 -28
  33. package/dist_ts/data/networkcredential.d.ts +10 -10
  34. package/dist_ts/data/networkcredential.js +16 -16
  35. package/dist_ts/data/networkdelivery.d.ts +18 -18
  36. package/dist_ts/data/networkdelivery.js +16 -16
  37. package/dist_ts/data/networklease.d.ts +18 -7
  38. package/dist_ts/data/networklease.js +29 -7
  39. package/dist_ts/data/networknode.d.ts +2 -2
  40. package/dist_ts/data/networkprojection.d.ts +59 -60
  41. package/dist_ts/data/networkprojection.js +53 -57
  42. package/dist_ts/data/networkprotection.d.ts +27 -28
  43. package/dist_ts/data/networkprotection.js +36 -36
  44. package/dist_ts/data/networkrouter.d.ts +11 -11
  45. package/dist_ts/data/networkrouter.js +1 -1
  46. package/dist_ts/data/networksigning.d.ts +16 -18
  47. package/dist_ts/data/networksigning.js +20 -21
  48. package/dist_ts/data/nodecredential.d.ts +4 -6
  49. package/dist_ts/data/nodeenrollment.d.ts +35 -40
  50. package/dist_ts/data/nodeenrollment.js +57 -72
  51. package/dist_ts/data/privatenetwork.d.ts +21 -24
  52. package/dist_ts/data/privatenetwork.js +39 -54
  53. package/dist_ts/data/runtimeassignment.d.ts +50 -34
  54. package/dist_ts/data/runtimeassignment.js +79 -45
  55. package/dist_ts/data/runtimeconfig.d.ts +21 -22
  56. package/dist_ts/data/runtimeconfig.js +24 -24
  57. package/dist_ts/data/runtimesession.d.ts +100 -62
  58. package/dist_ts/data/runtimesession.js +98 -79
  59. package/dist_ts/data/runtimeterminalreceipt.d.ts +28 -29
  60. package/dist_ts/data/runtimeterminalreceipt.js +42 -42
  61. package/dist_ts/data/secret.d.ts +18 -25
  62. package/dist_ts/data/secret.js +12 -52
  63. package/dist_ts/data/servicecredential.d.ts +14 -16
  64. package/dist_ts/data/servicecredential.js +17 -28
  65. package/dist_ts/data/serviceruntime.d.ts +7 -7
  66. package/dist_ts/data/serviceruntime.js +4 -4
  67. package/dist_ts/data/sparknodereport.d.ts +27 -14
  68. package/dist_ts/data/sparknodereport.js +35 -28
  69. package/dist_ts/data/webpush.d.ts +0 -1
  70. package/dist_ts/index.d.ts +2 -1
  71. package/dist_ts/index.js +3 -2
  72. package/dist_ts/platform/objectstorageretention.d.ts +21 -24
  73. package/dist_ts/platform/objectstorageretention.js +10 -17
  74. package/dist_ts/platform/storage.d.ts +1 -3
  75. package/dist_ts/platform/storagemigration.d.ts +0 -7
  76. package/dist_ts/platform/storagemigration.golden.d.ts +0 -1
  77. package/dist_ts/platform/storagemigration.golden.js +8 -12
  78. package/dist_ts/platform/storagemigration.js +6 -51
  79. package/dist_ts/platform/types.d.ts +2 -2
  80. package/dist_ts/private/canonicaljson.d.ts +9 -1
  81. package/dist_ts/private/canonicaljson.js +14 -2
  82. package/dist_ts/private/dataproperties.d.ts +62 -0
  83. package/dist_ts/private/dataproperties.js +117 -0
  84. package/dist_ts/private/networkcontract.d.ts +10 -10
  85. package/dist_ts/private/networkcontract.js +1 -1
  86. package/dist_ts/private/releaseversion.d.ts +37 -0
  87. package/dist_ts/private/releaseversion.js +48 -0
  88. package/dist_ts/private/runtimepolicy.d.ts +2 -2
  89. package/dist_ts/private/runtimepolicy.js +1 -1
  90. package/dist_ts/private/tokenlist.d.ts +9 -0
  91. package/dist_ts/private/tokenlist.js +23 -0
  92. package/dist_ts/protocol.d.ts +137 -0
  93. package/dist_ts/protocol.js +255 -0
  94. package/dist_ts/requests/admin.d.ts +8 -8
  95. package/dist_ts/requests/backup.d.ts +102 -112
  96. package/dist_ts/requests/cluster.d.ts +10 -10
  97. package/dist_ts/requests/clusteringress.d.ts +9 -0
  98. package/dist_ts/requests/clusteringress.js +1 -1
  99. package/dist_ts/requests/config.d.ts +3 -3
  100. package/dist_ts/requests/corestore.d.ts +0 -3
  101. package/dist_ts/requests/corestore.js +5 -9
  102. package/dist_ts/requests/network.d.ts +30 -30
  103. package/dist_ts/requests/node.d.ts +15 -28
  104. package/dist_ts/requests/pallet.d.ts +13 -13
  105. package/dist_ts/requests/runtimesession.d.ts +53 -41
  106. package/dist_ts/requests/secret.d.ts +4 -5
  107. package/dist_ts/requests/secret.js +1 -5
  108. package/dist_ts/runtime.corestore.d.ts +56 -74
  109. package/dist_ts/runtime.corestore.databaseexportpackage.d.ts +30 -36
  110. package/dist_ts/runtime.corestore.databaseexportpackage.golden.d.ts +11 -12
  111. package/dist_ts/runtime.corestore.databaseexportpackage.golden.js +54 -71
  112. package/dist_ts/runtime.corestore.databaseexportpackage.js +9 -25
  113. package/dist_ts/runtime.corestore.js +35 -135
  114. package/dist_ts/runtime.corestore.relay.js +2 -7
  115. package/dist_ts/runtime.d.ts +38 -48
  116. package/dist_ts/runtime.js +20 -77
  117. package/dist_ts/runtime.networkprojection.d.ts +4 -4
  118. package/dist_ts/runtime.networkprojection.js +18 -18
  119. package/dist_ts/runtime.workloadinit.d.ts +23 -24
  120. package/dist_ts/runtime.workloadinit.js +6 -13
  121. package/package.json +2 -2
  122. package/readme.md +421 -270
  123. package/ts/00_commitinfo_data.ts +3 -3
  124. package/ts/appstore/types.ts +4 -6
  125. package/ts/data/backup.ts +3 -38
  126. package/ts/data/cluster.ts +51 -34
  127. package/ts/data/clusteringress.ts +12 -12
  128. package/ts/data/clusternode.ts +204 -232
  129. package/ts/data/coremail.runtime.ts +4 -21
  130. package/ts/data/coremail.ts +3 -7
  131. package/ts/data/deploymentadoption.ts +46 -4
  132. package/ts/data/deploymentoperation.ts +16 -1
  133. package/ts/data/deploymentpreflight.ts +0 -2
  134. package/ts/data/immutableimage.ts +71 -24
  135. package/ts/data/index.ts +1 -1
  136. package/ts/data/isolatedrestore.golden.ts +5 -9
  137. package/ts/data/isolatedrestore.ts +339 -54
  138. package/ts/data/mail.ts +1 -1
  139. package/ts/data/networkaddressplan.ts +13 -13
  140. package/ts/data/networkauthority.ts +42 -46
  141. package/ts/data/networkcredential.ts +24 -24
  142. package/ts/data/networkdelivery.ts +27 -27
  143. package/ts/data/networklease.ts +40 -13
  144. package/ts/data/networknode.ts +2 -2
  145. package/ts/data/networkprojection.ts +119 -124
  146. package/ts/data/networkprotection.ts +54 -55
  147. package/ts/data/networkrouter.ts +14 -14
  148. package/ts/data/networksigning.ts +29 -32
  149. package/ts/data/nodecredential.ts +4 -6
  150. package/ts/data/nodeenrollment.ts +96 -114
  151. package/ts/data/privatenetwork.ts +58 -74
  152. package/ts/data/runtimeassignment.ts +143 -94
  153. package/ts/data/runtimeconfig.ts +45 -46
  154. package/ts/data/runtimesession.ts +185 -138
  155. package/ts/data/runtimeterminalreceipt.ts +72 -73
  156. package/ts/data/secret.ts +28 -76
  157. package/ts/data/servicecredential.ts +33 -43
  158. package/ts/data/serviceruntime.ts +11 -11
  159. package/ts/data/sparknodereport.ts +48 -36
  160. package/ts/data/webpush.ts +0 -1
  161. package/ts/index.ts +2 -0
  162. package/ts/platform/objectstorageretention.ts +40 -54
  163. package/ts/platform/storage.ts +1 -3
  164. package/ts/platform/storagemigration.golden.ts +7 -11
  165. package/ts/platform/storagemigration.ts +5 -55
  166. package/ts/platform/types.ts +2 -2
  167. package/ts/private/canonicaljson.ts +13 -1
  168. package/ts/private/dataproperties.ts +139 -0
  169. package/ts/private/networkcontract.ts +9 -9
  170. package/ts/private/releaseversion.ts +70 -0
  171. package/ts/private/runtimepolicy.ts +2 -2
  172. package/ts/private/tokenlist.ts +30 -0
  173. package/ts/protocol.ts +364 -0
  174. package/ts/requests/admin.ts +11 -11
  175. package/ts/requests/backup.ts +112 -117
  176. package/ts/requests/cluster.ts +13 -13
  177. package/ts/requests/clusteringress.ts +9 -0
  178. package/ts/requests/config.ts +3 -3
  179. package/ts/requests/corestore.ts +4 -16
  180. package/ts/requests/network.ts +40 -40
  181. package/ts/requests/node.ts +21 -38
  182. package/ts/requests/pallet.ts +17 -17
  183. package/ts/requests/runtimesession.ts +63 -51
  184. package/ts/requests/secret.ts +5 -10
  185. package/ts/runtime.corestore.databaseexportpackage.golden.ts +77 -95
  186. package/ts/runtime.corestore.databaseexportpackage.ts +51 -73
  187. package/ts/runtime.corestore.relay.ts +1 -10
  188. package/ts/runtime.corestore.ts +118 -268
  189. package/ts/runtime.networkprojection.ts +30 -30
  190. package/ts/runtime.ts +83 -158
  191. package/ts/runtime.workloadinit.ts +36 -48
  192. package/dist_ts/runtime.cloudlylegacydeploymentsettlement.d.ts +0 -902
  193. package/dist_ts/runtime.cloudlylegacydeploymentsettlement.golden.d.ts +0 -35
  194. package/dist_ts/runtime.cloudlylegacydeploymentsettlement.golden.js +0 -315
  195. package/dist_ts/runtime.cloudlylegacydeploymentsettlement.js +0 -3315
  196. package/dist_ts/runtime.cloudlylegacydeploymentsettlement.offlineexport.d.ts +0 -291
  197. package/dist_ts/runtime.cloudlylegacydeploymentsettlement.offlineexport.golden.d.ts +0 -30
  198. package/dist_ts/runtime.cloudlylegacydeploymentsettlement.offlineexport.golden.js +0 -408
  199. package/dist_ts/runtime.cloudlylegacydeploymentsettlement.offlineexport.js +0 -1126
  200. package/ts/runtime.cloudlylegacydeploymentsettlement.golden.ts +0 -421
  201. package/ts/runtime.cloudlylegacydeploymentsettlement.offlineexport.golden.ts +0 -510
  202. package/ts/runtime.cloudlylegacydeploymentsettlement.offlineexport.ts +0 -2470
  203. package/ts/runtime.cloudlylegacydeploymentsettlement.ts +0 -6630
@@ -1,8 +1,18 @@
1
1
  import { isSha256Digest } from './immutableimage.js';
2
- import { getRuntimeAssignmentV1Reference, snapshotRuntimeAssignmentObservationV1, snapshotRuntimeAssignmentV1, validateRuntimeAssignmentObservationV1, validateRuntimeAssignmentV1, } from './runtimeassignment.js';
3
- import { bindRuntimeConfigV1ToAssignment, snapshotRuntimeConfigV1 } from './runtimeconfig.js';
2
+ import { getRuntimeAssignmentReference, isResolvedWorkloadAuthorities, snapshotRuntimeAssignmentObservation, snapshotRuntimeAssignment, validateRuntimeAssignmentObservation, validateRuntimeAssignment, } from './runtimeassignment.js';
3
+ import { negotiateProtocol, readProtocolOffer } from '../protocol.js';
4
+ import { bindRuntimeConfigToAssignment, snapshotRuntimeConfig } from './runtimeconfig.js';
4
5
  import { canonicalizeStrictJson } from '../private/canonicaljson.js';
5
- export const runtimeSessionV1Contract = Object.freeze({
6
+ /**
7
+ * The rules every runtime session registration is judged by.
8
+ *
9
+ * Every carrier here is judged in the one server order `protocol.readProtocolOffer` states,
10
+ * against this session kind's own offer, so the snapshots below see a body whose offer this
11
+ * controller already accepted. For a node that order is also what keeps a refused registration
12
+ * from touching its packet access: the refusal is named before `networkVpn` is asked to mutate
13
+ * anything.
14
+ */
15
+ export const runtimeSessionContract = Object.freeze({
6
16
  maximumWireCanonicalBytes: 327_680,
7
17
  maximumCredentialBytes: 16_384,
8
18
  maximumRegistryPasswordBytes: 8192,
@@ -11,11 +21,9 @@ export const runtimeSessionV1Contract = Object.freeze({
11
21
  nodeInstanceNonceFormat: 'canonical-lowercase-uuid-per-node-process',
12
22
  /** The registration a controller must treat as one: a change in any part is a new session. */
13
23
  registrationIdentity: 'node-id-and-credential-generation-and-node-instance-nonce',
14
- /** A relay socket carries many nodes, so its transport cannot prove a node process. */
15
- relayRegistrationRequiresNodeInstanceNonce: true,
16
24
  error: 'Runtime session contract rejected.',
17
25
  });
18
- const fail = () => { throw new Error(runtimeSessionV1Contract.error); };
26
+ const fail = () => { throw new Error(runtimeSessionContract.error); };
19
27
  function requireValue(conditionArg) {
20
28
  if (!conditionArg)
21
29
  fail();
@@ -55,9 +63,9 @@ const capture = (valueArg) => safe(() => {
55
63
  let stringBytes = 0;
56
64
  const ancestors = new Set();
57
65
  const account = (value) => {
58
- requireValue(value.length <= runtimeSessionV1Contract.maximumWireCanonicalBytes);
66
+ requireValue(value.length <= runtimeSessionContract.maximumWireCanonicalBytes);
59
67
  stringBytes += encoder.encode(value).byteLength;
60
- requireValue(stringBytes <= runtimeSessionV1Contract.maximumWireCanonicalBytes);
68
+ requireValue(stringBytes <= runtimeSessionContract.maximumWireCanonicalBytes);
61
69
  };
62
70
  const copy = (value, depth) => {
63
71
  requireValue(++nodes <= 10_240 && depth <= 16);
@@ -101,7 +109,7 @@ const capture = (valueArg) => safe(() => {
101
109
  }
102
110
  };
103
111
  const serialized = canonical(copy(valueArg, 0));
104
- requireValue(encoder.encode(serialized).byteLength <= runtimeSessionV1Contract.maximumWireCanonicalBytes);
112
+ requireValue(encoder.encode(serialized).byteLength <= runtimeSessionContract.maximumWireCanonicalBytes);
105
113
  return JSON.parse(serialized);
106
114
  });
107
115
  const record = (valueArg, keysArg, optionalKeysArg = []) => {
@@ -117,12 +125,12 @@ const reference = (valueArg) => {
117
125
  return { assignmentId: identifier(value.assignmentId), generation: positive(value.generation), digest: value.digest };
118
126
  };
119
127
  const session = (valueArg) => {
120
- const value = record(valueArg, ['schemaVersion', 'reporterSessionId', 'nodeId', 'credentialGeneration',
128
+ const value = record(valueArg, ['reporterSessionId', 'nodeId', 'credentialGeneration',
121
129
  'sessionEpoch', 'controllerInstanceId', 'controller', 'runtimeNamespace']);
122
130
  const controller = record(value.controller, ['kind', 'id', 'epoch']);
123
- requireValue(value.schemaVersion === 1 && (controller.kind === 'cloudly' || controller.kind === 'onebox'));
131
+ requireValue(controller.kind === 'cloudly' || controller.kind === 'onebox');
124
132
  return {
125
- schemaVersion: 1, reporterSessionId: identifier(value.reporterSessionId), nodeId: nodeId(value.nodeId),
133
+ reporterSessionId: identifier(value.reporterSessionId), nodeId: nodeId(value.nodeId),
126
134
  credentialGeneration: positive(value.credentialGeneration), sessionEpoch: positive(value.sessionEpoch),
127
135
  controllerInstanceId: identifier(value.controllerInstanceId),
128
136
  controller: { kind: controller.kind, id: identifier(controller.id), epoch: identifier(controller.epoch) },
@@ -135,77 +143,88 @@ const sameOwner = (leftArg, rightArg) => leftArg.nodeId === rightArg.nodeId && l
135
143
  const matchesAssignment = (sessionArg, assignmentArg) => sessionArg.nodeId === assignmentArg.nodeId && sessionArg.runtimeNamespace === assignmentArg.runtimeNamespace
136
144
  && canonical(sessionArg.controller) === canonical(assignmentArg.controller);
137
145
  /** Synchronous detached structural assertion only; never an authentication check. */
138
- export const snapshotRuntimeSessionBindingV1 = (valueArg) => safe(() => session(capture(valueArg)));
139
- export const snapshotRegisterPalletRuntimeSessionRequestV1 = (valueArg) => safe(() => {
140
- const value = record(capture(valueArg), ['schemaVersion', 'nodeId', 'credentialGeneration', 'bearer'], ['nodeInstanceNonce']);
141
- requireValue(value.schemaVersion === 1 && typeof value.bearer === 'string'
142
- && /^palletToken[0-9a-f]{64}$/.test(value.bearer));
143
- const request = { schemaVersion: 1, nodeId: nodeId(value.nodeId),
144
- credentialGeneration: positive(value.credentialGeneration), bearer: value.bearer };
145
- // Absence stays absent: a controller distinguishes a legacy sender from a stated nonce.
146
- if (Object.hasOwn(value, 'nodeInstanceNonce'))
147
- request.nodeInstanceNonce = nodeInstanceNonce(value.nodeInstanceNonce);
148
- return request;
146
+ export const snapshotRuntimeSessionBinding = (valueArg) => safe(() => session(capture(valueArg)));
147
+ export const snapshotRegisterPalletRuntimeSessionRequest = (valueArg) => safe(() => {
148
+ const value = record(capture(valueArg), ['nodeId', 'credentialGeneration', 'bearer', 'nodeInstanceNonce', 'resolvedAuthorities', 'protocol']);
149
+ requireValue(typeof value.bearer === 'string' && /^palletToken[0-9a-f]{64}$/.test(value.bearer));
150
+ requireValue(isResolvedWorkloadAuthorities(value.resolvedAuthorities));
151
+ return {
152
+ nodeId: nodeId(value.nodeId), credentialGeneration: positive(value.credentialGeneration),
153
+ bearer: value.bearer, nodeInstanceNonce: nodeInstanceNonce(value.nodeInstanceNonce),
154
+ resolvedAuthorities: [...value.resolvedAuthorities], protocol: readProtocolOffer(value),
155
+ };
149
156
  });
150
- export const snapshotApplyRuntimeAssignmentRequestV1 = (valueArg) => safe(() => {
157
+ export const snapshotRegisterPalletRuntimeSessionResponse = (valueArg) => safe(() => {
158
+ const value = record(capture(valueArg), ['session', 'protocol']);
159
+ return { session: session(value.session), protocol: readProtocolOffer(value) };
160
+ });
161
+ export const snapshotApplyRuntimeAssignmentRequest = (valueArg) => safe(() => {
151
162
  const value = record(capture(valueArg), ['session', 'assignment', 'config', 'predecessor']);
152
- const assignment = snapshotRuntimeAssignmentV1(value.assignment);
163
+ const assignment = snapshotRuntimeAssignment(value.assignment);
153
164
  const predecessor = value.predecessor === null ? null : reference(value.predecessor);
154
165
  // Assignment revisions use assignment.previous; a replacement names a different attempt.
155
166
  requireValue(predecessor === null || predecessor.assignmentId !== assignment.assignmentId);
156
- return { session: session(value.session), assignment, config: snapshotRuntimeConfigV1(value.config), predecessor };
167
+ return { session: session(value.session), assignment, config: snapshotRuntimeConfig(value.config), predecessor };
157
168
  });
158
- export const snapshotApplyRuntimeAssignmentResponseV1 = (valueArg) => safe(() => {
169
+ export const snapshotApplyRuntimeAssignmentResponse = (valueArg) => safe(() => {
159
170
  const value = record(capture(valueArg), ['status', 'assignment']);
160
171
  requireValue(value.status === 'accepted' || value.status === 'replay' || value.status === 'historical');
161
172
  return { status: value.status, assignment: reference(value.assignment) };
162
173
  });
163
- export const snapshotReportRuntimeAssignmentObservationRequestV1 = (valueArg) => safe(() => {
174
+ export const snapshotReportRuntimeAssignmentObservationRequest = (valueArg) => safe(() => {
164
175
  const value = record(capture(valueArg), ['session', 'observation']);
165
- return { session: session(value.session), observation: snapshotRuntimeAssignmentObservationV1(value.observation) };
176
+ return { session: session(value.session), observation: snapshotRuntimeAssignmentObservation(value.observation) };
166
177
  });
167
- export const snapshotReportRuntimeAssignmentObservationResponseV1 = (valueArg) => safe(() => {
178
+ export const snapshotReportRuntimeAssignmentObservationResponse = (valueArg) => safe(() => {
168
179
  const value = record(capture(valueArg), ['observation', 'authorityUse']);
169
180
  requireValue(value.authorityUse === 'current-session' || value.authorityUse === 'historical-recovery');
170
- return { observation: snapshotRuntimeAssignmentObservationV1(value.observation), authorityUse: value.authorityUse };
181
+ return { observation: snapshotRuntimeAssignmentObservation(value.observation), authorityUse: value.authorityUse };
171
182
  });
172
- export const snapshotGetRuntimeRegistryCredentialRequestV1 = (valueArg) => safe(() => {
183
+ export const snapshotGetRuntimeRegistryCredentialRequest = (valueArg) => safe(() => {
173
184
  const value = record(capture(valueArg), ['session', 'assignment']);
174
185
  return { session: session(value.session), assignment: reference(value.assignment) };
175
186
  });
176
- export const snapshotGetRuntimeRegistryCredentialResponseV1 = (valueArg) => safe(() => {
187
+ export const snapshotGetRuntimeRegistryCredentialResponse = (valueArg) => safe(() => {
177
188
  const value = record(capture(valueArg), ['username', 'password', 'expiresAt']);
178
189
  requireValue(typeof value.username === 'string' && value.username.length > 0
179
190
  && encoder.encode(value.username).byteLength <= 1024 && !/[\s:\u0000-\u001f\u007f]/.test(value.username));
180
191
  requireValue(typeof value.password === 'string' && value.password.length > 0
181
- && encoder.encode(value.password).byteLength <= runtimeSessionV1Contract.maximumRegistryPasswordBytes
192
+ && encoder.encode(value.password).byteLength <= runtimeSessionContract.maximumRegistryPasswordBytes
182
193
  && !/[\u0000-\u001f\u007f]/.test(value.password));
183
194
  return { username: value.username, password: value.password, expiresAt: positive(value.expiresAt) };
184
195
  });
185
- export const snapshotRegisterCloudlyClientSessionRequestV1 = (valueArg) => safe(() => {
186
- const value = record(capture(valueArg), ['schemaVersion', 'identity']);
196
+ export const snapshotRegisterCloudlyClientSessionRequest = (valueArg) => safe(() => {
197
+ const value = record(capture(valueArg), ['identity', 'protocol']);
187
198
  const identity = record(value.identity, ['jwt']);
188
- requireValue(value.schemaVersion === 1 && typeof identity.jwt === 'string'
189
- && identity.jwt.length <= runtimeSessionV1Contract.maximumCredentialBytes
199
+ requireValue(typeof identity.jwt === 'string'
200
+ && identity.jwt.length <= runtimeSessionContract.maximumCredentialBytes
190
201
  && /^[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+$/.test(identity.jwt));
191
- return { schemaVersion: 1, identity: { jwt: identity.jwt } };
202
+ return { identity: { jwt: identity.jwt }, protocol: readProtocolOffer(value) };
192
203
  });
193
- export const snapshotRegisterCloudlyClientSessionResponseV1 = (valueArg) => safe(() => {
194
- const value = record(capture(valueArg), ['registered']);
204
+ export const snapshotRegisterCloudlyClientSessionResponse = (valueArg) => safe(() => {
205
+ const value = record(capture(valueArg), ['registered', 'protocol']);
195
206
  requireValue(value.registered === true);
196
- return { registered: true };
207
+ return { registered: true, protocol: readProtocolOffer(value) };
197
208
  });
198
- /** Bind the authenticated Cloudly registration reply to the node and credential sent. */
199
- export const bindRegisterPalletRuntimeSessionResponseV1 = (valueArg, requestArg) => safe(() => {
200
- const response = snapshotRuntimeSessionBindingV1(valueArg);
201
- const request = snapshotRegisterPalletRuntimeSessionRequestV1(requestArg);
202
- requireValue(response.controller.kind === 'cloudly' && response.nodeId === request.nodeId
203
- && response.credentialGeneration === request.credentialGeneration);
209
+ /**
210
+ * Bind the authenticated Cloudly registration reply to the node, credential and offer sent.
211
+ *
212
+ * The client negotiates the answered offer against the one it sent: acceptance by a controller is
213
+ * that controller's judgement, and a node that cannot serve the session it was given must not open
214
+ * it. Both offers were read from the two bodies, so this compares what was actually exchanged.
215
+ */
216
+ export const bindRegisterPalletRuntimeSessionResponse = (valueArg, requestArg) => safe(() => {
217
+ const response = snapshotRegisterPalletRuntimeSessionResponse(valueArg);
218
+ const request = snapshotRegisterPalletRuntimeSessionRequest(requestArg);
219
+ requireValue(response.session.controller.kind === 'cloudly'
220
+ && response.session.nodeId === request.nodeId
221
+ && response.session.credentialGeneration === request.credentialGeneration
222
+ && negotiateProtocol(request.protocol, response.protocol).compatible);
204
223
  return response;
205
224
  });
206
225
  /** Reject already expired material; issuance policy and current assignment authority remain server-owned. */
207
- export const bindGetRuntimeRegistryCredentialResponseV1 = (valueArg, nowArg) => safe(() => {
208
- const response = snapshotGetRuntimeRegistryCredentialResponseV1(valueArg);
226
+ export const bindGetRuntimeRegistryCredentialResponse = (valueArg, nowArg) => safe(() => {
227
+ const response = snapshotGetRuntimeRegistryCredentialResponse(valueArg);
209
228
  requireValue(response.expiresAt > positive(nowArg));
210
229
  return response;
211
230
  });
@@ -214,12 +233,12 @@ export const bindGetRuntimeRegistryCredentialResponseV1 = (valueArg, nowArg) =>
214
233
  * come from the receiving live connection, never from another request field.
215
234
  * This binds content only; durable CAS, slot admission and authority remain owners.
216
235
  */
217
- export const bindApplyRuntimeAssignmentRequestV1 = async (valueArg, trustedSessionArg) => {
236
+ export const bindApplyRuntimeAssignmentRequest = async (valueArg, trustedSessionArg) => {
218
237
  try {
219
- const request = snapshotApplyRuntimeAssignmentRequestV1(valueArg);
220
- const trustedSession = snapshotRuntimeSessionBindingV1(trustedSessionArg);
238
+ const request = snapshotApplyRuntimeAssignmentRequest(valueArg);
239
+ const trustedSession = snapshotRuntimeSessionBinding(trustedSessionArg);
221
240
  requireValue(sameSession(request.session, trustedSession) && matchesAssignment(trustedSession, request.assignment));
222
- await bindRuntimeConfigV1ToAssignment(request.config, request.assignment);
241
+ await bindRuntimeConfigToAssignment(request.config, request.assignment);
223
242
  return request;
224
243
  }
225
244
  catch {
@@ -227,10 +246,10 @@ export const bindApplyRuntimeAssignmentRequestV1 = async (valueArg, trustedSessi
227
246
  }
228
247
  };
229
248
  /** Match an admission acknowledgement to the exact sent revision, including historical replies. */
230
- export const bindApplyRuntimeAssignmentResponseV1 = (valueArg, requestArg) => safe(() => {
231
- const response = snapshotApplyRuntimeAssignmentResponseV1(valueArg);
232
- const request = snapshotApplyRuntimeAssignmentRequestV1(requestArg);
233
- requireValue(canonical(response.assignment) === canonical(getRuntimeAssignmentV1Reference(request.assignment)));
249
+ export const bindApplyRuntimeAssignmentResponse = (valueArg, requestArg) => safe(() => {
250
+ const response = snapshotApplyRuntimeAssignmentResponse(valueArg);
251
+ const request = snapshotApplyRuntimeAssignmentRequest(requestArg);
252
+ requireValue(canonical(response.assignment) === canonical(getRuntimeAssignmentReference(request.assignment)));
234
253
  return response;
235
254
  });
236
255
  /**
@@ -240,12 +259,12 @@ export const bindApplyRuntimeAssignmentResponseV1 = (valueArg, requestArg) => sa
240
259
  * The owning transaction must recheck current credential/peer authority. Assignment
241
260
  * digest validation and report-specific authority remain the caller's responsibility.
242
261
  */
243
- export const bindRuntimeReporterSessionV1 = (sessionArg, reporterSessionIdArg, assignmentArg, trustedSessionArg, reporterHistoryArg) => safe(() => {
244
- const incomingSession = snapshotRuntimeSessionBindingV1(sessionArg);
262
+ export const bindRuntimeReporterSession = (sessionArg, reporterSessionIdArg, assignmentArg, trustedSessionArg, reporterHistoryArg) => safe(() => {
263
+ const incomingSession = snapshotRuntimeSessionBinding(sessionArg);
245
264
  const reporterSessionId = identifier(reporterSessionIdArg);
246
- const assignment = snapshotRuntimeAssignmentV1(capture(assignmentArg));
247
- const trustedSession = snapshotRuntimeSessionBindingV1(trustedSessionArg);
248
- const reporterHistory = snapshotRuntimeSessionBindingV1(reporterHistoryArg);
265
+ const assignment = snapshotRuntimeAssignment(capture(assignmentArg));
266
+ const trustedSession = snapshotRuntimeSessionBinding(trustedSessionArg);
267
+ const reporterHistory = snapshotRuntimeSessionBinding(reporterHistoryArg);
249
268
  requireValue(sameSession(incomingSession, trustedSession) && matchesAssignment(trustedSession, assignment)
250
269
  && reporterSessionId === reporterHistory.reporterSessionId && sameOwner(trustedSession, reporterHistory));
251
270
  const current = sameSession(reporterHistory, trustedSession);
@@ -258,19 +277,19 @@ export const bindRuntimeReporterSessionV1 = (sessionArg, reporterSessionIdArg, a
258
277
  /**
259
278
  * trustedSessionArg is the CURRENT authenticated physical peer. reporterHistoryArg
260
279
  * must be server-indexed immutable session history, obtained by the original
261
- * observation's reporterSessionId; never accept caller-supplied history. All V1
262
- * runtime sessions are Pallet-purpose sessions, so Spark history cannot qualify.
280
+ * observation's reporterSessionId; never accept caller-supplied history. Every
281
+ * runtime session is a Pallet-purpose session, so Spark history cannot qualify.
263
282
  *
264
283
  * This verifies content and classifies recovery, not authentication, history
265
284
  * provenance, sequence admission or current authority. The server must transact
266
285
  * receipt/counter acceptance under current credential and peer authority. A
267
286
  * historical result MUST NOT restore active readiness, routes or liveness.
268
287
  */
269
- export const bindReportRuntimeAssignmentObservationRequestV1 = async (valueArg, assignmentArg, trustedSessionArg, reporterHistoryArg) => {
288
+ export const bindReportRuntimeAssignmentObservationRequest = async (valueArg, assignmentArg, trustedSessionArg, reporterHistoryArg) => {
270
289
  try {
271
- const request = snapshotReportRuntimeAssignmentObservationRequestV1(valueArg);
272
- const binding = bindRuntimeReporterSessionV1(request.session, request.observation.reporterSessionId, assignmentArg, trustedSessionArg, reporterHistoryArg);
273
- requireValue((await validateRuntimeAssignmentObservationV1(request.observation, binding.assignment)).length === 0);
290
+ const request = snapshotReportRuntimeAssignmentObservationRequest(valueArg);
291
+ const binding = bindRuntimeReporterSession(request.session, request.observation.reporterSessionId, assignmentArg, trustedSessionArg, reporterHistoryArg);
292
+ requireValue((await validateRuntimeAssignmentObservation(request.observation, binding.assignment)).length === 0);
274
293
  return { request, authorityUse: binding.authorityUse };
275
294
  }
276
295
  catch {
@@ -278,28 +297,28 @@ export const bindReportRuntimeAssignmentObservationRequestV1 = async (valueArg,
278
297
  }
279
298
  };
280
299
  /** Reject body rewriting and a historical receipt mislabeled as current authority. */
281
- export const bindReportRuntimeAssignmentObservationResponseV1 = (valueArg, requestArg) => safe(() => {
282
- const response = snapshotReportRuntimeAssignmentObservationResponseV1(valueArg);
283
- const request = snapshotReportRuntimeAssignmentObservationRequestV1(requestArg);
300
+ export const bindReportRuntimeAssignmentObservationResponse = (valueArg, requestArg) => safe(() => {
301
+ const response = snapshotReportRuntimeAssignmentObservationResponse(valueArg);
302
+ const request = snapshotReportRuntimeAssignmentObservationRequest(requestArg);
284
303
  requireValue(canonical(response.observation) === canonical(request.observation)
285
304
  && response.authorityUse === (request.observation.reporterSessionId === request.session.reporterSessionId
286
305
  ? 'current-session' : 'historical-recovery'));
287
306
  return response;
288
307
  });
289
308
  /** Current assignment lookup and live peer authorization remain mandatory server-owned inputs. */
290
- export const bindGetRuntimeRegistryCredentialRequestV1 = async (valueArg, assignmentArg, trustedSessionArg) => {
309
+ export const bindGetRuntimeRegistryCredentialRequest = async (valueArg, assignmentArg, trustedSessionArg) => {
291
310
  try {
292
- const request = snapshotGetRuntimeRegistryCredentialRequestV1(valueArg);
293
- const assignment = snapshotRuntimeAssignmentV1(capture(assignmentArg));
294
- const trustedSession = snapshotRuntimeSessionBindingV1(trustedSessionArg);
311
+ const request = snapshotGetRuntimeRegistryCredentialRequest(valueArg);
312
+ const assignment = snapshotRuntimeAssignment(capture(assignmentArg));
313
+ const trustedSession = snapshotRuntimeSessionBinding(trustedSessionArg);
295
314
  requireValue(sameSession(request.session, trustedSession) && matchesAssignment(trustedSession, assignment)
296
315
  && assignment.disposition === 'run'
297
- && canonical(request.assignment) === canonical(getRuntimeAssignmentV1Reference(assignment)));
298
- requireValue((await validateRuntimeAssignmentV1(assignment)).length === 0);
316
+ && canonical(request.assignment) === canonical(getRuntimeAssignmentReference(assignment)));
317
+ requireValue((await validateRuntimeAssignment(assignment)).length === 0);
299
318
  return request;
300
319
  }
301
320
  catch {
302
321
  return fail();
303
322
  }
304
323
  };
305
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZXNlc3Npb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9kYXRhL3J1bnRpbWVzZXNzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUtyRCxPQUFPLEVBQ0wsK0JBQStCLEVBQUUsc0NBQXNDLEVBQ3ZFLDJCQUEyQixFQUFFLHNDQUFzQyxFQUFFLDJCQUEyQixHQUNqRyxNQUFNLHdCQUF3QixDQUFDO0FBRWhDLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzlGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBd0dyRSxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ3BELHlCQUF5QixFQUFFLE9BQU87SUFDbEMsc0JBQXNCLEVBQUUsTUFBTTtJQUM5Qiw0QkFBNEIsRUFBRSxJQUFJO0lBQ2xDLGlCQUFpQixFQUFFLHlEQUF5RDtJQUM1RSw4QkFBOEIsRUFBRSw4QkFBOEI7SUFDOUQsdUJBQXVCLEVBQUUsMkNBQTJDO0lBQ3BFLDhGQUE4RjtJQUM5RixvQkFBb0IsRUFBRSwyREFBMkQ7SUFDakYsdUZBQXVGO0lBQ3ZGLDBDQUEwQyxFQUFFLElBQUk7SUFDaEQsS0FBSyxFQUFFLG9DQUFvQztDQUNuQyxDQUFDLENBQUM7QUFFWixNQUFNLElBQUksR0FBRyxHQUFVLEVBQUUsR0FBRyxNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9FLFNBQVMsWUFBWSxDQUFDLFlBQXFCO0lBQ3pDLElBQUksQ0FBQyxZQUFZO1FBQUUsSUFBSSxFQUFFLENBQUM7QUFDNUIsQ0FBQztBQUNELE1BQU0sSUFBSSxHQUFHLENBQUksWUFBcUIsRUFBSyxFQUFFO0lBQzNDLElB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
324
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZXNlc3Npb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9kYXRhL3J1bnRpbWVzZXNzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUtyRCxPQUFPLEVBQ0wsNkJBQTZCLEVBQUUsNkJBQTZCLEVBQUUsb0NBQW9DLEVBQ2xHLHlCQUF5QixFQUFFLG9DQUFvQyxFQUFFLHlCQUF5QixHQUMzRixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBdUIsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzRixPQUFPLEVBQUUsNkJBQTZCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMxRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQWdJckU7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ2xELHlCQUF5QixFQUFFLE9BQU87SUFDbEMsc0JBQXNCLEVBQUUsTUFBTTtJQUM5Qiw0QkFBNEIsRUFBRSxJQUFJO0lBQ2xDLGlCQUFpQixFQUFFLHlEQUF5RDtJQUM1RSw4QkFBOEIsRUFBRSw4QkFBOEI7SUFDOUQsdUJBQXVCLEVBQUUsMkNBQTJDO0lBQ3BFLDhGQUE4RjtJQUM5RixvQkFBb0IsRUFBRSwyREFBMkQ7SUFDakYsS0FBSyxFQUFFLG9DQUFvQztDQUNuQyxDQUFDLENBQUM7QUFFWixNQUFNLElBQUksR0FBRyxHQUFVLEVBQUUsR0FBRyxNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdFLFNBQVMsWUFBWSxDQUFDLFlBQXFCO0lBQ3pDLElBQUksQ0FBQyxZQUFZO1FBQUUsSUFBSSxFQUFFLENBQUM7QUFDNUIsQ0FB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
@@ -1,8 +1,8 @@
1
1
  import type { TSha256Digest } from './immutableimage.js';
2
- import type { IRuntimeAssignmentReferenceV1 } from './runtimeassignment.js';
3
- import type { IRuntimeSessionBindingV1, TRuntimeObservationAuthorityUseV1 } from './runtimesession.js';
2
+ import type { IRuntimeAssignmentReference } from './runtimeassignment.js';
3
+ import type { IRuntimeSessionBinding, TRuntimeObservationAuthorityUse } from './runtimesession.js';
4
4
  /** Exact value-free native terminal evidence; terminal inspection does not collect addresses. */
5
- export interface IRuntimeAssignmentTerminalEvidenceV1 {
5
+ export interface IRuntimeAssignmentTerminalEvidence {
6
6
  phase: 'stopped' | 'absent';
7
7
  sandboxId: string | null;
8
8
  containerId: string | null;
@@ -21,12 +21,11 @@ export interface IRuntimeAssignmentTerminalEvidenceV1 {
21
21
  * liveness, storage relocation, whole-host, Docker/Coreflow absence, other
22
22
  * controller or cross-organization authority. It has no authoritative wall clock.
23
23
  */
24
- export interface IRuntimeAssignmentTerminalReceiptV1 {
25
- schemaVersion: 1;
24
+ export interface IRuntimeAssignmentTerminalReceipt {
26
25
  /** Exact generation 2 stop or generation 3 remove revision. */
27
- assignment: IRuntimeAssignmentReferenceV1;
26
+ assignment: IRuntimeAssignmentReference;
28
27
  /** Exact immutable generation 1 run revision. */
29
- runAssignment: IRuntimeAssignmentReferenceV1;
28
+ runAssignment: IRuntimeAssignmentReference;
30
29
  reporterSessionId: string;
31
30
  sequence: 1 | 2;
32
31
  operation: {
@@ -34,32 +33,32 @@ export interface IRuntimeAssignmentTerminalReceiptV1 {
34
33
  action: 'stop' | 'remove';
35
34
  bootId: string;
36
35
  status: 'completed';
37
- evidence: IRuntimeAssignmentTerminalEvidenceV1;
36
+ evidence: IRuntimeAssignmentTerminalEvidence;
38
37
  };
39
38
  /** Null for stop; the exact accepted stop receipt digest for remove. */
40
39
  previousReceiptDigest: TSha256Digest | null;
41
40
  digest: TSha256Digest;
42
41
  }
43
- export interface IReportRuntimeAssignmentTerminalReceiptRequestV1 {
42
+ export interface IReportRuntimeAssignmentTerminalReceiptRequest {
44
43
  /** Current physical peer binding, even when the immutable receipt is historical. */
45
- session: IRuntimeSessionBindingV1;
46
- receipt: IRuntimeAssignmentTerminalReceiptV1;
44
+ session: IRuntimeSessionBinding;
45
+ receipt: IRuntimeAssignmentTerminalReceipt;
47
46
  }
48
- export interface IReportRuntimeAssignmentTerminalReceiptResponseV1 {
47
+ export interface IReportRuntimeAssignmentTerminalReceiptResponse {
49
48
  /** Exact immutable body after the owning durable receipt transaction. */
50
- receipt: IRuntimeAssignmentTerminalReceiptV1;
49
+ receipt: IRuntimeAssignmentTerminalReceipt;
51
50
  /** Historical recovery never restores active readiness, routes or liveness. */
52
- authorityUse: TRuntimeObservationAuthorityUseV1;
51
+ authorityUse: TRuntimeObservationAuthorityUse;
53
52
  }
54
- export type TRuntimeAssignmentTerminalReceiptDecisionV1 = {
53
+ export type TRuntimeAssignmentTerminalReceiptDecision = {
55
54
  status: 'accept' | 'replay';
56
- receipt: IRuntimeAssignmentTerminalReceiptV1;
55
+ receipt: IRuntimeAssignmentTerminalReceipt;
57
56
  } | {
58
57
  status: 'reject';
59
58
  reason: 'invalid' | 'conflict' | 'sequence-gap' | 'predecessor-mismatch';
60
59
  };
61
- export declare const runtimeAssignmentTerminalReceiptV1Contract: Readonly<{
62
- readonly digestDomain: "serve.zone/runtime-assignment-terminal-receipt-v1";
60
+ export declare const runtimeAssignmentTerminalReceiptContract: Readonly<{
61
+ readonly digestDomain: "serve.zone/runtime-assignment-terminal-receipt";
63
62
  readonly maximumReceiptCanonicalBytes: 16384;
64
63
  readonly maximumHistoryCanonicalBytes: 98304;
65
64
  readonly maximumReceipts: 2;
@@ -67,31 +66,31 @@ export declare const runtimeAssignmentTerminalReceiptV1Contract: Readonly<{
67
66
  readonly error: "Runtime terminal receipt contract rejected.";
68
67
  }>;
69
68
  /** Detached exact-schema assertion only; digest, journal provenance and authority remain unverified. */
70
- export declare const snapshotRuntimeAssignmentTerminalReceiptV1: (valueArg: unknown) => IRuntimeAssignmentTerminalReceiptV1;
69
+ export declare const snapshotRuntimeAssignmentTerminalReceipt: (valueArg: unknown) => IRuntimeAssignmentTerminalReceipt;
71
70
  /** Bounded exact receipt history for synchronous persistence assertions; hashes remain unchecked. */
72
- export declare const snapshotRuntimeAssignmentTerminalReceiptHistoryV1: (valueArg: unknown) => IRuntimeAssignmentTerminalReceiptV1[];
71
+ export declare const snapshotRuntimeAssignmentTerminalReceiptHistory: (valueArg: unknown) => IRuntimeAssignmentTerminalReceipt[];
73
72
  /** Domain-separated exact body digest; captures before asynchronous hashing. */
74
- export declare const computeRuntimeAssignmentTerminalReceiptV1Digest: (valueArg: IRuntimeAssignmentTerminalReceiptV1) => Promise<TSha256Digest>;
73
+ export declare const computeRuntimeAssignmentTerminalReceiptDigest: (valueArg: IRuntimeAssignmentTerminalReceipt) => Promise<TSha256Digest>;
75
74
  /** Full immutable run/stop/remove chain and exact prior stop receipt are mandatory for removal. */
76
- export declare const validateRuntimeAssignmentTerminalReceiptV1: (valueArg: unknown, assignmentHistoryArg: unknown, previousReceiptArg: unknown) => Promise<string[]>;
75
+ export declare const validateRuntimeAssignmentTerminalReceipt: (valueArg: unknown, assignmentHistoryArg: unknown, previousReceiptArg: unknown) => Promise<string[]>;
77
76
  /**
78
77
  * Pure bounded CAS decision. Persist under the owning transaction and current
79
78
  * credential/peer fence. New acceptance also requires the exact global incumbent;
80
79
  * only a previously persisted exact body can replay after the incumbent changes.
81
80
  * The helper cannot prove either condition. Retain both bodies after removal.
82
81
  */
83
- export declare const evaluateRuntimeAssignmentTerminalReceiptV1: (valueArg: unknown, acceptedHistoryArg: unknown, assignmentHistoryArg: unknown) => Promise<TRuntimeAssignmentTerminalReceiptDecisionV1>;
84
- export declare const snapshotReportRuntimeAssignmentTerminalReceiptRequestV1: (valueArg: unknown) => IReportRuntimeAssignmentTerminalReceiptRequestV1;
85
- export declare const snapshotReportRuntimeAssignmentTerminalReceiptResponseV1: (valueArg: unknown) => IReportRuntimeAssignmentTerminalReceiptResponseV1;
82
+ export declare const evaluateRuntimeAssignmentTerminalReceipt: (valueArg: unknown, acceptedHistoryArg: unknown, assignmentHistoryArg: unknown) => Promise<TRuntimeAssignmentTerminalReceiptDecision>;
83
+ export declare const snapshotReportRuntimeAssignmentTerminalReceiptRequest: (valueArg: unknown) => IReportRuntimeAssignmentTerminalReceiptRequest;
84
+ export declare const snapshotReportRuntimeAssignmentTerminalReceiptResponse: (valueArg: unknown) => IReportRuntimeAssignmentTerminalReceiptResponse;
86
85
  /**
87
86
  * CURRENT physical session and immutable server-indexed reporter history are
88
87
  * trusted owner inputs, never wire claims. The previous stop receipt must also
89
88
  * come from the durable owner. This binds content; it does not authenticate,
90
89
  * prove the local operation join, advance CAS, or admit a replacement.
91
90
  */
92
- export declare const bindReportRuntimeAssignmentTerminalReceiptRequestV1: (valueArg: unknown, assignmentHistoryArg: unknown, previousReceiptArg: unknown, trustedSessionArg: unknown, reporterHistoryArg: unknown) => Promise<{
93
- request: IReportRuntimeAssignmentTerminalReceiptRequestV1;
94
- authorityUse: TRuntimeObservationAuthorityUseV1;
91
+ export declare const bindReportRuntimeAssignmentTerminalReceiptRequest: (valueArg: unknown, assignmentHistoryArg: unknown, previousReceiptArg: unknown, trustedSessionArg: unknown, reporterHistoryArg: unknown) => Promise<{
92
+ request: IReportRuntimeAssignmentTerminalReceiptRequest;
93
+ authorityUse: TRuntimeObservationAuthorityUse;
95
94
  }>;
96
95
  /** Exact ACK of the immutable outbox body; no rewritten session, operation or chain. */
97
- export declare const bindReportRuntimeAssignmentTerminalReceiptResponseV1: (valueArg: unknown, requestArg: unknown) => IReportRuntimeAssignmentTerminalReceiptResponseV1;
96
+ export declare const bindReportRuntimeAssignmentTerminalReceiptResponse: (valueArg: unknown, requestArg: unknown) => IReportRuntimeAssignmentTerminalReceiptResponse;