@kungfu-tech/buildchain 2.14.18-alpha.8 → 2.14.18
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 +5 -5
- package/dist/site/buildchain-site.json +4 -4
- package/dist/site/kfd-upstream-aggregate.json +1 -1
- package/dist/site/node-api-registry.json +2 -2
- package/dist/site/publication-registry.json +4 -4
- package/dist/site/site-manifest.json +4 -4
- package/package.json +1 -1
- package/packages/core/controller-evidence.js +1 -1
- package/packages/core/publication-control-plane-audit.js +1 -0
- package/scripts/audit-publication-control-plane.mjs +17 -0
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"product": {
|
|
5
5
|
"name": "Buildchain",
|
|
6
6
|
"package": "@kungfu-tech/buildchain",
|
|
7
|
-
"version": "2.14.18
|
|
7
|
+
"version": "2.14.18",
|
|
8
8
|
"repository": "https://github.com/kungfu-systems/buildchain"
|
|
9
9
|
},
|
|
10
10
|
"majorLine": "v2",
|
|
@@ -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:ba3117f22b343d5f18cd48d327bffaa8ed442cb6150b6c2f95d091808cd009a7"
|
|
216
216
|
},
|
|
217
217
|
{
|
|
218
218
|
"contractVersion": 1,
|
|
@@ -663,7 +663,7 @@
|
|
|
663
663
|
"agents can discover supported Node APIs without importing internal file paths"
|
|
664
664
|
],
|
|
665
665
|
"breakingDigest": "sha256:48f925608d3e2131d90936b07dc2a30341204cae3e6e785c0f77d61ad755c945",
|
|
666
|
-
"auditDigest": "sha256:
|
|
666
|
+
"auditDigest": "sha256:4572769775450f49fa37a72e6dda211eea0af0a4dd73ad1d188dbb34782a35a9"
|
|
667
667
|
},
|
|
668
668
|
{
|
|
669
669
|
"contractVersion": 1,
|
|
@@ -2928,7 +2928,7 @@
|
|
|
2928
2928
|
"missing receipts are non-qualifying and must not be represented as a successful controller run"
|
|
2929
2929
|
],
|
|
2930
2930
|
"breakingDigest": "sha256:015d8de793adbd4c539416be7d7512e18cc92097e629b0203fa06d2c183e98bd",
|
|
2931
|
-
"auditDigest": "sha256:
|
|
2931
|
+
"auditDigest": "sha256:ba3117f22b343d5f18cd48d327bffaa8ed442cb6150b6c2f95d091808cd009a7"
|
|
2932
2932
|
},
|
|
2933
2933
|
{
|
|
2934
2934
|
"contractVersion": 1,
|
|
@@ -3126,5 +3126,5 @@
|
|
|
3126
3126
|
}
|
|
3127
3127
|
],
|
|
3128
3128
|
"compatibilityDigest": "sha256:df13c3b8066068925ce847b31002201d533034d10d342542422db3a665c10475",
|
|
3129
|
-
"contractDigest": "sha256:
|
|
3129
|
+
"contractDigest": "sha256:9a73a8824bfbdb1bdbeb8acd5b6366eb980f3e505c7a5dd1bc439d1d803469a9"
|
|
3130
3130
|
}
|
|
@@ -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-24T16:50:01.298Z",
|
|
5
|
+
"publishedAt": "2026-07-24T16:50:01.298Z",
|
|
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": "aa1bea6f12a7a815793fb223cfaea9db691c1908",
|
|
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.18
|
|
40
|
+
"version": "2.14.18",
|
|
41
41
|
"versionSource": "package.json#version"
|
|
42
42
|
},
|
|
43
43
|
"source": {
|
|
@@ -125,7 +125,7 @@
|
|
|
125
125
|
"specifier": "@kungfu-tech/buildchain/controller-evidence",
|
|
126
126
|
"export": "./controller-evidence",
|
|
127
127
|
"target": "./packages/core/controller-evidence.js",
|
|
128
|
-
"digest": "sha256:
|
|
128
|
+
"digest": "sha256:6169f625ab2bd8a21ddcbb1c72529df481a4eeadd2b37a4c5e8e0dee9668a435",
|
|
129
129
|
"summary": "Project-independent controller descriptors, source/runtime-bound plans, receipts, aggregates, and validation APIs.",
|
|
130
130
|
"capabilityGroup": "reusable-build",
|
|
131
131
|
"audience": [
|
|
@@ -320,7 +320,7 @@
|
|
|
320
320
|
"specifier": "@kungfu-tech/buildchain/publication-control-plane-audit",
|
|
321
321
|
"export": "./publication-control-plane-audit",
|
|
322
322
|
"target": "./packages/core/publication-control-plane-audit.js",
|
|
323
|
-
"digest": "sha256:
|
|
323
|
+
"digest": "sha256:3817d243ef01490be7375d7ed8bb0d00326f528b1fe0681bfd0d003c9932cc96",
|
|
324
324
|
"summary": "Read-only publication control-plane snapshot evaluation APIs.",
|
|
325
325
|
"capabilityGroup": "release-passport-trust",
|
|
326
326
|
"audience": [
|
|
@@ -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-24T16:50:01.298Z",
|
|
5
|
+
"publishedAt": "2026-07-24T16:50:01.298Z",
|
|
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": "aa1bea6f12a7a815793fb223cfaea9db691c1908",
|
|
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.18
|
|
35
|
+
"version": "2.14.18",
|
|
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-24T16:50:01.298Z",
|
|
5
|
+
"publishedAt": "2026-07-24T16:50:01.298Z",
|
|
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": "aa1bea6f12a7a815793fb223cfaea9db691c1908",
|
|
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.18
|
|
40
|
+
"version": "2.14.18",
|
|
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.18
|
|
3
|
+
"version": "2.14.18",
|
|
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",
|
|
@@ -7,7 +7,7 @@ export const BUILDCHAIN_CONTROLLER_AGGREGATE_CONTRACT = "buildchain.controller-e
|
|
|
7
7
|
|
|
8
8
|
const SHA256_PATTERN = /^sha256:[0-9a-f]{64}$/;
|
|
9
9
|
const GIT_SHA_PATTERN = /^[0-9a-f]{40}$/;
|
|
10
|
-
const STAGE_STATUSES = new Set(["passed", "failed", "skipped", "cancelled", "missing"]);
|
|
10
|
+
const STAGE_STATUSES = new Set(["passed", "failed", "skipped", "cancelled", "missing", "partial"]);
|
|
11
11
|
|
|
12
12
|
const CONTROLLER_SPECS = [
|
|
13
13
|
{
|
|
@@ -160,6 +160,7 @@ export function evaluatePublicationControlPlaneSnapshot({
|
|
|
160
160
|
environmentPolicy.declared === true &&
|
|
161
161
|
environmentPolicy.exists === true &&
|
|
162
162
|
environmentPolicy.protected === true &&
|
|
163
|
+
environmentPolicy.branchAuthorized === true &&
|
|
163
164
|
(environmentPolicy.reviewRequired !== true || environmentPolicy.preventSelfReview === true),
|
|
164
165
|
environmentPolicy,
|
|
165
166
|
),
|
|
@@ -239,6 +239,16 @@ function main() {
|
|
|
239
239
|
const deploymentBranches = environment !== "none" && environmentState.deployment_branch_policy?.custom_branch_policies === true
|
|
240
240
|
? githubJson(`repos/${repository}/environments/${encodeURIComponent(environment)}/deployment-branch-policies?per_page=100`, "Environment deployment branch policy")
|
|
241
241
|
: { branch_policies: [] };
|
|
242
|
+
const exactEnvironmentBranchPolicy = (deploymentBranches.branch_policies || []).find((entry) =>
|
|
243
|
+
entry?.type === "branch" && entry?.name === branch
|
|
244
|
+
);
|
|
245
|
+
const environmentBranchAuthorized = environment !== "none" && (
|
|
246
|
+
(
|
|
247
|
+
environmentState.deployment_branch_policy?.protected_branches === true &&
|
|
248
|
+
branchState.protected === true
|
|
249
|
+
) ||
|
|
250
|
+
Boolean(exactEnvironmentBranchPolicy)
|
|
251
|
+
);
|
|
242
252
|
const oidc = githubJson(`repos/${repository}/actions/oidc/customization/sub`, "OIDC subject policy");
|
|
243
253
|
if (!["npm-trusted-publisher", "github-token", "oidc-role"].includes(publisherMode)) {
|
|
244
254
|
throw new Error(`unsupported --publisher-mode: ${publisherMode}`);
|
|
@@ -454,6 +464,13 @@ function main() {
|
|
|
454
464
|
protected: (environmentState.protection_rules || []).length > 0 ||
|
|
455
465
|
environmentState.deployment_branch_policy?.protected_branches === true ||
|
|
456
466
|
(deploymentBranches.branch_policies || []).length > 0,
|
|
467
|
+
branchAuthorized: environmentBranchAuthorized,
|
|
468
|
+
branchPolicyMode: environmentState.deployment_branch_policy?.protected_branches === true
|
|
469
|
+
? "protected-branches"
|
|
470
|
+
: exactEnvironmentBranchPolicy
|
|
471
|
+
? "exact-custom-branch"
|
|
472
|
+
: "unqualified",
|
|
473
|
+
authorizedBranch: exactEnvironmentBranchPolicy?.name || "",
|
|
457
474
|
reviewRequired: reviewRules.length > 0,
|
|
458
475
|
preventSelfReview: reviewRules.some((rule) => rule.prevent_self_review === true),
|
|
459
476
|
},
|