@kungfu-tech/buildchain 3.0.6-alpha.1 → 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 (68) 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 +158 -42
  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 +139 -19
  11. package/dist/site/kfd-upstream-aggregate.json +1 -1
  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 +145 -29
  15. package/dist/site/public-surface-audit.json +385 -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 +150 -13
  21. package/docs/MAP.md +1 -0
  22. package/docs/auditable-demo.md +58 -11
  23. package/docs/aws-us-elastic-runner-burst-plane.md +23 -19
  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 +52 -0
  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 +2 -1
  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/build-contract-core.mjs +58 -3
  50. package/scripts/buildchain-cli-help.mjs +8 -0
  51. package/scripts/buildchain-patrol.mjs +9 -0
  52. package/scripts/check-inventory.mjs +1 -0
  53. package/scripts/dev-alpha-candidate-patrol.mjs +45 -48
  54. package/scripts/dev-delivery-proof.mjs +193 -0
  55. package/scripts/dev-delivery-warrant.mjs +426 -0
  56. package/scripts/dev-pr-auto-merge.mjs +488 -46
  57. package/scripts/dev-pr-delivery-warrant.mjs +209 -0
  58. package/scripts/gate-profile-core.mjs +24 -0
  59. package/scripts/generate-site-bundle.mjs +2 -2
  60. package/scripts/git-fetch-process-tree.mjs +142 -0
  61. package/scripts/lifecycle-substage-evidence.mjs +274 -0
  62. package/scripts/locked-source-checkout.mjs +6 -3
  63. package/scripts/resolve-artifact-transfer-mode.mjs +9 -0
  64. package/scripts/resolve-build-contract.mjs +7 -0
  65. package/scripts/route-offline-runners.mjs +1 -0
  66. package/scripts/run-lifecycle-core.mjs +9 -9
  67. package/scripts/shifu-gate-profile.mjs +10 -16
  68. package/scripts/site-capability-metadata.mjs +14 -0
@@ -223,6 +223,160 @@ buildchain dev
223
223
  buildchain dev merge-queue --repository <owner/repo> --branch <dev/vN/vN.M> [--from-config | --workflow <required-workflow.yml>...] [--cwd <dir>] [--check-response-timeout-minutes <n>] [--max-entries-to-build <n>] [--apply]
224
224
  ```
225
225
 
226
+ ### `buildchain dev pr-admit`
227
+
228
+ - Help: `buildchain dev pr-admit --help`
229
+ - Canonical id: `dev`
230
+ - Options: `--branch`, `--execute`, `--expected-head`, `--json`, `--output`, `--pull-request`, `--repository`
231
+ - Syntax:
232
+
233
+ ```text
234
+ buildchain dev pr-admit --repository <owner/repo> --branch <dev/vN/vN.M> --pull-request <n> --expected-head <sha> [--execute] [--output <file>] [--json]
235
+ ```
236
+
237
+ ### `buildchain dev proof classify`
238
+
239
+ - Help: `buildchain dev proof classify --help`
240
+ - Canonical id: `dev`
241
+ - Options: `--json`, `--output`
242
+ - Syntax:
243
+
244
+ ```text
245
+ buildchain dev proof <source|verify-source|classify|replay|integration|verify-integration> [--output <file>] [--json]
246
+ ```
247
+
248
+ ### `buildchain dev proof integration`
249
+
250
+ - Help: `buildchain dev proof integration --help`
251
+ - Canonical id: `dev`
252
+ - Options: `--json`, `--output`
253
+ - Syntax:
254
+
255
+ ```text
256
+ buildchain dev proof <source|verify-source|classify|replay|integration|verify-integration> [--output <file>] [--json]
257
+ ```
258
+
259
+ ### `buildchain dev proof replay`
260
+
261
+ - Help: `buildchain dev proof replay --help`
262
+ - Canonical id: `dev`
263
+ - Options: `--json`, `--output`
264
+ - Syntax:
265
+
266
+ ```text
267
+ buildchain dev proof <source|verify-source|classify|replay|integration|verify-integration> [--output <file>] [--json]
268
+ ```
269
+
270
+ ### `buildchain dev proof source`
271
+
272
+ - Help: `buildchain dev proof source --help`
273
+ - Canonical id: `dev`
274
+ - Options: `--json`, `--output`
275
+ - Syntax:
276
+
277
+ ```text
278
+ buildchain dev proof <source|verify-source|classify|replay|integration|verify-integration> [--output <file>] [--json]
279
+ ```
280
+
281
+ ### `buildchain dev proof verify-integration`
282
+
283
+ - Help: `buildchain dev proof verify-integration --help`
284
+ - Canonical id: `dev`
285
+ - Options: `--json`, `--output`
286
+ - Syntax:
287
+
288
+ ```text
289
+ buildchain dev proof <source|verify-source|classify|replay|integration|verify-integration> [--output <file>] [--json]
290
+ ```
291
+
292
+ ### `buildchain dev proof verify-source`
293
+
294
+ - Help: `buildchain dev proof verify-source --help`
295
+ - Canonical id: `dev`
296
+ - Options: `--json`, `--output`
297
+ - Syntax:
298
+
299
+ ```text
300
+ buildchain dev proof <source|verify-source|classify|replay|integration|verify-integration> [--output <file>] [--json]
301
+ ```
302
+
303
+ ### `buildchain dev warrant cancel-queued`
304
+
305
+ - Help: `buildchain dev warrant cancel-queued --help`
306
+ - Canonical id: `dev`
307
+ - Options: `--branch`, `--execute`, `--json`, `--output`, `--repository`
308
+ - Syntax:
309
+
310
+ ```text
311
+ buildchain dev warrant <submit|select|heartbeat|recover|close|cancel-queued|observe> --repository <owner/repo> --branch <dev/vN/vN.M> [--execute] [--output <file>] [--json]
312
+ ```
313
+
314
+ ### `buildchain dev warrant close`
315
+
316
+ - Help: `buildchain dev warrant close --help`
317
+ - Canonical id: `dev`
318
+ - Options: `--branch`, `--execute`, `--json`, `--output`, `--repository`
319
+ - Syntax:
320
+
321
+ ```text
322
+ buildchain dev warrant <submit|select|heartbeat|recover|close|cancel-queued|observe> --repository <owner/repo> --branch <dev/vN/vN.M> [--execute] [--output <file>] [--json]
323
+ ```
324
+
325
+ ### `buildchain dev warrant heartbeat`
326
+
327
+ - Help: `buildchain dev warrant heartbeat --help`
328
+ - Canonical id: `dev`
329
+ - Options: `--branch`, `--execute`, `--json`, `--output`, `--repository`
330
+ - Syntax:
331
+
332
+ ```text
333
+ buildchain dev warrant <submit|select|heartbeat|recover|close|cancel-queued|observe> --repository <owner/repo> --branch <dev/vN/vN.M> [--execute] [--output <file>] [--json]
334
+ ```
335
+
336
+ ### `buildchain dev warrant observe`
337
+
338
+ - Help: `buildchain dev warrant observe --help`
339
+ - Canonical id: `dev`
340
+ - Options: `--branch`, `--execute`, `--json`, `--output`, `--repository`
341
+ - Syntax:
342
+
343
+ ```text
344
+ buildchain dev warrant <submit|select|heartbeat|recover|close|cancel-queued|observe> --repository <owner/repo> --branch <dev/vN/vN.M> [--execute] [--output <file>] [--json]
345
+ ```
346
+
347
+ ### `buildchain dev warrant recover`
348
+
349
+ - Help: `buildchain dev warrant recover --help`
350
+ - Canonical id: `dev`
351
+ - Options: `--branch`, `--execute`, `--json`, `--output`, `--repository`
352
+ - Syntax:
353
+
354
+ ```text
355
+ buildchain dev warrant <submit|select|heartbeat|recover|close|cancel-queued|observe> --repository <owner/repo> --branch <dev/vN/vN.M> [--execute] [--output <file>] [--json]
356
+ ```
357
+
358
+ ### `buildchain dev warrant select`
359
+
360
+ - Help: `buildchain dev warrant select --help`
361
+ - Canonical id: `dev`
362
+ - Options: `--branch`, `--execute`, `--json`, `--output`, `--repository`
363
+ - Syntax:
364
+
365
+ ```text
366
+ buildchain dev warrant <submit|select|heartbeat|recover|close|cancel-queued|observe> --repository <owner/repo> --branch <dev/vN/vN.M> [--execute] [--output <file>] [--json]
367
+ ```
368
+
369
+ ### `buildchain dev warrant submit`
370
+
371
+ - Help: `buildchain dev warrant submit --help`
372
+ - Canonical id: `dev`
373
+ - Options: `--branch`, `--execute`, `--json`, `--output`, `--repository`
374
+ - Syntax:
375
+
376
+ ```text
377
+ buildchain dev warrant <submit|select|heartbeat|recover|close|cancel-queued|observe> --repository <owner/repo> --branch <dev/vN/vN.M> [--execute] [--output <file>] [--json]
378
+ ```
379
+
226
380
  ## `diagnostics`
227
381
 
228
382
  ### `buildchain diagnostics`
@@ -8,12 +8,12 @@ confidence: high
8
8
  sensitivity: public
9
9
  evidence_grade: A
10
10
  review_state: self-reviewed
11
- last_reviewed: 2026-08-03
11
+ last_reviewed: 2026-08-04
12
12
  ai_provenance:
13
13
  model_family: GPT-5
14
14
  product: Codex
15
- generated_at: 2026-07-29
16
- visible_context: Existing Buildchain source locks, Kungfu exact-source Alpha preflight, Dev Patrol, protected auto-merge policy, repository release governance, and the consumer-owned settlement renderer threat model.
15
+ generated_at: 2026-08-04
16
+ visible_context: Existing Buildchain source locks, Kungfu exact-source Alpha preflight, Dev Patrol, cancelled duplicate runs, protected auto-merge policy, repository release governance, and the consumer-owned settlement renderer threat model.
17
17
  invisible_context_boundary: No credentials, private logs, or private configuration were used.
18
18
  ---
19
19
 
@@ -27,8 +27,10 @@ bounded development history from newest to oldest (stopping early at the Alpha
27
27
  head), and selects the newest commit that satisfies all of these conditions:
28
28
 
29
29
  - the source is strictly ahead of the recorded target head;
30
- - the latest completed Dev Patrol for that exact commit SHA succeeded;
31
- - the latest completed Alpha preflight for the same commit SHA succeeded; and
30
+ - the latest completed, non-cancelled Dev Patrol for that exact commit SHA
31
+ succeeded;
32
+ - the latest completed, non-cancelled Alpha preflight for the same commit SHA
33
+ succeeded; and
32
34
  - both runs are within the caller's evidence age limit.
33
35
 
34
36
  The selected commit can be behind the observed development head when newer
@@ -37,6 +39,12 @@ head, selected SHA, and count of skipped newer commits. This makes a slow native
37
39
  verification lane live under continuous development without silently treating
38
40
  an unqualified head as releasable.
39
41
 
42
+ A cancelled workflow run carries no qualification verdict, so a newer
43
+ cancelled duplicate does not erase the prior completed verdict for the same
44
+ workflow and source SHA. Other non-success conclusions remain authoritative:
45
+ a newer failed, timed-out, skipped, or otherwise non-successful completed run
46
+ still excludes that SHA and forces the controller to fall back or fail closed.
47
+
40
48
  History discovery is bounded to the newest 1000 development commits. The
41
49
  controller then compares the selected SHA to the exact Alpha head before it can
42
50
  be eligible, so a bounded scan cannot turn a commit outside the promotion
@@ -0,0 +1,158 @@
1
+ ---
2
+ status: draft
3
+ period: ongoing
4
+ theme: dev-delivery-warrant
5
+ doc_type: technical-reference
6
+ source_level: local-files
7
+ confidence: high
8
+ sensitivity: public
9
+ evidence_grade: A
10
+ review_state: unreviewed
11
+ last_reviewed: 2026-08-05
12
+ ai_provenance:
13
+ model_family: GPT-5
14
+ product: Codex
15
+ generated_at: 2026-08-04
16
+ invisible_context: not asserted
17
+ ---
18
+
19
+ # Dev Delivery Warrant Queue
20
+
21
+ Buildchain's Dev Delivery Warrant Queue gives a qualified slow pull request a
22
+ durable, non-preemptive delivery turn without replacing GitHub Merge Queue as
23
+ the final protected-ref authority.
24
+
25
+ The queue is stored on a dedicated Git ref below
26
+ `buildchain/dev-delivery-warrant/`. Every update creates a child Git commit and
27
+ advances the ref without force. The transition receipt binds the expected old
28
+ state root; a competing controller receives a visible non-fast-forward failure
29
+ instead of a second authority claim.
30
+
31
+ ## Contract
32
+
33
+ A submission binds the repository, protected dev line, pull request, semantic
34
+ source identity, exact source head, native Assignment and Initiative roots,
35
+ source patch or tree intent, reusable Source Qualification Proof, plan,
36
+ affected closure, dependencies, toolchain, delivery class, priority, attempts,
37
+ and retained enqueue time.
38
+
39
+ Selection is deterministic FIFO plus aging with bounded priority. Priority may
40
+ reorder queued work, but it cannot preempt the active Warrant. Exactly one
41
+ candidate receives a leased Warrant containing a fencing token, lease
42
+ generation, expected-old state root, expiry, and the complete exact source
43
+ binding. Heartbeat extends only that generation. Expiry recovery rejects the
44
+ old token, retains queue age, and returns the candidate to selection.
45
+
46
+ A terminal event may cancel a candidate before selection without minting a
47
+ Warrant. This transition is limited to an exact non-active queued candidate and
48
+ binds its candidate root, pull request, recorded source head, event-observed
49
+ source head, terminal event action, evidence root, and expected-old queue root.
50
+ An active candidate still requires its current fencing token and lease
51
+ generation. Exact duplicate cancellation evidence is a visible no-op; identity,
52
+ state, event, or evidence drift fails closed.
53
+
54
+ The reusable terminal controller uses one `settle` operation for active,
55
+ queued, already-terminal, and never-admitted pull requests. An active Warrant
56
+ still requires its exact fence and evidence. A matching queued cancellation is
57
+ persisted normally. A duplicate terminal event or a pull request that never
58
+ entered Warrant authority returns a rooted explicit no-op instead of failing
59
+ the workflow or inventing queue state.
60
+
61
+ The supported priority classes are `ordinary`, `expedited`, and `emergency`.
62
+ The queue does not infer an emergency: callers must choose it explicitly under
63
+ their reviewed policy. Delivery classes are `non-native-fast`,
64
+ `native-proof-required`, `cross-platform`, and `release`.
65
+
66
+ ## Split proof authority
67
+
68
+ Source Qualification Proof is independent of the moving dev base. It binds the
69
+ semantic source, exact source head and patch/tree intent, plan, affected
70
+ closure, dependencies, toolchain, covered paths, and shard evidence.
71
+
72
+ Before reuse, the consumer classifies the dev delta:
73
+
74
+ - unchanged roots plus an unrelated attributed delta reuse source
75
+ qualification and run only a cheap Project Cut replay. GitHub's `behind`
76
+ state is accepted only when a rooted replay proof binds the exact current
77
+ protected base, unchanged PR head and source patch, replay tree, required
78
+ context roots, and a qualified `project.cut.merge-queue-admission/v1`
79
+ receipt;
80
+ - an overlapping delta reruns the affected source shards;
81
+ - an unknown graph or changed source, plan, closure, dependency, or toolchain
82
+ root fails closed to full source qualification.
83
+
84
+ Integration Delivery Proof is separate and cannot be cached across candidates.
85
+ It binds the exact current dev base, replay tree, GitHub `merge_group` head and
86
+ tree, active Warrant fencing generation, Source Qualification Proof root, and
87
+ final required-context roots. GitHub's exact merge-group checks remain the
88
+ final integration authority.
89
+
90
+ ## CLI
91
+
92
+ Queue commands are dry-run by default:
93
+
94
+ ```sh
95
+ buildchain dev warrant submit --repository owner/repository \
96
+ --branch dev/v4/v4.0 --pull-request 123 --source-head <sha> \
97
+ --assignment-root <root> --initiative-root <root> \
98
+ --source-identity-root <root> --source-patch-root <root> \
99
+ --source-proof-root <root> --plan-root <root> --closure-root <root> \
100
+ --dependency-root <root> --toolchain-root <root> \
101
+ --delivery-class native-proof-required
102
+
103
+ buildchain dev warrant select --repository owner/repository \
104
+ --branch dev/v4/v4.0 --execute
105
+
106
+ buildchain dev warrant cancel-queued --repository owner/repository \
107
+ --branch dev/v4/v4.0 --candidate-id <root> --pull-request 123 \
108
+ --expected-source-head <queued-sha> --observed-source-head <event-sha> \
109
+ --expected-old <queue-root> --event-action closed --outcome cancelled \
110
+ --evidence-root <terminal-event-root> --execute
111
+ ```
112
+
113
+ `heartbeat`, `recover`, `close`, `settle`, `cancel-queued`, and `observe` use the same durable authority.
114
+ Warrant-scoped mutations require the exact fencing token and lease generation.
115
+ `close` also requires a rooted terminal evidence object.
116
+
117
+ Proof commands create, verify, classify, and compose the two proof layers:
118
+
119
+ ```sh
120
+ buildchain dev proof source ...
121
+ buildchain dev proof classify --source-proof source-proof.json ...
122
+ buildchain dev proof replay ...
123
+ buildchain dev proof replay-proof \
124
+ --qualification-receipt project-cut-admission.json ...
125
+ buildchain dev proof integration --warrant-result warrant.json ...
126
+ ```
127
+
128
+ ## Workflow rollout and rollback
129
+
130
+ The reusable `dev-pr-auto-merge.yml` supports three explicit rollout modes:
131
+
132
+ - `off` preserves the previous exact-head admission controller;
133
+ - `shadow` qualifies the source and emits a read-only queue submission plan;
134
+ - `required` persists the submission, selects the Warrant, and refuses GitHub
135
+ enqueue unless the immutable queue commit, state root, active Warrant, and
136
+ selected candidate all pass exact readback validation.
137
+
138
+ Consumers should deploy `shadow` first, inspect receipts, then change their
139
+ protected caller to `required`. Rollback is a reviewed caller change back to
140
+ `off`; it does not delete queue history or reinterpret old receipts. The
141
+ terminal reusable workflow creates the exact Integration Delivery Proof for a
142
+ merged candidate (or accepts explicit evidence for another terminal outcome),
143
+ then closes only the current fencing generation. The separate queued
144
+ cancellation reusable workflow cannot close an active generation; it advances
145
+ the state ref only when the caller's complete terminal binding and expected-old
146
+ root still match.
147
+
148
+ Buildchain uses the same contract for its own protected dev line through
149
+ `buildchain-dev-delivery.yml`. The manual caller requires the exact PR head and
150
+ all native/source proof roots, pins the runtime to the caller commit, selects
151
+ `delivery-warrant-mode: required`, and targets GitHub Merge Queue. It does not
152
+ offer an `off` switch: rollback is a reviewed change to this caller, not an
153
+ operator-time weakening of a specific delivery attempt.
154
+
155
+ This mechanism schedules protected delivery only. It does not serialize local
156
+ development, source-only checks, unrelated channels, release publication, or
157
+ runner provisioning. It never grants authority to enable cloud runner
158
+ campaigns.
@@ -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