@kungfu-tech/buildchain 3.0.6-alpha.0 → 3.0.6-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/README.md +4 -4
  2. package/actions/promote-buildchain-ref/README.md +8 -0
  3. package/bin/buildchain.mjs +13 -1
  4. package/contracts/auditable-demo-scenario-v1.schema.json +52 -0
  5. package/dist/site/buildchain-contract.json +47 -27
  6. package/dist/site/buildchain-site.json +165 -44
  7. package/dist/site/capability-registry.json +3 -3
  8. package/dist/site/cli-registry.json +40 -4
  9. package/dist/site/controller-registry.json +20 -4
  10. package/dist/site/kfd-claims.json +140 -19
  11. package/dist/site/kfd-upstream-aggregate.json +9 -9
  12. package/dist/site/manual-registry.json +9 -9
  13. package/dist/site/node-api-registry.json +1161 -180
  14. package/dist/site/page-registry.json +152 -31
  15. package/dist/site/public-surface-audit.json +386 -19
  16. package/dist/site/publication-authority-registry.json +61 -1
  17. package/dist/site/publication-registry.json +4 -4
  18. package/dist/site/release-provenance.json +1 -0
  19. package/dist/site/site-manifest.json +13 -13
  20. package/dist/site/workflow-registry.json +151 -13
  21. package/docs/MAP.md +2 -0
  22. package/docs/auditable-demo.md +58 -11
  23. package/docs/aws-us-elastic-runner-burst-plane.md +114 -80
  24. package/docs/cli-reference.md +154 -0
  25. package/docs/dev-alpha-candidate-patrol.md +13 -5
  26. package/docs/dev-delivery-warrant.md +158 -0
  27. package/docs/node-api-reference.md +54 -15
  28. package/docs/publication-authority.md +11 -0
  29. package/docs/release-candidate.md +19 -2
  30. package/docs/release-governance.md +60 -1
  31. package/docs/reusable-build-surface.md +11 -1
  32. package/docs/shifu-gate-profiles.md +12 -1
  33. package/docs/versioning.md +2 -0
  34. package/package.json +4 -2
  35. package/packages/core/buildchain-publication-authority.js +3 -1
  36. package/packages/core/channel-candidate.js +2 -21
  37. package/packages/core/channel-promotion-baseline.js +199 -0
  38. package/packages/core/dev-delivery-candidate-identity.js +94 -0
  39. package/packages/core/dev-delivery-common.js +73 -0
  40. package/packages/core/dev-delivery-proof.js +252 -0
  41. package/packages/core/dev-delivery-warrant-cancellation.js +94 -0
  42. package/packages/core/dev-delivery-warrant-settlement.js +73 -0
  43. package/packages/core/dev-delivery-warrant.js +591 -0
  44. package/scripts/auditable-demo-bundle-verification.mjs +148 -0
  45. package/scripts/auditable-demo-platform.mjs +86 -50
  46. package/scripts/auditable-demo-presentation.mjs +83 -0
  47. package/scripts/auditable-demo-renditions.mjs +264 -0
  48. package/scripts/auditable-demo.mjs +24 -30
  49. package/scripts/aws-windows-jit-campaign-core.mjs +7 -8
  50. package/scripts/aws-windows-jit-controller.mjs +1 -0
  51. package/scripts/aws-windows-jit-core.mjs +1 -1
  52. package/scripts/build-contract-core.mjs +58 -3
  53. package/scripts/buildchain-cli-help.mjs +8 -0
  54. package/scripts/buildchain-patrol.mjs +9 -0
  55. package/scripts/check-inventory.mjs +1 -0
  56. package/scripts/dev-alpha-candidate-patrol.mjs +45 -48
  57. package/scripts/dev-delivery-proof.mjs +193 -0
  58. package/scripts/dev-delivery-warrant.mjs +426 -0
  59. package/scripts/dev-pr-auto-merge.mjs +497 -55
  60. package/scripts/dev-pr-delivery-warrant.mjs +209 -0
  61. package/scripts/dispatch-artifact-signing-authority.mjs +2 -4
  62. package/scripts/gate-profile-core.mjs +24 -0
  63. package/scripts/generate-site-bundle.mjs +2 -2
  64. package/scripts/git-fetch-process-tree.mjs +142 -0
  65. package/scripts/lifecycle-substage-evidence.mjs +274 -0
  66. package/scripts/locked-source-checkout.mjs +6 -3
  67. package/scripts/resolve-artifact-transfer-mode.mjs +9 -0
  68. package/scripts/resolve-build-contract.mjs +7 -0
  69. package/scripts/route-offline-runners.mjs +1 -0
  70. package/scripts/run-lifecycle-core.mjs +9 -9
  71. package/scripts/shifu-gate-profile.mjs +10 -16
  72. package/scripts/site-capability-metadata.mjs +14 -0
@@ -113,13 +113,13 @@ Target: `./packages/core/index.js`. Public symbols: 558.
113
113
  | `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` |
114
114
  | `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` |
115
115
  | `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` |
116
- | `buildchainPublicationAuthorityDescriptors` | function: function buildchainPublicationAuthorityDescriptors() | none | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { buildchainPublicationAuthorityDescriptors } from "@kungfu-tech/buildchain";` | `packages/core/buildchain-publication-authority.js:54` |
116
+ | `buildchainPublicationAuthorityDescriptors` | function: function buildchainPublicationAuthorityDescriptors() | none | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { buildchainPublicationAuthorityDescriptors } from "@kungfu-tech/buildchain";` | `packages/core/buildchain-publication-authority.js:57` |
117
117
  | `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` |
118
118
  | `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` |
119
119
  | `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` |
120
120
  | `cacheEvidenceDigest` | function: function cacheEvidenceDigest(value) | value | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { cacheEvidenceDigest } from "@kungfu-tech/buildchain";` | `packages/core/cache-evidence.js:48` |
121
- | `CHANNEL_CANDIDATE_DECISION_SCHEMA` | constant: const CHANNEL_CANDIDATE_DECISION_SCHEMA | none | value | Import does not declare a throw contract. | none-on-import | `import { CHANNEL_CANDIDATE_DECISION_SCHEMA } from "@kungfu-tech/buildchain";` | `packages/core/channel-candidate.js:5` |
122
- | `channelCandidateSourceLockRef` | function: function channelCandidateSourceLockRef(targetBranch, sourceSha) | targetBranch, sourceSha | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { channelCandidateSourceLockRef } from "@kungfu-tech/buildchain";` | `packages/core/channel-candidate.js:84` |
121
+ | `CHANNEL_CANDIDATE_DECISION_SCHEMA` | constant: const CHANNEL_CANDIDATE_DECISION_SCHEMA | none | value | Import does not declare a throw contract. | none-on-import | `import { CHANNEL_CANDIDATE_DECISION_SCHEMA } from "@kungfu-tech/buildchain";` | `packages/core/channel-candidate.js:6` |
122
+ | `channelCandidateSourceLockRef` | function: function channelCandidateSourceLockRef(targetBranch, sourceSha) | targetBranch, sourceSha | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { channelCandidateSourceLockRef } from "@kungfu-tech/buildchain";` | `packages/core/channel-candidate.js:85` |
123
123
  | `checkBadgeBundleBlock` | function: function checkBadgeBundleBlock({ readmeText, facts } = {}) | { readmeText, facts } = {} | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { checkBadgeBundleBlock } from "@kungfu-tech/buildchain";` | `packages/core/readme-badges.js:867` |
124
124
  | `checkHomebrewTap` | function: async function checkHomebrewTap({ cwd = process.cwd(), packageName = "buildchain", releasePassport = "", manifestPath = DEFAULT_MANIFEST_PATH, formulaPath = "", } = {}) | { cwd = process.cwd(), packageName = "buildchain", releasePassport = "", manifestPath = DEFAULT_MANIFEST_PATH, formulaPath = "", } = {} | Promise<unknown> | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { checkHomebrewTap } from "@kungfu-tech/buildchain";` | `packages/core/homebrew.js:335` |
125
125
  | `checkKfd2ProductClaimOutputs` | function: function checkKfd2ProductClaimOutputs(options = {}) | options = {} | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { checkKfd2ProductClaimOutputs } from "@kungfu-tech/buildchain";` | `packages/core/kfd2-product-claims.js:415` |
@@ -176,7 +176,7 @@ Target: `./packages/core/index.js`. Public symbols: 558.
176
176
  | `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` |
177
177
  | `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` |
178
178
  | `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` |
179
- | `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:79` |
179
+ | `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:81` |
180
180
  | `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` |
181
181
  | `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` |
182
182
  | `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` |
@@ -237,7 +237,7 @@ Target: `./packages/core/index.js`. Public symbols: 558.
237
237
  | `createSurfaceTimestampPolicy` | function: function createSurfaceTimestampPolicy({ generatedAt = "", publishedAt = "", sourceDateEpoch = process.env.SOURCE_DATE_EPOCH \|\| DEFAULT_SOURCE_DATE_EPOCH, sourceRevision = "", deterministicInputs = [], timestampPolicy = "", timestampFields = ["generatedAt", "publishedAt"], timestampFieldsParticipateInArtifactDigest = true, artifactDigestScope = "manifest-and-artifact", reproducible = true, } = {}) | { generatedAt = "", publishedAt = "", sourceDateEpoch = process.env.SOURCE_DATE_EPOCH \|\| DEFAULT_SOURCE_DATE_EPOCH, sourceRevision = "", deterministicInputs = [], timestampPolicy = "", timestampFields = ["generatedAt", "publishedAt"], timestampFieldsParticipateInArtifactDigest = true, artifactDigestScope = "manifest-and-artifact", reproducible = true, } = {} | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { createSurfaceTimestampPolicy } from "@kungfu-tech/buildchain";` | `packages/core/surface-manifest.js:34` |
238
238
  | `createWebSurfaceProductionDecision` | function: function createWebSurfaceProductionDecision({ approved, kind, repository, sourceSha, actor, actorPermission = "", releasePr = 0, releaseSource = "", reason, } = {}) | { approved, kind, repository, sourceSha, actor, actorPermission = "", releasePr = 0, releaseSource = "", reason, } = {} | unknown | May throw an Error on rejected input or failed operations; follow the linked source contract. | none-detected-by-static-source-scan | `import { createWebSurfaceProductionDecision } from "@kungfu-tech/buildchain";` | `packages/core/web-surface-publication-candidate.js:45` |
239
239
  | `createWebSurfacePublicationCandidate` | function: function createWebSurfacePublicationCandidate({ repository, sourceSha, sourceTreeSha, runtimeSha, plan, planFileDigest, controllerReceipt, decision, } = {}) | { repository, sourceSha, sourceTreeSha, runtimeSha, plan, planFileDigest, controllerReceipt, decision, } = {} | unknown | May throw an Error on rejected input or failed operations; follow the linked source contract. | none-detected-by-static-source-scan | `import { createWebSurfacePublicationCandidate } from "@kungfu-tech/buildchain";` | `packages/core/web-surface-publication-candidate.js:79` |
240
- | `decideChannelCandidate` | function: function decideChannelCandidate(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 { decideChannelCandidate } from "@kungfu-tech/buildchain";` | `packages/core/channel-candidate.js:90` |
240
+ | `decideChannelCandidate` | function: function decideChannelCandidate(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 { decideChannelCandidate } from "@kungfu-tech/buildchain";` | `packages/core/channel-candidate.js:91` |
241
241
  | `DEFAULT_BUILDCHAIN_ISSUE_REPOSITORY` | constant: const DEFAULT_BUILDCHAIN_ISSUE_REPOSITORY | none | value | Import does not declare a throw contract. | none-on-import | `import { DEFAULT_BUILDCHAIN_ISSUE_REPOSITORY } from "@kungfu-tech/buildchain";` | `packages/core/issue-reporting.js:6` |
242
242
  | `defaultBuildchainLogPath` | function: function defaultBuildchainLogPath({ cwd = process.cwd() } = {}) | { cwd = process.cwd() } = {} | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { defaultBuildchainLogPath } from "@kungfu-tech/buildchain";` | `packages/core/logging.js:41` |
243
243
  | `defaultPublishEvidencePath` | function: function defaultPublishEvidencePath(version, workspace = process.cwd()) | version, workspace = process.cwd() | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { defaultPublishEvidencePath } from "@kungfu-tech/buildchain";` | `packages/core/publish-transaction.js:193` |
@@ -724,13 +724,13 @@ Target: `./packages/core/index.js`. Public symbols: 558.
724
724
  | `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` |
725
725
  | `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` |
726
726
  | `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` |
727
- | `buildchainPublicationAuthorityDescriptors` | function: function buildchainPublicationAuthorityDescriptors() | none | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { buildchainPublicationAuthorityDescriptors } from "@kungfu-tech/buildchain/core";` | `packages/core/buildchain-publication-authority.js:54` |
727
+ | `buildchainPublicationAuthorityDescriptors` | function: function buildchainPublicationAuthorityDescriptors() | none | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { buildchainPublicationAuthorityDescriptors } from "@kungfu-tech/buildchain/core";` | `packages/core/buildchain-publication-authority.js:57` |
728
728
  | `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` |
729
729
  | `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` |
730
730
  | `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` |
731
731
  | `cacheEvidenceDigest` | function: function cacheEvidenceDigest(value) | value | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { cacheEvidenceDigest } from "@kungfu-tech/buildchain/core";` | `packages/core/cache-evidence.js:48` |
732
- | `CHANNEL_CANDIDATE_DECISION_SCHEMA` | constant: const CHANNEL_CANDIDATE_DECISION_SCHEMA | none | value | Import does not declare a throw contract. | none-on-import | `import { CHANNEL_CANDIDATE_DECISION_SCHEMA } from "@kungfu-tech/buildchain/core";` | `packages/core/channel-candidate.js:5` |
733
- | `channelCandidateSourceLockRef` | function: function channelCandidateSourceLockRef(targetBranch, sourceSha) | targetBranch, sourceSha | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { channelCandidateSourceLockRef } from "@kungfu-tech/buildchain/core";` | `packages/core/channel-candidate.js:84` |
732
+ | `CHANNEL_CANDIDATE_DECISION_SCHEMA` | constant: const CHANNEL_CANDIDATE_DECISION_SCHEMA | none | value | Import does not declare a throw contract. | none-on-import | `import { CHANNEL_CANDIDATE_DECISION_SCHEMA } from "@kungfu-tech/buildchain/core";` | `packages/core/channel-candidate.js:6` |
733
+ | `channelCandidateSourceLockRef` | function: function channelCandidateSourceLockRef(targetBranch, sourceSha) | targetBranch, sourceSha | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { channelCandidateSourceLockRef } from "@kungfu-tech/buildchain/core";` | `packages/core/channel-candidate.js:85` |
734
734
  | `checkBadgeBundleBlock` | function: function checkBadgeBundleBlock({ readmeText, facts } = {}) | { readmeText, facts } = {} | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { checkBadgeBundleBlock } from "@kungfu-tech/buildchain/core";` | `packages/core/readme-badges.js:867` |
735
735
  | `checkHomebrewTap` | function: async function checkHomebrewTap({ cwd = process.cwd(), packageName = "buildchain", releasePassport = "", manifestPath = DEFAULT_MANIFEST_PATH, formulaPath = "", } = {}) | { cwd = process.cwd(), packageName = "buildchain", releasePassport = "", manifestPath = DEFAULT_MANIFEST_PATH, formulaPath = "", } = {} | Promise<unknown> | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { checkHomebrewTap } from "@kungfu-tech/buildchain/core";` | `packages/core/homebrew.js:335` |
736
736
  | `checkKfd2ProductClaimOutputs` | function: function checkKfd2ProductClaimOutputs(options = {}) | options = {} | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { checkKfd2ProductClaimOutputs } from "@kungfu-tech/buildchain/core";` | `packages/core/kfd2-product-claims.js:415` |
@@ -787,7 +787,7 @@ Target: `./packages/core/index.js`. Public symbols: 558.
787
787
  | `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` |
788
788
  | `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` |
789
789
  | `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` |
790
- | `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:79` |
790
+ | `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:81` |
791
791
  | `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` |
792
792
  | `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` |
793
793
  | `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` |
@@ -848,7 +848,7 @@ Target: `./packages/core/index.js`. Public symbols: 558.
848
848
  | `createSurfaceTimestampPolicy` | function: function createSurfaceTimestampPolicy({ generatedAt = "", publishedAt = "", sourceDateEpoch = process.env.SOURCE_DATE_EPOCH \|\| DEFAULT_SOURCE_DATE_EPOCH, sourceRevision = "", deterministicInputs = [], timestampPolicy = "", timestampFields = ["generatedAt", "publishedAt"], timestampFieldsParticipateInArtifactDigest = true, artifactDigestScope = "manifest-and-artifact", reproducible = true, } = {}) | { generatedAt = "", publishedAt = "", sourceDateEpoch = process.env.SOURCE_DATE_EPOCH \|\| DEFAULT_SOURCE_DATE_EPOCH, sourceRevision = "", deterministicInputs = [], timestampPolicy = "", timestampFields = ["generatedAt", "publishedAt"], timestampFieldsParticipateInArtifactDigest = true, artifactDigestScope = "manifest-and-artifact", reproducible = true, } = {} | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { createSurfaceTimestampPolicy } from "@kungfu-tech/buildchain/core";` | `packages/core/surface-manifest.js:34` |
849
849
  | `createWebSurfaceProductionDecision` | function: function createWebSurfaceProductionDecision({ approved, kind, repository, sourceSha, actor, actorPermission = "", releasePr = 0, releaseSource = "", reason, } = {}) | { approved, kind, repository, sourceSha, actor, actorPermission = "", releasePr = 0, releaseSource = "", reason, } = {} | unknown | May throw an Error on rejected input or failed operations; follow the linked source contract. | none-detected-by-static-source-scan | `import { createWebSurfaceProductionDecision } from "@kungfu-tech/buildchain/core";` | `packages/core/web-surface-publication-candidate.js:45` |
850
850
  | `createWebSurfacePublicationCandidate` | function: function createWebSurfacePublicationCandidate({ repository, sourceSha, sourceTreeSha, runtimeSha, plan, planFileDigest, controllerReceipt, decision, } = {}) | { repository, sourceSha, sourceTreeSha, runtimeSha, plan, planFileDigest, controllerReceipt, decision, } = {} | unknown | May throw an Error on rejected input or failed operations; follow the linked source contract. | none-detected-by-static-source-scan | `import { createWebSurfacePublicationCandidate } from "@kungfu-tech/buildchain/core";` | `packages/core/web-surface-publication-candidate.js:79` |
851
- | `decideChannelCandidate` | function: function decideChannelCandidate(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 { decideChannelCandidate } from "@kungfu-tech/buildchain/core";` | `packages/core/channel-candidate.js:90` |
851
+ | `decideChannelCandidate` | function: function decideChannelCandidate(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 { decideChannelCandidate } from "@kungfu-tech/buildchain/core";` | `packages/core/channel-candidate.js:91` |
852
852
  | `DEFAULT_BUILDCHAIN_ISSUE_REPOSITORY` | constant: const DEFAULT_BUILDCHAIN_ISSUE_REPOSITORY | none | value | Import does not declare a throw contract. | none-on-import | `import { DEFAULT_BUILDCHAIN_ISSUE_REPOSITORY } from "@kungfu-tech/buildchain/core";` | `packages/core/issue-reporting.js:6` |
853
853
  | `defaultBuildchainLogPath` | function: function defaultBuildchainLogPath({ cwd = process.cwd() } = {}) | { cwd = process.cwd() } = {} | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { defaultBuildchainLogPath } from "@kungfu-tech/buildchain/core";` | `packages/core/logging.js:41` |
854
854
  | `defaultPublishEvidencePath` | function: function defaultPublishEvidencePath(version, workspace = process.cwd()) | version, workspace = process.cwd() | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { defaultPublishEvidencePath } from "@kungfu-tech/buildchain/core";` | `packages/core/publish-transaction.js:193` |
@@ -1339,9 +1339,9 @@ Target: `./packages/core/channel-candidate.js`. Public symbols: 3.
1339
1339
 
1340
1340
  | Symbol | Kind and signature | Parameters | Return | Errors | Side effects | Example | Source |
1341
1341
  | --- | --- | --- | --- | --- | --- | --- | --- |
1342
- | `CHANNEL_CANDIDATE_DECISION_SCHEMA` | constant: const CHANNEL_CANDIDATE_DECISION_SCHEMA | none | value | Import does not declare a throw contract. | none-on-import | `import { CHANNEL_CANDIDATE_DECISION_SCHEMA } from "@kungfu-tech/buildchain/channel-candidate";` | `packages/core/channel-candidate.js:5` |
1343
- | `channelCandidateSourceLockRef` | function: function channelCandidateSourceLockRef(targetBranch, sourceSha) | targetBranch, sourceSha | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { channelCandidateSourceLockRef } from "@kungfu-tech/buildchain/channel-candidate";` | `packages/core/channel-candidate.js:84` |
1344
- | `decideChannelCandidate` | function: function decideChannelCandidate(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 { decideChannelCandidate } from "@kungfu-tech/buildchain/channel-candidate";` | `packages/core/channel-candidate.js:90` |
1342
+ | `CHANNEL_CANDIDATE_DECISION_SCHEMA` | constant: const CHANNEL_CANDIDATE_DECISION_SCHEMA | none | value | Import does not declare a throw contract. | none-on-import | `import { CHANNEL_CANDIDATE_DECISION_SCHEMA } from "@kungfu-tech/buildchain/channel-candidate";` | `packages/core/channel-candidate.js:6` |
1343
+ | `channelCandidateSourceLockRef` | function: function channelCandidateSourceLockRef(targetBranch, sourceSha) | targetBranch, sourceSha | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { channelCandidateSourceLockRef } from "@kungfu-tech/buildchain/channel-candidate";` | `packages/core/channel-candidate.js:85` |
1344
+ | `decideChannelCandidate` | function: function decideChannelCandidate(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 { decideChannelCandidate } from "@kungfu-tech/buildchain/channel-candidate";` | `packages/core/channel-candidate.js:91` |
1345
1345
 
1346
1346
  ## `@kungfu-tech/buildchain/cache-evidence`
1347
1347
 
@@ -1415,6 +1415,45 @@ Target: `./packages/core/diagnostics.js`. Public symbols: 30.
1415
1415
  | `validateAnchoredPackageRelease` | function: function validateAnchoredPackageRelease({ cwd = process.cwd(), requireManifest = true, requirePackageSetOrder = "platforms-first-main-last", requireTrustedPublishing = true, requireLifecycleStages = ["install", "build", "verify", "publish"], requirePublishGateSourceLock = false, publishSource = undefined, env = process.env, } = {}) | { cwd = process.cwd(), requireManifest = true, requirePackageSetOrder = "platforms-first-main-last", requireTrustedPublishing = true, requireLifecycleStages = ["install", "build", "verify", "publish"], requirePublishGateSourceLock = false, publishSource = undefined, env = process.env, } = {} | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { validateAnchoredPackageRelease } from "@kungfu-tech/buildchain/diagnostics";` | `packages/core/diagnostics.js:325` |
1416
1416
  | `writeDiagnosticsArtifact` | function: function writeDiagnosticsArtifact(filePath, diagnostics) | filePath, diagnostics | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | local-filesystem-write | `import { writeDiagnosticsArtifact } from "@kungfu-tech/buildchain/diagnostics";` | `packages/core/diagnostics.js:1459` |
1417
1417
 
1418
+ ## `@kungfu-tech/buildchain/dev-delivery-warrant`
1419
+
1420
+ Target: `./packages/core/dev-delivery-warrant.js`. Public symbols: 32.
1421
+
1422
+ | Symbol | Kind and signature | Parameters | Return | Errors | Side effects | Example | Source |
1423
+ | --- | --- | --- | --- | --- | --- | --- | --- |
1424
+ | `cancelQueuedDevDeliveryCandidate` | function: function cancelQueuedDevDeliveryCandidate(queueInput, input, options) | queueInput, input, options | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { cancelQueuedDevDeliveryCandidate } from "@kungfu-tech/buildchain/dev-delivery-warrant";` | `packages/core/dev-delivery-warrant.js:559` |
1425
+ | `classifyDevDeliveryDelta` | function: function classifyDevDeliveryDelta({ proof, current = {} } = {}) | { proof, current = {} } = {} | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { classifyDevDeliveryDelta } from "@kungfu-tech/buildchain/dev-delivery-warrant";` | `packages/core/dev-delivery-proof.js:75` |
1426
+ | `closeDevDeliveryWarrant` | function: function closeDevDeliveryWarrant(queueInput, warrant, { outcome, evidenceRoot, reason = "", now = new Date().toISOString() } = {}) | queueInput, warrant, { outcome, evidenceRoot, reason = "", now = new Date().toISOString() } = {} | unknown | May throw an Error on rejected input or failed operations; follow the linked source contract. | none-detected-by-static-source-scan | `import { closeDevDeliveryWarrant } from "@kungfu-tech/buildchain/dev-delivery-warrant";` | `packages/core/dev-delivery-warrant.js:511` |
1427
+ | `createDevDeliveryQueue` | function: function createDevDeliveryQueue({ repository: repositoryInput, protectedBase: protectedBaseInput, policy = {}, now = new Date().toISOString() } = {}) | { repository: repositoryInput, protectedBase: protectedBaseInput, policy = {}, now = 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 { createDevDeliveryQueue } from "@kungfu-tech/buildchain/dev-delivery-warrant";` | `packages/core/dev-delivery-warrant.js:95` |
1428
+ | `createIntegrationDeliveryProof` | function: function createIntegrationDeliveryProof(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 { createIntegrationDeliveryProof } from "@kungfu-tech/buildchain/dev-delivery-warrant";` | `packages/core/dev-delivery-proof.js:207` |
1429
+ | `createProjectCutReplayPlan` | function: function createProjectCutReplayPlan(input = {}) | input = {} | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { createProjectCutReplayPlan } from "@kungfu-tech/buildchain/dev-delivery-warrant";` | `packages/core/dev-delivery-proof.js:121` |
1430
+ | `createProjectCutReplayProof` | function: function createProjectCutReplayProof(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 { createProjectCutReplayProof } from "@kungfu-tech/buildchain/dev-delivery-warrant";` | `packages/core/dev-delivery-proof.js:141` |
1431
+ | `createSourceQualificationProof` | function: function createSourceQualificationProof(input = {}) | input = {} | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { createSourceQualificationProof } from "@kungfu-tech/buildchain/dev-delivery-warrant";` | `packages/core/dev-delivery-proof.js:31` |
1432
+ | `DEV_DELIVERY_CANCELLATION_RECEIPT_SCHEMA` | value: DEV_DELIVERY_CANCELLATION_RECEIPT_SCHEMA | none | unknown | No narrower error contract was mechanically discoverable. | unknown | `import { DEV_DELIVERY_CANCELLATION_RECEIPT_SCHEMA } from "@kungfu-tech/buildchain/dev-delivery-warrant";` | `packages/core/dev-delivery-warrant.js:1` |
1433
+ | `DEV_DELIVERY_CLASSES` | constant: const DEV_DELIVERY_CLASSES | none | value | Import does not declare a throw contract. | none-on-import | `import { DEV_DELIVERY_CLASSES } from "@kungfu-tech/buildchain/dev-delivery-warrant";` | `packages/core/dev-delivery-warrant.js:20` |
1434
+ | `DEV_DELIVERY_LEASE_RECEIPT_SCHEMA` | constant: const DEV_DELIVERY_LEASE_RECEIPT_SCHEMA | none | value | Import does not declare a throw contract. | none-on-import | `import { DEV_DELIVERY_LEASE_RECEIPT_SCHEMA } from "@kungfu-tech/buildchain/dev-delivery-warrant";` | `packages/core/dev-delivery-warrant.js:12` |
1435
+ | `DEV_DELIVERY_PRIORITIES` | constant: const DEV_DELIVERY_PRIORITIES | none | value | Import does not declare a throw contract. | none-on-import | `import { DEV_DELIVERY_PRIORITIES } from "@kungfu-tech/buildchain/dev-delivery-warrant";` | `packages/core/dev-delivery-warrant.js:14` |
1436
+ | `DEV_DELIVERY_QUEUE_CONTRACT` | constant: const DEV_DELIVERY_QUEUE_CONTRACT | none | value | Import does not declare a throw contract. | none-on-import | `import { DEV_DELIVERY_QUEUE_CONTRACT } from "@kungfu-tech/buildchain/dev-delivery-warrant";` | `packages/core/dev-delivery-warrant.js:8` |
1437
+ | `DEV_DELIVERY_SELECTION_RECEIPT_SCHEMA` | constant: const DEV_DELIVERY_SELECTION_RECEIPT_SCHEMA | none | value | Import does not declare a throw contract. | none-on-import | `import { DEV_DELIVERY_SELECTION_RECEIPT_SCHEMA } from "@kungfu-tech/buildchain/dev-delivery-warrant";` | `packages/core/dev-delivery-warrant.js:11` |
1438
+ | `DEV_DELIVERY_SETTLEMENT_RECEIPT_SCHEMA` | value: DEV_DELIVERY_SETTLEMENT_RECEIPT_SCHEMA | none | unknown | No narrower error contract was mechanically discoverable. | unknown | `import { DEV_DELIVERY_SETTLEMENT_RECEIPT_SCHEMA } from "@kungfu-tech/buildchain/dev-delivery-warrant";` | `packages/core/dev-delivery-warrant.js:1` |
1439
+ | `DEV_DELIVERY_SUBMISSION_RECEIPT_SCHEMA` | constant: const DEV_DELIVERY_SUBMISSION_RECEIPT_SCHEMA | none | value | Import does not declare a throw contract. | none-on-import | `import { DEV_DELIVERY_SUBMISSION_RECEIPT_SCHEMA } from "@kungfu-tech/buildchain/dev-delivery-warrant";` | `packages/core/dev-delivery-warrant.js:10` |
1440
+ | `DEV_DELIVERY_WARRANT_SCHEMA` | constant: const DEV_DELIVERY_WARRANT_SCHEMA | none | value | Import does not declare a throw contract. | none-on-import | `import { DEV_DELIVERY_WARRANT_SCHEMA } from "@kungfu-tech/buildchain/dev-delivery-warrant";` | `packages/core/dev-delivery-warrant.js:9` |
1441
+ | `devDeliveryContentRoot` | function: function devDeliveryContentRoot(value) | value | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { devDeliveryContentRoot } from "@kungfu-tech/buildchain/dev-delivery-warrant";` | `packages/core/dev-delivery-common.js:27` |
1442
+ | `heartbeatDevDeliveryWarrant` | function: function heartbeatDevDeliveryWarrant(queueInput, warrant, { now = new Date().toISOString(), leaseSeconds } = {}) | queueInput, warrant, { now = new Date().toISOString(), leaseSeconds } = {} | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { heartbeatDevDeliveryWarrant } from "@kungfu-tech/buildchain/dev-delivery-warrant";` | `packages/core/dev-delivery-warrant.js:428` |
1443
+ | `INTEGRATION_DELIVERY_PROOF_SCHEMA` | constant: const INTEGRATION_DELIVERY_PROOF_SCHEMA | none | value | Import does not declare a throw contract. | none-on-import | `import { INTEGRATION_DELIVERY_PROOF_SCHEMA } from "@kungfu-tech/buildchain/dev-delivery-warrant";` | `packages/core/dev-delivery-proof.js:5` |
1444
+ | `normalizeDevDeliveryQueue` | function: function normalizeDevDeliveryQueue(input, expected = {}) | input, expected = {} | unknown | May throw an Error on rejected input or failed operations; follow the linked source contract. | none-detected-by-static-source-scan | `import { normalizeDevDeliveryQueue } from "@kungfu-tech/buildchain/dev-delivery-warrant";` | `packages/core/dev-delivery-warrant.js:110` |
1445
+ | `observeDevDeliveryQueue` | function: function observeDevDeliveryQueue(queueInput, { now = new Date().toISOString() } = {}) | queueInput, { now = 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 { observeDevDeliveryQueue } from "@kungfu-tech/buildchain/dev-delivery-warrant";` | `packages/core/dev-delivery-warrant.js:562` |
1446
+ | `PROJECT_CUT_REPLAY_PROOF_SCHEMA` | constant: const PROJECT_CUT_REPLAY_PROOF_SCHEMA | none | value | Import does not declare a throw contract. | none-on-import | `import { PROJECT_CUT_REPLAY_PROOF_SCHEMA } from "@kungfu-tech/buildchain/dev-delivery-warrant";` | `packages/core/dev-delivery-proof.js:4` |
1447
+ | `rankDevDeliveryCandidates` | function: function rankDevDeliveryCandidates(queueInput, { now = new Date().toISOString() } = {}) | queueInput, { now = 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 { rankDevDeliveryCandidates } from "@kungfu-tech/buildchain/dev-delivery-warrant";` | `packages/core/dev-delivery-warrant.js:269` |
1448
+ | `recoverExpiredDevDeliveryWarrant` | function: function recoverExpiredDevDeliveryWarrant(queueInput, { now = new Date().toISOString() } = {}) | queueInput, { now = 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 { recoverExpiredDevDeliveryWarrant } from "@kungfu-tech/buildchain/dev-delivery-warrant";` | `packages/core/dev-delivery-warrant.js:461` |
1449
+ | `selectDevDeliveryWarrant` | function: function selectDevDeliveryWarrant(queueInput, { now = new Date().toISOString(), leaseSeconds } = {}) | queueInput, { now = new Date().toISOString(), leaseSeconds } = {} | unknown | May throw an Error on rejected input or failed operations; follow the linked source contract. | none-detected-by-static-source-scan | `import { selectDevDeliveryWarrant } from "@kungfu-tech/buildchain/dev-delivery-warrant";` | `packages/core/dev-delivery-warrant.js:293` |
1450
+ | `settleDevDeliveryTerminalEvent` | constant: const settleDevDeliveryTerminalEvent | none | value | Import does not declare a throw contract. | none-on-import | `import { settleDevDeliveryTerminalEvent } from "@kungfu-tech/buildchain/dev-delivery-warrant";` | `packages/core/dev-delivery-warrant.js:560` |
1451
+ | `SOURCE_QUALIFICATION_PROOF_SCHEMA` | constant: const SOURCE_QUALIFICATION_PROOF_SCHEMA | none | value | Import does not declare a throw contract. | none-on-import | `import { SOURCE_QUALIFICATION_PROOF_SCHEMA } from "@kungfu-tech/buildchain/dev-delivery-warrant";` | `packages/core/dev-delivery-proof.js:3` |
1452
+ | `submitDevDeliveryCandidate` | function: function submitDevDeliveryCandidate(queueInput, input, { now = new Date().toISOString() } = {}) | queueInput, input, { now = new Date().toISOString() } = {} | unknown | May throw an Error on rejected input or failed operations; follow the linked source contract. | none-detected-by-static-source-scan | `import { submitDevDeliveryCandidate } from "@kungfu-tech/buildchain/dev-delivery-warrant";` | `packages/core/dev-delivery-warrant.js:193` |
1453
+ | `verifyIntegrationDeliveryProof` | function: function verifyIntegrationDeliveryProof(proofInput, expected = {}) | proofInput, expected = {} | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { verifyIntegrationDeliveryProof } from "@kungfu-tech/buildchain/dev-delivery-warrant";` | `packages/core/dev-delivery-proof.js:228` |
1454
+ | `verifyProjectCutReplayProof` | function: function verifyProjectCutReplayProof(proofInput, expected = {}) | proofInput, expected = {} | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { verifyProjectCutReplayProof } from "@kungfu-tech/buildchain/dev-delivery-warrant";` | `packages/core/dev-delivery-proof.js:187` |
1455
+ | `verifySourceQualificationProof` | function: function verifySourceQualificationProof(proofInput, expected = {}) | proofInput, expected = {} | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { verifySourceQualificationProof } from "@kungfu-tech/buildchain/dev-delivery-warrant";` | `packages/core/dev-delivery-proof.js:52` |
1456
+
1418
1457
  ## `@kungfu-tech/buildchain/homebrew`
1419
1458
 
1420
1459
  Target: `./packages/core/homebrew.js`. Public symbols: 7.
@@ -1787,8 +1826,8 @@ Target: `./packages/core/buildchain-publication-authority.js`. Public symbols: 2
1787
1826
 
1788
1827
  | Symbol | Kind and signature | Parameters | Return | Errors | Side effects | Example | Source |
1789
1828
  | --- | --- | --- | --- | --- | --- | --- | --- |
1790
- | `buildchainPublicationAuthorityDescriptors` | function: function buildchainPublicationAuthorityDescriptors() | none | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { buildchainPublicationAuthorityDescriptors } from "@kungfu-tech/buildchain/buildchain-publication-authority";` | `packages/core/buildchain-publication-authority.js:54` |
1791
- | `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:79` |
1829
+ | `buildchainPublicationAuthorityDescriptors` | function: function buildchainPublicationAuthorityDescriptors() | none | unknown | Errors from called operations may propagate; no narrower throw contract is declared in source. | none-detected-by-static-source-scan | `import { buildchainPublicationAuthorityDescriptors } from "@kungfu-tech/buildchain/buildchain-publication-authority";` | `packages/core/buildchain-publication-authority.js:57` |
1830
+ | `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:81` |
1792
1831
 
1793
1832
  ## `@kungfu-tech/buildchain/github-governance-authority`
1794
1833
 
@@ -167,6 +167,17 @@ release-PR or trusted-manual paths.
167
167
 
168
168
  ## Consumer qualification handoff
169
169
 
170
+ For managed release candidates, a consumer whose Gate can only be decided
171
+ after the exact candidate bytes exist may provide `publication-gate-command`.
172
+ The sealed authority downloads and recomputes the RC evidence first, checks out
173
+ the exact admitted consumer source without credentials, and runs that command
174
+ with read-only evidence paths. The command must write one complete qualifying
175
+ Shifu aggregate to `BUILDCHAIN_PUBLICATION_GATE_RESULT_PATH`. Buildchain then
176
+ checks the aggregate digest and source binding before assembling the admission;
177
+ the later consumer predicate and provider action still revalidate the same
178
+ complete aggregate. A precomputed aggregate, the command, and an explicit
179
+ no-Gate decision are mutually exclusive.
180
+
170
181
  Consumers may explicitly opt in to a final, consumer-owned qualification
171
182
  predicate. Buildchain then transports the complete Gate aggregate alongside the
172
183
  sealed capability instead of reducing it to a summary. The capability binds the
@@ -192,12 +192,29 @@ short-lived admission JSON in repository-specific workflow code:
192
192
  ```
193
193
 
194
194
  `publication-auto-no-gate` is an explicit consumer decision, not a default. A
195
- consumer with a Shifu Gate registry supplies `publication-gate-aggregate-json`
196
- instead. Buildchain still requires caller-owned RC evidence, an exact authority
195
+ consumer with a Shifu Gate registry either supplies
196
+ `publication-gate-aggregate-json`, or supplies a source-controlled
197
+ `publication-gate-command` that writes the aggregate to
198
+ `BUILDCHAIN_PUBLICATION_GATE_RESULT_PATH`. The command runs from the exact
199
+ consumer source in the credential-free sealed-authority job, after Buildchain
200
+ has downloaded the exact RC passport, summary, controller receipt, manifests,
201
+ and payload bytes. It can read those inputs through
202
+ `BUILDCHAIN_PUBLICATION_EVIDENCE_ROOT`; it receives no publication token, OIDC
203
+ permission, or provider write permission. Buildchain validates the aggregate
204
+ digest and exact source binding before it seals a capability. Exactly one of
205
+ the supplied aggregate, consumer command, or explicit no-Gate decision is
206
+ allowed. Buildchain still requires caller-owned RC evidence, an exact authority
197
207
  runtime and source SHA, a repository-local publisher workflow, matching npm
198
208
  target/package identity or exact caller-bound GitHub Release target, and a
199
209
  qualifying control-plane audit.
200
210
 
211
+ Promotion resolves the complete PR-stage workflow, not only the first required
212
+ status job that becomes green. `release-candidate-wait-seconds` bounds that
213
+ wait and defaults to three hours so long native builds can finish controller,
214
+ publication-tail, and retained-evidence jobs without racing a merged promotion.
215
+ An incomplete or failed workflow still fails closed; the longer bound does not
216
+ turn a partial required-check result into candidate evidence.
217
+
201
218
  GitHub-Release-only consumers use the same managed admission without inventing
202
219
  an npm package identity:
203
220
 
@@ -487,6 +487,15 @@ same slow checks. Buildchain supports GitHub merge queues for that channel
487
487
  shape. The queue validates the projected merged result and serializes the final
488
488
  ref update, so concurrent channel movement no longer invalidates the candidate.
489
489
 
490
+ GitHub Merge Queue does not by itself decide which candidate may spend a long
491
+ native proof before enqueue. Repositories with that workload use the
492
+ [Dev Delivery Warrant Queue](dev-delivery-warrant.md) as the durable,
493
+ FIFO-aging scheduling and fencing authority before native queue admission. A
494
+ selected Warrant owns one complete delivery attempt and later candidates remain
495
+ visibly queued; GitHub still owns the exact `merge_group` proof and final ref
496
+ mutation. Workflow concurrency remains only a process critical section and is
497
+ not fairness or ownership authority.
498
+
490
499
  Every required workflow must handle both `pull_request` and `merge_group`
491
500
  before the queue is enabled. Queue runs do not provide
492
501
  `github.event.pull_request`; required workflows must use the checked-out
@@ -545,6 +554,33 @@ inputs: target dev branch, required status/check names, ready and block labels,
545
554
  allowed work-branch prefixes, review requirements, maximum merges per run,
546
555
  merge method, and dry-run mode.
547
556
 
557
+ Agent delivery uses the targeted Buildchain command instead of relying on a
558
+ scheduled scan:
559
+
560
+ ```sh
561
+ buildchain dev pr-admit \
562
+ --repository kungfu-systems/example \
563
+ --branch dev/v3/v3.0 \
564
+ --pull-request 123 \
565
+ --expected-head 0123456789abcdef0123456789abcdef01234567
566
+ ```
567
+
568
+ The default is a mutation-free plan. After reviewing it, add `--execute` to
569
+ establish the configured readiness label for only that PR and exact head, read
570
+ the state back, and attempt native queue admission. Repeating execute is
571
+ idempotent: an exact matching queue entry is adopted, not submitted again. A
572
+ stale head or base, fork, draft, block label, missing approval, failed check,
573
+ active predecessor, or rejected enqueue exits nonzero. Execute mode also
574
+ creates or updates an exact-head PR comment and named commit status containing
575
+ the current state, reason, receipt root, and copyable next action. The JSON
576
+ receipt remains the complete content-addressed evidence.
577
+
578
+ GitHub auto-merge is observed but is never readiness or admission authority.
579
+ Approval plus green checks plus auto-merge enabled does not qualify a PR that
580
+ lacks explicit Buildchain delivery intent. The targeted workflow interface
581
+ exposes the same contract through `expected-pr-number` and
582
+ `expected-head-sha`; cadence patrol runs leave those inputs empty.
583
+
548
584
  The workflow defaults are conservative. A PR is skipped unless it targets the
549
585
  configured dev line, is not a draft, has the ready label, has no block label,
550
586
  comes from the same repository, uses an allowed work-branch prefix, has a
@@ -565,6 +601,15 @@ admission runs; GitHub still owns the atomic queue and protected-ref update.
565
601
  Repositories may explicitly select `landing-mode: direct` only when the target
566
602
  branch has no native queue. Queue presence always disables the direct path.
567
603
 
604
+ For slow candidates on a frequently advancing dev line, the optional
605
+ [Dev Delivery Warrant Queue](dev-delivery-warrant.md) adds durable FIFO plus
606
+ aging scheduling before native queue admission. It separates reusable source
607
+ qualification from exact merge-group integration, uses expected-old Git-ref
608
+ updates and fenced leases, and keeps the PR head unchanged when only dev moves.
609
+ The reusable caller supports `off`, read-only `shadow`, and fail-closed
610
+ `required` rollout modes. GitHub Merge Queue remains the final protected-ref
611
+ authority in every mode.
612
+
568
613
  The canonical consumer required check context is `check / check`, matching the
569
614
  reusable workflow call plus its `check` job. Buildchain's own `Verify` workflow
570
615
  emits the repository-local context `check`, so Buildchain self-promotion,
@@ -648,10 +693,11 @@ jobs:
648
693
  contents: write
649
694
  pull-requests: write
650
695
  checks: read
651
- statuses: read
696
+ statuses: write
652
697
  with:
653
698
  target-branch: dev/v3/v3.0
654
699
  required-status-checks: check / check
700
+ queue-admission-context: Queue admission lease
655
701
  ready-label: ready
656
702
  block-labels: blocked,do-not-merge
657
703
  max-merges: 1
@@ -659,6 +705,12 @@ jobs:
659
705
  dry-run: ${{ inputs.dry-run || false }}
660
706
  ```
661
707
 
708
+ When the protected branch requires a merge-group-only queue lease, the wrapper
709
+ posts that configured context as a temporary success status on the exact PR
710
+ head only after the ready, review, and required-check gates pass. It then
711
+ enqueues with `expectedHeadOid`; a rejected enqueue rewrites the temporary
712
+ status to failure, while the merge group must still produce its own final check.
713
+
662
714
  ## Buildchain Patrol
663
715
 
664
716
  `dev-pr-auto-merge.yml` remains the focused merge primitive. For repositories
@@ -680,6 +732,13 @@ The cadence names describe patrol intensity, not release cadence:
680
732
  - monthly patrol is for structural drift checks that should not block ordinary
681
733
  development velocity.
682
734
 
735
+ Every cadence result is typed `runKind: cadence-patrol` with
736
+ `qualification: false`. A run with no open candidates reports
737
+ `no-op-no-candidates`; a run where every candidate is skipped reports
738
+ `no-op-all-skipped`. Either no-op can keep maintenance green, but neither is a
739
+ delivery qualification, a targeted admission receipt, or evidence that an
740
+ expected PR entered the merge queue.
741
+
683
742
  Stable Candidate Patrol is separate from those maintenance cadences because its
684
743
  caller-owned cron is a release-intent window. Its candidate ledger and selection
685
744
  remain generic; registry-specific side effects still run through the normal
@@ -774,6 +774,9 @@ Direct GitHub Artifact payloads default to compression level `0`. Buildchain
774
774
  artifacts are commonly already-compressed archives; storing them without a
775
775
  second compression pass shortens the upload window while preserving the same
776
776
  artifact name, run/id/digest binding, retention, and no-overwrite behavior.
777
+ Direct build and signed-finalization payload uploads include hidden files under
778
+ the caller-declared artifact paths, matching the relay path so manifest-bound
779
+ dotfiles are not silently removed in transit.
777
780
  Callers may select `1` through `9` for payloads that materially benefit from
778
781
  compression. Manifests and diagnostics retain their existing small-artifact
779
782
  behavior.
@@ -792,7 +795,14 @@ jobs:
792
795
  artifact-relay-s3-prefix: ${{ vars.BUILDCHAIN_ARTIFACT_RELAY_S3_PREFIX }}
793
796
  ```
794
797
 
795
- In relay mode, each self-hosted platform job uploads the heavy payload files to
798
+ The mode is a policy for platforms that run outside GitHub. GitHub-hosted
799
+ platforms always upload directly with `actions/upload-artifact`, even when a
800
+ mixed matrix requests `s3-to-github-artifacts`; they never send their payloads
801
+ through S3 or the replay job. Buildchain recognizes its hosted presets and the
802
+ standard hosted runner labels. Custom matrices with non-standard hosted labels
803
+ must declare `"githubHosted": true` on those platform rows.
804
+
805
+ For remaining relay-mode platforms, each job uploads the heavy payload files to
796
806
  S3 and uploads only a small `relay-manifest.json` to GitHub. A GitHub-hosted
797
807
  `relay-artifacts` job then assumes the configured download role, downloads the
798
808
  payloads from S3, verifies every file by SHA256, and re-uploads the normal
@@ -135,7 +135,18 @@ a shell string.
135
135
 
136
136
  Projects may also pass non-sensitive scalar environment through
137
137
  `gate-environment-json`; Buildchain validates the JSON shape and forwards it
138
- without interpreting names or values. Cache profile references use the same
138
+ without interpreting names or values. A custom `platforms-json` entry may add
139
+ an `environment` object when a value is platform-specific; those scalars
140
+ override the shared environment only for that matrix job. For example, a
141
+ GitHub-hosted Linux lane can select an installed compiler without leaking the
142
+ same setting into macOS or Windows:
143
+
144
+ ```yaml
145
+ platforms-json: >-
146
+ [{"id":"linux-x64","name":"Linux x64","platform":"linux","runner":"[\"ubuntu-24.04\"]","capabilities":["node","native-toolchain"],"environment":{"CC":"gcc-14","CXX":"g++-14"}}]
147
+ ```
148
+
149
+ Cache profile references use the same
139
150
  opaque `shifu-cache-profile-ref` and `shifu-cache-profile-digest` inputs as the
140
151
  reusable build. Do not place tokens, credentials, or other secrets in workflow
141
152
  inputs or Gate receipts.
@@ -79,6 +79,8 @@ repository changes are patch".
79
79
 
80
80
  | Date | Action | Line | Faces | Class | Rationale | PR |
81
81
  | ---------- | ------------ | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----- |
82
+ | 2026-08-05 | extend-minor | `v3.0` | auditable-demo-scenario, auditable-demo-capture, auditable-demo-adapter | additive | Add an opt-in deterministic readable-playback declaration that preserves captured terminal payloads and order while normalizing only presentation timing; omitted playback continues to use observed PTY timestamps, and existing composition modes remain unchanged. | |
83
+ | 2026-08-04 | extend-minor | `v3.0` | dev-delivery-warrant-queue, source-qualification-proof, integration-delivery-proof, dev-delivery-cli, reusable-dev-delivery-workflows | additive | Add durable fair and fenced protected-dev scheduling plus split source/integration proof contracts. Existing PR admission remains available through explicit `off` and `shadow` rollout modes; no existing command, export, or release flow is removed. | |
82
84
  | 2026-08-01 | extend-minor | `v3.0` | cli-reference-registry, node-api-symbol-registry, golden-path-manual | additive | Add generated, drift-checked CLI and Node API reference registries to the public site bundle, plus a package-tested first-user Golden Path; existing command execution and import semantics remain unchanged. | |
83
85
  | 2026-07-31 | extend-minor | `v3.0` | auditable-demo-workflow, auditable-demo-media-profile, auditable-demo-media-receipt | additive | Add an opt-in responsive profile that binds source-resolution and exact 1280x720 MP4/WebM/GIF renditions to one Gate and receipt while rejecting upscales, aspect-ratio drift, and profile changes between Gate-only and full-render paths. | |
84
86
  | 2026-07-31 | extend-minor | `v3.0` | release-candidate-family-evidence, release-passport-evidence-attachment, promotion-action, release-passport-cli | additive | Restore all-ref v2 parity for optional Initiative-family candidate binding and typed product-owned release evidence attachments while retaining Kungfu native Family State authority and the newer v3 post-activation released-evidence stage. | #2089 |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kungfu-tech/buildchain",
3
- "version": "3.0.6-alpha.0",
3
+ "version": "3.0.6-alpha.2",
4
4
  "private": false,
5
5
  "description": "Buildchain Release Passport, release governance, CLI toolkit, and site facts.",
6
6
  "repository": "https://github.com/kungfu-systems/buildchain",
@@ -28,6 +28,7 @@
28
28
  "./cache-evidence": "./packages/core/cache-evidence.js",
29
29
  "./controller-evidence": "./packages/core/controller-evidence.js",
30
30
  "./diagnostics": "./packages/core/diagnostics.js",
31
+ "./dev-delivery-warrant": "./packages/core/dev-delivery-warrant.js",
31
32
  "./homebrew": "./packages/core/homebrew.js",
32
33
  "./issue-reporting": "./packages/core/issue-reporting.js",
33
34
  "./kfd": "./packages/core/kfd.js",
@@ -108,6 +109,7 @@
108
109
  },
109
110
  "packageManager": "pnpm@11.7.0",
110
111
  "scripts": {
112
+ "operator:windows-jit": "bash scripts/aws-windows-jit-operator.sh",
111
113
  "check": "pnpm run check:static && node scripts/check-maintainability.mjs && node scripts/check-internal-architecture.mjs && node scripts/check-inventory.mjs && pnpm run check:site && pnpm run check:workflows && pnpm run test:unit && pnpm run check:golden-path && node scripts/check-action-bundles.mjs",
112
114
  "check:static": "node scripts/check-javascript-syntax.mjs && prettier --check architecture/*.json bin/internal/command-registry.mjs scripts/authorize-promotion-runtime-override.cjs scripts/check-javascript-syntax.mjs scripts/check-maintainability.mjs scripts/maintainability-metrics.mjs scripts/public-reference.mjs scripts/site-reference-registry.mjs scripts/generate-public-reference.mjs scripts/verify-golden-path.mjs tests/authorize-promotion-runtime-override.test.mjs tests/command-registry.test.mjs tests/maintainability.test.mjs tests/promotion-responsibilities.test.mjs tests/public-reference.test.mjs",
113
115
  "check:workflows": "bash scripts/check-workflows.sh",
@@ -128,7 +130,7 @@
128
130
  "typescript": "^5.9.0"
129
131
  },
130
132
  "dependencies": {
131
- "@kungfu-tech/kfd": "1.0.0-alpha.47",
133
+ "@kungfu-tech/kfd": "1.0.0-alpha.53",
132
134
  "smol-toml": "1.7.0"
133
135
  }
134
136
  }
@@ -24,6 +24,7 @@ const DESCRIPTORS = Object.freeze([
24
24
  [".github/workflows/build-surface-fixture.yml", "non-publication-oidc"],
25
25
  [".github/workflows/build.yml", "non-publication-oidc"],
26
26
  [".github/workflows/buildchain-alpha-self-dogfood.yml", "non-publication-oidc"],
27
+ [".github/workflows/buildchain-dev-delivery.yml", "governance-write"],
27
28
  [".github/workflows/buildchain-patrol-daily.yml", "governance-write"],
28
29
  [".github/workflows/buildchain-patrol-monthly.yml", "governance-write"],
29
30
  [".github/workflows/buildchain-patrol-weekly.yml", "governance-write"],
@@ -32,6 +33,8 @@ const DESCRIPTORS = Object.freeze([
32
33
  [".github/workflows/buildchain-stable-candidate-patrol.yml", "governance-write"],
33
34
  [".github/workflows/dev-qualification-patrol.yml", "governance-write"],
34
35
  [".github/workflows/dev-alpha-candidate-patrol.yml", "governance-write"],
36
+ [".github/workflows/dev-delivery-warrant-close.yml", "governance-write"],
37
+ [".github/workflows/dev-delivery-warrant-cancel.yml", "governance-write"],
35
38
  [".github/workflows/dev-merge-queue-governance.yml", "governance-write"],
36
39
  [".github/workflows/dev-pr-auto-merge.yml", "governance-write"],
37
40
  [".github/workflows/github-governance-audit.yml", "governance-write"],
@@ -75,7 +78,6 @@ export function buildchainPublicationAuthorityDescriptors() {
75
78
  runnerPolicy: publicationCapable ? "qualified-measured" : "unqualified",
76
79
  }));
77
80
  }
78
-
79
81
  export function createBuildchainPublicationAuthorityRegistry({ root = process.cwd() } = {}) {
80
82
  const workflowsDir = path.join(root, ".github", "workflows");
81
83
  const workflows = fs.readdirSync(workflowsDir)
@@ -1,6 +1,7 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
 
3
3
  import crypto from "node:crypto";
4
+ import { normalizeChannelCandidateSelection } from "./channel-promotion-baseline.js";
4
5
 
5
6
  export const CHANNEL_CANDIDATE_DECISION_SCHEMA =
6
7
  "kungfu-buildchain-channel-candidate-decision/v1";
@@ -95,27 +96,7 @@ export function decideChannelCandidate(input) {
95
96
  throw new Error("sourceBranch and targetBranch must differ");
96
97
  const sourceSha = sha(input.sourceSha, "sourceSha");
97
98
  const targetSha = sha(input.targetSha, "targetSha");
98
- const selection = input.selection
99
- ? {
100
- mode: required(input.selection.mode, "selection.mode"),
101
- observedSourceHeadSha: sha(
102
- input.selection.observedSourceHeadSha,
103
- "selection.observedSourceHeadSha",
104
- ),
105
- skippedNewerCommitCount: Number(
106
- input.selection.skippedNewerCommitCount || 0,
107
- ),
108
- }
109
- : undefined;
110
- if (
111
- selection &&
112
- (!Number.isSafeInteger(selection.skippedNewerCommitCount) ||
113
- selection.skippedNewerCommitCount < 0)
114
- ) {
115
- throw new Error(
116
- "selection.skippedNewerCommitCount must be a non-negative integer",
117
- );
118
- }
99
+ const selection = normalizeChannelCandidateSelection(input.selection);
119
100
  const now = required(input.now || new Date().toISOString(), "now");
120
101
  const maxAgeSeconds = Number(input.maxAgeSeconds ?? 7 * 24 * 60 * 60);
121
102
  if (!Number.isSafeInteger(maxAgeSeconds) || maxAgeSeconds <= 0) {