@kungfu-tech/buildchain 2.12.0-alpha.1 → 2.12.0-alpha.4
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/actions/promote-buildchain-ref/README.md +9 -0
- package/dist/site/buildchain-contract.json +5 -5
- package/dist/site/buildchain-site.json +12 -12
- package/dist/site/kfd-claims.json +2 -2
- package/dist/site/kfd-upstream-aggregate.json +1 -1
- package/dist/site/manual-registry.json +2 -2
- package/dist/site/page-registry.json +6 -6
- package/dist/site/public-surface-audit.json +1 -1
- package/dist/site/publication-registry.json +4 -4
- package/dist/site/site-manifest.json +6 -6
- package/docs/release-governance.md +9 -0
- package/docs/reusable-build-surface.md +11 -7
- package/package.json +1 -1
- package/scripts/release-candidate-resolver.mjs +5 -0
|
@@ -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-11T05:45:16.756Z",
|
|
5
|
+
"publishedAt": "2026-07-11T05:45:16.756Z",
|
|
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": "6ac5e0fbb3e3659c4948685993b9856ad8cf34e5",
|
|
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.0-alpha.
|
|
40
|
+
"version": "2.12.0-alpha.4",
|
|
41
41
|
"versionSource": "package.json#version"
|
|
42
42
|
},
|
|
43
43
|
"entrypoint": "buildchain-site.json",
|
|
@@ -205,7 +205,7 @@
|
|
|
205
205
|
"path": "docs/reusable-build-surface.md",
|
|
206
206
|
"plane": "use",
|
|
207
207
|
"exists": true,
|
|
208
|
-
"digest": "sha256:
|
|
208
|
+
"digest": "sha256:dfa37928517a391c2ab214a095954dcb50e84f514cea0a8424619903843d9b8d"
|
|
209
209
|
},
|
|
210
210
|
{
|
|
211
211
|
"id": "publish-transaction",
|
|
@@ -221,7 +221,7 @@
|
|
|
221
221
|
"path": "docs/release-governance.md",
|
|
222
222
|
"plane": "why",
|
|
223
223
|
"exists": true,
|
|
224
|
-
"digest": "sha256:
|
|
224
|
+
"digest": "sha256:11f0e3ff3162c7b3f886a38ab0e4b591886e2046937a9d006eda74b72a8cc9ab"
|
|
225
225
|
},
|
|
226
226
|
{
|
|
227
227
|
"id": "release-flow",
|
|
@@ -256,6 +256,15 @@ evaluated after the PR-stage release candidate has been resolved and before the
|
|
|
256
256
|
publish-gate ref, package registry, exact stable tag, or floating stable refs
|
|
257
257
|
are mutated. Train refs and alpha promotion do not execute this gate.
|
|
258
258
|
|
|
259
|
+
All alpha and release promotions first run a metadata-only release-candidate
|
|
260
|
+
preflight after queued-intent revalidation. The preflight uses the same resolver
|
|
261
|
+
and exact target SHA as the publication job, but does not download payloads or
|
|
262
|
+
install the candidate repository dependencies. Missing channel PRs, stale
|
|
263
|
+
workflow runs, expired passport pairs, and insufficient payload artifact sets
|
|
264
|
+
therefore fail before the full promotion job starts. The publication job still
|
|
265
|
+
downloads and validates the exact evidence again at the trust boundary; the
|
|
266
|
+
preflight moves failure earlier without weakening the final check.
|
|
267
|
+
|
|
259
268
|
The policy is versioned in `.buildchain/stable-release-policy.json`. A stable
|
|
260
269
|
candidate is allowed only when all of these facts are true:
|
|
261
270
|
|
|
@@ -329,13 +329,17 @@ repository or organization variables named
|
|
|
329
329
|
`BUILDCHAIN_CHECKOUT_CACHE_REFERENCE_REPOSITORY_TEMPLATE`, so consumers can keep
|
|
330
330
|
private LAN topology out of repository YAML.
|
|
331
331
|
|
|
332
|
-
The GitHub-hosted trust gate
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
the
|
|
332
|
+
The GitHub-hosted trust gate resolves the reusable workflow shell to an exact
|
|
333
|
+
commit and uploads that shell's small checkout bootstrap script. Native and
|
|
334
|
+
Linux-container build jobs download the bootstrap, then use the same cache
|
|
335
|
+
policy to obtain both the selected Buildchain runtime and consumer source at
|
|
336
|
+
their already resolved immutable SHAs. Keeping the bootstrap owned by the
|
|
337
|
+
workflow shell is important when `@vN-alpha` routes a stable release to an older
|
|
338
|
+
`vN` runtime: the stable runtime does not need to already contain the newest
|
|
339
|
+
checkout transport implementation. This also prevents a large direct
|
|
340
|
+
`actions/checkout` runtime clone from becoming a separate timeout path on
|
|
341
|
+
constrained self-hosted uplinks. The bootstrap artifact does not contain the
|
|
342
|
+
runtime repository and cannot move either selected ref.
|
|
339
343
|
|
|
340
344
|
Do not read cache URLs or reference paths from PR-controlled files such as
|
|
341
345
|
`.buildchain/buildchain.toml`. These values are trusted workflow inputs or repo/org
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kungfu-tech/buildchain",
|
|
3
|
-
"version": "2.12.0-alpha.
|
|
3
|
+
"version": "2.12.0-alpha.4",
|
|
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",
|
|
@@ -13,6 +13,10 @@ function env(name, fallback = "") {
|
|
|
13
13
|
return process.env[name] || fallback;
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
+
export function releaseCandidateDownloadEnabled(value = "true") {
|
|
17
|
+
return String(value || "true").trim().toLowerCase() !== "false";
|
|
18
|
+
}
|
|
19
|
+
|
|
16
20
|
function splitRepository(repository) {
|
|
17
21
|
const match = String(repository || "").trim().match(/^([^/\s]+)\/([^/\s]+)$/);
|
|
18
22
|
if (!match) {
|
|
@@ -546,6 +550,7 @@ export async function resolveReleaseCandidateArtifactsCli() {
|
|
|
546
550
|
publishArtifactKind: env("BUILDCHAIN_PUBLISH_ARTIFACT_KIND", "npm"),
|
|
547
551
|
publishPackageMain: env("BUILDCHAIN_PUBLISH_PACKAGE_MAIN"),
|
|
548
552
|
outputDir: env("BUILDCHAIN_RC_OUTPUT_DIR", ".buildchain/release-candidate"),
|
|
553
|
+
download: releaseCandidateDownloadEnabled(env("BUILDCHAIN_RC_DOWNLOAD", "true")),
|
|
549
554
|
});
|
|
550
555
|
writeGitHubOutputs({
|
|
551
556
|
"promote-only-release-candidate": String(result.enabled === true),
|