@fourier-labs/harbour-contracts 0.30.0 → 0.32.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/contract-release.json +13 -13
- package/dist/gen-ts/contract-release.d.ts +6 -6
- package/dist/gen-ts/contract-release.js +6 -6
- package/dist/gen-ts/deployment-status-response.d.ts +14 -0
- package/dist/gen-ts/version-state-machine.js +2 -1
- package/gen-ts/contract-release.ts +6 -6
- package/gen-ts/deployment-status-response.ts +14 -0
- package/gen-ts/version-state-machine.ts +2 -1
- package/package.json +1 -1
- package/schema/deployment-status-response.schema.json +22 -0
- package/schema/version-state.schema.json +5 -1
package/contract-release.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema": "harbour.contract-release/1.0",
|
|
3
|
-
"repositoryVersion": "0.
|
|
4
|
-
"publishVersion": "0.
|
|
5
|
-
"publishTag": "v0.
|
|
6
|
-
"schemasDigest": "sha256:
|
|
3
|
+
"repositoryVersion": "0.32.0.0",
|
|
4
|
+
"publishVersion": "0.32.0",
|
|
5
|
+
"publishTag": "v0.32.0",
|
|
6
|
+
"schemasDigest": "sha256:0476a253b6fe583fefeca0766502fbdb4f94987265c86268a489eb6ddfab4d29",
|
|
7
7
|
"aiFixturesDigest": "sha256:edac31c92e146ca1c40130f2fb5649db82e24b8cd1ac758153b90612052fddb6",
|
|
8
|
-
"generatedGoDigest": "sha256:
|
|
9
|
-
"generatedTypeScriptDigest": "sha256:
|
|
8
|
+
"generatedGoDigest": "sha256:6bb7567f6e0a753136c8389ce8e3a0f8357d360c94ef6f3da3768e63d6562822",
|
|
9
|
+
"generatedTypeScriptDigest": "sha256:1f8c32cbe5fbf605bdcaeb73152977a92c488ebd1ab96fb4234a56eb9fc5cee7",
|
|
10
10
|
"generatedExclusions": {
|
|
11
11
|
"gen-go/contract_release.go": "contains the generated aggregate digests (self-reference)",
|
|
12
12
|
"gen-ts/contract-release.ts": "contains the generated aggregate digests (self-reference)"
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"schema/deployment-source.schema.json": "sha256:256988b1efbfc90bd0e1ae31a2c5d69b20ef1e4471dc24c9f9aa759278270fbe",
|
|
43
43
|
"schema/deployment-status-failure.schema.json": "sha256:1a182e603d22467a4be507a37fd10698f6f3178d314d33eaf5de2c7f687c9412",
|
|
44
44
|
"schema/deployment-status-request.schema.json": "sha256:1f9f87adc947a252b53b61f71ae17f8c1b8fbc1166f31301a043d11ac257dc66",
|
|
45
|
-
"schema/deployment-status-response.schema.json": "sha256:
|
|
45
|
+
"schema/deployment-status-response.schema.json": "sha256:ce6b4e10a4302dff75c8958a3555f3a323e407e8cd2d2dce58550e7cb6cff1c8",
|
|
46
46
|
"schema/env-bindings.schema.json": "sha256:ae09bc4ca5508afa698ef854a59153c4c6f99b07017b48cb9b07ce05abad12f2",
|
|
47
47
|
"schema/error-category.enum.json": "sha256:693f8ce67d5554358f89b76132024cb8a082216f192d80a66bc4dc64e8983332",
|
|
48
48
|
"schema/error-envelope.schema.json": "sha256:75dccda7dd16fdf8435deda53fc7dbcdc109b65114617a17f11763010c656f90",
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"schema/security-scan-input.schema.json": "sha256:83502dffb3c07ac2e0698928e6dc123f454fc667d4aacd336bcad6944ef2ac3d",
|
|
55
55
|
"schema/security-verdict.schema.json": "sha256:ec3c2d5c9df3601aeed0909b36c7f427469c7f0eeb3295c5809b96d09bf3fc26",
|
|
56
56
|
"schema/transform-report.schema.json": "sha256:815e764445fb41b912d0c0468f00621ad61f941fb4c7b9364e3f204ad47cdf7f",
|
|
57
|
-
"schema/version-state.schema.json": "sha256:
|
|
57
|
+
"schema/version-state.schema.json": "sha256:3b190007e2f8e3821c41ef11c6f5b226da7d5a18d34d4077f4618004846fd444"
|
|
58
58
|
},
|
|
59
59
|
"aiFixtures": {
|
|
60
60
|
"fixtures/ai/adversarial-binding-classification-value.json": "sha256:ca009f3f6162a9d93b4ab416d52c1fba12a8a15aca5aed956c5fdcf2171b1e28",
|
|
@@ -89,12 +89,12 @@
|
|
|
89
89
|
"gen-go/ai_contracts_test.go": "sha256:17ce967139e39c291ee7ebad3f66cc0495324abc4e56885279f7e5cc74994036",
|
|
90
90
|
"gen-go/ai_gateway_key_token.go": "sha256:859c34383955f21c22589158214df074b74de6907a54bee7c781acfa9dad8679",
|
|
91
91
|
"gen-go/binding_digest_helpers.go": "sha256:50462ba2beb16c7931dfc7e10302c12c90bf8111788991f74f08a718125dfbfb",
|
|
92
|
-
"gen-go/contracts_test.go": "sha256:
|
|
92
|
+
"gen-go/contracts_test.go": "sha256:28d6bf1bdc57eb4297b45d542adbdca420c943f02166c5889824e81f530a8ad4",
|
|
93
93
|
"gen-go/doc.go": "sha256:c17bc2d39ed175ce7105c68305f8ae7152f659eb7cd187ecceee7698eb3a65dd",
|
|
94
94
|
"gen-go/error_category.go": "sha256:a8b64524be3716e62ca6016e56f2332a56fa5e16e42647421e516aa01a7d6806",
|
|
95
95
|
"gen-go/schema_documents.go": "sha256:4b9094aaf0acc4bae4b65784954853f0888572a53fa1a1dc354f97c88ded805f",
|
|
96
|
-
"gen-go/types.go": "sha256:
|
|
97
|
-
"gen-go/version_state.go": "sha256:
|
|
96
|
+
"gen-go/types.go": "sha256:07642ccb5251d921d801e75b686143ddc23d8e82f03c2f15a175935927a47fc5",
|
|
97
|
+
"gen-go/version_state.go": "sha256:4ef8abb126414c0025cf2c59bc9c79a74ef4a2ff89e8f316cbf05acc872371c1"
|
|
98
98
|
},
|
|
99
99
|
"generatedTypeScript": {
|
|
100
100
|
"gen-ts/ai-budget-ledger-event.ts": "sha256:64448d98a394e6eb103927cd35ce8a33e30176c0d5ee5afcdd8444f8aa051809",
|
|
@@ -130,7 +130,7 @@
|
|
|
130
130
|
"gen-ts/deployment-source.ts": "sha256:8ccb55aaa7260eb6d19a00987d6a20a4b514e343564da13f27cd7fee8013500a",
|
|
131
131
|
"gen-ts/deployment-status-failure.ts": "sha256:3ffe268e32240f9da3172b161b8e99e06aa2d21d8c37b30f340506a337c64047",
|
|
132
132
|
"gen-ts/deployment-status-request.ts": "sha256:7ddccd07ab9f6d0821903a291ab35f903bb055727e03a058b99165ec048f6483",
|
|
133
|
-
"gen-ts/deployment-status-response.ts": "sha256:
|
|
133
|
+
"gen-ts/deployment-status-response.ts": "sha256:1a082b43663b9d7e6f2377c91713bf0792d52060beed5f2bad7879d0ac718bd3",
|
|
134
134
|
"gen-ts/env-bindings.ts": "sha256:a167cfe9842352c9fec6412ff0d82bda9c5f5c3a1af541bd5c27a57f54fd0941",
|
|
135
135
|
"gen-ts/error-category-registry.ts": "sha256:280a12aecc8aea8e6e2f2a54d2e968ff7807b522cc0c4036e6e41c065edcf3b7",
|
|
136
136
|
"gen-ts/error-category.ts": "sha256:9bda89180c3b740c9aa8be466216592e8ca9d0d368c274333edf6ea5c45afd8e",
|
|
@@ -145,7 +145,7 @@
|
|
|
145
145
|
"gen-ts/security-scan-input.ts": "sha256:b31f048be04c34b40f49d3b3ba53277e473cd435ae9216ba3a3b4dac69fb5685",
|
|
146
146
|
"gen-ts/security-verdict.ts": "sha256:fea950cddbd12fe0218e2573c9a29c6748d56612a464559f1e6d688fa97f68c7",
|
|
147
147
|
"gen-ts/transform-report.ts": "sha256:6c54b579884d98135d73945d00980820b136f269622db27fa56a1c4c0e57d3b6",
|
|
148
|
-
"gen-ts/version-state-machine.ts": "sha256:
|
|
148
|
+
"gen-ts/version-state-machine.ts": "sha256:c67af3e86ac306743345b850dfd3ae5201c19d10c40e2c149cf8c38258320d5f",
|
|
149
149
|
"gen-ts/version-state.ts": "sha256:a835112930299e7b593a1b8810b7414f6c9e809da2092306c743128170a3b702"
|
|
150
150
|
}
|
|
151
151
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export declare const ContractRepositoryVersion: "0.
|
|
2
|
-
export declare const ContractPublishVersion: "0.
|
|
3
|
-
export declare const ContractPublishTag: "v0.
|
|
4
|
-
export declare const ContractSchemasDigest: "sha256:
|
|
1
|
+
export declare const ContractRepositoryVersion: "0.32.0.0";
|
|
2
|
+
export declare const ContractPublishVersion: "0.32.0";
|
|
3
|
+
export declare const ContractPublishTag: "v0.32.0";
|
|
4
|
+
export declare const ContractSchemasDigest: "sha256:0476a253b6fe583fefeca0766502fbdb4f94987265c86268a489eb6ddfab4d29";
|
|
5
5
|
export declare const ContractAiFixturesDigest: "sha256:edac31c92e146ca1c40130f2fb5649db82e24b8cd1ac758153b90612052fddb6";
|
|
6
|
-
export declare const ContractGeneratedGoDigest: "sha256:
|
|
7
|
-
export declare const ContractGeneratedTypeScriptDigest: "sha256:
|
|
6
|
+
export declare const ContractGeneratedGoDigest: "sha256:6bb7567f6e0a753136c8389ce8e3a0f8357d360c94ef6f3da3768e63d6562822";
|
|
7
|
+
export declare const ContractGeneratedTypeScriptDigest: "sha256:1f8c32cbe5fbf605bdcaeb73152977a92c488ebd1ab96fb4234a56eb9fc5cee7";
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/* eslint-disable */
|
|
2
2
|
// Code generated by tools/gen/gen.mjs from schema/*.json. DO NOT EDIT.
|
|
3
|
-
export const ContractRepositoryVersion = "0.
|
|
4
|
-
export const ContractPublishVersion = "0.
|
|
5
|
-
export const ContractPublishTag = "v0.
|
|
6
|
-
export const ContractSchemasDigest = "sha256:
|
|
3
|
+
export const ContractRepositoryVersion = "0.32.0.0";
|
|
4
|
+
export const ContractPublishVersion = "0.32.0";
|
|
5
|
+
export const ContractPublishTag = "v0.32.0";
|
|
6
|
+
export const ContractSchemasDigest = "sha256:0476a253b6fe583fefeca0766502fbdb4f94987265c86268a489eb6ddfab4d29";
|
|
7
7
|
export const ContractAiFixturesDigest = "sha256:edac31c92e146ca1c40130f2fb5649db82e24b8cd1ac758153b90612052fddb6";
|
|
8
|
-
export const ContractGeneratedGoDigest = "sha256:
|
|
9
|
-
export const ContractGeneratedTypeScriptDigest = "sha256:
|
|
8
|
+
export const ContractGeneratedGoDigest = "sha256:6bb7567f6e0a753136c8389ce8e3a0f8357d360c94ef6f3da3768e63d6562822";
|
|
9
|
+
export const ContractGeneratedTypeScriptDigest = "sha256:1f8c32cbe5fbf605bdcaeb73152977a92c488ebd1ab96fb4234a56eb9fc5cee7";
|
|
@@ -25,6 +25,7 @@ export interface DeploymentStatusResponse {
|
|
|
25
25
|
* @maxItems 50
|
|
26
26
|
*/
|
|
27
27
|
progress?: StatusProgressEvent[];
|
|
28
|
+
deployTarget?: StatusDeployTarget;
|
|
28
29
|
}
|
|
29
30
|
export interface StatusFailureProjection {
|
|
30
31
|
category: string;
|
|
@@ -64,3 +65,16 @@ export interface StatusProgressEvent {
|
|
|
64
65
|
remainingMs?: number;
|
|
65
66
|
origin?: 'initial' | 'widen';
|
|
66
67
|
}
|
|
68
|
+
/**
|
|
69
|
+
* The customer account and region this version deploys into, stamped on the version record at admission for customer-account (BYOC) tenants. Absent means harbour-managed — the same convention the record itself uses — so every pre-destination version simply omits it. Deliberately only account and region: the record's roleArn/externalId are how the pipeline gets into the account, not where the deploy landed, and no status consumer needs them.
|
|
70
|
+
*/
|
|
71
|
+
export interface StatusDeployTarget {
|
|
72
|
+
/**
|
|
73
|
+
* AWS account id the version deploys into.
|
|
74
|
+
*/
|
|
75
|
+
account: string;
|
|
76
|
+
/**
|
|
77
|
+
* AWS region the version deploys into, e.g. eu-west-1.
|
|
78
|
+
*/
|
|
79
|
+
region: string;
|
|
80
|
+
}
|
|
@@ -32,7 +32,8 @@ const legalTransitions = {
|
|
|
32
32
|
"PROMOTING": { "LIVE": true, "FAILED": true },
|
|
33
33
|
},
|
|
34
34
|
"prod": {
|
|
35
|
-
"QUEUED": { "PROMOTING": true, "FAILED": true },
|
|
35
|
+
"QUEUED": { "PROMOTING": true, "GATING": true, "FAILED": true },
|
|
36
|
+
"GATING": { "PROMOTING": true, "FAILED": true, "STALE": true },
|
|
36
37
|
"PROMOTING": { "LIVE": true, "FAILED": true },
|
|
37
38
|
},
|
|
38
39
|
};
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/* eslint-disable */
|
|
2
2
|
// Code generated by tools/gen/gen.mjs from schema/*.json. DO NOT EDIT.
|
|
3
3
|
|
|
4
|
-
export const ContractRepositoryVersion = "0.
|
|
5
|
-
export const ContractPublishVersion = "0.
|
|
6
|
-
export const ContractPublishTag = "v0.
|
|
7
|
-
export const ContractSchemasDigest = "sha256:
|
|
4
|
+
export const ContractRepositoryVersion = "0.32.0.0" as const;
|
|
5
|
+
export const ContractPublishVersion = "0.32.0" as const;
|
|
6
|
+
export const ContractPublishTag = "v0.32.0" as const;
|
|
7
|
+
export const ContractSchemasDigest = "sha256:0476a253b6fe583fefeca0766502fbdb4f94987265c86268a489eb6ddfab4d29" as const;
|
|
8
8
|
export const ContractAiFixturesDigest = "sha256:edac31c92e146ca1c40130f2fb5649db82e24b8cd1ac758153b90612052fddb6" as const;
|
|
9
|
-
export const ContractGeneratedGoDigest = "sha256:
|
|
10
|
-
export const ContractGeneratedTypeScriptDigest = "sha256:
|
|
9
|
+
export const ContractGeneratedGoDigest = "sha256:6bb7567f6e0a753136c8389ce8e3a0f8357d360c94ef6f3da3768e63d6562822" as const;
|
|
10
|
+
export const ContractGeneratedTypeScriptDigest = "sha256:1f8c32cbe5fbf605bdcaeb73152977a92c488ebd1ab96fb4234a56eb9fc5cee7" as const;
|
|
@@ -40,6 +40,7 @@ export interface DeploymentStatusResponse {
|
|
|
40
40
|
* @maxItems 50
|
|
41
41
|
*/
|
|
42
42
|
progress?: StatusProgressEvent[];
|
|
43
|
+
deployTarget?: StatusDeployTarget;
|
|
43
44
|
}
|
|
44
45
|
export interface StatusFailureProjection {
|
|
45
46
|
category: string;
|
|
@@ -79,3 +80,16 @@ export interface StatusProgressEvent {
|
|
|
79
80
|
remainingMs?: number;
|
|
80
81
|
origin?: 'initial' | 'widen';
|
|
81
82
|
}
|
|
83
|
+
/**
|
|
84
|
+
* The customer account and region this version deploys into, stamped on the version record at admission for customer-account (BYOC) tenants. Absent means harbour-managed — the same convention the record itself uses — so every pre-destination version simply omits it. Deliberately only account and region: the record's roleArn/externalId are how the pipeline gets into the account, not where the deploy landed, and no status consumer needs them.
|
|
85
|
+
*/
|
|
86
|
+
export interface StatusDeployTarget {
|
|
87
|
+
/**
|
|
88
|
+
* AWS account id the version deploys into.
|
|
89
|
+
*/
|
|
90
|
+
account: string;
|
|
91
|
+
/**
|
|
92
|
+
* AWS region the version deploys into, e.g. eu-west-1.
|
|
93
|
+
*/
|
|
94
|
+
region: string;
|
|
95
|
+
}
|
|
@@ -37,7 +37,8 @@ const legalTransitions: Record<string, Record<string, Record<string, true>>> = {
|
|
|
37
37
|
"PROMOTING": { "LIVE": true, "FAILED": true },
|
|
38
38
|
},
|
|
39
39
|
"prod": {
|
|
40
|
-
"QUEUED": { "PROMOTING": true, "FAILED": true },
|
|
40
|
+
"QUEUED": { "PROMOTING": true, "GATING": true, "FAILED": true },
|
|
41
|
+
"GATING": { "PROMOTING": true, "FAILED": true, "STALE": true },
|
|
41
42
|
"PROMOTING": { "LIVE": true, "FAILED": true },
|
|
42
43
|
},
|
|
43
44
|
};
|
package/package.json
CHANGED
|
@@ -63,9 +63,31 @@
|
|
|
63
63
|
"maxItems": 50,
|
|
64
64
|
"description": "Bounded chronological trail (oldest first) of human-renderable progress moments observed while this version deployed. Ephemeral and best-effort: a deploy that recorded none — including every deploy that predates this field — simply omits it, so absence means 'no progress view available', never failure.",
|
|
65
65
|
"items": { "$ref": "#/definitions/StatusProgressEvent" }
|
|
66
|
+
},
|
|
67
|
+
"deployTarget": {
|
|
68
|
+
"$ref": "#/definitions/StatusDeployTarget"
|
|
66
69
|
}
|
|
67
70
|
},
|
|
68
71
|
"definitions": {
|
|
72
|
+
"StatusDeployTarget": {
|
|
73
|
+
"type": "object",
|
|
74
|
+
"additionalProperties": false,
|
|
75
|
+
"required": ["account", "region"],
|
|
76
|
+
"description": "The customer account and region this version deploys into, stamped on the version record at admission for customer-account (BYOC) tenants. Absent means harbour-managed — the same convention the record itself uses — so every pre-destination version simply omits it. Deliberately only account and region: the record's roleArn/externalId are how the pipeline gets into the account, not where the deploy landed, and no status consumer needs them.",
|
|
77
|
+
"properties": {
|
|
78
|
+
"account": {
|
|
79
|
+
"type": "string",
|
|
80
|
+
"pattern": "^[0-9]{12}$",
|
|
81
|
+
"description": "AWS account id the version deploys into."
|
|
82
|
+
},
|
|
83
|
+
"region": {
|
|
84
|
+
"type": "string",
|
|
85
|
+
"minLength": 1,
|
|
86
|
+
"maxLength": 32,
|
|
87
|
+
"description": "AWS region the version deploys into, e.g. eu-west-1."
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
},
|
|
69
91
|
"StatusFailureProjection": {
|
|
70
92
|
"type": "object",
|
|
71
93
|
"additionalProperties": false,
|
|
@@ -36,7 +36,11 @@
|
|
|
36
36
|
"x-terminalStable": ["LIVE", "AWAITING-PROMOTION"],
|
|
37
37
|
"x-transitions": [
|
|
38
38
|
{ "from": "QUEUED", "to": "ANALYZING", "environments": ["preview"], "trigger": "admission: slot free AND commit reachable from branch" },
|
|
39
|
-
{ "from": "QUEUED", "to": "PROMOTING", "environments": ["prod"], "trigger": "production promotion admission: stored preview and source-fidelity guards pass" },
|
|
39
|
+
{ "from": "QUEUED", "to": "PROMOTING", "environments": ["prod"], "trigger": "production promotion admission: stored preview and source-fidelity guards pass (direct path — pipelines not yet opted into security gating)" },
|
|
40
|
+
{ "from": "QUEUED", "to": "GATING", "environments": ["prod"], "trigger": "production promotion admission with security gating enabled: guards pass -> evaluate gates before promoting (M3 security assurance, opt-in)" },
|
|
41
|
+
{ "from": "GATING", "to": "PROMOTING", "environments": ["prod"], "trigger": "all blocking security gates pass -> proceed to promotion" },
|
|
42
|
+
{ "from": "GATING", "to": "FAILED", "environments": ["prod"], "trigger": "a blocking security gate fails; prod alias never moved" },
|
|
43
|
+
{ "from": "GATING", "to": "STALE", "environments": ["prod"], "trigger": "newer promotion request passes its guard while gating" },
|
|
40
44
|
{ "from": "QUEUED", "to": "FAILED", "trigger": "admission validation fails — commit not reachable from branch" },
|
|
41
45
|
{ "from": "ANALYZING", "to": "BUILDING", "environments": ["preview"], "trigger": "nothing to transform (fast path)" },
|
|
42
46
|
{ "from": "ANALYZING", "to": "TRANSFORMING", "environments": ["preview"], "trigger": "transform-relevant findings; 15-min wall deadline stamped" },
|