@kungfu-tech/buildchain 4.0.2 → 4.0.3

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 (233) hide show
  1. package/AGENTS.md +4 -4
  2. package/CONTRIBUTING.md +34 -0
  3. package/README.md +1 -1
  4. package/architecture/agent-change-map.md +154 -147
  5. package/architecture/{v4-architecture-constitution.md → architecture-constitution.md} +11 -11
  6. package/architecture/{v3-core-mechanism-inventory.md → baseline-core-mechanism-inventory.md} +1 -1
  7. package/architecture/{v4-bootstrap-authority.json → bootstrap-authority.json} +3 -3
  8. package/architecture/{v3-v4-capability-closure.md → capability-parity-closure.md} +3 -3
  9. package/architecture/{v3-v4-live-capability-inventory.json → capability-parity-live-capability-inventory.json} +4 -4
  10. package/architecture/{v4-capability-state-machine-manifest.json → capability-state-machine-manifest.json} +2 -2
  11. package/architecture/{v4-capability-state-machine-manifest.schema.json → capability-state-machine-manifest.schema.json} +2 -2
  12. package/architecture/ci-lane-change-budget.json +18 -0
  13. package/architecture/{v4-cross-platform-adopter-qualification.json → cross-platform-adopter-qualification.json} +3 -3
  14. package/architecture/{v4-delivery-authority-parity.json → delivery-authority-parity.json} +16 -16
  15. package/architecture/{v4-delivery-warrant-shadow-bootstrap-plan.json → delivery-warrant-shadow-bootstrap-plan.json} +3 -3
  16. package/architecture/{v4-delivery-warrant-shadow-bootstrap-plan.md → delivery-warrant-shadow-bootstrap-plan.md} +7 -7
  17. package/architecture/{v4-floating-consumer-policy.md → floating-consumer-policy.md} +1 -1
  18. package/architecture/implementation-naming.json +1273 -0
  19. package/architecture/internal-capabilities.json +171 -169
  20. package/architecture/maintainability-debt.json +87 -82
  21. package/architecture/maintainability-policy.json +15 -15
  22. package/architecture/{v4-next-development-parity.json → next-development-parity.json} +8 -8
  23. package/architecture/{v4-partial-mutation-recovery-qualification.json → partial-mutation-recovery-qualification.json} +8 -8
  24. package/architecture/{v4-platform-stage-checkpoints.json → platform-stage-checkpoints.json} +2 -2
  25. package/architecture/{v4-provider-operation-journal-contract.json → provider-operation-journal-contract.json} +9 -9
  26. package/architecture/{v4-publication-rehearsal-parity.json → publication-rehearsal-parity.json} +4 -4
  27. package/architecture/{v4-release-activation-shadow-domain.json → release-activation-shadow-domain.json} +8 -8
  28. package/architecture/{v4-release-topology.json → release-topology.json} +112 -56
  29. package/architecture/{v4-release-train-parity.json → release-train-parity.json} +2 -2
  30. package/architecture/{v4-runtime-ref-resume-authority.json → runtime-ref-resume-authority.json} +1 -1
  31. package/architecture/{v4-runtime-semantic-closure.json → runtime-semantic-closure.json} +2 -2
  32. package/architecture/{v4-rust-libnode-bridge-evaluation.json → rust-libnode-bridge-evaluation.json} +3 -3
  33. package/architecture/{v4-rust-libnode-bridge-spike.md → rust-libnode-bridge-spike.md} +6 -6
  34. package/architecture/{v4-rust-wasm-production-authority.json → rust-wasm-production-authority.json} +11 -11
  35. package/architecture/{v4-stable-publication-fence.json → stable-publication-fence.json} +6 -6
  36. package/architecture/{v4-stage-capsule-contract.json → stage-capsule-contract.json} +1 -1
  37. package/architecture/{v4-stage-capsule-qualification.json → stage-capsule-qualification.json} +6 -6
  38. package/architecture/{v4-stage-capsule-resume-planner.json → stage-capsule-resume-planner.json} +2 -2
  39. package/architecture/{v4-stage-capsule-store-contract.json → stage-capsule-store-contract.json} +4 -4
  40. package/architecture/{v4-tail-reseal-parity.json → tail-reseal-parity.json} +28 -28
  41. package/architecture/{v4-universal-workflow-bootstrap.json → universal-workflow-bootstrap.json} +9 -4
  42. package/architecture/{v4-universal-workflow-fault-campaign.json → universal-workflow-fault-campaign.json} +8 -8
  43. package/architecture/{v4-universal-workflow-train-admission.json → universal-workflow-train-admission.json} +8 -8
  44. package/architecture/workflow-taxonomy.json +11 -0
  45. package/bin/buildchain.mjs +3 -3
  46. package/bin/internal/adopter-delivery-cli.mjs +9 -9
  47. package/contracts/fixtures/v4-tail-reseal-v1/valid.json +1 -1
  48. package/crates/{buildchain-v4-bridge → buildchain-host-bridge}/Cargo.lock +1 -1
  49. package/crates/{buildchain-v4-bridge → buildchain-host-bridge}/Cargo.toml +1 -1
  50. package/crates/{buildchain-v4-bridge → buildchain-host-bridge}/src/main.rs +3 -3
  51. package/dist/site/buildchain-contract.json +18 -18
  52. package/dist/site/buildchain-site.json +167 -71
  53. package/dist/site/capability-registry.json +5 -5
  54. package/dist/site/kfd-claims.json +226 -90
  55. package/dist/site/kfd-upstream-aggregate.json +1 -1
  56. package/dist/site/manual-registry.json +7 -7
  57. package/dist/site/node-api-registry.json +12929 -10491
  58. package/dist/site/page-registry.json +155 -59
  59. package/dist/site/public-surface-audit.json +65 -46
  60. package/dist/site/publication-authority-registry.json +27 -17
  61. package/dist/site/publication-registry.json +4 -4
  62. package/dist/site/release-provenance.json +18 -9
  63. package/dist/site/site-manifest.json +11 -11
  64. package/dist/site/workflow-registry.json +86 -52
  65. package/docs/MAP.md +4 -3
  66. package/docs/next-development-transition.md +24 -1
  67. package/docs/node-api-reference.md +435 -175
  68. package/docs/oci-publication.md +173 -0
  69. package/docs/publish-transaction.md +36 -3
  70. package/docs/release-flow.md +1 -1
  71. package/docs/reusable-build-surface.md +1 -1
  72. package/docs/v4-adopter-delivery.md +2 -2
  73. package/docs/v4-canonical-contracts.md +7 -7
  74. package/docs/v4-delivery-warrant-read-candidate.md +3 -3
  75. package/docs/v4-delivery-warrant-semantic-diff.md +3 -3
  76. package/docs/v4-production-release.md +8 -2
  77. package/docs/v4-publication-rehearsal.md +3 -3
  78. package/docs/v4-runtime-ref-resume-authority.md +2 -2
  79. package/docs/v4-rust-wasm-production-authority.md +6 -6
  80. package/docs/v4-stage-capsule.md +7 -7
  81. package/docs/v4-tail-reseal.md +1 -1
  82. package/docs/workflow-catalog.md +1 -0
  83. package/package.json +37 -26
  84. package/packages/compatibility/adopter-delivery.js +16 -0
  85. package/packages/compatibility/cross-platform-adopter-qualification.js +12 -0
  86. package/packages/compatibility/floating-consumer-policy.js +14 -0
  87. package/packages/compatibility/publication-qualification.js +11 -0
  88. package/packages/compatibility/publication-rehearsal.js +18 -0
  89. package/packages/compatibility/runtime-ref-resume-authority.js +13 -0
  90. package/packages/compatibility/tail-reseal-receipt.js +7 -0
  91. package/packages/compatibility/tail-reseal.js +11 -0
  92. package/packages/core/{v4-adopter-delivery-parity.js → adopter-delivery-parity.js} +12 -12
  93. package/packages/core/{v4-adopter-delivery.js → adopter-delivery.js} +24 -24
  94. package/packages/core/buildchain-contract.js +5 -5
  95. package/packages/core/buildchain-domain.wasm +0 -0
  96. package/packages/core/buildchain-publication-authority.js +1 -0
  97. package/packages/core/{v4-canonical-contracts.js → canonical-contracts.js} +32 -31
  98. package/packages/core/{v4-cross-platform-adopter-qualification.js → cross-platform-adopter-qualification.js} +19 -19
  99. package/packages/core/{v4-delivery-warrant-fixture-runner.js → delivery-warrant-fixture-runner.js} +36 -32
  100. package/packages/core/{v4-delivery-warrant-read-candidate.js → delivery-warrant-read-candidate.js} +40 -40
  101. package/packages/core/{v4-delivery-warrant-semantic-diff-gate.js → delivery-warrant-semantic-diff-gate.js} +58 -59
  102. package/packages/core/{v4-delivery-warrant-shadow-adapter.js → delivery-warrant-shadow-adapter.js} +15 -15
  103. package/packages/core/dev-delivery-execution-transfer.js +6 -6
  104. package/packages/core/dev-delivery-native-proof.js +12 -8
  105. package/packages/core/dev-delivery-warrant-legacy-recovery.js +1 -1
  106. package/packages/core/dev-delivery-warrant-native-compatibility.js +4 -4
  107. package/packages/core/dev-delivery-warrant-state.js +11 -11
  108. package/packages/core/dev-delivery-warrant.js +3 -3
  109. package/packages/core/domain-wasm-artifact.js +7 -0
  110. package/packages/core/{v4-domain-wasm.js → domain-wasm.js} +31 -31
  111. package/packages/core/{v4-floating-consumer-evidence.js → floating-consumer-evidence.js} +13 -13
  112. package/packages/core/{v4-floating-consumer-policy.js → floating-consumer-policy.js} +27 -29
  113. package/packages/core/{v4-floating-consumer-release-passport.js → floating-consumer-release-passport.js} +25 -25
  114. package/packages/core/index.js +4 -8
  115. package/packages/core/next-development-projection.js +24 -1
  116. package/packages/core/next-development-transition.js +5 -6
  117. package/packages/core/oci-compose-qualification.js +143 -0
  118. package/packages/core/oci-publication-bundle.js +281 -0
  119. package/packages/core/oci-publication-graph.js +206 -0
  120. package/packages/core/paper-runtime-channels.js +2 -2
  121. package/packages/core/paper.js +3 -3
  122. package/packages/core/partial-mutation-recovery-qualification.js +18 -0
  123. package/packages/core/{v4-platform-stage-checkpoints.js → platform-stage-checkpoints.js} +37 -37
  124. package/packages/core/{v4-product-publication.js → product-publication.js} +11 -9
  125. package/packages/core/{v4-protected-publication-source.js → protected-publication-source.js} +3 -3
  126. package/packages/core/provider-operation-journal.js +62 -0
  127. package/packages/core/{v4-provider-readback-idempotency.js → provider-readback-idempotency.js} +33 -33
  128. package/packages/core/public-export-compatibility.js +33 -0
  129. package/packages/core/publication-development.js +72 -0
  130. package/packages/core/{v4-publication-qualification.js → publication-qualification.js} +17 -17
  131. package/packages/core/{v4-publication-rehearsal-capsule.js → publication-rehearsal-capsule.js} +23 -23
  132. package/packages/core/publication-rehearsal-projection.js +2 -2
  133. package/packages/core/{v4-publication-rehearsal-provider-bindings.js → publication-rehearsal-provider-bindings.js} +4 -4
  134. package/packages/core/publication-rehearsal-runtime.js +21 -21
  135. package/packages/core/{v4-publication-rehearsal.js → publication-rehearsal.js} +33 -33
  136. package/packages/core/publication-sealed-bundle.js +78 -13
  137. package/packages/core/release-activation-shadow.js +32 -0
  138. package/packages/core/release-candidate.js +6 -6
  139. package/packages/core/{v4-release-invocation.js → release-invocation.js} +15 -15
  140. package/packages/core/release-passport.js +36 -36
  141. package/packages/core/release-tail-product-capabilities.js +9 -0
  142. package/packages/core/release-tail-provider-plane.js +10 -10
  143. package/packages/core/{v4-runtime-ref-resume-authority.js → runtime-ref-resume-authority.js} +36 -40
  144. package/packages/core/{v4-runtime-selector-persistence.js → runtime-selector-persistence.js} +7 -7
  145. package/packages/core/stable-publication-fence.js +28 -0
  146. package/packages/core/{v4-stage-capsule-local-store.js → stage-capsule-local-store.js} +56 -54
  147. package/packages/core/{v4-stage-capsule-qualification-campaign.js → stage-capsule-qualification-campaign.js} +37 -38
  148. package/packages/core/{v4-stage-capsule-qualification.js → stage-capsule-qualification.js} +28 -29
  149. package/packages/core/{v4-stage-capsule-resume-planner.js → stage-capsule-resume-planner.js} +29 -29
  150. package/packages/core/{v4-stage-capsule-store.js → stage-capsule-store.js} +59 -56
  151. package/packages/core/{v4-stage-capsule.js → stage-capsule.js} +45 -45
  152. package/packages/core/{v4-tail-reseal-contract.js → tail-reseal-contract.js} +6 -6
  153. package/packages/core/{v4-tail-reseal-github.js → tail-reseal-github.js} +12 -12
  154. package/packages/core/{v4-tail-reseal-receipt.js → tail-reseal-receipt.js} +22 -22
  155. package/packages/core/{v4-tail-reseal.js → tail-reseal.js} +29 -29
  156. package/packages/core/{v4-universal-workflow-bootstrap.js → universal-workflow-bootstrap.js} +23 -23
  157. package/scripts/{v4-architecture.mjs → architecture.mjs} +6 -6
  158. package/scripts/binary-publication-evidence.mjs +1 -1
  159. package/scripts/{v4-bridge-bootstrap.mjs → bridge-bootstrap.mjs} +14 -18
  160. package/scripts/{v4-bridge-evidence.mjs → bridge-evidence.mjs} +8 -8
  161. package/scripts/{build-v4-domain-wasm.mjs → build-domain-wasm.mjs} +6 -18
  162. package/scripts/{v3-v4-capability-catalog.mjs → capability-parity-catalog.mjs} +19 -19
  163. package/scripts/check-action-bundles.mjs +2 -2
  164. package/scripts/{check-v3-v4-capability-inventory.mjs → check-capability-parity-inventory.mjs} +42 -42
  165. package/scripts/check-core-mechanism-inventory.mjs +4 -1
  166. package/scripts/{check-v4-floating-consumer-policy-contract.mjs → check-floating-consumer-policy-contract.mjs} +8 -8
  167. package/scripts/check-implementation-naming.mjs +135 -0
  168. package/scripts/check-inventory.mjs +6 -5
  169. package/scripts/check-maintainability.mjs +9 -2
  170. package/scripts/{check-v4-public-dogfood-contract.mjs → check-public-dogfood-contract.mjs} +15 -15
  171. package/scripts/{check-v4-release-topology.mjs → check-release-topology.mjs} +53 -31
  172. package/scripts/{check-v4-runtime-semantic-closure.mjs → check-runtime-semantic-closure.mjs} +19 -16
  173. package/scripts/{check-v4-universal-workflow-bootstrap.mjs → check-universal-workflow-bootstrap.mjs} +14 -14
  174. package/scripts/{v4-consumer-policy.mjs → consumer-policy.mjs} +15 -15
  175. package/scripts/{copy-v4-domain-wasm.mjs → copy-domain-wasm.mjs} +3 -3
  176. package/scripts/{v4-cross-platform-adopter-qualification.mjs → cross-platform-adopter-qualification.mjs} +9 -9
  177. package/scripts/{v4-declarative-promotion-admission.mjs → declarative-promotion-admission.mjs} +4 -4
  178. package/scripts/dev-delivery-warrant-options.mjs +1 -1
  179. package/scripts/dev-delivery-warrant-store.mjs +29 -10
  180. package/scripts/dev-delivery-warrant.mjs +4 -4
  181. package/scripts/dev-pr-delivery-warrant.mjs +1 -1
  182. package/scripts/generate-channel-build-workflow.mjs +2 -2
  183. package/scripts/generate-channel-promotion-workflow.mjs +14 -31
  184. package/scripts/generate-release-candidate-passport.mjs +23 -23
  185. package/scripts/generate-site-bundle.mjs +17 -17
  186. package/scripts/{generate-v4-universal-workflow-facades.mjs → generate-universal-workflow-facades.mjs} +61 -21
  187. package/scripts/{v4-host-adapter.mjs → host-adapter.mjs} +1 -1
  188. package/scripts/implementation-references.mjs +25 -0
  189. package/scripts/init-repo.mjs +1 -1
  190. package/scripts/next-development-review.mjs +17 -11
  191. package/scripts/oci-compose-preview.mjs +261 -0
  192. package/scripts/{v4-platform-stage-checkpoint-rehearsal.mjs → platform-stage-checkpoint-rehearsal.mjs} +17 -17
  193. package/scripts/{v4-product-publication-intent.mjs → product-publication-intent.mjs} +16 -8
  194. package/scripts/publication-candidate-kind.mjs +93 -0
  195. package/scripts/publication-candidate-sealer.mjs +16 -1
  196. package/scripts/{v4-publication-rehearsal-fixture.mjs → publication-rehearsal-fixture.mjs} +5 -5
  197. package/scripts/{v4-publication-settlement.mjs → publication-settlement.mjs} +8 -8
  198. package/scripts/{v4-release-candidate-adapter.mjs → release-candidate-adapter.mjs} +4 -4
  199. package/scripts/release-candidate-resolver.mjs +15 -26
  200. package/scripts/release-tail.mjs +5 -5
  201. package/scripts/resume-from-candidate-run.mjs +35 -42
  202. package/scripts/site-capability-metadata.mjs +9 -0
  203. package/scripts/source-verification-evidence.mjs +7 -7
  204. package/scripts/{v4-stage-capsule-qualification.mjs → stage-capsule-qualification.mjs} +62 -62
  205. package/scripts/{v4-stage-capsule-resume-rehearsal.mjs → stage-capsule-resume-rehearsal.mjs} +6 -6
  206. package/scripts/{v4-tail-reseal-macos-rehearsal.mjs → tail-reseal-macos-rehearsal.mjs} +9 -9
  207. package/scripts/{v4-tail-reseal.mjs → tail-reseal.mjs} +19 -19
  208. package/scripts/universal-facade-maintainability.mjs +12 -3
  209. package/scripts/{v4-universal-workflow-backflow.mjs → universal-workflow-backflow.mjs} +10 -10
  210. package/scripts/{v4-universal-workflow-engine.mjs → universal-workflow-engine.mjs} +40 -38
  211. package/scripts/{v4-universal-workflow-self-dogfood.mjs → universal-workflow-self-dogfood.mjs} +12 -12
  212. package/scripts/verify-version-state-delta.mjs +4 -2
  213. package/scripts/{v4-warrant-shadow-plan.mjs → warrant-shadow-plan.mjs} +6 -6
  214. package/templates/universal-buildchain-bootstrap-recovery.yml +4 -4
  215. package/packages/core/buildchain-v4-domain.wasm +0 -0
  216. package/packages/core/v4-domain-wasm-artifact.js +0 -7
  217. package/packages/core/v4-partial-mutation-recovery-qualification.js +0 -18
  218. package/packages/core/v4-provider-operation-journal.js +0 -62
  219. package/packages/core/v4-release-activation-shadow.js +0 -32
  220. package/packages/core/v4-stable-publication-fence.js +0 -28
  221. /package/actions/{v4-release-candidate-promote → release-candidate-promote}/README.md +0 -0
  222. /package/architecture/{v4-adopter-delivery-parity.json → adopter-delivery-parity.json} +0 -0
  223. /package/architecture/{v3-core-mechanism-inventory.json → baseline-core-mechanism-inventory.json} +0 -0
  224. /package/architecture/{v4-canonical-contract-fixtures.json → canonical-contract-fixtures.json} +0 -0
  225. /package/architecture/{v4-compatibility-facts-parity.json → compatibility-facts-parity.json} +0 -0
  226. /package/architecture/{v4-delivery-warrant-shadow-bootstrap-plan.schema.json → delivery-warrant-shadow-bootstrap-plan.schema.json} +0 -0
  227. /package/architecture/{v4-delivery-warrant-shadow-fixtures.json → delivery-warrant-shadow-fixtures.json} +0 -0
  228. /package/architecture/{v4-delivery-warrant-shadow-fixtures.schema.json → delivery-warrant-shadow-fixtures.schema.json} +0 -0
  229. /package/architecture/{v4-exception-ledger.json → exception-ledger.json} +0 -0
  230. /package/architecture/{v4-exception-ledger.schema.json → exception-ledger.schema.json} +0 -0
  231. /package/architecture/{v4-floating-consumer-policy.json → floating-consumer-policy.json} +0 -0
  232. /package/architecture/{v4-publication-facade-patches.json → publication-facade-patches.json} +0 -0
  233. /package/architecture/{v4-release-invocation-fixtures.json → release-invocation-fixtures.json} +0 -0
@@ -140,7 +140,7 @@ export function recoverLegacyTerminalDevDeliveryQueue(
140
140
  );
141
141
  }
142
142
  const before = normalizeDevDeliveryQueue(queueInput, {
143
- allowLegacyV3Readback: true,
143
+ allowLegacyBaselineReadback: true,
144
144
  });
145
145
  const expectedOldStateRoot = exactRoot(
146
146
  request.expectedOldStateRoot,
@@ -1,6 +1,6 @@
1
1
  export function lacksExactNativeExecutionContract(
2
2
  candidate,
3
- allowLegacyV3Readback = false,
3
+ allowLegacyBaselineReadback = false,
4
4
  ) {
5
5
  const native =
6
6
  candidate.deliveryClass !== "non-native-fast" ||
@@ -9,17 +9,17 @@ export function lacksExactNativeExecutionContract(
9
9
  return Boolean(
10
10
  native &&
11
11
  (!candidate.environmentRoot ||
12
- (!candidate.nativeCommandContract && !allowLegacyV3Readback)),
12
+ (!candidate.nativeCommandContract && !allowLegacyBaselineReadback)),
13
13
  );
14
14
  }
15
15
 
16
16
  export function lacksLiveNativeProof(
17
17
  candidate,
18
18
  status,
19
- { allowLegacyV3Readback = false, allowLegacyQueuedReadback = false } = {},
19
+ { allowLegacyV3Readback: legacyReadback = false, allowLegacyBaselineReadback = legacyReadback, allowLegacyQueuedReadback = false } = {},
20
20
  ) {
21
21
  return (
22
- lacksExactNativeExecutionContract(candidate, allowLegacyV3Readback) &&
22
+ lacksExactNativeExecutionContract(candidate, allowLegacyBaselineReadback) &&
23
23
  !(status === "queued" && allowLegacyQueuedReadback) &&
24
24
  !TERMINAL_STATES.has(status)
25
25
  );
@@ -279,7 +279,8 @@ function normalizeCandidate(input, expected) {
279
279
  }
280
280
  if (
281
281
  lacksLiveNativeProof(candidate, status, {
282
- allowLegacyV3Readback: expected.allowLegacyV3Readback,
282
+ allowLegacyBaselineReadback:
283
+ expected.allowLegacyBaselineReadback ?? expected.allowLegacyV3Readback,
283
284
  allowLegacyQueuedReadback: expected.allowLegacyQueuedNativeReadback,
284
285
  })
285
286
  )
@@ -358,12 +359,12 @@ export function normalizeDevDeliveryQueue(input, expected = {}) {
358
359
  const hasExecutionReceipt = !!queue.activeWarrant?.nativeExecutionReceiptRoot;
359
360
  const hasQualificationReceipt =
360
361
  !!queue.activeWarrant?.qualificationReceiptRoot;
361
- const allowLegacyV3Readback =
362
- expected.allowLegacyV3Readback === true &&
363
- hasExecutionReceipt === hasQualificationReceipt;
362
+ const allowLegacyBaselineReadback =
363
+ (expected.allowLegacyBaselineReadback ?? expected.allowLegacyV3Readback) ===
364
+ true && hasExecutionReceipt === hasQualificationReceipt;
364
365
  const candidateExpected = {
365
366
  ...queue,
366
- allowLegacyV3Readback,
367
+ allowLegacyBaselineReadback,
367
368
  allowLegacyQueuedNativeReadback: true,
368
369
  };
369
370
  queue.candidates = (queue.candidates || []).map((candidate) =>
@@ -372,7 +373,7 @@ export function normalizeDevDeliveryQueue(input, expected = {}) {
372
373
  validateDevDeliveryCandidateChain(queue.candidates, TERMINAL_STATES);
373
374
  queue.updatedAt = timestamp(queue.updatedAt, "queue updatedAt");
374
375
  if (queue.activeWarrant) {
375
- validateActiveDevDeliveryWarrant(queue, { allowLegacyV3Readback });
376
+ validateActiveDevDeliveryWarrant(queue, { allowLegacyBaselineReadback });
376
377
  } else if (
377
378
  queue.candidates.some((candidate) =>
378
379
  ["selected", "proving", "waiting", "blocked", "qualified"].includes(
@@ -571,12 +572,11 @@ function effectivePriority(candidate, policy, now) {
571
572
  releaseBlocker: Boolean(candidate.releaseBlockerPriority),
572
573
  };
573
574
  }
574
- export function rankDevDeliveryCandidates(
575
- queueInput,
576
- { now = new Date().toISOString(), allowLegacyV3Readback = false } = {},
577
- ) {
575
+ export function rankDevDeliveryCandidates(queueInput, options = {}) {
576
+ const { now = new Date().toISOString() } = options;
578
577
  const queue = normalizeDevDeliveryQueue(queueInput, {
579
- allowLegacyV3Readback,
578
+ allowLegacyBaselineReadback:
579
+ options.allowLegacyBaselineReadback ?? options.allowLegacyV3Readback,
580
580
  });
581
581
  const currentTime = timestamp(now, "now");
582
582
  return queue.candidates
@@ -534,10 +534,10 @@ export const reconcileDevDeliveryTerminalEvidence =
534
534
  });
535
535
  export function observeDevDeliveryQueue(
536
536
  queueInput,
537
- { now = new Date().toISOString(), allowLegacyV3Readback = false } = {},
537
+ { now = new Date().toISOString(), allowLegacyV3Readback: legacyReadback = false, allowLegacyBaselineReadback = legacyReadback } = {},
538
538
  ) {
539
539
  const queue = normalizeDevDeliveryQueue(queueInput, {
540
- allowLegacyV3Readback,
540
+ allowLegacyBaselineReadback,
541
541
  });
542
542
  const currentTime = timestamp(now, "now");
543
543
  const states = {};
@@ -545,7 +545,7 @@ export function observeDevDeliveryQueue(
545
545
  states[candidate.status] = (states[candidate.status] || 0) + 1;
546
546
  const queued = rankDevDeliveryCandidates(queue, {
547
547
  now: currentTime,
548
- allowLegacyV3Readback,
548
+ allowLegacyBaselineReadback,
549
549
  });
550
550
  return {
551
551
  schema: "kungfu.buildchain.dev-delivery-queue-observation/v1",
@@ -0,0 +1,7 @@
1
+ // Generated by scripts/build-domain-wasm.mjs.
2
+ export const DOMAIN_WASM_ABI_VERSION = 1;
3
+ export const DOMAIN_WASM_RUSTC = "rustc 1.96.0 (ac68faa20 2026-05-25)";
4
+ export const DOMAIN_WASM_SOURCE_SHA256 =
5
+ "d575dc3680de68f5f165b9fe584cf63ba2498adf45d286320b797a9caccf19f9";
6
+ export const DOMAIN_WASM_SHA256 =
7
+ "e04814473796c483e82e450b651b60e63609bfca182140b333dd0e6994ae63db";
@@ -2,32 +2,32 @@ import fs from "node:fs";
2
2
  import { createHash } from "node:crypto";
3
3
 
4
4
  import {
5
- V4_DOMAIN_WASM_ABI_VERSION,
6
- V4_DOMAIN_WASM_SHA256,
7
- } from "./v4-domain-wasm-artifact.js";
5
+ DOMAIN_WASM_ABI_VERSION,
6
+ DOMAIN_WASM_SHA256,
7
+ } from "./domain-wasm-artifact.js";
8
8
 
9
- export const V4_DOMAIN_WASM_REQUEST_CONTRACT =
9
+ export const DOMAIN_WASM_REQUEST_CONTRACT =
10
10
  "kungfu-buildchain-v4-domain-wasm-request/v1";
11
- export const V4_DOMAIN_WASM_RESPONSE_CONTRACT =
11
+ export const DOMAIN_WASM_RESPONSE_CONTRACT =
12
12
  "kungfu-buildchain-v4-domain-wasm-response/v1";
13
13
 
14
- const WASM_URL = new URL("./buildchain-v4-domain.wasm", import.meta.url);
14
+ const WASM_URL = new URL("./buildchain-domain.wasm", import.meta.url);
15
15
  const REQUIRED_EXPORTS = [
16
16
  "memory",
17
- "buildchain_v4_wasm_abi_version",
18
- "buildchain_v4_wasm_alloc",
19
- "buildchain_v4_wasm_dealloc",
20
- "buildchain_v4_wasm_invoke",
21
- "buildchain_v4_wasm_response_pointer",
22
- "buildchain_v4_wasm_response_length",
17
+ "buildchain_domain_wasm_abi_version",
18
+ "buildchain_domain_wasm_alloc",
19
+ "buildchain_domain_wasm_dealloc",
20
+ "buildchain_domain_wasm_invoke",
21
+ "buildchain_domain_wasm_response_pointer",
22
+ "buildchain_domain_wasm_response_length",
23
23
  ];
24
24
 
25
25
  let loaded;
26
26
 
27
- export class V4DomainWasmFault extends Error {
27
+ export class DomainWasmFault extends Error {
28
28
  constructor(fault) {
29
29
  super(fault?.message || "Rust/WASM domain request failed");
30
- this.name = "V4DomainWasmFault";
30
+ this.name = "DomainWasmFault";
31
31
  this.fault = fault;
32
32
  this.code = fault?.code || "rust-wasm-domain-failed";
33
33
  this.path = fault?.path || "$";
@@ -43,7 +43,7 @@ function failClosed(message, cause) {
43
43
  }
44
44
 
45
45
  function invalidTransport(code, path, message) {
46
- throw new V4DomainWasmFault({ code, path, message, retry: "stop" });
46
+ throw new DomainWasmFault({ code, path, message, retry: "stop" });
47
47
  }
48
48
 
49
49
  function validateJsonTransport(value, path, active) {
@@ -131,9 +131,9 @@ function loadAuthority() {
131
131
  failClosed(`cannot read ${WASM_URL.pathname}`, error);
132
132
  }
133
133
  const observedSha256 = createHash("sha256").update(bytes).digest("hex");
134
- if (observedSha256 !== V4_DOMAIN_WASM_SHA256) {
134
+ if (observedSha256 !== DOMAIN_WASM_SHA256) {
135
135
  failClosed(
136
- `artifact digest mismatch (expected ${V4_DOMAIN_WASM_SHA256}, observed ${observedSha256})`,
136
+ `artifact digest mismatch (expected ${DOMAIN_WASM_SHA256}, observed ${observedSha256})`,
137
137
  );
138
138
  }
139
139
  let instance;
@@ -148,17 +148,17 @@ function loadAuthority() {
148
148
  if (missing.length > 0) {
149
149
  failClosed(`artifact is missing exports: ${missing.join(", ")}`);
150
150
  }
151
- const abiVersion = instance.exports.buildchain_v4_wasm_abi_version();
152
- if (abiVersion !== V4_DOMAIN_WASM_ABI_VERSION) {
151
+ const abiVersion = instance.exports.buildchain_domain_wasm_abi_version();
152
+ if (abiVersion !== DOMAIN_WASM_ABI_VERSION) {
153
153
  failClosed(
154
- `ABI mismatch (expected ${V4_DOMAIN_WASM_ABI_VERSION}, observed ${abiVersion})`,
154
+ `ABI mismatch (expected ${DOMAIN_WASM_ABI_VERSION}, observed ${abiVersion})`,
155
155
  );
156
156
  }
157
157
  loaded = instance.exports;
158
158
  return loaded;
159
159
  }
160
160
 
161
- export function invokeV4DomainWasm(operation, payload) {
161
+ export function invokeDomainWasm(operation, payload) {
162
162
  if (
163
163
  ["canonical-json", "content-root", "release-tail-root"].includes(operation)
164
164
  ) {
@@ -167,23 +167,23 @@ export function invokeV4DomainWasm(operation, payload) {
167
167
  const authority = loadAuthority();
168
168
  const input = new TextEncoder().encode(
169
169
  JSON.stringify({
170
- schema: V4_DOMAIN_WASM_REQUEST_CONTRACT,
170
+ schema: DOMAIN_WASM_REQUEST_CONTRACT,
171
171
  operation,
172
172
  payload,
173
173
  }),
174
174
  );
175
- const inputPointer = authority.buildchain_v4_wasm_alloc(input.byteLength);
175
+ const inputPointer = authority.buildchain_domain_wasm_alloc(input.byteLength);
176
176
  try {
177
177
  new Uint8Array(authority.memory.buffer, inputPointer, input.byteLength).set(
178
178
  input,
179
179
  );
180
180
  try {
181
- authority.buildchain_v4_wasm_invoke(inputPointer, input.byteLength);
181
+ authority.buildchain_domain_wasm_invoke(inputPointer, input.byteLength);
182
182
  } catch (error) {
183
183
  failClosed(`operation '${operation}' trapped`, error);
184
184
  }
185
- const responsePointer = authority.buildchain_v4_wasm_response_pointer();
186
- const responseLength = authority.buildchain_v4_wasm_response_length();
185
+ const responsePointer = authority.buildchain_domain_wasm_response_pointer();
186
+ const responseLength = authority.buildchain_domain_wasm_response_length();
187
187
  let response;
188
188
  try {
189
189
  const responseBytes = new Uint8Array(
@@ -199,18 +199,18 @@ export function invokeV4DomainWasm(operation, payload) {
199
199
  );
200
200
  }
201
201
  if (
202
- response?.schema !== V4_DOMAIN_WASM_RESPONSE_CONTRACT ||
202
+ response?.schema !== DOMAIN_WASM_RESPONSE_CONTRACT ||
203
203
  typeof response.ok !== "boolean"
204
204
  ) {
205
205
  failClosed(`operation '${operation}' returned an unsupported response`);
206
206
  }
207
- if (!response.ok) throw new V4DomainWasmFault(response.fault);
207
+ if (!response.ok) throw new DomainWasmFault(response.fault);
208
208
  return response.value;
209
209
  } finally {
210
- authority.buildchain_v4_wasm_dealloc(inputPointer, input.byteLength);
210
+ authority.buildchain_domain_wasm_dealloc(inputPointer, input.byteLength);
211
211
  }
212
212
  }
213
213
 
214
- export function v4DomainWasmInfo() {
215
- return invokeV4DomainWasm("abi-info", {});
214
+ export function domainWasmInfo() {
215
+ return invokeDomainWasm("abi-info", {});
216
216
  }
@@ -1,10 +1,10 @@
1
1
  import crypto from "node:crypto";
2
2
 
3
- export const V4_FLOATING_CONSUMER_POLICY =
3
+ export const FLOATING_CONSUMER_POLICY =
4
4
  "kungfu-buildchain-v4-floating-consumer-policy/v1";
5
- export const V4_FLOATING_CONSUMER_RECEIPT =
5
+ export const FLOATING_CONSUMER_RECEIPT =
6
6
  "kungfu-buildchain-v4-floating-consumer-policy-receipt/v1";
7
- export const V4_FLOATING_CONSUMER_CERTIFICATION =
7
+ export const FLOATING_CONSUMER_CERTIFICATION =
8
8
  "kungfu-buildchain-v4-floating-consumer-certification/v1";
9
9
 
10
10
  const SHA256_ROOT = /^sha256:[0-9a-f]{64}$/u;
@@ -135,18 +135,18 @@ function verifyFloatingSelector(value, check, label) {
135
135
  );
136
136
  }
137
137
 
138
- export function v4FloatingConsumerDocumentRoot(value) {
138
+ export function floatingConsumerDocumentRoot(value) {
139
139
  return documentRoot(value);
140
140
  }
141
141
 
142
- export function verifyV4FloatingConsumerPolicyReceipt(options = {}) {
142
+ export function verifyFloatingConsumerPolicyReceipt(options = {}) {
143
143
  const { receipt, receiptRoot = "", expectedReceiptRoot = "" } = options;
144
144
  const failures = [];
145
145
  const check = checker(failures);
146
146
  check(
147
- receipt?.schema === V4_FLOATING_CONSUMER_RECEIPT,
147
+ receipt?.schema === FLOATING_CONSUMER_RECEIPT,
148
148
  "receipt-contract-invalid",
149
- `receipt must use ${V4_FLOATING_CONSUMER_RECEIPT}`,
149
+ `receipt must use ${FLOATING_CONSUMER_RECEIPT}`,
150
150
  );
151
151
  check(
152
152
  receipt?.status === "passed",
@@ -199,10 +199,10 @@ function defaultAuthority(options, receiptRoot) {
199
199
  };
200
200
  }
201
201
 
202
- export function certifyV4FloatingConsumerPolicyReceipt(options = {}) {
203
- const verification = verifyV4FloatingConsumerPolicyReceipt(options);
202
+ export function certifyFloatingConsumerPolicyReceipt(options = {}) {
203
+ const verification = verifyFloatingConsumerPolicyReceipt(options);
204
204
  const certification = {
205
- schema: V4_FLOATING_CONSUMER_CERTIFICATION,
205
+ schema: FLOATING_CONSUMER_CERTIFICATION,
206
206
  status: verification.ok ? "certified" : "rejected",
207
207
  receiptRoot: verification.receiptRoot,
208
208
  caller: options.receipt?.caller || {},
@@ -284,14 +284,14 @@ function verifyCertificationAuthority(certification, expected, check) {
284
284
  );
285
285
  }
286
286
 
287
- export function verifyV4FloatingConsumerPolicyCertification(options = {}) {
287
+ export function verifyFloatingConsumerPolicyCertification(options = {}) {
288
288
  const { certification, certificationRoot = "" } = options;
289
289
  const failures = [];
290
290
  const check = checker(failures);
291
291
  check(
292
- certification?.schema === V4_FLOATING_CONSUMER_CERTIFICATION,
292
+ certification?.schema === FLOATING_CONSUMER_CERTIFICATION,
293
293
  "certification-contract-invalid",
294
- `certification must use ${V4_FLOATING_CONSUMER_CERTIFICATION}`,
294
+ `certification must use ${FLOATING_CONSUMER_CERTIFICATION}`,
295
295
  );
296
296
  check(
297
297
  certification?.status === "certified",
@@ -7,20 +7,20 @@ import {
7
7
  } from "./buildchain-contract.js";
8
8
  import { parseYamlUses } from "./workflow-yaml-contract.js";
9
9
  import {
10
- V4_FLOATING_CONSUMER_POLICY,
11
- V4_FLOATING_CONSUMER_RECEIPT,
12
- v4FloatingConsumerDocumentRoot,
13
- } from "./v4-floating-consumer-evidence.js";
10
+ FLOATING_CONSUMER_POLICY,
11
+ FLOATING_CONSUMER_RECEIPT,
12
+ floatingConsumerDocumentRoot,
13
+ } from "./floating-consumer-evidence.js";
14
14
 
15
15
  export {
16
- V4_FLOATING_CONSUMER_CERTIFICATION,
17
- V4_FLOATING_CONSUMER_POLICY,
18
- V4_FLOATING_CONSUMER_RECEIPT,
19
- certifyV4FloatingConsumerPolicyReceipt,
20
- v4FloatingConsumerDocumentRoot,
21
- verifyV4FloatingConsumerPolicyCertification,
22
- verifyV4FloatingConsumerPolicyReceipt,
23
- } from "./v4-floating-consumer-evidence.js";
16
+ FLOATING_CONSUMER_CERTIFICATION,
17
+ FLOATING_CONSUMER_POLICY,
18
+ FLOATING_CONSUMER_RECEIPT,
19
+ certifyFloatingConsumerPolicyReceipt,
20
+ floatingConsumerDocumentRoot,
21
+ verifyFloatingConsumerPolicyCertification,
22
+ verifyFloatingConsumerPolicyReceipt,
23
+ } from "./floating-consumer-evidence.js";
24
24
 
25
25
  const EXACT_SHA = /^[0-9a-f]{40}$/u;
26
26
  const SHA256_ROOT = /^sha256:[0-9a-f]{64}$/u;
@@ -36,12 +36,12 @@ const DEFAULT_ALPHA_LOCK_PATH = ".buildchain/alpha-contract-lock.json";
36
36
  const TRANSIENT_ACTION =
37
37
  /^\.\/\.buildchain\/(?:runtime|workflow-shell|attester-runtime|release-tail-runtime)\//u;
38
38
  const SCANNER_PATHS = Object.freeze([
39
- "architecture/v4-floating-consumer-policy.json",
39
+ "architecture/floating-consumer-policy.json",
40
40
  "contracts/v4-floating-consumer-policy-receipt-v1.schema.json",
41
41
  "packages/core/buildchain-contract.js",
42
- "packages/core/v4-floating-consumer-policy.js",
42
+ "packages/core/floating-consumer-policy.js",
43
43
  "packages/core/workflow-yaml-contract.js",
44
- "scripts/v4-consumer-policy.mjs",
44
+ "scripts/consumer-policy.mjs",
45
45
  ]);
46
46
 
47
47
  function defaultRuntimeRoot() {
@@ -73,9 +73,7 @@ function resolveInside(root, relative, label) {
73
73
  return file;
74
74
  }
75
75
 
76
- export function v4ConsumerPolicyScannerRoot(
77
- runtimeRoot = defaultRuntimeRoot(),
78
- ) {
76
+ export function consumerPolicyScannerRoot(runtimeRoot = defaultRuntimeRoot()) {
79
77
  return sha256(
80
78
  stableJson(
81
79
  SCANNER_PATHS.map((relative) => ({
@@ -86,7 +84,7 @@ export function v4ConsumerPolicyScannerRoot(
86
84
  );
87
85
  }
88
86
 
89
- export function resolveV4FloatingConsumerPolicyAuthority({
87
+ export function resolveFloatingConsumerPolicyAuthority({
90
88
  runtimeRoot = defaultRuntimeRoot(),
91
89
  callerRoot = process.cwd(),
92
90
  stableLockPath = DEFAULT_STABLE_LOCK_PATH,
@@ -94,7 +92,7 @@ export function resolveV4FloatingConsumerPolicyAuthority({
94
92
  } = {}) {
95
93
  const policy = readJson(
96
94
  runtimeRoot,
97
- "architecture/v4-floating-consumer-policy.json",
95
+ "architecture/floating-consumer-policy.json",
98
96
  "v4 floating consumer policy",
99
97
  ).value;
100
98
  const readLock = (relative, label) => {
@@ -102,12 +100,12 @@ export function resolveV4FloatingConsumerPolicyAuthority({
102
100
  if (!fs.existsSync(file))
103
101
  throw new Error(`${label} contract lock is missing: ${relative}`);
104
102
  const value = JSON.parse(fs.readFileSync(file, "utf8"));
105
- return { path: relative, root: v4FloatingConsumerDocumentRoot(value) };
103
+ return { path: relative, root: floatingConsumerDocumentRoot(value) };
106
104
  };
107
105
  return {
108
106
  policy,
109
- policyRoot: v4FloatingConsumerDocumentRoot(policy),
110
- scannerRoot: v4ConsumerPolicyScannerRoot(runtimeRoot),
107
+ policyRoot: floatingConsumerDocumentRoot(policy),
108
+ scannerRoot: consumerPolicyScannerRoot(runtimeRoot),
111
109
  contractLocks: {
112
110
  stable: readLock(stableLockPath, "stable"),
113
111
  alpha: readLock(alphaLockPath, "alpha"),
@@ -287,14 +285,14 @@ function classifyBuildchainUses(records, failures, { repository } = {}) {
287
285
  for (const record of records) {
288
286
  const parsed = coordinate(record.uses);
289
287
  if (!parsed || parsed.repository !== BUILDCHAIN_REPOSITORY) continue;
290
- const v4Candidate =
288
+ const domainCandidate =
291
289
  parsed.selector === "v4" ||
292
290
  parsed.selector === "v4-alpha" ||
293
291
  /^v4(?:[./-]|$)/u.test(parsed.selector) ||
294
292
  parsed.selector === ALPHA_RECOVERY_BOOTSTRAP.selector ||
295
293
  EXACT_SHA.test(parsed.selector.toLowerCase()) ||
296
294
  parsed.selector.includes("${{");
297
- if (!v4Candidate) continue;
295
+ if (!domainCandidate) continue;
298
296
  const bootstrapShape =
299
297
  normalizeWorkflowPath(parsed.path) ===
300
298
  ALPHA_RECOVERY_BOOTSTRAP.workflow &&
@@ -429,7 +427,7 @@ function verifySelectedLock({
429
427
  }
430
428
  }
431
429
 
432
- export function scanV4FloatingConsumerPolicy({
430
+ export function scanFloatingConsumerPolicy({
433
431
  root = process.cwd(),
434
432
  invocationRoot = root,
435
433
  repository = "",
@@ -446,8 +444,8 @@ export function scanV4FloatingConsumerPolicy({
446
444
  } = {}) {
447
445
  const resolvedRoot = path.resolve(root);
448
446
  const resolvedInvocationRoot = path.resolve(invocationRoot);
449
- if (!policy || policy.contract !== V4_FLOATING_CONSUMER_POLICY) {
450
- throw new Error(`policy must use ${V4_FLOATING_CONSUMER_POLICY}`);
447
+ if (!policy || policy.contract !== FLOATING_CONSUMER_POLICY) {
448
+ throw new Error(`policy must use ${FLOATING_CONSUMER_POLICY}`);
451
449
  }
452
450
  const failures = [];
453
451
  const normalizedSourceSha = String(sourceSha || "").toLowerCase();
@@ -535,7 +533,7 @@ export function scanV4FloatingConsumerPolicy({
535
533
  invocationUses,
536
534
  });
537
535
  const receipt = {
538
- schema: V4_FLOATING_CONSUMER_RECEIPT,
536
+ schema: FLOATING_CONSUMER_RECEIPT,
539
537
  status: failures.length ? "failed" : "passed",
540
538
  caller: { repository, sourceSha: normalizedSourceSha },
541
539
  invocation: {
@@ -1,15 +1,15 @@
1
1
  import fs from "node:fs";
2
2
  import path from "node:path";
3
3
  import {
4
- v4FloatingConsumerDocumentRoot,
5
- verifyV4FloatingConsumerPolicyCertification,
6
- } from "./v4-floating-consumer-evidence.js";
4
+ floatingConsumerDocumentRoot,
5
+ verifyFloatingConsumerPolicyCertification,
6
+ } from "./floating-consumer-evidence.js";
7
7
  import {
8
- verifyV4RuntimeAuthorizationReceipt,
9
- verifyV4RuntimeResumeLineage,
10
- } from "./v4-runtime-ref-resume-authority.js";
8
+ verifyRuntimeAuthorizationReceipt,
9
+ verifyRuntimeResumeLineage,
10
+ } from "./runtime-ref-resume-authority.js";
11
11
  const SHA256_ROOT = /^sha256:[0-9a-f]{64}$/u;
12
- export function isV4PromotionRouting(value = undefined) {
12
+ export function isPromotionRouting(value = undefined) {
13
13
  return [
14
14
  value?.router?.ref,
15
15
  value?.shell?.ref,
@@ -31,13 +31,13 @@ function resolveCallerLock(root, relative, label) {
31
31
  }
32
32
  return {
33
33
  path: relative,
34
- root: v4FloatingConsumerDocumentRoot(
34
+ root: floatingConsumerDocumentRoot(
35
35
  JSON.parse(fs.readFileSync(file, "utf8")),
36
36
  ),
37
37
  };
38
38
  }
39
39
 
40
- export function resolveV4FloatingConsumerCallerLocks(value, cwd) {
40
+ export function resolveFloatingConsumerCallerLocks(value, cwd) {
41
41
  const certification = value?.certification || value;
42
42
  const declared = certification?.authority || {};
43
43
  const stableLockPath = declared?.contractLocks?.stable?.path || "";
@@ -55,7 +55,7 @@ function normalizeCertification(value, expected) {
55
55
  throw new Error("v4ConsumerPolicyCertification must be a JSON object");
56
56
  }
57
57
  const certification = value.certification || value;
58
- const verification = verifyV4FloatingConsumerPolicyCertification({
58
+ const verification = verifyFloatingConsumerPolicyCertification({
59
59
  certification,
60
60
  certificationRoot: value.certificationRoot || "",
61
61
  expectedCertificationRoot: expected.certificationRoot,
@@ -76,7 +76,7 @@ function normalizeCertification(value, expected) {
76
76
  }
77
77
  return { certificationRoot: verification.certificationRoot, certification };
78
78
  }
79
- export function resolveV4ConsumerPolicyCertificationIdentity({
79
+ export function resolveConsumerPolicyCertificationIdentity({
80
80
  release = {},
81
81
  routing = {},
82
82
  runtimeResume = undefined,
@@ -101,7 +101,7 @@ export function resolveV4ConsumerPolicyCertificationIdentity({
101
101
  runtimeSha: buildSha || certifiedSha || routing?.runtime?.resolvedSha || "",
102
102
  };
103
103
  }
104
- export function requireV4ConsumerPolicyCertification({
104
+ export function requireConsumerPolicyCertification({
105
105
  value,
106
106
  repository,
107
107
  sourceSha,
@@ -110,14 +110,14 @@ export function requireV4ConsumerPolicyCertification({
110
110
  cwd,
111
111
  certificationRoot,
112
112
  }) {
113
- const v4Routing = isV4PromotionRouting(routing);
114
- if (v4Routing && !value) {
113
+ const domainRouting = isPromotionRouting(routing);
114
+ if (domainRouting && !value) {
115
115
  throw new Error(
116
116
  "Buildchain v4 Release Passport requires an external floating consumer policy certification",
117
117
  );
118
118
  }
119
119
  if (!value) return undefined;
120
- if (v4Routing && !SHA256_ROOT.test(String(certificationRoot || ""))) {
120
+ if (domainRouting && !SHA256_ROOT.test(String(certificationRoot || ""))) {
121
121
  throw new Error(
122
122
  "Buildchain v4 Release Passport requires an expected external certification root",
123
123
  );
@@ -127,7 +127,7 @@ export function requireV4ConsumerPolicyCertification({
127
127
  sourceSha,
128
128
  runtimeSha: runtimeSha || routing?.runtime?.resolvedSha || "",
129
129
  certificationRoot,
130
- ...(v4Routing ? resolveV4FloatingConsumerCallerLocks(value, cwd) : {}),
130
+ ...(domainRouting ? resolveFloatingConsumerCallerLocks(value, cwd) : {}),
131
131
  });
132
132
  }
133
133
 
@@ -137,7 +137,7 @@ export function releasePassportCertificationVerificationOptions({
137
137
  routing,
138
138
  }) {
139
139
  const authority = evidence?.certification?.authority || {};
140
- const identity = resolveV4ConsumerPolicyCertificationIdentity({
140
+ const identity = resolveConsumerPolicyCertificationIdentity({
141
141
  release: { ...passport?.release, certification: evidence?.certification },
142
142
  routing,
143
143
  runtimeResume: passport?.v4RuntimeResume,
@@ -203,21 +203,21 @@ export function normalizePromotionEvidence({
203
203
  release = {},
204
204
  v4ConsumerPolicyCertification: certification,
205
205
  v4ConsumerPolicyCertificationRoot: certificationRoot,
206
- v4RuntimeResumeEvidence,
206
+ domainRuntimeResumeEvidence,
207
207
  repository,
208
208
  sourceSha,
209
209
  cwd,
210
210
  }) {
211
211
  const routing = normalizePromotionRouting(release.promotionRouting);
212
- const identity = resolveV4ConsumerPolicyCertificationIdentity({
212
+ const identity = resolveConsumerPolicyCertificationIdentity({
213
213
  release: { ...release, certification },
214
214
  routing,
215
- runtimeResume: v4RuntimeResumeEvidence,
215
+ runtimeResume: domainRuntimeResumeEvidence,
216
216
  sourceSha,
217
217
  });
218
218
  return {
219
219
  routing,
220
- consumerPolicy: requireV4ConsumerPolicyCertification({
220
+ consumerPolicy: requireConsumerPolicyCertification({
221
221
  value: certification,
222
222
  repository,
223
223
  sourceSha: identity.sourceSha,
@@ -229,12 +229,12 @@ export function normalizePromotionEvidence({
229
229
  };
230
230
  }
231
231
 
232
- export function normalizeV4RuntimeResumeEvidence(value, expected = {}) {
232
+ export function normalizeRuntimeResumeEvidence(value, expected = {}) {
233
233
  if (value === undefined || value === null || value === "") return undefined;
234
234
  if (!value || typeof value !== "object" || Array.isArray(value)) {
235
- throw new Error("v4RuntimeResumeEvidence must be a JSON object");
235
+ throw new Error("domainRuntimeResumeEvidence must be a JSON object");
236
236
  }
237
- const authorizationVerification = verifyV4RuntimeAuthorizationReceipt({
237
+ const authorizationVerification = verifyRuntimeAuthorizationReceipt({
238
238
  receipt: value.authorization,
239
239
  receiptRoot: value.authorizationRoot,
240
240
  repository: expected.repository,
@@ -247,7 +247,7 @@ export function normalizeV4RuntimeResumeEvidence(value, expected = {}) {
247
247
  `v4 runtime authorization invalid: ${authorizationVerification.failures.join(", ")}`,
248
248
  );
249
249
  }
250
- const lineageVerification = verifyV4RuntimeResumeLineage({
250
+ const lineageVerification = verifyRuntimeResumeLineage({
251
251
  lineage: value.lineage,
252
252
  lineageRoot: value.lineageRoot,
253
253
  repository: expected.repository,
@@ -644,9 +644,9 @@ export {
644
644
  } from "./kfd3-surface-register.js";
645
645
 
646
646
  export * from "./release-propagation.js";
647
- export * from "./v4-floating-consumer-policy.js";
648
- export * from "./v4-runtime-ref-resume-authority.js";
649
- export * from "./v4-publication-qualification.js";
647
+ export * from "./floating-consumer-policy.js";
648
+ export * from "./runtime-ref-resume-authority.js";
649
+ export * from "./publication-qualification.js";
650
650
 
651
651
  export {
652
652
  RELEASE_ACTIVATION_CONTRACT,
@@ -698,8 +698,4 @@ export {
698
698
  writePaperScaffold,
699
699
  } from "./paper.js"; export * from "./paper-work.js"; export * from "./paper-fleet.js";
700
700
 
701
- export {
702
- SURFACE_TIMESTAMP_POLICY_CONTRACT,
703
- applySurfaceTimestampPolicy,
704
- createSurfaceTimestampPolicy,
705
- } from "./surface-manifest.js";
701
+ export * from "./public-export-compatibility.js";