@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.
@@ -4,7 +4,7 @@
4
4
  "status": "passed",
5
5
  "summary": {
6
6
  "cliCommandCount": 83,
7
- "workflowCount": 48,
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": 59,
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": 11
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": 59
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": "822624c70c801b19f537335a451b240f4e82cc4435ad89f0298621d3a817a710",
3515
- "pageRegistryDigest": "4598f3d80d638f6aa5ed8541b9ddd47b2052408c1245fcc4b776e36a297ef99f"
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": "24c7f5210da277b79ce13356c439c14ea49f6c54ba9e083f42ce47fdfdacc55c"
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-18T22:57:23.219Z",
5
- "publishedAt": "2026-07-18T22:57:23.219Z",
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": "8b0423396f09f29e2ea05c38896228751767ab21",
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.0",
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-18T22:57:23.219Z",
5
- "publishedAt": "2026-07-18T22:57:23.219Z",
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": "8b0423396f09f29e2ea05c38896228751767ab21",
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.0",
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:1fc581cf1b4e4a202464c8d6671b3bff12d0b349760246a951e88ef524f99e6b"
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:80018cf78785431e67bbc5278d82dda80d0baa320cdb5e4abda26a0b05e5c0bc"
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:a2092c8064332cec9a4be852b24d94f90625cb45f885c4c3208f7068a643a3f0"
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:e64ffd6183eaa7b73f8c0c133a645ced22212bca70c9609ad5f667cf3830aaae"
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": 59,
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": 11,
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": 59,
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
- wrapper, where GitHub Release publication is enabled by default and can be
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. `actions/promote-buildchain-ref/README.md`
768
- 6. `actions/promote-buildchain-ref/src/`
769
- 7. `docs/migration-inventory.md`
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.0",
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",