@kungfu-tech/buildchain 2.14.3-alpha.0 → 2.14.3-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/site/buildchain-contract.json +130 -24
- package/dist/site/buildchain-site.json +16 -16
- package/dist/site/capability-registry.json +1 -1
- package/dist/site/controller-registry.json +48 -4
- package/dist/site/kfd-claims.json +111 -8
- package/dist/site/kfd-upstream-aggregate.json +1 -1
- package/dist/site/manual-registry.json +4 -4
- package/dist/site/node-api-registry.json +5 -5
- package/dist/site/page-registry.json +8 -8
- package/dist/site/public-surface-audit.json +124 -6
- package/dist/site/publication-authority-registry.json +26 -1
- package/dist/site/publication-registry.json +4 -4
- package/dist/site/site-manifest.json +8 -8
- package/dist/site/workflow-registry.json +124 -3
- package/docs/migration-inventory.md +8 -0
- package/docs/release-candidate.md +3 -0
- package/docs/release-governance.md +5 -4
- package/docs/reusable-build-surface.md +26 -1
- package/package.json +1 -1
- package/packages/core/buildchain-contract.js +41 -0
- package/packages/core/buildchain-kfd-claims.js +4 -0
- package/packages/core/buildchain-publication-authority.js +1 -0
- package/packages/core/controller-evidence.js +1 -1
- package/packages/core/release-passport.js +39 -0
- package/scripts/check-inventory.mjs +30 -2
- package/scripts/generate-channel-promotion-workflow.mjs +331 -0
- package/scripts/promotion-channel-router.mjs +132 -0
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"status": "passed",
|
|
5
5
|
"summary": {
|
|
6
6
|
"cliCommandCount": 83,
|
|
7
|
-
"workflowCount":
|
|
7
|
+
"workflowCount": 49,
|
|
8
8
|
"actionCount": 4,
|
|
9
9
|
"sitePageCount": 50,
|
|
10
10
|
"docCommandRefCount": 258,
|
|
@@ -674,6 +674,108 @@
|
|
|
674
674
|
],
|
|
675
675
|
"outputCount": 5
|
|
676
676
|
},
|
|
677
|
+
{
|
|
678
|
+
"id": ".release-candidate-promote",
|
|
679
|
+
"path": ".github/workflows/.release-candidate-promote.yml",
|
|
680
|
+
"reusable": true,
|
|
681
|
+
"inputs": [
|
|
682
|
+
"allow-repository",
|
|
683
|
+
"artifact-name",
|
|
684
|
+
"artifact-patterns",
|
|
685
|
+
"branch-protection-bypass-apps",
|
|
686
|
+
"branch-protection-bypass-teams",
|
|
687
|
+
"branch-protection-bypass-users",
|
|
688
|
+
"buildchain-contract-compatibility-policy",
|
|
689
|
+
"buildchain-contract-drift-issue-mode",
|
|
690
|
+
"buildchain-contract-lock-path",
|
|
691
|
+
"buildchain-ref",
|
|
692
|
+
"buildchain-repository",
|
|
693
|
+
"channel",
|
|
694
|
+
"dry-run",
|
|
695
|
+
"github-release",
|
|
696
|
+
"github-release-notes",
|
|
697
|
+
"github-release-title",
|
|
698
|
+
"package-manager",
|
|
699
|
+
"promotion-contract-lock-digest",
|
|
700
|
+
"promotion-contract-lock-path",
|
|
701
|
+
"promotion-override-used",
|
|
702
|
+
"promotion-publication-channel",
|
|
703
|
+
"promotion-router-ref",
|
|
704
|
+
"promotion-router-sha",
|
|
705
|
+
"promotion-runtime-ref",
|
|
706
|
+
"promotion-runtime-sha",
|
|
707
|
+
"promotion-shell-ref",
|
|
708
|
+
"promotion-shell-sha",
|
|
709
|
+
"promotion-target-ref",
|
|
710
|
+
"publication-admission-json",
|
|
711
|
+
"publication-auto-admission",
|
|
712
|
+
"publication-auto-no-gate",
|
|
713
|
+
"publication-consumer-predicate-id",
|
|
714
|
+
"publication-consumer-qualification-command",
|
|
715
|
+
"publication-control-plane-audit-json",
|
|
716
|
+
"publication-expected-json",
|
|
717
|
+
"publication-gate-aggregate-json",
|
|
718
|
+
"publication-package-name",
|
|
719
|
+
"publication-product",
|
|
720
|
+
"publication-publisher-workflow-path",
|
|
721
|
+
"publication-runner-provenance-json",
|
|
722
|
+
"publication-target",
|
|
723
|
+
"publication-used-nonces-json",
|
|
724
|
+
"publication-used-qualification-nonces-json",
|
|
725
|
+
"publish-artifact-kind",
|
|
726
|
+
"publish-command",
|
|
727
|
+
"publish-dist-tag",
|
|
728
|
+
"publish-mode",
|
|
729
|
+
"publish-package-main",
|
|
730
|
+
"publish-package-set-order",
|
|
731
|
+
"publish-required-artifacts-json",
|
|
732
|
+
"publish-target",
|
|
733
|
+
"release-candidate-workflow-file",
|
|
734
|
+
"release-candidate-workflow-name",
|
|
735
|
+
"release-passport",
|
|
736
|
+
"release-passport-buildchain-self-kfd",
|
|
737
|
+
"release-passport-impact-json",
|
|
738
|
+
"release-passport-kfd-1-witness-jsons",
|
|
739
|
+
"release-passport-kfd-2-claim-jsons",
|
|
740
|
+
"release-passport-kfd-3-artifact-verify-command",
|
|
741
|
+
"release-passport-kfd-3-artifact-witness-jsons",
|
|
742
|
+
"release-passport-kfd-3-prebuild-witness-jsons",
|
|
743
|
+
"release-passport-output-dir",
|
|
744
|
+
"release-passport-platform-manifest-paths",
|
|
745
|
+
"release-passport-product-name",
|
|
746
|
+
"required-artifact-count",
|
|
747
|
+
"required-status-check",
|
|
748
|
+
"runner-preset",
|
|
749
|
+
"target-ref",
|
|
750
|
+
"target-sha",
|
|
751
|
+
"trusted-publishing"
|
|
752
|
+
],
|
|
753
|
+
"inputCount": 70,
|
|
754
|
+
"secrets": [
|
|
755
|
+
"BUILDCHAIN_ISSUE_APP_ID",
|
|
756
|
+
"BUILDCHAIN_ISSUE_APP_PRIVATE_KEY",
|
|
757
|
+
"BUILDCHAIN_ISSUE_TOKEN",
|
|
758
|
+
"BUILDCHAIN_PROMOTION_TOKEN",
|
|
759
|
+
"buildchain-issue-app-id",
|
|
760
|
+
"buildchain-issue-app-private-key",
|
|
761
|
+
"buildchain-issue-token"
|
|
762
|
+
],
|
|
763
|
+
"secretCount": 7,
|
|
764
|
+
"outputs": [
|
|
765
|
+
"built-source-sha",
|
|
766
|
+
"controller-plan-artifact",
|
|
767
|
+
"controller-plan-digest",
|
|
768
|
+
"controller-plan-json",
|
|
769
|
+
"controller-receipt-artifact",
|
|
770
|
+
"controller-receipt-digest",
|
|
771
|
+
"controller-receipt-json",
|
|
772
|
+
"controller-receipt-status",
|
|
773
|
+
"promoted-sha",
|
|
774
|
+
"publication-capability-digest",
|
|
775
|
+
"release-candidate-artifact"
|
|
776
|
+
],
|
|
777
|
+
"outputCount": 11
|
|
778
|
+
},
|
|
677
779
|
{
|
|
678
780
|
"id": ".release-docker",
|
|
679
781
|
"path": ".github/workflows/.release-docker.yml",
|
|
@@ -1633,11 +1735,14 @@
|
|
|
1633
1735
|
"branch-protection-bypass-apps",
|
|
1634
1736
|
"branch-protection-bypass-teams",
|
|
1635
1737
|
"branch-protection-bypass-users",
|
|
1738
|
+
"buildchain-alpha-contract-lock-path",
|
|
1739
|
+
"buildchain-channel",
|
|
1636
1740
|
"buildchain-contract-compatibility-policy",
|
|
1637
1741
|
"buildchain-contract-drift-issue-mode",
|
|
1638
1742
|
"buildchain-contract-lock-path",
|
|
1639
1743
|
"buildchain-ref",
|
|
1640
1744
|
"buildchain-repository",
|
|
1745
|
+
"buildchain-stable-contract-lock-path",
|
|
1641
1746
|
"channel",
|
|
1642
1747
|
"dry-run",
|
|
1643
1748
|
"github-release",
|
|
@@ -1687,7 +1792,7 @@
|
|
|
1687
1792
|
"target-sha",
|
|
1688
1793
|
"trusted-publishing"
|
|
1689
1794
|
],
|
|
1690
|
-
"inputCount":
|
|
1795
|
+
"inputCount": 62,
|
|
1691
1796
|
"secrets": [
|
|
1692
1797
|
"BUILDCHAIN_ISSUE_APP_ID",
|
|
1693
1798
|
"BUILDCHAIN_ISSUE_APP_PRIVATE_KEY",
|
|
@@ -1699,6 +1804,7 @@
|
|
|
1699
1804
|
],
|
|
1700
1805
|
"secretCount": 7,
|
|
1701
1806
|
"outputs": [
|
|
1807
|
+
"buildchain-channel",
|
|
1702
1808
|
"built-source-sha",
|
|
1703
1809
|
"controller-plan-artifact",
|
|
1704
1810
|
"controller-plan-digest",
|
|
@@ -1708,10 +1814,21 @@
|
|
|
1708
1814
|
"controller-receipt-json",
|
|
1709
1815
|
"controller-receipt-status",
|
|
1710
1816
|
"promoted-sha",
|
|
1817
|
+
"promotion-contract-lock-digest",
|
|
1818
|
+
"promotion-contract-lock-path",
|
|
1819
|
+
"promotion-override-used",
|
|
1820
|
+
"promotion-publication-channel",
|
|
1821
|
+
"promotion-router-ref",
|
|
1822
|
+
"promotion-router-sha",
|
|
1823
|
+
"promotion-runtime-ref",
|
|
1824
|
+
"promotion-runtime-sha",
|
|
1825
|
+
"promotion-shell-ref",
|
|
1826
|
+
"promotion-shell-sha",
|
|
1827
|
+
"promotion-target-ref",
|
|
1711
1828
|
"publication-capability-digest",
|
|
1712
1829
|
"release-candidate-artifact"
|
|
1713
1830
|
],
|
|
1714
|
-
"outputCount":
|
|
1831
|
+
"outputCount": 23
|
|
1715
1832
|
},
|
|
1716
1833
|
{
|
|
1717
1834
|
"id": "release-line-bootstrap",
|
|
@@ -1908,6 +2025,7 @@
|
|
|
1908
2025
|
"release-passport-output-dir",
|
|
1909
2026
|
"release-passport-platform-manifest-paths",
|
|
1910
2027
|
"release-passport-product-name",
|
|
2028
|
+
"release-passport-promotion-routing-json",
|
|
1911
2029
|
"require-governance",
|
|
1912
2030
|
"require-publication-qualification",
|
|
1913
2031
|
"require-publish-source-lock",
|
|
@@ -1920,7 +2038,7 @@
|
|
|
1920
2038
|
"transaction-state-path",
|
|
1921
2039
|
"verification-command"
|
|
1922
2040
|
],
|
|
1923
|
-
"inputCount":
|
|
2041
|
+
"inputCount": 60
|
|
1924
2042
|
},
|
|
1925
2043
|
{
|
|
1926
2044
|
"id": "report-buildchain-issue",
|
|
@@ -3511,8 +3629,8 @@
|
|
|
3511
3629
|
"workflowRegistryPath": "dist/site/workflow-registry.json",
|
|
3512
3630
|
"pageRegistryPath": "dist/site/page-registry.json",
|
|
3513
3631
|
"cliRegistryDigest": "b469949f77ed7777f23fe68c54daf6d2c20d3afc97f3bbd5a178a91202a068d0",
|
|
3514
|
-
"workflowRegistryDigest": "
|
|
3515
|
-
"pageRegistryDigest": "
|
|
3632
|
+
"workflowRegistryDigest": "4812aea118585c3f527834090569f02cf66c142d2f9a0f8b3d3882e9a614a361",
|
|
3633
|
+
"pageRegistryDigest": "e68b12261716c3ef857d14a327dce77de8ea9f5a7052406c55b86db60e84301c"
|
|
3516
3634
|
},
|
|
3517
3635
|
"comparison": {
|
|
3518
3636
|
"missingCliRegistry": [],
|
|
@@ -44,6 +44,23 @@
|
|
|
44
44
|
"runnerPolicy": "unqualified",
|
|
45
45
|
"notes": ""
|
|
46
46
|
},
|
|
47
|
+
{
|
|
48
|
+
"workflowPath": ".github/workflows/.release-candidate-promote.yml",
|
|
49
|
+
"authorityClass": "product-publication",
|
|
50
|
+
"publicationCapable": true,
|
|
51
|
+
"capabilityIds": [
|
|
52
|
+
"channel-ref",
|
|
53
|
+
"github-release",
|
|
54
|
+
"npm-publish"
|
|
55
|
+
],
|
|
56
|
+
"credentialMode": "trusted-publishing",
|
|
57
|
+
"publisherWorkflowMode": "caller-bound",
|
|
58
|
+
"publisherWorkflowPath": ".github/workflows/.release-candidate-promote.yml",
|
|
59
|
+
"environment": "none",
|
|
60
|
+
"environmentMode": "fixed",
|
|
61
|
+
"runnerPolicy": "qualified-measured",
|
|
62
|
+
"notes": ""
|
|
63
|
+
},
|
|
47
64
|
{
|
|
48
65
|
"workflowPath": ".github/workflows/.release-verify.yml",
|
|
49
66
|
"authorityClass": "governance-write",
|
|
@@ -507,6 +524,14 @@
|
|
|
507
524
|
"signals": [],
|
|
508
525
|
"classified": true
|
|
509
526
|
},
|
|
527
|
+
{
|
|
528
|
+
"path": ".github/workflows/.release-candidate-promote.yml",
|
|
529
|
+
"signals": [
|
|
530
|
+
"write-permission",
|
|
531
|
+
"oidc"
|
|
532
|
+
],
|
|
533
|
+
"classified": true
|
|
534
|
+
},
|
|
510
535
|
{
|
|
511
536
|
"path": ".github/workflows/.release-docker.yml",
|
|
512
537
|
"signals": [],
|
|
@@ -792,5 +817,5 @@
|
|
|
792
817
|
"classified": false
|
|
793
818
|
}
|
|
794
819
|
],
|
|
795
|
-
"registryDigest": "
|
|
820
|
+
"registryDigest": "ac085131119085cfc02e37913ec5eabc9f38b04100c58d797ede3b8e2b7e3046"
|
|
796
821
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"contract": "kungfu-buildchain-publication-release-registry",
|
|
4
|
-
"generatedAt": "2026-07-
|
|
5
|
-
"publishedAt": "2026-07-
|
|
4
|
+
"generatedAt": "2026-07-19T00:00:09.045Z",
|
|
5
|
+
"publishedAt": "2026-07-19T00:00:09.045Z",
|
|
6
6
|
"reproducible": true,
|
|
7
7
|
"timestampPolicy": "ci-injected",
|
|
8
8
|
"deterministicInputs": [
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"declared Buildchain surface manifest contract"
|
|
20
20
|
],
|
|
21
21
|
"sourceDateEpoch": "0",
|
|
22
|
-
"sourceRevision": "
|
|
22
|
+
"sourceRevision": "cb4ea966786d561d5f6e9c53d55bba5e951bdb24",
|
|
23
23
|
"timestampPolicyDetails": {
|
|
24
24
|
"contract": "kungfu-buildchain-surface-timestamp-policy",
|
|
25
25
|
"timestampFields": [
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
},
|
|
33
33
|
"package": {
|
|
34
34
|
"name": "@kungfu-tech/buildchain",
|
|
35
|
-
"version": "2.14.3-alpha.
|
|
35
|
+
"version": "2.14.3-alpha.1",
|
|
36
36
|
"versionSource": "package.json#version"
|
|
37
37
|
},
|
|
38
38
|
"sourceKind": "package-site-bundle",
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"contract": "kungfu-buildchain-site-manifest",
|
|
4
|
-
"generatedAt": "2026-07-
|
|
5
|
-
"publishedAt": "2026-07-
|
|
4
|
+
"generatedAt": "2026-07-19T00:00:09.045Z",
|
|
5
|
+
"publishedAt": "2026-07-19T00:00:09.045Z",
|
|
6
6
|
"reproducible": true,
|
|
7
7
|
"timestampPolicy": "ci-injected",
|
|
8
8
|
"deterministicInputs": [
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"declared Buildchain surface manifest contract"
|
|
20
20
|
],
|
|
21
21
|
"sourceDateEpoch": "0",
|
|
22
|
-
"sourceRevision": "
|
|
22
|
+
"sourceRevision": "cb4ea966786d561d5f6e9c53d55bba5e951bdb24",
|
|
23
23
|
"timestampPolicyDetails": {
|
|
24
24
|
"contract": "kungfu-buildchain-surface-timestamp-policy",
|
|
25
25
|
"timestampFields": [
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
},
|
|
38
38
|
"package": {
|
|
39
39
|
"name": "@kungfu-tech/buildchain",
|
|
40
|
-
"version": "2.14.3-alpha.
|
|
40
|
+
"version": "2.14.3-alpha.1",
|
|
41
41
|
"versionSource": "package.json#version"
|
|
42
42
|
},
|
|
43
43
|
"entrypoint": "buildchain-site.json",
|
|
@@ -93,7 +93,7 @@
|
|
|
93
93
|
"path": "docs/release-candidate.md",
|
|
94
94
|
"plane": "verify",
|
|
95
95
|
"exists": true,
|
|
96
|
-
"digest": "sha256:
|
|
96
|
+
"digest": "sha256:81463a74dfe3d337768797b5b47f8cb3a22389312a917447f9b0e6096ab4f90a"
|
|
97
97
|
},
|
|
98
98
|
{
|
|
99
99
|
"id": "release-propagation",
|
|
@@ -165,7 +165,7 @@
|
|
|
165
165
|
"path": "docs/migration-inventory.md",
|
|
166
166
|
"plane": "verify",
|
|
167
167
|
"exists": true,
|
|
168
|
-
"digest": "sha256:
|
|
168
|
+
"digest": "sha256:08daa7d0b42543c1d1dacf1f56f461f0e7a7ca9e25d0859e39599ceb97054ee0"
|
|
169
169
|
},
|
|
170
170
|
{
|
|
171
171
|
"id": "ownership",
|
|
@@ -221,7 +221,7 @@
|
|
|
221
221
|
"path": "docs/reusable-build-surface.md",
|
|
222
222
|
"plane": "use",
|
|
223
223
|
"exists": true,
|
|
224
|
-
"digest": "sha256:
|
|
224
|
+
"digest": "sha256:7b745037fedafa1bc2f8ce65f32bb7e887988df2bfe2439694da418d482f6929"
|
|
225
225
|
},
|
|
226
226
|
{
|
|
227
227
|
"id": "publish-transaction",
|
|
@@ -237,7 +237,7 @@
|
|
|
237
237
|
"path": "docs/release-governance.md",
|
|
238
238
|
"plane": "why",
|
|
239
239
|
"exists": true,
|
|
240
|
-
"digest": "sha256:
|
|
240
|
+
"digest": "sha256:d25a2ceb6cdc1a1db321e7d2a6aa8a454fb4d7a10560177604f8ecb5801a6e66"
|
|
241
241
|
},
|
|
242
242
|
{
|
|
243
243
|
"id": "release-flow",
|
|
@@ -263,6 +263,111 @@
|
|
|
263
263
|
"capabilityGroup": "api-cli-reference",
|
|
264
264
|
"status": "active"
|
|
265
265
|
},
|
|
266
|
+
{
|
|
267
|
+
"id": ".release-candidate-promote",
|
|
268
|
+
"path": ".github/workflows/.release-candidate-promote.yml",
|
|
269
|
+
"reusable": true,
|
|
270
|
+
"inputs": [
|
|
271
|
+
"allow-repository",
|
|
272
|
+
"artifact-name",
|
|
273
|
+
"artifact-patterns",
|
|
274
|
+
"branch-protection-bypass-apps",
|
|
275
|
+
"branch-protection-bypass-teams",
|
|
276
|
+
"branch-protection-bypass-users",
|
|
277
|
+
"buildchain-contract-compatibility-policy",
|
|
278
|
+
"buildchain-contract-drift-issue-mode",
|
|
279
|
+
"buildchain-contract-lock-path",
|
|
280
|
+
"buildchain-ref",
|
|
281
|
+
"buildchain-repository",
|
|
282
|
+
"channel",
|
|
283
|
+
"dry-run",
|
|
284
|
+
"github-release",
|
|
285
|
+
"github-release-notes",
|
|
286
|
+
"github-release-title",
|
|
287
|
+
"package-manager",
|
|
288
|
+
"promotion-contract-lock-digest",
|
|
289
|
+
"promotion-contract-lock-path",
|
|
290
|
+
"promotion-override-used",
|
|
291
|
+
"promotion-publication-channel",
|
|
292
|
+
"promotion-router-ref",
|
|
293
|
+
"promotion-router-sha",
|
|
294
|
+
"promotion-runtime-ref",
|
|
295
|
+
"promotion-runtime-sha",
|
|
296
|
+
"promotion-shell-ref",
|
|
297
|
+
"promotion-shell-sha",
|
|
298
|
+
"promotion-target-ref",
|
|
299
|
+
"publication-admission-json",
|
|
300
|
+
"publication-auto-admission",
|
|
301
|
+
"publication-auto-no-gate",
|
|
302
|
+
"publication-consumer-predicate-id",
|
|
303
|
+
"publication-consumer-qualification-command",
|
|
304
|
+
"publication-control-plane-audit-json",
|
|
305
|
+
"publication-expected-json",
|
|
306
|
+
"publication-gate-aggregate-json",
|
|
307
|
+
"publication-package-name",
|
|
308
|
+
"publication-product",
|
|
309
|
+
"publication-publisher-workflow-path",
|
|
310
|
+
"publication-runner-provenance-json",
|
|
311
|
+
"publication-target",
|
|
312
|
+
"publication-used-nonces-json",
|
|
313
|
+
"publication-used-qualification-nonces-json",
|
|
314
|
+
"publish-artifact-kind",
|
|
315
|
+
"publish-command",
|
|
316
|
+
"publish-dist-tag",
|
|
317
|
+
"publish-mode",
|
|
318
|
+
"publish-package-main",
|
|
319
|
+
"publish-package-set-order",
|
|
320
|
+
"publish-required-artifacts-json",
|
|
321
|
+
"publish-target",
|
|
322
|
+
"release-candidate-workflow-file",
|
|
323
|
+
"release-candidate-workflow-name",
|
|
324
|
+
"release-passport",
|
|
325
|
+
"release-passport-buildchain-self-kfd",
|
|
326
|
+
"release-passport-impact-json",
|
|
327
|
+
"release-passport-kfd-1-witness-jsons",
|
|
328
|
+
"release-passport-kfd-2-claim-jsons",
|
|
329
|
+
"release-passport-kfd-3-artifact-verify-command",
|
|
330
|
+
"release-passport-kfd-3-artifact-witness-jsons",
|
|
331
|
+
"release-passport-kfd-3-prebuild-witness-jsons",
|
|
332
|
+
"release-passport-output-dir",
|
|
333
|
+
"release-passport-platform-manifest-paths",
|
|
334
|
+
"release-passport-product-name",
|
|
335
|
+
"required-artifact-count",
|
|
336
|
+
"required-status-check",
|
|
337
|
+
"runner-preset",
|
|
338
|
+
"target-ref",
|
|
339
|
+
"target-sha",
|
|
340
|
+
"trusted-publishing"
|
|
341
|
+
],
|
|
342
|
+
"inputCount": 70,
|
|
343
|
+
"secrets": [
|
|
344
|
+
"BUILDCHAIN_ISSUE_APP_ID",
|
|
345
|
+
"BUILDCHAIN_ISSUE_APP_PRIVATE_KEY",
|
|
346
|
+
"BUILDCHAIN_ISSUE_TOKEN",
|
|
347
|
+
"BUILDCHAIN_PROMOTION_TOKEN",
|
|
348
|
+
"buildchain-issue-app-id",
|
|
349
|
+
"buildchain-issue-app-private-key",
|
|
350
|
+
"buildchain-issue-token"
|
|
351
|
+
],
|
|
352
|
+
"secretCount": 7,
|
|
353
|
+
"outputs": [
|
|
354
|
+
"built-source-sha",
|
|
355
|
+
"controller-plan-artifact",
|
|
356
|
+
"controller-plan-digest",
|
|
357
|
+
"controller-plan-json",
|
|
358
|
+
"controller-receipt-artifact",
|
|
359
|
+
"controller-receipt-digest",
|
|
360
|
+
"controller-receipt-json",
|
|
361
|
+
"controller-receipt-status",
|
|
362
|
+
"promoted-sha",
|
|
363
|
+
"publication-capability-digest",
|
|
364
|
+
"release-candidate-artifact"
|
|
365
|
+
],
|
|
366
|
+
"outputCount": 11,
|
|
367
|
+
"surface": "reusable-workflow",
|
|
368
|
+
"capabilityGroup": "api-cli-reference",
|
|
369
|
+
"status": "active"
|
|
370
|
+
},
|
|
266
371
|
{
|
|
267
372
|
"id": ".release-docker",
|
|
268
373
|
"path": ".github/workflows/.release-docker.yml",
|
|
@@ -1324,11 +1429,14 @@
|
|
|
1324
1429
|
"branch-protection-bypass-apps",
|
|
1325
1430
|
"branch-protection-bypass-teams",
|
|
1326
1431
|
"branch-protection-bypass-users",
|
|
1432
|
+
"buildchain-alpha-contract-lock-path",
|
|
1433
|
+
"buildchain-channel",
|
|
1327
1434
|
"buildchain-contract-compatibility-policy",
|
|
1328
1435
|
"buildchain-contract-drift-issue-mode",
|
|
1329
1436
|
"buildchain-contract-lock-path",
|
|
1330
1437
|
"buildchain-ref",
|
|
1331
1438
|
"buildchain-repository",
|
|
1439
|
+
"buildchain-stable-contract-lock-path",
|
|
1332
1440
|
"channel",
|
|
1333
1441
|
"dry-run",
|
|
1334
1442
|
"github-release",
|
|
@@ -1378,7 +1486,7 @@
|
|
|
1378
1486
|
"target-sha",
|
|
1379
1487
|
"trusted-publishing"
|
|
1380
1488
|
],
|
|
1381
|
-
"inputCount":
|
|
1489
|
+
"inputCount": 62,
|
|
1382
1490
|
"secrets": [
|
|
1383
1491
|
"BUILDCHAIN_ISSUE_APP_ID",
|
|
1384
1492
|
"BUILDCHAIN_ISSUE_APP_PRIVATE_KEY",
|
|
@@ -1390,6 +1498,7 @@
|
|
|
1390
1498
|
],
|
|
1391
1499
|
"secretCount": 7,
|
|
1392
1500
|
"outputs": [
|
|
1501
|
+
"buildchain-channel",
|
|
1393
1502
|
"built-source-sha",
|
|
1394
1503
|
"controller-plan-artifact",
|
|
1395
1504
|
"controller-plan-digest",
|
|
@@ -1399,10 +1508,21 @@
|
|
|
1399
1508
|
"controller-receipt-json",
|
|
1400
1509
|
"controller-receipt-status",
|
|
1401
1510
|
"promoted-sha",
|
|
1511
|
+
"promotion-contract-lock-digest",
|
|
1512
|
+
"promotion-contract-lock-path",
|
|
1513
|
+
"promotion-override-used",
|
|
1514
|
+
"promotion-publication-channel",
|
|
1515
|
+
"promotion-router-ref",
|
|
1516
|
+
"promotion-router-sha",
|
|
1517
|
+
"promotion-runtime-ref",
|
|
1518
|
+
"promotion-runtime-sha",
|
|
1519
|
+
"promotion-shell-ref",
|
|
1520
|
+
"promotion-shell-sha",
|
|
1521
|
+
"promotion-target-ref",
|
|
1402
1522
|
"publication-capability-digest",
|
|
1403
1523
|
"release-candidate-artifact"
|
|
1404
1524
|
],
|
|
1405
|
-
"outputCount":
|
|
1525
|
+
"outputCount": 23,
|
|
1406
1526
|
"surface": "release-governance",
|
|
1407
1527
|
"capabilityGroup": "reusable-build",
|
|
1408
1528
|
"status": "active"
|
|
@@ -1627,6 +1747,7 @@
|
|
|
1627
1747
|
"release-passport-output-dir",
|
|
1628
1748
|
"release-passport-platform-manifest-paths",
|
|
1629
1749
|
"release-passport-product-name",
|
|
1750
|
+
"release-passport-promotion-routing-json",
|
|
1630
1751
|
"require-governance",
|
|
1631
1752
|
"require-publication-qualification",
|
|
1632
1753
|
"require-publish-source-lock",
|
|
@@ -1639,7 +1760,7 @@
|
|
|
1639
1760
|
"transaction-state-path",
|
|
1640
1761
|
"verification-command"
|
|
1641
1762
|
],
|
|
1642
|
-
"inputCount":
|
|
1763
|
+
"inputCount": 60,
|
|
1643
1764
|
"capabilityGroup": "release-passport-trust",
|
|
1644
1765
|
"status": "active"
|
|
1645
1766
|
},
|
|
@@ -37,6 +37,14 @@ migrate to `release-candidate-promote.yml@v2` or a project-owned
|
|
|
37
37
|
`lifecycle.publish` command behind a publish-gate source lock, so floating
|
|
38
38
|
`@v2` consumers cannot bypass source-lock drift protection.
|
|
39
39
|
|
|
40
|
+
The public promotion workflow is now a generated dual-channel router. Existing
|
|
41
|
+
callers remain source-compatible, while callers that want alpha workflow-shell
|
|
42
|
+
fixes before stable promotion should add `buildchain-channel: auto` plus
|
|
43
|
+
`buildchain-alpha-contract-lock-path` and
|
|
44
|
+
`buildchain-stable-contract-lock-path`. Keep one common promotion declaration;
|
|
45
|
+
do not duplicate alpha and stable jobs or call
|
|
46
|
+
`.release-candidate-promote.yml` directly.
|
|
47
|
+
|
|
40
48
|
## Migrated Actions
|
|
41
49
|
|
|
42
50
|
No standalone `action-*` repository is shipped as a Buildchain action anymore.
|
|
@@ -108,6 +108,9 @@ jobs:
|
|
|
108
108
|
promote:
|
|
109
109
|
uses: kungfu-systems/buildchain/.github/workflows/release-candidate-promote.yml@v2
|
|
110
110
|
with:
|
|
111
|
+
buildchain-channel: auto
|
|
112
|
+
buildchain-alpha-contract-lock-path: .buildchain/alpha-contract-lock.json
|
|
113
|
+
buildchain-stable-contract-lock-path: .buildchain/contract-lock.json
|
|
111
114
|
channel: alpha
|
|
112
115
|
artifact-name: libnode
|
|
113
116
|
release-passport-kfd-1-witness-jsons: .buildchain/kfd/kfd-1/standard-contract.witness.json
|
|
@@ -729,7 +729,7 @@ but does not read, create, or move that ref.
|
|
|
729
729
|
|
|
730
730
|
Semver GitHub Release publication is owned by `promote-buildchain-ref`, not by
|
|
731
731
|
consumer shell glue. Consumers normally use the `release-candidate-promote.yml`
|
|
732
|
-
|
|
732
|
+
generated channel router, where GitHub Release publication is enabled by default and can be
|
|
733
733
|
disabled with `github-release: false`; the wrapper passes that declaration to
|
|
734
734
|
the action. After the publish transaction reaches `complete`, Buildchain creates
|
|
735
735
|
or updates the public GitHub Release and uploads the generated
|
|
@@ -764,9 +764,10 @@ When debugging or extending release behavior, read in this order:
|
|
|
764
764
|
2. `.github/workflows/release-verify.yml`
|
|
765
765
|
3. `.github/workflows/buildchain-ref-promotion.yml`
|
|
766
766
|
4. `.github/workflows/release-candidate-promote.yml`
|
|
767
|
-
5.
|
|
768
|
-
6. `actions/promote-buildchain-ref/
|
|
769
|
-
7. `
|
|
767
|
+
5. `.github/workflows/.release-candidate-promote.yml`
|
|
768
|
+
6. `actions/promote-buildchain-ref/README.md`
|
|
769
|
+
7. `actions/promote-buildchain-ref/src/`
|
|
770
|
+
8. `docs/migration-inventory.md`
|
|
770
771
|
|
|
771
772
|
That path gives the policy first, the workflow trigger second, and the action
|
|
772
773
|
implementation last.
|
|
@@ -743,6 +743,23 @@ It does not call `.build.yml`, does not create a matrix, and must fail before
|
|
|
743
743
|
publish if the RC evidence, payload set, or source-lock ref is missing or
|
|
744
744
|
ambiguous.
|
|
745
745
|
|
|
746
|
+
The public `release-candidate-promote.yml` is a generated channel router. It
|
|
747
|
+
derives the publication lane from `target-ref`, then selects the matching
|
|
748
|
+
advanced workflow shell, runtime, and consumer lock before the advanced
|
|
749
|
+
promotion starts:
|
|
750
|
+
|
|
751
|
+
- alpha targets use `.release-candidate-promote.yml@vN-alpha`, runtime
|
|
752
|
+
`vN-alpha`, and `buildchain-alpha-contract-lock-path`;
|
|
753
|
+
- release and major targets use `.release-candidate-promote.yml@vN`, runtime
|
|
754
|
+
`vN`, and `buildchain-stable-contract-lock-path`.
|
|
755
|
+
|
|
756
|
+
The router resolves immutable SHAs and the selected lock digest before candidate
|
|
757
|
+
download. The advanced shell verifies the same router, shell, runtime, lock,
|
|
758
|
+
channel, and target binding again. Train and exact-SHA runtime overrides remain
|
|
759
|
+
restricted to trusted `workflow_dispatch` actors with write, maintain, or admin
|
|
760
|
+
permission. Promotion controller evidence, the promotion copy of the release
|
|
761
|
+
candidate passport, and the final release passport record these identities.
|
|
762
|
+
|
|
746
763
|
```yaml
|
|
747
764
|
jobs:
|
|
748
765
|
promote:
|
|
@@ -751,6 +768,9 @@ jobs:
|
|
|
751
768
|
buildchain-issue-app-id: ${{ secrets.BUILDCHAIN_ISSUE_APP_ID }}
|
|
752
769
|
buildchain-issue-app-private-key: ${{ secrets.BUILDCHAIN_ISSUE_APP_PRIVATE_KEY }}
|
|
753
770
|
with:
|
|
771
|
+
buildchain-channel: auto
|
|
772
|
+
buildchain-alpha-contract-lock-path: .buildchain/alpha-contract-lock.json
|
|
773
|
+
buildchain-stable-contract-lock-path: .buildchain/contract-lock.json
|
|
754
774
|
channel: alpha
|
|
755
775
|
target-ref: alpha/v22/v22.22
|
|
756
776
|
artifact-name: libnode
|
|
@@ -769,10 +789,15 @@ jobs:
|
|
|
769
789
|
publish-package-set-order: platforms-first-main-last
|
|
770
790
|
publish-package-main: "@kungfu-tech/libnode"
|
|
771
791
|
release-passport-product-name: Libnode
|
|
772
|
-
buildchain-contract-lock-path: .buildchain/contract-lock.json
|
|
773
792
|
buildchain-contract-drift-issue-mode: compatible-and-breaking
|
|
774
793
|
```
|
|
775
794
|
|
|
795
|
+
Existing callers may keep `buildchain-contract-lock-path`; a non-empty explicit
|
|
796
|
+
path overrides channel-specific selection for compatibility. Migration only
|
|
797
|
+
requires adding the two channel lock inputs and may retain the remaining common
|
|
798
|
+
promotion declaration unchanged. Consumers must not call the dot-prefixed
|
|
799
|
+
advanced workflow directly.
|
|
800
|
+
|
|
776
801
|
`buildchain-issue-app-id` and `buildchain-issue-app-private-key` are optional
|
|
777
802
|
but recommended for cross-repository consumers. They should identify a GitHub
|
|
778
803
|
App installation with `issues: write` on `kungfu-systems/buildchain`; the
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kungfu-tech/buildchain",
|
|
3
|
-
"version": "2.14.3-alpha.
|
|
3
|
+
"version": "2.14.3-alpha.1",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Buildchain Release Passport, release governance, CLI toolkit, and site facts.",
|
|
6
6
|
"repository": "https://github.com/kungfu-systems/buildchain",
|