@serve.zone/interfaces 32.14.0 → 32.15.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.
- package/changelog.md +18 -0
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/data/clusternode.d.ts +35 -3
- package/dist_ts/data/clusternode.js +141 -3
- package/dist_ts/data/fleetcutover.d.ts +198 -0
- package/dist_ts/data/fleetcutover.js +570 -1
- package/dist_ts/data/runtimestorageclaim.d.ts +43 -0
- package/dist_ts/data/runtimestorageclaim.js +88 -4
- package/dist_ts/requests/fleetcutover.d.ts +70 -6
- package/dist_ts/requests/runtimesession.d.ts +47 -0
- package/package.json +1 -1
- package/readme.md +80 -16
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/data/clusternode.ts +209 -2
- package/ts/data/fleetcutover.ts +842 -0
- package/ts/data/runtimestorageclaim.ts +122 -3
- package/ts/requests/fleetcutover.ts +80 -5
- package/ts/requests/runtimesession.ts +57 -0
|
@@ -2,6 +2,8 @@ import type { TSha256Digest } from './immutableimage.js';
|
|
|
2
2
|
import type { IClusterRuntimeReference, TClusterRuntimePhase } from './clusterruntime.js';
|
|
3
3
|
import type { IRuntimeAssignmentReference, IRuntimeAuthorityReference } from './runtimeassignment.js';
|
|
4
4
|
import type { IRuntimeSessionBinding } from './runtimesession.js';
|
|
5
|
+
import type { IRuntimeStorageClaim, IRuntimeStorageClaimIntent } from './runtimestorageclaim.js';
|
|
6
|
+
import type { IAppStoreFilesystemStorageRequest } from '../appstore/types.js';
|
|
5
7
|
import type { ISecretVersionReference } from './secret.js';
|
|
6
8
|
/**
|
|
7
9
|
* A server-owned accepted record reference. It contains no bearer, secret, or proof boolean.
|
|
@@ -210,6 +212,97 @@ export interface IFleetCutoverVolumeHandoffIntent {
|
|
|
210
212
|
acceptedAt: number;
|
|
211
213
|
digest: TSha256Digest;
|
|
212
214
|
}
|
|
215
|
+
export interface IFleetCutoverPersistentVolumeMountDescriptor extends IFleetCutoverMountDescriptor {
|
|
216
|
+
type: 'volume';
|
|
217
|
+
classification: 'persistent-volume';
|
|
218
|
+
readOnly: false;
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Cloudly-owned desired handoff prepared from authenticated legacy observations. Observed Docker
|
|
222
|
+
* source identity is not physical storage lineage; Corestore proves lineage later under the held
|
|
223
|
+
* native attachment fence.
|
|
224
|
+
*/
|
|
225
|
+
export interface IFleetCutoverPreparedVolumeHandoffIntent {
|
|
226
|
+
id: string;
|
|
227
|
+
generation: number;
|
|
228
|
+
clusterId: string;
|
|
229
|
+
nodeId: string;
|
|
230
|
+
serviceId: string;
|
|
231
|
+
volumeId: string;
|
|
232
|
+
observedMount: IFleetCutoverPersistentVolumeMountDescriptor;
|
|
233
|
+
claimIntent: IRuntimeStorageClaimIntent;
|
|
234
|
+
runtime: IClusterRuntimeReference & {
|
|
235
|
+
phase: 'draining';
|
|
236
|
+
};
|
|
237
|
+
scope: IFleetCutoverAcceptedEvidenceReference;
|
|
238
|
+
targetSet: IFleetCutoverTargetSetReference;
|
|
239
|
+
legacyStorageEvidence: IFleetCutoverAcceptedEvidenceReference;
|
|
240
|
+
sourceNodeObservation: IFleetCutoverAcceptedEvidenceReference;
|
|
241
|
+
acceptedAt: number;
|
|
242
|
+
digest: TSha256Digest;
|
|
243
|
+
}
|
|
244
|
+
export interface IFleetCutoverPreparedVolumeHandoffUpsert {
|
|
245
|
+
nodeId: string;
|
|
246
|
+
serviceId: string;
|
|
247
|
+
mountIdentityDigest: TSha256Digest;
|
|
248
|
+
request: IAppStoreFilesystemStorageRequest & {
|
|
249
|
+
accessMode: 'ReadWriteOnce';
|
|
250
|
+
reclaimPolicy: 'retain';
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
/** One bounded CAS mutation; the durable aggregate may contain many such 32-entry batches. */
|
|
254
|
+
export interface IFleetCutoverPreparedVolumeHandoffMutation {
|
|
255
|
+
mutationId: string;
|
|
256
|
+
clusterId: string;
|
|
257
|
+
currentRuntime: IClusterRuntimeReference & {
|
|
258
|
+
phase: 'draining';
|
|
259
|
+
};
|
|
260
|
+
scope: IFleetCutoverAcceptedEvidenceReference;
|
|
261
|
+
targetSet: IFleetCutoverTargetSetReference;
|
|
262
|
+
expectedAggregate: IFleetCutoverAcceptedEvidenceReference | null;
|
|
263
|
+
upserts: IFleetCutoverPreparedVolumeHandoffUpsert[];
|
|
264
|
+
removals: IFleetCutoverAcceptedEvidenceReference[];
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Revisioned header for one complete expected set. It intentionally contains no page references:
|
|
268
|
+
* immutable pages bind back to this exact revision, avoiding an aggregate/page digest cycle.
|
|
269
|
+
*/
|
|
270
|
+
export interface IFleetCutoverPreparedVolumeHandoffAggregate {
|
|
271
|
+
id: string;
|
|
272
|
+
generation: number;
|
|
273
|
+
previous: IFleetCutoverAcceptedEvidenceReference | null;
|
|
274
|
+
clusterId: string;
|
|
275
|
+
runtime: IClusterRuntimeReference & {
|
|
276
|
+
phase: 'draining';
|
|
277
|
+
};
|
|
278
|
+
scope: IFleetCutoverAcceptedEvidenceReference;
|
|
279
|
+
targetSet: IFleetCutoverTargetSetReference;
|
|
280
|
+
state: 'incomplete' | 'complete';
|
|
281
|
+
requiredHandoffCount: number;
|
|
282
|
+
handoffCount: number;
|
|
283
|
+
pageCount: number;
|
|
284
|
+
handoffSetDigest: TSha256Digest;
|
|
285
|
+
acceptedAt: number;
|
|
286
|
+
digest: TSha256Digest;
|
|
287
|
+
}
|
|
288
|
+
/** One immutable 1..32-entry page pinned to one aggregate revision. */
|
|
289
|
+
export interface IFleetCutoverPreparedVolumeHandoffPage {
|
|
290
|
+
id: string;
|
|
291
|
+
generation: 1;
|
|
292
|
+
aggregate: IFleetCutoverAcceptedEvidenceReference;
|
|
293
|
+
pageIndex: number;
|
|
294
|
+
handoffs: IFleetCutoverPreparedVolumeHandoffPageReference[];
|
|
295
|
+
handoffSetPageDigest: TSha256Digest;
|
|
296
|
+
digest: TSha256Digest;
|
|
297
|
+
}
|
|
298
|
+
/** Immutable page membership commits both the handoff revision and its owning physical node. */
|
|
299
|
+
export interface IFleetCutoverPreparedVolumeHandoffPageReference extends IFleetCutoverAcceptedEvidenceReference {
|
|
300
|
+
nodeId: string;
|
|
301
|
+
}
|
|
302
|
+
export interface IFleetCutoverPreparedVolumeHandoffPageSetEntry {
|
|
303
|
+
pageIndex: number;
|
|
304
|
+
handoffSetPageDigest: TSha256Digest;
|
|
305
|
+
}
|
|
213
306
|
interface IFleetCutoverVolumeFenceBase {
|
|
214
307
|
id: string;
|
|
215
308
|
generation: number;
|
|
@@ -258,6 +351,43 @@ export interface IFleetCutoverCorestoreAdoptionReceipt {
|
|
|
258
351
|
acceptedAt: number;
|
|
259
352
|
digest: TSha256Digest;
|
|
260
353
|
}
|
|
354
|
+
/** Current-session Cloudly grant for one post-Pallet adoption attempt. */
|
|
355
|
+
export interface IFleetCutoverStorageAdoptionGrant {
|
|
356
|
+
id: string;
|
|
357
|
+
generation: number;
|
|
358
|
+
previous: IFleetCutoverAcceptedEvidenceReference | null;
|
|
359
|
+
clusterId: string;
|
|
360
|
+
nodeId: string;
|
|
361
|
+
serviceId: string;
|
|
362
|
+
volumeId: string;
|
|
363
|
+
observedMount: IFleetCutoverPersistentVolumeMountDescriptor;
|
|
364
|
+
runtime: IClusterRuntimeReference & {
|
|
365
|
+
phase: 'pallet';
|
|
366
|
+
};
|
|
367
|
+
session: IRuntimeSessionBinding;
|
|
368
|
+
handoffIntent: IFleetCutoverAcceptedEvidenceReference;
|
|
369
|
+
palletFence: IFleetCutoverAcceptedEvidenceReference;
|
|
370
|
+
acceptedAt: number;
|
|
371
|
+
digest: TSha256Digest;
|
|
372
|
+
}
|
|
373
|
+
/** Exact result Pallet persists only after revalidating the current grant following adoption. */
|
|
374
|
+
export interface IFleetCutoverStorageAdoptionBundle {
|
|
375
|
+
grant: IFleetCutoverStorageAdoptionGrant;
|
|
376
|
+
fence: Extract<TFleetCutoverVolumeFence, {
|
|
377
|
+
state: 'consumed';
|
|
378
|
+
}>;
|
|
379
|
+
adoption: IFleetCutoverCorestoreAdoptionReceipt;
|
|
380
|
+
claim: IRuntimeStorageClaim;
|
|
381
|
+
}
|
|
382
|
+
/** One authenticated Spark reporter's complete bounded subset of a full immutable aggregate page. */
|
|
383
|
+
export interface IFleetCutoverHeldVolumeFenceEvidencePage {
|
|
384
|
+
aggregate: IFleetCutoverAcceptedEvidenceReference;
|
|
385
|
+
page: IFleetCutoverPreparedVolumeHandoffPage;
|
|
386
|
+
nodeId: string;
|
|
387
|
+
fences: Extract<TFleetCutoverVolumeFence, {
|
|
388
|
+
state: 'held';
|
|
389
|
+
}>[];
|
|
390
|
+
}
|
|
261
391
|
export interface IFleetCutoverCoreflowRetirementEvidence {
|
|
262
392
|
id: string;
|
|
263
393
|
generation: number;
|
|
@@ -424,6 +554,11 @@ export declare const fleetCutoverContract: Readonly<{
|
|
|
424
554
|
readonly maximumNodes: 1024;
|
|
425
555
|
readonly maximumContainersPerNode: 512;
|
|
426
556
|
readonly maximumMountsPerOwner: 32;
|
|
557
|
+
readonly maximumPreparedVolumeHandoffMutationEntries: 32;
|
|
558
|
+
/** Every admitted task has one node placement and at most 32 mounts: 4096 * 32. */
|
|
559
|
+
readonly maximumPreparedVolumeHandoffs: number;
|
|
560
|
+
readonly maximumPreparedVolumeHandoffPages: number;
|
|
561
|
+
readonly maximumHeldVolumeFenceEvidenceBytes: 131072;
|
|
427
562
|
readonly maximumClassifications: 512;
|
|
428
563
|
readonly observationFreshnessMs: 300000;
|
|
429
564
|
readonly mountSourceIdentityDigestDomain: "serve.zone/fleet-cutover-mount-source-identity";
|
|
@@ -435,8 +570,14 @@ export declare const fleetCutoverContract: Readonly<{
|
|
|
435
570
|
readonly censusDigestDomain: "serve.zone/fleet-cutover-census";
|
|
436
571
|
readonly scopeDigestDomain: "serve.zone/fleet-cutover-scope";
|
|
437
572
|
readonly volumeHandoffDigestDomain: "serve.zone/fleet-cutover-volume-handoff";
|
|
573
|
+
readonly preparedVolumeHandoffDigestDomain: "serve.zone/fleet-cutover-prepared-volume-handoff";
|
|
574
|
+
readonly preparedVolumeHandoffAggregateDigestDomain: "serve.zone/fleet-cutover-prepared-volume-handoff-aggregate";
|
|
575
|
+
readonly preparedVolumeHandoffPageContentDigestDomain: "serve.zone/fleet-cutover-prepared-volume-handoff-page-content";
|
|
576
|
+
readonly preparedVolumeHandoffPageDigestDomain: "serve.zone/fleet-cutover-prepared-volume-handoff-page";
|
|
577
|
+
readonly preparedVolumeHandoffSetDigestDomain: "serve.zone/fleet-cutover-prepared-volume-handoff-set";
|
|
438
578
|
readonly volumeFenceDigestDomain: "serve.zone/fleet-cutover-volume-fence";
|
|
439
579
|
readonly corestoreAdoptionDigestDomain: "serve.zone/fleet-cutover-corestore-adoption";
|
|
580
|
+
readonly storageAdoptionGrantDigestDomain: "serve.zone/fleet-cutover-storage-adoption-grant";
|
|
440
581
|
readonly coreflowRetirementDigestDomain: "serve.zone/fleet-cutover-coreflow-retirement";
|
|
441
582
|
readonly ingressDesignationDigestDomain: "serve.zone/fleet-cutover-ingress-designation";
|
|
442
583
|
readonly ingressAuthorityDigestDomain: "serve.zone/fleet-cutover-ingress-authority";
|
|
@@ -467,6 +608,12 @@ export declare const fleetCutoverEvidenceReferenceOf: (valueArg: {
|
|
|
467
608
|
generation: number;
|
|
468
609
|
digest: TSha256Digest;
|
|
469
610
|
}) => IFleetCutoverAcceptedEvidenceReference;
|
|
611
|
+
export declare const fleetCutoverPreparedVolumeHandoffPageReferenceOf: (valueArg: {
|
|
612
|
+
id: string;
|
|
613
|
+
generation: number;
|
|
614
|
+
digest: TSha256Digest;
|
|
615
|
+
nodeId: string;
|
|
616
|
+
}) => IFleetCutoverPreparedVolumeHandoffPageReference;
|
|
470
617
|
export declare const snapshotFleetCutoverAcceptedEvidenceReference: (valueArg: unknown) => IFleetCutoverAcceptedEvidenceReference;
|
|
471
618
|
export declare const snapshotFleetCutoverScope: (valueArg: unknown) => IFleetCutoverScope;
|
|
472
619
|
export declare const computeFleetCutoverScopeDigest: (valueArg: unknown) => Promise<TSha256Digest>;
|
|
@@ -475,6 +622,26 @@ export declare const snapshotFleetCutoverScopeClassificationRequest: (valueArg:
|
|
|
475
622
|
export declare const snapshotFleetCutoverTargetSetReference: (valueArg: unknown) => IFleetCutoverTargetSetReference;
|
|
476
623
|
export declare const snapshotFleetCutoverVolumeHandoffIntent: (valueArg: unknown) => IFleetCutoverVolumeHandoffIntent;
|
|
477
624
|
export declare const computeFleetCutoverVolumeHandoffDigest: (valueArg: unknown) => Promise<TSha256Digest>;
|
|
625
|
+
export declare const snapshotFleetCutoverPreparedVolumeHandoffIntent: (valueArg: unknown) => IFleetCutoverPreparedVolumeHandoffIntent;
|
|
626
|
+
export declare const computeFleetCutoverPreparedVolumeHandoffDigest: (valueArg: unknown) => Promise<TSha256Digest>;
|
|
627
|
+
export declare const validateFleetCutoverPreparedVolumeHandoffIntent: (valueArg: unknown) => Promise<string[]>;
|
|
628
|
+
export declare const snapshotFleetCutoverPreparedVolumeHandoffMutation: (valueArg: unknown) => IFleetCutoverPreparedVolumeHandoffMutation;
|
|
629
|
+
export declare const snapshotFleetCutoverPreparedVolumeHandoffAggregate: (valueArg: unknown) => IFleetCutoverPreparedVolumeHandoffAggregate;
|
|
630
|
+
export declare const computeFleetCutoverPreparedVolumeHandoffAggregateDigest: (valueArg: unknown) => Promise<TSha256Digest>;
|
|
631
|
+
export declare const validateFleetCutoverPreparedVolumeHandoffAggregate: (valueArg: unknown) => Promise<string[]>;
|
|
632
|
+
export declare const snapshotFleetCutoverPreparedVolumeHandoffPage: (valueArg: unknown) => IFleetCutoverPreparedVolumeHandoffPage;
|
|
633
|
+
export declare const computeFleetCutoverPreparedVolumeHandoffPageContentDigest: (pageIndexArg: unknown, handoffsArg: unknown) => Promise<TSha256Digest>;
|
|
634
|
+
export declare const computeFleetCutoverPreparedVolumeHandoffPageDigest: (valueArg: unknown) => Promise<TSha256Digest>;
|
|
635
|
+
export declare const validateFleetCutoverPreparedVolumeHandoffPage: (valueArg: unknown) => Promise<string[]>;
|
|
636
|
+
export declare const computeFleetCutoverPreparedVolumeHandoffSetDigest: (entriesArg: unknown) => Promise<TSha256Digest>;
|
|
637
|
+
/**
|
|
638
|
+
* Full pinned-set proof. The caller must supply every page for the exact aggregate revision; a
|
|
639
|
+
* node-local subset or a mixed revision can never satisfy this binder.
|
|
640
|
+
*/
|
|
641
|
+
export declare const bindFleetCutoverPreparedVolumeHandoffPages: (aggregateArg: unknown, pagesArg: unknown) => Promise<{
|
|
642
|
+
aggregate: IFleetCutoverPreparedVolumeHandoffAggregate;
|
|
643
|
+
pages: IFleetCutoverPreparedVolumeHandoffPage[];
|
|
644
|
+
}>;
|
|
478
645
|
export declare const snapshotFleetCutoverVolumeFence: (valueArg: unknown) => TFleetCutoverVolumeFence;
|
|
479
646
|
export declare const computeFleetCutoverVolumeFenceDigest: (valueArg: unknown) => Promise<TSha256Digest>;
|
|
480
647
|
export declare const snapshotFleetCutoverCorestoreAdoptionReceipt: (valueArg: unknown) => IFleetCutoverCorestoreAdoptionReceipt;
|
|
@@ -484,9 +651,40 @@ export declare const bindFleetCutoverAdoptionToVolumeFence: (adoptionArg: unknow
|
|
|
484
651
|
adoption: IFleetCutoverCorestoreAdoptionReceipt;
|
|
485
652
|
fence: TFleetCutoverVolumeFence;
|
|
486
653
|
};
|
|
654
|
+
/**
|
|
655
|
+
* Joins the accepted adoption result to the full handoff and provider-ready claim content.
|
|
656
|
+
* Native attachment fencing and accepted-record dereferencing remain owner checks.
|
|
657
|
+
*/
|
|
658
|
+
export declare const bindFleetCutoverAdoptionToStorageClaim: (adoptionArg: unknown, handoffArg: unknown, claimArg: unknown) => Promise<{
|
|
659
|
+
adoption: IFleetCutoverCorestoreAdoptionReceipt;
|
|
660
|
+
handoff: IFleetCutoverPreparedVolumeHandoffIntent;
|
|
661
|
+
claim: IRuntimeStorageClaim;
|
|
662
|
+
}>;
|
|
487
663
|
export declare const validateFleetCutoverVolumeHandoffIntent: (valueArg: unknown) => Promise<string[]>;
|
|
488
664
|
export declare const validateFleetCutoverVolumeFence: (valueArg: unknown) => Promise<string[]>;
|
|
489
665
|
export declare const validateFleetCutoverCorestoreAdoptionReceipt: (valueArg: unknown) => Promise<string[]>;
|
|
666
|
+
export declare const snapshotFleetCutoverStorageAdoptionGrant: (valueArg: unknown) => IFleetCutoverStorageAdoptionGrant;
|
|
667
|
+
export declare const computeFleetCutoverStorageAdoptionGrantDigest: (valueArg: unknown) => Promise<TSha256Digest>;
|
|
668
|
+
export declare const validateFleetCutoverStorageAdoptionGrant: (valueArg: unknown) => Promise<string[]>;
|
|
669
|
+
/** Content join only; the controller must still prove this is the live current session and phase. */
|
|
670
|
+
export declare const bindFleetCutoverStorageAdoptionGrant: (grantArg: unknown, handoffArg: unknown, heldFenceArg: unknown) => Promise<{
|
|
671
|
+
grant: IFleetCutoverStorageAdoptionGrant;
|
|
672
|
+
handoff: IFleetCutoverPreparedVolumeHandoffIntent;
|
|
673
|
+
fence: Extract<TFleetCutoverVolumeFence, {
|
|
674
|
+
state: "held";
|
|
675
|
+
}>;
|
|
676
|
+
}>;
|
|
677
|
+
export declare const snapshotFleetCutoverStorageAdoptionBundle: (valueArg: unknown) => IFleetCutoverStorageAdoptionBundle;
|
|
678
|
+
/**
|
|
679
|
+
* Binds the complete post-adoption content. Physical lineage remains the provider-produced
|
|
680
|
+
* adoption digest and is deliberately never equated to the observed Docker source identity.
|
|
681
|
+
*/
|
|
682
|
+
export declare const bindFleetCutoverStorageAdoptionBundle: (valueArg: unknown, handoffArg: unknown) => Promise<{
|
|
683
|
+
bundle: IFleetCutoverStorageAdoptionBundle;
|
|
684
|
+
handoff: IFleetCutoverPreparedVolumeHandoffIntent;
|
|
685
|
+
}>;
|
|
686
|
+
export declare const snapshotFleetCutoverHeldVolumeFenceEvidencePage: (valueArg: unknown) => IFleetCutoverHeldVolumeFenceEvidencePage;
|
|
687
|
+
export declare const validateFleetCutoverHeldVolumeFenceEvidencePage: (valueArg: unknown) => Promise<string[]>;
|
|
490
688
|
export declare const snapshotFleetCutoverCoreflowRetirementEvidence: (valueArg: unknown) => IFleetCutoverCoreflowRetirementEvidence;
|
|
491
689
|
export declare const computeFleetCutoverCoreflowRetirementDigest: (valueArg: unknown) => Promise<TSha256Digest>;
|
|
492
690
|
export declare const validateFleetCutoverCoreflowRetirementEvidence: (valueArg: unknown) => Promise<string[]>;
|