@kungfu-tech/buildchain 4.0.2 → 4.0.3-alpha.0

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
@@ -0,0 +1,173 @@
1
+ ---
2
+ status: draft
3
+ period: ongoing
4
+ theme: oci-publication
5
+ doc_type: technical-reference
6
+ source_level: local-files
7
+ confidence: high
8
+ sensitivity: public
9
+ evidence_grade: B
10
+ review_state: unreviewed
11
+ last_reviewed: 2026-09-07
12
+ ai_provenance:
13
+ model_family: GPT-6
14
+ product: Codex
15
+ generated_at: 2026-09-06
16
+ invisible_context_boundary: No credentials or production registry state inspected.
17
+ ---
18
+
19
+ # OCI image family publication
20
+
21
+ Compose preview uses the workflow's scoped `packages: write` token for GHCR
22
+ requests. The separate `BUILDCHAIN_PROMOTION_TOKEN` serves GitHub governance
23
+ and receipt publication; it is never a fallback registry credential. Missing
24
+ registry identity fails before a write, and an unsuccessful registry response
25
+ reports only its HTTP status while retaining the exact qualification for recovery.
26
+
27
+ Buildchain v4 can publish a sealed family of container images to GHCR through
28
+ `publish-artifact-kind: oci` on the public release candidate promotion workflow.
29
+ The candidate build produces the image bytes and smoke evidence. The built-in
30
+ provider verifies and uploads those bytes, reads back every public image digest,
31
+ then allows release references and GitHub Release evidence to converge.
32
+
33
+ ## Candidate contract
34
+
35
+ Publish exactly one `oci-family.json` alongside OCI layouts and smoke JSON files
36
+ in the Build artifact. Import `sealOciPublicationBundle` from
37
+ `@kungfu-tech/buildchain/oci-publication` to validate and seal the family. Its
38
+ `body` contains:
39
+
40
+ - `schema: kungfu-buildchain-oci-family/v1`, consumer `repository`, exact Git
41
+ `sourceSha`, and candidate package `version`.
42
+ - `expectedImages`: the complete set of image names.
43
+ - `images`: one entry for each expected image, with `name`, `repository`,
44
+ `digest`, `layout`, `platform`, `action`, `content`, and `smoke`.
45
+
46
+ Destinations must be `ghcr.io/<consumer-owner>/<consumer-repo>/<image-name>`.
47
+ `layout` is a relative OCI layout directory. Each image is a single Linux
48
+ amd64 or arm64 manifest; OCI and Docker schema 2 manifests are supported.
49
+ Layouts may share blobs and an index; each shared index entry identifies its
50
+ image with the `org.opencontainers.image.ref.name` annotation.
51
+
52
+ `content` records the image's original `sourceSha` and `version`, matching its
53
+ OCI revision/version labels. For `action: built`, both equal the candidate.
54
+ For `action: reused`, they retain the original content provenance while the
55
+ family binds the current candidate. `smoke` records a relative `path` and SHA256
56
+ `sha256`; its JSON must identify the image and record `passed: true`. The
57
+ consumer owns the actual smoke command and must fail the build if it fails.
58
+
59
+ Sealing verifies all config/layer sizes and digests, platform and provenance
60
+ labels, smoke bytes, and family completeness. Absolute paths, traversal, and
61
+ symlinks are rejected. The resolver derives the exact required image artifacts
62
+ from this sealed family, including when recovering a previous candidate run.
63
+
64
+ ## Authority and publication
65
+
66
+ The thin caller grants `packages: write` in addition to its existing promotion
67
+ permissions. Reusable promotion wrappers inherit that caller envelope; npm
68
+ consumers do not need to request package registry authority. The provider uses
69
+ the action token only for GHCR, scoped to each declared consumer image.
70
+ No consumer publish command is executed.
71
+
72
+ The rooted product plan declares version-state materialization, OCI family
73
+ publication, then release reference convergence. Each image uses the exact
74
+ `v<version>` tag. A different existing digest aborts publication; a matching
75
+ existing image is reused. After a partial failure, recovery validates the same
76
+ candidate bytes and publishes only missing images. GHCR does not provide tag
77
+ compare-and-swap: callers must serialize publishers for a version, and external
78
+ writers must not race the publication workflow.
79
+
80
+ Success requires anonymous readback of every declared image at its expected
81
+ digest. Existing GHCR packages must permit the repository token to write and
82
+ anonymous clients to pull. The provider does not change package visibility or
83
+ access policy. It attaches `oci-publication-readback.json` to the GitHub Release;
84
+ the caller should also include the family and smoke JSON files in
85
+ `github-release-payload-patterns`.
86
+
87
+ See [Runtime Train Validation](runtime-train-validation.md) for testing an
88
+ unreleased runtime without persisting a train or exact SHA in the workflow.
89
+
90
+ ## Multi-platform images and Compose applications
91
+
92
+ Use `schema: kungfu-buildchain-oci-family/v2` when the family includes an OCI
93
+ index or a Compose application. Existing v1 families keep their published
94
+ single-platform contract.
95
+
96
+ An index entry declares `platform: multi-platform` and the complete `platforms`
97
+ array, for example `["linux/amd64", "linux/arm64"]`. Every runnable child must
98
+ have matching platform and content labels. Descriptor sizes, digests and media
99
+ types are verified recursively; nested manifests are uploaded before their
100
+ parent index. BuildKit attestation manifests must identify a runnable child and
101
+ contain matching in-toto subjects. Missing platforms, duplicate platforms,
102
+ foreign URLs and broken blob references fail sealing. Embedded descriptor `data`
103
+ is accepted only as canonical Base64 for at most 1 MiB, with the declared size
104
+ and digest matching the required local blob byte for byte. Malformed or
105
+ inconsistent embedded content fails sealing; manifests are never rewritten.
106
+ This follows the [OCI embedded-content contract](https://github.com/opencontainers/image-spec/blob/main/descriptor.md#embedded-content).
107
+
108
+ A Compose entry declares `kind: compose`, `platform: compose`, and `targetImage`
109
+ pointing to an image in the same family. Its unique family name may differ from
110
+ that image, but its destination repository must match it. The immutable tag is
111
+ `compose-v<version>`; image entries retain `v<version>`.
112
+
113
+ The bounded Compose representation is an OCI 1.1 image manifest with
114
+ `artifactType: application/vnd.docker.compose.project`, an empty JSON config
115
+ and one `application/vnd.docker.compose.file+yaml` layer. That layer contains
116
+ JSON, a YAML subset, so structural verification needs no executable YAML loader.
117
+ Every service image is pinned to a digest and at least one uses the exact
118
+ family image. Environment interpolation inside other fields can remain intact.
119
+ These media types follow the [Docker Compose publisher](https://github.com/docker/compose/blob/v5.1.2/internal/oci/push.go).
120
+
121
+ Candidate smoke evidence describes its actual pre-publication checks. It must
122
+ not claim that an unpublished public Compose reference was installed. Public
123
+ installation qualification occurs after immutable publication and before a
124
+ preview alias moves.
125
+
126
+ ## Evidence-gated Compose preview
127
+
128
+ An optional Compose `preview` declaration contains exactly the supported alias
129
+ `compose-preview`, the previously accepted `previousDigest` (or `none`), and
130
+ `qualificationWorkflow`, a repository workflow path. The immutable family seals
131
+ this policy before any publication effect.
132
+
133
+ After v4 publication is complete, dispatch that qualification workflow on the
134
+ exact published alpha tag. It must pull the immutable public image and Compose,
135
+ run fresh installation, restart, account-isolation, runtime-hardening, upgrade
136
+ and rollback checks, and qualify both Linux architectures. The workflow has no
137
+ registry write authority. Upload one artifact named
138
+ `oci-compose-qualification-<run-id>-<run-attempt>` containing `qualification.json`
139
+ and its hash-bound JSON evidence files.
140
+
141
+ The receipt uses `schema: kungfu-buildchain-compose-qualification/v1` and binds
142
+ `repository`, `tag`, published `sourceSha`, sealed `familyRoot`, `runId`,
143
+ `runAttempt`, exact `image` and `application` repository/digest references,
144
+ `previousDigest`, and `passed: true`. Its `checks` object requires all of
145
+ `freshInstall`, `restartPersistence`, `upgradePersistence`, `rollbackPersistence`,
146
+ `accountIsolation`, and `hardenedRuntime` to be true. Its `platforms` object
147
+ requires `linux/amd64` and `linux/arm64` entries with `passed: true`; `evidence`
148
+ contains nonempty `{path, sha256}` bindings to the actual JSON results.
149
+
150
+ A thin consumer workflow listens to completion of that qualification workflow
151
+ and calls `public-release-oci-compose-preview.yml@v4-alpha`, passing
152
+ `BUILDCHAIN_PROMOTION_TOKEN`. The reusable workflow resolves its own exact
153
+ runtime, enforces the dual floating-channel locks, verifies the public v4
154
+ settlement, family and provider readback roots, and checks the live GitHub run's
155
+ repository, source, workflow, event, attempt and successful conclusion. It never
156
+ executes the consumer's artifact files. Only then does it copy the exact Compose
157
+ manifest bytes to the declared alias and verify the public digest.
158
+
159
+ The expected-old digest is checked immediately before mutation. An already
160
+ matching target is an idempotent success; any other drift blocks the move.
161
+ Publishers for this alias share repository-level concurrency. GHCR has no atomic
162
+ tag compare-and-swap, so external writers must also avoid racing this workflow.
163
+ The immutable release retains the appended
164
+ `buildchain-compose-preview-<run-id>-<run-attempt>.json` receipt. A failed
165
+ qualification leaves the existing preview intact, while the immutable alpha
166
+ and its original publication evidence remain available for diagnosis.
167
+
168
+ The verified publication Passport distinguishes the built candidate from the
169
+ protected publication commit. Compose family source identity follows
170
+ `source.builtSourceSha`; `source.builtSourceTreeSha` must equal the admitted
171
+ invocation tree. Registry readback and qualification runs remain bound to the
172
+ protected publication SHA. A tree-equivalent protected merge therefore retains
173
+ the original image identity without accepting a different source tree.
@@ -8,11 +8,11 @@ confidence: high
8
8
  sensitivity: public
9
9
  evidence_grade: A
10
10
  review_state: unreviewed
11
- last_reviewed: 2026-08-06
11
+ last_reviewed: 2026-09-06
12
12
  ai_provenance:
13
- model_family: GPT-5
13
+ model_family: GPT-6
14
14
  product: Codex
15
- generated_at: 2026-07-31
15
+ generated_at: 2026-09-06
16
16
  invisible_context: not asserted
17
17
  ---
18
18
 
@@ -113,6 +113,39 @@ a missing or different id fails before provider mutation. An absent transaction
113
113
  is created only when no expected existing identity was requested. See
114
114
  [Release Candidate: Resume from an existing candidate run](release-candidate.md#resume-from-an-existing-candidate-run).
115
115
 
116
+ ## V4 sealed npm package sets
117
+
118
+ The v4 alpha provider accepts a sealed set of 2–64 npm tarballs with one main
119
+ package and same-version platform packages. The candidate resolver records each
120
+ package's name, version, role, relative path, size, SHA-256, and npm integrity in
121
+ the candidate root. QUALIFY passes the set into the Rust/WASM publication
122
+ planner, which binds every package to its own operation and orders platform
123
+ packages by name before the main package. A single package retains the existing
124
+ operation identity.
125
+
126
+ Use `publish-package-main` to name the main package. The optional
127
+ `publish-package-set-order: platforms-first-main-last` input states the same
128
+ ordering. Omit legacy `publish-mode` and `publish-command` inputs: the v4 provider
129
+ publishes the sealed tarballs through npm trusted publishing. It does not run a
130
+ consumer publish command.
131
+
132
+ Before any provider effect, APPLY checks the complete package inventory,
133
+ tarball package identities, bytes, and integrity against the rooted intent.
134
+ Each package receives independent registry readback and a Release Tail receipt.
135
+ After an interrupted attempt, existing matching versions are observed without
136
+ republishing; conflicting integrity stops the transaction. Release refs follow
137
+ only after every package is confirmed.
138
+
139
+ Anchored alpha versions such as `22.22.3-kf.5-alpha.4` remain unchanged. For
140
+ `anchored/manual` repositories, successful publication leaves next development
141
+ in `waiting-anchor`; it does not invent the next upstream anchor. Multi-package
142
+ stable rematerialization is not supported by this provider and fails before
143
+ publication. The existing singleton stable flow remains available.
144
+
145
+ The contract is exercised by `product-publication-topology.test.mjs`,
146
+ `product-provider-adapters.test.mjs`, and
147
+ `alpha-next-development-provider.test.mjs` under `tests/`.
148
+
116
149
  ## Lifecycle
117
150
 
118
151
  Repositories declare publish work in `.buildchain/buildchain.toml`:
@@ -352,7 +352,7 @@ before writing the transaction state as `complete`.
352
352
 
353
353
  | Evidence | Meaning and reuse boundary |
354
354
  | --- | --- |
355
- | Full source execution | `pnpm run check` runs source tests, Rust gates, policy checks and generated artifact checks. Each Node test file runs once; the focused `check:v4-contracts` command still includes its 22 contract test files. |
355
+ | Full source execution | `pnpm run check` runs source tests, Rust gates, policy checks and generated artifact checks. Each Node test file runs once; the focused `check:contracts` command still includes its 22 contract test files. |
356
356
  | Merge queue proof | A successful full merge-group run seals its exact source SHA/tree, workflow, check definition, WASM runtime, toolchain versions, dependency locks, hosted image and platform. The proof expires after six hours and is verified against the completed GitHub run attempt and artifact archive digest. |
357
357
  | Push reuse | A Dev push may reuse that exact full execution. Its summary links the original run and proof; it does not claim to have rerun tests. Missing, failed, expired, ambiguous, tampered or unavailable evidence executes the full check. |
358
358
  | Version-state projection | Requires an authenticated full-source proof for the exact base and an ancestor-bound delta containing only declared version files and derived material. The base generator reconstructs every tracked byte, including derived digests. Any source, workflow, lock, configuration, file-mode or unexplained output change executes the full check. Projection results cannot issue a new full-source proof. |
@@ -128,7 +128,7 @@ in the final Release Passport. See
128
128
  [`v4-runtime-ref-resume-authority.md`](v4-runtime-ref-resume-authority.md).
129
129
 
130
130
  See the normative
131
- [`v4 floating consumer policy`](../architecture/v4-floating-consumer-policy.md)
131
+ [`v4 floating consumer policy`](../architecture/floating-consumer-policy.md)
132
132
  and its machine declaration for the exact acceptance boundary. This policy does
133
133
  not change v3 behavior.
134
134
 
@@ -33,7 +33,7 @@ minimal v4 absorption base
33
33
  verified protected-base advances through
34
34
  `dev/v4/v4.0@e0342713c7447960c13bd73377282b2e93f4853d` before delivery. These
35
35
  identities, the v3 vector-suite root, and the KFD package cut are committed in
36
- [`v4-adopter-delivery-parity.json`](../architecture/v4-adopter-delivery-parity.json)
36
+ [`adopter-delivery-parity.json`](../architecture/adopter-delivery-parity.json)
37
37
  and exposed by the public Node API.
38
38
 
39
39
  ## Public contract
@@ -139,7 +139,7 @@ terminal verification and N-1 bootstrap must pass, and the independent
139
139
  The workflow then reconciles one exact report from each platform. Final family
140
140
  qualification combines the Buildchain self-dogfood and `agent-hub-demo`
141
141
  matrices through the exported
142
- `@kungfu-tech/buildchain/v4-cross-platform-adopter-qualification` aggregator.
142
+ `@kungfu-tech/buildchain/cross-platform-adopter-qualification` aggregator.
143
143
  The report and aggregate explicitly grant no production, provider, release, or
144
144
  stable-publication authority.
145
145
 
@@ -41,21 +41,21 @@ Event, receipt, and typed-fault objects use closed versioned shapes in [`contrac
41
41
 
42
42
  ## Implementations and proof
43
43
 
44
- - JavaScript: [`packages/core/v4-canonical-contracts.js`](../packages/core/v4-canonical-contracts.js)
45
- - Rust: [`crates/buildchain-v4-contracts`](../crates/buildchain-v4-contracts)
46
- - Shared golden and adversarial cases: [`architecture/v4-canonical-contract-fixtures.json`](../architecture/v4-canonical-contract-fixtures.json)
44
+ - JavaScript: [`packages/core/canonical-contracts.js`](../packages/core/canonical-contracts.js)
45
+ - Rust: [`crates/buildchain-domain-contracts`](../crates/buildchain-domain-contracts)
46
+ - Shared golden and adversarial cases: [`architecture/canonical-contract-fixtures.json`](../architecture/canonical-contract-fixtures.json)
47
47
 
48
48
  Run the focused proof with:
49
49
 
50
50
  ```sh
51
- pnpm run check:v4-contracts
51
+ pnpm run check:contracts
52
52
  ```
53
53
 
54
54
  The check validates both implementations, compares exact UTF-8 bytes and SHA-256 roots, exercises invalid numbers, keys, clocks, domains, and envelope shapes, and scans the pure libraries for ambient clock or provider imports. Delivery Warrant decide/fold, shadow invocation, provider effects, and production authority remain outside this contract slice.
55
55
 
56
56
  ## Shared Delivery Warrant fixture runner
57
57
 
58
- The versioned trace contract in [`contracts/v4-delivery-warrant-trace-v1.schema.json`](../contracts/v4-delivery-warrant-trace-v1.schema.json) is the language-neutral boundary for retained Delivery Warrant fixtures. The JavaScript runner in [`packages/core/v4-delivery-warrant-fixture-runner.js`](../packages/core/v4-delivery-warrant-fixture-runner.js) and the Rust runner in [`crates/buildchain-v4-contracts`](../crates/buildchain-v4-contracts) consume the same UTF-8 fixture bytes and emit the same deterministic semantic projection.
58
+ The versioned trace contract in [`contracts/v4-delivery-warrant-trace-v1.schema.json`](../contracts/v4-delivery-warrant-trace-v1.schema.json) is the language-neutral boundary for retained Delivery Warrant fixtures. The JavaScript runner in [`packages/core/delivery-warrant-fixture-runner.js`](../packages/core/delivery-warrant-fixture-runner.js) and the Rust runner in [`crates/buildchain-domain-contracts`](../crates/buildchain-domain-contracts) consume the same UTF-8 fixture bytes and emit the same deterministic semantic projection.
59
59
 
60
60
  Each trace is closed and ordered. It binds the exact prior root, event, action or typed fault, canonical successor bytes and root, generation, fencing counter, ordered declarative effects, provider-neutral observations, and rooted receipt. The runner verifies the full root chain before returning a projection. Malformed JSON, missing or unknown fields, reordered sequences, stale roots, and unsupported contract versions fail closed.
61
61
 
@@ -68,13 +68,13 @@ The runner is not a state-machine implementation and does not sample time, execu
68
68
 
69
69
  ## TypeScript shadow adapter
70
70
 
71
- The adapter in [`packages/core/v4-delivery-warrant-shadow-adapter.js`](../packages/core/v4-delivery-warrant-shadow-adapter.js) runs the existing TypeScript v3 fixture projection first and preserves that exact result as the only authoritative output. When explicitly enabled, it sends the same canonical input bytes to the replaceable Rust host command, requires the effect-disabled host capability, and captures the returned semantic projection only as a non-authoritative observation. Rust never receives effect authority, and success, failure, timeout, cancellation, malformed output, or an unsupported host cannot change the v3 result.
71
+ The adapter in [`packages/core/delivery-warrant-shadow-adapter.js`](../packages/core/delivery-warrant-shadow-adapter.js) runs the existing TypeScript v3 fixture projection first and preserves that exact result as the only authoritative output. When explicitly enabled, it sends the same canonical input bytes to the replaceable Rust host command, requires the effect-disabled host capability, and captures the returned semantic projection only as a non-authoritative observation. Rust never receives effect authority, and success, failure, timeout, cancellation, malformed output, or an unsupported host cannot change the v3 result.
72
72
 
73
73
  Shadow retention accepts only checked-in fixtures or captured replays explicitly marked public-safe. Each returned observation binds the input root, exact TypeScript and Rust source revisions, validator version, capture time, fixed retention deadline, both projections, and sanitized diagnostics. It contains no comparison verdict or cutover signal. The adapter is disabled unless the caller opts in or sets `BUILDCHAIN_V4_WARRANT_SHADOW=enabled`; even then, invalid source bindings or an unsafe retention class skip Rust invocation.
74
74
 
75
75
  ## Pure Rust Delivery Warrant domain
76
76
 
77
- The `warrant` module in [`crates/buildchain-v4-contracts`](../crates/buildchain-v4-contracts) implements the protected Delivery Warrant manifest as provider-free typed state, seven event decisions, and a separate fold. It freezes all nine candidate states and all nine primitives from the shadow bootstrap plan. Every decision binds the event's exact `subjectRoot`, takes time only from the validated event envelope, and returns a typed action or fault. Fold produces a canonical successor; the combined transition produces only ordered `persist-successor` and `request-admission` intents plus a rooted receipt. It never executes either intent.
77
+ The `warrant` module in [`crates/buildchain-domain-contracts`](../crates/buildchain-domain-contracts) implements the protected Delivery Warrant manifest as provider-free typed state, seven event decisions, and a separate fold. It freezes all nine candidate states and all nine primitives from the shadow bootstrap plan. Every decision binds the event's exact `subjectRoot`, takes time only from the validated event envelope, and returns a typed action or fault. Fold produces a canonical successor; the combined transition produces only ordered `persist-successor` and `request-admission` intents plus a rooted receipt. It never executes either intent.
78
78
 
79
79
  Duplicate submission deliberately retains the legacy generation/root mutation for shadow comparability. Manifest aliases remain explicit, waiting and blocked remain valid states without invented public transitions, and response-loss reconciliation is symmetric for every declarative effect. Stale expected-old roots and fences, lease expiry, terminal duplicates, cancellation, response loss, provider conflict, and retry exhaustion are closed typed outcomes. The retry policy permits at most one reread/redecision and then stops.
80
80
 
@@ -52,7 +52,7 @@ buildchain dev warrant observe \
52
52
  --read-typescript-revision <sha> \
53
53
  --read-rust-revision <sha> \
54
54
  --read-validator-version semantic-diff-gate-v1 \
55
- --read-evidence-output .buildchain/dev-delivery/v4-read-evidence.json
55
+ --read-evidence-output .buildchain/dev-delivery/read-evidence.json
56
56
  ```
57
57
 
58
58
  The returned command result keeps the existing v3 observation schema for
@@ -64,8 +64,8 @@ root, and the retained evidence receipt root.
64
64
  Focused verification:
65
65
 
66
66
  ```sh
67
- node --test tests/v4-delivery-warrant-read-candidate.test.mjs
68
- pnpm run check:v4-contracts
67
+ node --test tests/delivery-warrant-read-candidate.test.mjs
68
+ pnpm run check:contracts
69
69
  ```
70
70
 
71
71
  This candidate does not authorize a v4 write cutover. Protected-window parity,
@@ -50,7 +50,7 @@ provider effects, modify v3 authority, or provide a v4 write cutover receipt.
50
50
 
51
51
  ## Run the gate
52
52
 
53
- Call `runV4DeliveryWarrantSemanticDiffGate` with exact source revisions,
53
+ Call `runDeliveryWarrantSemanticDiffGate` with exact source revisions,
54
54
  explicit observation time, schema and runner roots, public-safe retained cases,
55
55
  bounded fault probes, an observation retention sink, and a report retention
56
56
  sink. The returned report is canonical JSON data suitable for a caller-owned
@@ -59,7 +59,7 @@ retained evidence file.
59
59
  The checked-in focused suite exercises that API against the real Rust host:
60
60
 
61
61
  ```sh
62
- node --test tests/v4-delivery-warrant-fixture-runner.test.mjs
62
+ node --test tests/delivery-warrant-fixture-runner.test.mjs
63
63
  ```
64
64
 
65
65
  A qualified report makes only the next
@@ -71,5 +71,5 @@ documented in
71
71
  Focused verification:
72
72
 
73
73
  ```sh
74
- pnpm run check:v4-contracts
74
+ pnpm run check:contracts
75
75
  ```
@@ -8,11 +8,11 @@ confidence: high
8
8
  sensitivity: public
9
9
  evidence_grade: A
10
10
  review_state: unreviewed
11
- last_reviewed: 2026-09-05
11
+ last_reviewed: 2026-09-07
12
12
  ai_provenance:
13
13
  model_family: GPT-6
14
14
  product: Codex
15
- generated_at: 2026-09-05
15
+ generated_at: 2026-09-07
16
16
  invisible_context: Provider credentials and private provider state were not read.
17
17
  ---
18
18
 
@@ -30,6 +30,12 @@ for stable, with matching stable and alpha contract locks. Exact commits and
30
30
  immutable release tags identify retained evidence and explicitly admitted runtime
31
31
  inputs; tracked v4 reusable-workflow selectors remain `@v4` or `@v4-alpha`.
32
32
 
33
+ Before qualifying a new release, run `node scripts/check-universal-workflow-bootstrap.mjs`.
34
+ The required repository check rejects an expired or not-yet-valid candidate admission
35
+ policy before publication. Renew the bounded validity window through protected review;
36
+ keep its capability, permission, reviewer and exact-source requirements unchanged.
37
+ Historical publication receipts remain immutable when a later admission window expires.
38
+
33
39
  The release transaction is fail-closed. The v4 provider-operation journal,
34
40
  activation plan, stable publication fence, and partial-mutation recovery plan
35
41
  bind the exact source, qualification, policy, provider readback, protected
@@ -27,7 +27,7 @@ release candidate and asks the production release-tail planner and executor to
27
27
  simulate, replay, or observe provider-facing publication behavior.
28
28
 
29
29
  The rooted parity matrix is
30
- [`architecture/v4-publication-rehearsal-parity.json`](../architecture/v4-publication-rehearsal-parity.json),
30
+ [`architecture/publication-rehearsal-parity.json`](../architecture/publication-rehearsal-parity.json),
31
31
  and the public schema is
32
32
  [`v4-publication-rehearsal-capsule-v1.schema.json`](../contracts/v4-publication-rehearsal-capsule-v1.schema.json).
33
33
 
@@ -125,6 +125,6 @@ records Linux, macOS and Windows projections. Their capsule, transaction,
125
125
  state, and evidence roots are byte-identical. Regenerate or verify them with:
126
126
 
127
127
  ```sh
128
- node scripts/v4-publication-rehearsal-fixture.mjs
129
- node scripts/v4-publication-rehearsal-fixture.mjs --check
128
+ node scripts/publication-rehearsal-fixture.mjs
129
+ node scripts/publication-rehearsal-fixture.mjs --check
130
130
  ```
@@ -60,9 +60,9 @@ construction and verification.
60
60
 
61
61
  Normative files:
62
62
 
63
- - `architecture/v4-runtime-ref-resume-authority.json`
63
+ - `architecture/runtime-ref-resume-authority.json`
64
64
  - `contracts/v4-runtime-ref-resume-authority-v1.schema.json`
65
- - `packages/core/v4-runtime-ref-resume-authority.js`
65
+ - `packages/core/runtime-ref-resume-authority.js`
66
66
  - `scripts/authorize-promotion-runtime-override.cjs`
67
67
 
68
68
  This contract changes no v3 behavior, grants no provider mutation authority,
@@ -19,16 +19,16 @@ ai_provenance:
19
19
  # Buildchain v4 Rust/WASM production authority
20
20
 
21
21
  Buildchain v4 的确定性发布语义由
22
- `crates/buildchain-v4-contracts` 编译出的同一份 WebAssembly artifact 执行。Node
22
+ `crates/buildchain-domain-contracts` 编译出的同一份 WebAssembly artifact 执行。Node
23
23
  仍是 GitHub Action 和 npm 包的宿主,但只负责 provider SDK、文件系统、凭据、环境变量及
24
24
  workflow 输入输出等副作用边界。权威契约见
25
- `architecture/v4-rust-wasm-production-authority.json`。
25
+ `architecture/rust-wasm-production-authority.json`。
26
26
 
27
27
  ## 分发与调用
28
28
 
29
- `packages/core/buildchain-v4-domain.wasm` 与 JavaScript 一起提交和发布。三个生产 Action
29
+ `packages/core/buildchain-domain.wasm` 与 JavaScript 一起提交和发布。三个生产 Action
30
30
  在构建时把完全相同的字节复制到各自 `dist/`;运行时不进入调用方仓库寻找 Rust
31
- 源码,也不要求安装 Rust。`packages/core/v4-domain-wasm.js` 从自身相邻路径同步读取
31
+ 源码,也不要求安装 Rust。`packages/core/domain-wasm.js` 从自身相邻路径同步读取
32
32
  artifact,先核验生成元数据中的 SHA-256,再实例化 WebAssembly 并通过封闭 JSON/bytes
33
33
  ABI 调用领域操作。
34
34
 
@@ -38,9 +38,9 @@ ABI 调用领域操作。
38
38
 
39
39
  ## 构建和审计
40
40
 
41
- `pnpm run build:v4-wasm` 使用锁定的 Rust 工具链和 `wasm32-unknown-unknown` target 生成
41
+ `pnpm run build:wasm` 使用锁定的 Rust 工具链和 `wasm32-unknown-unknown` target 生成
42
42
  artifact 与绑定元数据,并把 Cargo 依赖源目录映射到稳定的虚拟路径,禁止主机 Cargo
43
- registry 路径进入 artifact。`pnpm run check:v4-wasm` 在干净临时 target 目录重新构建并逐字节
43
+ registry 路径进入 artifact。`pnpm run check:wasm` 在干净临时 target 目录重新构建并逐字节
44
44
  比较已跟踪 artifact。这个检查不是生产运行时的重复编译:生产只加载已提交字节;检查
45
45
  用于证明这些字节仍能由当前 Rust 真相源和锁定工具链唯一导出,从而阻止源码、二进制或
46
46
  生成元数据静默漂移。
@@ -20,7 +20,7 @@ ai_provenance:
20
20
 
21
21
  ## Platform checkpoint projection
22
22
 
23
- `architecture/v4-platform-stage-checkpoints.json` is the single declaration
23
+ `architecture/platform-stage-checkpoints.json` is the single declaration
24
24
  for the macOS arm64, Linux x64, and Windows x64 shadow checkpoint lanes. It
25
25
  defines the allowed platform/stage pairs and the exact declared inputs,
26
26
  outputs, environment names, toolchains, and portable restore paths.
@@ -100,19 +100,19 @@ GitHub Artifact and S3-compatible adapters expose only `effect-disabled` and
100
100
  `fixture-backed` modes in this slice. They accept rooted locators, never raw
101
101
  credentials or signed URLs, and cannot perform a provider upload or restore.
102
102
  The executable architecture ceiling is
103
- [`v4-stage-capsule-store-contract.json`](../architecture/v4-stage-capsule-store-contract.json),
103
+ [`stage-capsule-store-contract.json`](../architecture/stage-capsule-store-contract.json),
104
104
  and the shared Rust/JavaScript fixture is
105
105
  [`shared.json`](../contracts/fixtures/v4-stage-capsule-store-v1/shared.json).
106
106
 
107
107
  Focused verification:
108
108
 
109
109
  ```sh
110
- pnpm run check:v4-contracts
110
+ pnpm run check:contracts
111
111
  ```
112
112
 
113
113
  ## Deterministic resume planning
114
114
 
115
- `architecture/v4-stage-capsule-resume-planner.json` closes the Wave 2 resume
115
+ `architecture/stage-capsule-resume-planner.json` closes the Wave 2 resume
116
116
  planner. Its request is an explicit topological stage graph with targets,
117
117
  expected Capsule identity and retention, current Capsule/availability
118
118
  observations, an evaluation clock, and separately declared provider or
@@ -133,7 +133,7 @@ shadow-only: it does not skip a v3 production stage or move v3 authority.
133
133
 
134
134
  ## Three-platform qualification and Wave reconciliation
135
135
 
136
- `architecture/v4-stage-capsule-qualification.json` closes the Wave 2
136
+ `architecture/stage-capsule-qualification.json` closes the Wave 2
137
137
  qualification boundary. Buildchain and external repositories use the same
138
138
  Buildchain-owned public reusable workflow,
139
139
  `.github/workflows/public-build-stage-capsule-canary.yml`. Buildchain's caller is the thin
@@ -182,12 +182,12 @@ authorized by this qualification.
182
182
  Focused local rehearsal:
183
183
 
184
184
  ```sh
185
- node scripts/v4-stage-capsule-qualification.mjs campaign \
185
+ node scripts/stage-capsule-qualification.mjs campaign \
186
186
  --work-root /tmp/buildchain-v4-stage-qualification \
187
187
  --platform linux-x64 \
188
188
  --consumer buildchain \
189
189
  --runtime-ref <exact-buildchain-commit> \
190
190
  --consumer-source-revision <exact-consumer-commit> \
191
191
  --consumer-root . \
192
- --lifecycle-evidence-root .buildchain/artifacts/v4-stage-capsule-canary
192
+ --lifecycle-evidence-root .buildchain/artifacts/stage-capsule-canary
193
193
  ```
@@ -70,4 +70,4 @@ and archive digest; no credential or provider effect is replayed from a Stage
70
70
  Capsule.
71
71
 
72
72
  The v3-to-v4 invariant mapping is recorded in
73
- [`architecture/v4-tail-reseal-parity.json`](../architecture/v4-tail-reseal-parity.json).
73
+ [`architecture/tail-reseal-parity.json`](../architecture/tail-reseal-parity.json).
@@ -90,6 +90,7 @@ all related declarations. Run `pnpm run generate:workflows` and
90
90
  | [public-ops-warrant-cancel.yml](../.github/workflows/public-ops-warrant-cancel.yml) | ops | reusable | active | Dev Delivery Warrant Queued Candidate Cancel | `dev-delivery-warrant-cancel.yml` |
91
91
  | [public-ops-warrant-close.yml](../.github/workflows/public-ops-warrant-close.yml) | ops | reusable | active | Dev Delivery Warrant Close | `dev-delivery-warrant-close.yml` |
92
92
  | [public-release-artifact-attestation.yml](../.github/workflows/public-release-artifact-attestation.yml) | release | reusable | active | Buildchain GitHub Artifact Attestation | `github-artifact-attestation.yml` |
93
+ | [public-release-oci-compose-preview.yml](../.github/workflows/public-release-oci-compose-preview.yml) | release | reusable | active | Buildchain OCI Compose Preview | — |
93
94
  | [public-release-paper-sealed.yml](../.github/workflows/public-release-paper-sealed.yml) | release | reusable | active | Buildchain Sealed Paper Release | `paper-release-sealed.yml` |
94
95
  | [public-release-paper.yml](../.github/workflows/public-release-paper.yml) | release | reusable | active | Buildchain Paper Release | `paper-release.yml` |
95
96
  | [public-release-promote.yml](../.github/workflows/public-release-promote.yml) | release | reusable | active | Release Candidate Promote | `release-candidate-promote.yml` |