@kungfu-tech/buildchain 4.0.9-alpha.0 → 4.0.9-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.
@@ -4,7 +4,7 @@
4
4
  "status": "passed",
5
5
  "summary": {
6
6
  "cliCommandCount": 117,
7
- "workflowCount": 115,
7
+ "workflowCount": 116,
8
8
  "actionCount": 14,
9
9
  "sitePageCount": 88,
10
10
  "docCommandRefCount": 1048,
@@ -4353,6 +4353,17 @@
4353
4353
  "outputs": [],
4354
4354
  "outputCount": 0
4355
4355
  },
4356
+ {
4357
+ "id": "self-build-stable-dogfood",
4358
+ "path": ".github/workflows/self-build-stable-dogfood.yml",
4359
+ "reusable": false,
4360
+ "inputs": [],
4361
+ "inputCount": 0,
4362
+ "secrets": [],
4363
+ "secretCount": 0,
4364
+ "outputs": [],
4365
+ "outputCount": 0
4366
+ },
4356
4367
  {
4357
4368
  "id": "self-build-verify",
4358
4369
  "path": ".github/workflows/self-build-verify.yml",
@@ -10628,8 +10639,8 @@
10628
10639
  "workflowRegistryPath": "dist/site/workflow-registry.json",
10629
10640
  "pageRegistryPath": "dist/site/page-registry.json",
10630
10641
  "cliRegistryDigest": "547dde42a349a047f2aadcfc3ee9e3e31b6a7f6bfc75b7d37e5dcff7abd15308",
10631
- "workflowRegistryDigest": "82c2a0ad3ca59d91cd71987c968ae5c0f5fe16d2cdb2a37dcfce440cb41777be",
10632
- "pageRegistryDigest": "a28101c7e678dbdd499b0b263f809884381d7ddecd9d8ba7820c6912bc4f8c4c"
10642
+ "workflowRegistryDigest": "19481dae8234daed9017d048c655b7a1b5b4099fe30113c9ff8275686b0caa8e",
10643
+ "pageRegistryDigest": "09db5cdb5969b1c411bb23297b1943f35e6150b1f878582b43bd11f897884c10"
10633
10644
  },
10634
10645
  "comparison": {
10635
10646
  "missingCliRegistry": [],
@@ -1001,6 +1001,19 @@
1001
1001
  "runnerPolicy": "unqualified",
1002
1002
  "notes": ""
1003
1003
  },
1004
+ {
1005
+ "workflowPath": ".github/workflows/self-build-stable-dogfood.yml",
1006
+ "authorityClass": "non-publication-oidc",
1007
+ "publicationCapable": false,
1008
+ "capabilityIds": [],
1009
+ "credentialMode": "none",
1010
+ "publisherWorkflowMode": "fixed",
1011
+ "publisherWorkflowPath": ".github/workflows/self-build-stable-dogfood.yml",
1012
+ "environment": "",
1013
+ "environmentMode": "fixed",
1014
+ "runnerPolicy": "unqualified",
1015
+ "notes": ""
1016
+ },
1004
1017
  {
1005
1018
  "workflowPath": ".github/workflows/self-ops-bootstrap-dogfood.yml",
1006
1019
  "authorityClass": "product-publication",
@@ -1861,6 +1874,14 @@
1861
1874
  "signals": [],
1862
1875
  "classified": false
1863
1876
  },
1877
+ {
1878
+ "path": ".github/workflows/self-build-stable-dogfood.yml",
1879
+ "signals": [
1880
+ "write-permission",
1881
+ "oidc"
1882
+ ],
1883
+ "classified": true
1884
+ },
1864
1885
  {
1865
1886
  "path": ".github/workflows/self-build-verify.yml",
1866
1887
  "signals": [],
@@ -2031,5 +2052,5 @@
2031
2052
  "classified": true
2032
2053
  }
2033
2054
  ],
2034
- "registryDigest": "e5eb0d7ee3cce4a25674909154f6bd0bf736d5b93df41c1d435c468aad50c32a"
2055
+ "registryDigest": "40ae53e5bf87b44395bd7bf04b19effb2cae1ada5f9864c02dbef4220fc92106"
2035
2056
  }
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "contract": "kungfu-buildchain-publication-release-registry",
4
- "generatedAt": "2026-09-08T08:25:09.000Z",
5
- "publishedAt": "2026-09-08T08:25:09.000Z",
4
+ "generatedAt": "2026-09-08T14:54:17.000Z",
5
+ "publishedAt": "2026-09-08T14:54:17.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": "a9e25fd5b7d5dac1b0be1099d8651f7c6b0d7321",
22
+ "sourceRevision": "55827a43f38b1d75cb4903247c1e126fda4032cf",
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": "4.0.9-alpha.0",
35
+ "version": "4.0.9-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-09-08T08:25:09.000Z",
5
- "publishedAt": "2026-09-08T08:25:09.000Z",
4
+ "generatedAt": "2026-09-08T14:54:17.000Z",
5
+ "publishedAt": "2026-09-08T14:54:17.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": "a9e25fd5b7d5dac1b0be1099d8651f7c6b0d7321",
22
+ "sourceRevision": "55827a43f38b1d75cb4903247c1e126fda4032cf",
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": "4.0.9-alpha.0",
40
+ "version": "4.0.9-alpha.2",
41
41
  "versionSource": "package.json#version"
42
42
  },
43
43
  "entrypoint": "buildchain-site.json",
@@ -253,7 +253,7 @@
253
253
  "path": "docs/node-api-reference.md",
254
254
  "plane": "use",
255
255
  "exists": true,
256
- "digest": "sha256:29b6f9cfccefae36ce402485b8c4e4c86bfd7cab18a8dcdfab7c1369b2301b4e"
256
+ "digest": "sha256:0b971a24b4fb850cf941d05f0ee8b3493f0dfe3ddbea5479bf2e344ea8a1553e"
257
257
  },
258
258
  {
259
259
  "id": "build-facts",
@@ -293,7 +293,7 @@
293
293
  "path": "docs/reusable-build-surface.md",
294
294
  "plane": "use",
295
295
  "exists": true,
296
- "digest": "sha256:42eda071001e232c0d4f6236c362c862fe7d63cd7b123db9780e0a3b468bc09f"
296
+ "digest": "sha256:bc609cad079a44afb8c2cf2b4459d44612bfd5ff09ed3064f85a2a3f02a5ec1e"
297
297
  },
298
298
  {
299
299
  "id": "v4-adopter-delivery",
@@ -333,7 +333,7 @@
333
333
  "path": "docs/release-governance.md",
334
334
  "plane": "why",
335
335
  "exists": true,
336
- "digest": "sha256:dab1c9cdc92b96fc79a45d33916973a6006c0be834d2a3adbf70f63f23bf00b5"
336
+ "digest": "sha256:4dca8751549a33393a0eb6f7237e1e70e9c586929b1e2792f7b32e9beadef75f"
337
337
  },
338
338
  {
339
339
  "id": "v4-compatibility-facts",
@@ -2464,7 +2464,7 @@
2464
2464
  "status": "preview",
2465
2465
  "owner": "buildchain-workflows",
2466
2466
  "maturity": "preview",
2467
- "introducedVersion": "4.0.9-alpha.0",
2467
+ "introducedVersion": "4.0.9-alpha.2",
2468
2468
  "compatibilityPromise": "preserved-through-the-v3-major-line",
2469
2469
  "deprecationReplacement": "",
2470
2470
  "sunsetCondition": "explicit-breaking-change-review-in-a-future-major-line",
@@ -3565,7 +3565,7 @@
3565
3565
  "status": "preview",
3566
3566
  "owner": "buildchain-workflows",
3567
3567
  "maturity": "preview",
3568
- "introducedVersion": "4.0.9-alpha.0",
3568
+ "introducedVersion": "4.0.9-alpha.2",
3569
3569
  "compatibilityPromise": "preserved-through-the-v3-major-line",
3570
3570
  "deprecationReplacement": "",
3571
3571
  "sunsetCondition": "explicit-breaking-change-review-in-a-future-major-line",
@@ -5477,6 +5477,36 @@
5477
5477
  "sunsetCondition": "explicit-breaking-change-review-in-a-future-major-line",
5478
5478
  "nonDuplicationRationale": "Existing workflow identity retained for caller compatibility and repository orchestration."
5479
5479
  },
5480
+ {
5481
+ "id": "self-build-stable-dogfood",
5482
+ "path": ".github/workflows/self-build-stable-dogfood.yml",
5483
+ "reusable": false,
5484
+ "inputs": [],
5485
+ "inputCount": 0,
5486
+ "secrets": [],
5487
+ "secretCount": 0,
5488
+ "outputs": [],
5489
+ "outputCount": 0,
5490
+ "taxonomy": {
5491
+ "id": "buildchain-stable-self-dogfood",
5492
+ "role": "self",
5493
+ "category": "build",
5494
+ "purpose": "stable-dogfood",
5495
+ "status": "active",
5496
+ "canonicalPath": ".github/workflows/self-build-stable-dogfood.yml",
5497
+ "compatibilityAlias": false
5498
+ },
5499
+ "surface": "repository-workflow",
5500
+ "capabilityGroup": "api-cli-reference",
5501
+ "status": "active",
5502
+ "owner": "buildchain-workflows",
5503
+ "maturity": "active",
5504
+ "introducedVersion": "pre-3.0.2-alpha.4",
5505
+ "compatibilityPromise": "preserved-through-the-v3-major-line",
5506
+ "deprecationReplacement": "",
5507
+ "sunsetCondition": "explicit-breaking-change-review-in-a-future-major-line",
5508
+ "nonDuplicationRationale": "Existing workflow identity retained for caller compatibility and repository orchestration."
5509
+ },
5480
5510
  {
5481
5511
  "id": "self-build-verify",
5482
5512
  "path": ".github/workflows/self-build-verify.yml",
@@ -5626,7 +5656,7 @@
5626
5656
  "status": "preview",
5627
5657
  "owner": "buildchain-workflows",
5628
5658
  "maturity": "preview",
5629
- "introducedVersion": "4.0.9-alpha.0",
5659
+ "introducedVersion": "4.0.9-alpha.2",
5630
5660
  "compatibilityPromise": "preserved-through-the-v3-major-line",
5631
5661
  "deprecationReplacement": "",
5632
5662
  "sunsetCondition": "explicit-breaking-change-review-in-a-future-major-line",
@@ -5657,7 +5687,7 @@
5657
5687
  "status": "preview",
5658
5688
  "owner": "buildchain-workflows",
5659
5689
  "maturity": "preview",
5660
- "introducedVersion": "4.0.9-alpha.0",
5690
+ "introducedVersion": "4.0.9-alpha.2",
5661
5691
  "compatibilityPromise": "preserved-through-the-v3-major-line",
5662
5692
  "deprecationReplacement": "",
5663
5693
  "sunsetCondition": "explicit-breaking-change-review-in-a-future-major-line",
@@ -5688,7 +5718,7 @@
5688
5718
  "status": "preview",
5689
5719
  "owner": "buildchain-workflows",
5690
5720
  "maturity": "preview",
5691
- "introducedVersion": "4.0.9-alpha.0",
5721
+ "introducedVersion": "4.0.9-alpha.2",
5692
5722
  "compatibilityPromise": "preserved-through-the-v3-major-line",
5693
5723
  "deprecationReplacement": "",
5694
5724
  "sunsetCondition": "explicit-breaking-change-review-in-a-future-major-line",
@@ -120,7 +120,7 @@ Target: `./packages/core/index.js`. Public symbols: 662.
120
120
  | `BUILDCHAIN_VERSION_PIN_PATH` | constant: const BUILDCHAIN_VERSION_PIN_PATH | none | value | Import does not declare a throw contract. | none-on-import | `import { BUILDCHAIN_VERSION_PIN_PATH } from "@kungfu-tech/buildchain";` | `packages/core/buildchain-layout.js:5` |
121
121
  | `BUILDCHAIN_WORKFLOW_FRICTION_ISSUE_CONTRACT` | constant: const BUILDCHAIN_WORKFLOW_FRICTION_ISSUE_CONTRACT | none | value | Import does not declare a throw contract. | none-on-import | `import { BUILDCHAIN_WORKFLOW_FRICTION_ISSUE_CONTRACT } from "@kungfu-tech/buildchain";` | `packages/core/issue-reporting.js:5` |
122
122
  | `buildchainKfdClaims` | constant: const buildchainKfdClaims | none | value | Import does not declare a throw contract. | none-on-import | `import { buildchainKfdClaims } from "@kungfu-tech/buildchain";` | `packages/core/kfd.js:896` |
123
- | `buildchainPublicationAuthorityDescriptors` | function: function buildchainPublicationAuthorityDescriptors({ root = process.cwd() } = {}) | { root = process.cwd() } = {} | unknown | May throw an Error on rejected input or failed operations; follow the linked source contract. | none-detected-by-static-source-scan | `import { buildchainPublicationAuthorityDescriptors } from "@kungfu-tech/buildchain";` | `packages/core/buildchain-publication-authority.js:66` |
123
+ | `buildchainPublicationAuthorityDescriptors` | function: function buildchainPublicationAuthorityDescriptors({ root = process.cwd() } = {}) | { root = process.cwd() } = {} | unknown | May throw an Error on rejected input or failed operations; follow the linked source contract. | none-detected-by-static-source-scan | `import { buildchainPublicationAuthorityDescriptors } from "@kungfu-tech/buildchain";` | `packages/core/buildchain-publication-authority.js:67` |
124
124
  | `buildConsumerIssueReport` | function: function buildConsumerIssueReport(options = {}) | options = {} | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { buildConsumerIssueReport } from "@kungfu-tech/buildchain";` | `packages/core/issue-reporting.js:104` |
125
125
  | `buildFactsDigest` | function: function buildFactsDigest(value) | value | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | local-filesystem-write, subprocess | `import { buildFactsDigest } from "@kungfu-tech/buildchain";` | `packages/core/build-facts.js:45` |
126
126
  | `buildWorkflowFrictionIssueReport` | function: function buildWorkflowFrictionIssueReport(options = {}) | options = {} | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { buildWorkflowFrictionIssueReport } from "@kungfu-tech/buildchain";` | `packages/core/issue-reporting.js:199` |
@@ -193,7 +193,7 @@ Target: `./packages/core/index.js`. Public symbols: 662.
193
193
  | `createBuildchainKfdSurfaceRegistry` | function: function createBuildchainKfdSurfaceRegistry({ root = process.cwd() } = {}) | { root = process.cwd() } = {} | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { createBuildchainKfdSurfaceRegistry } from "@kungfu-tech/buildchain";` | `packages/core/buildchain-kfd-claims.js:411` |
194
194
  | `createBuildchainLayoutDiscovery` | function: function createBuildchainLayoutDiscovery({ cwd = process.cwd(), buildchainVersion = "", } = {}) | { cwd = process.cwd(), buildchainVersion = "", } = {} | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { createBuildchainLayoutDiscovery } from "@kungfu-tech/buildchain";` | `packages/core/buildchain-layout.js:99` |
195
195
  | `createBuildchainLogger` | function: function createBuildchainLogger(options = {}) | options = {} | unknown | May throw an Error on rejected input or failed operations; follow the linked source contract. | subprocess | `import { createBuildchainLogger } from "@kungfu-tech/buildchain";` | `packages/core/logging.js:300` |
196
- | `createBuildchainPublicationAuthorityRegistry` | function: function createBuildchainPublicationAuthorityRegistry({ root = process.cwd() } = {}) | { root = process.cwd() } = {} | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { createBuildchainPublicationAuthorityRegistry } from "@kungfu-tech/buildchain";` | `packages/core/buildchain-publication-authority.js:105` |
196
+ | `createBuildchainPublicationAuthorityRegistry` | function: function createBuildchainPublicationAuthorityRegistry({ root = process.cwd() } = {}) | { root = process.cwd() } = {} | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { createBuildchainPublicationAuthorityRegistry } from "@kungfu-tech/buildchain";` | `packages/core/buildchain-publication-authority.js:106` |
197
197
  | `createBuildchainPublicClaimDefinitions` | function: function createBuildchainPublicClaimDefinitions() | none | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { createBuildchainPublicClaimDefinitions } from "@kungfu-tech/buildchain";` | `packages/core/buildchain-kfd-claims.js:226` |
198
198
  | `createCacheEvidenceSet` | function: function createCacheEvidenceSet({ repository, sourceCommit, sourceTree = "", runtimeCommit = "", platform, operations = [], } = {}) | { repository, sourceCommit, sourceTree = "", runtimeCommit = "", platform, operations = [], } = {} | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { createCacheEvidenceSet } from "@kungfu-tech/buildchain";` | `packages/core/cache-evidence.js:244` |
199
199
  | `createCacheOperationReceipt` | function: function createCacheOperationReceipt({ operationId, operation, provider, producer, platform, cacheKey, cacheRoot, outcome, bindings = {}, metrics, evidence, } = {}) | { operationId, operation, provider, producer, platform, cacheKey, cacheRoot, outcome, bindings = {}, metrics, evidence, } = {} | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { createCacheOperationReceipt } from "@kungfu-tech/buildchain";` | `packages/core/cache-evidence.js:169` |
@@ -835,7 +835,7 @@ Target: `./packages/core/index.js`. Public symbols: 662.
835
835
  | `BUILDCHAIN_VERSION_PIN_PATH` | constant: const BUILDCHAIN_VERSION_PIN_PATH | none | value | Import does not declare a throw contract. | none-on-import | `import { BUILDCHAIN_VERSION_PIN_PATH } from "@kungfu-tech/buildchain/core";` | `packages/core/buildchain-layout.js:5` |
836
836
  | `BUILDCHAIN_WORKFLOW_FRICTION_ISSUE_CONTRACT` | constant: const BUILDCHAIN_WORKFLOW_FRICTION_ISSUE_CONTRACT | none | value | Import does not declare a throw contract. | none-on-import | `import { BUILDCHAIN_WORKFLOW_FRICTION_ISSUE_CONTRACT } from "@kungfu-tech/buildchain/core";` | `packages/core/issue-reporting.js:5` |
837
837
  | `buildchainKfdClaims` | constant: const buildchainKfdClaims | none | value | Import does not declare a throw contract. | none-on-import | `import { buildchainKfdClaims } from "@kungfu-tech/buildchain/core";` | `packages/core/kfd.js:896` |
838
- | `buildchainPublicationAuthorityDescriptors` | function: function buildchainPublicationAuthorityDescriptors({ root = process.cwd() } = {}) | { root = process.cwd() } = {} | unknown | May throw an Error on rejected input or failed operations; follow the linked source contract. | none-detected-by-static-source-scan | `import { buildchainPublicationAuthorityDescriptors } from "@kungfu-tech/buildchain/core";` | `packages/core/buildchain-publication-authority.js:66` |
838
+ | `buildchainPublicationAuthorityDescriptors` | function: function buildchainPublicationAuthorityDescriptors({ root = process.cwd() } = {}) | { root = process.cwd() } = {} | unknown | May throw an Error on rejected input or failed operations; follow the linked source contract. | none-detected-by-static-source-scan | `import { buildchainPublicationAuthorityDescriptors } from "@kungfu-tech/buildchain/core";` | `packages/core/buildchain-publication-authority.js:67` |
839
839
  | `buildConsumerIssueReport` | function: function buildConsumerIssueReport(options = {}) | options = {} | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { buildConsumerIssueReport } from "@kungfu-tech/buildchain/core";` | `packages/core/issue-reporting.js:104` |
840
840
  | `buildFactsDigest` | function: function buildFactsDigest(value) | value | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | local-filesystem-write, subprocess | `import { buildFactsDigest } from "@kungfu-tech/buildchain/core";` | `packages/core/build-facts.js:45` |
841
841
  | `buildWorkflowFrictionIssueReport` | function: function buildWorkflowFrictionIssueReport(options = {}) | options = {} | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { buildWorkflowFrictionIssueReport } from "@kungfu-tech/buildchain/core";` | `packages/core/issue-reporting.js:199` |
@@ -908,7 +908,7 @@ Target: `./packages/core/index.js`. Public symbols: 662.
908
908
  | `createBuildchainKfdSurfaceRegistry` | function: function createBuildchainKfdSurfaceRegistry({ root = process.cwd() } = {}) | { root = process.cwd() } = {} | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { createBuildchainKfdSurfaceRegistry } from "@kungfu-tech/buildchain/core";` | `packages/core/buildchain-kfd-claims.js:411` |
909
909
  | `createBuildchainLayoutDiscovery` | function: function createBuildchainLayoutDiscovery({ cwd = process.cwd(), buildchainVersion = "", } = {}) | { cwd = process.cwd(), buildchainVersion = "", } = {} | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { createBuildchainLayoutDiscovery } from "@kungfu-tech/buildchain/core";` | `packages/core/buildchain-layout.js:99` |
910
910
  | `createBuildchainLogger` | function: function createBuildchainLogger(options = {}) | options = {} | unknown | May throw an Error on rejected input or failed operations; follow the linked source contract. | subprocess | `import { createBuildchainLogger } from "@kungfu-tech/buildchain/core";` | `packages/core/logging.js:300` |
911
- | `createBuildchainPublicationAuthorityRegistry` | function: function createBuildchainPublicationAuthorityRegistry({ root = process.cwd() } = {}) | { root = process.cwd() } = {} | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { createBuildchainPublicationAuthorityRegistry } from "@kungfu-tech/buildchain/core";` | `packages/core/buildchain-publication-authority.js:105` |
911
+ | `createBuildchainPublicationAuthorityRegistry` | function: function createBuildchainPublicationAuthorityRegistry({ root = process.cwd() } = {}) | { root = process.cwd() } = {} | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { createBuildchainPublicationAuthorityRegistry } from "@kungfu-tech/buildchain/core";` | `packages/core/buildchain-publication-authority.js:106` |
912
912
  | `createBuildchainPublicClaimDefinitions` | function: function createBuildchainPublicClaimDefinitions() | none | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { createBuildchainPublicClaimDefinitions } from "@kungfu-tech/buildchain/core";` | `packages/core/buildchain-kfd-claims.js:226` |
913
913
  | `createCacheEvidenceSet` | function: function createCacheEvidenceSet({ repository, sourceCommit, sourceTree = "", runtimeCommit = "", platform, operations = [], } = {}) | { repository, sourceCommit, sourceTree = "", runtimeCommit = "", platform, operations = [], } = {} | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { createCacheEvidenceSet } from "@kungfu-tech/buildchain/core";` | `packages/core/cache-evidence.js:244` |
914
914
  | `createCacheOperationReceipt` | function: function createCacheOperationReceipt({ operationId, operation, provider, producer, platform, cacheKey, cacheRoot, outcome, bindings = {}, metrics, evidence, } = {}) | { operationId, operation, provider, producer, platform, cacheKey, cacheRoot, outcome, bindings = {}, metrics, evidence, } = {} | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { createCacheOperationReceipt } from "@kungfu-tech/buildchain/core";` | `packages/core/cache-evidence.js:169` |
@@ -2544,8 +2544,8 @@ Target: `./packages/core/buildchain-publication-authority.js`. Public symbols: 2
2544
2544
 
2545
2545
  | Symbol | Kind and signature | Parameters | Return | Errors | Side effects | Example | Source |
2546
2546
  | --- | --- | --- | --- | --- | --- | --- | --- |
2547
- | `buildchainPublicationAuthorityDescriptors` | function: function buildchainPublicationAuthorityDescriptors({ root = process.cwd() } = {}) | { root = process.cwd() } = {} | unknown | May throw an Error on rejected input or failed operations; follow the linked source contract. | none-detected-by-static-source-scan | `import { buildchainPublicationAuthorityDescriptors } from "@kungfu-tech/buildchain/buildchain-publication-authority";` | `packages/core/buildchain-publication-authority.js:66` |
2548
- | `createBuildchainPublicationAuthorityRegistry` | function: function createBuildchainPublicationAuthorityRegistry({ root = process.cwd() } = {}) | { root = process.cwd() } = {} | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { createBuildchainPublicationAuthorityRegistry } from "@kungfu-tech/buildchain/buildchain-publication-authority";` | `packages/core/buildchain-publication-authority.js:105` |
2547
+ | `buildchainPublicationAuthorityDescriptors` | function: function buildchainPublicationAuthorityDescriptors({ root = process.cwd() } = {}) | { root = process.cwd() } = {} | unknown | May throw an Error on rejected input or failed operations; follow the linked source contract. | none-detected-by-static-source-scan | `import { buildchainPublicationAuthorityDescriptors } from "@kungfu-tech/buildchain/buildchain-publication-authority";` | `packages/core/buildchain-publication-authority.js:67` |
2548
+ | `createBuildchainPublicationAuthorityRegistry` | function: function createBuildchainPublicationAuthorityRegistry({ root = process.cwd() } = {}) | { root = process.cwd() } = {} | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { createBuildchainPublicationAuthorityRegistry } from "@kungfu-tech/buildchain/buildchain-publication-authority";` | `packages/core/buildchain-publication-authority.js:106` |
2549
2549
 
2550
2550
  ## `@kungfu-tech/buildchain/github-governance-authority`
2551
2551
 
@@ -8,11 +8,11 @@ confidence: high
8
8
  sensitivity: public
9
9
  evidence_grade: A
10
10
  review_state: unreviewed
11
- last_reviewed: 2026-07-31
11
+ last_reviewed: 2026-09-08
12
12
  ai_provenance:
13
- model_family: GPT-5
13
+ model_family: GPT-6
14
14
  product: Codex
15
- generated_at: 2026-07-27
15
+ generated_at: 2026-09-08
16
16
  invisible_context: not asserted
17
17
  ---
18
18
 
@@ -243,15 +243,16 @@ This keeps the test channel self-describing. If a consumer checks out
243
243
  alpha ref removes routine consumer edits when Buildchain opens a newer minor,
244
244
  while exact tags and SHAs remain the reproducible audit choice.
245
245
 
246
- ### Buildchain Alpha Self-Dogfood
246
+ ### Buildchain public build self-dogfood
247
247
 
248
- Buildchain continuously consumes its own current major alpha through
249
- `.github/workflows/self-build-alpha-dogfood.yml`. Both lanes call the
250
- released channel router at `build.yml@v3-alpha`. The auto lane must resolve
251
- `v3-alpha`; the explicit stable lane must resolve `v3`. Both execute the same
252
- declared install, build, and verify fixture, proving that a single consumer
253
- surface routes to distinct released runtimes without duplicating lifecycle
254
- configuration in the consumer.
248
+ Two independent thin workflows continuously qualify the published channels.
249
+ `self-build-alpha-dogfood.yml` calls `build.yml@v4-alpha` with zero inputs and
250
+ runs the root project's real install, build, and verify lifecycle.
251
+ `self-build-stable-dogfood.yml` calls `build.yml@v4` with only the nested fixture's
252
+ `config-path`, including native and Linux container builds. Project settings
253
+ live in TOML; the called workflow binds its exact runtime SHA and configuration
254
+ root into the build receipts. Separate workflow validation allows each channel
255
+ to advance independently during a breaking producer-first release.
255
256
 
256
257
  Buildchain's generic artifact-signing contract seals source-, tree-, runtime-,
257
258
  platform-, and digest-bound requests from ordinary credential-free build jobs.
@@ -717,13 +718,13 @@ status to failure, while the merge group must still produce its own final check.
717
718
  that want a stable day-to-day operations contract, Buildchain also exposes a
718
719
  patrol workflow family:
719
720
 
720
- | Workflow | Intended cadence | Default intent |
721
- | --- | --- | --- |
722
- | `.github/workflows/patrol-daily.yml` | daily | lightweight inspection plus ready dev PR maintenance |
723
- | `.github/workflows/patrol-weekly.yml` | weekly | release-state, passport, gate, and stale-state health checks as they are added |
724
- | `.github/workflows/patrol-monthly.yml` | monthly | governance, permission, branch-protection, and workflow drift checks as they are added |
725
- | `.github/workflows/patrol-observed-evidence.yml` | caller-selected schedule | validated immutable observation plus atomic last-known-good publication; no per-refresh PR |
726
- | `.github/workflows/stable-candidate-patrol.yml` | repository-selected release window | qualify immutable alpha candidates and open the exact source-lock stable PR |
721
+ | Workflow | Intended cadence | Default intent |
722
+ | ------------------------------------------------ | ---------------------------------- | ------------------------------------------------------------------------------------------ |
723
+ | `.github/workflows/patrol-daily.yml` | daily | lightweight inspection plus ready dev PR maintenance |
724
+ | `.github/workflows/patrol-weekly.yml` | weekly | release-state, passport, gate, and stale-state health checks as they are added |
725
+ | `.github/workflows/patrol-monthly.yml` | monthly | governance, permission, branch-protection, and workflow drift checks as they are added |
726
+ | `.github/workflows/patrol-observed-evidence.yml` | caller-selected schedule | validated immutable observation plus atomic last-known-good publication; no per-refresh PR |
727
+ | `.github/workflows/stable-candidate-patrol.yml` | repository-selected release window | qualify immutable alpha candidates and open the exact source-lock stable PR |
727
728
 
728
729
  The cadence names describe patrol intensity, not release cadence:
729
730
 
@@ -80,6 +80,7 @@ fail_fast = false
80
80
  [build.tools]
81
81
  node = "24"
82
82
  rust = "stable"
83
+ go = "1.25.x" # optional; omitted toolchains are not installed
83
84
 
84
85
  [build.artifacts]
85
86
  name = "my-library"
@@ -43,6 +43,16 @@ ancestry, and target roots. Confirmed operations are never replayed; uncertain
43
43
  operations require provider readback before retry; stable publication requires
44
44
  an N-1 or independently sealed qualification.
45
45
 
46
+ ## Public build qualification
47
+
48
+ After a successful Alpha Self-Dogfood run, Stable Candidate Qualification reads
49
+ its exact `buildchain-summary-<source SHA>` artifact. Protected default-branch
50
+ code verifies the source run, published alpha runtime, all three platform
51
+ artifacts and install/build/verify evidence before writing
52
+ `buildchain-canary/buildchain-zero-input` on that runtime commit. Manual replay
53
+ accepts only the source run ID. This observation remains Buildchain-owned; it
54
+ neither dispatches another repository nor grants stable publication authority.
55
+
46
56
  ## Provider readback
47
57
 
48
58
  A stable release is complete only when all of these coordinates agree:
@@ -130,6 +130,7 @@ all related declarations. Run `pnpm run generate:workflows` and
130
130
  | [self-build-public-consumer-dogfood.yml](../.github/workflows/self-build-public-consumer-dogfood.yml) | build | repository | active | V4 Public Consumer Dogfood | — |
131
131
  | [self-build-release-verify-compat.yml](../.github/workflows/self-build-release-verify-compat.yml) | build | repository | compatibility | Release - Verify | — |
132
132
  | [self-build-stable-candidate-qualification.yml](../.github/workflows/self-build-stable-candidate-qualification.yml) | build | repository | active | Buildchain Stable Candidate Qualification | — |
133
+ | [self-build-stable-dogfood.yml](../.github/workflows/self-build-stable-dogfood.yml) | build | repository | active | Buildchain Stable Self-Dogfood | — |
133
134
  | [self-build-verify.yml](../.github/workflows/self-build-verify.yml) | build | repository | active | Verify | — |
134
135
  | [self-ops-bootstrap-dogfood.yml](../.github/workflows/self-ops-bootstrap-dogfood.yml) | ops | repository | active | Universal Bootstrap Train-First Self-Dogfood | — |
135
136
  | [self-ops-dev-delivery.yml](../.github/workflows/self-ops-dev-delivery.yml) | ops | repository | active | Buildchain Dev Delivery | — |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kungfu-tech/buildchain",
3
- "version": "4.0.9-alpha.0",
3
+ "version": "4.0.9-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",
@@ -4,7 +4,7 @@ import path from "node:path";
4
4
  // Project choices only. Provider endpoints, roles, runner labels and cache
5
5
  // transport authority belong to the selected, runtime-owned environment.
6
6
  const sections = {
7
- tools: { node: "24", rust: "" },
7
+ tools: { node: "24", rust: "", go: "" },
8
8
  artifacts: {
9
9
  name: "buildchain-artifact", paths: ["dist", "build/stage"],
10
10
  required_paths: [], min_files: 0, max_files: Number.MAX_SAFE_INTEGER,
@@ -24,6 +24,7 @@ const DESCRIPTORS = Object.freeze([
24
24
  [".github/workflows/build.yml", "non-publication-oidc"],
25
25
  [".github/workflows/bootstrap.yml", "product-publication", true, ["universal-candidate-execution"], "caller-secrets", "none", "fixed", "caller-bound"],
26
26
  [".github/workflows/self-build-alpha-dogfood.yml", "non-publication-oidc"],
27
+ [".github/workflows/self-build-stable-dogfood.yml", "non-publication-oidc"],
27
28
  [".github/workflows/self-ops-dev-delivery.yml", "governance-write"],
28
29
  [".github/workflows/self-ops-patrol-daily.yml", "governance-write"],
29
30
  [".github/workflows/self-ops-patrol-monthly.yml", "governance-write"],
@@ -1,5 +1,6 @@
1
1
  import fs from "node:fs";
2
2
  import path from "node:path";
3
+ import { parseWorkflowCallJobs } from "../packages/core/workflow-yaml-contract.js";
3
4
  import { execFileSync } from "node:child_process";
4
5
  import {
5
6
  assertPublicSurfaceReverseAudit,
@@ -160,6 +161,7 @@ const requiredPaths = [
160
161
  ".github/workflows/self-ops-patrol-weekly.yml",
161
162
  ".github/workflows/self-ops-patrol-monthly.yml",
162
163
  ".github/workflows/self-build-alpha-dogfood.yml",
164
+ ".github/workflows/self-build-stable-dogfood.yml",
163
165
  ".github/workflows/release-candidate-promote.yml",
164
166
  ".github/workflows/.release-candidate-promote.yml",
165
167
  ".github/workflows/release-propagation.yml",
@@ -195,10 +197,6 @@ if (rootPackage.name !== "@kungfu-tech/buildchain") {
195
197
  if (rootPackage.private !== false) {
196
198
  throw new Error("root package must be publishable with private=false");
197
199
  }
198
- const selfDogfoodWorkflow = fs.readFileSync(
199
- path.join(root, ".github/workflows/self-build-alpha-dogfood.yml"),
200
- "utf8",
201
- );
202
200
  const selfDogfoodAlphaLock = JSON.parse(
203
201
  fs.readFileSync(path.join(root, ".buildchain/alpha-contract-lock.json"), "utf8"),
204
202
  );
@@ -276,16 +274,13 @@ for (const channel of ["alpha-contract-lock.json", "contract-lock.json"]) {
276
274
  if (!evaluation.ok || lock.buildchain.ref !== ref)
277
275
  throw new Error(`${channel}: invalid accepted runtime contract`);
278
276
  }
279
- for (const requiredSnippet of [
280
- `/.github/workflows/build.yml@v${selfDogfoodMajor}-alpha`,
281
- "buildchain-channel: auto",
282
- "buildchain-channel: stable",
283
- `const alphaRef = "v${selfDogfoodMajor}-alpha"`,
284
- `const stableRef = "v${selfDogfoodMajor}"`,
285
- ]) {
286
- if (!selfDogfoodWorkflow.includes(requiredSnippet)) {
287
- throw new Error(`Buildchain self-dogfood workflow missing current-major snippet: ${requiredSnippet}`);
288
- }
277
+ for (const [channel, ref] of [["alpha", `v${selfDogfoodMajor}-alpha`], ["stable", `v${selfDogfoodMajor}`]]) {
278
+ const workflow = fs.readFileSync(path.join(root, `.github/workflows/self-build-${channel}-dogfood.yml`), "utf8");
279
+ if (!workflow.includes(`/.github/workflows/build.yml@${ref}`) || /steps:|buildchain-channel:|runner-preset:|working-directory:/u.test(workflow)) throw new Error(`${channel} self-dogfood must remain a thin public TOML build caller`);
280
+ if (!workflow.includes(`group: buildchain-${channel}-self-dogfood-`) || !workflow.includes("cancel-in-progress: false")) throw new Error(`${channel} self-dogfood must serialize its own runs`);
281
+ const expectedInputs = channel === "alpha" ? [] : ["config-path"];
282
+ const call = parseWorkflowCallJobs(workflow).find((job) => job.id === `${channel}-consumer`);
283
+ if (JSON.stringify(Object.keys(call.with || {})) !== JSON.stringify(expectedInputs)) throw new Error(`${channel} self-dogfood input contract drift`);
289
284
  }
290
285
  const reusableBuildWorkflow = fs.readFileSync(
291
286
  path.join(root, ".github/workflows/.build.yml"),
@@ -382,14 +377,6 @@ for (const workflow of [channelBuildWorkflow, reusableBuildWorkflow]) {
382
377
  if ((channelBuildWorkflow.match(/uses: \.\/\.github\/workflows\/\.build\.yml/g) || []).length !== 1) {
383
378
  throw new Error("public build facade must invoke its exact backbone once");
384
379
  }
385
- for (const requiredSnippet of [
386
- "group: buildchain-release-promotion-${{ github.repository }}",
387
- "cancel-in-progress: false",
388
- ]) {
389
- if (!selfDogfoodWorkflow.includes(requiredSnippet)) {
390
- throw new Error(`Buildchain self-dogfood workflow missing promotion serialization: ${requiredSnippet}`);
391
- }
392
- }
393
380
  const actionlintConfig = fs.readFileSync(
394
381
  path.join(root, ".github/actionlint.yaml"),
395
382
  "utf8",
@@ -82,15 +82,30 @@ function revisionAvailable(root, revision) {
82
82
  }
83
83
  }
84
84
 
85
- function ensureRevisionAvailable(root, revision) {
85
+ function ensureRevisionAvailable(
86
+ root,
87
+ revision,
88
+ {
89
+ fetchRevision = () =>
90
+ gitOutput(root, ["fetch", "--no-tags", "--depth=1", "origin", revision]),
91
+ } = {},
92
+ ) {
86
93
  if (revisionAvailable(root, revision)) return false;
87
- try {
88
- gitOutput(root, ["fetch", "--no-tags", "--depth=1", "origin", revision]);
89
- } catch (error) {
90
- const detail = String(error?.stderr || error?.message || error).trim();
91
- throw new Error(
92
- `maintainability revision ${revision} is unavailable and could not be fetched from origin${detail ? `: ${detail}` : ""}`,
93
- );
94
+ for (let attempt = 0; attempt < 3; attempt += 1) {
95
+ try {
96
+ fetchRevision();
97
+ break;
98
+ } catch (error) {
99
+ const detail = String(error?.stderr || error?.message || error).trim();
100
+ if (
101
+ attempt < 2 &&
102
+ /shallow file has changed since we read it/u.test(detail)
103
+ )
104
+ continue;
105
+ throw new Error(
106
+ `maintainability revision ${revision} is unavailable and could not be fetched from origin${detail ? `: ${detail}` : ""}`,
107
+ );
108
+ }
94
109
  }
95
110
  if (!revisionAvailable(root, revision)) {
96
111
  throw new Error(
@@ -45,7 +45,7 @@ export function resolveBuildConfiguration({ root, locator = "", workflowRef, wor
45
45
  return selected;
46
46
  };
47
47
  const evidence = (relative) => relative ? JSON.stringify(JSON.parse(fs.readFileSync(containedBuildPath(root, projectPath(relative)), "utf8"))) : "";
48
- const dependencyFiles = ["pnpm-lock.yaml", "package-lock.json", "Cargo.lock"].map(projectPath).filter((file) => fs.existsSync(path.join(root, file)));
48
+ const dependencyFiles = ["pnpm-lock.yaml", "package-lock.json", "Cargo.lock", "go.sum"].map(projectPath).filter((file) => fs.existsSync(path.join(root, file)));
49
49
  const plan = {
50
50
  schema: "buildchain.build-plan/v1", project,
51
51
  configuration_root: digest(fs.readFileSync(loaded.filePath)),
@@ -59,7 +59,7 @@ export function resolveBuildConfiguration({ root, locator = "", workflowRef, wor
59
59
  environment, environment_root: rootOf(environment),
60
60
  build,
61
61
  lifecycle: Object.fromEntries(["install", "build", "verify"].map((stage) => [stage, { required: stage === "build" || Boolean(loaded.config.lifecycle?.[stage]), configured: Boolean(loaded.config.lifecycle?.[stage]) }])),
62
- tools: { node: build.tools.node, setup_node: Boolean(build.tools.node), rust: build.tools.rust || "stable", setup_rust: Boolean(build.tools.rust) },
62
+ tools: { node: build.tools.node, setup_node: Boolean(build.tools.node), rust: build.tools.rust || "stable", setup_rust: Boolean(build.tools.rust), go: build.tools.go, setup_go: Boolean(build.tools.go) },
63
63
  artifacts: {
64
64
  name: build.artifacts.name,
65
65
  paths: build.artifacts.paths.map(projectPath).join("\n"),