@kungfu-tech/buildchain 3.0.9-alpha.8 → 4.0.0-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 (255) hide show
  1. package/AGENTS.md +39 -0
  2. package/README.md +17 -13
  3. package/actions/promote-buildchain-ref/README.md +0 -10
  4. package/actions/release-tail/README.md +6 -10
  5. package/architecture/internal-capabilities.json +502 -0
  6. package/architecture/maintainability-baseline.json +59 -0
  7. package/architecture/maintainability-policy.json +1384 -0
  8. package/architecture/release-tail-contract-inventory.json +587 -0
  9. package/architecture/v3-core-mechanism-inventory.json +1043 -0
  10. package/architecture/v3-core-mechanism-inventory.md +67 -0
  11. package/architecture/v4-adopter-delivery-parity.json +47 -0
  12. package/architecture/v4-architecture-constitution.md +210 -0
  13. package/architecture/v4-bootstrap-authority.json +56 -0
  14. package/architecture/v4-canonical-contract-fixtures.json +105 -0
  15. package/architecture/v4-capability-state-machine-manifest.json +480 -0
  16. package/architecture/v4-capability-state-machine-manifest.schema.json +202 -0
  17. package/architecture/v4-delivery-warrant-shadow-bootstrap-plan.json +830 -0
  18. package/architecture/v4-delivery-warrant-shadow-bootstrap-plan.md +223 -0
  19. package/architecture/v4-delivery-warrant-shadow-bootstrap-plan.schema.json +318 -0
  20. package/architecture/v4-delivery-warrant-shadow-fixtures.json +227 -0
  21. package/architecture/v4-delivery-warrant-shadow-fixtures.schema.json +67 -0
  22. package/architecture/v4-exception-ledger.json +5 -0
  23. package/architecture/v4-exception-ledger.schema.json +56 -0
  24. package/architecture/v4-partial-mutation-recovery-qualification.json +65 -0
  25. package/architecture/v4-platform-stage-checkpoints.json +97 -0
  26. package/architecture/v4-provider-operation-journal-contract.json +113 -0
  27. package/architecture/v4-release-activation-shadow-domain.json +61 -0
  28. package/architecture/v4-release-train-parity.json +68 -0
  29. package/architecture/v4-rust-libnode-bridge-evaluation.json +107 -0
  30. package/architecture/v4-rust-libnode-bridge-spike.md +85 -0
  31. package/architecture/v4-stable-publication-fence.json +66 -0
  32. package/architecture/v4-stage-capsule-contract.json +90 -0
  33. package/architecture/v4-stage-capsule-qualification.json +99 -0
  34. package/architecture/v4-stage-capsule-resume-planner.json +52 -0
  35. package/architecture/v4-stage-capsule-store-contract.json +72 -0
  36. package/bin/buildchain.mjs +15 -6
  37. package/contracts/auditable-demo-scenario-v1.schema.json +1 -1
  38. package/contracts/buildchain-v2-residuals-v1.json +2 -2
  39. package/contracts/fixtures/v4-delivery-warrant-trace-v1/golden.json +158 -0
  40. package/contracts/fixtures/v4-delivery-warrant-trace-v1/property.json +380 -0
  41. package/contracts/fixtures/v4-delivery-warrant-trace-v1/replay.json +163 -0
  42. package/contracts/fixtures/v4-partial-mutation-recovery-v1/shared.json +155 -0
  43. package/contracts/fixtures/v4-provider-operation-journal-v1/shared.json +457 -0
  44. package/contracts/fixtures/v4-provider-readback-idempotency-v1/shared.json +682 -0
  45. package/contracts/fixtures/v4-release-activation-shadow-v1/shared.json +53 -0
  46. package/contracts/fixtures/v4-stable-publication-fence-v1/shared.json +56 -0
  47. package/contracts/fixtures/v4-stage-capsule-resume-v1/late-platform-failure.json +176 -0
  48. package/contracts/fixtures/v4-stage-capsule-store-v1/shared.json +132 -0
  49. package/contracts/fixtures/v4-stage-capsule-v1/shared.json +111 -0
  50. package/contracts/v4-canonical-contracts-v1.schema.json +182 -0
  51. package/contracts/v4-delivery-warrant-semantic-diff-report-v1.schema.json +284 -0
  52. package/contracts/v4-delivery-warrant-trace-v1.schema.json +215 -0
  53. package/contracts/v4-host-contract-v1.schema.json +135 -0
  54. package/contracts/v4-partial-mutation-recovery-v1.schema.json +168 -0
  55. package/contracts/v4-provider-operation-journal-v1.schema.json +381 -0
  56. package/contracts/v4-release-activation-shadow-v1.schema.json +186 -0
  57. package/contracts/v4-stable-publication-fence-v1.schema.json +125 -0
  58. package/contracts/v4-stage-capsule-resume-v1.schema.json +225 -0
  59. package/contracts/v4-stage-capsule-store-v1.schema.json +154 -0
  60. package/contracts/v4-stage-capsule-v1.schema.json +178 -0
  61. package/crates/buildchain-v4-bridge/Cargo.lock +213 -0
  62. package/crates/buildchain-v4-bridge/Cargo.toml +12 -0
  63. package/crates/buildchain-v4-bridge/src/main.rs +495 -0
  64. package/dist/site/agent-index.json +0 -3
  65. package/dist/site/artifact-schemas.json +0 -6
  66. package/dist/site/buildchain-contract.json +103 -397
  67. package/dist/site/buildchain-site.json +302 -270
  68. package/dist/site/capability-registry.json +9 -11
  69. package/dist/site/cli-registry.json +8 -30
  70. package/dist/site/controller-registry.json +48 -8
  71. package/dist/site/kfd-claims.json +129 -142
  72. package/dist/site/kfd-upstream-aggregate.json +9 -9
  73. package/dist/site/manual-registry.json +18 -49
  74. package/dist/site/node-api-registry.json +1882 -4118
  75. package/dist/site/page-registry.json +278 -230
  76. package/dist/site/public-surface-audit.json +87 -185
  77. package/dist/site/publication-authority-registry.json +11 -1
  78. package/dist/site/publication-registry.json +4 -4
  79. package/dist/site/release-provenance.json +3 -7
  80. package/dist/site/schemas/kfd-support-projection-v1.schema.json +106 -0
  81. package/dist/site/site-manifest.json +22 -38
  82. package/dist/site/workflow-registry.json +80 -35
  83. package/docs/MAP.md +8 -4
  84. package/docs/auditable-demo.md +2 -2
  85. package/docs/aws-us-elastic-runner-burst-plane.md +7 -59
  86. package/docs/cli-reference.md +15 -92
  87. package/docs/cli.md +14 -14
  88. package/docs/dev-alpha-candidate-patrol.md +3 -11
  89. package/docs/dev-delivery-warrant.md +28 -100
  90. package/docs/engineering-housekeeper.md +12 -4
  91. package/docs/getting-started.md +1 -1
  92. package/docs/install.md +5 -5
  93. package/docs/kfd-support.md +2 -7
  94. package/docs/lifecycle-protocol.md +2 -4
  95. package/docs/node-api-reference.md +414 -523
  96. package/docs/release-flow.md +31 -31
  97. package/docs/release-governance.md +16 -28
  98. package/docs/release-passport.md +2 -15
  99. package/docs/release-tail-contract.md +13 -6
  100. package/docs/release-tail-provider-plane.md +13 -19
  101. package/docs/release-train.md +4 -4
  102. package/docs/reusable-build-surface.md +14 -27
  103. package/docs/site-bundle-contract.md +1 -5
  104. package/docs/stable-candidate-patrol.md +7 -7
  105. package/docs/v4-canonical-contracts.md +92 -0
  106. package/docs/v4-delivery-warrant-read-candidate.md +73 -0
  107. package/docs/v4-delivery-warrant-semantic-diff.md +75 -0
  108. package/docs/v4-production-release.md +63 -0
  109. package/docs/v4-stage-capsule.md +193 -0
  110. package/docs/versioning.md +3 -3
  111. package/package.json +19 -17
  112. package/packages/core/adopter-delivery-gate.js +576 -0
  113. package/packages/core/adopter-delivery-json.js +66 -0
  114. package/packages/core/artifact-signing.js +0 -61
  115. package/packages/core/artifact-verification-envelope.js +5 -5
  116. package/packages/core/build-facts.js +12 -4
  117. package/packages/core/buildchain-agent-manuals.js +0 -2
  118. package/packages/core/buildchain-config.js +4 -69
  119. package/packages/core/buildchain-contract.js +232 -46
  120. package/packages/core/buildchain-kfd-claims.js +1 -1
  121. package/packages/core/channel-candidate.js +0 -8
  122. package/packages/core/channel-promotion-baseline.js +0 -52
  123. package/packages/core/controller-evidence.js +3 -4
  124. package/packages/core/dev-alpha-candidate-selection.js +2 -10
  125. package/packages/core/dev-delivery-warrant-cancellation.js +0 -1
  126. package/packages/core/dev-delivery-warrant-settlement.js +1 -5
  127. package/packages/core/dev-delivery-warrant.js +12 -52
  128. package/packages/core/diagnostics.js +3 -8
  129. package/packages/core/github-governance-authority.js +3 -1
  130. package/packages/core/kfd-adopter-category-driver.js +167 -0
  131. package/packages/core/kfd-adopter-manifest.js +47 -46
  132. package/packages/core/kfd-gate.js +15 -45
  133. package/packages/core/paper-agent-entry.js +7 -16
  134. package/packages/core/paper-fleet.js +2 -2
  135. package/packages/core/paper-repository.js +2 -3
  136. package/packages/core/paper-scaffold-content.js +2 -23
  137. package/packages/core/paper.js +11 -43
  138. package/packages/core/publication-reproducibility.js +4 -4
  139. package/packages/core/release-line-bootstrap.js +21 -8
  140. package/packages/core/release-passport-contract.js +5 -5
  141. package/packages/core/release-passport.js +20 -131
  142. package/packages/core/self-dogfood-version.js +48 -35
  143. package/packages/core/spawn-command.js +232 -8
  144. package/packages/core/v4-adopter-delivery-parity.js +219 -0
  145. package/packages/core/v4-canonical-contracts.js +284 -0
  146. package/packages/core/v4-delivery-warrant-fixture-runner.js +371 -0
  147. package/packages/core/v4-delivery-warrant-read-candidate.js +279 -0
  148. package/packages/core/v4-delivery-warrant-semantic-diff-gate.js +352 -0
  149. package/packages/core/v4-delivery-warrant-shadow-adapter.js +447 -0
  150. package/packages/core/v4-partial-mutation-recovery-qualification.js +395 -0
  151. package/packages/core/v4-platform-stage-checkpoints.js +471 -0
  152. package/packages/core/v4-provider-operation-journal.js +531 -0
  153. package/packages/core/v4-provider-readback-idempotency.js +394 -0
  154. package/packages/core/v4-release-activation-shadow.js +519 -0
  155. package/packages/core/v4-stable-publication-fence.js +357 -0
  156. package/packages/core/v4-stage-capsule-local-store.js +426 -0
  157. package/packages/core/v4-stage-capsule-qualification-campaign.js +512 -0
  158. package/packages/core/v4-stage-capsule-qualification.js +456 -0
  159. package/packages/core/v4-stage-capsule-resume-planner.js +397 -0
  160. package/packages/core/v4-stage-capsule-store.js +401 -0
  161. package/packages/core/v4-stage-capsule.js +319 -0
  162. package/scripts/assemble-self-publication-admission.mjs +1 -1
  163. package/scripts/audit-publication-control-plane.mjs +5 -5
  164. package/scripts/auditable-demo-bundle-verification.mjs +3 -2
  165. package/scripts/auditable-demo-platform.mjs +2 -2
  166. package/scripts/auditable-demo-renditions.mjs +1 -1
  167. package/scripts/auditable-demo.mjs +2 -2
  168. package/scripts/aws-macos-jit-controller-core.mjs +13 -346
  169. package/scripts/aws-macos-jit-controller-runtime.mjs +2 -210
  170. package/scripts/aws-macos-jit-controller.mjs +37 -275
  171. package/scripts/aws-macos-jit-core.mjs +3 -41
  172. package/scripts/aws-macos-jit.mjs +0 -12
  173. package/scripts/aws-windows-jit-campaign.mjs +2 -2
  174. package/scripts/aws-windows-jit-controller-core.mjs +1 -1
  175. package/scripts/aws-windows-jit-controller.mjs +3 -3
  176. package/scripts/build-contract-core.mjs +3 -8
  177. package/scripts/build-standalone-binary.mjs +3 -14
  178. package/scripts/buildchain-channel-router.mjs +4 -0
  179. package/scripts/buildchain-cli-help.mjs +7 -13
  180. package/scripts/buildchain-contract-lock.mjs +0 -6
  181. package/scripts/check-action-bundles.mjs +3 -4
  182. package/scripts/check-internal-architecture.mjs +7 -6
  183. package/scripts/check-inventory.mjs +30 -25
  184. package/scripts/check-v4-public-dogfood-contract.mjs +270 -0
  185. package/scripts/create-release-bundle.mjs +8 -4
  186. package/scripts/dev-alpha-candidate-patrol.mjs +1 -22
  187. package/scripts/dev-delivery-proof.mjs +2 -54
  188. package/scripts/dev-delivery-warrant.mjs +59 -77
  189. package/scripts/dev-pr-auto-merge.mjs +4 -30
  190. package/scripts/dev-pr-delivery-warrant.mjs +0 -55
  191. package/scripts/dispatch-artifact-signing-authority.mjs +7 -4
  192. package/scripts/generate-buildchain-kfd-witnesses.mjs +94 -88
  193. package/scripts/generate-channel-build-workflow.mjs +54 -24
  194. package/scripts/generate-channel-promotion-workflow.mjs +15 -6
  195. package/scripts/generate-site-bundle.mjs +5 -21
  196. package/scripts/git-fetch-process-tree.mjs +34 -1
  197. package/scripts/init-repo.mjs +64 -159
  198. package/scripts/inspect-artifact-signing-requests.mjs +0 -6
  199. package/scripts/locked-source-checkout.mjs +3 -4
  200. package/scripts/maintainability-metrics.mjs +8 -2
  201. package/scripts/npm-publish-dry-run.mjs +2 -2
  202. package/scripts/npm-publish-transaction.mjs +2 -2
  203. package/scripts/publication-commit-evidence.mjs +23 -69
  204. package/scripts/release-candidate-resolver.mjs +11 -17
  205. package/scripts/release-tail.mjs +3 -49
  206. package/scripts/resume-from-candidate-run.mjs +9 -123
  207. package/scripts/run-lifecycle-core.mjs +12 -13
  208. package/scripts/seal-artifact-signing-requests.mjs +17 -21
  209. package/scripts/site-capability-metadata.mjs +2 -7
  210. package/scripts/stable-candidate-qualification.mjs +10 -10
  211. package/scripts/v4-architecture.mjs +12 -2
  212. package/scripts/v4-bridge-bootstrap.mjs +141 -0
  213. package/scripts/v4-bridge-evidence.mjs +141 -0
  214. package/scripts/v4-host-adapter.mjs +182 -0
  215. package/scripts/v4-platform-stage-checkpoint-rehearsal.mjs +207 -0
  216. package/scripts/v4-stage-capsule-qualification.mjs +528 -0
  217. package/scripts/v4-stage-capsule-resume-rehearsal.mjs +57 -0
  218. package/scripts/v4-warrant-shadow-plan.mjs +601 -0
  219. package/scripts/verify-golden-path.mjs +5 -5
  220. package/scripts/web-surface-cloudfront-rewrite.mjs +15 -15
  221. package/scripts/web-surface-core.mjs +2 -8
  222. package/scripts/workflow-call-contract.mjs +5 -184
  223. package/contracts/fixtures/kfd-adopter-release-v1/kfd-4-perspective.json +0 -16
  224. package/contracts/fixtures/kfd-adopter-release-v1/kfd-4-replay.json +0 -57
  225. package/contracts/fixtures/next-development-transition-v1/anchored-manual-waiting.json +0 -47
  226. package/contracts/fixtures/next-development-transition-v1/semver-auto-planned.json +0 -47
  227. package/contracts/fixtures/next-development-transition-v1/version-model-cases.json +0 -40
  228. package/contracts/next-development-request-v1.schema.json +0 -66
  229. package/contracts/next-development-transition-v1.schema.json +0 -292
  230. package/contracts/publication-rehearsal-capsule-v1.schema.json +0 -173
  231. package/dist/site/schemas/publication-rehearsal-capsule-v1.schema.json +0 -269
  232. package/dist/site/schemas/release-tail-capabilities-v1.schema.json +0 -353
  233. package/dist/site/schemas/release-tail-provider-bindings-v1.schema.json +0 -94
  234. package/docs/next-development-transition.md +0 -119
  235. package/docs/publication-rehearsal.md +0 -94
  236. package/packages/core/buildchain-compatibility-proof.js +0 -631
  237. package/packages/core/dev-delivery-native-proof.js +0 -333
  238. package/packages/core/dev-delivery-warrant-shadow.js +0 -502
  239. package/packages/core/next-development-candidate-reservation.js +0 -186
  240. package/packages/core/next-development-controller.js +0 -726
  241. package/packages/core/next-development-projection.js +0 -288
  242. package/packages/core/next-development-transition.js +0 -738
  243. package/packages/core/publication-rehearsal-projection.js +0 -173
  244. package/packages/core/publication-rehearsal-runtime.js +0 -921
  245. package/scripts/aws-macos-jit-instance-rehydrate.mjs +0 -260
  246. package/scripts/aws-macos-jit-source-rebind.mjs +0 -724
  247. package/scripts/dev-delivery-native-run.mjs +0 -187
  248. package/scripts/dev-delivery-two-phase.mjs +0 -598
  249. package/scripts/generate-next-development-guidance.mjs +0 -49
  250. package/scripts/materialize-self-release-candidate-version.mjs +0 -137
  251. package/scripts/next-development-self-dogfood-harness.mjs +0 -409
  252. package/scripts/next-development-self-dogfood.mjs +0 -532
  253. package/scripts/next-development-transition.mjs +0 -47
  254. package/scripts/release-candidate-tail-reseal.mjs +0 -426
  255. package/templates/native-dev-delivery.yml +0 -82
@@ -0,0 +1,223 @@
1
+ ---
2
+ status: draft
3
+ period: ongoing
4
+ theme: buildchain-v4-delivery-warrant
5
+ doc_type: architecture-plan
6
+ source_level: local-files-and-public-evidence
7
+ confidence: high
8
+ sensitivity: public
9
+ evidence_grade: A
10
+ review_state: unreviewed
11
+ last_reviewed: 2026-08-08
12
+ ai_provenance:
13
+ model_family: GPT-5
14
+ product: Codex
15
+ generated_at: 2026-08-08
16
+ invisible_context: not asserted
17
+ ---
18
+
19
+ # Delivery Warrant v4 Shadow and Bootstrap Plan
20
+
21
+ This plan makes the current Delivery Warrant behavior implementable as a
22
+ provider-free Rust domain without changing production authority. The normative
23
+ machine-readable plan is
24
+ [`v4-delivery-warrant-shadow-bootstrap-plan.json`](./v4-delivery-warrant-shadow-bootstrap-plan.json).
25
+ The shared traces and frozen JavaScript projection roots are in
26
+ [`v4-delivery-warrant-shadow-fixtures.json`](./v4-delivery-warrant-shadow-fixtures.json).
27
+
28
+ ## Decision
29
+
30
+ TypeScript v3 remains the sole production writer through shadow and v4-read.
31
+ Rust may decide and fold the same canonical events, but it emits only a
32
+ non-authoritative projection until an independently reviewed protected revision
33
+ passes every write-cutover gate. At cutover there is still one authority: Rust
34
+ owns pure decision/fold and one TypeScript adapter owns ordered effects. A
35
+ per-request authority switch and permanent dual writes are forbidden.
36
+
37
+ The bootstrap authority is exact, not narrative:
38
+
39
+ - v3 authority revision: `b9fbfd9d6ee909ee3a8c4bd6116e7ddafd7b05e1`
40
+ - qualified v4 bootstrap revision: `d827bb223e4b78551feed69827f3e67839821171`
41
+ - qualification root:
42
+ `sha256:ea58bf84bd8ba32d0d7931328a2209f937bd3b81d3215b27f2ca67abc704a673`
43
+ - candidate self-qualification: forbidden
44
+ - later authority: the exact prior qualified protected v4 revision (N-1)
45
+
46
+ ## Source audit
47
+
48
+ The plan is grounded at repository revision
49
+ `3fd14c7a6237c3a1709ce29fc9fcb4ac150a0e5d` and preserves the current v3
50
+ inventory rather than reconstructing it from workflow prose.
51
+
52
+ | Concern | Source of record | Result |
53
+ | ------------------------------------------------ | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- |
54
+ | Current states, events, writers, stores, effects | `v3-core-mechanism-inventory.json` and `v4-capability-state-machine-manifest.json` | Nine states, seven manifest events, TypeScript v3 sole writer |
55
+ | Queue roots, generation, selection, leases | `packages/core/dev-delivery-warrant.js` | Rooted successors, bounded FIFO/aging, one active fence |
56
+ | Terminal behavior | settlement and cancellation modules plus Warrant tests | Active fenced close, exact queued cancellation, terminal/no-authority no-ops |
57
+ | Durable compare-and-set | `scripts/dev-delivery-warrant.mjs` | Immutable Git commit plus expected commit/root readback |
58
+ | Protected effects | Buildchain dev delivery, close, and cancel workflows | GitHub admission occurs after exact state readback |
59
+ | Bootstrap and N-1 | `v4-bootstrap-authority.json` and `v4-architecture.mjs` | v3 bootstrap authority, protected v4 handoff, no self-qualification |
60
+
61
+ Public state-ref observations at the source audit showed an idle v4 queue at
62
+ generation 9/fencing counter 3 and an idle v3 queue at generation 103/fencing
63
+ counter 32. The history includes real expiry recovery and retained attempts,
64
+ not only unit fixtures. Protected delivery evidence includes successful runs
65
+ for [PR 2420](https://github.com/kungfu-systems/buildchain/actions/runs/31155672200)
66
+ and [PR 2421](https://github.com/kungfu-systems/buildchain/actions/runs/31154367136),
67
+ plus fail-closed attempts where admission or source identity disagreed before a
68
+ later corrected run. These observations are evidence samples, not a new
69
+ authority source.
70
+
71
+ ## Transition semantics
72
+
73
+ The JSON plan is the complete matrix. Each row freezes source states, guards,
74
+ generation behavior, fencing, clock, roots, errors, recovery, and idempotence.
75
+ The important semantic distinctions are:
76
+
77
+ | Event | Authoritative result |
78
+ | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
79
+ | `submit` | Append a candidate, safely repair the same attempt's head while retaining age, or append a chained attempt after terminal history. The legacy duplicate receipt says no-op but still changes queue time/generation/root. |
80
+ | `select` / `lease` | Recover expiry first, retain a live active Warrant non-preemptively, otherwise deterministically select and mint the next fence. `lease` is a manifest alias, not a second operation. |
81
+ | `renew` | Require the exact live candidate, fencing token, lease generation, and unexpired lease; extend expiry and project the candidate to `proving`. |
82
+ | `recover-expired` | Reject the old fence, retain enqueue age, increment attempts/recoveries, and return to `queued`. |
83
+ | `settle` | Close an active exact fence, cancel an exact queued candidate, accept an exact terminal duplicate, or report a rooted never-admitted no-op. |
84
+ | `cancel` | Cancel only an exact queued candidate without minting a Warrant; active states must use fenced settlement. |
85
+
86
+ `waiting` and `blocked` are accepted active states but have no exported legacy
87
+ transition that enters them. This is a cutover blocker: Wave 1 must add explicit
88
+ events or remove those states through a protected manifest change. The plan
89
+ does not invent missing behavior.
90
+
91
+ ## Canonical core and boundary
92
+
93
+ Wave 1 implements nine reusable primitives: canonical JSON, content roots,
94
+ expected-old comparison, explicit clock, decide/fold, declarative effects,
95
+ provider-neutral observations, typed bounded retry, and rooted receipts.
96
+
97
+ Canonical JSON v1 is deliberately narrow: schemas use ASCII property names and
98
+ integer numbers; object keys use ASCII code-point order; arrays preserve order;
99
+ JSON bytes are UTF-8 and end with one LF. This makes JavaScript/Rust fixtures
100
+ portable while exposing the legacy `localeCompare` key ordering as an explicit
101
+ disagreement. The queue root excludes its `stateRoot` member.
102
+
103
+ Rust domain code may import canonical contracts, hashing, and time value types.
104
+ It may not import provider SDKs, access the network/filesystem, or sample an
105
+ ambient clock. TypeScript adapters sample time once, execute Git/GitHub effects,
106
+ perform exact readback, enforce retry budgets, and retain evidence.
107
+
108
+ ## Shadow and fault proof
109
+
110
+ Both implementations consume the same fixture bytes. The semantic projection
111
+ compares decisions/errors, successor queue bytes and roots, generation/fencing,
112
+ ordered effects, and receipt bytes/roots. The checked-in fixture suite covers:
113
+
114
+ - submission, duplicate submission, priority selection, renewal, and close;
115
+ - lease expiry, reselection, and rejection of the stale fence;
116
+ - never-admitted settlement, active settlement, and terminal duplicate;
117
+ - queued cancellation and exact duplicate cancellation;
118
+ - accepted and stale expected-old checks, response-loss readback, and provider
119
+ conflict stop behavior.
120
+
121
+ A gate is zero-diff only when every required fixture and captured production
122
+ replay has no unexplained semantic difference. Replay inputs, both projections,
123
+ the diff, source revisions, and validator version are retained for 90 days.
124
+ Provider conflict or indeterminate readback stops; it never manufactures state.
125
+
126
+ The executable gate and its closed report contract are documented in
127
+ [`v4-delivery-warrant-semantic-diff.md`](../docs/v4-delivery-warrant-semantic-diff.md).
128
+ It adds bounded property traces and fault probes around the paired shadow
129
+ observation. A passing report only opens the reversible v4-read candidate; its
130
+ write-authorization field is permanently false.
131
+
132
+ ## Bootstrap, cutover, and rollback
133
+
134
+ | Stage | Sole authority | Exit evidence | Rollback |
135
+ | ---------------------------- | --------------------------------------------------- | ------------------------------------------------------------------------- | ---------------------------------------------------------------- |
136
+ | Legacy-authoritative shadow | TypeScript v3 | Fixture and captured-replay zero-diff; fault injection | Disable Rust invocation; queue unchanged |
137
+ | Legacy-authoritative v4 read | TypeScript v3 | One protected-release window of read parity; rollback drill | Route reads to v3 |
138
+ | v4-authoritative write | Rust decide/fold plus one TypeScript effect adapter | Cutover receipt, single-writer proof, exact readback, response-loss drill | Stop v4, restore exact pre-cutover v3 root and retained receipts |
139
+ | Legacy removal | Rust decide/fold plus one TypeScript effect adapter | No legacy callers; history replayable; N-1 fallback is protected v4 | Revert to exact prior qualified protected v4 revision |
140
+
141
+ Every stage has explicit entry, exit, evidence, rollback, and stop conditions in
142
+ the JSON plan. A rollback chooses one last-known-qualified writer for the whole
143
+ protected line. It never creates permanent dual authority.
144
+
145
+ The read candidate implements that boundary only for `observe`: v3 is the
146
+ default, v4 requires an explicit caller switch plus the exact retained
147
+ qualification root and source revisions, and any qualification, projection,
148
+ timeout, cancellation, parity, or retention failure stops. Mutation commands
149
+ never consult the read switch. The rollback drill is the explicit switch back
150
+ to v3 while retaining the v4 evidence for diagnosis.
151
+
152
+ ## Wave 1 entry
153
+
154
+ Wave 0 reconciliation proves the four protected child deliveries and opens the
155
+ implementation entry for Wave 1. The earlier wording made the whole wave depend
156
+ on the zero-diff gate even though that gate is produced by the wave itself; that
157
+ circular gate is invalidated. Zero-diff remains mandatory specifically before
158
+ the reversible v4-read candidate.
159
+
160
+ The dependency order is canonical contracts, shared fixture runner, Rust pure
161
+ domain and TypeScript shadow adapter, semantic-diff gate, then the read
162
+ candidate. The first five nodes do not move authority. Rust writer effects,
163
+ Release Transaction, Candidate Capsule, resume planning, consumer migration,
164
+ and actual provider effects remain out of scope.
165
+
166
+ ## Wave 0 reconciliation
167
+
168
+ The machine-readable plan records exact protected PR, source, merge, review,
169
+ and check evidence for the inventory, constitution, bridge spike, and Warrant
170
+ plan. All four deliveries are proved. The Initiative matrix is deliberately
171
+ stricter than child completion: the Agent state/explain/plan interface and
172
+ cross-platform bridge evidence are partial, while resumable release, self
173
+ dogfood, migration, legacy removal, and final v4 qualification are missing.
174
+ TypeScript v3 remains the sole production authority throughout.
175
+
176
+ ## Wave 1 reconciliation
177
+
178
+ All six Wave 1 child Assignments are terminal and independently delivered to
179
+ the protected `dev/v4/v4.0` line in dependency order: canonical contracts,
180
+ shared fixtures, the provider-free Rust Warrant domain, the effect-disabled
181
+ TypeScript shadow adapter, the fail-closed semantic-diff gate, and the
182
+ reversible read candidate. The machine-readable reconciliation binds every
183
+ child to its native capture receipt and portable terminal seal as well as its
184
+ exact source, merge, tree, review, and check evidence. The final protected
185
+ child revision is `955639299f6b94bdcc8affd91b3361ad1bb42d06`.
186
+
187
+ The Initiative acceptance matrix is intentionally not inferred from six green
188
+ children. v3 safety, the protected v4 line, authority, dependency direction,
189
+ semantic budgets, and the Warrant pilot are proved. Agent state/explain/plan
190
+ and bridge portability remain partial. Resumable release, self dogfood,
191
+ consumer migration and legacy removal, and final v4 qualification remain
192
+ missing. No responsibility row is invalidated: the former Wave 1 entry-cycle
193
+ conflict is resolved by the protected zero-diff gate and read candidate.
194
+
195
+ The parent Initiative remains inert and TypeScript v3 remains the sole
196
+ production writer. Wave 1 does not authorize a provider effect, release,
197
+ cutover, migration, or legacy removal.
198
+
199
+ ## Wave 2 capture boundary
200
+
201
+ The exact residual opens five bounded, effect-disabled Stage Capsule and
202
+ cross-run resume assignments: canonical Stage Capsule contracts,
203
+ content-addressed storage and retention, three-platform checkpoints, a
204
+ deterministic minimal resume planner, and a final qualification reconciliation.
205
+ Their dependency graph is recorded in the machine plan. Capturing those
206
+ assignments does not execute them and does not move production authority;
207
+ Candidate Capsule completion, Release Transaction authority, real provider
208
+ calls, release publication, read/write cutover, consumer migration, and legacy
209
+ removal remain explicit future gates.
210
+
211
+ ## Verification
212
+
213
+ Run the focused contract and fixture checks with:
214
+
215
+ ```sh
216
+ node scripts/v4-warrant-shadow-plan.mjs validate
217
+ node --test tests/v4-warrant-shadow-plan.test.mjs
218
+ node scripts/v4-architecture.mjs validate
219
+ ```
220
+
221
+ The repository `check` command runs the plan validator and the unit suite. A
222
+ protected design PR must also pass schema/format checks, independent review,
223
+ exact N-1 qualification, and the existing architecture gate.
@@ -0,0 +1,318 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://buildchain.libkungfu.dev/schemas/v4-delivery-warrant-shadow-bootstrap-plan-v1.schema.json",
4
+ "title": "Buildchain v4 Delivery Warrant Shadow and Bootstrap Plan",
5
+ "type": "object",
6
+ "required": [
7
+ "schemaVersion",
8
+ "contract",
9
+ "releaseLine",
10
+ "sourceCut",
11
+ "legacyAuthority",
12
+ "canonicalContract",
13
+ "transitionMatrix",
14
+ "primitives",
15
+ "boundaries",
16
+ "faultModel",
17
+ "shadow",
18
+ "authority",
19
+ "rollout",
20
+ "legacyDisagreements",
21
+ "wave0Reconciliation",
22
+ "wave1",
23
+ "wave1Reconciliation",
24
+ "wave2",
25
+ "protectedDelivery"
26
+ ],
27
+ "additionalProperties": false,
28
+ "properties": {
29
+ "schemaVersion": { "const": 1 },
30
+ "contract": {
31
+ "const": "kungfu-buildchain-v4-delivery-warrant-shadow-bootstrap-plan"
32
+ },
33
+ "releaseLine": { "const": "dev/v4/v4.0" },
34
+ "sourceCut": { "$ref": "#/$defs/object" },
35
+ "legacyAuthority": { "$ref": "#/$defs/object" },
36
+ "canonicalContract": { "$ref": "#/$defs/object" },
37
+ "transitionMatrix": {
38
+ "type": "array",
39
+ "minItems": 7,
40
+ "items": { "$ref": "#/$defs/transition" }
41
+ },
42
+ "primitives": {
43
+ "type": "array",
44
+ "minItems": 9,
45
+ "maxItems": 9,
46
+ "items": { "$ref": "#/$defs/primitive" }
47
+ },
48
+ "boundaries": { "$ref": "#/$defs/object" },
49
+ "faultModel": { "$ref": "#/$defs/nonEmptyObjectArray" },
50
+ "shadow": { "$ref": "#/$defs/object" },
51
+ "authority": { "$ref": "#/$defs/object" },
52
+ "rollout": {
53
+ "type": "array",
54
+ "minItems": 4,
55
+ "maxItems": 4,
56
+ "items": { "$ref": "#/$defs/rollout" }
57
+ },
58
+ "legacyDisagreements": { "$ref": "#/$defs/nonEmptyObjectArray" },
59
+ "wave0Reconciliation": { "$ref": "#/$defs/reconciliation" },
60
+ "wave1": { "$ref": "#/$defs/wave" },
61
+ "wave1Reconciliation": { "$ref": "#/$defs/wave1Reconciliation" },
62
+ "wave2": { "$ref": "#/$defs/wave2" },
63
+ "protectedDelivery": { "$ref": "#/$defs/object" }
64
+ },
65
+ "$defs": {
66
+ "object": { "type": "object", "minProperties": 1 },
67
+ "stringArray": {
68
+ "type": "array",
69
+ "minItems": 1,
70
+ "items": { "type": "string", "minLength": 1 }
71
+ },
72
+ "nonEmptyObjectArray": {
73
+ "type": "array",
74
+ "minItems": 1,
75
+ "items": { "$ref": "#/$defs/object" }
76
+ },
77
+ "transition": {
78
+ "type": "object",
79
+ "required": [
80
+ "event",
81
+ "from",
82
+ "guards",
83
+ "generation",
84
+ "fencing",
85
+ "clock",
86
+ "roots",
87
+ "errors",
88
+ "recovery",
89
+ "idempotence"
90
+ ],
91
+ "additionalProperties": false,
92
+ "properties": {
93
+ "event": { "type": "string", "minLength": 1 },
94
+ "from": { "$ref": "#/$defs/stringArray" },
95
+ "guards": { "$ref": "#/$defs/stringArray" },
96
+ "generation": { "type": "string", "minLength": 1 },
97
+ "fencing": { "type": "string", "minLength": 1 },
98
+ "clock": { "type": "string", "minLength": 1 },
99
+ "roots": { "$ref": "#/$defs/stringArray" },
100
+ "errors": { "$ref": "#/$defs/stringArray" },
101
+ "recovery": { "type": "string", "minLength": 1 },
102
+ "idempotence": { "type": "string", "minLength": 1 }
103
+ }
104
+ },
105
+ "primitive": {
106
+ "type": "object",
107
+ "required": ["id", "input", "output", "effects"],
108
+ "additionalProperties": false,
109
+ "properties": {
110
+ "id": { "type": "string", "minLength": 1 },
111
+ "input": { "type": "string", "minLength": 1 },
112
+ "output": { "type": "string", "minLength": 1 },
113
+ "effects": { "type": "string", "minLength": 1 }
114
+ }
115
+ },
116
+ "rollout": {
117
+ "type": "object",
118
+ "required": [
119
+ "id",
120
+ "authority",
121
+ "entry",
122
+ "exit",
123
+ "rollback",
124
+ "evidence",
125
+ "stopConditions"
126
+ ],
127
+ "additionalProperties": false,
128
+ "properties": {
129
+ "id": { "type": "string", "minLength": 1 },
130
+ "authority": { "type": "string", "minLength": 1 },
131
+ "entry": { "$ref": "#/$defs/stringArray" },
132
+ "exit": { "$ref": "#/$defs/stringArray" },
133
+ "rollback": { "$ref": "#/$defs/stringArray" },
134
+ "evidence": { "$ref": "#/$defs/stringArray" },
135
+ "stopConditions": { "$ref": "#/$defs/stringArray" }
136
+ }
137
+ },
138
+ "reconciliation": {
139
+ "type": "object",
140
+ "required": [
141
+ "sourceRevision",
142
+ "productionAuthority",
143
+ "children",
144
+ "initiativeMatrix",
145
+ "conflicts",
146
+ "entryDecision",
147
+ "residualResponsibility"
148
+ ],
149
+ "additionalProperties": false,
150
+ "properties": {
151
+ "sourceRevision": { "type": "string", "pattern": "^[0-9a-f]{40}$" },
152
+ "productionAuthority": { "const": "typescript-v3" },
153
+ "children": {
154
+ "type": "array",
155
+ "minItems": 4,
156
+ "maxItems": 4,
157
+ "items": { "$ref": "#/$defs/childEvidence" }
158
+ },
159
+ "initiativeMatrix": {
160
+ "type": "array",
161
+ "minItems": 1,
162
+ "items": { "$ref": "#/$defs/matrixRow" }
163
+ },
164
+ "conflicts": { "$ref": "#/$defs/nonEmptyObjectArray" },
165
+ "entryDecision": { "const": "wave1-implementation-open" },
166
+ "residualResponsibility": { "$ref": "#/$defs/stringArray" }
167
+ }
168
+ },
169
+ "childEvidence": {
170
+ "type": "object",
171
+ "required": [
172
+ "id",
173
+ "status",
174
+ "base",
175
+ "pullRequest",
176
+ "sourceRevision",
177
+ "mergeRevision",
178
+ "review",
179
+ "checks"
180
+ ],
181
+ "additionalProperties": false,
182
+ "properties": {
183
+ "id": { "type": "string", "minLength": 1 },
184
+ "status": { "const": "proved" },
185
+ "base": { "type": "string", "pattern": "^dev/v[34]/v[34]\\.0$" },
186
+ "pullRequest": { "type": "integer", "minimum": 1 },
187
+ "sourceRevision": { "type": "string", "pattern": "^[0-9a-f]{40}$" },
188
+ "mergeRevision": { "type": "string", "pattern": "^[0-9a-f]{40}$" },
189
+ "review": { "const": "exact-head-approved-by-kungfu-origin" },
190
+ "checks": { "type": "string", "minLength": 1 }
191
+ }
192
+ },
193
+ "matrixRow": {
194
+ "type": "object",
195
+ "required": ["id", "status"],
196
+ "additionalProperties": false,
197
+ "properties": {
198
+ "id": { "type": "string", "minLength": 1 },
199
+ "status": { "enum": ["proved", "partial", "missing", "invalidated"] }
200
+ }
201
+ },
202
+ "wave": {
203
+ "type": "object",
204
+ "required": ["entryGate", "readCandidateEntryGate", "nodes"],
205
+ "additionalProperties": false,
206
+ "properties": {
207
+ "entryGate": { "const": "wave0-reconciliation-proved" },
208
+ "readCandidateEntryGate": {
209
+ "const": "all-shadow-zero-diff-gates-pass"
210
+ },
211
+ "nodes": {
212
+ "type": "array",
213
+ "minItems": 6,
214
+ "maxItems": 6,
215
+ "items": { "$ref": "#/$defs/waveNode" }
216
+ }
217
+ }
218
+ },
219
+ "waveNode": {
220
+ "type": "object",
221
+ "required": ["id", "dependsOn", "deliverable"],
222
+ "additionalProperties": false,
223
+ "properties": {
224
+ "id": { "type": "string", "minLength": 1 },
225
+ "dependsOn": {
226
+ "type": "array",
227
+ "items": { "type": "string", "minLength": 1 },
228
+ "uniqueItems": true
229
+ },
230
+ "deliverable": { "type": "string", "minLength": 1 }
231
+ }
232
+ },
233
+ "wave1Reconciliation": {
234
+ "type": "object",
235
+ "required": [
236
+ "sourceRevision",
237
+ "productionAuthority",
238
+ "parentInitiativeState",
239
+ "children",
240
+ "initiativeMatrix",
241
+ "conflicts",
242
+ "decision",
243
+ "residualResponsibility"
244
+ ],
245
+ "additionalProperties": false,
246
+ "properties": {
247
+ "sourceRevision": { "type": "string", "pattern": "^[0-9a-f]{40}$" },
248
+ "productionAuthority": { "const": "typescript-v3" },
249
+ "parentInitiativeState": { "const": "inert" },
250
+ "children": {
251
+ "type": "array",
252
+ "minItems": 6,
253
+ "maxItems": 6,
254
+ "items": { "$ref": "#/$defs/wave1ChildEvidence" }
255
+ },
256
+ "initiativeMatrix": {
257
+ "type": "array",
258
+ "minItems": 12,
259
+ "maxItems": 12,
260
+ "items": { "$ref": "#/$defs/matrixRow" }
261
+ },
262
+ "conflicts": { "$ref": "#/$defs/nonEmptyObjectArray" },
263
+ "decision": {
264
+ "const": "capture-wave2-resumable-release-foundation"
265
+ },
266
+ "residualResponsibility": { "$ref": "#/$defs/stringArray" }
267
+ }
268
+ },
269
+ "wave1ChildEvidence": {
270
+ "type": "object",
271
+ "required": [
272
+ "id",
273
+ "assignmentId",
274
+ "status",
275
+ "pullRequest",
276
+ "sourceRevision",
277
+ "mergeRevision",
278
+ "treeRevision",
279
+ "captureReceiptRoot",
280
+ "sealRoot",
281
+ "review",
282
+ "checks"
283
+ ],
284
+ "additionalProperties": false,
285
+ "properties": {
286
+ "id": { "type": "string", "minLength": 1 },
287
+ "assignmentId": { "type": "string", "minLength": 1 },
288
+ "status": { "const": "proved" },
289
+ "pullRequest": { "type": "integer", "minimum": 1 },
290
+ "sourceRevision": { "type": "string", "pattern": "^[0-9a-f]{40}$" },
291
+ "mergeRevision": { "type": "string", "pattern": "^[0-9a-f]{40}$" },
292
+ "treeRevision": { "type": "string", "pattern": "^[0-9a-f]{40}$" },
293
+ "captureReceiptRoot": {
294
+ "type": "string",
295
+ "pattern": "^sha256:[0-9a-f]{64}$"
296
+ },
297
+ "sealRoot": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
298
+ "review": { "const": "exact-head-approved-by-kungfu-origin" },
299
+ "checks": { "type": "string", "minLength": 1 }
300
+ }
301
+ },
302
+ "wave2": {
303
+ "type": "object",
304
+ "required": ["authority", "mode", "nodes"],
305
+ "additionalProperties": false,
306
+ "properties": {
307
+ "authority": { "const": "typescript-v3" },
308
+ "mode": { "const": "effect-disabled-shadow-foundation" },
309
+ "nodes": {
310
+ "type": "array",
311
+ "minItems": 5,
312
+ "maxItems": 5,
313
+ "items": { "$ref": "#/$defs/waveNode" }
314
+ }
315
+ }
316
+ }
317
+ }
318
+ }