@serve.zone/interfaces 17.1.0 → 17.2.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.
- package/changelog.md +12 -0
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/data/migration.d.ts +20 -1
- package/dist_ts/requests/admin.d.ts +25 -1
- package/package.json +1 -1
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/data/migration.ts +21 -1
- package/ts/requests/admin.ts +28 -1
package/changelog.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 2026-07-22 - 17.2.1
|
|
4
|
+
|
|
5
|
+
### Fixes
|
|
6
|
+
|
|
7
|
+
- persist exact original placement and target confirmation in service migration contracts
|
|
8
|
+
|
|
9
|
+
## 2026-07-22 - 17.2.0
|
|
10
|
+
|
|
11
|
+
### Features
|
|
12
|
+
|
|
13
|
+
- add deployment-scoped Coreflow routing proof contracts for exact route promotion and compensation acknowledgement
|
|
14
|
+
|
|
3
15
|
## 2026-07-21 - 17.1.0
|
|
4
16
|
|
|
5
17
|
### Features
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@serve.zone/interfaces',
|
|
6
|
-
version: '17.1
|
|
6
|
+
version: '17.2.1',
|
|
7
7
|
description: 'Shared TypeScript interfaces and TypedRequest contracts for the serve.zone ecosystem.'
|
|
8
8
|
};
|
|
9
9
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSx3QkFBd0I7SUFDOUIsT0FBTyxFQUFFLFFBQVE7SUFDakIsV0FBVyxFQUFFLHVGQUF1RjtDQUNyRyxDQUFBIn0=
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { IServicePlacement } from './service.js';
|
|
1
2
|
export type TServiceMigrationStatus = 'running' | 'completed' | 'failed';
|
|
2
3
|
export type TServiceMigrationStepStatus = 'pending' | 'running' | 'completed' | 'failed' | 'skipped';
|
|
3
4
|
export type TServiceMigrationStepKey = 'validate' | 'stop-source' | 'snapshot' | 'restore' | 'deploy-target' | 'verify';
|
|
@@ -13,7 +14,9 @@ export interface IServiceMigrationStep {
|
|
|
13
14
|
* A node-to-node service migration orchestrated by Cloudly:
|
|
14
15
|
* gracefully stop everywhere -> snapshot data on the source ->
|
|
15
16
|
* restore on the target -> deploy pinned to the target -> verify.
|
|
16
|
-
*
|
|
17
|
+
* Until the target deployment is confirmed, failure rollback restores the
|
|
18
|
+
* exact original placement snapshot. Target confirmation is the durable
|
|
19
|
+
* commit point; after it, rollback must not reactivate the source placement.
|
|
17
20
|
*/
|
|
18
21
|
export interface IServiceMigration {
|
|
19
22
|
id: string;
|
|
@@ -23,6 +26,22 @@ export interface IServiceMigration {
|
|
|
23
26
|
targetNodeName: string;
|
|
24
27
|
/** Backup archive id used for the data move (migration-<id>). */
|
|
25
28
|
backupId?: string;
|
|
29
|
+
/**
|
|
30
|
+
* Exact placement captured before the migration mutates desired state.
|
|
31
|
+
* A non-null value is restored verbatim during pre-commit rollback. `null`
|
|
32
|
+
* means the service originally had no placement property, so rollback must
|
|
33
|
+
* remove that property. `undefined` is reserved for legacy records whose
|
|
34
|
+
* original placement is unknown and must not be interpreted as absent.
|
|
35
|
+
*/
|
|
36
|
+
originalPlacement?: IServicePlacement | null;
|
|
37
|
+
/**
|
|
38
|
+
* Timestamp at which the target deployment was positively verified and the
|
|
39
|
+
* migration crossed its durable commit point. While `null` or absent, a
|
|
40
|
+
* failure is pre-commit and restores `originalPlacement`; once set, failure
|
|
41
|
+
* handling must keep the target authoritative and must not restore source
|
|
42
|
+
* placement.
|
|
43
|
+
*/
|
|
44
|
+
targetDeploymentConfirmedAt?: number | null;
|
|
26
45
|
status: TServiceMigrationStatus;
|
|
27
46
|
steps: IServiceMigrationStep[];
|
|
28
47
|
startedAt: number;
|
|
@@ -26,7 +26,28 @@ export interface IReq_Admin_ConfigureServiceDeploymentMachineUser extends plugin
|
|
|
26
26
|
export interface ICoreflowBaseServiceReconciliationResult {
|
|
27
27
|
status: 'fulfilled' | 'rejected';
|
|
28
28
|
nodeNames: string[];
|
|
29
|
+
clusterId?: string;
|
|
29
30
|
message?: string;
|
|
31
|
+
routingProof?: ICoreflowRoutingProofResult;
|
|
32
|
+
}
|
|
33
|
+
export interface ICoreflowRoutingProofEntry {
|
|
34
|
+
serviceId: string;
|
|
35
|
+
hostname: string;
|
|
36
|
+
destinationPort: number;
|
|
37
|
+
}
|
|
38
|
+
export interface ICoreflowRoutingProofRequest {
|
|
39
|
+
requestId: string;
|
|
40
|
+
reason?: string;
|
|
41
|
+
requiredPresent: ICoreflowRoutingProofEntry[];
|
|
42
|
+
requiredAbsentHostnames: string[];
|
|
43
|
+
}
|
|
44
|
+
export interface ICoreflowRoutingProofResult {
|
|
45
|
+
requestId: string;
|
|
46
|
+
routingGeneration: number;
|
|
47
|
+
provenPresent: ICoreflowRoutingProofEntry[];
|
|
48
|
+
confirmedAbsentHostnames: string[];
|
|
49
|
+
requiredFailures: string[];
|
|
50
|
+
unrelatedFailures: string[];
|
|
30
51
|
}
|
|
31
52
|
export interface IReq_Any_Cloudly_ReconcileBaseServices extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_Any_Cloudly_ReconcileBaseServices> {
|
|
32
53
|
method: 'reconcileBaseServices';
|
|
@@ -42,8 +63,11 @@ export interface IReq_Any_Cloudly_ReconcileBaseServices extends plugins.typedreq
|
|
|
42
63
|
}
|
|
43
64
|
export interface IReq_Cloudly_Coreflow_ReconcileBaseServices extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_Cloudly_Coreflow_ReconcileBaseServices> {
|
|
44
65
|
method: 'coreflowReconcileBaseServices';
|
|
45
|
-
request:
|
|
66
|
+
request: {
|
|
67
|
+
routingProof?: ICoreflowRoutingProofRequest;
|
|
68
|
+
};
|
|
46
69
|
response: {
|
|
47
70
|
success: boolean;
|
|
71
|
+
routingProof?: ICoreflowRoutingProofResult;
|
|
48
72
|
};
|
|
49
73
|
}
|
package/package.json
CHANGED
package/ts/00_commitinfo_data.ts
CHANGED
package/ts/data/migration.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { IServicePlacement } from './service.js';
|
|
2
|
+
|
|
1
3
|
export type TServiceMigrationStatus = 'running' | 'completed' | 'failed';
|
|
2
4
|
|
|
3
5
|
export type TServiceMigrationStepStatus = 'pending' | 'running' | 'completed' | 'failed' | 'skipped';
|
|
@@ -23,7 +25,9 @@ export interface IServiceMigrationStep {
|
|
|
23
25
|
* A node-to-node service migration orchestrated by Cloudly:
|
|
24
26
|
* gracefully stop everywhere -> snapshot data on the source ->
|
|
25
27
|
* restore on the target -> deploy pinned to the target -> verify.
|
|
26
|
-
*
|
|
28
|
+
* Until the target deployment is confirmed, failure rollback restores the
|
|
29
|
+
* exact original placement snapshot. Target confirmation is the durable
|
|
30
|
+
* commit point; after it, rollback must not reactivate the source placement.
|
|
27
31
|
*/
|
|
28
32
|
export interface IServiceMigration {
|
|
29
33
|
id: string;
|
|
@@ -33,6 +37,22 @@ export interface IServiceMigration {
|
|
|
33
37
|
targetNodeName: string;
|
|
34
38
|
/** Backup archive id used for the data move (migration-<id>). */
|
|
35
39
|
backupId?: string;
|
|
40
|
+
/**
|
|
41
|
+
* Exact placement captured before the migration mutates desired state.
|
|
42
|
+
* A non-null value is restored verbatim during pre-commit rollback. `null`
|
|
43
|
+
* means the service originally had no placement property, so rollback must
|
|
44
|
+
* remove that property. `undefined` is reserved for legacy records whose
|
|
45
|
+
* original placement is unknown and must not be interpreted as absent.
|
|
46
|
+
*/
|
|
47
|
+
originalPlacement?: IServicePlacement | null;
|
|
48
|
+
/**
|
|
49
|
+
* Timestamp at which the target deployment was positively verified and the
|
|
50
|
+
* migration crossed its durable commit point. While `null` or absent, a
|
|
51
|
+
* failure is pre-commit and restores `originalPlacement`; once set, failure
|
|
52
|
+
* handling must keep the target authoritative and must not restore source
|
|
53
|
+
* placement.
|
|
54
|
+
*/
|
|
55
|
+
targetDeploymentConfirmedAt?: number | null;
|
|
36
56
|
status: TServiceMigrationStatus;
|
|
37
57
|
steps: IServiceMigrationStep[];
|
|
38
58
|
startedAt: number;
|
package/ts/requests/admin.ts
CHANGED
|
@@ -36,7 +36,31 @@ extends plugins.typedrequestInterfaces.implementsTR<
|
|
|
36
36
|
export interface ICoreflowBaseServiceReconciliationResult {
|
|
37
37
|
status: 'fulfilled' | 'rejected';
|
|
38
38
|
nodeNames: string[];
|
|
39
|
+
clusterId?: string;
|
|
39
40
|
message?: string;
|
|
41
|
+
routingProof?: ICoreflowRoutingProofResult;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export interface ICoreflowRoutingProofEntry {
|
|
45
|
+
serviceId: string;
|
|
46
|
+
hostname: string;
|
|
47
|
+
destinationPort: number;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export interface ICoreflowRoutingProofRequest {
|
|
51
|
+
requestId: string;
|
|
52
|
+
reason?: string;
|
|
53
|
+
requiredPresent: ICoreflowRoutingProofEntry[];
|
|
54
|
+
requiredAbsentHostnames: string[];
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export interface ICoreflowRoutingProofResult {
|
|
58
|
+
requestId: string;
|
|
59
|
+
routingGeneration: number;
|
|
60
|
+
provenPresent: ICoreflowRoutingProofEntry[];
|
|
61
|
+
confirmedAbsentHostnames: string[];
|
|
62
|
+
requiredFailures: string[];
|
|
63
|
+
unrelatedFailures: string[];
|
|
40
64
|
}
|
|
41
65
|
|
|
42
66
|
export interface IReq_Any_Cloudly_ReconcileBaseServices extends plugins.typedrequestInterfaces.implementsTR<
|
|
@@ -60,8 +84,11 @@ export interface IReq_Cloudly_Coreflow_ReconcileBaseServices extends plugins.typ
|
|
|
60
84
|
IReq_Cloudly_Coreflow_ReconcileBaseServices
|
|
61
85
|
> {
|
|
62
86
|
method: 'coreflowReconcileBaseServices';
|
|
63
|
-
request:
|
|
87
|
+
request: {
|
|
88
|
+
routingProof?: ICoreflowRoutingProofRequest;
|
|
89
|
+
};
|
|
64
90
|
response: {
|
|
65
91
|
success: boolean;
|
|
92
|
+
routingProof?: ICoreflowRoutingProofResult;
|
|
66
93
|
};
|
|
67
94
|
}
|