@fourier-labs/harbour-contracts 0.27.0 → 0.29.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 +12 -12
- package/dist/gen-ts/contract-release.d.ts +6 -6
- package/dist/gen-ts/contract-release.js +6 -6
- package/dist/gen-ts/promotion-request.d.ts +22 -15
- package/dist/gen-ts/transform-report.d.ts +21 -0
- package/gen-ts/contract-release.ts +6 -6
- package/gen-ts/promotion-request.ts +22 -15
- package/gen-ts/transform-report.ts +21 -0
- package/package.json +1 -1
- package/schema/promotion-request.schema.json +15 -5
- package/schema/transform-report.schema.json +39 -0
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.29.0.0",
|
|
4
|
+
"publishVersion": "0.29.0",
|
|
5
|
+
"publishTag": "v0.29.0",
|
|
6
|
+
"schemasDigest": "sha256:4b21ea9a6b13193a189d2499f6cc8f24975db18686e64d2042490a85dca669fc",
|
|
7
7
|
"aiFixturesDigest": "sha256:edac31c92e146ca1c40130f2fb5649db82e24b8cd1ac758153b90612052fddb6",
|
|
8
|
-
"generatedGoDigest": "sha256:
|
|
9
|
-
"generatedTypeScriptDigest": "sha256:
|
|
8
|
+
"generatedGoDigest": "sha256:6e5af7342005ceb5b2a175b3d5c3eb27e06fe5bfa57e74e2e854038b5f8cbad6",
|
|
9
|
+
"generatedTypeScriptDigest": "sha256:b6201aeb54e733aaf4f33c2bdf75054b3e10b1616e031620cce15ee72fb37770",
|
|
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)"
|
|
@@ -47,13 +47,13 @@
|
|
|
47
47
|
"schema/error-category.enum.json": "sha256:693f8ce67d5554358f89b76132024cb8a082216f192d80a66bc4dc64e8983332",
|
|
48
48
|
"schema/error-envelope.schema.json": "sha256:75dccda7dd16fdf8435deda53fc7dbcdc109b65114617a17f11763010c656f90",
|
|
49
49
|
"schema/kvs-routing-entry.schema.json": "sha256:b75f3a5dfa93a428b2764e03222b66b6ef2bed980f8bac8ffac54afdf3526bc5",
|
|
50
|
-
"schema/promotion-request.schema.json": "sha256:
|
|
50
|
+
"schema/promotion-request.schema.json": "sha256:00e96dfd8ddbdba88ea222941d43f3609ff6c815a79e34f6705cab458101c969",
|
|
51
51
|
"schema/promotion-response.schema.json": "sha256:4129712d2e29d6ef21d93d4bd0bacfd60ada3f2ee0ade852824e64346b817634",
|
|
52
52
|
"schema/sanitized-binding-evidence.schema.json": "sha256:b03bcc1911c99c69fda50eb656fc3e115f88fe2990c1708fbb5cd3542f4b8bba",
|
|
53
53
|
"schema/secret-reference.schema.json": "sha256:966f7a6d2575b46a4b54804d06dc05c6229ebbcbd9200fe6a6c8d3b4ffb90f9f",
|
|
54
54
|
"schema/security-scan-input.schema.json": "sha256:9f9c9e6131c1abee454320b77e4332e3780c0c63f108f54f75c93194a32ccff7",
|
|
55
55
|
"schema/security-verdict.schema.json": "sha256:ec3c2d5c9df3601aeed0909b36c7f427469c7f0eeb3295c5809b96d09bf3fc26",
|
|
56
|
-
"schema/transform-report.schema.json": "sha256:
|
|
56
|
+
"schema/transform-report.schema.json": "sha256:815e764445fb41b912d0c0468f00621ad61f941fb4c7b9364e3f204ad47cdf7f",
|
|
57
57
|
"schema/version-state.schema.json": "sha256:e7c4b2e7b615ebb07f36d0df22ded51b2c9688ef9e9bfe79de1d5cd94de9ae40"
|
|
58
58
|
},
|
|
59
59
|
"aiFixtures": {
|
|
@@ -92,8 +92,8 @@
|
|
|
92
92
|
"gen-go/contracts_test.go": "sha256:7c7ee46f2b4277e22b1ee21af9f17d201eb83067c613b049749f932706ed24f8",
|
|
93
93
|
"gen-go/doc.go": "sha256:c17bc2d39ed175ce7105c68305f8ae7152f659eb7cd187ecceee7698eb3a65dd",
|
|
94
94
|
"gen-go/error_category.go": "sha256:a8b64524be3716e62ca6016e56f2332a56fa5e16e42647421e516aa01a7d6806",
|
|
95
|
-
"gen-go/schema_documents.go": "sha256:
|
|
96
|
-
"gen-go/types.go": "sha256:
|
|
95
|
+
"gen-go/schema_documents.go": "sha256:4b9094aaf0acc4bae4b65784954853f0888572a53fa1a1dc354f97c88ded805f",
|
|
96
|
+
"gen-go/types.go": "sha256:bf6906826f4d1c490954cc4354322bf508c392cfc4b72a9a6fe9890f6b5a8d99",
|
|
97
97
|
"gen-go/version_state.go": "sha256:827f8768359998409b86ea02d9ba1a149981928bae7161e4dc95fe0520ce7410"
|
|
98
98
|
},
|
|
99
99
|
"generatedTypeScript": {
|
|
@@ -137,14 +137,14 @@
|
|
|
137
137
|
"gen-ts/error-envelope.ts": "sha256:4457309be794f9d4fc0cf62530cc2d442c007bac9ae84aff66df099cc9e40310",
|
|
138
138
|
"gen-ts/index.ts": "sha256:bb37bf7838034dcf410562855582ae3bfbf24ee43d506bbc514ad512557016b5",
|
|
139
139
|
"gen-ts/kvs-routing-entry.ts": "sha256:d92e85ee9f257d77850d1d3aac9438e2055f38084ff84a48fcedae239d47d4ca",
|
|
140
|
-
"gen-ts/promotion-request.ts": "sha256:
|
|
140
|
+
"gen-ts/promotion-request.ts": "sha256:9db88cef67f777a16bac628039ec3f582acb9e8cfff6fb592b30d0a0e55abc68",
|
|
141
141
|
"gen-ts/promotion-response.ts": "sha256:f1c9cafac96faeb02a443a31786f67714e818f38d90108e7af41958396524d6f",
|
|
142
142
|
"gen-ts/sanitized-binding-digest-helper.ts": "sha256:c47d7fdc20500e2e72c23fe39ecdd610fc397c47fcba51335ebec3c380fe6872",
|
|
143
143
|
"gen-ts/sanitized-binding-evidence.ts": "sha256:4db7e9ed83f563a46e337815a55bbd6433864c41d9ec8e8a80810a16e3095ebb",
|
|
144
144
|
"gen-ts/secret-reference.ts": "sha256:a8b65de72705b6f51f57cd8ca58881483108005b1fa4d19106c3e9cf1fa877e7",
|
|
145
145
|
"gen-ts/security-scan-input.ts": "sha256:5d9bde7394d8b34cca1d36b51ce17bf73cfccd9cfd7cab810f83d4de58f22285",
|
|
146
146
|
"gen-ts/security-verdict.ts": "sha256:fea950cddbd12fe0218e2573c9a29c6748d56612a464559f1e6d688fa97f68c7",
|
|
147
|
-
"gen-ts/transform-report.ts": "sha256:
|
|
147
|
+
"gen-ts/transform-report.ts": "sha256:6c54b579884d98135d73945d00980820b136f269622db27fa56a1c4c0e57d3b6",
|
|
148
148
|
"gen-ts/version-state-machine.ts": "sha256:4371bc7e2bde86b0447f5242104c576cc160dfd7dae1885acbfb63540f230bdd",
|
|
149
149
|
"gen-ts/version-state.ts": "sha256:a835112930299e7b593a1b8810b7414f6c9e809da2092306c743128170a3b702"
|
|
150
150
|
}
|
|
@@ -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.29.0.0";
|
|
2
|
+
export declare const ContractPublishVersion: "0.29.0";
|
|
3
|
+
export declare const ContractPublishTag: "v0.29.0";
|
|
4
|
+
export declare const ContractSchemasDigest: "sha256:4b21ea9a6b13193a189d2499f6cc8f24975db18686e64d2042490a85dca669fc";
|
|
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:6e5af7342005ceb5b2a175b3d5c3eb27e06fe5bfa57e74e2e854038b5f8cbad6";
|
|
7
|
+
export declare const ContractGeneratedTypeScriptDigest: "sha256:b6201aeb54e733aaf4f33c2bdf75054b3e10b1616e031620cce15ee72fb37770";
|
|
@@ -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.29.0.0";
|
|
4
|
+
export const ContractPublishVersion = "0.29.0";
|
|
5
|
+
export const ContractPublishTag = "v0.29.0";
|
|
6
|
+
export const ContractSchemasDigest = "sha256:4b21ea9a6b13193a189d2499f6cc8f24975db18686e64d2042490a85dca669fc";
|
|
7
7
|
export const ContractAiFixturesDigest = "sha256:edac31c92e146ca1c40130f2fb5649db82e24b8cd1ac758153b90612052fddb6";
|
|
8
|
-
export const ContractGeneratedGoDigest = "sha256:
|
|
9
|
-
export const ContractGeneratedTypeScriptDigest = "sha256:
|
|
8
|
+
export const ContractGeneratedGoDigest = "sha256:6e5af7342005ceb5b2a175b3d5c3eb27e06fe5bfa57e74e2e854038b5f8cbad6";
|
|
9
|
+
export const ContractGeneratedTypeScriptDigest = "sha256:b6201aeb54e733aaf4f33c2bdf75054b3e10b1616e031620cce15ee72fb37770";
|
|
@@ -1,3 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One runtime binding: exactly one of secretRef or plain value, as in preview. The legacy type name is retained for consumers. Secret references remain limited to app secrets and approved data-source credentials; integration and provider credentials remain unrepresentable.
|
|
3
|
+
*/
|
|
4
|
+
export type PromotionRequestSecretBinding = {
|
|
5
|
+
/**
|
|
6
|
+
* Environment-variable name the app reads.
|
|
7
|
+
*/
|
|
8
|
+
name: string;
|
|
9
|
+
/**
|
|
10
|
+
* Governance app secret, app-scoped minted data-source credential, or approved tenant-source credential reference the deployment plane resolves. The credential value never appears in this request.
|
|
11
|
+
*/
|
|
12
|
+
secretRef?: string;
|
|
13
|
+
/**
|
|
14
|
+
* Approved plain configuration, not a credential. Its classification must be configuration.
|
|
15
|
+
*/
|
|
16
|
+
value?: string;
|
|
17
|
+
} & PromotionRequestSecretBinding1;
|
|
18
|
+
export type PromotionRequestSecretBinding1 = {
|
|
19
|
+
[k: string]: unknown;
|
|
20
|
+
};
|
|
1
21
|
type BindingClassificationEntry = {
|
|
2
22
|
kind: 'configuration' | 'secret' | 'provider_credential';
|
|
3
23
|
confidence: 'high' | 'low';
|
|
@@ -28,27 +48,14 @@ export interface PromotionRequest {
|
|
|
28
48
|
bindingClassification: BindingClassificationSubject;
|
|
29
49
|
}
|
|
30
50
|
/**
|
|
31
|
-
* Optional
|
|
51
|
+
* Optional runtime bindings for the production version, matching the preview secret-reference or plain-configuration shape. Credentials remain secret references; classification covers every binding name.
|
|
32
52
|
*/
|
|
33
53
|
export interface PromotionRequestEnvironmentBindings {
|
|
34
54
|
/**
|
|
35
|
-
*
|
|
55
|
+
* Approved runtime bindings for the production version. An empty array means the caller checked and found no bindings.
|
|
36
56
|
*/
|
|
37
57
|
bindings: PromotionRequestSecretBinding[];
|
|
38
58
|
}
|
|
39
|
-
/**
|
|
40
|
-
* One secret binding. Unlike the preview counterpart there is no `value` member and `secretRef` is required, so a plain literal is unrepresentable on the promotion path rather than merely refused by the handler. The secretRef pattern admits only app secrets, app-scoped minted data-source credentials and tenant-scoped source credentials from an approved BYO grant; integration and provider credentials remain unrepresentable.
|
|
41
|
-
*/
|
|
42
|
-
export interface PromotionRequestSecretBinding {
|
|
43
|
-
/**
|
|
44
|
-
* Environment-variable name the app reads.
|
|
45
|
-
*/
|
|
46
|
-
name: string;
|
|
47
|
-
/**
|
|
48
|
-
* Governance app secret, app-scoped minted data-source credential, or approved tenant-source credential reference the deployment plane resolves. The value never appears in the request, in this schema, or in any record derived from it.
|
|
49
|
-
*/
|
|
50
|
-
secretRef: string;
|
|
51
|
-
}
|
|
52
59
|
/**
|
|
53
60
|
* Complete pre-allocation, value-free classification for the exact production source revision and declared production binding names. It intentionally has no production versionId; DCP allocates that identity atomically.
|
|
54
61
|
*/
|
|
@@ -66,6 +66,27 @@ export type TransformReport = {
|
|
|
66
66
|
* Optional reviewed runtime features selected for the standard application image. The first release supports Chromium for Node runtimes only.
|
|
67
67
|
*/
|
|
68
68
|
runtimeFeatures?: 'chromium'[];
|
|
69
|
+
/**
|
|
70
|
+
* Optional bounded workload requirements, carried into the deployment plan and artifact. Null or omitted preserves standard HTTP serving. SQS jobs require platform-selected Kubernetes compute.
|
|
71
|
+
*/
|
|
72
|
+
workload?: {
|
|
73
|
+
resourceProfile: 'standard' | 'memory-1g';
|
|
74
|
+
backgroundJobs: 'none' | 'sqs';
|
|
75
|
+
} | null;
|
|
76
|
+
/**
|
|
77
|
+
* Build-only bootstrap for authenticated browser validation. Use null when the application does not require a local database user. When local authorization resolves Harbour identity to an application-owned user or membership row, declare an idempotent command that creates the fixed validation identity in the throwaway database. Reuse an existing seed command when available; otherwise add the smallest validation-only script using the application's existing database layer. The command is never run during production deployment.
|
|
78
|
+
*/
|
|
79
|
+
validationSeed?: {
|
|
80
|
+
/**
|
|
81
|
+
* @minItems 1
|
|
82
|
+
* @maxItems 64
|
|
83
|
+
*/
|
|
84
|
+
command: string[];
|
|
85
|
+
/**
|
|
86
|
+
* Existing application-owned environment variable that receives the trusted browser probe email, for example ADMIN_EMAIL.
|
|
87
|
+
*/
|
|
88
|
+
identityEmailEnvironmentVariable: string;
|
|
89
|
+
} | null;
|
|
69
90
|
buildKind?: 'container' | 'static';
|
|
70
91
|
topology?: 'static' | 'backend' | 'frontend_and_backend';
|
|
71
92
|
entrypoint?: string;
|
|
@@ -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.29.0.0" as const;
|
|
5
|
+
export const ContractPublishVersion = "0.29.0" as const;
|
|
6
|
+
export const ContractPublishTag = "v0.29.0" as const;
|
|
7
|
+
export const ContractSchemasDigest = "sha256:4b21ea9a6b13193a189d2499f6cc8f24975db18686e64d2042490a85dca669fc" 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:6e5af7342005ceb5b2a175b3d5c3eb27e06fe5bfa57e74e2e854038b5f8cbad6" as const;
|
|
10
|
+
export const ContractGeneratedTypeScriptDigest = "sha256:b6201aeb54e733aaf4f33c2bdf75054b3e10b1616e031620cce15ee72fb37770" as const;
|
|
@@ -1,6 +1,26 @@
|
|
|
1
1
|
/* eslint-disable */
|
|
2
2
|
// Code generated by tools/gen/gen.mjs from schema/*.json. DO NOT EDIT.
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* One runtime binding: exactly one of secretRef or plain value, as in preview. The legacy type name is retained for consumers. Secret references remain limited to app secrets and approved data-source credentials; integration and provider credentials remain unrepresentable.
|
|
6
|
+
*/
|
|
7
|
+
export type PromotionRequestSecretBinding = {
|
|
8
|
+
/**
|
|
9
|
+
* Environment-variable name the app reads.
|
|
10
|
+
*/
|
|
11
|
+
name: string;
|
|
12
|
+
/**
|
|
13
|
+
* Governance app secret, app-scoped minted data-source credential, or approved tenant-source credential reference the deployment plane resolves. The credential value never appears in this request.
|
|
14
|
+
*/
|
|
15
|
+
secretRef?: string;
|
|
16
|
+
/**
|
|
17
|
+
* Approved plain configuration, not a credential. Its classification must be configuration.
|
|
18
|
+
*/
|
|
19
|
+
value?: string;
|
|
20
|
+
} & PromotionRequestSecretBinding1;
|
|
21
|
+
export type PromotionRequestSecretBinding1 = {
|
|
22
|
+
[k: string]: unknown;
|
|
23
|
+
};
|
|
4
24
|
type BindingClassificationEntry = {
|
|
5
25
|
kind: 'configuration' | 'secret' | 'provider_credential';
|
|
6
26
|
confidence: 'high' | 'low';
|
|
@@ -32,27 +52,14 @@ export interface PromotionRequest {
|
|
|
32
52
|
bindingClassification: BindingClassificationSubject;
|
|
33
53
|
}
|
|
34
54
|
/**
|
|
35
|
-
* Optional
|
|
55
|
+
* Optional runtime bindings for the production version, matching the preview secret-reference or plain-configuration shape. Credentials remain secret references; classification covers every binding name.
|
|
36
56
|
*/
|
|
37
57
|
export interface PromotionRequestEnvironmentBindings {
|
|
38
58
|
/**
|
|
39
|
-
*
|
|
59
|
+
* Approved runtime bindings for the production version. An empty array means the caller checked and found no bindings.
|
|
40
60
|
*/
|
|
41
61
|
bindings: PromotionRequestSecretBinding[];
|
|
42
62
|
}
|
|
43
|
-
/**
|
|
44
|
-
* One secret binding. Unlike the preview counterpart there is no `value` member and `secretRef` is required, so a plain literal is unrepresentable on the promotion path rather than merely refused by the handler. The secretRef pattern admits only app secrets, app-scoped minted data-source credentials and tenant-scoped source credentials from an approved BYO grant; integration and provider credentials remain unrepresentable.
|
|
45
|
-
*/
|
|
46
|
-
export interface PromotionRequestSecretBinding {
|
|
47
|
-
/**
|
|
48
|
-
* Environment-variable name the app reads.
|
|
49
|
-
*/
|
|
50
|
-
name: string;
|
|
51
|
-
/**
|
|
52
|
-
* Governance app secret, app-scoped minted data-source credential, or approved tenant-source credential reference the deployment plane resolves. The value never appears in the request, in this schema, or in any record derived from it.
|
|
53
|
-
*/
|
|
54
|
-
secretRef: string;
|
|
55
|
-
}
|
|
56
63
|
/**
|
|
57
64
|
* Complete pre-allocation, value-free classification for the exact production source revision and declared production binding names. It intentionally has no production versionId; DCP allocates that identity atomically.
|
|
58
65
|
*/
|
|
@@ -69,6 +69,27 @@ export type TransformReport = {
|
|
|
69
69
|
* Optional reviewed runtime features selected for the standard application image. The first release supports Chromium for Node runtimes only.
|
|
70
70
|
*/
|
|
71
71
|
runtimeFeatures?: 'chromium'[];
|
|
72
|
+
/**
|
|
73
|
+
* Optional bounded workload requirements, carried into the deployment plan and artifact. Null or omitted preserves standard HTTP serving. SQS jobs require platform-selected Kubernetes compute.
|
|
74
|
+
*/
|
|
75
|
+
workload?: {
|
|
76
|
+
resourceProfile: 'standard' | 'memory-1g';
|
|
77
|
+
backgroundJobs: 'none' | 'sqs';
|
|
78
|
+
} | null;
|
|
79
|
+
/**
|
|
80
|
+
* Build-only bootstrap for authenticated browser validation. Use null when the application does not require a local database user. When local authorization resolves Harbour identity to an application-owned user or membership row, declare an idempotent command that creates the fixed validation identity in the throwaway database. Reuse an existing seed command when available; otherwise add the smallest validation-only script using the application's existing database layer. The command is never run during production deployment.
|
|
81
|
+
*/
|
|
82
|
+
validationSeed?: {
|
|
83
|
+
/**
|
|
84
|
+
* @minItems 1
|
|
85
|
+
* @maxItems 64
|
|
86
|
+
*/
|
|
87
|
+
command: string[];
|
|
88
|
+
/**
|
|
89
|
+
* Existing application-owned environment variable that receives the trusted browser probe email, for example ADMIN_EMAIL.
|
|
90
|
+
*/
|
|
91
|
+
identityEmailEnvironmentVariable: string;
|
|
92
|
+
} | null;
|
|
72
93
|
buildKind?: 'container' | 'static';
|
|
73
94
|
topology?: 'static' | 'backend' | 'frontend_and_backend';
|
|
74
95
|
entrypoint?: string;
|
package/package.json
CHANGED
|
@@ -41,15 +41,15 @@
|
|
|
41
41
|
"items": {
|
|
42
42
|
"$ref": "#/definitions/PromotionRequestSecretBinding"
|
|
43
43
|
},
|
|
44
|
-
"description": "
|
|
44
|
+
"description": "Approved runtime bindings for the production version. An empty array means the caller checked and found no bindings."
|
|
45
45
|
}
|
|
46
46
|
},
|
|
47
|
-
"description": "Optional
|
|
47
|
+
"description": "Optional runtime bindings for the production version, matching the preview secret-reference or plain-configuration shape. Credentials remain secret references; classification covers every binding name."
|
|
48
48
|
},
|
|
49
49
|
"PromotionRequestSecretBinding": {
|
|
50
50
|
"type": "object",
|
|
51
51
|
"additionalProperties": false,
|
|
52
|
-
"required": ["name"
|
|
52
|
+
"required": ["name"],
|
|
53
53
|
"properties": {
|
|
54
54
|
"name": {
|
|
55
55
|
"type": "string",
|
|
@@ -59,10 +59,20 @@
|
|
|
59
59
|
"secretRef": {
|
|
60
60
|
"type": "string",
|
|
61
61
|
"pattern": "^secretref://tenant/[A-Za-z0-9._-]+/(?:app/[A-Za-z0-9._-]+/(?:secret/[A-Z][A-Z0-9_]{0,127}|source/[a-z0-9][a-z0-9._-]{0,63})|source/[a-z0-9][a-z0-9._-]{0,63})$",
|
|
62
|
-
"description": "Governance app secret, app-scoped minted data-source credential, or approved tenant-source credential reference the deployment plane resolves. The value never appears in
|
|
62
|
+
"description": "Governance app secret, app-scoped minted data-source credential, or approved tenant-source credential reference the deployment plane resolves. The credential value never appears in this request."
|
|
63
|
+
},
|
|
64
|
+
"value": {
|
|
65
|
+
"type": "string",
|
|
66
|
+
"minLength": 1,
|
|
67
|
+
"maxLength": 512,
|
|
68
|
+
"description": "Approved plain configuration, not a credential. Its classification must be configuration."
|
|
63
69
|
}
|
|
64
70
|
},
|
|
65
|
-
"
|
|
71
|
+
"oneOf": [
|
|
72
|
+
{ "required": ["secretRef"] },
|
|
73
|
+
{ "required": ["value"] }
|
|
74
|
+
],
|
|
75
|
+
"description": "One runtime binding: exactly one of secretRef or plain value, as in preview. The legacy type name is retained for consumers. Secret references remain limited to app secrets and approved data-source credentials; integration and provider credentials remain unrepresentable."
|
|
66
76
|
}
|
|
67
77
|
}
|
|
68
78
|
}
|
|
@@ -129,6 +129,45 @@
|
|
|
129
129
|
},
|
|
130
130
|
"description": "Optional reviewed runtime features selected for the standard application image. The first release supports Chromium for Node runtimes only."
|
|
131
131
|
},
|
|
132
|
+
"workload": {
|
|
133
|
+
"description": "Optional bounded workload requirements, carried into the deployment plan and artifact. Null or omitted preserves standard HTTP serving. SQS jobs require platform-selected Kubernetes compute.",
|
|
134
|
+
"anyOf": [
|
|
135
|
+
{
|
|
136
|
+
"type": "object",
|
|
137
|
+
"additionalProperties": false,
|
|
138
|
+
"required": ["resourceProfile", "backgroundJobs"],
|
|
139
|
+
"properties": {
|
|
140
|
+
"resourceProfile": { "type": "string", "enum": ["standard", "memory-1g"] },
|
|
141
|
+
"backgroundJobs": { "type": "string", "enum": ["none", "sqs"] }
|
|
142
|
+
}
|
|
143
|
+
},
|
|
144
|
+
{ "type": "null" }
|
|
145
|
+
]
|
|
146
|
+
},
|
|
147
|
+
"validationSeed": {
|
|
148
|
+
"description": "Build-only bootstrap for authenticated browser validation. Use null when the application does not require a local database user. When local authorization resolves Harbour identity to an application-owned user or membership row, declare an idempotent command that creates the fixed validation identity in the throwaway database. Reuse an existing seed command when available; otherwise add the smallest validation-only script using the application's existing database layer. The command is never run during production deployment.",
|
|
149
|
+
"anyOf": [
|
|
150
|
+
{
|
|
151
|
+
"type": "object",
|
|
152
|
+
"additionalProperties": false,
|
|
153
|
+
"required": ["command", "identityEmailEnvironmentVariable"],
|
|
154
|
+
"properties": {
|
|
155
|
+
"command": {
|
|
156
|
+
"type": "array",
|
|
157
|
+
"minItems": 1,
|
|
158
|
+
"maxItems": 64,
|
|
159
|
+
"items": { "type": "string", "minLength": 1, "maxLength": 1024 }
|
|
160
|
+
},
|
|
161
|
+
"identityEmailEnvironmentVariable": {
|
|
162
|
+
"type": "string",
|
|
163
|
+
"pattern": "^[A-Z][A-Z0-9_]{0,127}$",
|
|
164
|
+
"description": "Existing application-owned environment variable that receives the trusted browser probe email, for example ADMIN_EMAIL."
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
},
|
|
168
|
+
{ "type": "null" }
|
|
169
|
+
]
|
|
170
|
+
},
|
|
132
171
|
"buildKind": { "type": "string", "enum": ["container", "static"] },
|
|
133
172
|
"topology": {
|
|
134
173
|
"type": "string",
|