@xemahq/xema 0.55.0 → 0.56.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.
@@ -69773,8 +69773,11 @@ function assessTrustPolicyArming(policy, schemas2, channel, { consumesCatalogue
69773
69773
  stages.push(["edition-catalogue", schemas2.EDITION_CATALOGUE_PREDICATE_TYPE]);
69774
69774
  }
69775
69775
  }
69776
- const onChannel = policy.policies.filter((candidate) => candidate.channel === channel);
69777
- const authorized = stages.filter(([, predicateType]) => onChannel.some((candidate) => candidate.predicateTypes.includes(predicateType)));
69776
+ const stagePredicateTypes = stages.map(([, predicateType]) => predicateType);
69777
+ const stageRows = policy.policies.filter(
69778
+ (candidate) => candidate.channel === channel && candidate.predicateTypes.some((predicateType) => stagePredicateTypes.includes(predicateType))
69779
+ );
69780
+ const authorized = stages.filter(([, predicateType]) => stageRows.some((candidate) => candidate.predicateTypes.includes(predicateType)));
69778
69781
  if (policy.policies.length === 0) {
69779
69782
  unmet.push(
69780
69783
  'policies[] is empty — no signer identity is authorized, so verifySigstoreEvidenceDescriptor throws "offline trust policy authorizes no signer" for every predicate before reading any bundle.'
@@ -69798,8 +69801,8 @@ function assessTrustPolicyArming(policy, schemas2, channel, { consumesCatalogue
69798
69801
  }
69799
69802
  const armed = unmet.length === 0;
69800
69803
  const bootstrap = policy.policies.length === 0 && policy.trustedCosignBinaryDigests.length === 0 && policy.trustedGitBinaryDigests.length === 0;
69801
- const anotherChannelOnly = onChannel.length === 0 && policy.policies.length > 0;
69802
- const state = armed ? TrustPolicyArmingState.ARMED : bootstrap || anotherChannelOnly ? TrustPolicyArmingState.UNARMED : TrustPolicyArmingState.PARTIAL;
69804
+ const noStageRow = stageRows.length === 0 && policy.policies.length > 0;
69805
+ const state = armed ? TrustPolicyArmingState.ARMED : bootstrap || noStageRow ? TrustPolicyArmingState.UNARMED : TrustPolicyArmingState.PARTIAL;
69803
69806
  return { state, armed, unmet };
69804
69807
  }
69805
69808
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "artifactSha256": "sha256:db80b90f2ec9229ade463711e69cb2bf271dcd40b14208166c2d58623dc51f86",
3
+ "artifactSha256": "sha256:da9d5bed0e7286a885aa8475ed43c7d008c6e571241607a3d42ca8abdab46dbf",
4
4
  "esbuild": {
5
5
  "version": "0.28.2"
6
6
  },
@@ -2599,355 +2599,355 @@
2599
2599
  },
2600
2600
  {
2601
2601
  "package": "@xemahq/xema",
2602
- "version": "0.55.0",
2602
+ "version": "0.56.0",
2603
2603
  "path": "edition/adapter-host-versions.mjs",
2604
2604
  "sha256": "sha256:1b7ebd3592f4da1225fba74aaba912e7d85fbceeb1626f7dcdac83491cbb4d69"
2605
2605
  },
2606
2606
  {
2607
2607
  "package": "@xemahq/xema",
2608
- "version": "0.55.0",
2608
+ "version": "0.56.0",
2609
2609
  "path": "edition/authorization-base.mjs",
2610
2610
  "sha256": "sha256:815c9be9f71731dcc805d85da2d733350ddb6fbdf32b6f1cf34f228ce6381c7c"
2611
2611
  },
2612
2612
  {
2613
2613
  "package": "@xemahq/xema",
2614
- "version": "0.55.0",
2614
+ "version": "0.56.0",
2615
2615
  "path": "edition/build-ledger.mjs",
2616
2616
  "sha256": "sha256:05202cbdd606aee086c8e9c62d28be68c429653a8b1d73a289ed0fe4ff14da85"
2617
2617
  },
2618
2618
  {
2619
2619
  "package": "@xemahq/xema",
2620
- "version": "0.55.0",
2620
+ "version": "0.56.0",
2621
2621
  "path": "edition/canonical-evidence-json.mjs",
2622
2622
  "sha256": "sha256:3b32f6786c9fb1c0deadf2f687077356a503b0db766392d2e0254aa1ab78feec"
2623
2623
  },
2624
2624
  {
2625
2625
  "package": "@xemahq/xema",
2626
- "version": "0.55.0",
2626
+ "version": "0.56.0",
2627
2627
  "path": "edition/canonical-repository-url.mjs",
2628
2628
  "sha256": "sha256:f36e4f7cbe7849789422ec2f0ebce2d62f7dc3684afecc3ac51a32560e72d8a1"
2629
2629
  },
2630
2630
  {
2631
2631
  "package": "@xemahq/xema",
2632
- "version": "0.55.0",
2632
+ "version": "0.56.0",
2633
2633
  "path": "edition/collected-refusals.mjs",
2634
2634
  "sha256": "sha256:ae21c069dbff0afa9aca18b7b909d5de405df2277f6431bc3fda20528115bcd1"
2635
2635
  },
2636
2636
  {
2637
2637
  "package": "@xemahq/xema",
2638
- "version": "0.55.0",
2638
+ "version": "0.56.0",
2639
2639
  "path": "edition/connector-source-authority.mjs",
2640
2640
  "sha256": "sha256:ea94475f4324737673accd7de1303c44db1cbc4dac61a865a06cd83abe310164"
2641
2641
  },
2642
2642
  {
2643
2643
  "package": "@xemahq/xema",
2644
- "version": "0.55.0",
2644
+ "version": "0.56.0",
2645
2645
  "path": "edition/cosign-certificate-constraints.mjs",
2646
2646
  "sha256": "sha256:bb9ba7038f1de9211c9cbcf99f02255f3623ce72d86c71fdcfa146a4e0edbd9a"
2647
2647
  },
2648
2648
  {
2649
2649
  "package": "@xemahq/xema",
2650
- "version": "0.55.0",
2650
+ "version": "0.56.0",
2651
2651
  "path": "edition/develop-graph.mjs",
2652
2652
  "sha256": "sha256:decebd437c9f4c8bdd6bee3baabfdc340fd7b9d175aca7e702cb330e912708d5"
2653
2653
  },
2654
2654
  {
2655
2655
  "package": "@xemahq/xema",
2656
- "version": "0.55.0",
2656
+ "version": "0.56.0",
2657
2657
  "path": "edition/dispatched-runtime-components.mjs",
2658
2658
  "sha256": "sha256:9712823d183a60108cd002b2d36a9e5c0867b9d576dd02825264a18f7b8ece69"
2659
2659
  },
2660
2660
  {
2661
2661
  "package": "@xemahq/xema",
2662
- "version": "0.55.0",
2662
+ "version": "0.56.0",
2663
2663
  "path": "edition/distribution-paths.mjs",
2664
2664
  "sha256": "sha256:d78a5c8405bc6c25d36fcec61b0030e1fdacac7d528e698adb96f906f4b70279"
2665
2665
  },
2666
2666
  {
2667
2667
  "package": "@xemahq/xema",
2668
- "version": "0.55.0",
2668
+ "version": "0.56.0",
2669
2669
  "path": "edition/edition-artifact.mjs",
2670
2670
  "sha256": "sha256:3b588c9c50f64f3e7a45b954fe7b5fc67e11fc8ce3e7b323727af4541d29ae7f"
2671
2671
  },
2672
2672
  {
2673
2673
  "package": "@xemahq/xema",
2674
- "version": "0.55.0",
2674
+ "version": "0.56.0",
2675
2675
  "path": "edition/edition-channel.mjs",
2676
2676
  "sha256": "sha256:3c0c1564dc50be133cad500452d953353aa5beb703142c05a17bbce8175ba9f3"
2677
2677
  },
2678
2678
  {
2679
2679
  "package": "@xemahq/xema",
2680
- "version": "0.55.0",
2680
+ "version": "0.56.0",
2681
2681
  "path": "edition/edition-chart-set.mjs",
2682
2682
  "sha256": "sha256:f9f16b58279c8c2619a39c5cc92bdbc334543d1a324304cd5d3b120d66dc8f3a"
2683
2683
  },
2684
2684
  {
2685
2685
  "package": "@xemahq/xema",
2686
- "version": "0.55.0",
2686
+ "version": "0.56.0",
2687
2687
  "path": "edition/edition-config.mjs",
2688
2688
  "sha256": "sha256:58af55e9a2b36ca23485246d44a295260afa240bcdc0649c697563b36085ddaa"
2689
2689
  },
2690
2690
  {
2691
2691
  "package": "@xemahq/xema",
2692
- "version": "0.55.0",
2692
+ "version": "0.56.0",
2693
2693
  "path": "edition/edition-constants.mjs",
2694
2694
  "sha256": "sha256:217fa5b1fa25cb50ee4e1b46ea5e086061ff1f44e00198e1dc28f52376f236a0"
2695
2695
  },
2696
2696
  {
2697
2697
  "package": "@xemahq/xema",
2698
- "version": "0.55.0",
2698
+ "version": "0.56.0",
2699
2699
  "path": "edition/edition-contract-parse.mjs",
2700
2700
  "sha256": "sha256:e2c6e66378f878499f44b62d060ae50197f40757b2044d9ce05290e367dfe21d"
2701
2701
  },
2702
2702
  {
2703
2703
  "package": "@xemahq/xema",
2704
- "version": "0.55.0",
2704
+ "version": "0.56.0",
2705
2705
  "path": "edition/edition-contract.json",
2706
2706
  "sha256": "sha256:566a17301ad15b94a06fef12b26bbe39e292ed2bf30a2659a9bf07ce5ce487e0"
2707
2707
  },
2708
2708
  {
2709
2709
  "package": "@xemahq/xema",
2710
- "version": "0.55.0",
2710
+ "version": "0.56.0",
2711
2711
  "path": "edition/edition-kind.mjs",
2712
2712
  "sha256": "sha256:b4f3358ffa81bbafb8c37d158b9e01032a7358c38b9d6e5aca409091f989e47a"
2713
2713
  },
2714
2714
  {
2715
2715
  "package": "@xemahq/xema",
2716
- "version": "0.55.0",
2716
+ "version": "0.56.0",
2717
2717
  "path": "edition/edition-protocol.mjs",
2718
2718
  "sha256": "sha256:f02ea6427e2fd7ceea2c3cb49f3fa6d85b982870e487082a7466f8037cd2bed9"
2719
2719
  },
2720
2720
  {
2721
2721
  "package": "@xemahq/xema",
2722
- "version": "0.55.0",
2722
+ "version": "0.56.0",
2723
2723
  "path": "edition/edition-publisher.mjs",
2724
2724
  "sha256": "sha256:8803b41067d81acbc35a8974426f606b5b8168b7a9c2581c16586a86f36db50f"
2725
2725
  },
2726
2726
  {
2727
2727
  "package": "@xemahq/xema",
2728
- "version": "0.55.0",
2728
+ "version": "0.56.0",
2729
2729
  "path": "edition/edition-source-pins.mjs",
2730
2730
  "sha256": "sha256:b141474fff33b06734fb62cd2552752b991c8267bb1c9bccb22a81dd80e91c6c"
2731
2731
  },
2732
2732
  {
2733
2733
  "package": "@xemahq/xema",
2734
- "version": "0.55.0",
2734
+ "version": "0.56.0",
2735
2735
  "path": "edition/edition-workspace.mjs",
2736
2736
  "sha256": "sha256:892b360f9f80d2308b0b12f9b99658ae06173878d9b71cf5d6fc8bd717b3c86e"
2737
2737
  },
2738
2738
  {
2739
2739
  "package": "@xemahq/xema",
2740
- "version": "0.55.0",
2740
+ "version": "0.56.0",
2741
2741
  "path": "edition/evidence-checkout.mjs",
2742
2742
  "sha256": "sha256:31fb669769b31de4c6f2b2501bb96959548172ef166e7568edbbfed7f5079a11"
2743
2743
  },
2744
2744
  {
2745
2745
  "package": "@xemahq/xema",
2746
- "version": "0.55.0",
2746
+ "version": "0.56.0",
2747
2747
  "path": "edition/evidence-grammars.mjs",
2748
2748
  "sha256": "sha256:4bea69437af5a36c139b5b41d0ecf2d1ddcf3f871e10c78e3d351f608eedca3b"
2749
2749
  },
2750
2750
  {
2751
2751
  "package": "@xemahq/xema",
2752
- "version": "0.55.0",
2752
+ "version": "0.56.0",
2753
2753
  "path": "edition/evidence-trust-pin.mjs",
2754
2754
  "sha256": "sha256:eb46e4d6a79dfac5536b7a439ab9df7dd4b03af369bdcfa9fcdd522aa1aab8dd"
2755
2755
  },
2756
2756
  {
2757
2757
  "package": "@xemahq/xema",
2758
- "version": "0.55.0",
2758
+ "version": "0.56.0",
2759
2759
  "path": "edition/first-party-source-ids.mjs",
2760
2760
  "sha256": "sha256:20cb1ad7cfb8c6e6686a6be5a51289da4bba76c20b58d9c1b5b6b3813a38dc1c"
2761
2761
  },
2762
2762
  {
2763
2763
  "package": "@xemahq/xema",
2764
- "version": "0.55.0",
2764
+ "version": "0.56.0",
2765
2765
  "path": "edition/fulcio-certificate-extensions.mjs",
2766
2766
  "sha256": "sha256:6f1f5a8ea110a489f7aff4bfb8e0b2d058919fe3e8ba4a1e5e8396fca24861b7"
2767
2767
  },
2768
2768
  {
2769
2769
  "package": "@xemahq/xema",
2770
- "version": "0.55.0",
2770
+ "version": "0.56.0",
2771
2771
  "path": "edition/git-json.mjs",
2772
2772
  "sha256": "sha256:d0d25cda0c19007becabc9a2827c3dcf759b295cd0b41596eb4480c9549a1f21"
2773
2773
  },
2774
2774
  {
2775
2775
  "package": "@xemahq/xema",
2776
- "version": "0.55.0",
2776
+ "version": "0.56.0",
2777
2777
  "path": "edition/git-source-auth.mjs",
2778
2778
  "sha256": "sha256:c1b32aa6f7d59798db58238d632cafeadbd4f07376396a31acdeb5f0ac56dcac"
2779
2779
  },
2780
2780
  {
2781
2781
  "package": "@xemahq/xema",
2782
- "version": "0.55.0",
2782
+ "version": "0.56.0",
2783
2783
  "path": "edition/image-delivery-entitlement-descriptor.mjs",
2784
2784
  "sha256": "sha256:4726b66116f01bf2523fafe2b7a356591eca8fb5ca6bd8b154dd4821873e921b"
2785
2785
  },
2786
2786
  {
2787
2787
  "package": "@xemahq/xema",
2788
- "version": "0.55.0",
2788
+ "version": "0.56.0",
2789
2789
  "path": "edition/image-evidence-replay-state.mjs",
2790
2790
  "sha256": "sha256:eba0cf1d38af0ab2f00c5099fa8bc2edc543136ce92f895544d4d284b3d6af0f"
2791
2791
  },
2792
2792
  {
2793
2793
  "package": "@xemahq/xema",
2794
- "version": "0.55.0",
2794
+ "version": "0.56.0",
2795
2795
  "path": "edition/image-evidence.mjs",
2796
2796
  "sha256": "sha256:c6a202f3fc8efe97f00c7e69532c656646bdc5c93365d68676046c3aabd33233"
2797
2797
  },
2798
2798
  {
2799
2799
  "package": "@xemahq/xema",
2800
- "version": "0.55.0",
2800
+ "version": "0.56.0",
2801
2801
  "path": "edition/image-subject-identity.mjs",
2802
2802
  "sha256": "sha256:6a64e44f9865f68484540e3264a1d87040ae021dfa6ee4b79239e66805754ac1"
2803
2803
  },
2804
2804
  {
2805
2805
  "package": "@xemahq/xema",
2806
- "version": "0.55.0",
2806
+ "version": "0.56.0",
2807
2807
  "path": "edition/kernel-capability-domain.mjs",
2808
2808
  "sha256": "sha256:3ecf887dd8d399e91a8285f6f115f6e418fb59bbf3f004539fe65ec667219356"
2809
2809
  },
2810
2810
  {
2811
2811
  "package": "@xemahq/xema",
2812
- "version": "0.55.0",
2812
+ "version": "0.56.0",
2813
2813
  "path": "edition/kernel-contract-authority.mjs",
2814
2814
  "sha256": "sha256:9de2645dca22274cad9fa68d0364bf57e4de704e9d49a8bbadde0e322ae317df"
2815
2815
  },
2816
2816
  {
2817
2817
  "package": "@xemahq/xema",
2818
- "version": "0.55.0",
2818
+ "version": "0.56.0",
2819
2819
  "path": "edition/kernel-contract-source-path-set.mjs",
2820
2820
  "sha256": "sha256:bc4756f217d80fd8f802932f47da71ab14e782873fa9fa977002a94e058d8a9e"
2821
2821
  },
2822
2822
  {
2823
2823
  "package": "@xemahq/xema",
2824
- "version": "0.55.0",
2824
+ "version": "0.56.0",
2825
2825
  "path": "edition/kernel-package.mjs",
2826
2826
  "sha256": "sha256:e97a9491991d8332a4feed14ac48fe393e44d12c63bdfec89fac8b5b4ea2a574"
2827
2827
  },
2828
2828
  {
2829
2829
  "package": "@xemahq/xema",
2830
- "version": "0.55.0",
2830
+ "version": "0.56.0",
2831
2831
  "path": "edition/lib.mjs",
2832
2832
  "sha256": "sha256:a0695c1e1649da205f4e5d0e8d411079d6af4eb00c7d753bb2e9bf9a5ed1232e"
2833
2833
  },
2834
2834
  {
2835
2835
  "package": "@xemahq/xema",
2836
- "version": "0.55.0",
2836
+ "version": "0.56.0",
2837
2837
  "path": "edition/no-follow-file.mjs",
2838
2838
  "sha256": "sha256:c17bdf5e441f3c079aa06d4b48bbed05cad087855b9ad2a5e6dc43d5ee2b17c3"
2839
2839
  },
2840
2840
  {
2841
2841
  "package": "@xemahq/xema",
2842
- "version": "0.55.0",
2842
+ "version": "0.56.0",
2843
2843
  "path": "edition/operation-requirements.mjs",
2844
2844
  "sha256": "sha256:d3b6807953f162ab4204dcd1a0f752e0f9b447726fc17a12534d28abe8e570b0"
2845
2845
  },
2846
2846
  {
2847
2847
  "package": "@xemahq/xema",
2848
- "version": "0.55.0",
2848
+ "version": "0.56.0",
2849
2849
  "path": "edition/pin-source.mjs",
2850
2850
  "sha256": "sha256:32fa918729a83587b4d3bca6e5fe381f5a525397ebc49d52729ec1f8cf216c37"
2851
2851
  },
2852
2852
  {
2853
2853
  "package": "@xemahq/xema",
2854
- "version": "0.55.0",
2854
+ "version": "0.56.0",
2855
2855
  "path": "edition/sigstore-bundle-media-type.mjs",
2856
2856
  "sha256": "sha256:e0aa5a3992f0385ddbbe69eb0307d642ac428ef516c8394816ac4fd52e0ac39c"
2857
2857
  },
2858
2858
  {
2859
2859
  "package": "@xemahq/xema",
2860
- "version": "0.55.0",
2860
+ "version": "0.56.0",
2861
2861
  "path": "edition/source-authority.mjs",
2862
2862
  "sha256": "sha256:9c351f60e8ea838f445f89c3709c60b7f13b021b78d6e40eaef91350a793f0ff"
2863
2863
  },
2864
2864
  {
2865
2865
  "package": "@xemahq/xema",
2866
- "version": "0.55.0",
2866
+ "version": "0.56.0",
2867
2867
  "path": "edition/strict-json.mjs",
2868
2868
  "sha256": "sha256:f95778396df7f38b086f55d2ec4f3b6644a8aeff2b32282a62829145fb544562"
2869
2869
  },
2870
2870
  {
2871
2871
  "package": "@xemahq/xema",
2872
- "version": "0.55.0",
2872
+ "version": "0.56.0",
2873
2873
  "path": "edition/string-order.mjs",
2874
2874
  "sha256": "sha256:b3210cd273e4b2e01fb8b1a91e28734cd211d4010c080d0ce95f5e5ff631cffb"
2875
2875
  },
2876
2876
  {
2877
2877
  "package": "@xemahq/xema",
2878
- "version": "0.55.0",
2878
+ "version": "0.56.0",
2879
2879
  "path": "edition/third-party-admission.mjs",
2880
2880
  "sha256": "sha256:7e32f631a8948e2b93a5cfa163390d52d2a8d9ade87a637c7fe1fc6351fe5974"
2881
2881
  },
2882
2882
  {
2883
2883
  "package": "@xemahq/xema",
2884
- "version": "0.55.0",
2884
+ "version": "0.56.0",
2885
2885
  "path": "edition/third-party-certificate-extensions.mjs",
2886
2886
  "sha256": "sha256:3293267b09452199f605001d8c14070d1c822b77390caee4088e17b059b7b05d"
2887
2887
  },
2888
2888
  {
2889
2889
  "package": "@xemahq/xema",
2890
- "version": "0.55.0",
2890
+ "version": "0.56.0",
2891
2891
  "path": "edition/third-party-source-pins.mjs",
2892
2892
  "sha256": "sha256:6f12feb9061bd4ea3e5aeab3f369c081ab58da335c0d281e21b250251e1c0dd9"
2893
2893
  },
2894
2894
  {
2895
2895
  "package": "@xemahq/xema",
2896
- "version": "0.55.0",
2896
+ "version": "0.56.0",
2897
2897
  "path": "edition/trust-policy-arming.mjs",
2898
- "sha256": "sha256:6f6f192118407e71a744087caea988bcf3d33aca9803217bceb8134d7e2b9120"
2898
+ "sha256": "sha256:f6ed96ee1d0b7698b1eea5066ba10abef1babeede8403a7c481bba53636cb1a5"
2899
2899
  },
2900
2900
  {
2901
2901
  "package": "@xemahq/xema",
2902
- "version": "0.55.0",
2902
+ "version": "0.56.0",
2903
2903
  "path": "edition/trust-policy-image-ownership.mjs",
2904
2904
  "sha256": "sha256:be0c787c6a75124f0143fc0ce3b127a94e3bb7f6aa64e282c91dd84e566e550e"
2905
2905
  },
2906
2906
  {
2907
2907
  "package": "@xemahq/xema",
2908
- "version": "0.55.0",
2908
+ "version": "0.56.0",
2909
2909
  "path": "edition/trusted-executable.mjs",
2910
2910
  "sha256": "sha256:37d46cdbc999ddd55d4ea8aeed4850ddd1efde89ed7b532f5a2ddec87105d796"
2911
2911
  },
2912
2912
  {
2913
2913
  "package": "@xemahq/xema",
2914
- "version": "0.55.0",
2914
+ "version": "0.56.0",
2915
2915
  "path": "edition/verifier-binding.mjs",
2916
2916
  "sha256": "sha256:80732658617f5255258c538eeb2383331ec8553b44b58d552b567845a7b916aa"
2917
2917
  },
2918
2918
  {
2919
2919
  "package": "@xemahq/xema",
2920
- "version": "0.55.0",
2920
+ "version": "0.56.0",
2921
2921
  "path": "edition/verifier-files.mjs",
2922
2922
  "sha256": "sha256:cdd14a20a63f0f194a8abb55680a5a7e3ced1f09f8b210a90d349e655f6de0c0"
2923
2923
  },
2924
2924
  {
2925
2925
  "package": "@xemahq/xema",
2926
- "version": "0.55.0",
2926
+ "version": "0.56.0",
2927
2927
  "path": "edition/verifier-provenance.mjs",
2928
2928
  "sha256": "sha256:3e2fb8e07cf1f66b8ad6c7ac2555fe3af64ec7abeb07cecbaf1939a18c2b3663"
2929
2929
  },
2930
2930
  {
2931
2931
  "package": "@xemahq/xema",
2932
- "version": "0.55.0",
2932
+ "version": "0.56.0",
2933
2933
  "path": "edition/verify-catalogue-evidence.mjs",
2934
2934
  "sha256": "sha256:156d0ee39210658ec489609629c5b9cddd3ce5b3938d8980dcf8282ae4be60bb"
2935
2935
  },
2936
2936
  {
2937
2937
  "package": "@xemahq/xema",
2938
- "version": "0.55.0",
2938
+ "version": "0.56.0",
2939
2939
  "path": "edition/verify-image-evidence.mjs",
2940
2940
  "sha256": "sha256:958360f7889985c48abb048852c5bbba349cd7353ce4b532c4511b4902380fac"
2941
2941
  },
2942
2942
  {
2943
2943
  "package": "@xemahq/xema",
2944
- "version": "0.55.0",
2944
+ "version": "0.56.0",
2945
2945
  "path": "edition/workspace-sections.mjs",
2946
2946
  "sha256": "sha256:1d2aff08bcd9e94b644c85c5b55c90c05b6b02bab662731fe3fcd53fcdf86e93"
2947
2947
  },
2948
2948
  {
2949
2949
  "package": "@xemahq/xema",
2950
- "version": "0.55.0",
2950
+ "version": "0.56.0",
2951
2951
  "path": "scripts/build-evidence-verifier.mjs",
2952
2952
  "sha256": "sha256:5a688d20c47dc88aff37aa0c6cc02daf2c370a5bc610fef8446ce7be222d4c0b"
2953
2953
  },
@@ -291,8 +291,8 @@ export async function biomeSourceTreeIds({ schemas, lock, imageLock, locate, ven
291
291
  }
292
292
 
293
293
  /** Seal: the unsealed lock + the recomputed hashes -> the kernel's `sealDistributionLock`. */
294
- export async function sealLock({ schemas, unsealed, imageLock, locate, vendoredCommit, catalogue, catalogueDigest, storePublisherAnchorKeys, sourceFactsById, bundleSigners, contentCommits }) {
295
- assertLockBundleSigners({ lock: unsealed, selection: bundleSigners, schemas });
294
+ export async function sealLock({ schemas, unsealed, imageLock, locate, vendoredCommit, catalogue, catalogueDigest, storePublisherAnchorKeys, sourceFactsById, bundleSigners, contentCommits, gitSourcedBundle }) {
295
+ assertLockBundleSigners({ lock: unsealed, selection: bundleSigners, schemas, gitSourcedBundle });
296
296
  const hashes = await computeBiomeContentHashes({ schemas, lock: unsealed, imageLock, locate, vendoredCommit, catalogue, catalogueDigest, storePublisherAnchorKeys, sourceFactsById, contentCommits });
297
297
  admitDistributionLock(schemas, unsealed);
298
298
  return schemas.sealDistributionLock(unsealed, hashes);
@@ -302,9 +302,9 @@ export async function sealLock({ schemas, unsealed, imageLock, locate, vendoredC
302
302
  * Verify: recompute every biome's hash and REFUSE a mismatch, naming the biome.
303
303
  * The lock's own field is never trusted; a missing or extra biome is a mismatch.
304
304
  */
305
- export async function verifyBiomeContentHashes({ schemas, lock, imageLock, locate, vendoredCommit, catalogue, catalogueDigest, storePublisherAnchorKeys, bundleSigners, contentCommits }) {
305
+ export async function verifyBiomeContentHashes({ schemas, lock, imageLock, locate, vendoredCommit, catalogue, catalogueDigest, storePublisherAnchorKeys, bundleSigners, contentCommits, gitSourcedBundle }) {
306
306
  const expected = await computeBiomeContentHashes({ schemas, lock, imageLock, locate, vendoredCommit, catalogue, catalogueDigest, storePublisherAnchorKeys, contentCommits });
307
- assertLockBundleSigners({ lock, selection: bundleSigners, schemas });
307
+ assertLockBundleSigners({ lock, selection: bundleSigners, schemas, gitSourcedBundle });
308
308
  const mismatched = lock.biomes
309
309
  .filter((biome) => biome.biomeContentHash !== expected.get(biome.id))
310
310
  .map((biome) => `${biome.id} (lock ${String(biome.biomeContentHash)}, recomputed ${expected.get(biome.id)})`);
@@ -38,6 +38,7 @@ import {
38
38
  sourceCheckoutPlan,
39
39
  } from './checkout-indexed-source-repositories.mjs';
40
40
  import { assertDevelopEditionInvariants } from './develop-edition-invariants.mjs';
41
+ import { carriedDevelopGitBundles } from './develop-git-bundles.mjs';
41
42
  import { buildSnapshotInputs } from './develop-snapshot-inputs.mjs';
42
43
  import { parseEditionDescriptor } from './edition-artifact.mjs';
43
44
  import { resetEditionWorkspaceConfig, editionWorkspaceConfig } from './edition-config.mjs';
@@ -55,7 +56,7 @@ import {
55
56
  import { materializeGitSource, externalSourceCacheDir } from './external-source-walk.mjs';
56
57
  import { withSourceGitEnv } from './git-source-auth.mjs';
57
58
  import { loadKernelDistributionSchemas, serializeJson, sha256Hex } from './lib.mjs';
58
- import { assertLockBundleSigners } from './locked-bundle-signer.mjs';
59
+ import { GitSourcedBundle, assertLockBundleSigners } from './locked-bundle-signer.mjs';
59
60
  import { admitDistributionLock } from './operation-grant-admission.mjs';
60
61
  import {
61
62
  EDITIONS_ROOT_PIN_KEY,
@@ -581,8 +582,10 @@ async function resealStaged({ edition: pinned, pins, read, deployment }) {
581
582
  const id = pinned.id;
582
583
  const schemas = await loadKernelDistributionSchemas();
583
584
  const inputs = await buildSnapshotInputs({ id, pins, schemas });
584
- const { lock, index } = await prepareDistributionWithIndex(id, { inputs });
585
- assertLockBundleSigners({ lock, schemas });
585
+ // A git-sourced biome's OCI bundle is carried from the pinned edition for the same source commit, never re-fetched.
586
+ const pinnedLock = JSON.parse(pinned.bytes[EditionLockFile.Distribution].toString('utf8'));
587
+ const { lock, index } = await prepareDistributionWithIndex(id, { inputs: { ...inputs, developGitBundles: carriedDevelopGitBundles(pinnedLock) } });
588
+ assertLockBundleSigners({ lock, schemas, gitSourcedBundle: GitSourcedBundle.DevelopVerified });
586
589
  assertDevelopEditionInvariants({ id, lock, biomeIndex: inputs.biomeIndex, schemas });
587
590
  admitDistributionLock(schemas, lock);
588
591
  const authorizationLock = await composeAuthorizationBase(id, lock, index);
@@ -600,6 +603,7 @@ async function resealStaged({ edition: pinned, pins, read, deployment }) {
600
603
  locate: sourceTreeLocator(externalSourceTrees(lock)),
601
604
  vendoredCommit: (repo) => authority.vendoredSourceCommitForRepository(repo),
602
605
  contentCommits,
606
+ gitSourcedBundle: GitSourcedBundle.DevelopVerified,
603
607
  });
604
608
  const lockBytes = Buffer.from(serializeJson(sealed), 'utf8');
605
609
  const authorizationLockBytes = Buffer.from(serializeJson(authorizationLock), 'utf8');
@@ -684,6 +688,7 @@ export async function verifyCandidateContentHashes({ tripleDir, checkouts, candi
684
688
  locate: sourceTreeLocator(externalSourceTrees(lock)),
685
689
  vendoredCommit: (repo) => authority.vendoredSourceCommitForRepository(repo),
686
690
  ...(contentCommits === undefined ? {} : { contentCommits }),
691
+ gitSourcedBundle: GitSourcedBundle.DevelopVerified,
687
692
  });
688
693
  });
689
694
  } finally {
@@ -13,6 +13,7 @@ import { buildCatalogue } from './catalogue.mjs';
13
13
  import { resolveDevelopChartSet } from './develop-chart-set.mjs';
14
14
  import { assertDevelopEditionInvariants } from './develop-edition-invariants.mjs';
15
15
  import { resolveDevelopEngineImage } from './develop-engine-image.mjs';
16
+ import { createDevelopGitBundleVerifier } from './develop-git-bundles.mjs';
16
17
  import { createDevelopImageProbe } from './develop-image-probe.mjs';
17
18
  import { BLOCKED, DevelopResolveCheck, RESOLVE_CHECK_DEPENDENCIES, createResolveReport } from './develop-resolve-report.mjs';
18
19
  import { assertFrozenCheckouts, buildSnapshotInputs } from './develop-snapshot-inputs.mjs';
@@ -23,7 +24,7 @@ import { dataRoot, kernelPackageDir } from './edition-workspace.mjs';
23
24
  import { resolveImagesFromRecord, sealImagesFromRecord } from './images-from-record.mjs';
24
25
  import { kernelPackageOfAuthority } from './kernel-package.mjs';
25
26
  import { loadKernelDistributionSchemas } from './lib.mjs';
26
- import { assertLockBundleSigners, isBundleSignerRefusal } from './locked-bundle-signer.mjs';
27
+ import { GitSourcedBundle, assertLockBundleSigners, isBundleSignerRefusal } from './locked-bundle-signer.mjs';
27
28
  import { admitDistributionLock, ungrantedOptionalLinesOfRefusal } from './operation-grant-admission.mjs';
28
29
  import { deployPinKey } from './pin-source.mjs';
29
30
  import { admitResolvedLock, composeAuthorizationBase, prepareDistributionWithIndex } from './resolve-distribution.mjs';
@@ -58,17 +59,21 @@ const stderrProgress = (line) => process.stderr.write(`${line}\n`);
58
59
  * admits it as one of its checks; `resolveDevelopSnapshot` admits it at once. Both
59
60
  * start here, so the content hash each computes for a subject is the same by construction.
60
61
  */
61
- async function prepareDevelopSnapshot({ id, pins, steps, phase }) {
62
+ async function prepareDevelopSnapshot({ id, pins, steps, phase, developGitBundles }) {
62
63
  const schemas = await loadKernelDistributionSchemas();
63
64
  steps.assertFrozenCheckouts(pins);
64
65
  const inputs = await steps.buildSnapshotInputs({ id, pins, schemas });
65
66
  phase('snapshot inputs built');
66
- const prepared = await steps.prepareDistributionWithIndex(id, { inputs });
67
+ const prepared = await steps.prepareDistributionWithIndex(id, { inputs: developGitBundles === undefined ? inputs : { ...inputs, developGitBundles } });
67
68
  // The schemas the lock was composed with are the ones that admit it.
68
69
  return { inputs, ...prepared };
69
70
  }
70
71
 
71
- /** The read-only `coverage` verb's snapshot: prepared as the resolve prepares it, then admitted (a refusal throws). */
72
+ /**
73
+ * The read-only `coverage` and image-record snapshot: prepared as the resolve prepares it, then admitted (a refusal
74
+ * throws). It seals no distribution lock, so it verifies no git-sourced OCI bundle (no registry, no cosign): its lock
75
+ * rows of a git source carry none, which neither verb reads.
76
+ */
72
77
  export async function resolveDevelopSnapshot({ id, pins, steps = DEVELOP_EDITION_STEPS, phase = () => {} }) {
73
78
  const snapshot = await prepareDevelopSnapshot({ id, pins, steps, phase });
74
79
  admitResolvedLock(snapshot.schemas, snapshot.lock);
@@ -102,13 +107,15 @@ export async function resolveDevelopEdition({ id, pins, engine, cosignBinary, en
102
107
  return image;
103
108
  });
104
109
  await checked(DevelopResolveCheck.EditionProtocol, () => steps.assertKernelEditionProtocol(kernelPackageDir()));
105
- const snapshot = await checked(DevelopResolveCheck.DistributionLock, () => prepareDevelopSnapshot({ id, pins, steps, phase }), {
110
+ // A git-sourced biome's OCI bundle is kept only when verified against the frozen source (develop-git-bundles.mjs).
111
+ const developGitBundles = createDevelopGitBundleVerifier({ cosignBinary, dataRoot: dataRoot(), env });
112
+ const snapshot = await checked(DevelopResolveCheck.DistributionLock, () => prepareDevelopSnapshot({ id, pins, steps, phase, developGitBundles }), {
106
113
  classify: (error) => (isBundleSignerRefusal(error) ? DevelopResolveCheck.BundleSigner : DevelopResolveCheck.DistributionLock),
107
114
  });
108
115
  const lockProduced = snapshot !== BLOCKED;
109
116
  const { schemas, inputs, lock, index } = lockProduced ? snapshot : {};
110
117
  if (lockProduced) {
111
- await checked(DevelopResolveCheck.BundleSigner, () => assertLockBundleSigners({ lock, schemas }));
118
+ await checked(DevelopResolveCheck.BundleSigner, () => assertLockBundleSigners({ lock, schemas, gitSourcedBundle: GitSourcedBundle.DevelopVerified }));
112
119
  }
113
120
  // The plane invariants, against the graph this candidate froze (develop-edition-invariants.mjs).
114
121
  await checked(DevelopResolveCheck.PlaneInvariants, () => {
@@ -179,7 +186,7 @@ export async function resolveDevelopEdition({ id, pins, engine, cosignBinary, en
179
186
  // ONE walk of the biome checkouts: the content hashes and the tree ids both read it.
180
187
  const sourceFactsById = await readBiomeSourceFacts({ ...biomeSources, lock });
181
188
  phase(`biome sources read (${sourceFactsById.size} biomes)`);
182
- const sealedLock = await sealLock({ ...biomeSources, unsealed: lock, sourceFactsById });
189
+ const sealedLock = await sealLock({ ...biomeSources, unsealed: lock, sourceFactsById, gitSourcedBundle: GitSourcedBundle.DevelopVerified });
183
190
  phase('distribution lock sealed');
184
191
  const sourceTreeIds = await biomeSourceTreeIds({ ...biomeSources, lock, sourceFactsById });
185
192
  const catalogue = buildCatalogue({