@serve.zone/interfaces 32.14.0 → 32.16.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.
@@ -1,5 +1,7 @@
1
1
  import { snapshotClusterRuntimeReference } from './clusterruntime.js';
2
- import { canonicalizeStrictJson, createCanonicalJsonSha256Hex, } from '../private/canonicaljson.js';
2
+ import { bindRuntimeStorageClaimToIntent, snapshotRuntimeStorageClaim, snapshotRuntimeStorageClaimIntent, validateRuntimeStorageClaim, validateRuntimeStorageClaimIntent, } from './runtimestorageclaim.js';
3
+ import { normalizeStorageRequest } from '../platform/storage.js';
4
+ import { canonicalizeStrictJson, compareWireTokens, createCanonicalJsonSha256Hex, } from '../private/canonicaljson.js';
3
5
  import { captureNetwork, networkCounter, networkDigest, networkId, networkList, networkNodeId, networkRecord, networkReference, networkSorted, requireNetwork, } from '../private/networkcontract.js';
4
6
  export const fleetCutoverContract = Object.freeze({
5
7
  maximumServices: 512,
@@ -7,19 +9,36 @@ export const fleetCutoverContract = Object.freeze({
7
9
  maximumNodes: 1024,
8
10
  maximumContainersPerNode: 512,
9
11
  maximumMountsPerOwner: 32,
12
+ maximumConstraintsPerService: 256,
13
+ maximumDockerTextBytes: 4096,
14
+ maximumDockerServiceSpecCanonicalBytes: 1_048_576,
15
+ maximumPreparedVolumeHandoffMutationEntries: 32,
16
+ /** Every admitted task has one node placement and at most 32 mounts: 4096 * 32. */
17
+ maximumPreparedVolumeHandoffs: 4096 * 32,
18
+ maximumPreparedVolumeHandoffPages: (4096 * 32) / 32,
19
+ maximumHeldVolumeFenceEvidenceBytes: 131_072,
10
20
  maximumClassifications: 512,
11
21
  observationFreshnessMs: 300_000,
12
22
  mountSourceIdentityDigestDomain: 'serve.zone/fleet-cutover-mount-source-identity',
13
23
  mountTargetIdentityDigestDomain: 'serve.zone/fleet-cutover-mount-target-identity',
14
24
  mountIdentityDigestDomain: 'serve.zone/fleet-cutover-mount-identity',
25
+ mountCorrelationIdentityDigestDomain: 'serve.zone/fleet-cutover-mount-correlation-identity',
26
+ dockerServiceSpecDigestDomain: 'serve.zone/fleet-cutover-docker-service-spec',
27
+ dockerConstraintSetDigestDomain: 'serve.zone/fleet-cutover-docker-constraint-set',
15
28
  containerSetIdentityDigestDomain: 'serve.zone/fleet-cutover-container-set-identity',
16
29
  localNodeSnapshotDigestDomain: 'serve.zone/fleet-cutover-local-node-snapshot',
17
30
  managerSnapshotDigestDomain: 'serve.zone/fleet-cutover-manager-snapshot',
18
31
  censusDigestDomain: 'serve.zone/fleet-cutover-census',
19
32
  scopeDigestDomain: 'serve.zone/fleet-cutover-scope',
20
33
  volumeHandoffDigestDomain: 'serve.zone/fleet-cutover-volume-handoff',
34
+ preparedVolumeHandoffDigestDomain: 'serve.zone/fleet-cutover-prepared-volume-handoff',
35
+ preparedVolumeHandoffAggregateDigestDomain: 'serve.zone/fleet-cutover-prepared-volume-handoff-aggregate',
36
+ preparedVolumeHandoffPageContentDigestDomain: 'serve.zone/fleet-cutover-prepared-volume-handoff-page-content',
37
+ preparedVolumeHandoffPageDigestDomain: 'serve.zone/fleet-cutover-prepared-volume-handoff-page',
38
+ preparedVolumeHandoffSetDigestDomain: 'serve.zone/fleet-cutover-prepared-volume-handoff-set',
21
39
  volumeFenceDigestDomain: 'serve.zone/fleet-cutover-volume-fence',
22
40
  corestoreAdoptionDigestDomain: 'serve.zone/fleet-cutover-corestore-adoption',
41
+ storageAdoptionGrantDigestDomain: 'serve.zone/fleet-cutover-storage-adoption-grant',
23
42
  coreflowRetirementDigestDomain: 'serve.zone/fleet-cutover-coreflow-retirement',
24
43
  ingressDesignationDigestDomain: 'serve.zone/fleet-cutover-ingress-designation',
25
44
  ingressAuthorityDigestDomain: 'serve.zone/fleet-cutover-ingress-authority',
@@ -30,6 +49,10 @@ export const fleetCutoverContract = Object.freeze({
30
49
  pallet: null,
31
50
  }),
32
51
  });
52
+ /** Docker labels with established historical producer semantics. */
53
+ export const fleetCutoverDockerLabelNames = Object.freeze({
54
+ serviceId: 'serve.zone.serviceId',
55
+ });
33
56
  const fail = () => { throw new Error('Fleet cutover contract rejected.'); };
34
57
  const safe = (operationArg) => {
35
58
  try {
@@ -114,6 +137,17 @@ const mountDescriptor = (valueArg) => {
114
137
  };
115
138
  };
116
139
  const sortedMountDescriptors = (valueArg) => networkSorted(networkList(valueArg, fleetCutoverContract.maximumMountsPerOwner, mountDescriptor), itemArg => itemArg.mountIdentityDigest);
140
+ const physicalMountCorrelation = (valueArg) => {
141
+ const value = networkRecord(valueArg, [
142
+ 'physicalMountIdentityDigest', 'serviceMountIdentityDigest', 'correlationIdentityDigest',
143
+ ]);
144
+ return {
145
+ physicalMountIdentityDigest: networkDigest(value.physicalMountIdentityDigest),
146
+ serviceMountIdentityDigest: networkDigest(value.serviceMountIdentityDigest),
147
+ correlationIdentityDigest: networkDigest(value.correlationIdentityDigest),
148
+ };
149
+ };
150
+ const sortedPhysicalMountCorrelations = (valueArg) => networkSorted(networkList(valueArg, fleetCutoverContract.maximumMountsPerOwner, physicalMountCorrelation), itemArg => itemArg.physicalMountIdentityDigest);
117
151
  const dockerMode = (valueArg) => {
118
152
  requireNetwork(valueArg !== null && typeof valueArg === 'object');
119
153
  const kind = valueArg.kind;
@@ -138,6 +172,8 @@ const dockerService = (valueArg) => {
138
172
  'dockerServiceId', 'dockerServiceName', 'specVersion', 'specDigest', 'imageDigest', 'mode',
139
173
  'desiredTaskCount', 'constraintCount', 'constraintSetDigest', 'mounts', 'ownershipLabels',
140
174
  ]);
175
+ const constraintCount = nonNegative(value.constraintCount);
176
+ requireNetwork(constraintCount <= fleetCutoverContract.maximumConstraintsPerService);
141
177
  return {
142
178
  dockerServiceId: networkId(value.dockerServiceId),
143
179
  dockerServiceName: networkId(value.dockerServiceName),
@@ -146,7 +182,7 @@ const dockerService = (valueArg) => {
146
182
  imageDigest: networkDigest(value.imageDigest),
147
183
  mode: dockerMode(value.mode),
148
184
  desiredTaskCount: nonNegative(value.desiredTaskCount),
149
- constraintCount: nonNegative(value.constraintCount),
185
+ constraintCount,
150
186
  constraintSetDigest: networkDigest(value.constraintSetDigest),
151
187
  mounts: sortedMountDescriptors(value.mounts),
152
188
  ownershipLabels: ownershipLabels(value.ownershipLabels),
@@ -183,8 +219,8 @@ const dockerTask = (valueArg) => {
183
219
  const physicalContainer = (valueArg) => {
184
220
  const value = networkRecord(valueArg, [
185
221
  'dockerContainerId', 'dockerServiceId', 'dockerTaskId', 'imageId', 'serviceIdLabel', 'mounts',
186
- ]);
187
- return {
222
+ ], ['mountCorrelations']);
223
+ const result = {
188
224
  dockerContainerId: networkId(value.dockerContainerId),
189
225
  dockerServiceId: value.dockerServiceId === null ? null : networkId(value.dockerServiceId),
190
226
  dockerTaskId: value.dockerTaskId === null ? null : networkId(value.dockerTaskId),
@@ -192,6 +228,10 @@ const physicalContainer = (valueArg) => {
192
228
  serviceIdLabel: value.serviceIdLabel === null ? null : networkId(value.serviceIdLabel),
193
229
  mounts: sortedMountDescriptors(value.mounts),
194
230
  };
231
+ if (Object.hasOwn(value, 'mountCorrelations')) {
232
+ result.mountCorrelations = sortedPhysicalMountCorrelations(value.mountCorrelations);
233
+ }
234
+ return result;
195
235
  };
196
236
  const inventory = (valueArg) => {
197
237
  const value = networkRecord(valueArg, [
@@ -265,14 +305,139 @@ const canonicalDigest = async (domainArg, valueArg) => {
265
305
  };
266
306
  const exactDockerText = (valueArg, allowEmptyArg) => {
267
307
  requireNetwork(typeof valueArg === 'string'
268
- && new TextEncoder().encode(valueArg).length <= 4096
308
+ && new TextEncoder().encode(valueArg).length <= fleetCutoverContract.maximumDockerTextBytes
269
309
  && (allowEmptyArg || valueArg.length > 0));
270
310
  return valueArg;
271
311
  };
312
+ const openDockerRecord = (valueArg) => {
313
+ const value = captureNetwork(valueArg);
314
+ requireNetwork(value !== null && typeof value === 'object' && !Array.isArray(value));
315
+ return value;
316
+ };
272
317
  const computeExactIdentityDigest = async (domainArg, inputArg) => `sha256:${await createCanonicalJsonSha256Hex(canonicalizeStrictJson({
273
318
  domain: domainArg,
274
319
  input: inputArg,
275
320
  }, fail), fail)}`;
321
+ /**
322
+ * Hash the complete open-schema Docker Service.Spec object. Unknown response properties are
323
+ * intentionally included: this helper returns only the digest and never a retained projection.
324
+ */
325
+ export const computeFleetCutoverDockerServiceSpecDigest = async (valueArg) => {
326
+ try {
327
+ const spec = openDockerRecord(valueArg);
328
+ const canonicalSpec = canonicalizeStrictJson(spec, fail, 'Docker Service.Spec');
329
+ requireNetwork(new TextEncoder().encode(canonicalSpec).byteLength
330
+ <= fleetCutoverContract.maximumDockerServiceSpecCanonicalBytes);
331
+ return await computeExactIdentityDigest(fleetCutoverContract.dockerServiceSpecDigestDomain, { spec });
332
+ }
333
+ catch {
334
+ return fail();
335
+ }
336
+ };
337
+ /** Sort exact constraint strings while preserving duplicate entries, then return value-free identity. */
338
+ export const computeFleetCutoverDockerConstraintSetIdentity = async (valueArg) => {
339
+ try {
340
+ const captured = captureNetwork(valueArg);
341
+ requireNetwork(Array.isArray(captured)
342
+ && captured.length <= fleetCutoverContract.maximumConstraintsPerService);
343
+ const constraints = captured.map(itemArg => exactDockerText(itemArg, false))
344
+ .sort(compareWireTokens);
345
+ return {
346
+ constraintCount: constraints.length,
347
+ constraintSetDigest: await computeExactIdentityDigest(fleetCutoverContract.dockerConstraintSetDigestDomain, { constraints }),
348
+ };
349
+ }
350
+ catch {
351
+ return fail();
352
+ }
353
+ };
354
+ export const snapshotFleetCutoverDockerDesiredTaskCount = (valueArg) => safe(() => nonNegative(valueArg));
355
+ export const validateFleetCutoverDockerDesiredTaskCount = (valueArg) => (typeof valueArg === 'number' && Number.isSafeInteger(valueArg) && valueArg >= 0
356
+ ? []
357
+ : ['Docker ServiceStatus.DesiredTasks must be a non-negative safe integer']);
358
+ /** Apply only the documented exact cutover mount classifications; no path normalization occurs. */
359
+ export const classifyFleetCutoverDockerMount = (valueArg) => safe(() => {
360
+ const value = networkRecord(valueArg, ['type', 'source', 'target', 'readOnly']);
361
+ const rawType = exactDockerText(value.type, false);
362
+ const source = exactDockerText(value.source, true);
363
+ const target = exactDockerText(value.target, false);
364
+ requireNetwork(typeof value.readOnly === 'boolean');
365
+ if (rawType === 'volume')
366
+ return { type: 'volume', classification: 'persistent-volume' };
367
+ if (rawType === 'tmpfs')
368
+ return { type: 'tmpfs', classification: 'tmpfs' };
369
+ if (rawType !== 'bind')
370
+ return { type: 'unknown', classification: 'unknown' };
371
+ if (source === '/var/run/docker.sock'
372
+ && target === '/var/run/docker.sock'
373
+ && value.readOnly === false) {
374
+ return { type: 'bind', classification: 'docker-socket' };
375
+ }
376
+ if (source === '/sys/fs/cgroup'
377
+ && target === '/host/cgroup'
378
+ && value.readOnly === true) {
379
+ return { type: 'bind', classification: 'cgroup' };
380
+ }
381
+ return { type: 'bind', classification: 'bind' };
382
+ });
383
+ export const createFleetCutoverMountDescriptor = async (valueArg) => {
384
+ try {
385
+ const value = networkRecord(valueArg, ['type', 'source', 'target', 'readOnly']);
386
+ const source = exactDockerText(value.source, true);
387
+ const target = exactDockerText(value.target, false);
388
+ requireNetwork(typeof value.readOnly === 'boolean');
389
+ const shape = classifyFleetCutoverDockerMount({
390
+ type: exactDockerText(value.type, false),
391
+ source,
392
+ target,
393
+ readOnly: value.readOnly,
394
+ });
395
+ requireNetwork(shape.type === 'tmpfs' ? source.length === 0 : source.length > 0);
396
+ const identityInput = {
397
+ ...shape,
398
+ sourceIdentityDigest: await computeFleetCutoverMountSourceIdentityDigest({
399
+ type: shape.type,
400
+ source,
401
+ }),
402
+ targetIdentityDigest: await computeFleetCutoverMountTargetIdentityDigest({ target }),
403
+ readOnly: value.readOnly,
404
+ };
405
+ return {
406
+ ...identityInput,
407
+ mountIdentityDigest: await computeFleetCutoverMountIdentityDigest(identityInput),
408
+ };
409
+ }
410
+ catch {
411
+ return fail();
412
+ }
413
+ };
414
+ const dockerServiceMountInput = (valueArg) => {
415
+ const value = openDockerRecord(valueArg);
416
+ const type = exactDockerText(value.Type, false);
417
+ const source = value.Source === undefined ? '' : exactDockerText(value.Source, true);
418
+ const target = exactDockerText(value.Target, false);
419
+ const readOnly = value.ReadOnly === undefined ? false : value.ReadOnly;
420
+ requireNetwork(typeof readOnly === 'boolean');
421
+ return { type, source, target, readOnly };
422
+ };
423
+ const dockerLocalMountInput = (valueArg) => {
424
+ const value = openDockerRecord(valueArg);
425
+ const type = exactDockerText(value.Type, false);
426
+ const source = exactDockerText(value.Source, true);
427
+ const target = exactDockerText(value.Destination, false);
428
+ requireNetwork(typeof value.RW === 'boolean');
429
+ const logicalSource = type === 'volume'
430
+ ? exactDockerText(value.Name, false)
431
+ : source;
432
+ return {
433
+ descriptorInput: { type, source, target, readOnly: !value.RW },
434
+ logicalSource,
435
+ };
436
+ };
437
+ /** Read only consumed Service.Spec Mount fields; future Docker response properties are ignored. */
438
+ export const createFleetCutoverDockerServiceMountDescriptor = async (valueArg) => createFleetCutoverMountDescriptor(dockerServiceMountInput(valueArg));
439
+ /** Read only consumed local MountPoint fields and retain the exact physical Source identity. */
440
+ export const createFleetCutoverDockerLocalMountDescriptor = async (valueArg) => createFleetCutoverMountDescriptor(dockerLocalMountInput(valueArg).descriptorInput);
276
441
  export const computeFleetCutoverMountSourceIdentityDigest = async (valueArg) => safe(async () => {
277
442
  const value = networkRecord(valueArg, ['type', 'source']);
278
443
  return computeExactIdentityDigest(fleetCutoverContract.mountSourceIdentityDigestDomain, {
@@ -299,12 +464,66 @@ export const computeFleetCutoverMountIdentityDigest = async (valueArg) => safe(a
299
464
  readOnly: value.readOnly,
300
465
  });
301
466
  });
467
+ export const computeFleetCutoverMountCorrelationIdentityDigest = async (valueArg) => safe(async () => {
468
+ const value = networkRecord(valueArg, [
469
+ 'physicalMountIdentityDigest', 'serviceMountIdentityDigest',
470
+ ]);
471
+ return computeExactIdentityDigest(fleetCutoverContract.mountCorrelationIdentityDigestDomain, {
472
+ physicalMountIdentityDigest: networkDigest(value.physicalMountIdentityDigest),
473
+ serviceMountIdentityDigest: networkDigest(value.serviceMountIdentityDigest),
474
+ });
475
+ });
476
+ /**
477
+ * Produce both the exact local physical descriptor and its logical service-mount correlation.
478
+ * For a volume only MountPoint.Name supplies the logical source. Unknown types and a missing or
479
+ * empty volume Name are refused because they cannot establish a truthful service join.
480
+ */
481
+ export const createFleetCutoverDockerPhysicalMountEvidence = async (valueArg) => {
482
+ try {
483
+ const value = dockerLocalMountInput(valueArg);
484
+ requireNetwork(['volume', 'bind', 'tmpfs'].includes(value.descriptorInput.type));
485
+ const mount = await createFleetCutoverMountDescriptor(value.descriptorInput);
486
+ const serviceMount = await createFleetCutoverMountDescriptor({
487
+ ...value.descriptorInput,
488
+ source: value.logicalSource,
489
+ });
490
+ const correlationInput = {
491
+ physicalMountIdentityDigest: mount.mountIdentityDigest,
492
+ serviceMountIdentityDigest: serviceMount.mountIdentityDigest,
493
+ };
494
+ return {
495
+ mount,
496
+ correlation: {
497
+ ...correlationInput,
498
+ correlationIdentityDigest: await computeFleetCutoverMountCorrelationIdentityDigest(correlationInput),
499
+ },
500
+ };
501
+ }
502
+ catch {
503
+ return fail();
504
+ }
505
+ };
302
506
  const validateMountDescriptors = async (mountsArg) => {
303
507
  for (const mount of mountsArg) {
304
508
  const { mountIdentityDigest, ...input } = mount;
305
509
  requireNetwork(mountIdentityDigest === await computeFleetCutoverMountIdentityDigest(input));
306
510
  }
307
511
  };
512
+ const validatePhysicalMountCorrelations = async (containerArg) => {
513
+ if (containerArg.mountCorrelations === undefined)
514
+ return;
515
+ requireNetwork(containerArg.mountCorrelations.length === containerArg.mounts.length);
516
+ const physicalMountIdentities = new Set(containerArg.mounts.map(itemArg => itemArg.mountIdentityDigest));
517
+ const serviceMountIdentities = new Set(containerArg.mountCorrelations.map(itemArg => itemArg.serviceMountIdentityDigest));
518
+ requireNetwork(physicalMountIdentities.size === containerArg.mounts.length
519
+ && serviceMountIdentities.size === containerArg.mountCorrelations.length
520
+ && containerArg.mountCorrelations.every(itemArg => physicalMountIdentities.has(itemArg.physicalMountIdentityDigest)));
521
+ for (const correlation of containerArg.mountCorrelations) {
522
+ const { correlationIdentityDigest, ...input } = correlation;
523
+ requireNetwork(correlationIdentityDigest
524
+ === await computeFleetCutoverMountCorrelationIdentityDigest(input));
525
+ }
526
+ };
308
527
  export const computeFleetCutoverContainerSetIdentityDigest = async (containerIdsArg) => safe(async () => {
309
528
  const containerIds = networkSorted(networkList(containerIdsArg, fleetCutoverContract.maximumContainersPerNode, networkId), itemArg => itemArg);
310
529
  return computeExactIdentityDigest(fleetCutoverContract.containerSetIdentityDigestDomain, {
@@ -347,8 +566,10 @@ export const validateFleetCutoverLocalNodeSnapshot = async (valueArg) => {
347
566
  const containerIdsDigest = await computeFleetCutoverContainerSetIdentityDigest(value.containers.map(itemArg => itemArg.dockerContainerId));
348
567
  requireNetwork(value.before.containerIdsDigest === containerIdsDigest
349
568
  && value.after.containerIdsDigest === containerIdsDigest);
350
- for (const container of value.containers)
569
+ for (const container of value.containers) {
351
570
  await validateMountDescriptors(container.mounts);
571
+ await validatePhysicalMountCorrelations(container);
572
+ }
352
573
  return value.snapshotDigest === await computeFleetCutoverLocalNodeSnapshotDigest(value)
353
574
  ? [] : ['fleet cutover local node snapshot digest does not match'];
354
575
  }
@@ -470,6 +691,10 @@ export const fleetCutoverEvidenceReferenceOf = (valueArg) => reference({
470
691
  generation: valueArg.generation,
471
692
  digest: valueArg.digest,
472
693
  });
694
+ export const fleetCutoverPreparedVolumeHandoffPageReferenceOf = (valueArg) => ({
695
+ ...fleetCutoverEvidenceReferenceOf(valueArg),
696
+ nodeId: networkNodeId(valueArg.nodeId),
697
+ });
473
698
  export const snapshotFleetCutoverAcceptedEvidenceReference = (valueArg) => safe(() => reference(captureNetwork(valueArg)));
474
699
  const scopeEntry = (valueArg) => {
475
700
  const value = networkRecord(valueArg, [
@@ -591,6 +816,297 @@ const volumeHandoff = (valueArg) => {
591
816
  };
592
817
  export const snapshotFleetCutoverVolumeHandoffIntent = (valueArg) => safe(() => volumeHandoff(captureNetwork(valueArg)));
593
818
  export const computeFleetCutoverVolumeHandoffDigest = async (valueArg) => canonicalDigest(fleetCutoverContract.volumeHandoffDigestDomain, snapshotFleetCutoverVolumeHandoffIntent(valueArg));
819
+ const persistentVolumeMountDescriptor = (valueArg) => {
820
+ const value = mountDescriptor(valueArg);
821
+ requireNetwork(value.type === 'volume'
822
+ && value.classification === 'persistent-volume'
823
+ && value.readOnly === false);
824
+ return value;
825
+ };
826
+ const preparedVolumeHandoff = (valueArg) => {
827
+ const value = networkRecord(valueArg, [
828
+ 'id', 'generation', 'clusterId', 'nodeId', 'serviceId', 'volumeId', 'observedMount',
829
+ 'claimIntent', 'runtime', 'scope', 'targetSet', 'legacyStorageEvidence',
830
+ 'sourceNodeObservation', 'acceptedAt', 'digest',
831
+ ]);
832
+ const clusterId = networkId(value.clusterId);
833
+ const nodeId = networkNodeId(value.nodeId);
834
+ const serviceId = networkId(value.serviceId);
835
+ const observedMount = persistentVolumeMountDescriptor(value.observedMount);
836
+ const claimIntent = snapshotRuntimeStorageClaimIntent(value.claimIntent);
837
+ const runtime = runtimeReference(value.runtime);
838
+ const targetSet = targetSetReference(value.targetSet);
839
+ requireNetwork(runtime.id === clusterId && runtime.phase === 'draining'
840
+ && targetSet.cloudlyClusterId === clusterId
841
+ && claimIntent.clusterId === clusterId
842
+ && claimIntent.nodeId === nodeId
843
+ && claimIntent.serviceId === serviceId);
844
+ return {
845
+ id: networkId(value.id),
846
+ generation: networkCounter(value.generation),
847
+ clusterId,
848
+ nodeId,
849
+ serviceId,
850
+ volumeId: networkId(value.volumeId),
851
+ observedMount,
852
+ claimIntent,
853
+ runtime: runtime,
854
+ scope: reference(value.scope),
855
+ targetSet,
856
+ legacyStorageEvidence: reference(value.legacyStorageEvidence),
857
+ sourceNodeObservation: reference(value.sourceNodeObservation),
858
+ acceptedAt: networkCounter(value.acceptedAt),
859
+ digest: networkDigest(value.digest),
860
+ };
861
+ };
862
+ export const snapshotFleetCutoverPreparedVolumeHandoffIntent = (valueArg) => safe(() => preparedVolumeHandoff(captureNetwork(valueArg)));
863
+ export const computeFleetCutoverPreparedVolumeHandoffDigest = async (valueArg) => canonicalDigest(fleetCutoverContract.preparedVolumeHandoffDigestDomain, snapshotFleetCutoverPreparedVolumeHandoffIntent(valueArg));
864
+ export const validateFleetCutoverPreparedVolumeHandoffIntent = async (valueArg) => {
865
+ try {
866
+ const value = snapshotFleetCutoverPreparedVolumeHandoffIntent(valueArg);
867
+ if ((await validateRuntimeStorageClaimIntent(value.claimIntent)).length) {
868
+ return ['fleet cutover prepared volume handoff claim intent is invalid'];
869
+ }
870
+ return value.digest === await computeFleetCutoverPreparedVolumeHandoffDigest(value)
871
+ ? [] : ['fleet cutover prepared volume handoff digest does not match'];
872
+ }
873
+ catch {
874
+ return ['fleet cutover prepared volume handoff must use its exact canonical schema'];
875
+ }
876
+ };
877
+ export const snapshotFleetCutoverPreparedVolumeHandoffMutation = (valueArg) => safe(() => {
878
+ const value = networkRecord(captureNetwork(valueArg), [
879
+ 'mutationId', 'clusterId', 'currentRuntime', 'scope', 'targetSet', 'expectedAggregate',
880
+ 'upserts', 'removals',
881
+ ]);
882
+ const clusterId = networkId(value.clusterId);
883
+ const currentRuntime = runtimeReference(value.currentRuntime);
884
+ const targetSet = targetSetReference(value.targetSet);
885
+ requireNetwork(currentRuntime.id === clusterId && currentRuntime.phase === 'draining'
886
+ && targetSet.cloudlyClusterId === clusterId);
887
+ const requestKeys = new Set();
888
+ const placementKeys = new Set();
889
+ const upserts = networkSorted(networkList(value.upserts, fleetCutoverContract.maximumPreparedVolumeHandoffMutationEntries, itemArg => {
890
+ const item = networkRecord(itemArg, [
891
+ 'nodeId', 'serviceId', 'mountIdentityDigest', 'request',
892
+ ]);
893
+ const nodeId = networkNodeId(item.nodeId);
894
+ const serviceId = networkId(item.serviceId);
895
+ const mountIdentityDigest = networkDigest(item.mountIdentityDigest);
896
+ const request = normalizeStorageRequest(item.request);
897
+ requireNetwork(request.kind === 'filesystem'
898
+ && request.accessMode === 'ReadWriteOnce'
899
+ && request.reclaimPolicy === 'retain');
900
+ const requestKey = `${nodeId}\u0000${serviceId}\u0000${request.id}`;
901
+ const placementKey = `${nodeId}\u0000${serviceId}\u0000${mountIdentityDigest}`;
902
+ requireNetwork(!requestKeys.has(requestKey) && !placementKeys.has(placementKey));
903
+ requestKeys.add(requestKey);
904
+ placementKeys.add(placementKey);
905
+ return {
906
+ nodeId,
907
+ serviceId,
908
+ mountIdentityDigest,
909
+ request: request,
910
+ };
911
+ }), itemArg => `${itemArg.nodeId}\u0000${itemArg.serviceId}\u0000${itemArg.mountIdentityDigest}`);
912
+ const removals = networkSorted(networkList(value.removals, fleetCutoverContract.maximumPreparedVolumeHandoffMutationEntries, reference), itemArg => `${itemArg.id}\u0000${String(itemArg.generation).padStart(16, '0')}\u0000${itemArg.digest}`);
913
+ requireNetwork(upserts.length + removals.length > 0
914
+ && upserts.length + removals.length
915
+ <= fleetCutoverContract.maximumPreparedVolumeHandoffMutationEntries);
916
+ return {
917
+ mutationId: networkId(value.mutationId),
918
+ clusterId,
919
+ currentRuntime: currentRuntime,
920
+ scope: reference(value.scope),
921
+ targetSet,
922
+ expectedAggregate: value.expectedAggregate === null ? null : reference(value.expectedAggregate),
923
+ upserts,
924
+ removals,
925
+ };
926
+ });
927
+ const preparedVolumeHandoffAggregate = (valueArg) => {
928
+ const value = networkRecord(valueArg, [
929
+ 'id', 'generation', 'previous', 'clusterId', 'runtime', 'scope', 'targetSet', 'state',
930
+ 'requiredHandoffCount', 'handoffCount', 'pageCount', 'handoffSetDigest', 'acceptedAt',
931
+ 'digest',
932
+ ]);
933
+ const id = networkId(value.id);
934
+ const generation = networkCounter(value.generation);
935
+ const previous = value.previous === null ? null : reference(value.previous);
936
+ requireNetwork(generation === 1
937
+ ? previous === null
938
+ : previous?.id === id && previous.generation === generation - 1);
939
+ const clusterId = networkId(value.clusterId);
940
+ const runtime = runtimeReference(value.runtime);
941
+ const targetSet = targetSetReference(value.targetSet);
942
+ const state = literal(['incomplete', 'complete'], value.state);
943
+ const requiredHandoffCount = nonNegative(value.requiredHandoffCount);
944
+ const handoffCount = nonNegative(value.handoffCount);
945
+ const pageCount = nonNegative(value.pageCount);
946
+ requireNetwork(runtime.id === clusterId && runtime.phase === 'draining'
947
+ && targetSet.cloudlyClusterId === clusterId
948
+ && requiredHandoffCount <= fleetCutoverContract.maximumPreparedVolumeHandoffs
949
+ && handoffCount <= fleetCutoverContract.maximumPreparedVolumeHandoffs
950
+ && pageCount <= fleetCutoverContract.maximumPreparedVolumeHandoffPages
951
+ && pageCount === Math.ceil(handoffCount
952
+ / fleetCutoverContract.maximumPreparedVolumeHandoffMutationEntries)
953
+ && (state === 'complete') === (requiredHandoffCount === handoffCount));
954
+ return {
955
+ id,
956
+ generation,
957
+ previous,
958
+ clusterId,
959
+ runtime: runtime,
960
+ scope: reference(value.scope),
961
+ targetSet,
962
+ state,
963
+ requiredHandoffCount,
964
+ handoffCount,
965
+ pageCount,
966
+ handoffSetDigest: networkDigest(value.handoffSetDigest),
967
+ acceptedAt: networkCounter(value.acceptedAt),
968
+ digest: networkDigest(value.digest),
969
+ };
970
+ };
971
+ export const snapshotFleetCutoverPreparedVolumeHandoffAggregate = (valueArg) => safe(() => preparedVolumeHandoffAggregate(captureNetwork(valueArg)));
972
+ export const computeFleetCutoverPreparedVolumeHandoffAggregateDigest = async (valueArg) => canonicalDigest(fleetCutoverContract.preparedVolumeHandoffAggregateDigestDomain, snapshotFleetCutoverPreparedVolumeHandoffAggregate(valueArg));
973
+ export const validateFleetCutoverPreparedVolumeHandoffAggregate = async (valueArg) => {
974
+ try {
975
+ const value = snapshotFleetCutoverPreparedVolumeHandoffAggregate(valueArg);
976
+ return value.digest === await computeFleetCutoverPreparedVolumeHandoffAggregateDigest(value)
977
+ ? [] : ['fleet cutover prepared volume handoff aggregate digest does not match'];
978
+ }
979
+ catch {
980
+ return ['fleet cutover prepared volume handoff aggregate must use its exact canonical schema'];
981
+ }
982
+ };
983
+ const preparedVolumeHandoffPage = (valueArg) => {
984
+ const value = networkRecord(valueArg, [
985
+ 'id', 'generation', 'aggregate', 'pageIndex', 'handoffs', 'handoffSetPageDigest', 'digest',
986
+ ]);
987
+ requireNetwork(value.generation === 1);
988
+ const handoffs = networkSorted(networkList(value.handoffs, fleetCutoverContract.maximumPreparedVolumeHandoffMutationEntries, itemArg => {
989
+ const item = networkRecord(itemArg, ['id', 'generation', 'digest', 'nodeId']);
990
+ return fleetCutoverPreparedVolumeHandoffPageReferenceOf({
991
+ ...reference({ id: item.id, generation: item.generation, digest: item.digest }),
992
+ nodeId: networkNodeId(item.nodeId),
993
+ });
994
+ }), itemArg => `${itemArg.id}\u0000${String(itemArg.generation).padStart(16, '0')}\u0000${itemArg.digest}`);
995
+ const pageIndex = nonNegative(value.pageIndex);
996
+ requireNetwork(handoffs.length > 0
997
+ && pageIndex < fleetCutoverContract.maximumPreparedVolumeHandoffPages);
998
+ return {
999
+ id: networkId(value.id),
1000
+ generation: 1,
1001
+ aggregate: reference(value.aggregate),
1002
+ pageIndex,
1003
+ handoffs,
1004
+ handoffSetPageDigest: networkDigest(value.handoffSetPageDigest),
1005
+ digest: networkDigest(value.digest),
1006
+ };
1007
+ };
1008
+ export const snapshotFleetCutoverPreparedVolumeHandoffPage = (valueArg) => safe(() => preparedVolumeHandoffPage(captureNetwork(valueArg)));
1009
+ export const computeFleetCutoverPreparedVolumeHandoffPageContentDigest = async (pageIndexArg, handoffsArg) => {
1010
+ const page = preparedVolumeHandoffPage({
1011
+ id: 'FleetCutoverPreparedVolumeHandoffPage:content',
1012
+ generation: 1,
1013
+ aggregate: { id: 'FleetCutoverPreparedVolumeHandoffAggregate:content', generation: 1,
1014
+ digest: `sha256:${'0'.repeat(64)}` },
1015
+ pageIndex: pageIndexArg,
1016
+ handoffs: handoffsArg,
1017
+ handoffSetPageDigest: `sha256:${'0'.repeat(64)}`,
1018
+ digest: `sha256:${'0'.repeat(64)}`,
1019
+ });
1020
+ return canonicalDigest(fleetCutoverContract.preparedVolumeHandoffPageContentDigestDomain, {
1021
+ pageIndex: page.pageIndex,
1022
+ handoffs: page.handoffs,
1023
+ digest: `sha256:${'0'.repeat(64)}`,
1024
+ });
1025
+ };
1026
+ export const computeFleetCutoverPreparedVolumeHandoffPageDigest = async (valueArg) => canonicalDigest(fleetCutoverContract.preparedVolumeHandoffPageDigestDomain, snapshotFleetCutoverPreparedVolumeHandoffPage(valueArg));
1027
+ export const validateFleetCutoverPreparedVolumeHandoffPage = async (valueArg) => {
1028
+ try {
1029
+ const value = snapshotFleetCutoverPreparedVolumeHandoffPage(valueArg);
1030
+ if (value.handoffSetPageDigest
1031
+ !== await computeFleetCutoverPreparedVolumeHandoffPageContentDigest(value.pageIndex, value.handoffs)) {
1032
+ return ['fleet cutover prepared volume handoff page content digest does not match'];
1033
+ }
1034
+ return value.digest === await computeFleetCutoverPreparedVolumeHandoffPageDigest(value)
1035
+ ? [] : ['fleet cutover prepared volume handoff page digest does not match'];
1036
+ }
1037
+ catch {
1038
+ return ['fleet cutover prepared volume handoff page must use its exact canonical schema'];
1039
+ }
1040
+ };
1041
+ export const computeFleetCutoverPreparedVolumeHandoffSetDigest = async (entriesArg) => safe(async () => {
1042
+ const entries = networkSorted(networkList(captureNetwork(entriesArg), fleetCutoverContract.maximumPreparedVolumeHandoffPages, itemArg => {
1043
+ const item = networkRecord(itemArg, ['pageIndex', 'handoffSetPageDigest']);
1044
+ return {
1045
+ pageIndex: nonNegative(item.pageIndex),
1046
+ handoffSetPageDigest: networkDigest(item.handoffSetPageDigest),
1047
+ };
1048
+ }), itemArg => String(itemArg.pageIndex).padStart(8, '0'));
1049
+ requireNetwork(entries.every((entryArg, indexArg) => entryArg.pageIndex === indexArg));
1050
+ return canonicalDigest(fleetCutoverContract.preparedVolumeHandoffSetDigestDomain, {
1051
+ entries,
1052
+ digest: `sha256:${'0'.repeat(64)}`,
1053
+ });
1054
+ });
1055
+ /**
1056
+ * Full pinned-set proof. The caller must supply every page for the exact aggregate revision; a
1057
+ * node-local subset or a mixed revision can never satisfy this binder.
1058
+ */
1059
+ export const bindFleetCutoverPreparedVolumeHandoffPages = async (aggregateArg, pagesArg) => {
1060
+ const aggregate = snapshotFleetCutoverPreparedVolumeHandoffAggregate(aggregateArg);
1061
+ if ((await validateFleetCutoverPreparedVolumeHandoffAggregate(aggregate)).length)
1062
+ fail();
1063
+ const pages = safe(() => {
1064
+ requireNetwork(Array.isArray(pagesArg)
1065
+ && Object.getPrototypeOf(pagesArg) === Array.prototype
1066
+ && pagesArg.length <= fleetCutoverContract.maximumPreparedVolumeHandoffPages);
1067
+ const keys = Reflect.ownKeys(pagesArg);
1068
+ requireNetwork(keys.length === pagesArg.length + 1);
1069
+ const result = [];
1070
+ for (let index = 0; index < pagesArg.length; index++) {
1071
+ const descriptor = Object.getOwnPropertyDescriptor(pagesArg, String(index));
1072
+ requireNetwork(descriptor?.enumerable && Object.hasOwn(descriptor, 'value'));
1073
+ result.push(snapshotFleetCutoverPreparedVolumeHandoffPage(descriptor.value));
1074
+ }
1075
+ return networkSorted(result, itemArg => String(itemArg.pageIndex).padStart(8, '0'));
1076
+ });
1077
+ requireNetwork(pages.length === aggregate.pageCount);
1078
+ let handoffCount = 0;
1079
+ const seen = new Set();
1080
+ let previousHandoffKey = null;
1081
+ for (const [index, page] of pages.entries()) {
1082
+ requireNetwork(page.pageIndex === index
1083
+ && page.aggregate.id === aggregate.id
1084
+ && page.aggregate.generation === aggregate.generation
1085
+ && page.aggregate.digest === aggregate.digest
1086
+ && !(await validateFleetCutoverPreparedVolumeHandoffPage(page)).length);
1087
+ const expectedLength = index < pages.length - 1
1088
+ ? fleetCutoverContract.maximumPreparedVolumeHandoffMutationEntries
1089
+ : aggregate.handoffCount
1090
+ % fleetCutoverContract.maximumPreparedVolumeHandoffMutationEntries
1091
+ || fleetCutoverContract.maximumPreparedVolumeHandoffMutationEntries;
1092
+ requireNetwork(page.handoffs.length === expectedLength);
1093
+ handoffCount += page.handoffs.length;
1094
+ for (const handoff of page.handoffs) {
1095
+ const key = `${handoff.id}\u0000${handoff.generation}\u0000${handoff.digest}`;
1096
+ requireNetwork(!seen.has(key) && (previousHandoffKey === null || previousHandoffKey < key));
1097
+ seen.add(key);
1098
+ previousHandoffKey = key;
1099
+ }
1100
+ }
1101
+ const entries = pages.map(page => ({
1102
+ pageIndex: page.pageIndex,
1103
+ handoffSetPageDigest: page.handoffSetPageDigest,
1104
+ }));
1105
+ requireNetwork(handoffCount === aggregate.handoffCount
1106
+ && aggregate.handoffSetDigest
1107
+ === await computeFleetCutoverPreparedVolumeHandoffSetDigest(entries));
1108
+ return { aggregate, pages };
1109
+ };
594
1110
  const volumeFence = (valueArg) => {
595
1111
  requireNetwork(valueArg !== null && typeof valueArg === 'object');
596
1112
  const state = valueArg.state;
@@ -683,6 +1199,38 @@ export const bindFleetCutoverAdoptionToVolumeFence = (adoptionArg, fenceArg) =>
683
1199
  && adoption.palletFence.digest === fence.digest);
684
1200
  return { adoption, fence };
685
1201
  });
1202
+ /**
1203
+ * Joins the accepted adoption result to the full handoff and provider-ready claim content.
1204
+ * Native attachment fencing and accepted-record dereferencing remain owner checks.
1205
+ */
1206
+ export const bindFleetCutoverAdoptionToStorageClaim = async (adoptionArg, handoffArg, claimArg) => {
1207
+ try {
1208
+ const adoption = snapshotFleetCutoverCorestoreAdoptionReceipt(adoptionArg);
1209
+ const handoff = snapshotFleetCutoverPreparedVolumeHandoffIntent(handoffArg);
1210
+ const claim = snapshotRuntimeStorageClaim(claimArg);
1211
+ if ((await validateFleetCutoverCorestoreAdoptionReceipt(adoption)).length
1212
+ || (await validateFleetCutoverPreparedVolumeHandoffIntent(handoff)).length
1213
+ || (await validateRuntimeStorageClaim(claim)).length)
1214
+ fail();
1215
+ await bindRuntimeStorageClaimToIntent(claim, handoff.claimIntent);
1216
+ requireNetwork(adoption.clusterId === handoff.clusterId
1217
+ && adoption.nodeId === handoff.nodeId
1218
+ && adoption.serviceId === handoff.serviceId
1219
+ && adoption.volumeId === handoff.volumeId
1220
+ && adoption.mountIdentityDigest === handoff.observedMount.mountIdentityDigest
1221
+ && adoption.handoffIntent.id === handoff.id
1222
+ && adoption.handoffIntent.generation === handoff.generation
1223
+ && adoption.handoffIntent.digest === handoff.digest
1224
+ && adoption.claim.id === claim.id
1225
+ && adoption.claim.generation === claim.generation
1226
+ && adoption.claim.digest === claim.digest
1227
+ && adoption.acceptedAt >= handoff.acceptedAt);
1228
+ return { adoption, handoff, claim };
1229
+ }
1230
+ catch {
1231
+ return fail();
1232
+ }
1233
+ };
686
1234
  export const validateFleetCutoverVolumeHandoffIntent = async (valueArg) => {
687
1235
  try {
688
1236
  const value = snapshotFleetCutoverVolumeHandoffIntent(valueArg);
@@ -735,6 +1283,235 @@ const runtimeSession = (valueArg) => {
735
1283
  runtimeNamespace: networkId(value.runtimeNamespace),
736
1284
  };
737
1285
  };
1286
+ const storageAdoptionGrant = (valueArg) => {
1287
+ const value = networkRecord(valueArg, [
1288
+ 'id', 'generation', 'previous', 'clusterId', 'nodeId', 'serviceId', 'volumeId',
1289
+ 'observedMount', 'runtime', 'session', 'handoffIntent', 'palletFence', 'acceptedAt',
1290
+ 'digest',
1291
+ ]);
1292
+ const id = networkId(value.id);
1293
+ const generation = networkCounter(value.generation);
1294
+ const previous = value.previous === null ? null : reference(value.previous);
1295
+ requireNetwork(generation === 1
1296
+ ? previous === null
1297
+ : previous?.id === id && previous.generation === generation - 1);
1298
+ const clusterId = networkId(value.clusterId);
1299
+ const nodeId = networkNodeId(value.nodeId);
1300
+ const runtime = runtimeReference(value.runtime);
1301
+ const session = runtimeSession(value.session);
1302
+ requireNetwork(runtime.id === clusterId && runtime.phase === 'pallet'
1303
+ && session.clusterId === clusterId
1304
+ && session.nodeId === nodeId
1305
+ && session.controller.kind === 'cloudly');
1306
+ return {
1307
+ id,
1308
+ generation,
1309
+ previous,
1310
+ clusterId,
1311
+ nodeId,
1312
+ serviceId: networkId(value.serviceId),
1313
+ volumeId: networkId(value.volumeId),
1314
+ observedMount: persistentVolumeMountDescriptor(value.observedMount),
1315
+ runtime: runtime,
1316
+ session,
1317
+ handoffIntent: reference(value.handoffIntent),
1318
+ palletFence: reference(value.palletFence),
1319
+ acceptedAt: networkCounter(value.acceptedAt),
1320
+ digest: networkDigest(value.digest),
1321
+ };
1322
+ };
1323
+ export const snapshotFleetCutoverStorageAdoptionGrant = (valueArg) => safe(() => storageAdoptionGrant(captureNetwork(valueArg)));
1324
+ export const computeFleetCutoverStorageAdoptionGrantDigest = async (valueArg) => canonicalDigest(fleetCutoverContract.storageAdoptionGrantDigestDomain, snapshotFleetCutoverStorageAdoptionGrant(valueArg));
1325
+ export const validateFleetCutoverStorageAdoptionGrant = async (valueArg) => {
1326
+ try {
1327
+ const value = snapshotFleetCutoverStorageAdoptionGrant(valueArg);
1328
+ return value.digest === await computeFleetCutoverStorageAdoptionGrantDigest(value)
1329
+ ? [] : ['fleet cutover storage adoption grant digest does not match'];
1330
+ }
1331
+ catch {
1332
+ return ['fleet cutover storage adoption grant must use its exact canonical schema'];
1333
+ }
1334
+ };
1335
+ /** Content join only; the controller must still prove this is the live current session and phase. */
1336
+ export const bindFleetCutoverStorageAdoptionGrant = async (grantArg, handoffArg, heldFenceArg) => {
1337
+ try {
1338
+ const grant = snapshotFleetCutoverStorageAdoptionGrant(grantArg);
1339
+ const handoff = snapshotFleetCutoverPreparedVolumeHandoffIntent(handoffArg);
1340
+ const fence = snapshotFleetCutoverVolumeFence(heldFenceArg);
1341
+ if ((await validateFleetCutoverStorageAdoptionGrant(grant)).length
1342
+ || (await validateFleetCutoverPreparedVolumeHandoffIntent(handoff)).length
1343
+ || (await validateFleetCutoverVolumeFence(fence)).length)
1344
+ fail();
1345
+ requireNetwork(fence.state === 'held'
1346
+ && grant.clusterId === handoff.clusterId
1347
+ && grant.nodeId === handoff.nodeId
1348
+ && grant.serviceId === handoff.serviceId
1349
+ && grant.volumeId === handoff.volumeId
1350
+ && grant.observedMount.type === handoff.observedMount.type
1351
+ && grant.observedMount.classification === handoff.observedMount.classification
1352
+ && grant.observedMount.sourceIdentityDigest === handoff.observedMount.sourceIdentityDigest
1353
+ && grant.observedMount.targetIdentityDigest === handoff.observedMount.targetIdentityDigest
1354
+ && grant.observedMount.readOnly === handoff.observedMount.readOnly
1355
+ && grant.observedMount.mountIdentityDigest === handoff.observedMount.mountIdentityDigest
1356
+ && grant.handoffIntent.id === handoff.id
1357
+ && grant.handoffIntent.generation === handoff.generation
1358
+ && grant.handoffIntent.digest === handoff.digest
1359
+ && grant.palletFence.id === fence.id
1360
+ && grant.palletFence.generation === fence.generation
1361
+ && grant.palletFence.digest === fence.digest
1362
+ && fence.clusterId === handoff.clusterId
1363
+ && fence.nodeId === handoff.nodeId
1364
+ && fence.serviceId === handoff.serviceId
1365
+ && fence.volumeId === handoff.volumeId
1366
+ && fence.mountIdentityDigest === handoff.observedMount.mountIdentityDigest
1367
+ && fence.handoffIntent.id === handoff.id
1368
+ && fence.handoffIntent.generation === handoff.generation
1369
+ && fence.handoffIntent.digest === handoff.digest
1370
+ && fence.heldRuntime.id === handoff.runtime.id
1371
+ && fence.heldRuntime.phase === handoff.runtime.phase
1372
+ && fence.heldRuntime.generation === handoff.runtime.generation
1373
+ && grant.session.controller.id === handoff.claimIntent.controller.id
1374
+ && grant.session.controller.epoch === handoff.claimIntent.controller.epoch
1375
+ && grant.session.runtimeNamespace === handoff.claimIntent.runtimeNamespace
1376
+ && grant.acceptedAt >= fence.heldAt);
1377
+ return { grant, handoff, fence };
1378
+ }
1379
+ catch {
1380
+ return fail();
1381
+ }
1382
+ };
1383
+ export const snapshotFleetCutoverStorageAdoptionBundle = (valueArg) => safe(() => {
1384
+ const value = networkRecord(captureNetwork(valueArg), [
1385
+ 'grant', 'fence', 'adoption', 'claim',
1386
+ ]);
1387
+ const fence = snapshotFleetCutoverVolumeFence(value.fence);
1388
+ requireNetwork(fence.state === 'consumed');
1389
+ return {
1390
+ grant: snapshotFleetCutoverStorageAdoptionGrant(value.grant),
1391
+ fence,
1392
+ adoption: snapshotFleetCutoverCorestoreAdoptionReceipt(value.adoption),
1393
+ claim: snapshotRuntimeStorageClaim(value.claim),
1394
+ };
1395
+ });
1396
+ /**
1397
+ * Binds the complete post-adoption content. Physical lineage remains the provider-produced
1398
+ * adoption digest and is deliberately never equated to the observed Docker source identity.
1399
+ */
1400
+ export const bindFleetCutoverStorageAdoptionBundle = async (valueArg, handoffArg) => {
1401
+ try {
1402
+ const bundle = snapshotFleetCutoverStorageAdoptionBundle(valueArg);
1403
+ const handoff = snapshotFleetCutoverPreparedVolumeHandoffIntent(handoffArg);
1404
+ const { grant, fence, adoption, claim } = bundle;
1405
+ if ((await validateFleetCutoverStorageAdoptionGrant(grant)).length
1406
+ || (await validateFleetCutoverPreparedVolumeHandoffIntent(handoff)).length
1407
+ || (await validateFleetCutoverVolumeFence(fence)).length
1408
+ || (await validateFleetCutoverCorestoreAdoptionReceipt(adoption)).length
1409
+ || (await validateRuntimeStorageClaim(claim)).length)
1410
+ fail();
1411
+ await bindRuntimeStorageClaimToIntent(claim, handoff.claimIntent);
1412
+ requireNetwork(grant.clusterId === handoff.clusterId
1413
+ && grant.nodeId === handoff.nodeId
1414
+ && grant.serviceId === handoff.serviceId
1415
+ && grant.volumeId === handoff.volumeId
1416
+ && grant.observedMount.type === handoff.observedMount.type
1417
+ && grant.observedMount.classification === handoff.observedMount.classification
1418
+ && grant.observedMount.sourceIdentityDigest === handoff.observedMount.sourceIdentityDigest
1419
+ && grant.observedMount.targetIdentityDigest === handoff.observedMount.targetIdentityDigest
1420
+ && grant.observedMount.readOnly === handoff.observedMount.readOnly
1421
+ && grant.observedMount.mountIdentityDigest === handoff.observedMount.mountIdentityDigest
1422
+ && grant.session.controller.id === handoff.claimIntent.controller.id
1423
+ && grant.session.controller.epoch === handoff.claimIntent.controller.epoch
1424
+ && grant.session.runtimeNamespace === handoff.claimIntent.runtimeNamespace
1425
+ && grant.handoffIntent.id === handoff.id
1426
+ && grant.handoffIntent.generation === handoff.generation
1427
+ && grant.handoffIntent.digest === handoff.digest
1428
+ && fence.clusterId === grant.clusterId
1429
+ && fence.nodeId === grant.nodeId
1430
+ && fence.serviceId === grant.serviceId
1431
+ && fence.volumeId === grant.volumeId
1432
+ && fence.mountIdentityDigest === grant.observedMount.mountIdentityDigest
1433
+ && fence.handoffIntent.id === handoff.id
1434
+ && fence.handoffIntent.generation === handoff.generation
1435
+ && fence.handoffIntent.digest === handoff.digest
1436
+ && fence.previous !== null
1437
+ && fence.previous.id === grant.palletFence.id
1438
+ && fence.previous.generation === grant.palletFence.generation
1439
+ && fence.previous.digest === grant.palletFence.digest
1440
+ && fence.consumedRuntime.id === grant.runtime.id
1441
+ && fence.consumedRuntime.phase === grant.runtime.phase
1442
+ && fence.consumedRuntime.generation === grant.runtime.generation
1443
+ && adoption.clusterId === handoff.clusterId
1444
+ && adoption.nodeId === handoff.nodeId
1445
+ && adoption.serviceId === handoff.serviceId
1446
+ && adoption.volumeId === handoff.volumeId
1447
+ && adoption.mountIdentityDigest === handoff.observedMount.mountIdentityDigest
1448
+ && adoption.handoffIntent.id === handoff.id
1449
+ && adoption.handoffIntent.generation === handoff.generation
1450
+ && adoption.handoffIntent.digest === handoff.digest
1451
+ && adoption.palletFence.id === grant.palletFence.id
1452
+ && adoption.palletFence.generation === grant.palletFence.generation
1453
+ && adoption.palletFence.digest === grant.palletFence.digest
1454
+ && adoption.claim.id === claim.id
1455
+ && adoption.claim.generation === claim.generation
1456
+ && adoption.claim.digest === claim.digest
1457
+ && fence.adoptionReceipt.id === adoption.id
1458
+ && fence.adoptionReceipt.generation === adoption.generation
1459
+ && fence.adoptionReceipt.digest === adoption.digest
1460
+ && fence.claim.id === claim.id
1461
+ && fence.claim.generation === claim.generation
1462
+ && fence.claim.digest === claim.digest
1463
+ && adoption.acceptedAt >= grant.acceptedAt
1464
+ && fence.consumedAt >= adoption.acceptedAt);
1465
+ return { bundle, handoff };
1466
+ }
1467
+ catch {
1468
+ return fail();
1469
+ }
1470
+ };
1471
+ export const snapshotFleetCutoverHeldVolumeFenceEvidencePage = (valueArg) => safe(() => {
1472
+ const value = networkRecord(captureNetwork(valueArg), ['aggregate', 'page', 'nodeId', 'fences']);
1473
+ const aggregate = reference(value.aggregate);
1474
+ const page = preparedVolumeHandoffPage(value.page);
1475
+ const nodeId = networkNodeId(value.nodeId);
1476
+ requireNetwork(page.aggregate.id === aggregate.id
1477
+ && page.aggregate.generation === aggregate.generation
1478
+ && page.aggregate.digest === aggregate.digest);
1479
+ const pageHandoffs = page.handoffs.filter(itemArg => itemArg.nodeId === nodeId);
1480
+ const fences = networkSorted(networkList(value.fences, fleetCutoverContract.maximumPreparedVolumeHandoffMutationEntries, itemArg => {
1481
+ const fence = volumeFence(itemArg);
1482
+ requireNetwork(fence.state === 'held' && fence.nodeId === nodeId);
1483
+ return fence;
1484
+ }), itemArg => `${itemArg.handoffIntent.id}\u0000${itemArg.handoffIntent.generation}\u0000${itemArg.handoffIntent.digest}`);
1485
+ requireNetwork(fences.length === pageHandoffs.length
1486
+ && fences.every((fenceArg, indexArg) => {
1487
+ const handoff = pageHandoffs[indexArg];
1488
+ return fenceArg.handoffIntent.id === handoff.id
1489
+ && fenceArg.handoffIntent.generation === handoff.generation
1490
+ && fenceArg.handoffIntent.digest === handoff.digest;
1491
+ }));
1492
+ return { aggregate, page, nodeId, fences };
1493
+ });
1494
+ export const validateFleetCutoverHeldVolumeFenceEvidencePage = async (valueArg) => {
1495
+ try {
1496
+ const value = snapshotFleetCutoverHeldVolumeFenceEvidencePage(valueArg);
1497
+ if (new TextEncoder().encode(canonicalizeStrictJson(value, fail)).byteLength
1498
+ > fleetCutoverContract.maximumHeldVolumeFenceEvidenceBytes) {
1499
+ return ['fleet cutover held volume fence evidence page exceeds its encoded byte bound'];
1500
+ }
1501
+ if ((await validateFleetCutoverPreparedVolumeHandoffPage(value.page)).length) {
1502
+ return ['fleet cutover held volume fence evidence page is not a valid immutable page'];
1503
+ }
1504
+ for (const fence of value.fences) {
1505
+ if ((await validateFleetCutoverVolumeFence(fence)).length) {
1506
+ return ['fleet cutover held volume fence evidence contains an invalid held fence'];
1507
+ }
1508
+ }
1509
+ return [];
1510
+ }
1511
+ catch {
1512
+ return ['fleet cutover held volume fence evidence page must use its exact canonical schema'];
1513
+ }
1514
+ };
738
1515
  export const snapshotFleetCutoverCoreflowRetirementEvidence = (valueArg) => safe(() => {
739
1516
  const value = networkRecord(captureNetwork(valueArg), [
740
1517
  'id', 'generation', 'clusterId', 'scope', 'targetSet', 'runtime', 'relay', 'spark',
@@ -1018,4 +1795,4 @@ export const snapshotFleetCutoverRuntimeSpecRelease = (valueArg) => safe(() => {
1018
1795
  ? { ...base, kind, emptyPublishedPortsPolicy: reference(value.emptyPublishedPortsPolicy) }
1019
1796
  : { ...base, kind, ingressAuthority: reference(value.ingressAuthority) };
1020
1797
  });
1021
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxlZXRjdXRvdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHMvZGF0YS9mbGVldGN1dG92ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFPdEUsT0FBTyxFQUNMLHNCQUFzQixFQUN0Qiw0QkFBNEIsR0FDN0IsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQ0wsY0FBYyxFQUNkLGNBQWMsRUFDZCxhQUFhLEVBQ2IsU0FBUyxFQUNULFdBQVcsRUFDWCxhQUFhLEVBQ2IsYUFBYSxFQUNiLGdCQUFnQixFQUNoQixhQUFhLEVBQ2IsY0FBYyxHQUNmLE1BQU0sK0JBQStCLENBQUM7QUFxZHZDLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDaEQsZUFBZSxFQUFFLEdBQUc7SUFDcEIsWUFBWSxFQUFFLElBQUk7SUFDbEIsWUFBWSxFQUFFLElBQUk7SUFDbEIsd0JBQXdCLEVBQUUsR0FBRztJQUM3QixxQkFBcUIsRUFBRSxFQUFFO0lBQ3pCLHNCQUFzQixFQUFFLEdBQUc7SUFDM0Isc0JBQXNCLEVBQUUsT0FBTztJQUMvQiwrQkFBK0IsRUFBRSxnREFBZ0Q7SUFDakYsK0JBQStCLEVBQUUsZ0RBQWdEO0lBQ2pGLHlCQUF5QixFQUFFLHlDQUF5QztJQUNwRSxnQ0FBZ0MsRUFBRSxpREFBaUQ7SUFDbkYsNkJBQTZCLEVBQUUsOENBQThDO0lBQzdFLDJCQUEyQixFQUFFLDJDQUEyQztJQUN4RSxrQkFBa0IsRUFBRSxpQ0FBaUM7SUFDckQsaUJBQWlCLEVBQUUsZ0NBQWdDO0lBQ25ELHlCQUF5QixFQUFFLHlDQUF5QztJQUNwRSx1QkFBdUIsRUFBRSx1Q0FBdUM7SUFDaEUsNkJBQTZCLEVBQUUsNkNBQTZDO0lBQzVFLDhCQUE4QixFQUFFLDhDQUE4QztJQUM5RSw4QkFBOEIsRUFBRSw4Q0FBOEM7SUFDOUUs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
1798
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxlZXRjdXRvdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHMvZGF0YS9mbGVldGN1dG92ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFPdEUsT0FBTyxFQUNMLCtCQUErQixFQUMvQiwyQkFBMkIsRUFDM0IsaUNBQWlDLEVBQ2pDLDJCQUEyQixFQUMzQixpQ0FBaUMsR0FDbEMsTUFBTSwwQkFBMEIsQ0FBQztBQUVsQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVqRSxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLGlCQUFpQixFQUNqQiw0QkFBNEIsR0FDN0IsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQ0wsY0FBYyxFQUNkLGNBQWMsRUFDZCxhQUFhLEVBQ2IsU0FBUyxFQUNULFdBQVcsRUFDWCxhQUFhLEVBQ2IsYUFBYSxFQUNiLGdCQUFnQixFQUNoQixhQUFhLEVBQ2IsY0FBYyxHQUNmLE1BQU0sK0JBQStCLENBQUM7QUEwbkJ2QyxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ2hELGVBQWUsRUFBRSxHQUFHO0lBQ3BCLFlBQVksRUFBRSxJQUFJO0lBQ2xCLFlBQVksRUFBRSxJQUFJO0lBQ2xCLHdCQUF3QixFQUFFLEdBQUc7SUFDN0IscUJBQXFCLEVBQUUsRUFBRTtJQUN6Qiw0QkFBNEIsRUFBRSxHQUFHO0lBQ2pDLHNCQUFzQixFQUFFLElBQUk7SUFDNUIsc0NBQXNDLEVBQUUsU0FBUztJQUNqRCwyQ0FBMkMsRUFBRSxFQUFFO0lBQy9DLG1GQUFtRjtJQUNuRiw2QkFBNkIsRUFBRSxJQUFJLEdBQUcsRUFBRTtJQUN4QyxpQ0FBaUMsRUFBRSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFO0lBQ25ELG1DQUFtQyxFQUFFLE9BQU87SUFDNUMs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