@kungfu-tech/buildchain 4.0.2-alpha.4 → 4.0.2-alpha.40

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 (153) hide show
  1. package/AGENTS.md +10 -1
  2. package/CONTRIBUTING.md +24 -0
  3. package/README.md +2 -2
  4. package/actions/promote-buildchain-ref/README.md +1 -1
  5. package/actions/v4-release-candidate-promote/README.md +28 -0
  6. package/architecture/agent-change-map.md +66 -7
  7. package/architecture/ci-lane-change-budget.json +366 -0
  8. package/architecture/internal-capabilities.json +52 -8
  9. package/architecture/maintainability-debt.json +148 -92
  10. package/architecture/maintainability-policy.json +34 -30
  11. package/architecture/release-tail-contract-inventory.json +6 -6
  12. package/architecture/v4-architecture-constitution.md +23 -20
  13. package/architecture/v4-cross-platform-adopter-qualification.json +1 -1
  14. package/architecture/v4-delivery-authority-parity.json +2 -2
  15. package/architecture/v4-delivery-warrant-shadow-bootstrap-plan.json +1 -1
  16. package/architecture/v4-floating-consumer-policy.json +2 -2
  17. package/architecture/v4-next-development-parity.json +5 -5
  18. package/architecture/v4-partial-mutation-recovery-qualification.json +4 -1
  19. package/architecture/v4-platform-stage-checkpoints.json +1 -1
  20. package/architecture/v4-provider-operation-journal-contract.json +5 -2
  21. package/architecture/v4-publication-facade-patches.json +53 -0
  22. package/architecture/v4-release-activation-shadow-domain.json +5 -2
  23. package/architecture/v4-release-topology.json +143 -35
  24. package/architecture/v4-rust-wasm-production-authority.json +58 -0
  25. package/architecture/v4-stable-publication-fence.json +5 -2
  26. package/architecture/v4-stage-capsule-qualification.json +2 -2
  27. package/architecture/v4-tail-reseal-parity.json +8 -6
  28. package/architecture/v4-universal-workflow-bootstrap.json +171 -0
  29. package/architecture/v4-universal-workflow-fault-campaign.json +72 -0
  30. package/architecture/v4-universal-workflow-train-admission.json +40 -0
  31. package/architecture/workflow-taxonomy.json +1451 -0
  32. package/bin/buildchain.mjs +7 -7
  33. package/contracts/buildchain-v2-residuals-v1.json +57 -48
  34. package/contracts/dev-delivery-authority-v2.schema.json +16 -2
  35. package/contracts/fixtures/v4-tail-reseal-v1/valid.json +1 -1
  36. package/contracts/v4-canonical-contracts-v1.schema.json +1 -0
  37. package/dist/site/buildchain-contract.json +93 -48
  38. package/dist/site/buildchain-site.json +222 -69
  39. package/dist/site/capability-registry.json +4 -4
  40. package/dist/site/controller-registry.json +50 -13
  41. package/dist/site/kfd-claims.json +2569 -982
  42. package/dist/site/kfd-upstream-aggregate.json +1 -1
  43. package/dist/site/manual-registry.json +13 -13
  44. package/dist/site/node-api-registry.json +88 -83
  45. package/dist/site/page-registry.json +204 -51
  46. package/dist/site/public-surface-audit.json +3207 -1219
  47. package/dist/site/publication-authority-registry.json +1124 -362
  48. package/dist/site/publication-registry.json +4 -4
  49. package/dist/site/schemas/dev-delivery-authority-v2.schema.json +16 -2
  50. package/dist/site/site-manifest.json +17 -17
  51. package/dist/site/workflow-registry.json +5063 -1659
  52. package/docs/MAP.md +1 -0
  53. package/docs/auditable-demo.md +1 -1
  54. package/docs/cli.md +3 -3
  55. package/docs/dev-delivery-warrant.md +1 -1
  56. package/docs/engineering-housekeeper.md +3 -3
  57. package/docs/kfd-support.md +26 -2
  58. package/docs/next-development-transition.md +2 -2
  59. package/docs/node-api-reference.md +129 -129
  60. package/docs/publication-authority.md +2 -2
  61. package/docs/release-candidate.md +3 -3
  62. package/docs/release-flow.md +67 -19
  63. package/docs/release-governance.md +8 -8
  64. package/docs/release-passport.md +27 -2
  65. package/docs/reusable-build-surface.md +16 -0
  66. package/docs/v4-adopter-delivery.md +2 -2
  67. package/docs/v4-production-release.md +71 -8
  68. package/docs/v4-rust-wasm-production-authority.md +58 -0
  69. package/docs/v4-stage-capsule.md +2 -2
  70. package/docs/v4-tail-reseal.md +1 -1
  71. package/docs/workflow-catalog.md +154 -0
  72. package/docs/workflow-path-migration.md +109 -0
  73. package/package.json +10 -6
  74. package/packages/core/artifact-verification-envelope.js +5 -5
  75. package/packages/core/buildchain-contract.js +1 -1
  76. package/packages/core/buildchain-kfd-claims.js +2 -2
  77. package/packages/core/buildchain-publication-authority.js +42 -26
  78. package/packages/core/buildchain-v4-domain.wasm +0 -0
  79. package/packages/core/ci-lane-change-budget.js +14 -1
  80. package/packages/core/controller-evidence.js +4 -1
  81. package/packages/core/dev-delivery-candidate-identity.js +40 -6
  82. package/packages/core/dev-delivery-warrant-state.js +3 -4
  83. package/packages/core/dev-delivery-warrant.js +12 -2
  84. package/packages/core/github-governance-authority.js +4 -4
  85. package/packages/core/kfd-adopter-manifest.js +46 -47
  86. package/packages/core/next-development-projection.js +2 -2
  87. package/packages/core/release-line-dry-run.js +1 -1
  88. package/packages/core/release-passport-contract.js +5 -5
  89. package/packages/core/release-passport.js +5 -4
  90. package/packages/core/release-tail-product-capabilities.js +29 -0
  91. package/packages/core/release-tail-provider-plane.js +68 -1048
  92. package/packages/core/v4-canonical-contracts.js +14 -75
  93. package/packages/core/v4-domain-wasm-artifact.js +7 -0
  94. package/packages/core/v4-domain-wasm.js +216 -0
  95. package/packages/core/v4-floating-consumer-evidence.js +1 -1
  96. package/packages/core/v4-floating-consumer-policy.js +1 -1
  97. package/packages/core/v4-partial-mutation-recovery-qualification.js +9 -386
  98. package/packages/core/v4-product-publication.js +57 -0
  99. package/packages/core/v4-protected-publication-source.js +19 -21
  100. package/packages/core/v4-provider-operation-journal.js +18 -487
  101. package/packages/core/v4-provider-readback-idempotency.js +12 -97
  102. package/packages/core/v4-release-activation-shadow.js +13 -500
  103. package/packages/core/v4-release-invocation.js +28 -389
  104. package/packages/core/v4-stable-publication-fence.js +13 -342
  105. package/packages/core/v4-universal-workflow-bootstrap.js +586 -0
  106. package/scripts/binary-publication-evidence.mjs +135 -0
  107. package/scripts/build-contract-core.mjs +1 -14
  108. package/scripts/build-v4-domain-wasm.mjs +189 -0
  109. package/scripts/check-action-bundles.mjs +12 -2
  110. package/scripts/check-ci-lane-change-budget.mjs +4 -1
  111. package/scripts/check-core-mechanism-inventory.mjs +4 -3
  112. package/scripts/check-inventory.mjs +35 -44
  113. package/scripts/check-maintainability.mjs +16 -113
  114. package/scripts/check-v4-floating-consumer-policy-contract.mjs +2 -2
  115. package/scripts/check-v4-public-dogfood-contract.mjs +22 -9
  116. package/scripts/check-v4-release-topology.mjs +214 -50
  117. package/scripts/check-v4-runtime-semantic-closure.mjs +4 -1
  118. package/scripts/check-v4-universal-workflow-bootstrap.mjs +266 -0
  119. package/scripts/check-workflow-taxonomy.mjs +6 -0
  120. package/scripts/copy-v4-domain-wasm.mjs +14 -0
  121. package/scripts/dev-delivery-authority-command-adapters.mjs +1 -1
  122. package/scripts/dev-delivery-authority.mjs +8 -8
  123. package/scripts/dev-delivery-source-proof-reuse.mjs +2 -1
  124. package/scripts/dev-delivery-warrant-options.mjs +14 -9
  125. package/scripts/dev-delivery-warrant-store.mjs +73 -7
  126. package/scripts/dev-delivery-warrant-transition.mjs +109 -0
  127. package/scripts/dev-delivery-warrant.mjs +76 -99
  128. package/scripts/dev-pr-auto-merge.mjs +15 -15
  129. package/scripts/generate-channel-build-workflow.mjs +7 -2
  130. package/scripts/generate-channel-promotion-workflow.mjs +7 -5
  131. package/scripts/generate-site-bundle.mjs +11 -11
  132. package/scripts/generate-v4-universal-workflow-facades.mjs +458 -0
  133. package/scripts/generate-workflow-taxonomy.mjs +25 -0
  134. package/scripts/github-output.mjs +31 -0
  135. package/scripts/maintainability-metrics.mjs +16 -5
  136. package/scripts/maintainability-public-surface.mjs +115 -0
  137. package/scripts/next-development-review.mjs +307 -0
  138. package/scripts/release-asset-client.mjs +91 -0
  139. package/scripts/release-candidate-resolver.mjs +17 -18
  140. package/scripts/resume-from-candidate-run.mjs +1 -1
  141. package/scripts/source-verification-evidence.mjs +344 -0
  142. package/scripts/stable-candidate-qualification.mjs +1 -1
  143. package/scripts/universal-facade-maintainability.mjs +82 -0
  144. package/scripts/v4-product-publication-intent.mjs +121 -0
  145. package/scripts/v4-publication-settlement.mjs +211 -0
  146. package/scripts/v4-universal-workflow-backflow.mjs +212 -0
  147. package/scripts/v4-universal-workflow-engine.mjs +618 -0
  148. package/scripts/v4-universal-workflow-self-dogfood.mjs +205 -0
  149. package/scripts/verify-version-state-delta.mjs +173 -0
  150. package/scripts/workflow-taxonomy.mjs +507 -0
  151. package/templates/native-dev-delivery.yml +4 -7
  152. package/templates/universal-buildchain-bootstrap-recovery.yml +282 -0
  153. package/templates/universal-buildchain-bootstrap.yml +28 -0
@@ -427,7 +427,7 @@
427
427
  "repository": "kungfu-systems/buildchain",
428
428
  "sourceCommit": "7c8956e8babb521d3e743d40108f115a59a40427",
429
429
  "sourceTree": "7e24ca6bafe98b571d94c3bcf07a9d38b31092c5",
430
- "workflow": ".github/workflows/buildchain-ref-promotion.yml",
430
+ "workflow": ".github/workflows/self-release-promote.yml",
431
431
  "runtimeRef": "local exact checkout",
432
432
  "executableSurfaceIds": []
433
433
  },
@@ -454,7 +454,7 @@
454
454
  "repository": "kungfu-systems/kungfu",
455
455
  "sourceCommit": "445ec32d6bf53dd5ff502d685792406ad38dd4f5",
456
456
  "sourceTree": "4963b2f9deb0245f7277cea7224ab0d062a0cc54",
457
- "workflow": ".github/workflows/release-new-version.yml",
457
+ "workflow": ".github/workflows/self-release-new-version-compat.yml",
458
458
  "runtimeRef": "train/v3/v3.0/resume-candidate-run",
459
459
  "executableSurfaceIds": [
460
460
  "publication-admission-commands",
@@ -470,7 +470,7 @@
470
470
  "repository": "kungfu-systems/libnode",
471
471
  "sourceCommit": "4bef69b88a441f22024fa9f3d7bfd76a89963e8a",
472
472
  "sourceTree": "6c4dec7fd70cbdcfbc9ada19e66271654eb393af",
473
- "workflow": ".github/workflows/release-new-version.yml",
473
+ "workflow": ".github/workflows/self-release-new-version-compat.yml",
474
474
  "runtimeRef": "v3-alpha",
475
475
  "executableSurfaceIds": ["release-passport-producer-commands"]
476
476
  },
@@ -479,7 +479,7 @@
479
479
  "repository": "kungfu-systems/kfd",
480
480
  "sourceCommit": "e82fe11acecdbebfd0c42778c7a1bd6fdc54ab81",
481
481
  "sourceTree": "fe0ad4f4b98889c7c246fe16958e118ff79b193b",
482
- "workflow": ".github/workflows/buildchain-ref-promotion.yml",
482
+ "workflow": ".github/workflows/self-release-promote.yml",
483
483
  "runtimeRef": "v3-alpha",
484
484
  "executableSurfaceIds": []
485
485
  },
@@ -488,7 +488,7 @@
488
488
  "repository": "kungfu-systems/paper-kungfu-product-white-paper",
489
489
  "sourceCommit": "82dd748d6b0edf18d0074262cc8d8ac803e45c7e",
490
490
  "sourceTree": "a918f8840608931fdf88d007e20bc4f70ab7eb54",
491
- "workflow": ".github/workflows/buildchain-ref-promotion.yml",
491
+ "workflow": ".github/workflows/self-release-promote.yml",
492
492
  "runtimeRef": "v3",
493
493
  "executableSurfaceIds": []
494
494
  }
@@ -497,7 +497,7 @@
497
497
  {
498
498
  "repository": "kungfu-systems/agent-hub-demo",
499
499
  "sourceCommit": "633111450867919d5063298308cdbfcbd77a8d2e",
500
- "workflow": ".github/workflows/buildchain-ref-promotion.yml",
500
+ "workflow": ".github/workflows/self-release-promote.yml",
501
501
  "runtimeRef": "v2",
502
502
  "reason": "outside the Buildchain v3 contract inventory"
503
503
  }
@@ -43,8 +43,8 @@ ledger.
43
43
  Dependencies point inward only:
44
44
 
45
45
  ```text
46
- workflows -> TypeScript adapters -> libnode host -> Rust domain -> contracts
47
- legacy compatibility -> TypeScript adapters / contracts
46
+ workflows -> Node provider/IO adapters -> tracked Rust/WASM domain -> contracts
47
+ legacy compatibility -> Node facades / contracts
48
48
  ```
49
49
 
50
50
  Contracts contain serialization and compatibility facts, not provider SDK
@@ -55,12 +55,12 @@ or Rust domain are hard-zero violations. Cycles are forbidden.
55
55
  ## 3. Single-writer rule
56
56
 
57
57
  Every state machine has exactly one authoritative writer. The v4 cutover marks
58
- the TypeScript v4 control and provider plane authoritative and the legacy v3
59
- writer retired. Rust v4 owns the deterministic release-activation, journal,
60
- stable-fence, and recovery domain semantics while the TypeScript v4 adapter
61
- remains byte-equivalent at that boundary. A second writer, permanent dual
62
- write, cross-machine mutable file, or implicit compatibility authority has a
63
- hard-zero budget.
58
+ the Rust/WASM domain authoritative and the legacy v3 and duplicate TypeScript
59
+ semantic writers retired. Node owns provider and IO effects and exposes
60
+ compatibility facades, but every deterministic release plan, fold, root, retry,
61
+ and receipt decision crosses the checked WASM ABI. A second writer, permanent
62
+ dual write, semantic fallback, cross-machine mutable file, or implicit
63
+ compatibility authority has a hard-zero budget.
64
64
 
65
65
  ## 4. Explicit complexity budgets
66
66
 
@@ -85,10 +85,14 @@ second hand-maintained architecture list is authoritative.
85
85
  ## 6. Production cutover boundary
86
86
 
87
87
  The v4 line owns Delivery Warrant, Release Transaction, activation,
88
- publication, propagation, and release-tail state. This does not introduce a
89
- daemon, a service database, provider SDKs in contracts or Rust domain code, or
90
- a second writer. The retained `release/v3/v3.0` coordinate is rollback evidence
91
- only and cannot regain production authority without a new reviewed cutover.
88
+ publication, propagation, and release-tail state. Its production domain is the
89
+ tracked artifact governed by
90
+ [`v4-rust-wasm-production-authority.json`](v4-rust-wasm-production-authority.json):
91
+ Node verifies the artifact digest and ABI before use and fails closed without a
92
+ JavaScript semantic fallback. This does not introduce a daemon, a service
93
+ database, provider SDKs in contracts or Rust domain code, or a second writer.
94
+ The retained `release/v3/v3.0` coordinate is rollback evidence only and cannot
95
+ regain production authority without a new reviewed cutover.
92
96
 
93
97
  ## 7. Wave 0 host boundary
94
98
 
@@ -133,9 +137,8 @@ The executable provider operation journal contract is
133
137
  [`v4-provider-operation-journal-contract.json`](v4-provider-operation-journal-contract.json).
134
138
  It freezes one closed schema authority and one Rust v4 state-fold authority
135
139
  for append-only intent, attempt, rooted observation, confirmation, and
136
- reconciliation records. The TypeScript v4 plane performs provider adaptation
137
- and conformance projection against the same fixtures; v4 is the sole
138
- production writer.
140
+ reconciliation records. The Node v4 plane performs provider adaptation and
141
+ calls the tracked Rust/WASM authority; it contains no second state fold.
139
142
 
140
143
  Logical operation identity excludes attempt ordinals and mutable provider or
141
144
  runner facts. Every retry preserves `operationRoot`, while every attempt and
@@ -161,9 +164,9 @@ The executable release activation boundary is
161
164
  [`v4-release-activation-shadow-domain.json`](v4-release-activation-shadow-domain.json).
162
165
  It consumes an explicit qualification root, dependency graph, compensation
163
166
  boundaries, provider-operation identities, and append-only journal facts to
164
- derive one deterministic activation plan and resume state. Rust is the sole v4
165
- plan-and-fold authority; TypeScript must remain byte-equivalent against
166
- the same closed schema and fixture.
167
+ derive one deterministic activation plan and resume state. Rust/WASM is the
168
+ sole v4 plan-and-fold authority; the Node facade delegates through the checked
169
+ ABI and retains only provider adaptation.
167
170
 
168
171
  Confirmed operations are never eligible for replay. Attempting, observed, and
169
172
  confirmable operations require provider-neutral readback before any retry,
@@ -203,8 +206,8 @@ Every nonterminal operation maps deterministically to `retry`, `wait`,
203
206
  `terminal-noop` facts and never re-enter the next-operation set. Missing,
204
207
  expired, corrupt, conflicting, cross-boundary, or attempt-budget-exhausted
205
208
  evidence fails closed at an exact Stage Capsule or provider-operation
206
- checkpoint. The Rust domain is the sole v4 planner and TypeScript is a
207
- byte-equivalent projection. Both are pure: they perform zero provider,
209
+ checkpoint. The Rust/WASM domain is the sole v4 planner and the Node facade
210
+ delegates to it. The planner is pure: it performs zero provider,
208
211
  filesystem, network, credential, ref, package, image, or release mutation.
209
212
  Their exact plan is the only recovery authority consumed by the TypeScript v4
210
213
  provider adapter.
@@ -4,7 +4,7 @@
4
4
  "inventoryAuthority": "architecture/v3-v4-live-capability-inventory.json",
5
5
  "implementation": "packages/core/v4-cross-platform-adopter-qualification.js",
6
6
  "runner": "scripts/v4-cross-platform-adopter-qualification.mjs",
7
- "publicWorkflow": ".github/workflows/v4-adopter-delivery.yml",
7
+ "publicWorkflow": ".github/workflows/public-build-adopter-qualification.yml",
8
8
  "sourceBinding": {
9
9
  "runtime": "job.workflow_sha",
10
10
  "consumer": "exact checked-out consumer commit",
@@ -227,7 +227,7 @@
227
227
  "docs/dev-delivery-warrant.md",
228
228
  "docs/dev-delivery-qualification-landing-adr.md",
229
229
  "templates/native-dev-delivery.yml",
230
- ".github/workflows/buildchain-dev-delivery.yml",
230
+ ".github/workflows/self-ops-dev-delivery.yml",
231
231
  ".buildchain/contract-lock.json",
232
232
  ".buildchain/alpha-contract-lock.json"
233
233
  ],
@@ -246,5 +246,5 @@
246
246
  "verificationEvidence": []
247
247
  }
248
248
  ],
249
- "matrixRoot": "sha256:5be5abf70b982374f32a1400d4ec7c830017a0473d03165e831a506c94c8b881"
249
+ "matrixRoot": "sha256:85fc624f09abb2014601a9857dbcd07a59750b6dd6d77ab240ed037d3169ac69"
250
250
  }
@@ -9,7 +9,7 @@
9
9
  "legacyCore": "packages/core/dev-delivery-warrant.js",
10
10
  "legacyStore": "scripts/dev-delivery-warrant.mjs",
11
11
  "legacyWorkflows": [
12
- ".github/workflows/buildchain-dev-delivery.yml",
12
+ ".github/workflows/self-ops-dev-delivery.yml",
13
13
  ".github/workflows/dev-delivery-warrant-close.yml",
14
14
  ".github/workflows/dev-delivery-warrant-cancel.yml"
15
15
  ]
@@ -10,7 +10,7 @@
10
10
  ".github/workflows/.build.yml",
11
11
  ".github/workflows/publication-artifact.yml",
12
12
  ".github/workflows/release-candidate-promote.yml",
13
- ".github/workflows/v4-stage-capsule-canary.yml"
13
+ ".github/workflows/public-build-stage-capsule-canary.yml"
14
14
  ]
15
15
  },
16
16
  "contractLocks": {
@@ -38,7 +38,7 @@
38
38
  "persistedSelectorOverride": false,
39
39
  "protectedAlphaRecoveryBootstrap": {
40
40
  "selector": "alpha/v4/v4.0",
41
- "sourcePath": ".github/workflows/buildchain-ref-promotion-recovery.yml",
41
+ "sourcePath": ".github/workflows/self-ops-promotion-recovery.yml",
42
42
  "workflow": ".github/workflows/.release-candidate-promote.yml",
43
43
  "repository": "kungfu-systems/buildchain"
44
44
  },
@@ -11,8 +11,8 @@
11
11
  "target": {
12
12
  "branch": "dev/v4/v4.0",
13
13
  "implementationBaseline": "36ad1dc03a9d2785aca938a7a369e4b96707fa32",
14
- "publicConsumerCaller": ".github/workflows/v4-public-consumer-dogfood.yml",
15
- "publicConsumerReusable": "kungfu-systems/buildchain/.github/workflows/v4-stage-capsule-canary.yml@v4-alpha"
14
+ "publicConsumerCaller": ".github/workflows/self-build-public-consumer-dogfood.yml",
15
+ "publicConsumerReusable": "kungfu-systems/buildchain/.github/workflows/public-build-stage-capsule-canary.yml@v4-alpha"
16
16
  },
17
17
  "earlierContinuityDelta": {
18
18
  "assignment": "2026-08-11-buildchain-next-development-version-continuity",
@@ -152,8 +152,8 @@
152
152
  "claim": "V4 recovery proof runs as pure tests through the standard lifecycle.verify reached by the exact thin public consumer caller, while existing hosted dual-channel evidence keeps public v4-alpha and v4 routes.",
153
153
  "disposition": "implemented",
154
154
  "implementationEvidence": [
155
- ".github/workflows/v4-public-consumer-dogfood.yml",
156
- ".github/workflows/buildchain-alpha-self-dogfood.yml",
155
+ ".github/workflows/self-build-public-consumer-dogfood.yml",
156
+ ".github/workflows/self-build-alpha-dogfood.yml",
157
157
  ".buildchain/buildchain.toml",
158
158
  "scripts/next-development-self-dogfood.mjs",
159
159
  "scripts/next-development-self-dogfood-harness.mjs"
@@ -188,5 +188,5 @@
188
188
  "verificationEvidence": []
189
189
  }
190
190
  ],
191
- "matrixRoot": "sha256:0f0d69dd338cad33dc61870675cbedb8664e019e403f73a1ddcf8471d69df405"
191
+ "matrixRoot": "sha256:6affa0278532cfc96d3af04d113d7c509ec18df3a86d86945a2a5e7418d7c83e"
192
192
  }
@@ -39,7 +39,10 @@
39
39
  ],
40
40
  "implementations": {
41
41
  "rustDomain": "crates/buildchain-v4-contracts/src/partial_mutation_recovery.rs",
42
- "typescript": "packages/core/v4-partial-mutation-recovery-qualification.js"
42
+ "typescript": "packages/core/v4-partial-mutation-recovery-qualification.js",
43
+ "wasmRuntime": "packages/core/v4-domain-wasm.js",
44
+ "wasmArtifact": "packages/core/buildchain-v4-domain.wasm",
45
+ "artifactMetadata": "packages/core/v4-domain-wasm-artifact.js"
43
46
  },
44
47
  "roots": [
45
48
  "partial-mutation-recovery-checkpoint",
@@ -81,7 +81,7 @@
81
81
  }
82
82
  ],
83
83
  "projections": {
84
- "protectedWorkflow": ".github/workflows/verify.yml",
84
+ "protectedWorkflow": ".github/workflows/self-build-verify.yml",
85
85
  "generatedTemplate": "scripts/init-repo.mjs",
86
86
  "agentGuidance": "AGENTS.md",
87
87
  "manual": "docs/v4-stage-capsule.md"
@@ -9,7 +9,7 @@
9
9
  "productionWriterCount": 1,
10
10
  "stateFoldAuthority": "rust-v4-core",
11
11
  "stateFoldWriterCount": 1,
12
- "typescript": "provider-adapter-and-conformance-plane",
12
+ "typescript": "wasm-calling-provider-adapter-and-conformance-plane",
13
13
  "productionWriteChange": true
14
14
  },
15
15
  "implementations": {
@@ -17,7 +17,10 @@
17
17
  "rustFold": "crates/buildchain-v4-contracts/src/provider_operation_journal/fold.rs",
18
18
  "rustReadback": "crates/buildchain-v4-contracts/src/provider_readback_idempotency.rs",
19
19
  "typescript": "packages/core/v4-provider-operation-journal.js",
20
- "typescriptReadback": "packages/core/v4-provider-readback-idempotency.js"
20
+ "typescriptReadback": "packages/core/v4-provider-readback-idempotency.js",
21
+ "wasmRuntime": "packages/core/v4-domain-wasm.js",
22
+ "wasmArtifact": "packages/core/buildchain-v4-domain.wasm",
23
+ "artifactMetadata": "packages/core/v4-domain-wasm-artifact.js"
21
24
  },
22
25
  "activationDomain": {
23
26
  "architecture": "architecture/v4-release-activation-shadow-domain.json",
@@ -0,0 +1,53 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "sourceRevision": "a41c00a0c0b2dbd57c238cd9b326b167a1d27ca8",
4
+ "purpose": "Retain completed v4 publication receipt independently of next-development and preserve immutable binary publication assets.",
5
+ "facades": [
6
+ {
7
+ "workflow": ".github/workflows/.binary-release-assets.yml",
8
+ "beforeSha256": "5dfaea0f9cf83500706f423eca08f43594fe3653fa139da359041e88fae49266",
9
+ "afterSha256": "06831b3ec8db28fbf96ffa8907fd58c1a77dd09e8d4fe02100a98febe10dba34",
10
+ "replacements": [
11
+ {
12
+ "before": " fs.writeFileSync(\".buildchain/publication-authority/capability.json\", `${JSON.stringify(capability, null, 2)}\\n`);\n NODE\n\n - name: Upload GitHub Release assets\n env:\n GH_TOKEN: ${{ github.token }}\n RELEASE_TAG: ${{ inputs.release-tag }}\n",
13
+ "after": " fs.writeFileSync(\".buildchain/publication-authority/capability.json\", `${JSON.stringify(capability, null, 2)}\\n`);\n NODE\n\n - uses: actions/setup-node@v6.4.0\n if: ${{ startsWith(inputs.release-tag, 'v4.') }}\n with:\n node-version: \"24\"\n\n - name: Install exact publication runtime dependencies\n if: ${{ startsWith(inputs.release-tag, 'v4.') }}\n run: corepack pnpm@11.7.0 install --frozen-lockfile --ignore-scripts\n\n - name: Upload immutable GitHub Release assets and verify readback\n if: ${{ startsWith(inputs.release-tag, 'v4.') }}\n env:\n GH_TOKEN: ${{ github.token }}\n RELEASE_TAG: ${{ inputs.release-tag }}\n run: node scripts/binary-publication-evidence.mjs publish\n\n - name: Retain binary publication readback\n if: ${{ startsWith(inputs.release-tag, 'v4.') }}\n uses: actions/upload-artifact@v7.0.1\n with:\n name: binary-publication-readback-${{ inputs.release-tag }}\n path: .buildchain/binary-publication/readback.json\n include-hidden-files: true\n if-no-files-found: error\n\n - name: Upload GitHub Release assets\n if: ${{ !startsWith(inputs.release-tag, 'v4.') }}\n env:\n GH_TOKEN: ${{ github.token }}\n RELEASE_TAG: ${{ inputs.release-tag }}\n"
14
+ }
15
+ ]
16
+ },
17
+ {
18
+ "workflow": ".github/workflows/.release-candidate-promote.yml",
19
+ "beforeSha256": "177b3c50685405e5ed2bf1ac893469fdb3a27e7b03d55025611b2985028cd8cf",
20
+ "afterSha256": "9c7f3586a3444cdad34d2a61be3cb9b0ae271fb56f9e371d9c37940e6b317780",
21
+ "replacements": [
22
+ {
23
+ "before": " release-candidate-artifact: ${{ needs.qualify.outputs.candidate-artifact }}\n release-candidate-action: canonical-release-invocation\n release-candidate-outcome: success\n promotion-outcome: success\n finalization-needed: \"false\"\n release-tail-transaction-state: ${{ steps.provider.outputs.transaction-state || steps.resume.outputs.transaction-state }}\n release-tail-declaration-root: ${{ steps.provider.outputs.declaration-root || steps.resume.outputs.declaration-root }}\n release-tail-transaction-root: ${{ steps.provider.outputs.transaction-root || steps.resume.outputs.transaction-root }}\n",
24
+ "after": " release-candidate-artifact: ${{ needs.qualify.outputs.candidate-artifact }}\n release-candidate-action: canonical-release-invocation\n release-candidate-outcome: success\n promotion-outcome: ${{ steps.publication-settlement.outputs.status == 'complete' && 'success' || 'failure' }}\n finalization-needed: ${{ steps.publication-settlement.outputs.status != 'complete' }}\n release-tail-transaction-state: ${{ steps.provider.outputs.transaction-state || steps.resume.outputs.transaction-state }}\n release-tail-declaration-root: ${{ steps.provider.outputs.declaration-root || steps.resume.outputs.declaration-root }}\n release-tail-transaction-root: ${{ steps.provider.outputs.transaction-root || steps.resume.outputs.transaction-root }}\n"
25
+ },
26
+ {
27
+ "before": " release-tail-receipt-roots-json: ${{ steps.provider.outputs.receipt-roots-json || steps.resume.outputs.receipt-roots-json }}\n release-invocation-root: ${{ steps.provider.outputs.release-invocation-root || steps.resume.outputs.release-invocation-root }}\n release-transaction-root: ${{ steps.provider.outputs.release-transaction-root || steps.resume.outputs.release-transaction-root }}\n release-receipt-root: ${{ steps.provider.outputs.release-receipt-root || steps.resume.outputs.release-receipt-root }}\n steps:\n - name: Checkout the admitted protected channel state\n uses: actions/checkout@v7.0.0\n",
28
+ "after": " release-tail-receipt-roots-json: ${{ steps.provider.outputs.receipt-roots-json || steps.resume.outputs.receipt-roots-json }}\n release-invocation-root: ${{ steps.provider.outputs.release-invocation-root || steps.resume.outputs.release-invocation-root }}\n release-transaction-root: ${{ steps.provider.outputs.release-transaction-root || steps.resume.outputs.release-transaction-root }}\n release-receipt-root: ${{ steps.publication-settlement.outputs.receipt-root || steps.provider.outputs.release-receipt-root || steps.resume.outputs.release-receipt-root }}\n steps:\n - name: Checkout the admitted protected channel state\n uses: actions/checkout@v7.0.0\n"
29
+ },
30
+ {
31
+ "before": " uses: ./.buildchain/runtime/actions/v4-release-candidate-promote\n with: *provider-inputs\n\n - name: Retain canonical APPLY and ReleaseReceipt evidence\n if: ${{ always() }}\n uses: actions/upload-artifact@v7.0.1\n",
32
+ "after": " uses: ./.buildchain/runtime/actions/v4-release-candidate-promote\n with: *provider-inputs\n\n - name: Retain completed publication independently of next-development\n id: publication-settlement\n if: ${{ always() && hashFiles('.buildchain/release-tail/release-receipt.json') != '' }}\n env:\n GH_TOKEN: ${{ github.token }}\n CANDIDATE_SHA: ${{ needs.qualify.outputs.requested-sha }}\n APPLY_OUTCOME: ${{ (steps.resume.outcome == 'success' || steps.resume.outcome == 'failure') && steps.resume.outcome || steps.provider.outcome }}\n run: node .buildchain/runtime/scripts/v4-publication-settlement.mjs .buildchain\n\n - name: Retain canonical APPLY and ReleaseReceipt evidence\n if: ${{ always() }}\n uses: actions/upload-artifact@v7.0.1\n"
33
+ },
34
+ {
35
+ "before": " controller-receipt-status: ${{ steps.verify.outputs.status || steps.projection-state.outputs.status }}\n steps:\n - name: Checkout the admitted receipt verifier\n if: ${{ needs.apply.result == 'success' }}\n uses: actions/checkout@v7.0.0\n with:\n repository: kungfu-systems/buildchain\n",
36
+ "after": " controller-receipt-status: ${{ steps.verify.outputs.status || steps.projection-state.outputs.status }}\n steps:\n - name: Checkout the admitted receipt verifier\n if: ${{ needs.qualify.outputs.action == 'promote' && !inputs.dry-run }}\n uses: actions/checkout@v7.0.0\n with:\n repository: kungfu-systems/buildchain\n"
37
+ },
38
+ {
39
+ "before": " persist-credentials: false\n\n - name: Restore canonical APPLY evidence\n if: ${{ needs.apply.result == 'success' }}\n uses: actions/download-artifact@v7.0.0\n with:\n name: buildchain-v4-release-apply-${{ needs.qualify.outputs.requested-sha }}\n",
40
+ "after": " persist-credentials: false\n\n - name: Restore canonical APPLY evidence\n if: ${{ needs.qualify.outputs.action == 'promote' && !inputs.dry-run }}\n uses: actions/download-artifact@v7.0.0\n with:\n name: buildchain-v4-release-apply-${{ needs.qualify.outputs.requested-sha }}\n"
41
+ },
42
+ {
43
+ "before": "\n - name: Verify the single terminal receipt\n id: verify\n if: ${{ needs.apply.result == 'success' }}\n shell: bash\n run: |\n node --input-type=module <<'NODE'\n import fs from \"node:fs\";\n import {\n createV4ReleaseInvocation,\n createV4ReleaseReceipt,\n createV4ReleaseTransaction,\n } from \"./.buildchain/runtime/packages/core/v4-release-invocation.js\";\n const base = \".buildchain/evidence/release-tail\";\n const invocation = JSON.parse(fs.readFileSync(`${base}/release-invocation.json`, \"utf8\"));\n const transaction = JSON.parse(fs.readFileSync(`${base}/release-transaction.json`, \"utf8\"));\n const storedReceipt = JSON.parse(fs.readFileSync(`${base}/release-receipt.json`, \"utf8\"));\n const invocationProjection = createV4ReleaseInvocation(invocation);\n const transactionProjection = createV4ReleaseTransaction({\n invocationRoot: transaction.invocationRoot,\n publisherRoot: transaction.publisherRoot,\n runtimeRoot: transaction.runtimeRoot,\n providerRoot: transaction.providerRoot,\n parentRoot: transaction.parentRoot,\n });\n const { receiptRoot, ...receipt } = storedReceipt;\n const receiptProjection = createV4ReleaseReceipt(receipt);\n if (transaction.invocationRoot !== invocationProjection.roots.invocationRoot ||\n transaction.transactionRoot !== transactionProjection.transactionRoot ||\n receipt.transactionRoot !== transactionProjection.transactionRoot ||\n receiptProjection.receiptRoot !== receiptRoot || receipt.outcome !== \"complete\") {\n throw new Error(\"terminal ReleaseReceipt lineage does not verify\");\n }\n fs.appendFileSync(process.env.GITHUB_OUTPUT,\n `receipt-json=${JSON.stringify(storedReceipt)}\\nreceipt-root=${receiptRoot}\\nstatus=complete\\n`);\n NODE\n\n - name: Record non-terminal projection state\n id: projection-state\n if: ${{ needs.apply.result != 'success' }}\n shell: bash\n run: |\n echo \"status=${{ inputs.dry-run && 'dry-run' || needs.qualify.outputs.action == 'noop' && 'noop' || 'blocked' }}\" >> \"$GITHUB_OUTPUT\"\n",
44
+ "after": "\n - name: Verify the single terminal receipt\n id: verify\n env:\n CANDIDATE_SHA: ${{ needs.qualify.outputs.requested-sha }}\n if: ${{ needs.qualify.outputs.action == 'promote' && !inputs.dry-run }}\n shell: bash\n run: |\n node --input-type=module <<'NODE'\n import fs from \"node:fs\";\n const { readApplyDocuments, verifyPublicationSettlement } = await import(\"./.buildchain/runtime/scripts/v4-publication-settlement.mjs\");\n const documents = readApplyDocuments(\".buildchain/evidence\");\n verifyPublicationSettlement(documents, {\n repository: process.env.GITHUB_REPOSITORY,\n candidateSha: process.env.CANDIDATE_SHA,\n tag: documents.invocation.target.tag,\n sourceSha: documents.product.publication.releaseSha,\n });\n const storedReceipt = documents.receipt;\n const receiptRoot = storedReceipt.receiptRoot;\n fs.appendFileSync(process.env.GITHUB_OUTPUT,\n `receipt-json=${JSON.stringify(storedReceipt)}\\nreceipt-root=${receiptRoot}\\nstatus=complete\\n`);\n NODE\n\n - name: Record non-terminal projection state\n id: projection-state\n if: ${{ always() && steps.verify.outcome != 'success' }}\n shell: bash\n run: |\n echo \"status=${{ inputs.dry-run && 'dry-run' || needs.qualify.outputs.action == 'noop' && 'noop' || 'blocked' }}\" >> \"$GITHUB_OUTPUT\"\n"
45
+ },
46
+ {
47
+ "before": " .buildchain/evidence/release-tail/release-invocation.json\n .buildchain/evidence/release-tail/release-transaction.json\n .buildchain/evidence/release-tail/release-receipt.json\n if-no-files-found: error\n",
48
+ "after": " .buildchain/evidence/release-tail/release-invocation.json\n .buildchain/evidence/release-tail/release-transaction.json\n .buildchain/evidence/release-tail/release-receipt.json\n .buildchain/evidence/release-tail/delivery-summary.json\n .buildchain/evidence/release-tail/buildchain-publication-settlement.json\n if-no-files-found: error\n"
49
+ }
50
+ ]
51
+ }
52
+ ]
53
+ }
@@ -10,14 +10,17 @@
10
10
  "productionWriterCount": 1,
11
11
  "planAndFoldAuthority": "rust-v4-core",
12
12
  "planAndFoldWriterCount": 1,
13
- "typescript": "byte-equivalent-provider-adapter",
13
+ "typescript": "wasm-calling-provider-adapter",
14
14
  "productionWriteChange": true
15
15
  },
16
16
  "implementations": {
17
17
  "rustDomain": "crates/buildchain-v4-contracts/src/release_activation_shadow.rs",
18
18
  "rustModel": "crates/buildchain-v4-contracts/src/release_activation_shadow/model.rs",
19
19
  "rustJournalMaterializer": "crates/buildchain-v4-contracts/src/release_activation_shadow/journal.rs",
20
- "typescript": "packages/core/v4-release-activation-shadow.js"
20
+ "typescript": "packages/core/v4-release-activation-shadow.js",
21
+ "wasmRuntime": "packages/core/v4-domain-wasm.js",
22
+ "wasmArtifact": "packages/core/buildchain-v4-domain.wasm",
23
+ "artifactMetadata": "packages/core/v4-domain-wasm-artifact.js"
21
24
  },
22
25
  "roots": [
23
26
  "release-activation-step",