@brandlab-digital/conformance 1.0.0-rc.8 → 1.0.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.
Files changed (65) hide show
  1. package/dist/cli.d.ts +0 -3
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +35 -93
  4. package/dist/cli.js.map +1 -1
  5. package/dist/current-release.d.ts +3 -0
  6. package/dist/current-release.d.ts.map +1 -0
  7. package/dist/current-release.js +54 -0
  8. package/dist/current-release.js.map +1 -0
  9. package/dist/project.d.ts +19 -24
  10. package/dist/project.d.ts.map +1 -1
  11. package/dist/project.js +444 -1070
  12. package/dist/project.js.map +1 -1
  13. package/dist/release-manifest.d.ts +29 -82
  14. package/dist/release-manifest.d.ts.map +1 -1
  15. package/dist/release-manifest.js +141 -348
  16. package/dist/release-manifest.js.map +1 -1
  17. package/dist/rendered-content.d.ts +36 -0
  18. package/dist/rendered-content.d.ts.map +1 -0
  19. package/dist/rendered-content.js +146 -0
  20. package/dist/rendered-content.js.map +1 -0
  21. package/dist/verification-policy.d.ts +162 -0
  22. package/dist/verification-policy.d.ts.map +1 -0
  23. package/dist/verification-policy.js +309 -0
  24. package/dist/verification-policy.js.map +1 -0
  25. package/package.json +6 -22
  26. package/dist/legacy-architecture-contracts.d.ts +0 -31
  27. package/dist/legacy-architecture-contracts.d.ts.map +0 -1
  28. package/dist/legacy-architecture-contracts.js +0 -49
  29. package/dist/legacy-architecture-contracts.js.map +0 -1
  30. package/dist/locations.d.ts +0 -63
  31. package/dist/locations.d.ts.map +0 -1
  32. package/dist/locations.js +0 -105
  33. package/dist/locations.js.map +0 -1
  34. package/dist/project-config-v2-contract.d.ts +0 -32
  35. package/dist/project-config-v2-contract.d.ts.map +0 -1
  36. package/dist/project-config-v2-contract.js +0 -926
  37. package/dist/project-config-v2-contract.js.map +0 -1
  38. package/dist/project-config-v3.d.ts +0 -43
  39. package/dist/project-config-v3.d.ts.map +0 -1
  40. package/dist/project-config-v3.js +0 -2876
  41. package/dist/project-config-v3.js.map +0 -1
  42. package/dist/project-config.d.ts +0 -3
  43. package/dist/project-config.d.ts.map +0 -1
  44. package/dist/project-config.js +0 -3
  45. package/dist/project-config.js.map +0 -1
  46. package/dist/release-catalog.d.ts +0 -4
  47. package/dist/release-catalog.d.ts.map +0 -1
  48. package/dist/release-catalog.js +0 -714
  49. package/dist/release-catalog.js.map +0 -1
  50. package/dist/release-contract-compatibility.d.ts +0 -97
  51. package/dist/release-contract-compatibility.d.ts.map +0 -1
  52. package/dist/release-contract-compatibility.js +0 -112
  53. package/dist/release-contract-compatibility.js.map +0 -1
  54. package/dist/schema-hygiene.d.ts +0 -26
  55. package/dist/schema-hygiene.d.ts.map +0 -1
  56. package/dist/schema-hygiene.js +0 -28
  57. package/dist/schema-hygiene.js.map +0 -1
  58. package/dist/source-safety-contracts.d.ts +0 -20
  59. package/dist/source-safety-contracts.d.ts.map +0 -1
  60. package/dist/source-safety-contracts.js +0 -60
  61. package/dist/source-safety-contracts.js.map +0 -1
  62. package/dist/vitest.d.ts +0 -110
  63. package/dist/vitest.d.ts.map +0 -1
  64. package/dist/vitest.js +0 -2678
  65. package/dist/vitest.js.map +0 -1
@@ -1,5 +1,4 @@
1
1
  import { createHash } from "node:crypto";
2
- import { assertBrandlabKnownReleaseContractTuple } from "./release-contract-compatibility.js";
3
2
  export const BRANDLAB_SHARED_PACKAGE_NAMES = [
4
3
  "@brandlab-digital/site-core",
5
4
  "@brandlab-digital/site-next",
@@ -14,155 +13,47 @@ export function isBrandlabSemver(value) {
14
13
  return typeof value === "string" && SEMVER_PATTERN.test(value);
15
14
  }
16
15
  export function compareBrandlabSemver(first, second) {
17
- const firstParts = parseSemver(first);
18
- const secondParts = parseSemver(second);
16
+ const left = parseSemver(first);
17
+ const right = parseSemver(second);
19
18
  for (const key of ["major", "minor", "patch"]) {
20
- if (firstParts[key] !== secondParts[key]) {
21
- return firstParts[key] - secondParts[key];
22
- }
19
+ if (left[key] !== right[key])
20
+ return left[key] - right[key];
23
21
  }
24
- if (firstParts.prerelease.length === 0 && secondParts.prerelease.length > 0)
22
+ if (left.prerelease.length === 0 && right.prerelease.length > 0)
25
23
  return 1;
26
- if (secondParts.prerelease.length === 0 && firstParts.prerelease.length > 0)
24
+ if (right.prerelease.length === 0 && left.prerelease.length > 0)
27
25
  return -1;
28
- const length = Math.max(firstParts.prerelease.length, secondParts.prerelease.length);
26
+ const length = Math.max(left.prerelease.length, right.prerelease.length);
29
27
  for (let index = 0; index < length; index += 1) {
30
- const firstIdentifier = firstParts.prerelease[index];
31
- const secondIdentifier = secondParts.prerelease[index];
32
- if (firstIdentifier === undefined)
28
+ const a = left.prerelease[index];
29
+ const b = right.prerelease[index];
30
+ if (a === undefined)
33
31
  return -1;
34
- if (secondIdentifier === undefined)
32
+ if (b === undefined)
35
33
  return 1;
36
- if (firstIdentifier === secondIdentifier)
34
+ if (a === b)
37
35
  continue;
38
- const firstNumeric = /^\d+$/.test(firstIdentifier);
39
- const secondNumeric = /^\d+$/.test(secondIdentifier);
40
- if (firstNumeric && secondNumeric) {
41
- return Number(firstIdentifier) - Number(secondIdentifier);
42
- }
43
- if (firstNumeric)
36
+ const aNumeric = /^\d+$/.test(a);
37
+ const bNumeric = /^\d+$/.test(b);
38
+ if (aNumeric && bNumeric)
39
+ return Number(a) - Number(b);
40
+ if (aNumeric)
44
41
  return -1;
45
- if (secondNumeric)
42
+ if (bNumeric)
46
43
  return 1;
47
- return firstIdentifier.localeCompare(secondIdentifier);
44
+ return a.localeCompare(b);
48
45
  }
49
46
  return 0;
50
47
  }
51
- export function validateBrandlabReleaseManifest(input) {
52
- const manifest = asObject(input, "release manifest");
53
- if (manifest.schemaVersion !== 1)
54
- fail("schemaVersion must be 1");
55
- if (manifest.kind !== "brandlab-release-manifest") {
56
- fail("kind must be brandlab-release-manifest");
57
- }
58
- if (!isBrandlabSemver(manifest.releaseVersion))
59
- fail("releaseVersion must be valid semver");
60
- if (!isDate(manifest.releasedAt))
61
- fail("releasedAt must be an ISO date");
62
- if (!includes(["prerelease", "rc", "stable"], manifest.channel)) {
63
- fail("channel is invalid");
64
- }
65
- const packages = asObject(manifest.packages, "packages");
66
- const actualPackageNames = Object.keys(packages).sort();
67
- const expectedPackageNames = [...BRANDLAB_SHARED_PACKAGE_NAMES].sort();
68
- if (JSON.stringify(actualPackageNames) !== JSON.stringify(expectedPackageNames)) {
69
- fail("packages must contain the four Brandlab packages exactly once");
70
- }
71
- for (const packageName of BRANDLAB_SHARED_PACKAGE_NAMES) {
72
- const packageEntry = asObject(packages[packageName], `packages.${packageName}`);
73
- if (packageEntry.version !== manifest.releaseVersion) {
74
- fail(`${packageName} must use the lockstep releaseVersion`);
75
- }
76
- const registry = asObject(packageEntry.registry, `${packageName}.registry`);
77
- if (!includes(["verified", "published-unverified", "not-published"], registry.state)) {
78
- fail(`${packageName} registry state is invalid`);
79
- }
80
- validateOptionalDigest(registry.shasum, SHA1_PATTERN, `${packageName} registry shasum`);
81
- validateOptionalIntegrity(registry.integrity, `${packageName} registry integrity`);
82
- if (registry.state === "verified" && registry.shasum === null && registry.integrity === null) {
83
- fail(`${packageName} verified registry evidence needs a shasum or integrity`);
84
- }
85
- if (registry.state === "not-published" && (registry.shasum !== null || registry.integrity !== null)) {
86
- fail(`${packageName} cannot have registry digests while not published`);
87
- }
88
- }
89
- const runtime = asObject(manifest.runtime, "runtime");
90
- for (const field of ["next", "react", "reactDom", "node", "typescript", "packageManager"]) {
91
- if (!nonEmptyString(runtime[field]))
92
- fail(`runtime.${field} must be a non-empty string`);
93
- }
94
- if (runtime.router !== "app" || runtime.bundler !== "turbopack") {
95
- fail("runtime must use App Router and Turbopack");
96
- }
97
- if (typeof runtime.cacheComponents !== "boolean") {
98
- fail("runtime.cacheComponents must be boolean");
99
- }
100
- for (const field of ["next", "react", "reactDom", "typescript"]) {
101
- if (!isBrandlabSemver(runtime[field])) {
102
- fail(`runtime.${field} must be an exact semantic version`);
103
- }
104
- }
105
- if (!/^\d+\.x$/.test(String(runtime.node))) {
106
- fail("runtime.node must be an exact supported major line such as 24.x");
107
- }
108
- if (!/^npm@\d+\.\d+\.\d+$/.test(String(runtime.packageManager))) {
109
- fail("runtime.packageManager must be an exact npm version");
110
- }
111
- const contracts = asObject(manifest.contracts, "contracts");
112
- for (const field of ["architecture", "configuration", "contact", "seo", "analytics"]) {
113
- if (!nonEmptyString(contracts[field]))
114
- fail(`contracts.${field} must be a non-empty string`);
115
- }
116
- validateKnownReleaseContractTuple(String(manifest.releaseVersion), contracts, "release manifest");
117
- validateStringArray(manifest.capabilities, "capabilities", true);
118
- const evidence = asObject(manifest.evidence, "evidence");
119
- if (!includes(["verified", "reconstructed", "planned"], evidence.recordState)) {
120
- fail("evidence.recordState is invalid");
121
- }
122
- if (evidence.sourceCommit !== null && !SHA1_PATTERN.test(String(evidence.sourceCommit))) {
123
- fail("evidence.sourceCommit must be a full Git commit");
124
- }
125
- if (!nonEmptyString(evidence.releaseNotes))
126
- fail("evidence.releaseNotes is required");
127
- if (evidence.releaseEvidence !== null && !nonEmptyString(evidence.releaseEvidence)) {
128
- fail("evidence.releaseEvidence must be null or a non-empty path");
129
- }
130
- if (evidence.testCount !== null && (!Number.isInteger(evidence.testCount) || Number(evidence.testCount) < 0)) {
131
- fail("evidence.testCount must be null or a non-negative integer");
132
- }
133
- validateStringArray(evidence.verificationCommands, "evidence.verificationCommands", false);
134
- if (evidence.recordState === "verified" &&
135
- (evidence.sourceCommit === null || evidence.releaseEvidence === null)) {
136
- fail("verified release evidence needs a source commit and release evidence path");
137
- }
138
- if (evidence.recordState === "verified") {
139
- for (const packageName of BRANDLAB_SHARED_PACKAGE_NAMES) {
140
- const packageEntry = asObject(packages[packageName], `packages.${packageName}`);
141
- const registry = asObject(packageEntry.registry, `${packageName}.registry`);
142
- if (registry.state !== "verified") {
143
- fail("verified release evidence requires verified registry evidence for every package");
144
- }
145
- }
146
- }
147
- const fingerprints = asObject(manifest.fingerprints, "fingerprints");
148
- validateOptionalDigest(fingerprints.publicApi, SHA256_PATTERN, "fingerprints.publicApi");
149
- validateOptionalDigest(fingerprints.fixtures, SHA256_PATTERN, "fingerprints.fixtures");
150
- const rollback = asObject(manifest.rollback, "rollback");
151
- if (rollback.targetRelease !== null && !isBrandlabSemver(rollback.targetRelease)) {
152
- fail("rollback.targetRelease must be null or valid semver");
153
- }
154
- if (!nonEmptyString(rollback.strategy))
155
- fail("rollback.strategy is required");
156
- }
157
48
  export function projectBrandlabRuntimeReleaseContract(input) {
158
49
  validateBrandlabReleaseManifest(input);
159
50
  return {
160
51
  schemaVersion: "brandlab.runtime-release-contract.v1",
161
52
  kind: "brandlab-runtime-release-contract",
162
53
  releaseVersion: input.releaseVersion,
163
- packages: Object.fromEntries(BRANDLAB_SHARED_PACKAGE_NAMES.map((packageName) => [
164
- packageName,
165
- { version: input.packages[packageName].version },
54
+ packages: Object.fromEntries(BRANDLAB_SHARED_PACKAGE_NAMES.map((name) => [
55
+ name,
56
+ { version: input.packages[name].version },
166
57
  ])),
167
58
  runtime: { ...input.runtime },
168
59
  contracts: { ...input.contracts },
@@ -171,7 +62,7 @@ export function projectBrandlabRuntimeReleaseContract(input) {
171
62
  }
172
63
  export function validateBrandlabRuntimeReleaseContract(input) {
173
64
  const contract = asObject(input, "runtime release contract");
174
- validateExactKeys(contract, [
65
+ exactKeys(contract, [
175
66
  "schemaVersion",
176
67
  "kind",
177
68
  "releaseVersion",
@@ -186,214 +77,133 @@ export function validateBrandlabRuntimeReleaseContract(input) {
186
77
  if (contract.kind !== "brandlab-runtime-release-contract") {
187
78
  fail("runtime release contract kind is invalid");
188
79
  }
189
- if (!isBrandlabSemver(contract.releaseVersion)) {
190
- fail("runtime release contract releaseVersion must be valid semver");
80
+ validateReleaseVersionAndPackages(contract);
81
+ validateRuntime(contract.runtime);
82
+ validateContracts(contract.contracts);
83
+ stringArray(contract.capabilities, "capabilities", true);
84
+ }
85
+ export function validateBrandlabReleaseManifest(input) {
86
+ const manifest = asObject(input, "release manifest");
87
+ if (manifest.schemaVersion !== 1 || manifest.kind !== "brandlab-release-manifest") {
88
+ fail("release manifest schema is invalid");
89
+ }
90
+ if (!isDate(manifest.releasedAt))
91
+ fail("releasedAt must be an ISO date");
92
+ if (!includes(["prerelease", "rc", "stable"], manifest.channel)) {
93
+ fail("channel is invalid");
94
+ }
95
+ validateReleaseVersionAndPackages(manifest, true);
96
+ validateRuntime(manifest.runtime);
97
+ validateContracts(manifest.contracts);
98
+ stringArray(manifest.capabilities, "capabilities", true);
99
+ const evidence = asObject(manifest.evidence, "evidence");
100
+ if (!includes(["verified", "reconstructed", "planned"], evidence.recordState)) {
101
+ fail("evidence.recordState is invalid");
191
102
  }
192
- const packages = asObject(contract.packages, "runtime release contract packages");
193
- const actualPackageNames = Object.keys(packages).sort();
194
- const expectedPackageNames = [...BRANDLAB_SHARED_PACKAGE_NAMES].sort();
195
- if (JSON.stringify(actualPackageNames) !== JSON.stringify(expectedPackageNames)) {
196
- fail("runtime release contract packages must contain the four Brandlab packages exactly once");
103
+ if (evidence.sourceCommit !== null && !SHA1_PATTERN.test(String(evidence.sourceCommit))) {
104
+ fail("evidence.sourceCommit must be a full Git commit");
197
105
  }
198
- for (const packageName of BRANDLAB_SHARED_PACKAGE_NAMES) {
199
- const packageEntry = asObject(packages[packageName], `runtime packages.${packageName}`);
200
- validateExactKeys(packageEntry, ["version"], `runtime packages.${packageName}`);
201
- if (packageEntry.version !== contract.releaseVersion) {
202
- fail(`${packageName} runtime package must use the lockstep releaseVersion`);
106
+ if (!nonEmptyString(evidence.releaseNotes))
107
+ fail("evidence.releaseNotes is required");
108
+ if (evidence.releaseEvidence !== null && !nonEmptyString(evidence.releaseEvidence)) {
109
+ fail("evidence.releaseEvidence is invalid");
110
+ }
111
+ if (evidence.testCount !== null &&
112
+ (!Number.isInteger(evidence.testCount) || Number(evidence.testCount) < 0)) {
113
+ fail("evidence.testCount is invalid");
114
+ }
115
+ stringArray(evidence.verificationCommands, "verificationCommands", false);
116
+ const fingerprints = asObject(manifest.fingerprints, "fingerprints");
117
+ optionalDigest(fingerprints.publicApi, SHA256_PATTERN, "public API fingerprint");
118
+ optionalDigest(fingerprints.fixtures, SHA256_PATTERN, "fixture fingerprint");
119
+ const rollback = asObject(manifest.rollback, "rollback");
120
+ if (rollback.targetRelease !== null && !isBrandlabSemver(rollback.targetRelease)) {
121
+ fail("rollback.targetRelease is invalid");
122
+ }
123
+ if (!nonEmptyString(rollback.strategy))
124
+ fail("rollback.strategy is required");
125
+ }
126
+ export function digestBrandlabAuthority(value) {
127
+ return createHash("sha256").update(stableStringify(value)).digest("hex");
128
+ }
129
+ function validateReleaseVersionAndPackages(record, withRegistry = false) {
130
+ if (!isBrandlabSemver(record.releaseVersion))
131
+ fail("releaseVersion is invalid");
132
+ const packages = asObject(record.packages, "packages");
133
+ if (JSON.stringify(Object.keys(packages).sort()) !==
134
+ JSON.stringify([...BRANDLAB_SHARED_PACKAGE_NAMES].sort())) {
135
+ fail("packages must contain the four Brandlab packages");
136
+ }
137
+ for (const name of BRANDLAB_SHARED_PACKAGE_NAMES) {
138
+ const entry = asObject(packages[name], `packages.${name}`);
139
+ if (entry.version !== record.releaseVersion) {
140
+ fail(`${name} must use the lockstep releaseVersion`);
141
+ }
142
+ if (!withRegistry) {
143
+ exactKeys(entry, ["version"], `packages.${name}`);
144
+ continue;
145
+ }
146
+ const registry = asObject(entry.registry, `${name}.registry`);
147
+ if (!includes(["verified", "published-unverified", "not-published"], registry.state)) {
148
+ fail(`${name} registry state is invalid`);
149
+ }
150
+ optionalDigest(registry.shasum, SHA1_PATTERN, `${name} shasum`);
151
+ if (registry.integrity !== null &&
152
+ (typeof registry.integrity !== "string" ||
153
+ !/^sha512-[A-Za-z0-9+/=]+$/.test(registry.integrity))) {
154
+ fail(`${name} integrity is invalid`);
155
+ }
156
+ if (registry.state === "verified" &&
157
+ registry.shasum === null &&
158
+ registry.integrity === null) {
159
+ fail(`${name} verified registry evidence is empty`);
203
160
  }
204
161
  }
205
- const runtime = asObject(contract.runtime, "runtime release contract runtime");
206
- validateExactKeys(runtime, [
162
+ }
163
+ function validateRuntime(value) {
164
+ const runtime = asObject(value, "runtime");
165
+ for (const field of [
207
166
  "next",
208
167
  "react",
209
168
  "reactDom",
210
169
  "node",
211
170
  "typescript",
212
171
  "packageManager",
213
- "router",
214
- "bundler",
215
- "cacheComponents",
216
- ], "runtime release contract runtime");
217
- for (const field of ["next", "react", "reactDom", "node", "typescript", "packageManager"]) {
172
+ ]) {
218
173
  if (!nonEmptyString(runtime[field]))
219
- fail(`runtime contract ${field} must be a non-empty string`);
220
- }
221
- if (runtime.router !== "app" || runtime.bundler !== "turbopack") {
222
- fail("runtime release contract must use App Router and Turbopack");
223
- }
224
- if (typeof runtime.cacheComponents !== "boolean") {
225
- fail("runtime release contract cacheComponents must be boolean");
174
+ fail(`runtime.${field} is required`);
226
175
  }
227
176
  for (const field of ["next", "react", "reactDom", "typescript"]) {
228
- if (!isBrandlabSemver(runtime[field])) {
229
- fail(`runtime contract ${field} must be an exact semantic version`);
230
- }
177
+ if (!isBrandlabSemver(runtime[field]))
178
+ fail(`runtime.${field} must be exact semver`);
231
179
  }
232
- if (!/^\d+\.x$/.test(String(runtime.node))) {
233
- fail("runtime contract node must be an exact supported major line such as 24.x");
180
+ if (runtime.sharp !== undefined && !isBrandlabSemver(runtime.sharp)) {
181
+ fail("runtime.sharp must be exact semver");
234
182
  }
183
+ if (!/^\d+\.x$/.test(String(runtime.node)))
184
+ fail("runtime.node is invalid");
235
185
  if (!/^npm@\d+\.\d+\.\d+$/.test(String(runtime.packageManager))) {
236
- fail("runtime contract packageManager must be an exact npm version");
186
+ fail("runtime.packageManager is invalid");
187
+ }
188
+ if (runtime.router !== "app" ||
189
+ runtime.bundler !== "turbopack" ||
190
+ typeof runtime.cacheComponents !== "boolean") {
191
+ fail("runtime architecture is invalid");
237
192
  }
238
- const contracts = asObject(contract.contracts, "runtime release contract contracts");
239
- validateExactKeys(contracts, [
193
+ }
194
+ function validateContracts(value) {
195
+ const contracts = asObject(value, "contracts");
196
+ for (const field of [
240
197
  "architecture",
241
198
  "configuration",
242
199
  "contact",
243
200
  "seo",
244
201
  "analytics",
245
- ], "runtime release contract contracts");
246
- for (const field of ["architecture", "configuration", "contact", "seo", "analytics"]) {
247
- if (!nonEmptyString(contracts[field]))
248
- fail(`runtime contract ${field} must be a non-empty string`);
249
- }
250
- validateKnownReleaseContractTuple(String(contract.releaseVersion), contracts, "runtime release contract");
251
- validateStringArray(contract.capabilities, "runtime release contract capabilities", true);
252
- }
253
- export function validateBrandlabReleaseCatalog(manifests) {
254
- const versions = new Set();
255
- let previousVersion = null;
256
- for (const manifest of manifests) {
257
- validateBrandlabReleaseManifest(manifest);
258
- if (versions.has(manifest.releaseVersion)) {
259
- fail(`duplicate release manifest ${manifest.releaseVersion}`);
260
- }
261
- if (previousVersion !== null &&
262
- compareBrandlabSemver(previousVersion, manifest.releaseVersion) >= 0) {
263
- fail("release catalog must be in ascending semver order");
264
- }
265
- versions.add(manifest.releaseVersion);
266
- previousVersion = manifest.releaseVersion;
267
- }
268
- }
269
- export function validateBrandlabRuntimeReleaseCatalog(contracts) {
270
- const versions = new Set();
271
- let previousVersion = null;
272
- for (const contract of contracts) {
273
- validateBrandlabRuntimeReleaseContract(contract);
274
- if (versions.has(contract.releaseVersion)) {
275
- fail(`duplicate runtime release contract ${contract.releaseVersion}`);
276
- }
277
- if (previousVersion !== null &&
278
- compareBrandlabSemver(previousVersion, contract.releaseVersion) >= 0) {
279
- fail("runtime release catalog must be in ascending semver order");
280
- }
281
- versions.add(contract.releaseVersion);
282
- previousVersion = contract.releaseVersion;
283
- }
284
- }
285
- export function validateBrandlabRuntimeReleaseCatalogAgainstManifests(contracts, manifests) {
286
- validateBrandlabRuntimeReleaseCatalog(contracts);
287
- validateBrandlabReleaseCatalog(manifests);
288
- const projected = manifests.map(projectBrandlabRuntimeReleaseContract);
289
- if (stableStringify(contracts) !== stableStringify(projected)) {
290
- fail("runtime release catalog differs from the external full release manifests");
291
- }
292
- }
293
- /**
294
- * Validate a control-plane attestation subset against the package-embedded
295
- * runtime catalog. Operational callers need only load the immutable manifests
296
- * referenced by current support policy; planned and unsupported releases stay
297
- * outside that trust decision.
298
- */
299
- export function validateBrandlabRuntimeReleaseManifestSubsetAgainstCatalog(contracts, manifests) {
300
- validateBrandlabRuntimeReleaseCatalog(contracts);
301
- validateBrandlabReleaseCatalog(manifests);
302
- const contractByVersion = new Map(contracts.map((contract) => [
303
- contract.releaseVersion,
304
- contract,
305
- ]));
306
- for (const manifest of manifests) {
307
- const contract = contractByVersion.get(manifest.releaseVersion);
308
- if (!contract) {
309
- fail(`external release manifest ${manifest.releaseVersion} has no embedded runtime contract`);
310
- }
311
- const projected = projectBrandlabRuntimeReleaseContract(manifest);
312
- if (stableStringify(contract) !== stableStringify(projected)) {
313
- fail(`runtime release contract ${manifest.releaseVersion} differs from its external full release manifest`);
314
- }
315
- }
316
- }
317
- export function validateBrandlabSupportPolicy(input, releasesWithContracts) {
318
- const policy = asObject(input, "support policy");
319
- if (policy.schemaVersion !== 3)
320
- fail("support policy schemaVersion must be 3");
321
- if (policy.authorityId !== "brandlab-shared-package") {
322
- fail("support policy authorityId is invalid");
323
- }
324
- if (!isDate(policy.updatedAt))
325
- fail("support policy updatedAt must be an ISO date");
326
- const releaseByVersion = new Map(releasesWithContracts.map((release) => [release.releaseVersion, release]));
327
- const releases = asObject(policy.releases, "support policy releases");
328
- if (Object.keys(releases).length === 0)
329
- fail("support policy releases must not be empty");
330
- let currentCount = 0;
331
- for (const [version, rawRelease] of Object.entries(releases)) {
332
- if (!releaseByVersion.has(version))
333
- fail(`support policy references missing manifest ${version}`);
334
- const release = asObject(rawRelease, `support policy release ${version}`);
335
- if (!includes(["current", "tolerated", "security-blocked", "retired"], release.lifecycle)) {
336
- fail(`${version} lifecycle is invalid`);
337
- }
338
- if (release.lifecycle === "current")
339
- currentCount += 1;
340
- if (!nonEmptyString(release.manifest))
341
- fail(`${version} manifest path is required`);
342
- }
343
- if (currentCount !== 1)
344
- fail("support policy must have exactly one current release");
345
- for (const field of [
346
- "currentReleaseVersion",
347
- "defaultNewProjectVersion",
348
- "minimumSupportedVersion",
349
202
  ]) {
350
- if (!isBrandlabSemver(policy[field]) || !releases[String(policy[field])]) {
351
- fail(`${field} must reference a release`);
352
- }
353
- }
354
- const current = asObject(releases[String(policy.currentReleaseVersion)], "current release");
355
- if (current.lifecycle !== "current")
356
- fail("currentReleaseVersion must have current lifecycle");
357
- for (const field of ["defaultNewProjectVersion", "minimumSupportedVersion"]) {
358
- const release = asObject(releases[String(policy[field])], field);
359
- if (release.lifecycle !== "current" && release.lifecycle !== "tolerated") {
360
- fail(`${field} must reference a current or tolerated release`);
361
- }
362
- }
363
- const channels = asObject(policy.channels, "channels");
364
- for (const [channel, version] of Object.entries(channels)) {
365
- if (!nonEmptyString(channel) || typeof version !== "string" || !releases[version]) {
366
- fail(`channel ${channel} must reference a known release`);
367
- }
368
- }
369
- const projectPolicies = asObject(policy.projectPolicies, "projectPolicies");
370
- for (const [projectId, rawProjectPolicy] of Object.entries(projectPolicies)) {
371
- const projectPolicy = asObject(rawProjectPolicy, `project policy ${projectId}`);
372
- if (!releases[String(projectPolicy.maximumVersion)]) {
373
- fail(`${projectId} maximumVersion must reference a release`);
374
- }
375
- if (projectPolicy.approvedBy !== "owner")
376
- fail(`${projectId} must be owner-approved`);
377
- for (const field of ["effectiveAt", "nextReviewAt"]) {
378
- if (!isDate(projectPolicy[field]))
379
- fail(`${projectId} ${field} must be an ISO date`);
380
- }
381
- for (const field of [
382
- "decision",
383
- "sourceReference",
384
- "rationale",
385
- "riskAcceptance",
386
- "securityOverride",
387
- "reviewTrigger",
388
- ]) {
389
- if (!nonEmptyString(projectPolicy[field]))
390
- fail(`${projectId} ${field} is required`);
391
- }
203
+ if (!nonEmptyString(contracts[field]))
204
+ fail(`contracts.${field} is required`);
392
205
  }
393
206
  }
394
- export function digestBrandlabAuthority(value) {
395
- return createHash("sha256").update(stableStringify(value)).digest("hex");
396
- }
397
207
  function parseSemver(value) {
398
208
  const match = value.match(SEMVER_PATTERN);
399
209
  if (!match)
@@ -410,7 +220,7 @@ function stableStringify(value) {
410
220
  return `[${value.map(stableStringify).join(",")}]`;
411
221
  if (value && typeof value === "object") {
412
222
  return `{${Object.entries(value)
413
- .sort(([first], [second]) => first.localeCompare(second))
223
+ .sort(([a], [b]) => a.localeCompare(b))
414
224
  .map(([key, child]) => `${JSON.stringify(key)}:${stableStringify(child)}`)
415
225
  .join(",")}}`;
416
226
  }
@@ -422,52 +232,35 @@ function asObject(value, label) {
422
232
  }
423
233
  return value;
424
234
  }
425
- function validateExactKeys(value, expected, label) {
426
- const actual = Object.keys(value).sort();
427
- const sortedExpected = [...expected].sort();
428
- if (JSON.stringify(actual) !== JSON.stringify(sortedExpected)) {
235
+ function exactKeys(value, keys, label) {
236
+ if (JSON.stringify(Object.keys(value).sort()) !== JSON.stringify([...keys].sort())) {
429
237
  fail(`${label} contains unsupported fields`);
430
238
  }
431
239
  }
432
- function isDate(value) {
433
- if (typeof value !== "string" || !DATE_PATTERN.test(value))
434
- return false;
435
- const parsed = new Date(`${value}T00:00:00.000Z`);
436
- return Number.isFinite(parsed.valueOf()) && parsed.toISOString().startsWith(value);
437
- }
438
- function nonEmptyString(value) {
439
- return typeof value === "string" && value.trim().length > 0;
440
- }
441
- function includes(values, value) {
442
- return typeof value === "string" && values.includes(value);
443
- }
444
- function validateStringArray(value, label, unique) {
240
+ function stringArray(value, label, unique) {
445
241
  if (!Array.isArray(value) || value.some((entry) => !nonEmptyString(entry))) {
446
- fail(`${label} must be an array of non-empty strings`);
242
+ fail(`${label} must be an array of strings`);
447
243
  }
448
244
  if (unique && new Set(value).size !== value.length)
449
245
  fail(`${label} must be unique`);
450
246
  }
451
- function validateOptionalDigest(value, pattern, label) {
247
+ function optionalDigest(value, pattern, label) {
452
248
  if (value !== null && (typeof value !== "string" || !pattern.test(value))) {
453
249
  fail(`${label} is invalid`);
454
250
  }
455
251
  }
456
- function validateOptionalIntegrity(value, label) {
457
- if (value !== null && (typeof value !== "string" || !/^sha512-[A-Za-z0-9+/=]+$/.test(value))) {
458
- fail(`${label} is invalid`);
459
- }
252
+ function isDate(value) {
253
+ if (typeof value !== "string" || !DATE_PATTERN.test(value))
254
+ return false;
255
+ return new Date(`${value}T00:00:00.000Z`).toISOString().startsWith(value);
460
256
  }
461
- function validateKnownReleaseContractTuple(releaseVersion, contracts, context) {
462
- try {
463
- assertBrandlabKnownReleaseContractTuple(releaseVersion, contracts, context);
464
- }
465
- catch (error) {
466
- const detail = error instanceof Error ? error.message : String(error);
467
- fail(detail);
468
- }
257
+ function nonEmptyString(value) {
258
+ return typeof value === "string" && value.trim().length > 0;
259
+ }
260
+ function includes(values, value) {
261
+ return typeof value === "string" && values.includes(value);
469
262
  }
470
263
  function fail(message) {
471
- throw new Error(`Invalid Brandlab release authority: ${message}.`);
264
+ throw new Error(`Invalid Brandlab release: ${message}.`);
472
265
  }
473
266
  //# sourceMappingURL=release-manifest.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"release-manifest.js","sourceRoot":"","sources":["../src/release-manifest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"release-manifest.js","sourceRoot":"","sources":["../src/release-manifest.ts"],"names":[],"mappings":"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"}