@kungfu-tech/buildchain 3.0.8 → 3.0.9-alpha.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.
Files changed (57) hide show
  1. package/actions/promote-buildchain-ref/README.md +8 -7
  2. package/bin/buildchain.mjs +34 -33
  3. package/bin/internal/trust-release-release-handlers.mjs +5 -0
  4. package/dist/site/agent-index.json +0 -1
  5. package/dist/site/artifact-schemas.json +0 -2
  6. package/dist/site/badge-endpoint-registry.json +9 -9
  7. package/dist/site/badges/v1/kfd-8/aligned.json +1 -1
  8. package/dist/site/badges/v1/kfd-8/declared.json +1 -1
  9. package/dist/site/badges/v1/kfd-8/downgraded.json +1 -1
  10. package/dist/site/badges/v1/kfd-8/draft.json +1 -1
  11. package/dist/site/badges/v1/kfd-8/failed.json +1 -1
  12. package/dist/site/badges/v1/kfd-8/missing.json +1 -1
  13. package/dist/site/badges/v1/kfd-8/passed.json +1 -1
  14. package/dist/site/badges/v1/kfd-8/planned.json +1 -1
  15. package/dist/site/buildchain-contract.json +27 -22
  16. package/dist/site/buildchain-site.json +38 -28
  17. package/dist/site/capability-registry.json +1 -1
  18. package/dist/site/cli-registry.json +8 -7
  19. package/dist/site/controller-registry.json +6 -2
  20. package/dist/site/kfd-claims.json +34 -7
  21. package/dist/site/kfd-upstream-aggregate.json +10 -10
  22. package/dist/site/manual-registry.json +6 -6
  23. package/dist/site/node-api-registry.json +754 -228
  24. package/dist/site/page-registry.json +28 -18
  25. package/dist/site/public-surface-audit.json +19 -9
  26. package/dist/site/publication-registry.json +4 -4
  27. package/dist/site/release-passport-check-manifest.json +33 -5
  28. package/dist/site/release-provenance.json +2 -1
  29. package/dist/site/schemas/release-passport-v1.schema.json +3 -0
  30. package/dist/site/site-manifest.json +10 -10
  31. package/dist/site/workflow-registry.json +19 -9
  32. package/docs/aws-us-elastic-runner-burst-plane.md +15 -3
  33. package/docs/cli-reference.md +6 -6
  34. package/docs/cli.md +2 -3
  35. package/docs/dev-alpha-candidate-patrol.md +45 -20
  36. package/docs/kfd-support.md +7 -7
  37. package/docs/node-api-reference.md +179 -140
  38. package/docs/release-passport.md +18 -12
  39. package/docs/release-train.md +8 -0
  40. package/package.json +4 -3
  41. package/packages/core/artifact-verification-envelope.js +114 -0
  42. package/packages/core/dev-alpha-active-release-train.js +460 -0
  43. package/packages/core/dev-alpha-candidate-selection.js +181 -0
  44. package/packages/core/index.js +4 -5
  45. package/packages/core/kfd-adopter-manifest.js +390 -0
  46. package/packages/core/kfd-product-gates.js +0 -300
  47. package/packages/core/release-passport-contract.js +219 -6
  48. package/packages/core/release-passport.js +139 -242
  49. package/scripts/aws-macos-jit-controller-core.mjs +76 -0
  50. package/scripts/aws-macos-jit-controller.mjs +29 -0
  51. package/scripts/aws-macos-jit-source-rebind.mjs +503 -0
  52. package/scripts/buildchain-cli-help.mjs +4 -2
  53. package/scripts/check-inventory.mjs +2 -2
  54. package/scripts/dev-alpha-candidate-patrol.mjs +196 -201
  55. package/scripts/generate-site-bundle.mjs +1 -8
  56. package/scripts/site-capability-metadata.mjs +3 -1
  57. package/dist/site/schemas/kfd-support-projection-v1.schema.json +0 -106
@@ -320,7 +320,7 @@
320
320
  {
321
321
  "id": "kfd-support",
322
322
  "source": "bin/buildchain.mjs",
323
- "usage": "buildchain kfd support project --matrix-json <file-or-json> --gate-json <file-or-json>..."
323
+ "usage": "buildchain kfd support project --manifest-json <file-or-json> --manifest-gate-json <file-or-json>"
324
324
  },
325
325
  {
326
326
  "id": "kfd-upstream-check",
@@ -1054,6 +1054,7 @@
1054
1054
  "release-passport-kfd-3-artifact-verify-command",
1055
1055
  "release-passport-kfd-3-artifact-witness-jsons",
1056
1056
  "release-passport-kfd-3-prebuild-witness-jsons",
1057
+ "release-passport-kfd-adopter-manifest-json",
1057
1058
  "release-passport-kfd-product-gate-jsons",
1058
1059
  "release-passport-kfd-support-matrix-json",
1059
1060
  "release-passport-output-dir",
@@ -1077,7 +1078,7 @@
1077
1078
  "target-sha",
1078
1079
  "trusted-publishing"
1079
1080
  ],
1080
- "inputCount": 110,
1081
+ "inputCount": 111,
1081
1082
  "secrets": [
1082
1083
  "BUILDCHAIN_ISSUE_APP_ID",
1083
1084
  "BUILDCHAIN_ISSUE_APP_PRIVATE_KEY",
@@ -1899,17 +1900,24 @@
1899
1900
  "secretCount": 1,
1900
1901
  "outputs": [
1901
1902
  "active-candidate-pr",
1903
+ "candidate-generation",
1904
+ "candidate-tree-sha",
1902
1905
  "controller-state",
1906
+ "cut-root",
1907
+ "drift-root",
1903
1908
  "eligible",
1909
+ "hold-root",
1904
1910
  "next-candidate-sha",
1905
1911
  "prior-state-root",
1906
1912
  "promotion-pr",
1907
1913
  "result-path",
1914
+ "runtime-sha",
1908
1915
  "selected-sha",
1909
1916
  "settlement-action",
1910
- "source-lock-ref"
1917
+ "source-lock-ref",
1918
+ "train-root"
1911
1919
  ],
1912
- "outputCount": 10
1920
+ "outputCount": 17
1913
1921
  },
1914
1922
  {
1915
1923
  "id": "dev-delivery-warrant-cancel",
@@ -2561,6 +2569,7 @@
2561
2569
  "release-passport-kfd-3-artifact-verify-command",
2562
2570
  "release-passport-kfd-3-artifact-witness-jsons",
2563
2571
  "release-passport-kfd-3-prebuild-witness-jsons",
2572
+ "release-passport-kfd-adopter-manifest-json",
2564
2573
  "release-passport-kfd-product-gate-jsons",
2565
2574
  "release-passport-kfd-support-matrix-json",
2566
2575
  "release-passport-output-dir",
@@ -2584,7 +2593,7 @@
2584
2593
  "target-sha",
2585
2594
  "trusted-publishing"
2586
2595
  ],
2587
- "inputCount": 101,
2596
+ "inputCount": 102,
2588
2597
  "secrets": [
2589
2598
  "BUILDCHAIN_ISSUE_APP_ID",
2590
2599
  "BUILDCHAIN_ISSUE_APP_PRIVATE_KEY",
@@ -2954,6 +2963,7 @@
2954
2963
  "release-passport-kfd-3-artifact-verify-command",
2955
2964
  "release-passport-kfd-3-artifact-witness-jsons",
2956
2965
  "release-passport-kfd-3-prebuild-witness-jsons",
2966
+ "release-passport-kfd-adopter-manifest-json",
2957
2967
  "release-passport-kfd-product-gate-jsons",
2958
2968
  "release-passport-kfd-support-matrix-json",
2959
2969
  "release-passport-output-dir",
@@ -2973,7 +2983,7 @@
2973
2983
  "transaction-state-path",
2974
2984
  "verification-command"
2975
2985
  ],
2976
- "inputCount": 80
2986
+ "inputCount": 81
2977
2987
  },
2978
2988
  {
2979
2989
  "id": "release-tail",
@@ -7992,9 +8002,9 @@
7992
8002
  "cliRegistryPath": "dist/site/cli-registry.json",
7993
8003
  "workflowRegistryPath": "dist/site/workflow-registry.json",
7994
8004
  "pageRegistryPath": "dist/site/page-registry.json",
7995
- "cliRegistryDigest": "e7b90e95dabcffb3fecb8e84cec48d7a99261c5e90732aff0ebc174b01c4e35c",
7996
- "workflowRegistryDigest": "964686c03a329b906a9f832d81c60eed8a50d2d2770b9b9f4ede2dbe32f9b98b",
7997
- "pageRegistryDigest": "83e4701148132712b684efb1f474943752ad8371e60f598f162b553f504e987f"
8005
+ "cliRegistryDigest": "099c0db9c5346942aee236af2cb7b6a7a91fbb2c54ebb17b7a2544a339c00d40",
8006
+ "workflowRegistryDigest": "7620a721ba5b6a49aecea324e64b3c1ba2086f05eebd2b287b88d67fa6e904c6",
8007
+ "pageRegistryDigest": "e3b142a9012a80b0478a48431fd2a3d5290301b667ceb565fb7314ef7f693214"
7998
8008
  },
7999
8009
  "comparison": {
8000
8010
  "missingCliRegistry": [],
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "contract": "kungfu-buildchain-publication-release-registry",
4
- "generatedAt": "2026-08-11T00:43:51.000Z",
5
- "publishedAt": "2026-08-11T00:43:51.000Z",
4
+ "generatedAt": "2026-08-11T02:37:23.000Z",
5
+ "publishedAt": "2026-08-11T02:37:23.000Z",
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": "827fa0252c0546816c33ec89e66ca505ad6d5162",
22
+ "sourceRevision": "6af9bdc4632a39f0c6af9aec6f856d885698d019",
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": "3.0.8",
35
+ "version": "3.0.9-alpha.0",
36
36
  "versionSource": "package.json#version"
37
37
  },
38
38
  "sourceKind": "package-site-bundle",
@@ -16,10 +16,11 @@
16
16
  "result": "check-report.json"
17
17
  },
18
18
  "kfdSupportProjection": {
19
- "inputSchema": "schemas/kfd-product-gate-input-v1.schema.json",
20
- "projectionSchema": "schemas/kfd-support-projection-v1.schema.json",
19
+ "authorityContract": "kfd.adopter-conformance-manifest/v1",
20
+ "gateContract": "kungfu-buildchain-kfd-adopter-manifest-gate",
21
+ "bindingContract": "kungfu-buildchain-kfd-adopter-release-binding",
21
22
  "evidence": "kfd-support.json",
22
- "rule": "The passport mirrors one product-owned support matrix and validated product-gate results without widening any claim state."
23
+ "rule": "The standard adopter manifest is the sole declaration authority; the legacy support matrix is an exact derived projection only."
23
24
  }
24
25
  },
25
26
  "ownership": {
@@ -42,6 +43,7 @@
42
43
  "platformArtifactManifests",
43
44
  "distTagPromotion",
44
45
  "controllerReceipts",
46
+ "kfdAdopter",
45
47
  "kfdSupport",
46
48
  "githubArtifactAttestations",
47
49
  "artifacts",
@@ -78,7 +80,16 @@
78
80
  "agentRuntimeAdapterRequest": "https://kfd.libkungfu.dev/schemas/kfd-agent-runtime/adapter-request.schema.json",
79
81
  "agentRuntimeAdapterResponse": "https://kfd.libkungfu.dev/schemas/kfd-agent-runtime/adapter-response.schema.json",
80
82
  "agentRuntimeSuite": "https://kfd.libkungfu.dev/schemas/kfd-agent-runtime/suite.schema.json",
81
- "agentRuntimeReport": "https://kfd.libkungfu.dev/schemas/kfd-agent-runtime/report.schema.json"
83
+ "agentRuntimeReport": "https://kfd.libkungfu.dev/schemas/kfd-agent-runtime/report.schema.json",
84
+ "selfConformanceState": "https://kfd.libkungfu.dev/schemas/kfd-self-conformance/state.schema.json",
85
+ "selfConformanceBootstrapAnchor": "https://kfd.libkungfu.dev/schemas/kfd-self-conformance/bootstrap-anchor.schema.json",
86
+ "selfConformanceTransitionBundle": "https://kfd.libkungfu.dev/schemas/kfd-self-conformance/transition-bundle.schema.json",
87
+ "selfConformanceTransitionReport": "https://kfd.libkungfu.dev/schemas/kfd-self-conformance/transition-report.schema.json",
88
+ "selfConformancePackageManifest": "https://kfd.libkungfu.dev/schemas/kfd-self-conformance/package-manifest.schema.json",
89
+ "selfConformanceVectorRegistry": "https://kfd.libkungfu.dev/schemas/kfd-self-conformance/vector-registry.schema.json",
90
+ "selfConformanceLifecycleGateRequest": "https://kfd.libkungfu.dev/schemas/kfd-self-conformance/lifecycle-gate-request.schema.json",
91
+ "selfConformanceLifecycleGateReport": "https://kfd.libkungfu.dev/schemas/kfd-self-conformance/lifecycle-gate-report.schema.json",
92
+ "adopterConformanceManifest": "https://kfd.libkungfu.dev/schemas/kfd-adopter-conformance/manifest.schema.json"
82
93
  },
83
94
  "schemaPaths": {
84
95
  "metadata": "schemas/kfd-standards.schema.json",
@@ -100,7 +111,16 @@
100
111
  "agentRuntimeAdapterRequest": "schemas/kfd-agent-runtime/adapter-request.schema.json",
101
112
  "agentRuntimeAdapterResponse": "schemas/kfd-agent-runtime/adapter-response.schema.json",
102
113
  "agentRuntimeSuite": "schemas/kfd-agent-runtime/suite.schema.json",
103
- "agentRuntimeReport": "schemas/kfd-agent-runtime/report.schema.json"
114
+ "agentRuntimeReport": "schemas/kfd-agent-runtime/report.schema.json",
115
+ "selfConformanceState": "schemas/kfd-self-conformance/state.schema.json",
116
+ "selfConformanceBootstrapAnchor": "schemas/kfd-self-conformance/bootstrap-anchor.schema.json",
117
+ "selfConformanceTransitionBundle": "schemas/kfd-self-conformance/transition-bundle.schema.json",
118
+ "selfConformanceTransitionReport": "schemas/kfd-self-conformance/transition-report.schema.json",
119
+ "selfConformancePackageManifest": "schemas/kfd-self-conformance/package-manifest.schema.json",
120
+ "selfConformanceVectorRegistry": "schemas/kfd-self-conformance/vector-registry.schema.json",
121
+ "selfConformanceLifecycleGateRequest": "schemas/kfd-self-conformance/lifecycle-gate-request.schema.json",
122
+ "selfConformanceLifecycleGateReport": "schemas/kfd-self-conformance/lifecycle-gate-report.schema.json",
123
+ "adopterConformanceManifest": "schemas/kfd-adopter-conformance/manifest.schema.json"
104
124
  },
105
125
  "compatibility": {
106
126
  "packageLine": "v1.0",
@@ -193,6 +213,14 @@
193
213
  {
194
214
  "when": "kfdSupport is present",
195
215
  "pointer": "evidence.kfdSupport"
216
+ },
217
+ {
218
+ "when": "kfdAdopter is present",
219
+ "pointer": "evidence.kfdAdopterManifest"
220
+ },
221
+ {
222
+ "when": "kfdAdopter is present",
223
+ "pointer": "evidence.kfdAdopterGate"
196
224
  }
197
225
  ],
198
226
  "rule": "The normative checker resolves every declared sibling relative to the passport and fails closed on missing required evidence, digest drift, or semantic mismatch."
@@ -30,6 +30,8 @@
30
30
  "./issue-reporting": "./packages/core/issue-reporting.js",
31
31
  "./kfd": "./packages/core/kfd.js",
32
32
  "./kfd-product-gates": "./packages/core/kfd-product-gates.js",
33
+ "./kfd-adopter-manifest": "./packages/core/kfd-adopter-manifest.js",
34
+ "./kfd-adopter-release-binding": "./packages/core/artifact-verification-envelope.js",
33
35
  "./kfd-agent-hub": "./packages/core/kfd-agent-hub.js",
34
36
  "./buildchain-layout": "./packages/core/buildchain-layout.js",
35
37
  "./release-line-bootstrap": "./packages/core/release-line-bootstrap.js",
@@ -84,7 +86,6 @@
84
86
  "./site/schemas/release-passport-v1.schema.json": "./dist/site/schemas/release-passport-v1.schema.json",
85
87
  "./site/schemas/kfd-agent-hub-adoption.schema.json": "./dist/site/schemas/kfd-agent-hub-adoption.schema.json",
86
88
  "./site/schemas/kfd-product-gate-input-v1.schema.json": "./dist/site/schemas/kfd-product-gate-input-v1.schema.json",
87
- "./site/schemas/kfd-support-projection-v1.schema.json": "./dist/site/schemas/kfd-support-projection-v1.schema.json",
88
89
  "./site/buildchain-contract.json": "./dist/site/buildchain-contract.json",
89
90
  "./site/product-mechanism.json": "./dist/site/product-mechanism.json",
90
91
  "./site/release-provenance.json": "./dist/site/release-provenance.json",
@@ -202,6 +202,9 @@
202
202
  "kfd-3": {
203
203
  "type": "object"
204
204
  },
205
+ "kfdAdopter": {
206
+ "type": "object"
207
+ },
205
208
  "kfdSupport": {
206
209
  "type": "object"
207
210
  }
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "contract": "kungfu-buildchain-site-manifest",
4
- "generatedAt": "2026-08-11T00:43:51.000Z",
5
- "publishedAt": "2026-08-11T00:43:51.000Z",
4
+ "generatedAt": "2026-08-11T02:37:23.000Z",
5
+ "publishedAt": "2026-08-11T02:37:23.000Z",
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": "827fa0252c0546816c33ec89e66ca505ad6d5162",
22
+ "sourceRevision": "6af9bdc4632a39f0c6af9aec6f856d885698d019",
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": "3.0.8",
40
+ "version": "3.0.9-alpha.0",
41
41
  "versionSource": "package.json#version"
42
42
  },
43
43
  "entrypoint": "buildchain-site.json",
@@ -85,7 +85,7 @@
85
85
  "path": "docs/release-passport.md",
86
86
  "plane": "verify",
87
87
  "exists": true,
88
- "digest": "sha256:e1ca1d470de4faeb9f7f0a57228aebbc166d0c96d03a5603fc576ad955c497a4"
88
+ "digest": "sha256:4ce3c2edb095d7a103b3b1d22033b4ac3709ce709f8990b21995d491898bd051"
89
89
  },
90
90
  {
91
91
  "id": "github-artifact-attestation",
@@ -133,7 +133,7 @@
133
133
  "path": "docs/release-train.md",
134
134
  "plane": "verify",
135
135
  "exists": true,
136
- "digest": "sha256:550e50726ff479730bee1abe7839776308396bb01613e31a3ed6e898297619fa"
136
+ "digest": "sha256:7e97af1d4b32e34e944e5137d8a4d3b4efdd357e0542b4f483d941bc003be495"
137
137
  },
138
138
  {
139
139
  "id": "release-propagation",
@@ -229,7 +229,7 @@
229
229
  "path": "docs/cli.md",
230
230
  "plane": "use",
231
231
  "exists": true,
232
- "digest": "sha256:1707dd8989e1630b5ba9381c6f8aabbbc64288590628cbae9058ea6f56f9037c"
232
+ "digest": "sha256:142d4c11dde521dae8d829372ef28eb0b7b4d05ff29d0ce35d7fc33a7230dca5"
233
233
  },
234
234
  {
235
235
  "id": "cli-reference",
@@ -237,7 +237,7 @@
237
237
  "path": "docs/cli-reference.md",
238
238
  "plane": "use",
239
239
  "exists": true,
240
- "digest": "sha256:3b203848db87e68762417e768eb8a09a7e653eb30fb7cc21354e72678706b714"
240
+ "digest": "sha256:9b3b7425b5a487afa81520cfac215466c71265915c1465bf6f185cb42b1c340e"
241
241
  },
242
242
  {
243
243
  "id": "node-api-reference",
@@ -245,7 +245,7 @@
245
245
  "path": "docs/node-api-reference.md",
246
246
  "plane": "use",
247
247
  "exists": true,
248
- "digest": "sha256:34f39632494c0f4d4961fd79fc8ac94466da56c29f04f09e706f402d98ef125c"
248
+ "digest": "sha256:5caa3d6020c9449cb57bdeff92ec04255e7dafca8dd3639d3e134d72e75c5a2d"
249
249
  },
250
250
  {
251
251
  "id": "build-facts",
@@ -261,7 +261,7 @@
261
261
  "path": "docs/kfd-support.md",
262
262
  "plane": "verify",
263
263
  "exists": true,
264
- "digest": "sha256:3a6143e450ab7976a50788fee48ec4d7313706774ff5cf8f71075a7b9e196e01"
264
+ "digest": "sha256:4efc8fb6f94293b75606aa0631dfa122edccc970c2cfc00c7e35f81817ea8335"
265
265
  },
266
266
  {
267
267
  "id": "kfd-agent-hub",
@@ -543,6 +543,7 @@
543
543
  "release-passport-kfd-3-artifact-verify-command",
544
544
  "release-passport-kfd-3-artifact-witness-jsons",
545
545
  "release-passport-kfd-3-prebuild-witness-jsons",
546
+ "release-passport-kfd-adopter-manifest-json",
546
547
  "release-passport-kfd-product-gate-jsons",
547
548
  "release-passport-kfd-support-matrix-json",
548
549
  "release-passport-output-dir",
@@ -566,7 +567,7 @@
566
567
  "target-sha",
567
568
  "trusted-publishing"
568
569
  ],
569
- "inputCount": 110,
570
+ "inputCount": 111,
570
571
  "secrets": [
571
572
  "BUILDCHAIN_ISSUE_APP_ID",
572
573
  "BUILDCHAIN_ISSUE_APP_PRIVATE_KEY",
@@ -1698,17 +1699,24 @@
1698
1699
  "secretCount": 1,
1699
1700
  "outputs": [
1700
1701
  "active-candidate-pr",
1702
+ "candidate-generation",
1703
+ "candidate-tree-sha",
1701
1704
  "controller-state",
1705
+ "cut-root",
1706
+ "drift-root",
1702
1707
  "eligible",
1708
+ "hold-root",
1703
1709
  "next-candidate-sha",
1704
1710
  "prior-state-root",
1705
1711
  "promotion-pr",
1706
1712
  "result-path",
1713
+ "runtime-sha",
1707
1714
  "selected-sha",
1708
1715
  "settlement-action",
1709
- "source-lock-ref"
1716
+ "source-lock-ref",
1717
+ "train-root"
1710
1718
  ],
1711
- "outputCount": 10,
1719
+ "outputCount": 17,
1712
1720
  "surface": "repository-patrol",
1713
1721
  "capabilityGroup": "governance-versioning",
1714
1722
  "status": "active",
@@ -1953,7 +1961,7 @@
1953
1961
  "status": "preview",
1954
1962
  "owner": "buildchain-workflows",
1955
1963
  "maturity": "preview",
1956
- "introducedVersion": "3.0.8",
1964
+ "introducedVersion": "3.0.9-alpha.0",
1957
1965
  "compatibilityPromise": "preserved-through-the-v3-major-line",
1958
1966
  "deprecationReplacement": "",
1959
1967
  "sunsetCondition": "explicit-breaking-change-review-in-a-future-major-line",
@@ -1974,7 +1982,7 @@
1974
1982
  "status": "preview",
1975
1983
  "owner": "buildchain-workflows",
1976
1984
  "maturity": "preview",
1977
- "introducedVersion": "3.0.8",
1985
+ "introducedVersion": "3.0.9-alpha.0",
1978
1986
  "compatibilityPromise": "preserved-through-the-v3-major-line",
1979
1987
  "deprecationReplacement": "",
1980
1988
  "sunsetCondition": "explicit-breaking-change-review-in-a-future-major-line",
@@ -1995,7 +2003,7 @@
1995
2003
  "status": "preview",
1996
2004
  "owner": "buildchain-workflows",
1997
2005
  "maturity": "preview",
1998
- "introducedVersion": "3.0.8",
2006
+ "introducedVersion": "3.0.9-alpha.0",
1999
2007
  "compatibilityPromise": "preserved-through-the-v3-major-line",
2000
2008
  "deprecationReplacement": "",
2001
2009
  "sunsetCondition": "explicit-breaking-change-review-in-a-future-major-line",
@@ -2045,7 +2053,7 @@
2045
2053
  "status": "preview",
2046
2054
  "owner": "buildchain-workflows",
2047
2055
  "maturity": "preview",
2048
- "introducedVersion": "3.0.8",
2056
+ "introducedVersion": "3.0.9-alpha.0",
2049
2057
  "compatibilityPromise": "preserved-through-the-v3-major-line",
2050
2058
  "deprecationReplacement": "",
2051
2059
  "sunsetCondition": "explicit-breaking-change-review-in-a-future-major-line",
@@ -2560,6 +2568,7 @@
2560
2568
  "release-passport-kfd-3-artifact-verify-command",
2561
2569
  "release-passport-kfd-3-artifact-witness-jsons",
2562
2570
  "release-passport-kfd-3-prebuild-witness-jsons",
2571
+ "release-passport-kfd-adopter-manifest-json",
2563
2572
  "release-passport-kfd-product-gate-jsons",
2564
2573
  "release-passport-kfd-support-matrix-json",
2565
2574
  "release-passport-output-dir",
@@ -2583,7 +2592,7 @@
2583
2592
  "target-sha",
2584
2593
  "trusted-publishing"
2585
2594
  ],
2586
- "inputCount": 101,
2595
+ "inputCount": 102,
2587
2596
  "secrets": [
2588
2597
  "BUILDCHAIN_ISSUE_APP_ID",
2589
2598
  "BUILDCHAIN_ISSUE_APP_PRIVATE_KEY",
@@ -3082,6 +3091,7 @@
3082
3091
  "release-passport-kfd-3-artifact-verify-command",
3083
3092
  "release-passport-kfd-3-artifact-witness-jsons",
3084
3093
  "release-passport-kfd-3-prebuild-witness-jsons",
3094
+ "release-passport-kfd-adopter-manifest-json",
3085
3095
  "release-passport-kfd-product-gate-jsons",
3086
3096
  "release-passport-kfd-support-matrix-json",
3087
3097
  "release-passport-output-dir",
@@ -3101,7 +3111,7 @@
3101
3111
  "transaction-state-path",
3102
3112
  "verification-command"
3103
3113
  ],
3104
- "inputCount": 80,
3114
+ "inputCount": 81,
3105
3115
  "capabilityGroup": "release-passport-trust",
3106
3116
  "status": "active",
3107
3117
  "owner": "buildchain-actions",
@@ -380,7 +380,7 @@ host, including at least one full run, plus proof that:
380
380
  ### Phase 3 lifecycle controller
381
381
 
382
382
  `scripts/aws-macos-jit-controller.mjs` is the operator boundary for the paid
383
- campaign. It has three explicit mutation modes:
383
+ campaign. It has four explicit mutation modes:
384
384
 
385
385
  - `launch-campaign` binds the exact repository source, AMI, availability zone,
386
386
  tagged Dedicated Host, and reusable instance. Before paid allocation it
@@ -395,6 +395,16 @@ campaign. It has three explicit mutation modes:
395
395
  mode-0600 temporary file into a distinct SSM SecureString, sends only the
396
396
  credential-free bootstrap through SSM, and removes the parameter plus runner
397
397
  registration if command delivery fails.
398
+ - `rebind-campaign` repairs the source of an allocated but unused campaign
399
+ without buying another host. It requires the workflow to remain manually
400
+ disabled, the replacement source to be a strict descendant on the same
401
+ campaign ref, and every prior matching run to contain zero jobs and zero
402
+ artifacts. It also requires no registered JIT runner, SSM parameter, or
403
+ bootstrap evidence and verifies the one exact host, instance, and encrypted
404
+ volume. The operation updates only those resources' source tags and the
405
+ existing GitHub ref, emits a zero-allocation receipt, and compensates back to
406
+ the prior source if the ref update or readback fails. It never calls
407
+ `AllocateHosts`, `RunInstances`, or workflow dispatch.
398
408
  - `close-campaign` refuses execution before the provider's 24-hour minimum,
399
409
  verifies the encrypted delete-on-termination root volume, removes scoped JIT
400
410
  residue, terminates the exact instance, and requires a `ReleaseHosts` DryRun
@@ -405,8 +415,10 @@ campaign. It has three explicit mutation modes:
405
415
  Every execute mode requires the exact source SHA and campaign id to be repeated
406
416
  through `--confirm-source-sha` and `--confirm-campaign-id`. `run-job` also
407
417
  requires `--confirm-run-id`; `launch-campaign` additionally requires the
408
- expected workload account through `--account-id`. Omitting `--execute` emits a
409
- deterministic plan without changing AWS or GitHub state.
418
+ expected workload account through `--account-id`. `rebind-campaign`
419
+ additionally repeats the prior source, host, and instance identities and
420
+ requires `--confirm-zero-allocation`. Omitting `--execute` emits a deterministic
421
+ plan without changing AWS or GitHub state.
410
422
 
411
423
  ## Provider lifecycle
412
424
 
@@ -203,11 +203,11 @@ buildchain collect
203
203
 
204
204
  - Help: `buildchain collect github-release --help`
205
205
  - Canonical id: `collect-github-release`
206
- - Options: `--anchor-manifest-json`, `--assets-dir`, `--assets-json`, `--base-passport-json`, `--build-facts-json`, `--build-summary-json`, `--dist-tag-evidence-json`, `--github-artifact-attestation-policy-json`, `--impact-json`, `--invariant-passport-cmd`, `--invariant-passport-json`, `--json`, `--kfd-1-witness-json`, `--kfd-2-claim-json`, `--kfd-3-artifact-verify-cmd`, `--kfd-3-artifact-witness-json`, `--kfd-3-prebuild-witness-json`, `--kfd-agent-hub-evidence-json`, `--kfd-product-gate-json`, `--kfd-support-matrix-json`, `--output-dir`, `--package-set-json`, `--platform-manifest-json`, `--product-name`, `--publish-evidence-json`, `--publish-json`, `--release-evidence-json`, `--release-extra-json`, `--release-json`, `--repository`, `--require-base-kfd`, `--tag`, `--transaction-json`, `--trusted-publishing-json`
206
+ - Options: `--anchor-manifest-json`, `--assets-dir`, `--assets-json`, `--base-passport-json`, `--build-facts-json`, `--build-summary-json`, `--dist-tag-evidence-json`, `--github-artifact-attestation-policy-json`, `--impact-json`, `--invariant-passport-cmd`, `--invariant-passport-json`, `--json`, `--kfd-1-witness-json`, `--kfd-2-claim-json`, `--kfd-3-artifact-verify-cmd`, `--kfd-3-artifact-witness-json`, `--kfd-3-prebuild-witness-json`, `--kfd-adopter-manifest-json`, `--kfd-agent-hub-evidence-json`, `--kfd-product-gate-json`, `--kfd-support-matrix-json`, `--output-dir`, `--package-set-json`, `--platform-manifest-json`, `--product-name`, `--publish-evidence-json`, `--publish-json`, `--release-evidence-json`, `--release-extra-json`, `--release-json`, `--repository`, `--require-base-kfd`, `--tag`, `--transaction-json`, `--trusted-publishing-json`
207
207
  - Syntax:
208
208
 
209
209
  ```text
210
- buildchain collect github-release --tag <tag> [--repository <owner/repo>] [--assets-dir <dir>] [--assets-json <json-or-path>] [--release-json <json-or-path>] [--package-set-json <json-or-path>] [--product-name <name>] [--publish-evidence-json <json-or-path>] [--trusted-publishing-json <json-or-path>] [--transaction-json <json-or-path>] [--anchor-manifest-json <json-or-path>] [--impact-json <json-or-path>] [--build-summary-json <json-or-path>] [--build-facts-json <json-or-path>]... [--platform-manifest-json <json-or-path>]... [--dist-tag-evidence-json <json-or-path>] [--kfd-1-witness-json <json-or-path>]... [--kfd-2-claim-json <json-or-path>]... [--kfd-3-prebuild-witness-json <json-or-path>]... [--kfd-3-artifact-witness-json <json-or-path>]... [--kfd-3-artifact-verify-cmd <command>] [--kfd-support-matrix-json <json-or-path>] [--kfd-product-gate-json <json-or-path>]... [--invariant-passport-json <json-or-path>]... [--invariant-passport-cmd <command>] [--release-evidence-json <json-or-path>]... [--github-artifact-attestation-policy-json <json-or-path>]... [--kfd-agent-hub-evidence-json <json-or-path>] [--base-passport-json <json-or-path>] [--require-base-kfd] [--release-extra-json <json-or-path>] [--publish-json <json-or-path>] [--output-dir <dir>] [--json]
210
+ buildchain collect github-release --tag <tag> [--repository <owner/repo>] [--assets-dir <dir>] [--assets-json <json-or-path>] [--release-json <json-or-path>] [--package-set-json <json-or-path>] [--product-name <name>] [--publish-evidence-json <json-or-path>] [--trusted-publishing-json <json-or-path>] [--transaction-json <json-or-path>] [--anchor-manifest-json <json-or-path>] [--impact-json <json-or-path>] [--build-summary-json <json-or-path>] [--build-facts-json <json-or-path>]... [--platform-manifest-json <json-or-path>]... [--dist-tag-evidence-json <json-or-path>] [--kfd-1-witness-json <json-or-path>]... [--kfd-2-claim-json <json-or-path>]... [--kfd-3-prebuild-witness-json <json-or-path>]... [--kfd-3-artifact-witness-json <json-or-path>]... [--kfd-3-artifact-verify-cmd <command>] [--kfd-adopter-manifest-json <json-or-path>] [--kfd-support-matrix-json <json-or-path>] [--kfd-product-gate-json <json-or-path>]... [--invariant-passport-json <json-or-path>]... [--invariant-passport-cmd <command>] [--release-evidence-json <json-or-path>]... [--github-artifact-attestation-policy-json <json-or-path>]... [--kfd-agent-hub-evidence-json <json-or-path>] [--base-passport-json <json-or-path>] [--require-base-kfd] [--release-extra-json <json-or-path>] [--publish-json <json-or-path>] [--output-dir <dir>] [--json]
211
211
  ```
212
212
 
213
213
  ## `create`
@@ -1230,22 +1230,22 @@ buildchain kfd status [--cwd <dir>] [--json]
1230
1230
 
1231
1231
  - Help: `buildchain kfd support project --help`
1232
1232
  - Canonical id: `kfd-support`
1233
- - Options: `--checked-at`, `--expected-source-sha`, `--gate-json`, `--json`, `--matrix-json`, `--output`
1233
+ - Options: `--checked-at`, `--expected-source-sha`, `--json`, `--manifest-gate-json`, `--manifest-json`, `--output`
1234
1234
  - Syntax:
1235
1235
 
1236
1236
  ```text
1237
- buildchain kfd support project --matrix-json <file-or-json> --gate-json <file-or-json>... [--expected-source-sha <sha>] [--checked-at <date-time>] [--output <file>] [--json]
1237
+ buildchain kfd support project --manifest-json <file-or-json> --manifest-gate-json <file-or-json> [--expected-source-sha <sha>] [--checked-at <date-time>] [--output <file>] [--json]
1238
1238
  ```
1239
1239
 
1240
1240
  ### `buildchain kfd support verify`
1241
1241
 
1242
1242
  - Help: `buildchain kfd support verify --help`
1243
1243
  - Canonical id: `kfd-support`
1244
- - Options: `--checked-at`, `--expected-source-sha`, `--json`, `--projection-json`
1244
+ - Options: `--checked-at`, `--expected-source-sha`, `--json`, `--manifest-gate-json`, `--manifest-json`, `--projection-json`
1245
1245
  - Syntax:
1246
1246
 
1247
1247
  ```text
1248
- buildchain kfd support verify --projection-json <file-or-json> [--expected-source-sha <sha>] [--checked-at <date-time>] [--json]
1248
+ buildchain kfd support verify --projection-json <file-or-json> --manifest-json <file-or-json> --manifest-gate-json <file-or-json> [--expected-source-sha <sha>] [--checked-at <date-time>] [--json]
1249
1249
  ```
1250
1250
 
1251
1251
  ### `buildchain kfd upstream check`
package/docs/cli.md CHANGED
@@ -442,9 +442,8 @@ buildchain kfd migrate-layout --write
442
442
  buildchain kfd 4 gate --input-json kfd-4-gate-input.json --output kfd-4-gate.json
443
443
  buildchain kfd 5 gate --input-json kfd-5-gate-input.json --output kfd-5-gate.json
444
444
  buildchain kfd 7 gate --input-json kfd-7-gate-input.json --output kfd-7-gate.json
445
- buildchain kfd support project --matrix-json support-matrix.json \
446
- --gate-json kfd-4-gate.json --gate-json kfd-5-gate.json \
447
- --gate-json kfd-7-gate.json --output kfd-support.json
445
+ buildchain kfd support project --manifest-json adopter-manifest.json \
446
+ --manifest-gate-json adopter-manifest-gate.json --output kfd-support.json
448
447
  ```
449
448
 
450
449
  KFD-1 commands generate and validate contract-world release evidence:
@@ -8,12 +8,12 @@ confidence: high
8
8
  sensitivity: public
9
9
  evidence_grade: A
10
10
  review_state: self-reviewed
11
- last_reviewed: 2026-08-04
11
+ last_reviewed: 2026-08-11
12
12
  ai_provenance:
13
13
  model_family: GPT-5
14
14
  product: Codex
15
- generated_at: 2026-08-04
16
- visible_context: Existing Buildchain source locks, Kungfu exact-source Alpha preflight, Dev Patrol, cancelled duplicate runs, protected auto-merge policy, repository release governance, and the consumer-owned settlement renderer threat model.
15
+ generated_at: 2026-08-11
16
+ visible_context: Buildchain v3 Release Train and Release Cut contracts, existing source locks, exact-source Alpha preflight, Dev Patrol, cancelled duplicate runs, protected auto-merge policy, repository release governance, and the consumer-owned settlement renderer threat model.
17
17
  invisible_context_boundary: No credentials, private logs, or private configuration were used.
18
18
  ---
19
19
 
@@ -33,12 +33,21 @@ head), and selects the newest commit that satisfies all of these conditions:
33
33
  succeeded; and
34
34
  - both runs are within the caller's evidence age limit.
35
35
 
36
- The selected commit can be behind the observed development head when newer
36
+ When no managed candidate is active, the selected commit can be behind the observed development head when newer
37
37
  commits have not completed both workflows yet. The decision binds the observed
38
38
  head, selected SHA, and count of skipped newer commits. This makes a slow native
39
39
  verification lane live under continuous development without silently treating
40
40
  an unqualified head as releasable.
41
41
 
42
+ Before any new selection, the v3 controller now resolves the open managed PR and
43
+ validates its embedded authoritative Release Train. If one exists, the frozen
44
+ Release Cut wins: Candidate Patrol does not scan for or retain a newer qualified
45
+ candidate. It returns the cut's exact candidate commit, candidate tree,
46
+ generation, Alpha base, Buildchain runtime and authority roots. A newer dev head
47
+ is appended once as a rooted, non-invalidating observation. Repeated webhooks or
48
+ a restarted controller observing the same dev head reuse the existing
49
+ observation and do not change the candidate identity.
50
+
42
51
  A cancelled workflow run carries no qualification verdict, so a newer
43
52
  cancelled duplicate does not erase the prior completed verdict for the same
44
53
  workflow and source SHA. Other non-success conclusions remain authoritative:
@@ -64,15 +73,19 @@ The companion state is
64
73
  - `eligible-for-settlement`: a qualified candidate exists and no managed Alpha
65
74
  candidate PR is active;
66
75
  - `active`: exactly one managed candidate PR is open;
67
- - `retained-next`: an active PR remains authoritative and the newest different
68
- qualified SHA is retained as `nextCandidate`;
76
+ - `held`: the active Release Cut failed exact candidate, tree, Alpha-base,
77
+ runtime or route readback and cannot resume;
78
+ - `superseded`: the embedded train contains a valid explicit supersession
79
+ transition;
69
80
  - `stale`: the available exact-SHA evidence pair is outside policy age; or
70
81
  - `blocked`: qualification or reconciliation failed closed.
71
82
 
72
- When a newer qualified SHA replaces an earlier `nextCandidate`, the state also
73
- records that earlier SHA as `supersededCandidate`. Every state carries exact
74
- repository, source/target refs and SHAs, workflow-run evidence through the
75
- candidate decision, and canonical decision/state roots.
83
+ New v3 states embed the complete `kungfu-buildchain-release-train/v1` record.
84
+ `held` states include a rooted `kungfu-buildchain-release-train-hold/v1`
85
+ receipt with the expected cut and observed coordinates. Dev movement alone is
86
+ not an allowed supersession cause. Legacy markers remain readable by the core
87
+ contract, but the active-train workflow refuses to manufacture missing Release
88
+ Cut authority for an already-open legacy PR.
76
89
 
77
90
  ## Reusable workflow
78
91
 
@@ -107,20 +120,32 @@ the rendered bytes. Concurrent qualification progress therefore fails closed
107
120
  and is recomputed by the next patrol instead of attaching a declaration to the
108
121
  wrong candidate.
109
122
 
110
- The separately permissioned `settle` job re-runs the exact observation before
111
- any write. With no active managed candidate, it creates one branch named from
123
+ The separately permissioned `settle` job checks out the exact Buildchain runtime
124
+ commit used by `observe`, re-runs the exact observation, and compare-and-swap
125
+ checks the selected SHA, prior controller root and Release Cut root before any
126
+ write. With no active managed candidate, it reads the candidate tree and creates
127
+ one rooted Release Cut before it creates one branch named from
112
128
  the target branch and the first 12 characters of the full source SHA. An
113
129
  existing branch must point to the same full SHA or the run fails. With one
114
- active managed candidate, it only updates the machine-readable state marker in
115
- that PR body so repeated events and rapid dev progress cannot create another
116
- candidate PR or another heavy candidate build. Foreign human-authored Alpha PRs
117
- are ignored. More than one open Buildchain-managed candidate fails closed.
130
+ active managed candidate, it validates the candidate ref, tree, Alpha base and
131
+ runtime before returning that same SHA to every checkout/build consumer. It only
132
+ updates the machine-readable state marker when a new dev observation or hold
133
+ receipt must be persisted. Repeated events and rapid dev progress cannot create
134
+ another candidate PR or another heavy candidate build. Foreign human-authored
135
+ Alpha PRs are ignored. More than one open Buildchain-managed candidate fails
136
+ closed.
118
137
 
119
138
  The PR body is the bounded durable controller state: it preserves the active
120
- candidate and newest retained `nextCandidate` without introducing an always-on
121
- service. Once the active PR settles or is abandoned, the next execution
122
- recomputes current exact-SHA qualification and creates only the newest still
123
- fresh candidate. It never trusts a `workflow_run` trigger SHA as evidence.
139
+ Release Train without introducing an always-on service. Once the active PR
140
+ settles, is explicitly superseded, or is abandoned, the next execution may
141
+ recompute current exact-SHA qualification and cut a new generation under the
142
+ Release Train contract. It never trusts a `workflow_run` trigger SHA as
143
+ evidence.
144
+
145
+ The workflow exposes `train-root`, `cut-root`, `candidate-generation`,
146
+ `candidate-tree-sha`, `runtime-sha`, `drift-root` and `hold-root` alongside the
147
+ selected SHA. Alpha build orchestration should bind to those outputs and treat
148
+ a non-empty hold root as a fail-closed result.
124
149
 
125
150
  The caller may additionally set `auto-merge: true` and choose `merge-method`
126
151
  from `merge`, `squash`, or `rebase`. Buildchain only arms GitHub auto-merge for