@xemahq/xema 0.42.0 → 0.43.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.
@@ -1 +1 @@
1
- {"version":3,"file":"edition.d.ts","sourceRoot":"","sources":["../../src/commands/edition.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2CzC,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiBtD"}
1
+ {"version":3,"file":"edition.d.ts","sourceRoot":"","sources":["../../src/commands/edition.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA6CzC,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiBtD"}
@@ -13,6 +13,7 @@ const VERB_SUMMARY = {
13
13
  [verb_map_1.EditionVerb.Catalogue]: 'Write the catalogue.json of a release offering from its committed sealed locks: xema edition catalogue <id> --out <dir>',
14
14
  [verb_map_1.EditionVerb.Index]: `Rebuild a catalogue index: xema edition index <${Object.values(verb_map_1.EditionIndexKind).join('|')}> [--check]; xema edition index runtime-image-source --repin-contract-authority --kernel-commit <40-hex> replaces only the contract authority of the committed index with the kernel checkout's at the stated commit (its HEAD must equal it)`,
15
15
  [verb_map_1.EditionVerb.Check]: 'Check the committed edition locks and catalogue indices; prints every active per-edition hold (sourcePins) with its exit condition',
16
+ [verb_map_1.EditionVerb.CheckAuthored]: 'Check the authored distribution source offline (the develop gate): the definitions, the indexes, the trust policy, the data-root readers, the chart-set pin and the ownership self-tests; resolves no edition and reads no lock content and no source checkout at a pinned commit: xema edition check-authored --data-root <dir> --editions-root <dir> --sources-root <dir> --kernel <dir>',
16
17
  [verb_map_1.EditionVerb.Why]: 'Explain why a biome is in an edition: xema edition why <id> <biome>',
17
18
  [verb_map_1.EditionVerb.VerifyPlatforms]: 'Prove the registry serves every required platform of an edition: xema edition verify-platforms <id>',
18
19
  [verb_map_1.EditionVerb.CheckoutSources]: 'Check out the source repositories the runtime image source index names',
@@ -1 +1 @@
1
- {"version":3,"file":"edition.js","sourceRoot":"","sources":["../../src/commands/edition.ts"],"names":[],"mappings":";;AA+CA,0CAiBC;AAhED,kDAA8D;AAC9D,4DAA8D;AAC9D,0DAA2H;AAW3H,MAAM,YAAY,GAA0C;IAC1D,CAAC,sBAAW,CAAC,OAAO,CAAC,EACnB,0TAA0T;IAC5T,CAAC,sBAAW,CAAC,IAAI,CAAC,EAAE,gMAAgM;IACpN,CAAC,sBAAW,CAAC,OAAO,CAAC,EAAE,oxBAAoxB;IAC3yB,CAAC,sBAAW,CAAC,OAAO,CAAC,EACnB,2lBAA2lB;IAC7lB,CAAC,sBAAW,CAAC,QAAQ,CAAC,EACpB,wNAAwN;IAC1N,CAAC,sBAAW,CAAC,SAAS,CAAC,EAAE,yHAAyH;IAClJ,CAAC,sBAAW,CAAC,KAAK,CAAC,EAAE,kDAAkD,MAAM,CAAC,MAAM,CAAC,2BAAgB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,+OAA+O;IAC/V,CAAC,sBAAW,CAAC,KAAK,CAAC,EAAE,oIAAoI;IACzJ,CAAC,sBAAW,CAAC,GAAG,CAAC,EAAE,qEAAqE;IACxF,CAAC,sBAAW,CAAC,eAAe,CAAC,EAAE,qGAAqG;IACpI,CAAC,sBAAW,CAAC,eAAe,CAAC,EAAE,wEAAwE;IACvG,CAAC,sBAAW,CAAC,kBAAkB,CAAC,EAAE,mIAAmI;IACrK,CAAC,sBAAW,CAAC,cAAc,CAAC,EAC1B,yQAAyQ;IAC3Q,CAAC,sBAAW,CAAC,QAAQ,CAAC,EAAE,+EAA+E,MAAM,CAAC,MAAM,CAAC,8BAAmB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK;IACxJ,CAAC,sBAAW,CAAC,IAAI,CAAC,EAAE,6FAA6F;IACjH,CAAC,sBAAW,CAAC,KAAK,CAAC,EAAE,6JAA6J;IAClL,CAAC,sBAAW,CAAC,QAAQ,CAAC,EAAE,gGAAgG,MAAM,CAAC,MAAM,CAAC,mCAAwB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,qKAAqK;IAC9U,CAAC,sBAAW,CAAC,cAAc,CAAC,EAC1B,6LAA6L;IAC/L,CAAC,sBAAW,CAAC,MAAM,CAAC,EAClB,yMAAyM;IAC3M,CAAC,sBAAW,CAAC,GAAG,CAAC,EACf,mWAAmW;IACrW,CAAC,sBAAW,CAAC,KAAK,CAAC,EACjB,qMAAqM;IACvM,CAAC,sBAAW,CAAC,aAAa,CAAC,EACzB,uMAAuM;CAC1M,CAAC;AAEF,SAAgB,eAAe,CAAC,OAAgB;IAC9C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAC;IACvF,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,sBAAW,CAAC,EAAE,CAAC;QAC9C,OAAO;aACJ,OAAO,CAAC,IAAI,CAAC;aACb,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;aAC/B,QAAQ,CAAC,WAAW,EAAE,0DAA0D,CAAC;aACjF,kBAAkB,EAAE;aACpB,MAAM,CAAC,CAAC,IAAc,EAAE,EAAE;YACzB,IAAI,CAAC;gBACH,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAA,0BAAc,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAChD,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACzB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAA,qBAAQ,EAAC,4BAAe,CAAC,YAAY,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACjG,CAAC;QACH,CAAC,CAAC,CAAC;IACP,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"edition.js","sourceRoot":"","sources":["../../src/commands/edition.ts"],"names":[],"mappings":";;AAiDA,0CAiBC;AAlED,kDAA8D;AAC9D,4DAA8D;AAC9D,0DAA2H;AAW3H,MAAM,YAAY,GAA0C;IAC1D,CAAC,sBAAW,CAAC,OAAO,CAAC,EACnB,0TAA0T;IAC5T,CAAC,sBAAW,CAAC,IAAI,CAAC,EAAE,gMAAgM;IACpN,CAAC,sBAAW,CAAC,OAAO,CAAC,EAAE,oxBAAoxB;IAC3yB,CAAC,sBAAW,CAAC,OAAO,CAAC,EACnB,2lBAA2lB;IAC7lB,CAAC,sBAAW,CAAC,QAAQ,CAAC,EACpB,wNAAwN;IAC1N,CAAC,sBAAW,CAAC,SAAS,CAAC,EAAE,yHAAyH;IAClJ,CAAC,sBAAW,CAAC,KAAK,CAAC,EAAE,kDAAkD,MAAM,CAAC,MAAM,CAAC,2BAAgB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,+OAA+O;IAC/V,CAAC,sBAAW,CAAC,KAAK,CAAC,EAAE,oIAAoI;IACzJ,CAAC,sBAAW,CAAC,aAAa,CAAC,EACzB,4XAA4X;IAC9X,CAAC,sBAAW,CAAC,GAAG,CAAC,EAAE,qEAAqE;IACxF,CAAC,sBAAW,CAAC,eAAe,CAAC,EAAE,qGAAqG;IACpI,CAAC,sBAAW,CAAC,eAAe,CAAC,EAAE,wEAAwE;IACvG,CAAC,sBAAW,CAAC,kBAAkB,CAAC,EAAE,mIAAmI;IACrK,CAAC,sBAAW,CAAC,cAAc,CAAC,EAC1B,yQAAyQ;IAC3Q,CAAC,sBAAW,CAAC,QAAQ,CAAC,EAAE,+EAA+E,MAAM,CAAC,MAAM,CAAC,8BAAmB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK;IACxJ,CAAC,sBAAW,CAAC,IAAI,CAAC,EAAE,6FAA6F;IACjH,CAAC,sBAAW,CAAC,KAAK,CAAC,EAAE,6JAA6J;IAClL,CAAC,sBAAW,CAAC,QAAQ,CAAC,EAAE,gGAAgG,MAAM,CAAC,MAAM,CAAC,mCAAwB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,qKAAqK;IAC9U,CAAC,sBAAW,CAAC,cAAc,CAAC,EAC1B,6LAA6L;IAC/L,CAAC,sBAAW,CAAC,MAAM,CAAC,EAClB,yMAAyM;IAC3M,CAAC,sBAAW,CAAC,GAAG,CAAC,EACf,mWAAmW;IACrW,CAAC,sBAAW,CAAC,KAAK,CAAC,EACjB,qMAAqM;IACvM,CAAC,sBAAW,CAAC,aAAa,CAAC,EACzB,uMAAuM;CAC1M,CAAC;AAEF,SAAgB,eAAe,CAAC,OAAgB;IAC9C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAC;IACvF,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,sBAAW,CAAC,EAAE,CAAC;QAC9C,OAAO;aACJ,OAAO,CAAC,IAAI,CAAC;aACb,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;aAC/B,QAAQ,CAAC,WAAW,EAAE,0DAA0D,CAAC;aACjF,kBAAkB,EAAE;aACpB,MAAM,CAAC,CAAC,IAAc,EAAE,EAAE;YACzB,IAAI,CAAC;gBACH,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAA,0BAAc,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAChD,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACzB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAA,qBAAQ,EAAC,4BAAe,CAAC,YAAY,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACjG,CAAC;QACH,CAAC,CAAC,CAAC;IACP,CAAC;AACH,CAAC"}
@@ -2419,253 +2419,253 @@
2419
2419
  },
2420
2420
  {
2421
2421
  "package": "@xemahq/xema",
2422
- "version": "0.42.0",
2422
+ "version": "0.43.0",
2423
2423
  "path": "edition/adapter-host-versions.mjs",
2424
2424
  "sha256": "sha256:1b7ebd3592f4da1225fba74aaba912e7d85fbceeb1626f7dcdac83491cbb4d69"
2425
2425
  },
2426
2426
  {
2427
2427
  "package": "@xemahq/xema",
2428
- "version": "0.42.0",
2428
+ "version": "0.43.0",
2429
2429
  "path": "edition/authorization-base.mjs",
2430
2430
  "sha256": "sha256:bbeac7ff01376cb89ed2140526d4795d8e559b3f01612b404a701f19aaa24c6a"
2431
2431
  },
2432
2432
  {
2433
2433
  "package": "@xemahq/xema",
2434
- "version": "0.42.0",
2434
+ "version": "0.43.0",
2435
2435
  "path": "edition/build-ledger.mjs",
2436
2436
  "sha256": "sha256:05202cbdd606aee086c8e9c62d28be68c429653a8b1d73a289ed0fe4ff14da85"
2437
2437
  },
2438
2438
  {
2439
2439
  "package": "@xemahq/xema",
2440
- "version": "0.42.0",
2440
+ "version": "0.43.0",
2441
2441
  "path": "edition/connector-source-authority.mjs",
2442
2442
  "sha256": "sha256:ea94475f4324737673accd7de1303c44db1cbc4dac61a865a06cd83abe310164"
2443
2443
  },
2444
2444
  {
2445
2445
  "package": "@xemahq/xema",
2446
- "version": "0.42.0",
2446
+ "version": "0.43.0",
2447
2447
  "path": "edition/dispatched-runtime-components.mjs",
2448
2448
  "sha256": "sha256:9712823d183a60108cd002b2d36a9e5c0867b9d576dd02825264a18f7b8ece69"
2449
2449
  },
2450
2450
  {
2451
2451
  "package": "@xemahq/xema",
2452
- "version": "0.42.0",
2452
+ "version": "0.43.0",
2453
2453
  "path": "edition/distribution-paths.mjs",
2454
2454
  "sha256": "sha256:d78a5c8405bc6c25d36fcec61b0030e1fdacac7d528e698adb96f906f4b70279"
2455
2455
  },
2456
2456
  {
2457
2457
  "package": "@xemahq/xema",
2458
- "version": "0.42.0",
2458
+ "version": "0.43.0",
2459
2459
  "path": "edition/edition-artifact.mjs",
2460
2460
  "sha256": "sha256:282b6d5e70736f7e41cff41167d2cd99b7d0127dcc2b712132888dcfc82e36cd"
2461
2461
  },
2462
2462
  {
2463
2463
  "package": "@xemahq/xema",
2464
- "version": "0.42.0",
2464
+ "version": "0.43.0",
2465
2465
  "path": "edition/edition-channel.mjs",
2466
2466
  "sha256": "sha256:3c0c1564dc50be133cad500452d953353aa5beb703142c05a17bbce8175ba9f3"
2467
2467
  },
2468
2468
  {
2469
2469
  "package": "@xemahq/xema",
2470
- "version": "0.42.0",
2470
+ "version": "0.43.0",
2471
2471
  "path": "edition/edition-chart-set.mjs",
2472
2472
  "sha256": "sha256:f9f16b58279c8c2619a39c5cc92bdbc334543d1a324304cd5d3b120d66dc8f3a"
2473
2473
  },
2474
2474
  {
2475
2475
  "package": "@xemahq/xema",
2476
- "version": "0.42.0",
2476
+ "version": "0.43.0",
2477
2477
  "path": "edition/edition-config.mjs",
2478
2478
  "sha256": "sha256:e3997bd9a0082e02d01760868b2a4f41ed3081e904126b30fdf86e7938dc6137"
2479
2479
  },
2480
2480
  {
2481
2481
  "package": "@xemahq/xema",
2482
- "version": "0.42.0",
2482
+ "version": "0.43.0",
2483
2483
  "path": "edition/edition-constants.mjs",
2484
2484
  "sha256": "sha256:d3747ca300f38832796521b47d12076bdba7f214199a1dec52c9384ab3dde394"
2485
2485
  },
2486
2486
  {
2487
2487
  "package": "@xemahq/xema",
2488
- "version": "0.42.0",
2488
+ "version": "0.43.0",
2489
2489
  "path": "edition/edition-contract-parse.mjs",
2490
2490
  "sha256": "sha256:c575e96b70bda82899931eb0b18567988e2e13e664fa498bcbef96b571dcabb4"
2491
2491
  },
2492
2492
  {
2493
2493
  "package": "@xemahq/xema",
2494
- "version": "0.42.0",
2494
+ "version": "0.43.0",
2495
2495
  "path": "edition/edition-contract.json",
2496
2496
  "sha256": "sha256:af7c88854007e63e4e77863cf72610f59ff838959dbd381087ec50ba782ae0e1"
2497
2497
  },
2498
2498
  {
2499
2499
  "package": "@xemahq/xema",
2500
- "version": "0.42.0",
2500
+ "version": "0.43.0",
2501
2501
  "path": "edition/edition-protocol.mjs",
2502
2502
  "sha256": "sha256:1f10ece5f34b6a6b0dbe169b6cbabe4b1b0778a1bc136c9c5c29b54181b1f546"
2503
2503
  },
2504
2504
  {
2505
2505
  "package": "@xemahq/xema",
2506
- "version": "0.42.0",
2506
+ "version": "0.43.0",
2507
2507
  "path": "edition/edition-source-pins.mjs",
2508
2508
  "sha256": "sha256:b141474fff33b06734fb62cd2552752b991c8267bb1c9bccb22a81dd80e91c6c"
2509
2509
  },
2510
2510
  {
2511
2511
  "package": "@xemahq/xema",
2512
- "version": "0.42.0",
2512
+ "version": "0.43.0",
2513
2513
  "path": "edition/edition-workspace.mjs",
2514
2514
  "sha256": "sha256:892b360f9f80d2308b0b12f9b99658ae06173878d9b71cf5d6fc8bd717b3c86e"
2515
2515
  },
2516
2516
  {
2517
2517
  "package": "@xemahq/xema",
2518
- "version": "0.42.0",
2518
+ "version": "0.43.0",
2519
2519
  "path": "edition/evidence-checkout.mjs",
2520
2520
  "sha256": "sha256:31fb669769b31de4c6f2b2501bb96959548172ef166e7568edbbfed7f5079a11"
2521
2521
  },
2522
2522
  {
2523
2523
  "package": "@xemahq/xema",
2524
- "version": "0.42.0",
2524
+ "version": "0.43.0",
2525
2525
  "path": "edition/evidence-grammars.mjs",
2526
2526
  "sha256": "sha256:4dae22b61ade99219a482b971c9780d68a3d37d021e39cdfe860b245364b8b9f"
2527
2527
  },
2528
2528
  {
2529
2529
  "package": "@xemahq/xema",
2530
- "version": "0.42.0",
2530
+ "version": "0.43.0",
2531
2531
  "path": "edition/evidence-trust-pin.mjs",
2532
2532
  "sha256": "sha256:65077589d1d9bd129c175c03a6dca6bb4eaf277fa29d6391e1065654fe8cc246"
2533
2533
  },
2534
2534
  {
2535
2535
  "package": "@xemahq/xema",
2536
- "version": "0.42.0",
2536
+ "version": "0.43.0",
2537
2537
  "path": "edition/git-json.mjs",
2538
2538
  "sha256": "sha256:d0d25cda0c19007becabc9a2827c3dcf759b295cd0b41596eb4480c9549a1f21"
2539
2539
  },
2540
2540
  {
2541
2541
  "package": "@xemahq/xema",
2542
- "version": "0.42.0",
2542
+ "version": "0.43.0",
2543
2543
  "path": "edition/image-delivery-entitlement-descriptor.mjs",
2544
2544
  "sha256": "sha256:4726b66116f01bf2523fafe2b7a356591eca8fb5ca6bd8b154dd4821873e921b"
2545
2545
  },
2546
2546
  {
2547
2547
  "package": "@xemahq/xema",
2548
- "version": "0.42.0",
2548
+ "version": "0.43.0",
2549
2549
  "path": "edition/image-evidence-replay-state.mjs",
2550
2550
  "sha256": "sha256:eba0cf1d38af0ab2f00c5099fa8bc2edc543136ce92f895544d4d284b3d6af0f"
2551
2551
  },
2552
2552
  {
2553
2553
  "package": "@xemahq/xema",
2554
- "version": "0.42.0",
2554
+ "version": "0.43.0",
2555
2555
  "path": "edition/image-evidence.mjs",
2556
2556
  "sha256": "sha256:8ccbd4e7ce482cbb25521e893ac047d31ca1da782e87ee2179629e8911aa6aa3"
2557
2557
  },
2558
2558
  {
2559
2559
  "package": "@xemahq/xema",
2560
- "version": "0.42.0",
2560
+ "version": "0.43.0",
2561
2561
  "path": "edition/kernel-capability-domain.mjs",
2562
2562
  "sha256": "sha256:3ecf887dd8d399e91a8285f6f115f6e418fb59bbf3f004539fe65ec667219356"
2563
2563
  },
2564
2564
  {
2565
2565
  "package": "@xemahq/xema",
2566
- "version": "0.42.0",
2566
+ "version": "0.43.0",
2567
2567
  "path": "edition/kernel-contract-authority.mjs",
2568
2568
  "sha256": "sha256:20abdde62a7b037c01ea9bbe1ff1e6094e6b0efd0add2f656f1938a04409bf82"
2569
2569
  },
2570
2570
  {
2571
2571
  "package": "@xemahq/xema",
2572
- "version": "0.42.0",
2572
+ "version": "0.43.0",
2573
2573
  "path": "edition/lib.mjs",
2574
2574
  "sha256": "sha256:7ed1bf641f501ec6a85d4fe24c4373a2e3885b799489dd33c77ff874fc138b25"
2575
2575
  },
2576
2576
  {
2577
2577
  "package": "@xemahq/xema",
2578
- "version": "0.42.0",
2578
+ "version": "0.43.0",
2579
2579
  "path": "edition/no-follow-file.mjs",
2580
2580
  "sha256": "sha256:c17bdf5e441f3c079aa06d4b48bbed05cad087855b9ad2a5e6dc43d5ee2b17c3"
2581
2581
  },
2582
2582
  {
2583
2583
  "package": "@xemahq/xema",
2584
- "version": "0.42.0",
2584
+ "version": "0.43.0",
2585
2585
  "path": "edition/operation-requirements.mjs",
2586
2586
  "sha256": "sha256:92656c5e920fca2a5a75c0b8db133d551ba044c84a149f33435479248b3dff8b"
2587
2587
  },
2588
2588
  {
2589
2589
  "package": "@xemahq/xema",
2590
- "version": "0.42.0",
2590
+ "version": "0.43.0",
2591
2591
  "path": "edition/pin-source.mjs",
2592
2592
  "sha256": "sha256:a23fef4698ef66ba9de4a1aabe3eebe6487d1f105f3fc161bafc5a33b99a2440"
2593
2593
  },
2594
2594
  {
2595
2595
  "package": "@xemahq/xema",
2596
- "version": "0.42.0",
2596
+ "version": "0.43.0",
2597
2597
  "path": "edition/sigstore-bundle-media-type.mjs",
2598
2598
  "sha256": "sha256:e0aa5a3992f0385ddbbe69eb0307d642ac428ef516c8394816ac4fd52e0ac39c"
2599
2599
  },
2600
2600
  {
2601
2601
  "package": "@xemahq/xema",
2602
- "version": "0.42.0",
2602
+ "version": "0.43.0",
2603
2603
  "path": "edition/source-authority.mjs",
2604
2604
  "sha256": "sha256:9c351f60e8ea838f445f89c3709c60b7f13b021b78d6e40eaef91350a793f0ff"
2605
2605
  },
2606
2606
  {
2607
2607
  "package": "@xemahq/xema",
2608
- "version": "0.42.0",
2608
+ "version": "0.43.0",
2609
2609
  "path": "edition/strict-json.mjs",
2610
2610
  "sha256": "sha256:f95778396df7f38b086f55d2ec4f3b6644a8aeff2b32282a62829145fb544562"
2611
2611
  },
2612
2612
  {
2613
2613
  "package": "@xemahq/xema",
2614
- "version": "0.42.0",
2614
+ "version": "0.43.0",
2615
2615
  "path": "edition/string-order.mjs",
2616
2616
  "sha256": "sha256:b3210cd273e4b2e01fb8b1a91e28734cd211d4010c080d0ce95f5e5ff631cffb"
2617
2617
  },
2618
2618
  {
2619
2619
  "package": "@xemahq/xema",
2620
- "version": "0.42.0",
2620
+ "version": "0.43.0",
2621
2621
  "path": "edition/trust-policy-arming.mjs",
2622
2622
  "sha256": "sha256:6f6f192118407e71a744087caea988bcf3d33aca9803217bceb8134d7e2b9120"
2623
2623
  },
2624
2624
  {
2625
2625
  "package": "@xemahq/xema",
2626
- "version": "0.42.0",
2626
+ "version": "0.43.0",
2627
2627
  "path": "edition/trusted-executable.mjs",
2628
2628
  "sha256": "sha256:37d46cdbc999ddd55d4ea8aeed4850ddd1efde89ed7b532f5a2ddec87105d796"
2629
2629
  },
2630
2630
  {
2631
2631
  "package": "@xemahq/xema",
2632
- "version": "0.42.0",
2632
+ "version": "0.43.0",
2633
2633
  "path": "edition/verifier-binding.mjs",
2634
2634
  "sha256": "sha256:80732658617f5255258c538eeb2383331ec8553b44b58d552b567845a7b916aa"
2635
2635
  },
2636
2636
  {
2637
2637
  "package": "@xemahq/xema",
2638
- "version": "0.42.0",
2638
+ "version": "0.43.0",
2639
2639
  "path": "edition/verifier-files.mjs",
2640
2640
  "sha256": "sha256:cdd14a20a63f0f194a8abb55680a5a7e3ced1f09f8b210a90d349e655f6de0c0"
2641
2641
  },
2642
2642
  {
2643
2643
  "package": "@xemahq/xema",
2644
- "version": "0.42.0",
2644
+ "version": "0.43.0",
2645
2645
  "path": "edition/verifier-provenance.mjs",
2646
2646
  "sha256": "sha256:3e2fb8e07cf1f66b8ad6c7ac2555fe3af64ec7abeb07cecbaf1939a18c2b3663"
2647
2647
  },
2648
2648
  {
2649
2649
  "package": "@xemahq/xema",
2650
- "version": "0.42.0",
2650
+ "version": "0.43.0",
2651
2651
  "path": "edition/verify-catalogue-evidence.mjs",
2652
2652
  "sha256": "sha256:d7e42efc9edced97e4330cddc46183445a870ba22f57896a7ea6bc600d369137"
2653
2653
  },
2654
2654
  {
2655
2655
  "package": "@xemahq/xema",
2656
- "version": "0.42.0",
2656
+ "version": "0.43.0",
2657
2657
  "path": "edition/verify-image-evidence.mjs",
2658
2658
  "sha256": "sha256:396936f3d9e0ed68902b8b03c6fa02479e439357e6194ac8ce0e0991be834706"
2659
2659
  },
2660
2660
  {
2661
2661
  "package": "@xemahq/xema",
2662
- "version": "0.42.0",
2662
+ "version": "0.43.0",
2663
2663
  "path": "edition/workspace-sections.mjs",
2664
2664
  "sha256": "sha256:383f37ce066ea5573c30cedf124022095bf94d050f0a266a5881f587cff0ced0"
2665
2665
  },
2666
2666
  {
2667
2667
  "package": "@xemahq/xema",
2668
- "version": "0.42.0",
2668
+ "version": "0.43.0",
2669
2669
  "path": "scripts/build-evidence-verifier.mjs",
2670
2670
  "sha256": "sha256:5a688d20c47dc88aff37aa0c6cc02daf2c370a5bc610fef8446ce7be222d4c0b"
2671
2671
  },
@@ -7,6 +7,7 @@ export declare enum EditionVerb {
7
7
  Catalogue = "catalogue",
8
8
  Index = "index",
9
9
  Check = "check",
10
+ CheckAuthored = "check-authored",
10
11
  Why = "why",
11
12
  VerifyPlatforms = "verify-platforms",
12
13
  CheckoutSources = "checkout-sources",
@@ -1 +1 @@
1
- {"version":3,"file":"verb-map.d.ts","sourceRoot":"","sources":["../../../src/runtime/edition/verb-map.ts"],"names":[],"mappings":"AAKA,oBAAY,WAAW;IACrB,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,QAAQ,aAAa;IACrB,SAAS,cAAc;IACvB,KAAK,UAAU;IACf,KAAK,UAAU;IACf,GAAG,QAAQ;IACX,eAAe,qBAAqB;IACpC,eAAe,qBAAqB;IACpC,kBAAkB,yBAAyB;IAC3C,cAAc,oBAAoB;IAClC,QAAQ,aAAa;IACrB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,aAAa,mBAAmB;IAChC,QAAQ,cAAc;IACtB,cAAc,oBAAoB;IAClC,MAAM,WAAW;IACjB,GAAG,QAAQ;IACX,KAAK,UAAU;CAChB;AAGD,oBAAY,wBAAwB;IAClC,OAAO,YAAY;IACnB,YAAY,kBAAkB;CAC/B;AAGD,oBAAY,mBAAmB;IAC7B,aAAa,mBAAmB;IAChC,SAAS,cAAc;IACvB,WAAW,iBAAiB;IAC5B,cAAc,oBAAoB;IAClC,WAAW,iBAAiB;IAC5B,GAAG,QAAQ;CACZ;AAGD,oBAAY,wBAAwB;IAClC,QAAQ,aAAa;IACrB,YAAY,iBAAiB;IAC7B,WAAW,gBAAgB;IAC3B,SAAS,cAAc;CACxB;AAGD,oBAAY,gBAAgB;IAC1B,KAAK,UAAU;IACf,eAAe,qBAAqB;IACpC,kBAAkB,yBAAyB;CAC5C;AAGD,oBAAY,oBAAoB;IAC9B,OAAO,YAAY;IACnB,MAAM,WAAW;CAClB;AAGD,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,cAAc,EAAE,MAAM,CAAC,CAE1F,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CACvC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,WAAW,CAAC,KAAK,GAAG,WAAW,CAAC,cAAc,GAAG,WAAW,CAAC,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAoBnI,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAGtF,CAAC;AAEF,eAAO,MAAM,gCAAgC,EAAE,QAAQ,CAAC,MAAM,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAK/F,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,CAQxH,CAAC;AAGF,eAAO,MAAM,qBAAqB,WAAW,CAAC;AAE9C,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAI1E,CAAC;AAEF,MAAM,WAAW,iBAAiB;IAEhC,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;IAExC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;CAClC;AAiDD,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,iBAAiB,CAoBtG"}
1
+ {"version":3,"file":"verb-map.d.ts","sourceRoot":"","sources":["../../../src/runtime/edition/verb-map.ts"],"names":[],"mappings":"AAKA,oBAAY,WAAW;IACrB,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,QAAQ,aAAa;IACrB,SAAS,cAAc;IACvB,KAAK,UAAU;IACf,KAAK,UAAU;IACf,aAAa,mBAAmB;IAChC,GAAG,QAAQ;IACX,eAAe,qBAAqB;IACpC,eAAe,qBAAqB;IACpC,kBAAkB,yBAAyB;IAC3C,cAAc,oBAAoB;IAClC,QAAQ,aAAa;IACrB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,aAAa,mBAAmB;IAChC,QAAQ,cAAc;IACtB,cAAc,oBAAoB;IAClC,MAAM,WAAW;IACjB,GAAG,QAAQ;IACX,KAAK,UAAU;CAChB;AAGD,oBAAY,wBAAwB;IAClC,OAAO,YAAY;IACnB,YAAY,kBAAkB;CAC/B;AAGD,oBAAY,mBAAmB;IAC7B,aAAa,mBAAmB;IAChC,SAAS,cAAc;IACvB,WAAW,iBAAiB;IAC5B,cAAc,oBAAoB;IAClC,WAAW,iBAAiB;IAC5B,GAAG,QAAQ;CACZ;AAGD,oBAAY,wBAAwB;IAClC,QAAQ,aAAa;IACrB,YAAY,iBAAiB;IAC7B,WAAW,gBAAgB;IAC3B,SAAS,cAAc;CACxB;AAGD,oBAAY,gBAAgB;IAC1B,KAAK,UAAU;IACf,eAAe,qBAAqB;IACpC,kBAAkB,yBAAyB;CAC5C;AAGD,oBAAY,oBAAoB;IAC9B,OAAO,YAAY;IACnB,MAAM,WAAW;CAClB;AAGD,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,cAAc,EAAE,MAAM,CAAC,CAE1F,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CACvC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,WAAW,CAAC,KAAK,GAAG,WAAW,CAAC,cAAc,GAAG,WAAW,CAAC,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAqBnI,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAGtF,CAAC;AAEF,eAAO,MAAM,gCAAgC,EAAE,QAAQ,CAAC,MAAM,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAK/F,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,CAQxH,CAAC;AAGF,eAAO,MAAM,qBAAqB,WAAW,CAAC;AAE9C,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAI1E,CAAC;AAEF,MAAM,WAAW,iBAAiB;IAEhC,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;IAExC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;CAClC;AAiDD,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,iBAAiB,CAoBtG"}
@@ -12,6 +12,7 @@ var EditionVerb;
12
12
  EditionVerb["Catalogue"] = "catalogue";
13
13
  EditionVerb["Index"] = "index";
14
14
  EditionVerb["Check"] = "check";
15
+ EditionVerb["CheckAuthored"] = "check-authored";
15
16
  EditionVerb["Why"] = "why";
16
17
  EditionVerb["VerifyPlatforms"] = "verify-platforms";
17
18
  EditionVerb["CheckoutSources"] = "checkout-sources";
@@ -70,6 +71,7 @@ exports.EDITION_VERB_ENTRY = {
70
71
  [EditionVerb.Artifact]: 'release-edition-artifact.mjs',
71
72
  [EditionVerb.Catalogue]: 'catalogue-edition.mjs',
72
73
  [EditionVerb.Check]: 'dist-check.mjs',
74
+ [EditionVerb.CheckAuthored]: 'authored-source-check.mjs',
73
75
  [EditionVerb.Why]: 'why.mjs',
74
76
  [EditionVerb.VerifyPlatforms]: 'verify-image-platforms.mjs',
75
77
  [EditionVerb.CheckoutSources]: 'checkout-indexed-source-repositories.mjs',
@@ -1 +1 @@
1
- {"version":3,"file":"verb-map.js","sourceRoot":"","sources":["../../../src/runtime/edition/verb-map.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verb-map.js","sourceRoot":"","sources":["../../../src/runtime/edition/verb-map.ts"],"names":[],"mappings":"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"}
package/edition/README.md CHANGED
@@ -33,6 +33,7 @@ Each takes the roots below plus its own arguments (`--check`, an edition id, ...
33
33
  | `seal-image-digests.mjs` | data, editions, kernel |
34
34
  | `verify-image-platforms.mjs` | data, editions, kernel |
35
35
  | `dist-check.mjs` | data, editions, sources, kernel, deploy, cache |
36
+ | `authored-source-check.mjs` (`xema edition check-authored`) | data, editions, sources, kernel |
36
37
  | `develop-edition.mjs` | data, editions, sources, kernel, deploy, cache |
37
38
  | `release-edition.mjs` (`xema edition release`) | per verb: `freeze-sources` data; `target` none; `check-existing` data, cache; `resolve` data, editions, sources, cache |
38
39
  | `release-edition-artifact.mjs` (`xema edition artifact`) | data, editions, kernel |
@@ -71,6 +72,7 @@ Read strictly: every key is required, an unknown key or a duplicate key is refus
71
72
  xema edition resolve <id> [--check] # write or verify the lock set
72
73
  xema edition seal <id> # seal image digests
73
74
  xema edition check # committed locks and indices are current
75
+ xema edition check-authored # the authored source, offline: definitions, indexes, policies, chart-set pin
74
76
  xema edition why <id> <biome> # why a biome is in an edition
75
77
  xema edition list --editions-root <dir>
76
78
  xema edition locks <id> --channel <release|develop> # validated locks as JSON; an unsealed distribution lock is read on develop only
@@ -87,6 +89,32 @@ xema edition evidence <assemble-input|check-committed|plan-refresh|statement|ass
87
89
 
88
90
  Results are JSON on stdout and diagnostics on stderr. Exit 0 is success and 1 is a refusal. `xema edition <verb> --help` names the roots and flags each verb takes.
89
91
 
92
+ ## Authored-source check
93
+
94
+ `xema edition check-authored` grades what is authored, offline, and reads no release state. `xema edition check` is the full release-path check; the authored check is a separate entry, not that check with parts turned off. It resolves no edition.
95
+
96
+ It refuses on:
97
+
98
+ - the kernel's edition protocol;
99
+ - `biome-index.json`: immutable entries, deterministic order, no duplicate source identity;
100
+ - `platform-service-index.json` and `runtime-image-source-index.json`, validated offline;
101
+ - the evidence trust policy, its pin and its arming (an unarmed policy counts the editions that hold a release lock, by presence only);
102
+ - the data-root readers (store source repositories, publisher trust);
103
+ - the fleet chart-set pin and the pinned kernel's authorization composer;
104
+ - the ownership self-tests: the kernel's capability-domain reader refuses two owners of one domain and an invalid domain, and counts no unlisted domain as first-party;
105
+ - every edition definition's structure: the kernel parses it, `sourcePins` included, and it composes.
106
+
107
+ It reads no lock content (the committed `distribution`, `images`, `authorization` and per-edition `chart-set` locks; the trust-arming rule counts lock files by presence) and no source checkout at a pinned commit. The sources root is read only for the kernel contract checkout the runtime-image-source index check verifies its authority against. `--check-sources` is refused: it is the release check's source audit.
108
+
109
+ ## Develop plane invariants
110
+
111
+ `xema edition develop resolve` asserts the capability-domain reservation table and biome confinement on the candidate it resolves, against the develop graph it froze, before any later phase. On develop they are asserted only there; `xema edition check` asserts them over the committed locks.
112
+
113
+ - Reservation: the candidate's `capabilityDomainOwners` is non-empty, accepted by the kernel's reader, and exactly the table the frozen graph's full biome index builds, so every candidate over one graph carries the same table.
114
+ - Confinement: each `confinedBiomes` declaration names a biome the frozen index carries and a substantive `consequence`; the candidate ships a confined biome only when admitted, and an admission of the candidate for a biome it does not ship is refused as stale.
115
+
116
+ A violation throws `DevelopEditionInvariantError`, whose `violations` carry a `DevelopEditionInvariantReason` each.
117
+
90
118
  ## Evidence trust
91
119
 
92
120
  The edition library builds, validates and verifies evidence statements; it never signs. Signing is done by the caller with `cosign`.
@@ -0,0 +1,135 @@
1
+ #!/usr/bin/env node
2
+ // authored-source-check — `xema edition check-authored`: grades the AUTHORED
3
+ // distribution source, the develop lifecycle's gate. It is its own mode, not
4
+ // the release check with assertions turned off: `xema edition check`
5
+ // (dist-check.mjs) stays the full release-path grade, and nothing here can
6
+ // make it skip anything.
7
+ //
8
+ // Authored and release state are separate lifecycles. What is authored is
9
+ // graded here, offline; what only a release carries is not read: no lock
10
+ // content (the committed distribution / images / authorization / chart-set
11
+ // locks; the trust-arming rule counts lock files by presence), and nothing that
12
+ // needs a source checkout at a committed `repositoryPins` commit. No edition is
13
+ // resolved here: the plane invariants over a resolved edition (the
14
+ // capability-domain reservation table and biome confinement) are asserted on
15
+ // develop by the develop resolve against the graph it froze
16
+ // (develop-edition-invariants.mjs), and on the release path by
17
+ // `xema edition check` over the committed locks. One place per assertion.
18
+ //
19
+ // KEPT (each refuses):
20
+ // - the kernel speaks a supported edition protocol;
21
+ // - biome-index.json: immutable entries, deterministic order, no duplicate
22
+ // source identity, a serviceDependencies projection on every entry;
23
+ // - platform-service-index.json: parses, matches the declared
24
+ // platformServiceSources offline, service-dependency owner parity;
25
+ // - runtime-image-source-index.json: the offline `--check`;
26
+ // - the evidence trust policy, its data-root pin and its arming assessment;
27
+ // - the data-root readers (store source repositories, publisher trust);
28
+ // - the fleet chart-set pin is a rostered chart-set lock;
29
+ // - the pinned kernel's authorization composer loads;
30
+ // - the ownership self-tests: the kernel's capability-domain reader refuses
31
+ // two owners of one domain and an invalid domain, and counts no unlisted
32
+ // domain as first-party (synthetic tables, no lock);
33
+ // - every edition definition is structurally valid: the kernel parses it
34
+ // (its `sourcePins` included) and it composes.
35
+ //
36
+ // NOT HERE:
37
+ // - lock currency, sealed hashes, the authorization lock, each edition's
38
+ // chart-set.lock.json copy, platform-service ownership at pinned commits,
39
+ // `--check-sources` (refused): release state, `xema edition check`;
40
+ // - the definition resolve, reservations, confinement: the develop resolve.
41
+
42
+ import {
43
+ checkDataRootPlane,
44
+ discoverDistributionIds,
45
+ loadPlaneAuthorizationKernel,
46
+ ownershipSelfTestFailures,
47
+ readFleetChartSetPin,
48
+ } from './dist-check.mjs';
49
+ import { describeEditionHolds } from './edition-source-pins.mjs';
50
+ import { WorkspaceRoot, configureEditionWorkspaceFromProcess, isEntryModule } from './edition-workspace.mjs';
51
+ import { loadKernelDistributionSchemas } from './lib.mjs';
52
+ import { composeEdition } from './resolve-distribution.mjs';
53
+
54
+ /** The release-path flag this mode refuses rather than ignores. */
55
+ const CHECK_SOURCES_FLAG = '--check-sources';
56
+
57
+ /**
58
+ * Whether edition `id`'s definition is structurally valid: the kernel parses it
59
+ * and it composes. Nothing is resolved and no index or source is read.
60
+ *
61
+ * @returns {Promise<string | null>} the refusal, or null when valid
62
+ */
63
+ export async function definitionRefusal(id) {
64
+ try {
65
+ const schemas = await loadKernelDistributionSchemas();
66
+ composeEdition(schemas.parseDistribution, id);
67
+ return null;
68
+ } catch (err) {
69
+ return err.message;
70
+ }
71
+ }
72
+
73
+ /**
74
+ * The ownership self-tests (dist-check.mjs): the kernel's capability-domain
75
+ * reader, against synthetic tables. Lock-free. Returns true when green.
76
+ */
77
+ async function checkOwnershipSelfTests(resolveFirstPartyCapabilityDomains) {
78
+ let failures;
79
+ try {
80
+ failures = ownershipSelfTestFailures(resolveFirstPartyCapabilityDomains);
81
+ } catch (err) {
82
+ failures = [`the kernel's capability-domain reader threw on a valid table: ${err.message}`];
83
+ }
84
+ for (const failure of failures) {console.error(`[dist:check-authored] ownership self-test FAILED: ${failure}`);}
85
+ if (failures.length === 0) {console.log('[dist:check-authored] ownership self-tests: green.');}
86
+ return failures.length === 0;
87
+ }
88
+
89
+ /**
90
+ * The authored check over the configured roots. Returns true when green.
91
+ * `resolveFirstPartyCapabilityDomains` is the kernel's reader unless a test
92
+ * stands in for it.
93
+ */
94
+ export async function checkAuthoredSource({ resolveFirstPartyCapabilityDomains } = {}) {
95
+ let green = await checkDataRootPlane({ checkSources: false });
96
+ const reader = resolveFirstPartyCapabilityDomains ?? (await loadKernelDistributionSchemas()).resolveFirstPartyCapabilityDomains;
97
+ if (!(await checkOwnershipSelfTests(reader))) {green = false;}
98
+
99
+ const distributionIds = discoverDistributionIds();
100
+ for (const line of describeEditionHolds(distributionIds)) {console.log(line);}
101
+ for (const id of distributionIds) {
102
+ const refusal = await definitionRefusal(id);
103
+ if (refusal === null) {
104
+ console.log(`[dist:check-authored] ${id}: the definition is valid.`);
105
+ } else {
106
+ console.error(`[dist:check-authored] ${id}: the definition is invalid — ${refusal}`);
107
+ green = false;
108
+ }
109
+ }
110
+
111
+ const { green: authorizationKernelGreen } = await loadPlaneAuthorizationKernel();
112
+ if (!authorizationKernelGreen) {green = false;}
113
+ if (readFleetChartSetPin() === null) {green = false;}
114
+
115
+ return green;
116
+ }
117
+
118
+ async function main() {
119
+ if (process.argv.includes(CHECK_SOURCES_FLAG)) {
120
+ throw new Error(
121
+ `${CHECK_SOURCES_FLAG} audits the indexes against source checkouts, which is release state: ` +
122
+ `run \`xema edition check ${CHECK_SOURCES_FLAG}\`.`,
123
+ );
124
+ }
125
+ if (!(await checkAuthoredSource())) {process.exit(1);}
126
+ console.log('[dist:check-authored] the authored distribution source is green.');
127
+ }
128
+
129
+ if (isEntryModule(import.meta.url)) {
130
+ configureEditionWorkspaceFromProcess([WorkspaceRoot.Data, WorkspaceRoot.Editions, WorkspaceRoot.Sources, WorkspaceRoot.Kernel]);
131
+ main().catch((err) => {
132
+ console.error(`[dist:check-authored] ${err.message}`);
133
+ process.exit(1);
134
+ });
135
+ }
@@ -0,0 +1,141 @@
1
+ // develop-edition-invariants — the plane invariants a DEVELOP candidate asserts
2
+ // itself, against the develop graph it froze: the capability-domain
3
+ // reservation table and biome confinement.
4
+ //
5
+ // On develop these live ONLY here. `xema edition check-authored` reads no
6
+ // resolved edition, and `xema edition check` (the release path) grades the
7
+ // same two invariants over the committed locks.
8
+ //
9
+ // RESERVATION. Ownership is a property of the platform, not of what an edition
10
+ // preloads (see `buildCapabilityDomainOwners`): every edition carries the table
11
+ // built from the FULL index. The release check proves it by comparing the
12
+ // committed locks with each other. A single candidate proves the same thing
13
+ // alone: its table must be exactly the one the frozen graph's full biome index
14
+ // builds, so any two candidates over one graph carry the identical table. It
15
+ // must also be non-empty (an empty table makes nothing first-party), and the
16
+ // kernel's reader must accept it (one owner per domain, valid domains).
17
+ //
18
+ // CONFINEMENT. The data root's `confinedBiomes` name biomes whose contents must
19
+ // not reach an unadmitted installation. The candidate is one graded edition:
20
+ // a declaration naming a biome the frozen index does not carry guards nothing
21
+ // and is refused; shipping a confined biome without an admission is refused; an
22
+ // admission of this edition for a biome it does not ship is a stale permission
23
+ // and is refused; a declaration without a substantive consequence is refused.
24
+
25
+ import { editionWorkspaceConfig } from './edition-config.mjs';
26
+ import { buildCapabilityDomainOwners, serializeJson } from './lib.mjs';
27
+
28
+ /** Why a develop candidate was refused. */
29
+ export const DevelopEditionInvariantReason = Object.freeze({
30
+ RESERVATION_TABLE_EMPTY: 'reservation-table-empty',
31
+ RESERVATION_TABLE_NOT_PLATFORM_TABLE: 'reservation-table-not-platform-table',
32
+ RESERVATION_TABLE_REFUSED_BY_KERNEL: 'reservation-table-refused-by-kernel',
33
+ CONFINED_BIOME_UNKNOWN: 'confined-biome-unknown',
34
+ CONFINED_BIOME_UNADMITTED: 'confined-biome-unadmitted',
35
+ CONFINEMENT_ADMISSION_STALE: 'confinement-admission-stale',
36
+ CONFINEMENT_CONSEQUENCE_MISSING: 'confinement-consequence-missing',
37
+ });
38
+
39
+ /** The shortest `consequence` that can name what a confinement protects. */
40
+ const MIN_CONSEQUENCE_LENGTH = 40;
41
+
42
+ /** A develop candidate broke a plane invariant. `violations` carries every one, each with its reason. */
43
+ export class DevelopEditionInvariantError extends Error {
44
+ /** @param {string} id @param {{ reason: string, detail: string }[]} violations */
45
+ constructor(id, violations) {
46
+ super(
47
+ `develop edition "${id}" breaks ${violations.length} plane invariant(s):\n` +
48
+ violations.map(({ reason, detail }) => ` - [${reason}] ${detail}`).join('\n'),
49
+ );
50
+ this.name = 'DevelopEditionInvariantError';
51
+ this.distributionId = id;
52
+ this.violations = violations;
53
+ }
54
+ }
55
+
56
+ /**
57
+ * The reservation violations of `lock`, whose graph's full biome index is
58
+ * `biomeIndex`. `resolveFirstPartyCapabilityDomains` is the kernel's reader.
59
+ */
60
+ export function reservationViolations({ lock, biomeIndex, resolveFirstPartyCapabilityDomains }) {
61
+ const R = DevelopEditionInvariantReason;
62
+ const table = lock.capabilityDomainOwners;
63
+ if (!Array.isArray(table) || table.length === 0) {
64
+ return [{
65
+ reason: R.RESERVATION_TABLE_EMPTY,
66
+ detail: 'capabilityDomainOwners is missing or empty: an empty reservation table makes NOTHING first-party (fail-open)',
67
+ }];
68
+ }
69
+ const violations = [];
70
+ try {
71
+ resolveFirstPartyCapabilityDomains(lock);
72
+ } catch (err) {
73
+ violations.push({ reason: R.RESERVATION_TABLE_REFUSED_BY_KERNEL, detail: err.message });
74
+ }
75
+ if (serializeJson(table) !== serializeJson(buildCapabilityDomainOwners(biomeIndex))) {
76
+ violations.push({
77
+ reason: R.RESERVATION_TABLE_NOT_PLATFORM_TABLE,
78
+ detail:
79
+ 'capabilityDomainOwners is not the table the frozen graph\'s full biome index builds. Ownership must not vary ' +
80
+ 'by edition, or a trimmed edition leaves domains org-bindable',
81
+ });
82
+ }
83
+ return violations;
84
+ }
85
+
86
+ /**
87
+ * The confinement violations of edition `id` shipping `lock`, under the data
88
+ * root's `declarations`, with `knownBiomeIds` the frozen index's biome ids.
89
+ */
90
+ export function confinementViolations({ id, lock, declarations, knownBiomeIds }) {
91
+ const R = DevelopEditionInvariantReason;
92
+ const shipped = new Set(lock.biomes.map((biome) => biome.id));
93
+ const violations = [];
94
+ for (const decl of declarations) {
95
+ if (typeof decl.consequence !== 'string' || decl.consequence.trim().length < MIN_CONSEQUENCE_LENGTH) {
96
+ violations.push({
97
+ reason: R.CONFINEMENT_CONSEQUENCE_MISSING,
98
+ detail: `confinement declaration "${decl.biomeId}" carries no substantive \`consequence\`; a refusal would name a rule without naming what it protects`,
99
+ });
100
+ }
101
+ if (!knownBiomeIds.has(decl.biomeId)) {
102
+ violations.push({
103
+ reason: R.CONFINED_BIOME_UNKNOWN,
104
+ detail:
105
+ `confinement declaration names biome "${decl.biomeId}", which the frozen biome index does not carry: it would ` +
106
+ 'guard nothing. Repoint it to the renamed biome, or delete it if the biome is gone',
107
+ });
108
+ continue;
109
+ }
110
+ const admitted = decl.admittedEditions.includes(id);
111
+ if (shipped.has(decl.biomeId) && !admitted) {
112
+ violations.push({
113
+ reason: R.CONFINED_BIOME_UNADMITTED,
114
+ detail:
115
+ `ships biome "${decl.biomeId}", which holds ${decl.holds}. That is a CONFINEMENT decision, not a packaging one: ` +
116
+ `${decl.consequence}. If intended, add "${id}" to its admittedEditions in edition-workspace.json in its own commit, naming who agreed`,
117
+ });
118
+ }
119
+ if (!shipped.has(decl.biomeId) && admitted) {
120
+ violations.push({
121
+ reason: R.CONFINEMENT_ADMISSION_STALE,
122
+ detail: `the admission "${decl.biomeId}" -> "${id}" suppresses NOTHING: the edition does not ship the biome. Delete it`,
123
+ });
124
+ }
125
+ }
126
+ return violations;
127
+ }
128
+
129
+ /**
130
+ * Assert both invariants on develop candidate `id`. Throws
131
+ * {@link DevelopEditionInvariantError} naming every violation; returns the
132
+ * counts it graded otherwise.
133
+ */
134
+ export function assertDevelopEditionInvariants({ id, lock, biomeIndex, schemas, declarations = editionWorkspaceConfig().confinedBiomes ?? [] }) {
135
+ const violations = [
136
+ ...reservationViolations({ lock, biomeIndex, resolveFirstPartyCapabilityDomains: schemas.resolveFirstPartyCapabilityDomains }),
137
+ ...confinementViolations({ id, lock, declarations, knownBiomeIds: new Set(biomeIndex.map((entry) => entry.id)) }),
138
+ ];
139
+ if (violations.length > 0) {throw new DevelopEditionInvariantError(id, violations);}
140
+ return { reservedDomains: lock.capabilityDomainOwners.length, confinedBiomes: declarations.length };
141
+ }
@@ -1,7 +1,8 @@
1
1
  // develop-edition-resolve — resolve and seal one DEVELOP edition from a snapshot.
2
2
  //
3
3
  // The whole pipeline, in the order the release runs it, over the snapshot's
4
- // injected inputs: distribution lock -> authorization base (composed, never
4
+ // injected inputs: distribution lock -> plane invariants (reservation table,
5
+ // confinement; develop-edition-invariants.mjs) -> authorization base (composed, never
5
6
  // written) -> images lock -> develop seal, plus the chart-set lock: the frozen
6
7
  // deploy commit's develop chart set (develop-chart-set.mjs). Nothing here writes to the editions
7
8
  // trees; the caller writes the artifact (edition-artifact.mjs).
@@ -10,6 +11,7 @@ import { adapterHostRow, assertAdapterBundlesMatchHost, fetchRegistryManifest }
10
11
  import { biomeSourceTreeIds, readBiomeSourceFacts, sealLock } from './biome-content.mjs';
11
12
  import { buildCatalogue } from './catalogue.mjs';
12
13
  import { resolveDevelopChartSet } from './develop-chart-set.mjs';
14
+ import { assertDevelopEditionInvariants } from './develop-edition-invariants.mjs';
13
15
  import { createDevelopImageProbe } from './develop-image-probe.mjs';
14
16
  import { assertFrozenCheckouts, buildSnapshotInputs } from './develop-snapshot-inputs.mjs';
15
17
  import { EditionChannel } from './edition-constants.mjs';
@@ -30,6 +32,7 @@ export const DEVELOP_EDITION_STEPS = Object.freeze({
30
32
  assertFrozenCheckouts,
31
33
  buildSnapshotInputs,
32
34
  resolveDistributionWithIndex,
35
+ assertDevelopEditionInvariants,
33
36
  assertAdapterBundlesMatchHost,
34
37
  composeAuthorizationBase,
35
38
  resolveImages,
@@ -59,6 +62,9 @@ export async function resolveDevelopEdition({ id, pins, env = process.env, sealO
59
62
  // One line per phase, with the time since the resolve began, so the step is never silent for long.
60
63
  const phase = (name) => progress(`[develop-edition] ${name} (+${Date.now() - startedAt}ms)`);
61
64
  const { schemas, inputs, lock, index } = await resolveDevelopSnapshot({ id, pins, steps, phase });
65
+ // The plane invariants, against the graph this candidate froze (develop-edition-invariants.mjs).
66
+ const graded = steps.assertDevelopEditionInvariants({ id, lock, biomeIndex: inputs.biomeIndex, schemas });
67
+ phase(`reservation table asserted (${graded.reservedDomains} domains); confinement asserted (${graded.confinedBiomes} declaration(s))`);
62
68
  await steps.assertAdapterBundlesMatchHost({ lock, hostRow: adapterHostRow(index), fetchManifest });
63
69
  const authorizationLock = await steps.composeAuthorizationBase(id, lock, index);
64
70
  phase('distribution lock resolved');
@@ -370,7 +370,7 @@ export async function checkImagesLock(id, checkSourceEvidence) {
370
370
  }
371
371
  }
372
372
 
373
- async function checkCommittedRuntimeImageSourceIndex(checkSources) {
373
+ export async function checkCommittedRuntimeImageSourceIndex(checkSources) {
374
374
  try {
375
375
  const schemas = await loadKernelDistributionSchemas();
376
376
  schemas.parseRuntimeImageSourceIndex(
@@ -394,7 +394,7 @@ async function checkCommittedRuntimeImageSourceIndex(checkSources) {
394
394
  }
395
395
  }
396
396
 
397
- function checkCommittedIndex() {
397
+ export function checkCommittedIndex() {
398
398
  try {
399
399
  const index = validateImmutableBiomeIndex(
400
400
  JSON.parse(readFileSync(biomeIndexPath(), 'utf8')),
@@ -464,7 +464,7 @@ export function checkCommittedDataRootReaders() {
464
464
  return green;
465
465
  }
466
466
 
467
- async function checkCommittedPlatformServiceIndex() {
467
+ export async function checkCommittedPlatformServiceIndex() {
468
468
  try {
469
469
  const schemas = await loadKernelDistributionSchemas();
470
470
  const index = schemas.parsePlatformServiceSourceIndex(
@@ -493,7 +493,7 @@ async function checkCommittedPlatformServiceIndex() {
493
493
  }
494
494
  }
495
495
 
496
- function discoverDistributionIds() {
496
+ export function discoverDistributionIds() {
497
497
  if (!existsSync(editionsRoot())) {
498
498
  console.error(`[dist:check] ${editionsRoot()} does not exist.`);
499
499
  process.exit(1);
@@ -514,37 +514,16 @@ function discoverDistributionIds() {
514
514
  }
515
515
 
516
516
  /**
517
- * Guard for the capability-domain OWNERSHIP (reservation) table.
518
- *
519
- * This repo has no test runner (no package.json, no CI workflow of its own) —
520
- * `dist:check` IS its gate — so the invariant is asserted here, where it
521
- * actually runs, rather than in a spec file nothing would execute.
522
- *
523
- * THE INVARIANT THAT MATTERS: **every edition carries the IDENTICAL table.**
517
+ * The lock-free half of the ownership guard: the kernel's reader, exercised
518
+ * against synthetic tables. (a) two biomes claiming one domain is refused,
519
+ * naming it; (b) a listed domain resolves to its owner and an unlisted one is
520
+ * not first-party; (c) an invalid domain is refused. Reads no lock, so the
521
+ * authored check runs it too.
524
522
  *
525
- * Ownership is a property of the platform, not of what an edition preloads.
526
- * An earlier design put the claim on each `LockedBiome`, which made a trimmed
527
- * edition (`appliance-lean`) leave `kb`/`agent`/… unowned — so an
528
- * org admin could install the owning biome from the store and THEN bind
529
- * `kb:page.read@1` to a URL they control, silently shadowing the platform
530
- * data plane. The table is now built from the FULL biome index and reserves
531
- * the domain even when its owning biome is absent from that edition — which
532
- * is exactly the case the reservation exists to cover.
533
- *
534
- * Also re-asserts the two structural rules, through the KERNEL's own reader:
535
- * (a) two biomes claiming the SAME domain is refused (ambiguous ownership has
536
- * no safe resolution — fail the build, never pick a winner);
537
- * (b) a domain in NO table entry is not first-party (so a claim that never
538
- * made it into a resolved, committed, drift-checked lock carries no
539
- * weight), and an invalid domain is refused rather than silently carried.
540
- *
541
- * @param {string[]} ids every distribution id discovered in this repo.
542
- * @returns {Promise<boolean>} true when green.
523
+ * @param {(lock: object) => Map<string, string>} resolveFirstPartyCapabilityDomains the kernel's reader
524
+ * @returns {string[]} the failures, empty when green
543
525
  */
544
- async function checkOwnershipInvariant(ids) {
545
- const { resolveFirstPartyCapabilityDomains } =
546
- await loadKernelDistributionSchemas();
547
-
526
+ export function ownershipSelfTestFailures(resolveFirstPartyCapabilityDomains) {
548
527
  const lockOf = (capabilityDomainOwners) => ({
549
528
  schemaVersion: 1,
550
529
  distributionId: 'dist-check-selftest',
@@ -599,6 +578,43 @@ async function checkOwnershipInvariant(ids) {
599
578
  /* expected */
600
579
  }
601
580
 
581
+ return failures;
582
+ }
583
+
584
+ /**
585
+ * Guard for the capability-domain OWNERSHIP (reservation) table.
586
+ *
587
+ * This repo has no test runner (no package.json, no CI workflow of its own) —
588
+ * `dist:check` IS its gate — so the invariant is asserted here, where it
589
+ * actually runs, rather than in a spec file nothing would execute.
590
+ *
591
+ * THE INVARIANT THAT MATTERS: **every edition carries the IDENTICAL table.**
592
+ *
593
+ * Ownership is a property of the platform, not of what an edition preloads.
594
+ * An earlier design put the claim on each `LockedBiome`, which made a trimmed
595
+ * edition (`appliance-lean`) leave `kb`/`agent`/… unowned — so an
596
+ * org admin could install the owning biome from the store and THEN bind
597
+ * `kb:page.read@1` to a URL they control, silently shadowing the platform
598
+ * data plane. The table is now built from the FULL biome index and reserves
599
+ * the domain even when its owning biome is absent from that edition — which
600
+ * is exactly the case the reservation exists to cover.
601
+ *
602
+ * Also re-asserts the two structural rules, through the KERNEL's own reader:
603
+ * (a) two biomes claiming the SAME domain is refused (ambiguous ownership has
604
+ * no safe resolution — fail the build, never pick a winner);
605
+ * (b) a domain in NO table entry is not first-party (so a claim that never
606
+ * made it into a resolved, committed, drift-checked lock carries no
607
+ * weight), and an invalid domain is refused rather than silently carried.
608
+ *
609
+ * @param {string[]} ids every distribution id discovered in this repo.
610
+ * @returns {Promise<boolean>} true when green.
611
+ */
612
+ async function checkOwnershipInvariant(ids) {
613
+ const { resolveFirstPartyCapabilityDomains } =
614
+ await loadKernelDistributionSchemas();
615
+
616
+ const failures = ownershipSelfTestFailures(resolveFirstPartyCapabilityDomains);
617
+
602
618
  // (d) THE headline invariant — every committed edition carries the same,
603
619
  // non-empty table. An edition-specific table is the fail-open bug.
604
620
  let reference;
@@ -919,13 +935,16 @@ export async function checkBiomeContentHashes(id) {
919
935
  }
920
936
  }
921
937
 
922
- async function main() {
923
- let failed = false;
924
- // The tests spawned below resolve the editions root from THEIR OWN argv and
925
- // env; a root stated here by --editions-root must reach them, or they
926
- // would grade the vendor's editions under a customer's dist-check.
927
- const checkSources = process.argv.includes('--check-sources');
928
-
938
+ /**
939
+ * The data-root plane both checks grade before any edition: the kernel speaks
940
+ * a supported edition protocol (a refusal throws), the committed biome,
941
+ * platform-service and runtime-image-source indexes validate offline, the
942
+ * evidence trust policy and the data-root readers are sound. `checkSources`
943
+ * adds the trusted live-source audit of the indexes (release path only).
944
+ * Returns true when green.
945
+ */
946
+ export async function checkDataRootPlane({ checkSources }) {
947
+ let green = true;
929
948
  // 0. The pinned kernel speaks an edition protocol this CLI supports. This is
930
949
  // the ONE comparison between the CLI and the kernel; a refusal throws
931
950
  // EditionProtocolMismatchError and stops the check before anything is read.
@@ -938,13 +957,13 @@ async function main() {
938
957
  // A live sibling-source scan is an explicit trusted regeneration audit only;
939
958
  // CI/shared working trees must not make unrelated uncommitted sources into
940
959
  // packaging inputs.
941
- if (!checkCommittedIndex()) {failed = true;}
942
- if (!(await checkCommittedPlatformServiceIndex())) {failed = true;}
960
+ if (!checkCommittedIndex()) {green = false;}
961
+ if (!(await checkCommittedPlatformServiceIndex())) {green = false;}
943
962
  if (!(await checkCommittedRuntimeImageSourceIndex(checkSources))) {
944
- failed = true;
963
+ green = false;
945
964
  }
946
- if (!(await checkEvidenceTrustPolicy())) {failed = true;}
947
- if (!checkCommittedDataRootReaders()) {failed = true;}
965
+ if (!(await checkEvidenceTrustPolicy())) {green = false;}
966
+ if (!checkCommittedDataRootReaders()) {green = false;}
948
967
  if (checkSources) {
949
968
  try {
950
969
  execFileSync(
@@ -958,9 +977,48 @@ async function main() {
958
977
  { stdio: 'inherit' },
959
978
  );
960
979
  } catch {
961
- failed = true;
980
+ green = false;
962
981
  }
963
982
  }
983
+ return green;
984
+ }
985
+
986
+ /**
987
+ * The pinned kernel's authorization composer (`kernel` null when the pin
988
+ * predates it). `green` is false when the composer could not be loaded.
989
+ */
990
+ export async function loadPlaneAuthorizationKernel() {
991
+ try {
992
+ return { green: true, kernel: await loadKernelAuthorizationComposer({ kernelPackageDir: kernelPackageDir() }) };
993
+ } catch (err) {
994
+ console.error(`[dist:check] ${err.message}`);
995
+ return { green: false, kernel: undefined };
996
+ }
997
+ }
998
+
999
+ /**
1000
+ * The fleet chart-set pin every edition must carry (edition-chart-set.mjs), as
1001
+ * committed text, or null when it is absent or not a rostered chart-set lock.
1002
+ */
1003
+ export function readFleetChartSetPin() {
1004
+ try {
1005
+ const text = readFileSync(fleetChartSetLockPath(), 'utf8');
1006
+ assertRosteredChartSetLock(JSON.parse(text), EDITION_CHART_SET_FILE);
1007
+ return text;
1008
+ } catch (err) {
1009
+ console.error(`[dist:check] chart-set pin: ${err.message}. Run \`${commandFor('resolve-chart-set.mjs')}\`.`);
1010
+ return null;
1011
+ }
1012
+ }
1013
+
1014
+ async function main() {
1015
+ let failed = false;
1016
+ // The tests spawned below resolve the editions root from THEIR OWN argv and
1017
+ // env; a root stated here by --editions-root must reach them, or they
1018
+ // would grade the vendor's editions under a customer's dist-check.
1019
+ const checkSources = process.argv.includes('--check-sources');
1020
+
1021
+ if (!(await checkDataRootPlane({ checkSources }))) {failed = true;}
964
1022
 
965
1023
  const distributionIds = discoverDistributionIds();
966
1024
 
@@ -972,25 +1030,12 @@ async function main() {
972
1030
  if (!(await checkOwnershipInvariant(distributionIds))) {failed = true;}
973
1031
 
974
1032
  // The pinned kernel's authorization composer (null when the pin predates it).
975
- let authorizationKernel;
976
- try {
977
- authorizationKernel = await loadKernelAuthorizationComposer({
978
- kernelPackageDir: kernelPackageDir(),
979
- });
980
- } catch (err) {
981
- console.error(`[dist:check] ${err.message}`);
982
- failed = true;
983
- }
1033
+ const { green: authorizationKernelGreen, kernel: authorizationKernel } = await loadPlaneAuthorizationKernel();
1034
+ if (!authorizationKernelGreen) {failed = true;}
984
1035
 
985
1036
  // The fleet chart-set pin every edition must carry (edition-chart-set.mjs).
986
- let chartSetPinText = null;
987
- try {
988
- chartSetPinText = readFileSync(fleetChartSetLockPath(), 'utf8');
989
- assertRosteredChartSetLock(JSON.parse(chartSetPinText), EDITION_CHART_SET_FILE);
990
- } catch (err) {
991
- console.error(`[dist:check] chart-set pin: ${err.message}. Run \`${commandFor('resolve-chart-set.mjs')}\`.`);
992
- failed = true;
993
- }
1037
+ const chartSetPinText = readFleetChartSetPin();
1038
+ if (chartSetPinText === null) {failed = true;}
994
1039
 
995
1040
  // 3 + 4 + 5 + 6 + 7. Every distribution: distribution.lock, images.lock,
996
1041
  // authorization.lock, chart-set.lock.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xemahq/xema",
3
- "version": "0.42.0",
3
+ "version": "0.43.0",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/xema-dev/xema-cli.git",
@@ -92,6 +92,6 @@
92
92
  "typecheck": "tsc --noEmit"
93
93
  },
94
94
  "xemaRelease": {
95
- "sourceDigest": "sha256:ae545509930a5b6f1215c413f3e7121b15a29d5fd3e14ab373f0910ceaa9063d"
95
+ "sourceDigest": "sha256:abf054b00865c8a4b0bb44bccd5cc3c65162b8ea8dec47126bc0dfd837392fcd"
96
96
  }
97
97
  }