@kungfu-tech/buildchain 2.14.14-alpha.5 → 2.14.14-alpha.8
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 +7 -7
- package/dist/site/buildchain-site.json +4 -4
- package/dist/site/kfd-upstream-aggregate.json +1 -1
- package/dist/site/publication-registry.json +4 -4
- package/dist/site/site-manifest.json +4 -4
- package/package.json +1 -1
- package/scripts/check-inventory.mjs +2 -0
- package/scripts/generate-channel-build-workflow.mjs +51 -2
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"product": {
|
|
5
5
|
"name": "Buildchain",
|
|
6
6
|
"package": "@kungfu-tech/buildchain",
|
|
7
|
-
"version": "2.14.14-alpha.
|
|
7
|
+
"version": "2.14.14-alpha.8",
|
|
8
8
|
"repository": "https://github.com/kungfu-systems/buildchain"
|
|
9
9
|
},
|
|
10
10
|
"majorLine": "v2",
|
|
@@ -89,7 +89,7 @@
|
|
|
89
89
|
"alpha and stable channel selections use separate consumer contract locks by default"
|
|
90
90
|
],
|
|
91
91
|
"breakingDigest": "sha256:c4597dfa89e1a58f1023905092b849644f5c080abf150aeba9c7e1cd5ed43962",
|
|
92
|
-
"auditDigest": "sha256:
|
|
92
|
+
"auditDigest": "sha256:7804f03ac13edf2ffda40774c17d95e24416a97ee4b9091fc28b6cc32daea46e"
|
|
93
93
|
},
|
|
94
94
|
{
|
|
95
95
|
"contractVersion": 1,
|
|
@@ -170,7 +170,7 @@
|
|
|
170
170
|
"GitHub Release passport and evidence publication is delegated to promote-buildchain-ref after the semver release transaction completes"
|
|
171
171
|
],
|
|
172
172
|
"breakingDigest": "sha256:1f476fb9a4854b362c4b24cef89a3c7675d7d63baf3bc828d7b8ae7d2787cead",
|
|
173
|
-
"auditDigest": "sha256:
|
|
173
|
+
"auditDigest": "sha256:0fbb4713eead1951f01ec1cf7896cac9ab25cd73986573b3c3227ad133550f69"
|
|
174
174
|
},
|
|
175
175
|
{
|
|
176
176
|
"contractVersion": 1,
|
|
@@ -212,7 +212,7 @@
|
|
|
212
212
|
"promotion reuses PR-stage release-candidate artifacts and does not run the heavy native build matrix"
|
|
213
213
|
],
|
|
214
214
|
"breakingDigest": "sha256:aa30f22e3af0a89841310bdbdc900844dd95a66974db173fa140a71bbd7e82c0",
|
|
215
|
-
"auditDigest": "sha256:
|
|
215
|
+
"auditDigest": "sha256:a68b535582028c1dd708e447a43f5083106074df092b74528dfa16db4a4f4153"
|
|
216
216
|
},
|
|
217
217
|
{
|
|
218
218
|
"contractVersion": 1,
|
|
@@ -1449,7 +1449,7 @@
|
|
|
1449
1449
|
"missing receipts are non-qualifying and must not be represented as a successful controller run"
|
|
1450
1450
|
],
|
|
1451
1451
|
"breakingDigest": "sha256:d40dd05d7e07473d4b2dc1b62fbb0ed6f06449b4d3a7c44a2e8014313e3c0273",
|
|
1452
|
-
"auditDigest": "sha256:
|
|
1452
|
+
"auditDigest": "sha256:7804f03ac13edf2ffda40774c17d95e24416a97ee4b9091fc28b6cc32daea46e"
|
|
1453
1453
|
},
|
|
1454
1454
|
{
|
|
1455
1455
|
"contractVersion": 1,
|
|
@@ -2715,7 +2715,7 @@
|
|
|
2715
2715
|
"missing receipts are non-qualifying and must not be represented as a successful controller run"
|
|
2716
2716
|
],
|
|
2717
2717
|
"breakingDigest": "sha256:015d8de793adbd4c539416be7d7512e18cc92097e629b0203fa06d2c183e98bd",
|
|
2718
|
-
"auditDigest": "sha256:
|
|
2718
|
+
"auditDigest": "sha256:a68b535582028c1dd708e447a43f5083106074df092b74528dfa16db4a4f4153"
|
|
2719
2719
|
},
|
|
2720
2720
|
{
|
|
2721
2721
|
"contractVersion": 1,
|
|
@@ -2913,5 +2913,5 @@
|
|
|
2913
2913
|
}
|
|
2914
2914
|
],
|
|
2915
2915
|
"compatibilityDigest": "sha256:cdf588422ec6b460bd6f631400efa6e361a045e052c8967d6c50fadd7aa4dd90",
|
|
2916
|
-
"contractDigest": "sha256:
|
|
2916
|
+
"contractDigest": "sha256:ede35959de3e13be48da1d8f745d93c83c946112cd5ec07a29524bc34183b5ee"
|
|
2917
2917
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"contract": "kungfu-buildchain-site-bundle",
|
|
4
|
-
"generatedAt": "2026-07-
|
|
5
|
-
"publishedAt": "2026-07-
|
|
4
|
+
"generatedAt": "2026-07-22T07:38:04.463Z",
|
|
5
|
+
"publishedAt": "2026-07-22T07:38:04.463Z",
|
|
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": "5ec517227d615b2f11db8b5e36183f16082479b8",
|
|
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.14-alpha.
|
|
40
|
+
"version": "2.14.14-alpha.8",
|
|
41
41
|
"versionSource": "package.json#version"
|
|
42
42
|
},
|
|
43
43
|
"source": {
|
|
@@ -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-22T07:38:04.463Z",
|
|
5
|
+
"publishedAt": "2026-07-22T07:38:04.463Z",
|
|
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": "5ec517227d615b2f11db8b5e36183f16082479b8",
|
|
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.14-alpha.
|
|
35
|
+
"version": "2.14.14-alpha.8",
|
|
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-22T07:38:04.463Z",
|
|
5
|
+
"publishedAt": "2026-07-22T07:38:04.463Z",
|
|
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": "5ec517227d615b2f11db8b5e36183f16082479b8",
|
|
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.14-alpha.
|
|
40
|
+
"version": "2.14.14-alpha.8",
|
|
41
41
|
"versionSource": "package.json#version"
|
|
42
42
|
},
|
|
43
43
|
"entrypoint": "buildchain-site.json",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kungfu-tech/buildchain",
|
|
3
|
-
"version": "2.14.14-alpha.
|
|
3
|
+
"version": "2.14.14-alpha.8",
|
|
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",
|
|
@@ -910,6 +910,8 @@ for (const requiredSnippet of [
|
|
|
910
910
|
"if (dryRun) {",
|
|
911
911
|
"Enforce Buildchain stable release canary gate",
|
|
912
912
|
"BUILDCHAIN_STABLE_RELEASE_POLICY: .buildchain/stable-release-policy.json",
|
|
913
|
+
"Consumer has no binary-distribution.yml; standalone binary dispatch is not applicable.",
|
|
914
|
+
"gh workflow view binary-distribution.yml",
|
|
913
915
|
]) {
|
|
914
916
|
if (!releaseCandidatePromoteWorkflow.includes(requiredSnippet)) {
|
|
915
917
|
throw new Error(`release candidate promote workflow missing KFD gate pass-through: ${requiredSnippet}`);
|
|
@@ -96,7 +96,7 @@ function routerControllerPlanJob() {
|
|
|
96
96
|
uses: actions/checkout@v7.0.0
|
|
97
97
|
with:
|
|
98
98
|
repository: \${{ needs.resolve-channel.outputs.router-repository }}
|
|
99
|
-
ref: \${{ needs.resolve-channel.outputs.router-
|
|
99
|
+
ref: \${{ needs.resolve-channel.outputs.router-sha }}
|
|
100
100
|
path: .buildchain/controller-runtime
|
|
101
101
|
persist-credentials: false
|
|
102
102
|
|
|
@@ -237,14 +237,63 @@ function generateChannelBuildWorkflowBase(source) {
|
|
|
237
237
|
return `# Generated by scripts/generate-channel-build-workflow.mjs. Do not edit directly.\nname: Buildchain Channel Build\n\non:\n workflow_call:\n inputs:\n${routerInputs(inputs)}\n secrets:\n${secrets.trimEnd()}\n outputs:\n${routerOutputs(outputs)}\n\npermissions:\n contents: read\n issues: write\n id-token: write\n\njobs:\n resolve-channel:\n name: Resolve Buildchain channel\n runs-on: ubuntu-24.04\n outputs:\n channel: \${{ steps.channel.outputs.channel }}\n buildchain-ref: \${{ steps.channel.outputs.buildchain-ref }}\n contract-lock-path: \${{ steps.lock.outputs.path }}\n selection-source: \${{ steps.channel.outputs.selection-source }}\n reason: \${{ steps.channel.outputs.reason }}\n steps:\n - name: Resolve router source\n id: router\n shell: bash\n env:\n BUILDCHAIN_ROUTER_WORKFLOW_REF: \${{ job.workflow_ref }}\n run: |\n set -euo pipefail\n workflow_ref=\"\${BUILDCHAIN_ROUTER_WORKFLOW_REF}\"\n repository=\"\${workflow_ref%%/.github/workflows/*}\"\n ref=\"\${workflow_ref##*@}\"\n ref=\"\${ref#refs/heads/}\"\n ref=\"\${ref#refs/tags/}\"\n if [[ -z \"\${repository}\" || \"\${repository}\" = \"\${workflow_ref}\" || -z \"\${ref}\" ]]; then\n echo \"Unable to resolve Buildchain router source from job.workflow_ref=\${workflow_ref}\" >&2\n exit 1\n fi\n {\n echo \"repository=\${repository}\"\n echo \"ref=\${ref}\"\n } >> \"\${GITHUB_OUTPUT}\"\n\n - name: Checkout Buildchain router\n uses: actions/checkout@v7.0.0\n with:\n repository: \${{ steps.router.outputs.repository }}\n ref: \${{ steps.router.outputs.ref }}\n path: .buildchain/router\n persist-credentials: false\n\n - name: Resolve channel\n id: channel\n shell: bash\n env:\n BUILDCHAIN_CHANNEL: \${{ inputs.buildchain-channel }}\n BUILDCHAIN_REQUESTED_REF: \${{ inputs.buildchain-ref }}\n BUILDCHAIN_PUBLISH_CHANNEL: \${{ inputs.publish-channel }}\n BUILDCHAIN_EVENT_NAME: \${{ github.event_name }}\n BUILDCHAIN_GIT_REF: \${{ github.ref }}\n BUILDCHAIN_RELEASE_PRERELEASE: \${{ github.event.release.prerelease }}\n BUILDCHAIN_ROUTER_REF: \${{ steps.router.outputs.ref }}\n run: |\n node .buildchain/router/scripts/buildchain-channel-router.mjs \\\n --cwd .buildchain/router \\\n --channel \"\${BUILDCHAIN_CHANNEL}\" \\\n --buildchain-ref \"\${BUILDCHAIN_REQUESTED_REF}\" \\\n --publish-channel \"\${BUILDCHAIN_PUBLISH_CHANNEL}\" \\\n --event-name \"\${BUILDCHAIN_EVENT_NAME}\" \\\n --ref \"\${BUILDCHAIN_GIT_REF}\" \\\n --release-prerelease \"\${BUILDCHAIN_RELEASE_PRERELEASE}\" \\\n --router-ref \"\${BUILDCHAIN_ROUTER_REF}\"\n\n - name: Select consumer contract lock\n id: lock\n shell: bash\n env:\n EXPLICIT_PATH: \${{ inputs.buildchain-contract-lock-path }}\n ALPHA_PATH: \${{ inputs.buildchain-alpha-contract-lock-path }}\n STABLE_PATH: \${{ inputs.buildchain-stable-contract-lock-path }}\n CHANNEL: \${{ steps.channel.outputs.channel }}\n run: |\n set -euo pipefail\n path=\"\${EXPLICIT_PATH}\"\n if [[ -z \"\${path}\" ]]; then\n if [[ \"\${CHANNEL}\" = \"alpha\" ]]; then\n path=\"\${ALPHA_PATH}\"\n else\n path=\"\${STABLE_PATH}\"\n fi\n fi\n echo \"path=\${path}\" >> \"\${GITHUB_OUTPUT}\"\n\n build:\n name: Build with resolved channel\n needs: resolve-channel\n uses: ./.github/workflows/.build.yml\n permissions:\n contents: read\n issues: write\n id-token: write\n with:\n${forwardedInputs(names)}\n secrets: inherit\n`;
|
|
238
238
|
}
|
|
239
239
|
|
|
240
|
+
function bindRouterCheckoutToWorkflowSha(workflow) {
|
|
241
|
+
return workflow
|
|
242
|
+
.replace(
|
|
243
|
+
" BUILDCHAIN_ROUTER_WORKFLOW_REF: ${{ job.workflow_ref }}\n",
|
|
244
|
+
[
|
|
245
|
+
" BUILDCHAIN_ROUTER_WORKFLOW_REF: ${{ job.workflow_ref }}",
|
|
246
|
+
" BUILDCHAIN_ROUTER_WORKFLOW_REPOSITORY: ${{ job.workflow_repository }}",
|
|
247
|
+
" BUILDCHAIN_ROUTER_WORKFLOW_SHA: ${{ job.workflow_sha }}",
|
|
248
|
+
"",
|
|
249
|
+
].join("\n"),
|
|
250
|
+
)
|
|
251
|
+
.replace(
|
|
252
|
+
[
|
|
253
|
+
' repository="${workflow_ref%%/.github/workflows/*}"',
|
|
254
|
+
' ref="${workflow_ref##*@}"',
|
|
255
|
+
' ref="${ref#refs/heads/}"',
|
|
256
|
+
' ref="${ref#refs/tags/}"',
|
|
257
|
+
' if [[ -z "${repository}" || "${repository}" = "${workflow_ref}" || -z "${ref}" ]]; then',
|
|
258
|
+
' echo "Unable to resolve Buildchain router source from job.workflow_ref=${workflow_ref}" >&2',
|
|
259
|
+
" exit 1",
|
|
260
|
+
" fi",
|
|
261
|
+
].join("\n"),
|
|
262
|
+
[
|
|
263
|
+
' repository="${BUILDCHAIN_ROUTER_WORKFLOW_REPOSITORY}"',
|
|
264
|
+
' ref="${workflow_ref##*@}"',
|
|
265
|
+
' ref="${ref#refs/heads/}"',
|
|
266
|
+
' ref="${ref#refs/tags/}"',
|
|
267
|
+
' parsed_repository="${workflow_ref%%/.github/workflows/*}"',
|
|
268
|
+
' if [[ -z "${repository}" || "${repository}" != "${parsed_repository}" || -z "${ref}" ]]; then',
|
|
269
|
+
' echo "::error::Unable to resolve Buildchain router source from job.workflow_ref=${workflow_ref}"',
|
|
270
|
+
" exit 1",
|
|
271
|
+
" fi",
|
|
272
|
+
' if [[ ! "${BUILDCHAIN_ROUTER_WORKFLOW_SHA}" =~ ^[0-9a-fA-F]{40}$ ]]; then',
|
|
273
|
+
' echo "::error::job.workflow_sha is not an exact commit SHA"',
|
|
274
|
+
" exit 1",
|
|
275
|
+
" fi",
|
|
276
|
+
].join("\n"),
|
|
277
|
+
)
|
|
278
|
+
.replace(
|
|
279
|
+
' echo "ref=${ref}"\n',
|
|
280
|
+
' echo "ref=${ref}"\n echo "sha=${BUILDCHAIN_ROUTER_WORKFLOW_SHA,,}"\n',
|
|
281
|
+
)
|
|
282
|
+
.replace(
|
|
283
|
+
" ref: ${{ steps.router.outputs.ref }}\n path: .buildchain/router",
|
|
284
|
+
" ref: ${{ steps.router.outputs.sha }}\n path: .buildchain/router",
|
|
285
|
+
);
|
|
286
|
+
}
|
|
287
|
+
|
|
240
288
|
export function generateChannelBuildWorkflow(source) {
|
|
241
|
-
const generated = generateChannelBuildWorkflowBase(source)
|
|
289
|
+
const generated = bindRouterCheckoutToWorkflowSha(generateChannelBuildWorkflowBase(source))
|
|
242
290
|
.replace(
|
|
243
291
|
" contract-lock-path: ${{ steps.lock.outputs.path }}\n",
|
|
244
292
|
[
|
|
245
293
|
" contract-lock-path: ${{ steps.lock.outputs.path }}",
|
|
246
294
|
" router-repository: ${{ steps.router.outputs.repository }}",
|
|
247
295
|
" router-ref: ${{ steps.router.outputs.ref }}",
|
|
296
|
+
" router-sha: ${{ steps.router.outputs.sha }}",
|
|
248
297
|
"",
|
|
249
298
|
].join("\n"),
|
|
250
299
|
)
|