@xemahq/xema 0.33.4 → 0.33.6
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.
|
@@ -2203,229 +2203,229 @@
|
|
|
2203
2203
|
},
|
|
2204
2204
|
{
|
|
2205
2205
|
"package": "@xemahq/xema",
|
|
2206
|
-
"version": "0.33.
|
|
2206
|
+
"version": "0.33.6",
|
|
2207
2207
|
"path": "edition/adapter-host-versions.mjs",
|
|
2208
2208
|
"sha256": "sha256:1b7ebd3592f4da1225fba74aaba912e7d85fbceeb1626f7dcdac83491cbb4d69"
|
|
2209
2209
|
},
|
|
2210
2210
|
{
|
|
2211
2211
|
"package": "@xemahq/xema",
|
|
2212
|
-
"version": "0.33.
|
|
2212
|
+
"version": "0.33.6",
|
|
2213
2213
|
"path": "edition/authorization-base.mjs",
|
|
2214
2214
|
"sha256": "sha256:bbeac7ff01376cb89ed2140526d4795d8e559b3f01612b404a701f19aaa24c6a"
|
|
2215
2215
|
},
|
|
2216
2216
|
{
|
|
2217
2217
|
"package": "@xemahq/xema",
|
|
2218
|
-
"version": "0.33.
|
|
2218
|
+
"version": "0.33.6",
|
|
2219
2219
|
"path": "edition/build-ledger.mjs",
|
|
2220
2220
|
"sha256": "sha256:05202cbdd606aee086c8e9c62d28be68c429653a8b1d73a289ed0fe4ff14da85"
|
|
2221
2221
|
},
|
|
2222
2222
|
{
|
|
2223
2223
|
"package": "@xemahq/xema",
|
|
2224
|
-
"version": "0.33.
|
|
2224
|
+
"version": "0.33.6",
|
|
2225
2225
|
"path": "edition/connector-source-authority.mjs",
|
|
2226
2226
|
"sha256": "sha256:ea94475f4324737673accd7de1303c44db1cbc4dac61a865a06cd83abe310164"
|
|
2227
2227
|
},
|
|
2228
2228
|
{
|
|
2229
2229
|
"package": "@xemahq/xema",
|
|
2230
|
-
"version": "0.33.
|
|
2230
|
+
"version": "0.33.6",
|
|
2231
2231
|
"path": "edition/distribution-paths.mjs",
|
|
2232
2232
|
"sha256": "sha256:d78a5c8405bc6c25d36fcec61b0030e1fdacac7d528e698adb96f906f4b70279"
|
|
2233
2233
|
},
|
|
2234
2234
|
{
|
|
2235
2235
|
"package": "@xemahq/xema",
|
|
2236
|
-
"version": "0.33.
|
|
2236
|
+
"version": "0.33.6",
|
|
2237
2237
|
"path": "edition/edition-artifact.mjs",
|
|
2238
2238
|
"sha256": "sha256:e8a391938c88398f63f86fdf413582d3a18eb20c219784a01fa84794bbd22e38"
|
|
2239
2239
|
},
|
|
2240
2240
|
{
|
|
2241
2241
|
"package": "@xemahq/xema",
|
|
2242
|
-
"version": "0.33.
|
|
2242
|
+
"version": "0.33.6",
|
|
2243
2243
|
"path": "edition/edition-channel.mjs",
|
|
2244
2244
|
"sha256": "sha256:3c0c1564dc50be133cad500452d953353aa5beb703142c05a17bbce8175ba9f3"
|
|
2245
2245
|
},
|
|
2246
2246
|
{
|
|
2247
2247
|
"package": "@xemahq/xema",
|
|
2248
|
-
"version": "0.33.
|
|
2248
|
+
"version": "0.33.6",
|
|
2249
2249
|
"path": "edition/edition-chart-set.mjs",
|
|
2250
2250
|
"sha256": "sha256:cea98292ffc8bfe2afcc01f327172bc9071a83ef9b62a4e56236f2029d2699a9"
|
|
2251
2251
|
},
|
|
2252
2252
|
{
|
|
2253
2253
|
"package": "@xemahq/xema",
|
|
2254
|
-
"version": "0.33.
|
|
2254
|
+
"version": "0.33.6",
|
|
2255
2255
|
"path": "edition/edition-config.mjs",
|
|
2256
2256
|
"sha256": "sha256:e3997bd9a0082e02d01760868b2a4f41ed3081e904126b30fdf86e7938dc6137"
|
|
2257
2257
|
},
|
|
2258
2258
|
{
|
|
2259
2259
|
"package": "@xemahq/xema",
|
|
2260
|
-
"version": "0.33.
|
|
2260
|
+
"version": "0.33.6",
|
|
2261
2261
|
"path": "edition/edition-constants.mjs",
|
|
2262
2262
|
"sha256": "sha256:71ae51028847ab3430ffec9b229b0516a7705b75a6de1fcfa665f5e1abf8e9bb"
|
|
2263
2263
|
},
|
|
2264
2264
|
{
|
|
2265
2265
|
"package": "@xemahq/xema",
|
|
2266
|
-
"version": "0.33.
|
|
2266
|
+
"version": "0.33.6",
|
|
2267
2267
|
"path": "edition/edition-contract-parse.mjs",
|
|
2268
2268
|
"sha256": "sha256:c575e96b70bda82899931eb0b18567988e2e13e664fa498bcbef96b571dcabb4"
|
|
2269
2269
|
},
|
|
2270
2270
|
{
|
|
2271
2271
|
"package": "@xemahq/xema",
|
|
2272
|
-
"version": "0.33.
|
|
2272
|
+
"version": "0.33.6",
|
|
2273
2273
|
"path": "edition/edition-contract.json",
|
|
2274
2274
|
"sha256": "sha256:aa1a05f1728813a7bdb1e02d9305e9adf641d695e6767305210c67a1d81b38a7"
|
|
2275
2275
|
},
|
|
2276
2276
|
{
|
|
2277
2277
|
"package": "@xemahq/xema",
|
|
2278
|
-
"version": "0.33.
|
|
2278
|
+
"version": "0.33.6",
|
|
2279
2279
|
"path": "edition/edition-protocol.mjs",
|
|
2280
2280
|
"sha256": "sha256:2940a0ee8662970722aa2618a1635f8d5b4f5e54b85f09667f71ccf7c2c81b03"
|
|
2281
2281
|
},
|
|
2282
2282
|
{
|
|
2283
2283
|
"package": "@xemahq/xema",
|
|
2284
|
-
"version": "0.33.
|
|
2284
|
+
"version": "0.33.6",
|
|
2285
2285
|
"path": "edition/edition-source-pins.mjs",
|
|
2286
2286
|
"sha256": "sha256:b2190ace174a29875e2a9bd7209460b0ef6de186aca9b31bcd45dc17af57c1ba"
|
|
2287
2287
|
},
|
|
2288
2288
|
{
|
|
2289
2289
|
"package": "@xemahq/xema",
|
|
2290
|
-
"version": "0.33.
|
|
2290
|
+
"version": "0.33.6",
|
|
2291
2291
|
"path": "edition/edition-workspace.mjs",
|
|
2292
2292
|
"sha256": "sha256:f7267e93fd7dc07cf65fb8cac2c4439d28a72c1e0acbdeca1648c6859440eb32"
|
|
2293
2293
|
},
|
|
2294
2294
|
{
|
|
2295
2295
|
"package": "@xemahq/xema",
|
|
2296
|
-
"version": "0.33.
|
|
2296
|
+
"version": "0.33.6",
|
|
2297
2297
|
"path": "edition/evidence-checkout.mjs",
|
|
2298
2298
|
"sha256": "sha256:31fb669769b31de4c6f2b2501bb96959548172ef166e7568edbbfed7f5079a11"
|
|
2299
2299
|
},
|
|
2300
2300
|
{
|
|
2301
2301
|
"package": "@xemahq/xema",
|
|
2302
|
-
"version": "0.33.
|
|
2302
|
+
"version": "0.33.6",
|
|
2303
2303
|
"path": "edition/evidence-grammars.mjs",
|
|
2304
2304
|
"sha256": "sha256:4dae22b61ade99219a482b971c9780d68a3d37d021e39cdfe860b245364b8b9f"
|
|
2305
2305
|
},
|
|
2306
2306
|
{
|
|
2307
2307
|
"package": "@xemahq/xema",
|
|
2308
|
-
"version": "0.33.
|
|
2308
|
+
"version": "0.33.6",
|
|
2309
2309
|
"path": "edition/evidence-trust-pin.mjs",
|
|
2310
2310
|
"sha256": "sha256:b9dd5c01903394436530783614efb0cd357d982ed2befd844a39328479773cbc"
|
|
2311
2311
|
},
|
|
2312
2312
|
{
|
|
2313
2313
|
"package": "@xemahq/xema",
|
|
2314
|
-
"version": "0.33.
|
|
2314
|
+
"version": "0.33.6",
|
|
2315
2315
|
"path": "edition/git-json.mjs",
|
|
2316
2316
|
"sha256": "sha256:d0d25cda0c19007becabc9a2827c3dcf759b295cd0b41596eb4480c9549a1f21"
|
|
2317
2317
|
},
|
|
2318
2318
|
{
|
|
2319
2319
|
"package": "@xemahq/xema",
|
|
2320
|
-
"version": "0.33.
|
|
2320
|
+
"version": "0.33.6",
|
|
2321
2321
|
"path": "edition/image-delivery-entitlement-descriptor.mjs",
|
|
2322
2322
|
"sha256": "sha256:4726b66116f01bf2523fafe2b7a356591eca8fb5ca6bd8b154dd4821873e921b"
|
|
2323
2323
|
},
|
|
2324
2324
|
{
|
|
2325
2325
|
"package": "@xemahq/xema",
|
|
2326
|
-
"version": "0.33.
|
|
2326
|
+
"version": "0.33.6",
|
|
2327
2327
|
"path": "edition/image-evidence-replay-state.mjs",
|
|
2328
2328
|
"sha256": "sha256:eba0cf1d38af0ab2f00c5099fa8bc2edc543136ce92f895544d4d284b3d6af0f"
|
|
2329
2329
|
},
|
|
2330
2330
|
{
|
|
2331
2331
|
"package": "@xemahq/xema",
|
|
2332
|
-
"version": "0.33.
|
|
2332
|
+
"version": "0.33.6",
|
|
2333
2333
|
"path": "edition/image-evidence.mjs",
|
|
2334
2334
|
"sha256": "sha256:09945712ecc6524d5f52cfd82141ef4cade45be35210777f6e32818792068881"
|
|
2335
2335
|
},
|
|
2336
2336
|
{
|
|
2337
2337
|
"package": "@xemahq/xema",
|
|
2338
|
-
"version": "0.33.
|
|
2338
|
+
"version": "0.33.6",
|
|
2339
2339
|
"path": "edition/kernel-capability-domain.mjs",
|
|
2340
2340
|
"sha256": "sha256:3ecf887dd8d399e91a8285f6f115f6e418fb59bbf3f004539fe65ec667219356"
|
|
2341
2341
|
},
|
|
2342
2342
|
{
|
|
2343
2343
|
"package": "@xemahq/xema",
|
|
2344
|
-
"version": "0.33.
|
|
2344
|
+
"version": "0.33.6",
|
|
2345
2345
|
"path": "edition/kernel-contract-authority.mjs",
|
|
2346
2346
|
"sha256": "sha256:20abdde62a7b037c01ea9bbe1ff1e6094e6b0efd0add2f656f1938a04409bf82"
|
|
2347
2347
|
},
|
|
2348
2348
|
{
|
|
2349
2349
|
"package": "@xemahq/xema",
|
|
2350
|
-
"version": "0.33.
|
|
2350
|
+
"version": "0.33.6",
|
|
2351
2351
|
"path": "edition/lib.mjs",
|
|
2352
2352
|
"sha256": "sha256:0e9045632a14cb1a035bce7aac3ad26e7b2211daa3f9c2cd27a55dfd772e3b6b"
|
|
2353
2353
|
},
|
|
2354
2354
|
{
|
|
2355
2355
|
"package": "@xemahq/xema",
|
|
2356
|
-
"version": "0.33.
|
|
2356
|
+
"version": "0.33.6",
|
|
2357
2357
|
"path": "edition/no-follow-file.mjs",
|
|
2358
2358
|
"sha256": "sha256:c17bdf5e441f3c079aa06d4b48bbed05cad087855b9ad2a5e6dc43d5ee2b17c3"
|
|
2359
2359
|
},
|
|
2360
2360
|
{
|
|
2361
2361
|
"package": "@xemahq/xema",
|
|
2362
|
-
"version": "0.33.
|
|
2362
|
+
"version": "0.33.6",
|
|
2363
2363
|
"path": "edition/operation-requirements.mjs",
|
|
2364
2364
|
"sha256": "sha256:ffe6fdc9da6b2974270fc86c11be0c41d0bc6d85c8e3c137d3c3bc00a72fc4f6"
|
|
2365
2365
|
},
|
|
2366
2366
|
{
|
|
2367
2367
|
"package": "@xemahq/xema",
|
|
2368
|
-
"version": "0.33.
|
|
2368
|
+
"version": "0.33.6",
|
|
2369
2369
|
"path": "edition/pin-source.mjs",
|
|
2370
2370
|
"sha256": "sha256:fbaa6dffbdf4a262a13127bcf37bca791234fae74e327ac250e56ff4b78c1244"
|
|
2371
2371
|
},
|
|
2372
2372
|
{
|
|
2373
2373
|
"package": "@xemahq/xema",
|
|
2374
|
-
"version": "0.33.
|
|
2374
|
+
"version": "0.33.6",
|
|
2375
2375
|
"path": "edition/source-authority.mjs",
|
|
2376
2376
|
"sha256": "sha256:858b607dde94e2abd00a341f569e18cfa567d4bff139c64a2d60abbb7de4c85e"
|
|
2377
2377
|
},
|
|
2378
2378
|
{
|
|
2379
2379
|
"package": "@xemahq/xema",
|
|
2380
|
-
"version": "0.33.
|
|
2380
|
+
"version": "0.33.6",
|
|
2381
2381
|
"path": "edition/strict-json.mjs",
|
|
2382
2382
|
"sha256": "sha256:f95778396df7f38b086f55d2ec4f3b6644a8aeff2b32282a62829145fb544562"
|
|
2383
2383
|
},
|
|
2384
2384
|
{
|
|
2385
2385
|
"package": "@xemahq/xema",
|
|
2386
|
-
"version": "0.33.
|
|
2386
|
+
"version": "0.33.6",
|
|
2387
2387
|
"path": "edition/string-order.mjs",
|
|
2388
2388
|
"sha256": "sha256:b3210cd273e4b2e01fb8b1a91e28734cd211d4010c080d0ce95f5e5ff631cffb"
|
|
2389
2389
|
},
|
|
2390
2390
|
{
|
|
2391
2391
|
"package": "@xemahq/xema",
|
|
2392
|
-
"version": "0.33.
|
|
2392
|
+
"version": "0.33.6",
|
|
2393
2393
|
"path": "edition/trusted-executable.mjs",
|
|
2394
2394
|
"sha256": "sha256:37d46cdbc999ddd55d4ea8aeed4850ddd1efde89ed7b532f5a2ddec87105d796"
|
|
2395
2395
|
},
|
|
2396
2396
|
{
|
|
2397
2397
|
"package": "@xemahq/xema",
|
|
2398
|
-
"version": "0.33.
|
|
2398
|
+
"version": "0.33.6",
|
|
2399
2399
|
"path": "edition/verifier-binding.mjs",
|
|
2400
2400
|
"sha256": "sha256:80732658617f5255258c538eeb2383331ec8553b44b58d552b567845a7b916aa"
|
|
2401
2401
|
},
|
|
2402
2402
|
{
|
|
2403
2403
|
"package": "@xemahq/xema",
|
|
2404
|
-
"version": "0.33.
|
|
2404
|
+
"version": "0.33.6",
|
|
2405
2405
|
"path": "edition/verifier-files.mjs",
|
|
2406
2406
|
"sha256": "sha256:cdd14a20a63f0f194a8abb55680a5a7e3ced1f09f8b210a90d349e655f6de0c0"
|
|
2407
2407
|
},
|
|
2408
2408
|
{
|
|
2409
2409
|
"package": "@xemahq/xema",
|
|
2410
|
-
"version": "0.33.
|
|
2410
|
+
"version": "0.33.6",
|
|
2411
2411
|
"path": "edition/verifier-provenance.mjs",
|
|
2412
2412
|
"sha256": "sha256:3e2fb8e07cf1f66b8ad6c7ac2555fe3af64ec7abeb07cecbaf1939a18c2b3663"
|
|
2413
2413
|
},
|
|
2414
2414
|
{
|
|
2415
2415
|
"package": "@xemahq/xema",
|
|
2416
|
-
"version": "0.33.
|
|
2416
|
+
"version": "0.33.6",
|
|
2417
2417
|
"path": "edition/verify-image-evidence.mjs",
|
|
2418
2418
|
"sha256": "sha256:62f83f8bb835f360535402d12657156d2c9d6e651b426c2b30a04a2dc2f8d3e8"
|
|
2419
2419
|
},
|
|
2420
2420
|
{
|
|
2421
2421
|
"package": "@xemahq/xema",
|
|
2422
|
-
"version": "0.33.
|
|
2422
|
+
"version": "0.33.6",
|
|
2423
2423
|
"path": "edition/workspace-sections.mjs",
|
|
2424
2424
|
"sha256": "sha256:058c849767434e9ba911d9310092bede42e3ef959c75bbd35ff8879dc21ce3ff"
|
|
2425
2425
|
},
|
|
2426
2426
|
{
|
|
2427
2427
|
"package": "@xemahq/xema",
|
|
2428
|
-
"version": "0.33.
|
|
2428
|
+
"version": "0.33.6",
|
|
2429
2429
|
"path": "scripts/build-evidence-verifier.mjs",
|
|
2430
2430
|
"sha256": "sha256:5a688d20c47dc88aff37aa0c6cc02daf2c370a5bc610fef8446ce7be222d4c0b"
|
|
2431
2431
|
},
|
|
@@ -503,6 +503,15 @@ export function lockedSdkVersions({ repoRoot = sourcesRoot(), repo, commit }) {
|
|
|
503
503
|
return [...versions].sort();
|
|
504
504
|
}
|
|
505
505
|
|
|
506
|
+
/**
|
|
507
|
+
* Does comment-blanked executable source CALL the tolerant reader? Both the source form `parseDistributionLockForReading(x)`
|
|
508
|
+
* and the compiled CommonJS form `(0, mod.parseDistributionLockForReading)(x)` are calls; a bare reference (an export, a
|
|
509
|
+
* re-export) is not, and a docblock mention is blanked before this runs.
|
|
510
|
+
*/
|
|
511
|
+
export function callsReader(executable) {
|
|
512
|
+
return /\bparseDistributionLockForReading\s*(?:\)\s*)?\(/u.test(executable);
|
|
513
|
+
}
|
|
514
|
+
|
|
506
515
|
/**
|
|
507
516
|
* Does the PUBLISHED SDK at `version` parse the lock with the kernel READER?
|
|
508
517
|
* Asked of the tarball's own executable source (comments blanked), so a
|
|
@@ -528,7 +537,7 @@ export function sdkReadsWithReader(version) {
|
|
|
528
537
|
);
|
|
529
538
|
}
|
|
530
539
|
const executable = blankAllComments(readFileSync(module, 'utf8'));
|
|
531
|
-
const readsWithReader =
|
|
540
|
+
const readsWithReader = callsReader(executable);
|
|
532
541
|
sdkModeCache.set(version, readsWithReader);
|
|
533
542
|
return readsWithReader;
|
|
534
543
|
}
|
|
@@ -470,22 +470,17 @@ function replaceLocksTogether(documents) {
|
|
|
470
470
|
}
|
|
471
471
|
|
|
472
472
|
/**
|
|
473
|
-
* The
|
|
474
|
-
*
|
|
475
|
-
*
|
|
476
|
-
* into the images lock. Each biome's `biomeContentHash` is then RECOMPUTED from
|
|
477
|
-
* its sources over that sealed images lock, and the unsealed distribution lock
|
|
478
|
-
* the resolver wrote is turned into the v5 lock by the kernel's
|
|
479
|
-
* `sealDistributionLock`. A distribution lock that is already sealed is VERIFIED
|
|
480
|
-
* instead: every hash is recomputed and a mismatch is refused, naming the biome.
|
|
481
|
-
*
|
|
482
|
-
* Nothing is written until both documents exist in memory, and the distribution
|
|
483
|
-
* lock is renamed LAST: a seal that fails for any reason before that leaves the
|
|
484
|
-
* committed pair as it was, and the one state a crash between the two renames
|
|
485
|
-
* can leave (images sealed, distribution unsealed) is refused by every reader of
|
|
486
|
-
* a sealed edition.
|
|
473
|
+
* The lock the images of an edition will actually READ, built IN MEMORY: the committed lock sealed against the image lock
|
|
474
|
+
* carrying `digests`. Nothing is written. The readability grader asks its question of THIS, never of the committed
|
|
475
|
+
* unsealed form, which every contracts reader refuses for want of a `schemaVersion` whatever the repositories do.
|
|
487
476
|
*/
|
|
488
|
-
export async function
|
|
477
|
+
export async function buildSealedEditionLock(options) {
|
|
478
|
+
const { prepared } = await prepareEditionSeal({ ...options, checkAdapters: false, check: false });
|
|
479
|
+
return prepared.result.lock;
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
/** The shared in-memory half of the seal: reads both locks, applies `digests`, seals or verifies. Writes nothing. */
|
|
483
|
+
async function prepareEditionSeal({ distributionId, root, digests = new Map(), check = false, vendoredCommit, catalogue, catalogueDigest, fetchManifest = fetchRegistryManifest, checkAdapters = true }) {
|
|
489
484
|
const schemas = await loadKernelDistributionSchemas();
|
|
490
485
|
const lockPath = join(root, distributionId, 'distribution.lock.json');
|
|
491
486
|
const imagesPath = join(root, distributionId, 'images.lock.json');
|
|
@@ -514,7 +509,7 @@ export async function sealEditionLocks({ distributionId, root, digests = new Map
|
|
|
514
509
|
const editionInputs = catalogue === undefined && vendoredCommit === undefined ? await editionPinnedInputs(distributionId, { schemas }) : undefined;
|
|
515
510
|
const pinned = vendoredCommit ?? ((repo) => createPinnedSourceAuthority({ pins: editionInputs?.repositoryPins ?? committedRepositoryPins() }).vendoredSourceCommitForRepository(repo));
|
|
516
511
|
const lockDocument = raw !== null && typeof raw === 'object' && 'unsealedSchema' in raw ? schemas.parseUnsealedDistributionLock(raw) : schemas.parseDistributionLock(raw);
|
|
517
|
-
if (lockMountsAdapters(lockDocument)) {
|
|
512
|
+
if (checkAdapters && lockMountsAdapters(lockDocument)) {
|
|
518
513
|
// The adapter host's row: the verified catalogue's for a customer, the data root's biome index for the vendor.
|
|
519
514
|
const rows = catalogue !== undefined ? catalogue.biomes : (editionInputs?.biomeIndex ?? JSON.parse(readFileSync(biomeIndexPath(), 'utf8')));
|
|
520
515
|
await assertAdapterBundlesMatchHost({ lock: lockDocument, hostRow: adapterHostRow(rows), fetchManifest });
|
|
@@ -530,6 +525,28 @@ export async function sealEditionLocks({ distributionId, root, digests = new Map
|
|
|
530
525
|
check,
|
|
531
526
|
lockPath,
|
|
532
527
|
});
|
|
528
|
+
return { prepared: { result, rawImages, applied, lockPath, imagesPath } };
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
/**
|
|
532
|
+
* The seal of one edition's two locks, as ONE write.
|
|
533
|
+
*
|
|
534
|
+
* `digests` (`kind:id` -> registry digest) are the image digests this run seals
|
|
535
|
+
* into the images lock. Each biome's `biomeContentHash` is then RECOMPUTED from
|
|
536
|
+
* its sources over that sealed images lock, and the unsealed distribution lock
|
|
537
|
+
* the resolver wrote is turned into the v5 lock by the kernel's
|
|
538
|
+
* `sealDistributionLock`. A distribution lock that is already sealed is VERIFIED
|
|
539
|
+
* instead: every hash is recomputed and a mismatch is refused, naming the biome.
|
|
540
|
+
*
|
|
541
|
+
* Nothing is written until both documents exist in memory, and the distribution
|
|
542
|
+
* lock is renamed LAST: a seal that fails for any reason before that leaves the
|
|
543
|
+
* committed pair as it was, and the one state a crash between the two renames
|
|
544
|
+
* can leave (images sealed, distribution unsealed) is refused by every reader of
|
|
545
|
+
* a sealed edition.
|
|
546
|
+
*/
|
|
547
|
+
export async function sealEditionLocks({ distributionId, root, digests = new Map(), check = false, label = 'dist:seal-digests', vendoredCommit, catalogue, catalogueDigest, fetchManifest = fetchRegistryManifest }) {
|
|
548
|
+
const { prepared } = await prepareEditionSeal({ distributionId, root, digests, check, vendoredCommit, catalogue, catalogueDigest, fetchManifest });
|
|
549
|
+
const { result, rawImages, applied, lockPath, imagesPath } = prepared;
|
|
533
550
|
replaceLocksTogether([
|
|
534
551
|
...(applied > 0 ? [{ path: imagesPath, text: `${JSON.stringify(rawImages, null, 2)}\n` }] : []),
|
|
535
552
|
...(result.sealed ? [{ path: lockPath, text: serializeJson(result.lock) }] : []),
|
|
@@ -760,10 +777,22 @@ async function main() {
|
|
|
760
777
|
//
|
|
761
778
|
// The practical rule for anything added below: the distribution lock may be
|
|
762
779
|
// regenerated to answer a question; the image lock may not.
|
|
780
|
+
const { writes, unchanged } = planDigestSeal({
|
|
781
|
+
subjects: imageLock.subjects,
|
|
782
|
+
verified: report.subjects,
|
|
783
|
+
});
|
|
784
|
+
|
|
785
|
+
const planned = new Map();
|
|
786
|
+
for (const w of writes) {planned.set(w.key, w.digest);}
|
|
763
787
|
await assertPlatformCanParseLock({
|
|
764
|
-
lock:
|
|
765
|
-
|
|
766
|
-
|
|
788
|
+
// The lock the images will READ: sealed in memory with this run's digests, never the committed unsealed form.
|
|
789
|
+
lock: await buildSealedEditionLock({
|
|
790
|
+
distributionId,
|
|
791
|
+
root,
|
|
792
|
+
digests: planned,
|
|
793
|
+
catalogue,
|
|
794
|
+
catalogueDigest,
|
|
795
|
+
}),
|
|
767
796
|
imageLock,
|
|
768
797
|
distributionId,
|
|
769
798
|
// A vendor edition grades the pins it RESOLVES at (a held repository is graded at the held commit);
|
|
@@ -774,11 +803,6 @@ async function main() {
|
|
|
774
803
|
: JSON.parse(readFileSync(runtimeImageSourceIndexPath(), 'utf8')),
|
|
775
804
|
});
|
|
776
805
|
|
|
777
|
-
const { writes, unchanged } = planDigestSeal({
|
|
778
|
-
subjects: imageLock.subjects,
|
|
779
|
-
verified: report.subjects,
|
|
780
|
-
});
|
|
781
|
-
|
|
782
806
|
const label = check ? 'dist:seal-digests --check' : 'dist:seal-digests';
|
|
783
807
|
console.log(
|
|
784
808
|
`[${label}] "${distributionId}": ${report.subjectCount} subjects verified against ` +
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xemahq/xema",
|
|
3
|
-
"version": "0.33.
|
|
3
|
+
"version": "0.33.6",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "git+https://github.com/xema-dev/xema-cli.git",
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
"@nestjs/platform-express": "^11.1.28",
|
|
52
52
|
"@xemahq/biome-sdk": "^18.1.0",
|
|
53
53
|
"@xemahq/biome-supply-chain": "^0.5.0",
|
|
54
|
-
"@xemahq/distribution-source-hash": "^0.
|
|
54
|
+
"@xemahq/distribution-source-hash": "^0.2.2",
|
|
55
55
|
"@xemahq/dsl": "^0.23.0",
|
|
56
56
|
"@xemahq/identity-client": "^0.16.0",
|
|
57
57
|
"@xemahq/contracts": "^0.80.0",
|
|
@@ -92,6 +92,6 @@
|
|
|
92
92
|
"typecheck": "tsc --noEmit"
|
|
93
93
|
},
|
|
94
94
|
"xemaRelease": {
|
|
95
|
-
"sourceDigest": "sha256:
|
|
95
|
+
"sourceDigest": "sha256:bca9f14b3a57c3f6ea1a8a66b2a5e1e78772127b6e443a820f081d35e9dfc405"
|
|
96
96
|
}
|
|
97
97
|
}
|