@kungfu-tech/buildchain 4.0.2-alpha.44 → 4.0.2-alpha.46

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.
Files changed (42) hide show
  1. package/architecture/agent-change-map.md +1 -1
  2. package/architecture/maintainability-debt.json +24 -25
  3. package/architecture/maintainability-policy.json +4 -4
  4. package/architecture/v4-release-topology.json +9 -6
  5. package/architecture/v4-universal-workflow-train-admission.json +1 -1
  6. package/dist/site/buildchain-contract.json +7 -7
  7. package/dist/site/buildchain-site.json +55 -14
  8. package/dist/site/capability-registry.json +2 -2
  9. package/dist/site/kfd-claims.json +29 -5
  10. package/dist/site/kfd-upstream-aggregate.json +1 -1
  11. package/dist/site/manual-registry.json +3 -3
  12. package/dist/site/node-api-registry.json +154 -13
  13. package/dist/site/page-registry.json +48 -7
  14. package/dist/site/public-surface-audit.json +7 -3
  15. package/dist/site/publication-authority-registry.json +5 -17
  16. package/dist/site/publication-registry.json +4 -4
  17. package/dist/site/release-provenance.json +2 -1
  18. package/dist/site/site-manifest.json +7 -7
  19. package/dist/site/workflow-registry.json +5 -5
  20. package/docs/MAP.md +1 -0
  21. package/docs/node-api-reference.md +26 -15
  22. package/docs/oci-publication.md +82 -0
  23. package/docs/publish-transaction.md +36 -3
  24. package/package.json +3 -2
  25. package/packages/core/buildchain-v4-domain.wasm +0 -0
  26. package/packages/core/next-development-transition.js +5 -6
  27. package/packages/core/oci-publication-bundle.js +241 -0
  28. package/packages/core/publication-sealed-bundle.js +77 -13
  29. package/packages/core/release-tail-product-capabilities.js +9 -0
  30. package/packages/core/v4-canonical-contracts.js +1 -0
  31. package/packages/core/v4-domain-wasm-artifact.js +2 -2
  32. package/packages/core/v4-product-publication.js +2 -0
  33. package/scripts/check-v4-release-topology.mjs +14 -4
  34. package/scripts/generate-channel-promotion-workflow.mjs +2 -19
  35. package/scripts/generate-v4-universal-workflow-facades.mjs +8 -2
  36. package/scripts/publication-candidate-kind.mjs +92 -0
  37. package/scripts/publication-candidate-sealer.mjs +16 -1
  38. package/scripts/release-candidate-resolver.mjs +6 -17
  39. package/scripts/resume-from-candidate-run.mjs +10 -17
  40. package/scripts/site-capability-metadata.mjs +1 -0
  41. package/scripts/v4-product-publication-intent.mjs +9 -1
  42. package/scripts/v4-universal-workflow-engine.mjs +2 -0
@@ -6,7 +6,7 @@
6
6
  "cliCommandCount": 117,
7
7
  "workflowCount": 114,
8
8
  "actionCount": 8,
9
- "sitePageCount": 87,
9
+ "sitePageCount": 88,
10
10
  "docCommandRefCount": 1050,
11
11
  "failureCount": 0
12
12
  },
@@ -5518,6 +5518,10 @@
5518
5518
  "id": "manual:observed-evidence-patrol",
5519
5519
  "category": "manual"
5520
5520
  },
5521
+ {
5522
+ "id": "manual:oci-publication",
5523
+ "category": "manual"
5524
+ },
5521
5525
  {
5522
5526
  "id": "manual:ownership",
5523
5527
  "category": "manual"
@@ -10929,8 +10933,8 @@
10929
10933
  "workflowRegistryPath": "dist/site/workflow-registry.json",
10930
10934
  "pageRegistryPath": "dist/site/page-registry.json",
10931
10935
  "cliRegistryDigest": "fbc23073bbae240489a2f826b2c26daadc58e704050c5f8df366509f5c5a1c3e",
10932
- "workflowRegistryDigest": "6391219ad0dae43ff217202a74a7e3d45669799cd142d590e9f0bafecaeb9912",
10933
- "pageRegistryDigest": "de1ba89591aeb5f0e24f1c5e455c21e8477e1094ec616ffddc2c1163f02c53b9"
10936
+ "workflowRegistryDigest": "cc88d63b25d61394b3bbc28cb81b72f3c7786d85bf7c5f68ab6baa426b9a552b",
10937
+ "pageRegistryDigest": "6c4a4be1b2bc15c7842aa958b128f76ec405b9585f403e5cc604c16781a40afc"
10934
10938
  },
10935
10939
  "comparison": {
10936
10940
  "missingCliRegistry": [],
@@ -1356,10 +1356,7 @@
1356
1356
  },
1357
1357
  {
1358
1358
  "path": ".github/workflows/.release-candidate-promote.yml",
1359
- "signals": [
1360
- "write-permission",
1361
- "oidc"
1362
- ],
1359
+ "signals": [],
1363
1360
  "classified": true
1364
1361
  },
1365
1362
  {
@@ -1374,10 +1371,7 @@
1374
1371
  },
1375
1372
  {
1376
1373
  "path": ".github/workflows/.release-promote.yml",
1377
- "signals": [
1378
- "write-permission",
1379
- "oidc"
1380
- ],
1374
+ "signals": [],
1381
1375
  "classified": true
1382
1376
  },
1383
1377
  {
@@ -1723,10 +1717,7 @@
1723
1717
  },
1724
1718
  {
1725
1719
  "path": ".github/workflows/public-release-promote.yml",
1726
- "signals": [
1727
- "write-permission",
1728
- "oidc"
1729
- ],
1720
+ "signals": [],
1730
1721
  "classified": true
1731
1722
  },
1732
1723
  {
@@ -1768,10 +1759,7 @@
1768
1759
  },
1769
1760
  {
1770
1761
  "path": ".github/workflows/release-candidate-promote.yml",
1771
- "signals": [
1772
- "write-permission",
1773
- "oidc"
1774
- ],
1762
+ "signals": [],
1775
1763
  "classified": true
1776
1764
  },
1777
1765
  {
@@ -2021,5 +2009,5 @@
2021
2009
  "classified": true
2022
2010
  }
2023
2011
  ],
2024
- "registryDigest": "894cce314366698d41a3ab20172a0b7a05f03f2167667eae51793537b832c811"
2012
+ "registryDigest": "9c343ae9f9e778b608317d973b02cada327bd31e5149482d7f385b173c20ec14"
2025
2013
  }
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "contract": "kungfu-buildchain-publication-release-registry",
4
- "generatedAt": "2026-09-06T13:21:07.000Z",
5
- "publishedAt": "2026-09-06T13:21:07.000Z",
4
+ "generatedAt": "2026-09-06T15:52:10.000Z",
5
+ "publishedAt": "2026-09-06T15:52:10.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": "cf1b8e029ee3ef8b615cfc3c3814cfc8b7bf3c5c",
22
+ "sourceRevision": "53db887810f830c27680040bc35969238b5d2a88",
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.2-alpha.44",
35
+ "version": "4.0.2-alpha.46",
36
36
  "versionSource": "package.json#version"
37
37
  },
38
38
  "sourceKind": "package-site-bundle",
@@ -120,7 +120,8 @@
120
120
  "./site/product-mechanism.json": "./dist/site/product-mechanism.json",
121
121
  "./site/release-provenance.json": "./dist/site/release-provenance.json",
122
122
  "./site/agent-index.json": "./dist/site/agent-index.json",
123
- "./package.json": "./package.json"
123
+ "./package.json": "./package.json",
124
+ "./oci-publication": "./packages/core/oci-publication-bundle.js"
124
125
  }
125
126
  },
126
127
  "repository": "https://github.com/kungfu-systems/buildchain",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "contract": "kungfu-buildchain-site-manifest",
4
- "generatedAt": "2026-09-06T13:21:07.000Z",
5
- "publishedAt": "2026-09-06T13:21:07.000Z",
4
+ "generatedAt": "2026-09-06T15:52:10.000Z",
5
+ "publishedAt": "2026-09-06T15:52:10.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": "cf1b8e029ee3ef8b615cfc3c3814cfc8b7bf3c5c",
22
+ "sourceRevision": "53db887810f830c27680040bc35969238b5d2a88",
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.2-alpha.44",
40
+ "version": "4.0.2-alpha.46",
41
41
  "versionSource": "package.json#version"
42
42
  },
43
43
  "entrypoint": "buildchain-site.json",
@@ -53,7 +53,7 @@
53
53
  "path": "docs/MAP.md",
54
54
  "plane": "use",
55
55
  "exists": true,
56
- "digest": "sha256:aef677bb3e37882f73daf65b7052989fc549e3b40d70bc4036beb2738b608345"
56
+ "digest": "sha256:af7bee38e21a9ada99e1731f3576733f2897f9d19bdbf39eb2781650095ae419"
57
57
  },
58
58
  {
59
59
  "id": "getting-started",
@@ -253,7 +253,7 @@
253
253
  "path": "docs/node-api-reference.md",
254
254
  "plane": "use",
255
255
  "exists": true,
256
- "digest": "sha256:df073c14c12f15c851eb4507cbeb2919add936ac3079b10f222478138720d092"
256
+ "digest": "sha256:69f4e87e7cbf154f4b3241269e806e7998f9a517fb8ada64f120239c49abbd78"
257
257
  },
258
258
  {
259
259
  "id": "build-facts",
@@ -309,7 +309,7 @@
309
309
  "path": "docs/publish-transaction.md",
310
310
  "plane": "verify",
311
311
  "exists": true,
312
- "digest": "sha256:635de0da30769e4e6f956748ec9758338a1ae7921bce73268c2d914ae240693d"
312
+ "digest": "sha256:713f4fd2b9e67cefdd394170eea49ddb92e803c2e6adac20d6f3b8b1e431b960"
313
313
  },
314
314
  {
315
315
  "id": "release-tail-contract",
@@ -2746,7 +2746,7 @@
2746
2746
  "status": "preview",
2747
2747
  "owner": "buildchain-workflows",
2748
2748
  "maturity": "preview",
2749
- "introducedVersion": "4.0.2-alpha.44",
2749
+ "introducedVersion": "4.0.2-alpha.46",
2750
2750
  "compatibilityPromise": "preserved-through-the-v3-major-line",
2751
2751
  "deprecationReplacement": "",
2752
2752
  "sunsetCondition": "explicit-breaking-change-review-in-a-future-major-line",
@@ -3943,7 +3943,7 @@
3943
3943
  "status": "preview",
3944
3944
  "owner": "buildchain-workflows",
3945
3945
  "maturity": "preview",
3946
- "introducedVersion": "4.0.2-alpha.44",
3946
+ "introducedVersion": "4.0.2-alpha.46",
3947
3947
  "compatibilityPromise": "preserved-through-the-v3-major-line",
3948
3948
  "deprecationReplacement": "",
3949
3949
  "sunsetCondition": "explicit-breaking-change-review-in-a-future-major-line",
@@ -5970,7 +5970,7 @@
5970
5970
  "status": "preview",
5971
5971
  "owner": "buildchain-workflows",
5972
5972
  "maturity": "preview",
5973
- "introducedVersion": "4.0.2-alpha.44",
5973
+ "introducedVersion": "4.0.2-alpha.46",
5974
5974
  "compatibilityPromise": "preserved-through-the-v3-major-line",
5975
5975
  "deprecationReplacement": "",
5976
5976
  "sunsetCondition": "explicit-breaking-change-review-in-a-future-major-line",
@@ -6001,7 +6001,7 @@
6001
6001
  "status": "preview",
6002
6002
  "owner": "buildchain-workflows",
6003
6003
  "maturity": "preview",
6004
- "introducedVersion": "4.0.2-alpha.44",
6004
+ "introducedVersion": "4.0.2-alpha.46",
6005
6005
  "compatibilityPromise": "preserved-through-the-v3-major-line",
6006
6006
  "deprecationReplacement": "",
6007
6007
  "sunsetCondition": "explicit-breaking-change-review-in-a-future-major-line",
@@ -6032,7 +6032,7 @@
6032
6032
  "status": "preview",
6033
6033
  "owner": "buildchain-workflows",
6034
6034
  "maturity": "preview",
6035
- "introducedVersion": "4.0.2-alpha.44",
6035
+ "introducedVersion": "4.0.2-alpha.46",
6036
6036
  "compatibilityPromise": "preserved-through-the-v3-major-line",
6037
6037
  "deprecationReplacement": "",
6038
6038
  "sunsetCondition": "explicit-breaking-change-review-in-a-future-major-line",
package/docs/MAP.md CHANGED
@@ -38,6 +38,7 @@ running artifact), *use* (consume / extend) - and a **status**:
38
38
  | CLI operator or agent | [Generated CLI Reference](cli-reference.md) | [CLI guide](cli.md) for concepts and worked examples |
39
39
  | Node toolkit developer | [Generated Node API Reference](node-api-reference.md) | [Core package guide](../packages/core/README.md) for recipes |
40
40
  | Workflow contributor | [Workflow Catalog](workflow-catalog.md) | [Contribution rules](../CONTRIBUTING.md#workflow-organization) and the [exact registry](../architecture/workflow-taxonomy.json) |
41
+ | Container image publisher | [OCI image family publication](oci-publication.md) | [Release Flow](release-flow.md) and [Runtime Train Validation](runtime-train-validation.md) |
41
42
  | Build/release operator | [Reusable Build Surface](reusable-build-surface.md) | [Release Flow](release-flow.md) and [Release Passport](release-passport.md) |
42
43
  | Product/trust reviewer | [Product Mechanism](product-mechanism.md) | [Release Passport](release-passport.md) and [KFD Support](kfd-support.md) |
43
44
 
@@ -233,7 +233,7 @@ Target: `./packages/core/index.js`. Public symbols: 636.
233
233
  | `createPublicationControlPlaneAudit` | function: function createPublicationControlPlaneAudit({ repository, workflowPath, publisherWorkflowPath, environment, facts = [], observedAt, expiresAt, } = {}) | { repository, workflowPath, publisherWorkflowPath, environment, facts = [], observedAt, expiresAt, } = {} | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { createPublicationControlPlaneAudit } from "@kungfu-tech/buildchain";` | `packages/core/publication-authority.js:208` |
234
234
  | `createPublicationGateDecision` | function: function createPublicationGateDecision({ sourceSha, profile, required = false, rationale, policy = {}, } = {}) | { sourceSha, profile, required = false, rationale, policy = {}, } = {} | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { createPublicationGateDecision } from "@kungfu-tech/buildchain";` | `packages/core/publication-authority.js:280` |
235
235
  | `createPublicationQualificationReceipt` | function: function createPublicationQualificationReceipt({ capability, gateAggregate, consumerDecision, now = new Date(), } = {}) | { capability, gateAggregate, consumerDecision, now = new Date(), } = {} | unknown | May throw an Error on rejected input or failed operations; follow the linked source contract. | none-detected-by-static-source-scan | `import { createPublicationQualificationReceipt } from "@kungfu-tech/buildchain";` | `packages/core/publication-authority.js:1035` |
236
- | `createPublicationSealedBundle` | function: function createPublicationSealedBundle({ candidate, packageName, packageVersion, npmTarballPath, npmIntegrity, releaseAssetPaths = [], githubReleaseRequired = true, } = {}) | { candidate, packageName, packageVersion, npmTarballPath, npmIntegrity, releaseAssetPaths = [], githubReleaseRequired = true, } = {} | unknown | May throw an Error on rejected input or failed operations; follow the linked source contract. | none-detected-by-static-source-scan | `import { createPublicationSealedBundle } from "@kungfu-tech/buildchain";` | `packages/core/publication-sealed-bundle.js:84` |
236
+ | `createPublicationSealedBundle` | function: function createPublicationSealedBundle({ candidate, packageName, packageVersion, npmTarballPath, npmIntegrity, releaseAssetPaths = [], githubReleaseRequired = true, } = {}) | { candidate, packageName, packageVersion, npmTarballPath, npmIntegrity, releaseAssetPaths = [], githubReleaseRequired = true, } = {} | unknown | May throw an Error on rejected input or failed operations; follow the linked source contract. | subprocess | `import { createPublicationSealedBundle } from "@kungfu-tech/buildchain";` | `packages/core/publication-sealed-bundle.js:97` |
237
237
  | `createPublicationSourceBundle` | function: function createPublicationSourceBundle({ cwd = process.cwd(), sourcePaths = [], output = ".buildchain/publication/source.tar.gz", } = {}) | { cwd = process.cwd(), sourcePaths = [], output = ".buildchain/publication/source.tar.gz", } = {} | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | local-filesystem-write, subprocess | `import { createPublicationSourceBundle } from "@kungfu-tech/buildchain";` | `packages/core/publication-artifact.js:249` |
238
238
  | `createReadmeBadgeEndpointRegistry` | function: function createReadmeBadgeEndpointRegistry({ kfdSpecs = undefined, kfdStandards = undefined } = {}) | { kfdSpecs = undefined, kfdStandards = undefined } = {} | unknown | May throw an Error on rejected input or failed operations; follow the linked source contract. | subprocess | `import { createReadmeBadgeEndpointRegistry } from "@kungfu-tech/buildchain";` | `packages/core/readme-badges.js:133` |
239
239
  | `createReleaseActivationReceiptSet` | function: function createReleaseActivationReceiptSet({ transaction, receipts = [], } = {}) | { transaction, receipts = [], } = {} | unknown | May throw an Error on rejected input or failed operations; follow the linked source contract. | none-detected-by-static-source-scan | `import { createReleaseActivationReceiptSet } from "@kungfu-tech/buildchain";` | `packages/core/release-activation-transaction.js:311` |
@@ -456,7 +456,7 @@ Target: `./packages/core/index.js`. Public symbols: 636.
456
456
  | `PUBLICATION_NPM_PACKAGE_CONTRACT` | constant: const PUBLICATION_NPM_PACKAGE_CONTRACT | none | value | Import does not declare a throw contract. | none-on-import | `import { PUBLICATION_NPM_PACKAGE_CONTRACT } from "@kungfu-tech/buildchain";` | `packages/core/publication-package.js:6` |
457
457
  | `PUBLICATION_QUALIFICATION_RECEIPT_CONTRACT` | constant: const PUBLICATION_QUALIFICATION_RECEIPT_CONTRACT | none | value | Import does not declare a throw contract. | none-on-import | `import { PUBLICATION_QUALIFICATION_RECEIPT_CONTRACT } from "@kungfu-tech/buildchain";` | `packages/core/publication-authority.js:22` |
458
458
  | `PUBLICATION_REPRODUCIBILITY_RECEIPT_CONTRACT` | constant: const PUBLICATION_REPRODUCIBILITY_RECEIPT_CONTRACT | none | value | Import does not declare a throw contract. | none-on-import | `import { PUBLICATION_REPRODUCIBILITY_RECEIPT_CONTRACT } from "@kungfu-tech/buildchain";` | `packages/core/publication-reproducibility.js:12` |
459
- | `PUBLICATION_SEALED_BUNDLE_CONTRACT` | constant: const PUBLICATION_SEALED_BUNDLE_CONTRACT | none | value | Import does not declare a throw contract. | none-on-import | `import { PUBLICATION_SEALED_BUNDLE_CONTRACT } from "@kungfu-tech/buildchain";` | `packages/core/publication-sealed-bundle.js:10` |
459
+ | `PUBLICATION_SEALED_BUNDLE_CONTRACT` | constant: const PUBLICATION_SEALED_BUNDLE_CONTRACT | none | value | Import does not declare a throw contract. | none-on-import | `import { PUBLICATION_SEALED_BUNDLE_CONTRACT } from "@kungfu-tech/buildchain";` | `packages/core/publication-sealed-bundle.js:11` |
460
460
  | `publicationArtifactCandidateDigest` | function: function publicationArtifactCandidateDigest(value) | value | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { publicationArtifactCandidateDigest } from "@kungfu-tech/buildchain";` | `packages/core/publication-artifact-candidate.js:19` |
461
461
  | `publicationAuthorityDigest` | function: function publicationAuthorityDigest(value) | value | unknown | May throw an Error on rejected input or failed operations; follow the linked source contract. | none-detected-by-static-source-scan | `import { publicationAuthorityDigest } from "@kungfu-tech/buildchain";` | `packages/core/publication-authority.js:72` |
462
462
  | `publicationGateAggregateBindings` | function: function publicationGateAggregateBindings(gateAggregate) | gateAggregate | unknown | May throw an Error on rejected input or failed operations; follow the linked source contract. | none-detected-by-static-source-scan | `import { publicationGateAggregateBindings } from "@kungfu-tech/buildchain";` | `packages/core/publication-authority.js:408` |
@@ -639,7 +639,7 @@ Target: `./packages/core/index.js`. Public symbols: 636.
639
639
  | `verifyPublicationAdmission` | function: function verifyPublicationAdmission({ admission, registry, runnerProvenance, controlPlaneAudit, publicationEvidence, expected = {}, usedNonces = [], now = new Date(), } = {}) | { admission, registry, runnerProvenance, controlPlaneAudit, publicationEvidence, expected = {}, usedNonces = [], now = new Date(), } = {} | unknown | May throw an Error on rejected input or failed operations; follow the linked source contract. | none-detected-by-static-source-scan | `import { verifyPublicationAdmission } from "@kungfu-tech/buildchain";` | `packages/core/publication-authority.js:791` |
640
640
  | `verifyPublicationQualificationReceipt` | function: function verifyPublicationQualificationReceipt({ receipt, capability, gateAggregate, expected = {}, usedNonces = [], now = new Date(), } = {}) | { receipt, capability, gateAggregate, expected = {}, usedNonces = [], now = new Date(), } = {} | unknown | May throw an Error on rejected input or failed operations; follow the linked source contract. | none-detected-by-static-source-scan | `import { verifyPublicationQualificationReceipt } from "@kungfu-tech/buildchain";` | `packages/core/publication-authority.js:1096` |
641
641
  | `verifyPublicationReproducibility` | function: function verifyPublicationReproducibility({ cwd = process.cwd(), sourceSha = "", output = DEFAULT_OUTPUT, promote = false, keepWorkspaces = false, pullToolchain = true, packageName = "", allowUnpinnedToolchain = false, overlayPaths = [DEFAULT_REGISTRY_INPUT_DIR, DEFAULT_REGISTRY_HYDRATION], } = {}) | { cwd = process.cwd(), sourceSha = "", output = DEFAULT_OUTPUT, promote = false, keepWorkspaces = false, pullToolchain = true, packageName = "", allowUnpinnedToolchain = false, overlayPaths = [DEFAULT_REGISTRY_INPUT_DIR, DEFAULT_REGISTRY_HYDRATION], } = {} | unknown | May throw an Error on rejected input or failed operations; follow the linked source contract. | local-filesystem-write | `import { verifyPublicationReproducibility } from "@kungfu-tech/buildchain";` | `packages/core/publication-reproducibility.js:869` |
642
- | `verifyPublicationSealedBundle` | function: function verifyPublicationSealedBundle({ bundleRoot, manifest } = {}) | { bundleRoot, manifest } = {} | unknown | May throw an Error on rejected input or failed operations; follow the linked source contract. | none-detected-by-static-source-scan | `import { verifyPublicationSealedBundle } from "@kungfu-tech/buildchain";` | `packages/core/publication-sealed-bundle.js:133` |
642
+ | `verifyPublicationSealedBundle` | function: function verifyPublicationSealedBundle({ bundleRoot, manifest } = {}) | { bundleRoot, manifest } = {} | unknown | May throw an Error on rejected input or failed operations; follow the linked source contract. | none-detected-by-static-source-scan | `import { verifyPublicationSealedBundle } from "@kungfu-tech/buildchain";` | `packages/core/publication-sealed-bundle.js:189` |
643
643
  | `verifyReleaseCandidateRecovery` | function: function verifyReleaseCandidateRecovery({ candidateRepository, targetRepository, expectedRunId, expectedWorkflowFile, expectedWorkflowName, channel, targetRef, targetSha, targetRefSha = targetSha, targetTree, expectedSourceTree = "", expectedCandidateRoot = "", expectedRuntimeSha, expectedTransactionId = "", existingTransaction = undefined, run, workflow, pullRequest, ancestry, anchorProvenance = undefined, passport, buildSummary, controllerReceipts = [], platformManifests = [], platformManifestEvidence = [], productPayloadManifests = [], artifacts = [], publicationVersion = "", currentToolingSha, recoveryRunId = "", createdAt = new Date().toISOString(), } = {}) | { candidateRepository, targetRepository, expectedRunId, expectedWorkflowFile, expectedWorkflowName, channel, targetRef, targetSha, targetRefSha = targetSha, targetTree, expectedSourceTree = "", expectedCandidateRoot = "", expectedRuntimeSha, expectedTransactionId = "", existingTransaction = undefined, run, workflow, pullRequest, ancestry, anchorProvenance = undefined, passport, buildSummary, controllerReceipts = [], platformManifests = [], platformManifestEvidence = [], productPayloadManifests = [], artifacts = [], publicationVersion = "", currentToolingSha, recoveryRunId = "", createdAt = new Date().toISOString(), } = {} | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { verifyReleaseCandidateRecovery } from "@kungfu-tech/buildchain";` | `packages/core/release-candidate-recovery.js:444` |
644
644
  | `verifyReleasePassport` | function: async function verifyReleasePassport({ passportLocation, artifactEvidenceLocation = "", publishEvidenceLocation = "", impactLocation = "", agentIndexLocation = "", productMechanismLocation = "", kfdAgentHubEvidenceLocation = "", kfdAdopterManifestLocation = "", kfdAdopterManifestGateLocation = "", kfdSupportEvidenceLocation = "", checkedAt = nowIso(), } = {}) | { passportLocation, artifactEvidenceLocation = "", publishEvidenceLocation = "", impactLocation = "", agentIndexLocation = "", productMechanismLocation = "", kfdAgentHubEvidenceLocation = "", kfdAdopterManifestLocation = "", kfdAdopterManifestGateLocation = "", kfdSupportEvidenceLocation = "", checkedAt = nowIso(), } = {} | Promise<unknown> | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { verifyReleasePassport } from "@kungfu-tech/buildchain";` | `packages/core/release-passport.js:2729` |
645
645
  | `verifyReleasePropagationWork` | function: function verifyReleasePropagationWork(input) | input | unknown | May throw an Error on rejected input or failed operations; follow the linked source contract. | none-detected-by-static-source-scan | `import { verifyReleasePropagationWork } from "@kungfu-tech/buildchain";` | `packages/core/release-propagation-work.js:486` |
@@ -922,7 +922,7 @@ Target: `./packages/core/index.js`. Public symbols: 636.
922
922
  | `createPublicationControlPlaneAudit` | function: function createPublicationControlPlaneAudit({ repository, workflowPath, publisherWorkflowPath, environment, facts = [], observedAt, expiresAt, } = {}) | { repository, workflowPath, publisherWorkflowPath, environment, facts = [], observedAt, expiresAt, } = {} | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { createPublicationControlPlaneAudit } from "@kungfu-tech/buildchain/core";` | `packages/core/publication-authority.js:208` |
923
923
  | `createPublicationGateDecision` | function: function createPublicationGateDecision({ sourceSha, profile, required = false, rationale, policy = {}, } = {}) | { sourceSha, profile, required = false, rationale, policy = {}, } = {} | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { createPublicationGateDecision } from "@kungfu-tech/buildchain/core";` | `packages/core/publication-authority.js:280` |
924
924
  | `createPublicationQualificationReceipt` | function: function createPublicationQualificationReceipt({ capability, gateAggregate, consumerDecision, now = new Date(), } = {}) | { capability, gateAggregate, consumerDecision, now = new Date(), } = {} | unknown | May throw an Error on rejected input or failed operations; follow the linked source contract. | none-detected-by-static-source-scan | `import { createPublicationQualificationReceipt } from "@kungfu-tech/buildchain/core";` | `packages/core/publication-authority.js:1035` |
925
- | `createPublicationSealedBundle` | function: function createPublicationSealedBundle({ candidate, packageName, packageVersion, npmTarballPath, npmIntegrity, releaseAssetPaths = [], githubReleaseRequired = true, } = {}) | { candidate, packageName, packageVersion, npmTarballPath, npmIntegrity, releaseAssetPaths = [], githubReleaseRequired = true, } = {} | unknown | May throw an Error on rejected input or failed operations; follow the linked source contract. | none-detected-by-static-source-scan | `import { createPublicationSealedBundle } from "@kungfu-tech/buildchain/core";` | `packages/core/publication-sealed-bundle.js:84` |
925
+ | `createPublicationSealedBundle` | function: function createPublicationSealedBundle({ candidate, packageName, packageVersion, npmTarballPath, npmIntegrity, releaseAssetPaths = [], githubReleaseRequired = true, } = {}) | { candidate, packageName, packageVersion, npmTarballPath, npmIntegrity, releaseAssetPaths = [], githubReleaseRequired = true, } = {} | unknown | May throw an Error on rejected input or failed operations; follow the linked source contract. | subprocess | `import { createPublicationSealedBundle } from "@kungfu-tech/buildchain/core";` | `packages/core/publication-sealed-bundle.js:97` |
926
926
  | `createPublicationSourceBundle` | function: function createPublicationSourceBundle({ cwd = process.cwd(), sourcePaths = [], output = ".buildchain/publication/source.tar.gz", } = {}) | { cwd = process.cwd(), sourcePaths = [], output = ".buildchain/publication/source.tar.gz", } = {} | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | local-filesystem-write, subprocess | `import { createPublicationSourceBundle } from "@kungfu-tech/buildchain/core";` | `packages/core/publication-artifact.js:249` |
927
927
  | `createReadmeBadgeEndpointRegistry` | function: function createReadmeBadgeEndpointRegistry({ kfdSpecs = undefined, kfdStandards = undefined } = {}) | { kfdSpecs = undefined, kfdStandards = undefined } = {} | unknown | May throw an Error on rejected input or failed operations; follow the linked source contract. | subprocess | `import { createReadmeBadgeEndpointRegistry } from "@kungfu-tech/buildchain/core";` | `packages/core/readme-badges.js:133` |
928
928
  | `createReleaseActivationReceiptSet` | function: function createReleaseActivationReceiptSet({ transaction, receipts = [], } = {}) | { transaction, receipts = [], } = {} | unknown | May throw an Error on rejected input or failed operations; follow the linked source contract. | none-detected-by-static-source-scan | `import { createReleaseActivationReceiptSet } from "@kungfu-tech/buildchain/core";` | `packages/core/release-activation-transaction.js:311` |
@@ -1145,7 +1145,7 @@ Target: `./packages/core/index.js`. Public symbols: 636.
1145
1145
  | `PUBLICATION_NPM_PACKAGE_CONTRACT` | constant: const PUBLICATION_NPM_PACKAGE_CONTRACT | none | value | Import does not declare a throw contract. | none-on-import | `import { PUBLICATION_NPM_PACKAGE_CONTRACT } from "@kungfu-tech/buildchain/core";` | `packages/core/publication-package.js:6` |
1146
1146
  | `PUBLICATION_QUALIFICATION_RECEIPT_CONTRACT` | constant: const PUBLICATION_QUALIFICATION_RECEIPT_CONTRACT | none | value | Import does not declare a throw contract. | none-on-import | `import { PUBLICATION_QUALIFICATION_RECEIPT_CONTRACT } from "@kungfu-tech/buildchain/core";` | `packages/core/publication-authority.js:22` |
1147
1147
  | `PUBLICATION_REPRODUCIBILITY_RECEIPT_CONTRACT` | constant: const PUBLICATION_REPRODUCIBILITY_RECEIPT_CONTRACT | none | value | Import does not declare a throw contract. | none-on-import | `import { PUBLICATION_REPRODUCIBILITY_RECEIPT_CONTRACT } from "@kungfu-tech/buildchain/core";` | `packages/core/publication-reproducibility.js:12` |
1148
- | `PUBLICATION_SEALED_BUNDLE_CONTRACT` | constant: const PUBLICATION_SEALED_BUNDLE_CONTRACT | none | value | Import does not declare a throw contract. | none-on-import | `import { PUBLICATION_SEALED_BUNDLE_CONTRACT } from "@kungfu-tech/buildchain/core";` | `packages/core/publication-sealed-bundle.js:10` |
1148
+ | `PUBLICATION_SEALED_BUNDLE_CONTRACT` | constant: const PUBLICATION_SEALED_BUNDLE_CONTRACT | none | value | Import does not declare a throw contract. | none-on-import | `import { PUBLICATION_SEALED_BUNDLE_CONTRACT } from "@kungfu-tech/buildchain/core";` | `packages/core/publication-sealed-bundle.js:11` |
1149
1149
  | `publicationArtifactCandidateDigest` | function: function publicationArtifactCandidateDigest(value) | value | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { publicationArtifactCandidateDigest } from "@kungfu-tech/buildchain/core";` | `packages/core/publication-artifact-candidate.js:19` |
1150
1150
  | `publicationAuthorityDigest` | function: function publicationAuthorityDigest(value) | value | unknown | May throw an Error on rejected input or failed operations; follow the linked source contract. | none-detected-by-static-source-scan | `import { publicationAuthorityDigest } from "@kungfu-tech/buildchain/core";` | `packages/core/publication-authority.js:72` |
1151
1151
  | `publicationGateAggregateBindings` | function: function publicationGateAggregateBindings(gateAggregate) | gateAggregate | unknown | May throw an Error on rejected input or failed operations; follow the linked source contract. | none-detected-by-static-source-scan | `import { publicationGateAggregateBindings } from "@kungfu-tech/buildchain/core";` | `packages/core/publication-authority.js:408` |
@@ -1328,7 +1328,7 @@ Target: `./packages/core/index.js`. Public symbols: 636.
1328
1328
  | `verifyPublicationAdmission` | function: function verifyPublicationAdmission({ admission, registry, runnerProvenance, controlPlaneAudit, publicationEvidence, expected = {}, usedNonces = [], now = new Date(), } = {}) | { admission, registry, runnerProvenance, controlPlaneAudit, publicationEvidence, expected = {}, usedNonces = [], now = new Date(), } = {} | unknown | May throw an Error on rejected input or failed operations; follow the linked source contract. | none-detected-by-static-source-scan | `import { verifyPublicationAdmission } from "@kungfu-tech/buildchain/core";` | `packages/core/publication-authority.js:791` |
1329
1329
  | `verifyPublicationQualificationReceipt` | function: function verifyPublicationQualificationReceipt({ receipt, capability, gateAggregate, expected = {}, usedNonces = [], now = new Date(), } = {}) | { receipt, capability, gateAggregate, expected = {}, usedNonces = [], now = new Date(), } = {} | unknown | May throw an Error on rejected input or failed operations; follow the linked source contract. | none-detected-by-static-source-scan | `import { verifyPublicationQualificationReceipt } from "@kungfu-tech/buildchain/core";` | `packages/core/publication-authority.js:1096` |
1330
1330
  | `verifyPublicationReproducibility` | function: function verifyPublicationReproducibility({ cwd = process.cwd(), sourceSha = "", output = DEFAULT_OUTPUT, promote = false, keepWorkspaces = false, pullToolchain = true, packageName = "", allowUnpinnedToolchain = false, overlayPaths = [DEFAULT_REGISTRY_INPUT_DIR, DEFAULT_REGISTRY_HYDRATION], } = {}) | { cwd = process.cwd(), sourceSha = "", output = DEFAULT_OUTPUT, promote = false, keepWorkspaces = false, pullToolchain = true, packageName = "", allowUnpinnedToolchain = false, overlayPaths = [DEFAULT_REGISTRY_INPUT_DIR, DEFAULT_REGISTRY_HYDRATION], } = {} | unknown | May throw an Error on rejected input or failed operations; follow the linked source contract. | local-filesystem-write | `import { verifyPublicationReproducibility } from "@kungfu-tech/buildchain/core";` | `packages/core/publication-reproducibility.js:869` |
1331
- | `verifyPublicationSealedBundle` | function: function verifyPublicationSealedBundle({ bundleRoot, manifest } = {}) | { bundleRoot, manifest } = {} | unknown | May throw an Error on rejected input or failed operations; follow the linked source contract. | none-detected-by-static-source-scan | `import { verifyPublicationSealedBundle } from "@kungfu-tech/buildchain/core";` | `packages/core/publication-sealed-bundle.js:133` |
1331
+ | `verifyPublicationSealedBundle` | function: function verifyPublicationSealedBundle({ bundleRoot, manifest } = {}) | { bundleRoot, manifest } = {} | unknown | May throw an Error on rejected input or failed operations; follow the linked source contract. | none-detected-by-static-source-scan | `import { verifyPublicationSealedBundle } from "@kungfu-tech/buildchain/core";` | `packages/core/publication-sealed-bundle.js:189` |
1332
1332
  | `verifyReleaseCandidateRecovery` | function: function verifyReleaseCandidateRecovery({ candidateRepository, targetRepository, expectedRunId, expectedWorkflowFile, expectedWorkflowName, channel, targetRef, targetSha, targetRefSha = targetSha, targetTree, expectedSourceTree = "", expectedCandidateRoot = "", expectedRuntimeSha, expectedTransactionId = "", existingTransaction = undefined, run, workflow, pullRequest, ancestry, anchorProvenance = undefined, passport, buildSummary, controllerReceipts = [], platformManifests = [], platformManifestEvidence = [], productPayloadManifests = [], artifacts = [], publicationVersion = "", currentToolingSha, recoveryRunId = "", createdAt = new Date().toISOString(), } = {}) | { candidateRepository, targetRepository, expectedRunId, expectedWorkflowFile, expectedWorkflowName, channel, targetRef, targetSha, targetRefSha = targetSha, targetTree, expectedSourceTree = "", expectedCandidateRoot = "", expectedRuntimeSha, expectedTransactionId = "", existingTransaction = undefined, run, workflow, pullRequest, ancestry, anchorProvenance = undefined, passport, buildSummary, controllerReceipts = [], platformManifests = [], platformManifestEvidence = [], productPayloadManifests = [], artifacts = [], publicationVersion = "", currentToolingSha, recoveryRunId = "", createdAt = new Date().toISOString(), } = {} | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { verifyReleaseCandidateRecovery } from "@kungfu-tech/buildchain/core";` | `packages/core/release-candidate-recovery.js:444` |
1333
1333
  | `verifyReleasePassport` | function: async function verifyReleasePassport({ passportLocation, artifactEvidenceLocation = "", publishEvidenceLocation = "", impactLocation = "", agentIndexLocation = "", productMechanismLocation = "", kfdAgentHubEvidenceLocation = "", kfdAdopterManifestLocation = "", kfdAdopterManifestGateLocation = "", kfdSupportEvidenceLocation = "", checkedAt = nowIso(), } = {}) | { passportLocation, artifactEvidenceLocation = "", publishEvidenceLocation = "", impactLocation = "", agentIndexLocation = "", productMechanismLocation = "", kfdAgentHubEvidenceLocation = "", kfdAdopterManifestLocation = "", kfdAdopterManifestGateLocation = "", kfdSupportEvidenceLocation = "", checkedAt = nowIso(), } = {} | Promise<unknown> | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { verifyReleasePassport } from "@kungfu-tech/buildchain/core";` | `packages/core/release-passport.js:2729` |
1334
1334
  | `verifyReleasePropagationWork` | function: function verifyReleasePropagationWork(input) | input | unknown | May throw an Error on rejected input or failed operations; follow the linked source contract. | none-detected-by-static-source-scan | `import { verifyReleasePropagationWork } from "@kungfu-tech/buildchain/core";` | `packages/core/release-propagation-work.js:486` |
@@ -2315,9 +2315,9 @@ Target: `./packages/core/publication-sealed-bundle.js`. Public symbols: 3.
2315
2315
 
2316
2316
  | Symbol | Kind and signature | Parameters | Return | Errors | Side effects | Example | Source |
2317
2317
  | --- | --- | --- | --- | --- | --- | --- | --- |
2318
- | `createPublicationSealedBundle` | function: function createPublicationSealedBundle({ candidate, packageName, packageVersion, npmTarballPath, npmIntegrity, releaseAssetPaths = [], githubReleaseRequired = true, } = {}) | { candidate, packageName, packageVersion, npmTarballPath, npmIntegrity, releaseAssetPaths = [], githubReleaseRequired = true, } = {} | unknown | May throw an Error on rejected input or failed operations; follow the linked source contract. | none-detected-by-static-source-scan | `import { createPublicationSealedBundle } from "@kungfu-tech/buildchain/publication-sealed-bundle";` | `packages/core/publication-sealed-bundle.js:84` |
2319
- | `PUBLICATION_SEALED_BUNDLE_CONTRACT` | constant: const PUBLICATION_SEALED_BUNDLE_CONTRACT | none | value | Import does not declare a throw contract. | none-on-import | `import { PUBLICATION_SEALED_BUNDLE_CONTRACT } from "@kungfu-tech/buildchain/publication-sealed-bundle";` | `packages/core/publication-sealed-bundle.js:10` |
2320
- | `verifyPublicationSealedBundle` | function: function verifyPublicationSealedBundle({ bundleRoot, manifest } = {}) | { bundleRoot, manifest } = {} | unknown | May throw an Error on rejected input or failed operations; follow the linked source contract. | none-detected-by-static-source-scan | `import { verifyPublicationSealedBundle } from "@kungfu-tech/buildchain/publication-sealed-bundle";` | `packages/core/publication-sealed-bundle.js:133` |
2318
+ | `createPublicationSealedBundle` | function: function createPublicationSealedBundle({ candidate, packageName, packageVersion, npmTarballPath, npmIntegrity, releaseAssetPaths = [], githubReleaseRequired = true, } = {}) | { candidate, packageName, packageVersion, npmTarballPath, npmIntegrity, releaseAssetPaths = [], githubReleaseRequired = true, } = {} | unknown | May throw an Error on rejected input or failed operations; follow the linked source contract. | subprocess | `import { createPublicationSealedBundle } from "@kungfu-tech/buildchain/publication-sealed-bundle";` | `packages/core/publication-sealed-bundle.js:97` |
2319
+ | `PUBLICATION_SEALED_BUNDLE_CONTRACT` | constant: const PUBLICATION_SEALED_BUNDLE_CONTRACT | none | value | Import does not declare a throw contract. | none-on-import | `import { PUBLICATION_SEALED_BUNDLE_CONTRACT } from "@kungfu-tech/buildchain/publication-sealed-bundle";` | `packages/core/publication-sealed-bundle.js:11` |
2320
+ | `verifyPublicationSealedBundle` | function: function verifyPublicationSealedBundle({ bundleRoot, manifest } = {}) | { bundleRoot, manifest } = {} | unknown | May throw an Error on rejected input or failed operations; follow the linked source contract. | none-detected-by-static-source-scan | `import { verifyPublicationSealedBundle } from "@kungfu-tech/buildchain/publication-sealed-bundle";` | `packages/core/publication-sealed-bundle.js:189` |
2321
2321
 
2322
2322
  ## `@kungfu-tech/buildchain/paper`
2323
2323
 
@@ -2569,10 +2569,10 @@ Target: `./packages/core/next-development-transition.js`. Public symbols: 13.
2569
2569
 
2570
2570
  | Symbol | Kind and signature | Parameters | Return | Errors | Side effects | Example | Source |
2571
2571
  | --- | --- | --- | --- | --- | --- | --- | --- |
2572
- | `advanceNextDevelopmentTransition` | function: function advanceNextDevelopmentTransition(record, input = {}) | record, input = {} | unknown | May throw an Error on rejected input or failed operations; follow the linked source contract. | none-detected-by-static-source-scan | `import { advanceNextDevelopmentTransition } from "@kungfu-tech/buildchain/next-development-transition";` | `packages/core/next-development-transition.js:344` |
2573
- | `bindNextDevelopmentAnchor` | function: function bindNextDevelopmentAnchor(record, input = {}) | record, input = {} | unknown | May throw an Error on rejected input or failed operations; follow the linked source contract. | none-detected-by-static-source-scan | `import { bindNextDevelopmentAnchor } from "@kungfu-tech/buildchain/next-development-transition";` | `packages/core/next-development-transition.js:305` |
2574
- | `createNextDevelopmentTransition` | function: function createNextDevelopmentTransition(input = {}) | input = {} | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { createNextDevelopmentTransition } from "@kungfu-tech/buildchain/next-development-transition";` | `packages/core/next-development-transition.js:253` |
2575
- | `materializeNextDevelopmentTransition` | function: function materializeNextDevelopmentTransition({ cwd = process.cwd(), request, write = false, } = {}) | { cwd = process.cwd(), request, write = false, } = {} | unknown | May throw an Error on rejected input or failed operations; follow the linked source contract. | local-filesystem-write | `import { materializeNextDevelopmentTransition } from "@kungfu-tech/buildchain/next-development-transition";` | `packages/core/next-development-transition.js:472` |
2572
+ | `advanceNextDevelopmentTransition` | function: function advanceNextDevelopmentTransition(record, input = {}) | record, input = {} | unknown | May throw an Error on rejected input or failed operations; follow the linked source contract. | none-detected-by-static-source-scan | `import { advanceNextDevelopmentTransition } from "@kungfu-tech/buildchain/next-development-transition";` | `packages/core/next-development-transition.js:343` |
2573
+ | `bindNextDevelopmentAnchor` | function: function bindNextDevelopmentAnchor(record, input = {}) | record, input = {} | unknown | May throw an Error on rejected input or failed operations; follow the linked source contract. | none-detected-by-static-source-scan | `import { bindNextDevelopmentAnchor } from "@kungfu-tech/buildchain/next-development-transition";` | `packages/core/next-development-transition.js:304` |
2574
+ | `createNextDevelopmentTransition` | function: function createNextDevelopmentTransition(input = {}) | input = {} | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { createNextDevelopmentTransition } from "@kungfu-tech/buildchain/next-development-transition";` | `packages/core/next-development-transition.js:252` |
2575
+ | `materializeNextDevelopmentTransition` | function: function materializeNextDevelopmentTransition({ cwd = process.cwd(), request, write = false, } = {}) | { cwd = process.cwd(), request, write = false, } = {} | unknown | May throw an Error on rejected input or failed operations; follow the linked source contract. | local-filesystem-write | `import { materializeNextDevelopmentTransition } from "@kungfu-tech/buildchain/next-development-transition";` | `packages/core/next-development-transition.js:471` |
2576
2576
  | `NEXT_DEVELOPMENT_ADR` | constant: const NEXT_DEVELOPMENT_ADR | none | value | Import does not declare a throw contract. | none-on-import | `import { NEXT_DEVELOPMENT_ADR } from "@kungfu-tech/buildchain/next-development-transition";` | `packages/core/next-development-transition.js:20` |
2577
2577
  | `NEXT_DEVELOPMENT_INVARIANT` | constant: const NEXT_DEVELOPMENT_INVARIANT | none | value | Import does not declare a throw contract. | none-on-import | `import { NEXT_DEVELOPMENT_INVARIANT } from "@kungfu-tech/buildchain/next-development-transition";` | `packages/core/next-development-transition.js:22` |
2578
2578
  | `NEXT_DEVELOPMENT_REQUEST_CONTRACT` | constant: const NEXT_DEVELOPMENT_REQUEST_CONTRACT | none | value | Import does not declare a throw contract. | none-on-import | `import { NEXT_DEVELOPMENT_REQUEST_CONTRACT } from "@kungfu-tech/buildchain/next-development-transition";` | `packages/core/next-development-transition.js:18` |
@@ -2580,8 +2580,8 @@ Target: `./packages/core/next-development-transition.js`. Public symbols: 13.
2580
2580
  | `NEXT_DEVELOPMENT_TRANSITION_CONTRACT` | constant: const NEXT_DEVELOPMENT_TRANSITION_CONTRACT | none | value | Import does not declare a throw contract. | none-on-import | `import { NEXT_DEVELOPMENT_TRANSITION_CONTRACT } from "@kungfu-tech/buildchain/next-development-transition";` | `packages/core/next-development-transition.js:16` |
2581
2581
  | `NEXT_DEVELOPMENT_VERSION_MODELS` | constant: const NEXT_DEVELOPMENT_VERSION_MODELS | none | value | Import does not declare a throw contract. | none-on-import | `import { NEXT_DEVELOPMENT_VERSION_MODELS } from "@kungfu-tech/buildchain/next-development-transition";` | `packages/core/next-development-transition.js:32` |
2582
2582
  | `nextDevelopmentRoot` | function: function nextDevelopmentRoot(value) | value | unknown | May throw an Error on rejected input or failed operations; follow the linked source contract. | none-detected-by-static-source-scan | `import { nextDevelopmentRoot } from "@kungfu-tech/buildchain/next-development-transition";` | `packages/core/next-development-transition.js:63` |
2583
- | `recordNextDevelopmentMaterialization` | function: function recordNextDevelopmentMaterialization(record, { materialization, evidenceRoot, recordedAt } = {}) | record, { materialization, evidenceRoot, recordedAt } = {} | unknown | May throw an Error on rejected input or failed operations; follow the linked source contract. | may-write-or-invoke-external-actions | `import { recordNextDevelopmentMaterialization } from "@kungfu-tech/buildchain/next-development-transition";` | `packages/core/next-development-transition.js:416` |
2584
- | `validateNextDevelopmentTransition` | function: function validateNextDevelopmentTransition(record) | record | unknown | May throw an Error on rejected input or failed operations; follow the linked source contract. | none-detected-by-static-source-scan | `import { validateNextDevelopmentTransition } from "@kungfu-tech/buildchain/next-development-transition";` | `packages/core/next-development-transition.js:729` |
2583
+ | `recordNextDevelopmentMaterialization` | function: function recordNextDevelopmentMaterialization(record, { materialization, evidenceRoot, recordedAt } = {}) | record, { materialization, evidenceRoot, recordedAt } = {} | unknown | May throw an Error on rejected input or failed operations; follow the linked source contract. | may-write-or-invoke-external-actions | `import { recordNextDevelopmentMaterialization } from "@kungfu-tech/buildchain/next-development-transition";` | `packages/core/next-development-transition.js:415` |
2584
+ | `validateNextDevelopmentTransition` | function: function validateNextDevelopmentTransition(record) | record | unknown | May throw an Error on rejected input or failed operations; follow the linked source contract. | none-detected-by-static-source-scan | `import { validateNextDevelopmentTransition } from "@kungfu-tech/buildchain/next-development-transition";` | `packages/core/next-development-transition.js:728` |
2585
2585
 
2586
2586
  ## `@kungfu-tech/buildchain/next-development-controller`
2587
2587
 
@@ -2832,3 +2832,14 @@ Target: `./packages/core/buildchain-kfd-claims.js`. Public symbols: 10.
2832
2832
  | `createBuildchainKfdClaimRegistry` | function: function createBuildchainKfdClaimRegistry({ root = process.cwd(), sourceSha = "" } = {}) | { root = process.cwd(), sourceSha = "" } = {} | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { createBuildchainKfdClaimRegistry } from "@kungfu-tech/buildchain/buildchain-kfd-claims";` | `packages/core/buildchain-kfd-claims.js:510` |
2833
2833
  | `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/buildchain-kfd-claims";` | `packages/core/buildchain-kfd-claims.js:411` |
2834
2834
  | `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/buildchain-kfd-claims";` | `packages/core/buildchain-kfd-claims.js:226` |
2835
+
2836
+ ## `@kungfu-tech/buildchain/oci-publication`
2837
+
2838
+ Target: `./packages/core/oci-publication-bundle.js`. Public symbols: 4.
2839
+
2840
+ | Symbol | Kind and signature | Parameters | Return | Errors | Side effects | Example | Source |
2841
+ | --- | --- | --- | --- | --- | --- | --- | --- |
2842
+ | `OCI_FAMILY_SCHEMA` | constant: const OCI_FAMILY_SCHEMA | none | value | Import does not declare a throw contract. | none-on-import | `import { OCI_FAMILY_SCHEMA } from "@kungfu-tech/buildchain/oci-publication";` | `packages/core/oci-publication-bundle.js:6` |
2843
+ | `ociBundleFile` | function: function ociBundleFile(root, relative) | root, relative | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { ociBundleFile } from "@kungfu-tech/buildchain/oci-publication";` | `packages/core/oci-publication-bundle.js:29` |
2844
+ | `sealOciPublicationBundle` | function: function sealOciPublicationBundle({ bundleRoot, body }) | { bundleRoot, body } | unknown | May throw an Error on rejected input or failed operations; follow the linked source contract. | none-detected-by-static-source-scan | `import { sealOciPublicationBundle } from "@kungfu-tech/buildchain/oci-publication";` | `packages/core/oci-publication-bundle.js:10` |
2845
+ | `verifyOciPublicationBundle` | function: function verifyOciPublicationBundle({ bundleRoot, manifest, repository, sourceSha, version, }) | { bundleRoot, manifest, repository, sourceSha, version, } | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { verifyOciPublicationBundle } from "@kungfu-tech/buildchain/oci-publication";` | `packages/core/oci-publication-bundle.js:114` |
@@ -0,0 +1,82 @@
1
+ ---
2
+ status: draft
3
+ period: ongoing
4
+ theme: oci-publication
5
+ doc_type: technical-reference
6
+ source_level: local-files
7
+ confidence: high
8
+ sensitivity: public
9
+ evidence_grade: B
10
+ review_state: unreviewed
11
+ last_reviewed: 2026-09-06
12
+ ai_provenance:
13
+ model_family: GPT-6
14
+ product: Codex
15
+ generated_at: 2026-09-06
16
+ invisible_context_boundary: No credentials or production registry state inspected.
17
+ ---
18
+
19
+ # OCI image family publication
20
+
21
+ Buildchain v4 can publish a sealed family of container images to GHCR through
22
+ `publish-artifact-kind: oci` on the public release candidate promotion workflow.
23
+ The candidate build produces the image bytes and smoke evidence. The built-in
24
+ provider verifies and uploads those bytes, reads back every public image digest,
25
+ then allows release references and GitHub Release evidence to converge.
26
+
27
+ ## Candidate contract
28
+
29
+ Publish exactly one `oci-family.json` alongside OCI layouts and smoke JSON files
30
+ in the Build artifact. Import `sealOciPublicationBundle` from
31
+ `@kungfu-tech/buildchain/oci-publication` to validate and seal the family. Its
32
+ `body` contains:
33
+
34
+ - `schema: kungfu-buildchain-oci-family/v1`, consumer `repository`, exact Git
35
+ `sourceSha`, and candidate package `version`.
36
+ - `expectedImages`: the complete set of image names.
37
+ - `images`: one entry for each expected image, with `name`, `repository`,
38
+ `digest`, `layout`, `platform`, `action`, `content`, and `smoke`.
39
+
40
+ Destinations must be `ghcr.io/<consumer-owner>/<consumer-repo>/<image-name>`.
41
+ `layout` is a relative OCI layout directory. Each image is a single Linux
42
+ amd64 or arm64 manifest; OCI and Docker schema 2 manifests are supported.
43
+ Layouts may share blobs and an index; each shared index entry identifies its
44
+ image with the `org.opencontainers.image.ref.name` annotation.
45
+
46
+ `content` records the image's original `sourceSha` and `version`, matching its
47
+ OCI revision/version labels. For `action: built`, both equal the candidate.
48
+ For `action: reused`, they retain the original content provenance while the
49
+ family binds the current candidate. `smoke` records a relative `path` and SHA256
50
+ `sha256`; its JSON must identify the image and record `passed: true`. The
51
+ consumer owns the actual smoke command and must fail the build if it fails.
52
+
53
+ Sealing verifies all config/layer sizes and digests, platform and provenance
54
+ labels, smoke bytes, and family completeness. Absolute paths, traversal, and
55
+ symlinks are rejected. The resolver derives the exact required image artifacts
56
+ from this sealed family, including when recovering a previous candidate run.
57
+
58
+ ## Authority and publication
59
+
60
+ The thin caller grants `packages: write` in addition to its existing promotion
61
+ permissions. Reusable promotion wrappers inherit that caller envelope; npm
62
+ consumers do not need to request package registry authority. The provider uses
63
+ the action token only for GHCR, scoped to each declared consumer image.
64
+ No consumer publish command is executed.
65
+
66
+ The rooted product plan declares version-state materialization, OCI family
67
+ publication, then release reference convergence. Each image uses the exact
68
+ `v<version>` tag. A different existing digest aborts publication; a matching
69
+ existing image is reused. After a partial failure, recovery validates the same
70
+ candidate bytes and publishes only missing images. GHCR does not provide tag
71
+ compare-and-swap: callers must serialize publishers for a version, and external
72
+ writers must not race the publication workflow.
73
+
74
+ Success requires anonymous readback of every declared image at its expected
75
+ digest. Existing GHCR packages must permit the repository token to write and
76
+ anonymous clients to pull. The provider does not change package visibility or
77
+ access policy. It attaches `oci-publication-readback.json` to the GitHub Release;
78
+ the caller should also include the family and smoke JSON files in
79
+ `github-release-payload-patterns`.
80
+
81
+ See [Runtime Train Validation](runtime-train-validation.md) for testing an
82
+ unreleased runtime without persisting a train or exact SHA in the workflow.
@@ -8,11 +8,11 @@ confidence: high
8
8
  sensitivity: public
9
9
  evidence_grade: A
10
10
  review_state: unreviewed
11
- last_reviewed: 2026-08-06
11
+ last_reviewed: 2026-09-06
12
12
  ai_provenance:
13
- model_family: GPT-5
13
+ model_family: GPT-6
14
14
  product: Codex
15
- generated_at: 2026-07-31
15
+ generated_at: 2026-09-06
16
16
  invisible_context: not asserted
17
17
  ---
18
18
 
@@ -113,6 +113,39 @@ a missing or different id fails before provider mutation. An absent transaction
113
113
  is created only when no expected existing identity was requested. See
114
114
  [Release Candidate: Resume from an existing candidate run](release-candidate.md#resume-from-an-existing-candidate-run).
115
115
 
116
+ ## V4 sealed npm package sets
117
+
118
+ The v4 alpha provider accepts a sealed set of 2–64 npm tarballs with one main
119
+ package and same-version platform packages. The candidate resolver records each
120
+ package's name, version, role, relative path, size, SHA-256, and npm integrity in
121
+ the candidate root. QUALIFY passes the set into the Rust/WASM publication
122
+ planner, which binds every package to its own operation and orders platform
123
+ packages by name before the main package. A single package retains the existing
124
+ operation identity.
125
+
126
+ Use `publish-package-main` to name the main package. The optional
127
+ `publish-package-set-order: platforms-first-main-last` input states the same
128
+ ordering. Omit legacy `publish-mode` and `publish-command` inputs: the v4 provider
129
+ publishes the sealed tarballs through npm trusted publishing. It does not run a
130
+ consumer publish command.
131
+
132
+ Before any provider effect, APPLY checks the complete package inventory,
133
+ tarball package identities, bytes, and integrity against the rooted intent.
134
+ Each package receives independent registry readback and a Release Tail receipt.
135
+ After an interrupted attempt, existing matching versions are observed without
136
+ republishing; conflicting integrity stops the transaction. Release refs follow
137
+ only after every package is confirmed.
138
+
139
+ Anchored alpha versions such as `22.22.3-kf.5-alpha.4` remain unchanged. For
140
+ `anchored/manual` repositories, successful publication leaves next development
141
+ in `waiting-anchor`; it does not invent the next upstream anchor. Multi-package
142
+ stable rematerialization is not supported by this provider and fails before
143
+ publication. The existing singleton stable flow remains available.
144
+
145
+ The contract is exercised by `v4-product-publication-topology.test.mjs`,
146
+ `v4-product-provider-adapters.test.mjs`, and
147
+ `v4-alpha-next-development-provider.test.mjs` under `tests/`.
148
+
116
149
  ## Lifecycle
117
150
 
118
151
  Repositories declare publish work in `.buildchain/buildchain.toml`:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kungfu-tech/buildchain",
3
- "version": "4.0.2-alpha.44",
3
+ "version": "4.0.2-alpha.46",
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",
@@ -123,7 +123,8 @@
123
123
  "./site/product-mechanism.json": "./dist/site/product-mechanism.json",
124
124
  "./site/release-provenance.json": "./dist/site/release-provenance.json",
125
125
  "./site/agent-index.json": "./dist/site/agent-index.json",
126
- "./package.json": "./package.json"
126
+ "./package.json": "./package.json",
127
+ "./oci-publication": "./packages/core/oci-publication-bundle.js"
127
128
  },
128
129
  "files": [
129
130
  "AGENTS.md",
@@ -159,15 +159,14 @@ function normalizeModel(value = {}) {
159
159
  return model;
160
160
  }
161
161
 
162
- function normalizeCompletedAlpha(value = {}) {
162
+ function normalizeCompletedAlpha(value = {}, model) {
163
163
  const version = String(value.version || "").trim();
164
- if (!ALPHA.test(version))
164
+ const expression = model?.strategy === "anchored" ? /-alpha\.(0|[1-9]\d*)$/u : ALPHA;
165
+ if (!SEMVER.test(version) || !expression.test(version))
165
166
  throw new Error("completedAlpha.version must be an alpha semantic version");
166
167
  const exactTag = String(value.exactTag || "").trim();
167
168
  if (exactTag !== `v${version}`)
168
- throw new Error(
169
- "completedAlpha.exactTag must match completedAlpha.version",
170
- );
169
+ throw new Error("completedAlpha.exactTag must match completedAlpha.version");
171
170
  const normalized = {
172
171
  outcome: String(value.outcome || "").trim(),
173
172
  version,
@@ -251,8 +250,8 @@ function initialStateRoot(status, idempotencyKey) {
251
250
  }
252
251
 
253
252
  export function createNextDevelopmentTransition(input = {}) {
254
- const completedAlpha = normalizeCompletedAlpha(input.completedAlpha);
255
253
  const model = normalizeModel(input.model);
254
+ const completedAlpha = normalizeCompletedAlpha(input.completedAlpha, model);
256
255
  const adapter = normalizeAdapter(input);
257
256
  const declaredPaths = [
258
257
  ...adapter.sourcePaths,