@kungfu-tech/buildchain 2.12.5 → 2.12.6-alpha.2
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 +18 -18
- package/dist/site/buildchain-site.json +4 -4
- package/dist/site/kfd-upstream-aggregate.json +1 -1
- package/dist/site/node-api-registry.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/packages/core/release-passport.js +3 -0
- package/scripts/controller-evidence.mjs +21 -1
- package/scripts/generate-channel-build-workflow.mjs +1 -0
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"product": {
|
|
5
5
|
"name": "Buildchain",
|
|
6
6
|
"package": "@kungfu-tech/buildchain",
|
|
7
|
-
"version": "2.12.
|
|
7
|
+
"version": "2.12.6-alpha.2",
|
|
8
8
|
"repository": "https://github.com/kungfu-systems/buildchain"
|
|
9
9
|
},
|
|
10
10
|
"majorLine": "v2",
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
"retryable GitHub fallback fetches use a bounded attempt budget before exact source SHA and tree verification"
|
|
51
51
|
],
|
|
52
52
|
"breakingDigest": "sha256:a6a35370d6b0d0f46e1b2712dcc01961fe53c2febde95409a27a485c10a36650",
|
|
53
|
-
"auditDigest": "sha256:
|
|
53
|
+
"auditDigest": "sha256:18b1cdc05272152120fdb52eb98be1d146702664ca8eba29ae92591ae55d5d2a"
|
|
54
54
|
},
|
|
55
55
|
{
|
|
56
56
|
"contractVersion": 1,
|
|
@@ -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:ced442c3c5617448c52668e0e42dec98476e6f09728c37e08a13cffcd207dbf2"
|
|
93
93
|
},
|
|
94
94
|
{
|
|
95
95
|
"contractVersion": 1,
|
|
@@ -159,7 +159,7 @@
|
|
|
159
159
|
"GitHub Release passport and evidence publication is delegated to promote-buildchain-ref after the semver release transaction completes"
|
|
160
160
|
],
|
|
161
161
|
"breakingDigest": "sha256:6dbae32ce3d7aab3be6957065105af574794581847b7637314dad45f5349c919",
|
|
162
|
-
"auditDigest": "sha256:
|
|
162
|
+
"auditDigest": "sha256:7f513e87fe6c12b34c740261cc6412b9d9c56632537b7538a74ccabe03fe171e"
|
|
163
163
|
},
|
|
164
164
|
{
|
|
165
165
|
"contractVersion": 1,
|
|
@@ -203,7 +203,7 @@
|
|
|
203
203
|
"channel-aware artifact host facts are checked against the deploy plan before adapter side effects"
|
|
204
204
|
],
|
|
205
205
|
"breakingDigest": "sha256:da569f90374e878948e3d5160ed9929338ce0572473ca8ee54867b0fe1aaeace",
|
|
206
|
-
"auditDigest": "sha256:
|
|
206
|
+
"auditDigest": "sha256:465182c56f3fef7463bab7cf2b93931797bad6c5e51c1f3029b71c09d5e42e1d"
|
|
207
207
|
},
|
|
208
208
|
{
|
|
209
209
|
"contractVersion": 1,
|
|
@@ -328,7 +328,7 @@
|
|
|
328
328
|
"release-state SHA is recorded as a durable audit entrance"
|
|
329
329
|
],
|
|
330
330
|
"breakingDigest": "sha256:b627e1b2ece9b6049517a942c5139e342e6077cdd3d8962d61cef8481b1f70ad",
|
|
331
|
-
"auditDigest": "sha256:
|
|
331
|
+
"auditDigest": "sha256:af307129d9df51a1a0d5f7cfff742b0db7d9f8f04dd810cf97a62c79e2d3a726"
|
|
332
332
|
},
|
|
333
333
|
{
|
|
334
334
|
"contractVersion": 1,
|
|
@@ -377,7 +377,7 @@
|
|
|
377
377
|
"prose-only public claims downgrade the release trust passport audit"
|
|
378
378
|
],
|
|
379
379
|
"breakingDigest": "sha256:f0b636eb925ddbf45ff1a8872454ab7b4dd98857cac12bb75217830130e62a16",
|
|
380
|
-
"auditDigest": "sha256:
|
|
380
|
+
"auditDigest": "sha256:af307129d9df51a1a0d5f7cfff742b0db7d9f8f04dd810cf97a62c79e2d3a726"
|
|
381
381
|
},
|
|
382
382
|
{
|
|
383
383
|
"contractVersion": 1,
|
|
@@ -549,7 +549,7 @@
|
|
|
549
549
|
"agents can discover supported Node APIs without importing internal file paths"
|
|
550
550
|
],
|
|
551
551
|
"breakingDigest": "sha256:48f925608d3e2131d90936b07dc2a30341204cae3e6e785c0f77d61ad755c945",
|
|
552
|
-
"auditDigest": "sha256:
|
|
552
|
+
"auditDigest": "sha256:63874351201e9323e51c011e81cf1d4d1ff0e3f6d733d5a0cef2537eba95228a"
|
|
553
553
|
},
|
|
554
554
|
{
|
|
555
555
|
"contractVersion": 1,
|
|
@@ -639,7 +639,7 @@
|
|
|
639
639
|
"missing receipts are non-qualifying and must not be represented as a successful controller run"
|
|
640
640
|
],
|
|
641
641
|
"breakingDigest": "sha256:d4bd0f2a1921bfed71a4d9104d45934555bde74a5c189f93ad79f37074c02b87",
|
|
642
|
-
"auditDigest": "sha256:
|
|
642
|
+
"auditDigest": "sha256:aa1727de29ad42d50ccc6e6cb8923a7b532da0f6ce6e53372d63801a120de65e"
|
|
643
643
|
},
|
|
644
644
|
{
|
|
645
645
|
"contractVersion": 1,
|
|
@@ -1001,7 +1001,7 @@
|
|
|
1001
1001
|
"missing receipts are non-qualifying and must not be represented as a successful controller run"
|
|
1002
1002
|
],
|
|
1003
1003
|
"breakingDigest": "sha256:e264a79f9f399038c2fcfd21e4168c68c2e1485ee5c651c02242a02b622ac2be",
|
|
1004
|
-
"auditDigest": "sha256:
|
|
1004
|
+
"auditDigest": "sha256:18b1cdc05272152120fdb52eb98be1d146702664ca8eba29ae92591ae55d5d2a"
|
|
1005
1005
|
},
|
|
1006
1006
|
{
|
|
1007
1007
|
"contractVersion": 1,
|
|
@@ -1374,7 +1374,7 @@
|
|
|
1374
1374
|
"missing receipts are non-qualifying and must not be represented as a successful controller run"
|
|
1375
1375
|
],
|
|
1376
1376
|
"breakingDigest": "sha256:d40dd05d7e07473d4b2dc1b62fbb0ed6f06449b4d3a7c44a2e8014313e3c0273",
|
|
1377
|
-
"auditDigest": "sha256:
|
|
1377
|
+
"auditDigest": "sha256:ced442c3c5617448c52668e0e42dec98476e6f09728c37e08a13cffcd207dbf2"
|
|
1378
1378
|
},
|
|
1379
1379
|
{
|
|
1380
1380
|
"contractVersion": 1,
|
|
@@ -1520,7 +1520,7 @@
|
|
|
1520
1520
|
"missing receipts are non-qualifying and must not be represented as a successful controller run"
|
|
1521
1521
|
],
|
|
1522
1522
|
"breakingDigest": "sha256:5f1868478b7ccd9fb79aea76bc771289d2ca6bd2dccd1abf57575426f1eae5fb",
|
|
1523
|
-
"auditDigest": "sha256:
|
|
1523
|
+
"auditDigest": "sha256:2b8db410486b9f572536be9fc68b8819c373ba31bdf8a7379c2770ce5168eb6c"
|
|
1524
1524
|
},
|
|
1525
1525
|
{
|
|
1526
1526
|
"contractVersion": 1,
|
|
@@ -1744,7 +1744,7 @@
|
|
|
1744
1744
|
"missing receipts are non-qualifying and must not be represented as a successful controller run"
|
|
1745
1745
|
],
|
|
1746
1746
|
"breakingDigest": "sha256:b48566da2325d9a6a603fbd444a8cc7deb8abed3e6c70a984259208fb0ed513c",
|
|
1747
|
-
"auditDigest": "sha256:
|
|
1747
|
+
"auditDigest": "sha256:465182c56f3fef7463bab7cf2b93931797bad6c5e51c1f3029b71c09d5e42e1d"
|
|
1748
1748
|
},
|
|
1749
1749
|
{
|
|
1750
1750
|
"contractVersion": 1,
|
|
@@ -1884,7 +1884,7 @@
|
|
|
1884
1884
|
"missing receipts are non-qualifying and must not be represented as a successful controller run"
|
|
1885
1885
|
],
|
|
1886
1886
|
"breakingDigest": "sha256:3f76502666069c2727d23efcfdb08fb80f89ced1955a69e29f11525ae88aca1d",
|
|
1887
|
-
"auditDigest": "sha256:
|
|
1887
|
+
"auditDigest": "sha256:4756627241ae819e4796b6ddb3b37096223c62652dbc79ac95c2fce8f1bc74a8"
|
|
1888
1888
|
},
|
|
1889
1889
|
{
|
|
1890
1890
|
"contractVersion": 1,
|
|
@@ -2107,7 +2107,7 @@
|
|
|
2107
2107
|
"missing receipts are non-qualifying and must not be represented as a successful controller run"
|
|
2108
2108
|
],
|
|
2109
2109
|
"breakingDigest": "sha256:18ed432e8f3dd55a80c7e94dadacc09ab0508f6226a882029ce582d590ac214b",
|
|
2110
|
-
"auditDigest": "sha256:
|
|
2110
|
+
"auditDigest": "sha256:cadb8bc59d3cc58cdc2b6bf7f80c235390a685e947d7c78d24ffcde6b321557a"
|
|
2111
2111
|
},
|
|
2112
2112
|
{
|
|
2113
2113
|
"contractVersion": 1,
|
|
@@ -2420,7 +2420,7 @@
|
|
|
2420
2420
|
"missing receipts are non-qualifying and must not be represented as a successful controller run"
|
|
2421
2421
|
],
|
|
2422
2422
|
"breakingDigest": "sha256:63e4340f090bce35f5ab64f38fe16767725a39819498ed4d24c5c16de4083c23",
|
|
2423
|
-
"auditDigest": "sha256:
|
|
2423
|
+
"auditDigest": "sha256:7f513e87fe6c12b34c740261cc6412b9d9c56632537b7538a74ccabe03fe171e"
|
|
2424
2424
|
},
|
|
2425
2425
|
{
|
|
2426
2426
|
"contractVersion": 1,
|
|
@@ -2545,9 +2545,9 @@
|
|
|
2545
2545
|
"missing receipts are non-qualifying and must not be represented as a successful controller run"
|
|
2546
2546
|
],
|
|
2547
2547
|
"breakingDigest": "sha256:d7a1f15990ce8bd13149474888232c7d4451dd2a49bebf4d4ce1336695da430e",
|
|
2548
|
-
"auditDigest": "sha256:
|
|
2548
|
+
"auditDigest": "sha256:e7d0cc13b9d6f19e7cd77b650693f0d615b919796d075041d74876e6ca58716f"
|
|
2549
2549
|
}
|
|
2550
2550
|
],
|
|
2551
2551
|
"compatibilityDigest": "sha256:2520207c5d6d6a737dd32251a42be9c5299644d9aebf690a8402ead1724ed495",
|
|
2552
|
-
"contractDigest": "sha256:
|
|
2552
|
+
"contractDigest": "sha256:99d1648946831cf930e03f0c6dfed4ee476f4e6486a142da2ddd41ea2dabda83"
|
|
2553
2553
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"contract": "kungfu-buildchain-site-bundle",
|
|
4
|
-
"generatedAt": "2026-07-14T03:
|
|
5
|
-
"publishedAt": "2026-07-14T03:
|
|
4
|
+
"generatedAt": "2026-07-14T03:53:01.793Z",
|
|
5
|
+
"publishedAt": "2026-07-14T03:53:01.793Z",
|
|
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": "37c8a05250073fa25086f51261455c55f4c19e8b",
|
|
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.12.
|
|
40
|
+
"version": "2.12.6-alpha.2",
|
|
41
41
|
"versionSource": "package.json#version"
|
|
42
42
|
},
|
|
43
43
|
"source": {
|
|
@@ -281,7 +281,7 @@
|
|
|
281
281
|
"specifier": "@kungfu-tech/buildchain/release-passport",
|
|
282
282
|
"export": "./release-passport",
|
|
283
283
|
"target": "./packages/core/release-passport.js",
|
|
284
|
-
"digest": "sha256:
|
|
284
|
+
"digest": "sha256:af307129d9df51a1a0d5f7cfff742b0db7d9f8f04dd810cf97a62c79e2d3a726",
|
|
285
285
|
"summary": "Release passport collection, verification, explanation, and evidence APIs.",
|
|
286
286
|
"capabilityGroup": "release-passport-trust",
|
|
287
287
|
"audience": [
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"contract": "kungfu-buildchain-publication-release-registry",
|
|
4
|
-
"generatedAt": "2026-07-14T03:
|
|
5
|
-
"publishedAt": "2026-07-14T03:
|
|
4
|
+
"generatedAt": "2026-07-14T03:53:01.793Z",
|
|
5
|
+
"publishedAt": "2026-07-14T03:53:01.793Z",
|
|
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": "37c8a05250073fa25086f51261455c55f4c19e8b",
|
|
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.12.
|
|
35
|
+
"version": "2.12.6-alpha.2",
|
|
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-14T03:
|
|
5
|
-
"publishedAt": "2026-07-14T03:
|
|
4
|
+
"generatedAt": "2026-07-14T03:53:01.793Z",
|
|
5
|
+
"publishedAt": "2026-07-14T03:53:01.793Z",
|
|
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": "37c8a05250073fa25086f51261455c55f4c19e8b",
|
|
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.12.
|
|
40
|
+
"version": "2.12.6-alpha.2",
|
|
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.12.
|
|
3
|
+
"version": "2.12.6-alpha.2",
|
|
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",
|
|
@@ -353,6 +353,9 @@ function mergeAuthoritativePassportBase(passport, basePassport = undefined, { re
|
|
|
353
353
|
merged[key] = basePassport[key];
|
|
354
354
|
}
|
|
355
355
|
}
|
|
356
|
+
if (basePassport.controllerReceipts !== undefined) {
|
|
357
|
+
merged.controllerReceipts = basePassport.controllerReceipts;
|
|
358
|
+
}
|
|
356
359
|
for (const key of kfdKeys) {
|
|
357
360
|
if (basePassport[key] && typeof basePassport[key] === "object" && !Array.isArray(basePassport[key])) {
|
|
358
361
|
merged[key] = basePassport[key];
|
|
@@ -57,6 +57,19 @@ function descriptorFromRegistry(registry, controllerId) {
|
|
|
57
57
|
return descriptor;
|
|
58
58
|
}
|
|
59
59
|
|
|
60
|
+
export function selectWorkflowCallInputs(descriptor, inputs) {
|
|
61
|
+
if (!inputs || typeof inputs !== "object" || Array.isArray(inputs)) {
|
|
62
|
+
throw new Error("controller inputs JSON must be an object");
|
|
63
|
+
}
|
|
64
|
+
const declaredInputs = descriptor?.inputs;
|
|
65
|
+
if (!declaredInputs || typeof declaredInputs !== "object" || Array.isArray(declaredInputs)) {
|
|
66
|
+
throw new Error("controller descriptor inputs must be an object");
|
|
67
|
+
}
|
|
68
|
+
return Object.fromEntries(
|
|
69
|
+
Object.entries(inputs).filter(([name]) => Object.hasOwn(declaredInputs, name)),
|
|
70
|
+
);
|
|
71
|
+
}
|
|
72
|
+
|
|
60
73
|
function normalizeStageStatus(value) {
|
|
61
74
|
const normalized = String(value || "").trim().toLowerCase();
|
|
62
75
|
return {
|
|
@@ -90,6 +103,11 @@ function planMode() {
|
|
|
90
103
|
const registryPath = path.resolve(env("BUILDCHAIN_CONTROLLER_REGISTRY", ".buildchain/runtime/dist/site/controller-registry.json"));
|
|
91
104
|
const registry = readJson(registryPath, "controller registry");
|
|
92
105
|
const descriptor = descriptorFromRegistry(registry, env("BUILDCHAIN_CONTROLLER_ID"));
|
|
106
|
+
const rawInputs = parseJson(env("BUILDCHAIN_CONTROLLER_INPUTS_JSON", "{}"), "controller inputs JSON", {});
|
|
107
|
+
const inputBoundary = env("BUILDCHAIN_CONTROLLER_INPUT_BOUNDARY", "strict");
|
|
108
|
+
if (!["strict", "workflow-call"].includes(inputBoundary)) {
|
|
109
|
+
throw new Error(`unsupported controller input boundary: ${inputBoundary}`);
|
|
110
|
+
}
|
|
93
111
|
const plan = createControllerPlan({
|
|
94
112
|
descriptor,
|
|
95
113
|
source: {
|
|
@@ -101,7 +119,9 @@ function planMode() {
|
|
|
101
119
|
sha: env("BUILDCHAIN_CONTROLLER_RUNTIME_SHA"),
|
|
102
120
|
contractDigest: env("BUILDCHAIN_CONTROLLER_CONTRACT_DIGEST"),
|
|
103
121
|
},
|
|
104
|
-
inputs:
|
|
122
|
+
inputs: inputBoundary === "workflow-call"
|
|
123
|
+
? selectWorkflowCallInputs(descriptor, rawInputs)
|
|
124
|
+
: rawInputs,
|
|
105
125
|
});
|
|
106
126
|
const outputPath = path.resolve(env("BUILDCHAIN_CONTROLLER_PLAN_PATH", ".buildchain/controller/plan.json"));
|
|
107
127
|
writeJson(outputPath, plan);
|
|
@@ -123,6 +123,7 @@ function routerControllerPlanJob() {
|
|
|
123
123
|
BUILDCHAIN_CONTROLLER_CONTRACT_DIGEST: \${{ steps.identities.outputs.contract-digest }}
|
|
124
124
|
BUILDCHAIN_CONTROLLER_REGISTRY: .buildchain/controller-runtime/dist/site/controller-registry.json
|
|
125
125
|
BUILDCHAIN_CONTROLLER_INPUTS_JSON: \${{ toJSON(inputs) }}
|
|
126
|
+
BUILDCHAIN_CONTROLLER_INPUT_BOUNDARY: workflow-call
|
|
126
127
|
BUILDCHAIN_CONTROLLER_PLAN_PATH: .buildchain/controller/plan.json
|
|
127
128
|
|
|
128
129
|
- name: Resolve channel router controller plan artifact
|