@kungfu-tech/buildchain 4.0.0 → 4.0.1-alpha.10

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 (228) hide show
  1. package/AGENTS.md +13 -5
  2. package/actions/promote-buildchain-ref/README.md +11 -6
  3. package/actions/release-tail/README.md +8 -0
  4. package/architecture/ci-lane-change-budget.json +187 -0
  5. package/architecture/decisions/0002-next-development-transition.md +101 -0
  6. package/architecture/decisions/0003-two-phase-delivery-warrant.md +152 -0
  7. package/architecture/internal-capabilities.json +219 -7
  8. package/architecture/maintainability-policy.json +246 -29
  9. package/architecture/release-tail-contract-inventory.json +5 -2
  10. package/architecture/v3-core-mechanism-inventory.json +91 -0
  11. package/architecture/v4-adopter-delivery-parity.json +32 -5
  12. package/architecture/v4-capability-state-machine-manifest.json +73 -0
  13. package/architecture/v4-compatibility-facts-parity.json +77 -0
  14. package/architecture/v4-delivery-authority-parity.json +250 -0
  15. package/architecture/v4-delivery-warrant-shadow-fixtures.json +41 -9
  16. package/architecture/v4-floating-consumer-policy.json +81 -0
  17. package/architecture/v4-floating-consumer-policy.md +32 -0
  18. package/architecture/v4-next-development-parity.json +192 -0
  19. package/architecture/v4-publication-rehearsal-parity.json +84 -0
  20. package/architecture/v4-release-train-parity.json +1 -0
  21. package/architecture/v4-runtime-ref-resume-authority.json +64 -0
  22. package/architecture/v4-stage-capsule-qualification.json +2 -2
  23. package/architecture/v4-tail-reseal-parity.json +150 -0
  24. package/bin/buildchain.mjs +32 -3
  25. package/bin/internal/adopter-delivery-cli.mjs +70 -0
  26. package/bin/internal/command-registry.mjs +3 -0
  27. package/bin/internal/compatibility-facts-cli.mjs +101 -0
  28. package/bin/internal/trust-release-release-handlers.mjs +5 -0
  29. package/contracts/dev-delivery-authority-v2.schema.json +662 -0
  30. package/contracts/fixtures/next-development-transition-v1/anchored-manual-waiting.json +47 -0
  31. package/contracts/fixtures/next-development-transition-v1/semver-auto-planned.json +47 -0
  32. package/contracts/fixtures/next-development-transition-v1/version-model-cases.json +40 -0
  33. package/contracts/fixtures/v4-adopter-delivery-v1/archive-template.json +19 -0
  34. package/contracts/fixtures/v4-adopter-delivery-v1/bootstrap-positive.json +93 -0
  35. package/contracts/fixtures/v4-adopter-delivery-v1/gate-positive.json +29 -0
  36. package/contracts/fixtures/v4-adopter-delivery-v1/gate-unknown-selector.json +26 -0
  37. package/contracts/fixtures/v4-adopter-delivery-v1/offline-vectors.json +50 -0
  38. package/contracts/fixtures/v4-compatibility-facts-v1/shared.json +1129 -0
  39. package/contracts/fixtures/v4-floating-consumer-policy-v1/cases.json +59 -0
  40. package/contracts/fixtures/v4-publication-rehearsal-v1/candidate/artifacts/product.bin +1 -0
  41. package/contracts/fixtures/v4-publication-rehearsal-v1/candidate/config/buildchain.toml +5 -0
  42. package/contracts/fixtures/v4-publication-rehearsal-v1/candidate/documents/release-activation.json +1 -0
  43. package/contracts/fixtures/v4-publication-rehearsal-v1/candidate/documents/signed-channel.json +1 -0
  44. package/contracts/fixtures/v4-publication-rehearsal-v1/candidate/evidence/qualification.json +1 -0
  45. package/contracts/fixtures/v4-publication-rehearsal-v1/candidate/manifests/candidate.json +5 -0
  46. package/contracts/fixtures/v4-publication-rehearsal-v1/candidate/manifests/release-passport.json +1 -0
  47. package/contracts/fixtures/v4-publication-rehearsal-v1/capsule.json +707 -0
  48. package/contracts/fixtures/v4-publication-rehearsal-v1/offline-vectors.json +27 -0
  49. package/contracts/fixtures/v4-runtime-ref-resume-authority-v1/scenario.json +15 -0
  50. package/contracts/fixtures/v4-tail-reseal-v1/valid.json +229 -0
  51. package/contracts/next-development-request-v1.schema.json +66 -0
  52. package/contracts/next-development-transition-v1.schema.json +292 -0
  53. package/contracts/v4-adopter-delivery-v1.schema.json +81 -0
  54. package/contracts/v4-compatibility-facts-v1.schema.json +230 -0
  55. package/contracts/v4-floating-consumer-policy-receipt-v1.schema.json +107 -0
  56. package/contracts/v4-publication-rehearsal-capsule-v1.schema.json +233 -0
  57. package/contracts/v4-runtime-ref-resume-authority-v1.schema.json +235 -0
  58. package/contracts/v4-tail-reseal-v1.schema.json +276 -0
  59. package/dist/site/agent-index.json +5 -0
  60. package/dist/site/artifact-schemas.json +10 -0
  61. package/dist/site/buildchain-contract.json +1562 -44
  62. package/dist/site/buildchain-site.json +684 -42
  63. package/dist/site/capability-registry.json +17 -14
  64. package/dist/site/cli-registry.json +205 -3
  65. package/dist/site/controller-registry.json +62 -6
  66. package/dist/site/kfd-claims.json +551 -22
  67. package/dist/site/kfd-upstream-aggregate.json +1 -1
  68. package/dist/site/manual-registry.json +55 -9
  69. package/dist/site/node-api-registry.json +15247 -8690
  70. package/dist/site/page-registry.json +647 -29
  71. package/dist/site/public-surface-audit.json +876 -55
  72. package/dist/site/publication-authority-registry.json +44 -8
  73. package/dist/site/publication-registry.json +4 -4
  74. package/dist/site/release-provenance.json +26 -0
  75. package/dist/site/schemas/dev-delivery-authority-v2.schema.json +662 -0
  76. package/dist/site/schemas/release-tail-capabilities-v1.schema.json +199 -0
  77. package/dist/site/schemas/v4-adopter-delivery-v1.schema.json +81 -0
  78. package/dist/site/schemas/v4-compatibility-facts-v1.schema.json +230 -0
  79. package/dist/site/schemas/v4-publication-rehearsal-capsule-v1.schema.json +233 -0
  80. package/dist/site/site-manifest.json +37 -13
  81. package/dist/site/workflow-registry.json +200 -22
  82. package/docs/MAP.md +10 -2
  83. package/docs/cli-reference.md +404 -13
  84. package/docs/cli.md +8 -0
  85. package/docs/dev-alpha-candidate-patrol.md +8 -0
  86. package/docs/dev-delivery-qualification-landing-adr.md +251 -0
  87. package/docs/dev-delivery-warrant.md +361 -30
  88. package/docs/lifecycle-protocol.md +41 -0
  89. package/docs/next-development-transition.md +118 -0
  90. package/docs/node-api-reference.md +748 -322
  91. package/docs/release-tail-provider-plane.md +30 -0
  92. package/docs/reusable-build-surface.md +41 -0
  93. package/docs/runtime-train-validation.md +10 -0
  94. package/docs/v4-adopter-delivery.md +133 -0
  95. package/docs/v4-compatibility-facts.md +91 -0
  96. package/docs/v4-publication-rehearsal.md +130 -0
  97. package/docs/v4-runtime-ref-resume-authority.md +69 -0
  98. package/docs/v4-tail-reseal.md +73 -0
  99. package/docs/versioning.md +4 -2
  100. package/package.json +36 -6
  101. package/packages/core/adopter-delivery-passport.js +259 -0
  102. package/packages/core/adopter-delivery-vectors.js +158 -0
  103. package/packages/core/adopter-delivery-vectors.json +77 -0
  104. package/packages/core/artifact-signing.js +61 -0
  105. package/packages/core/buildchain-agent-manuals.js +3 -0
  106. package/packages/core/buildchain-compatibility-authority.js +336 -0
  107. package/packages/core/buildchain-compatibility-fact.js +394 -0
  108. package/packages/core/buildchain-compatibility-facts.json +217 -0
  109. package/packages/core/buildchain-compatibility-proof.js +566 -0
  110. package/packages/core/buildchain-config.js +150 -1
  111. package/packages/core/buildchain-contract.js +96 -143
  112. package/packages/core/buildchain-delivery-bootstrap.js +240 -0
  113. package/packages/core/buildchain-delivery-infrastructure.js +164 -0
  114. package/packages/core/buildchain-delivery-self-dogfood.js +395 -0
  115. package/packages/core/buildchain-publication-authority.js +1 -0
  116. package/packages/core/channel-candidate.js +8 -0
  117. package/packages/core/channel-promotion-baseline.js +55 -0
  118. package/packages/core/ci-lane-change-budget.js +247 -0
  119. package/packages/core/dev-alpha-candidate-selection.js +10 -2
  120. package/packages/core/dev-delivery-authority-candidate.js +270 -0
  121. package/packages/core/dev-delivery-authority-evidence.js +146 -0
  122. package/packages/core/dev-delivery-authority-landing.js +461 -0
  123. package/packages/core/dev-delivery-authority-observation.js +48 -0
  124. package/packages/core/dev-delivery-authority-qualification.js +591 -0
  125. package/packages/core/dev-delivery-authority-settlement.js +213 -0
  126. package/packages/core/dev-delivery-authority-state.js +583 -0
  127. package/packages/core/dev-delivery-candidate-identity.js +13 -0
  128. package/packages/core/dev-delivery-contract-surface.js +76 -0
  129. package/packages/core/dev-delivery-execution-failure.js +133 -0
  130. package/packages/core/dev-delivery-execution-transfer.js +592 -0
  131. package/packages/core/dev-delivery-landing-admission-core.js +119 -0
  132. package/packages/core/dev-delivery-landing-readback.js +598 -0
  133. package/packages/core/dev-delivery-landing-terminal-evidence.js +271 -0
  134. package/packages/core/dev-delivery-landing-testing-port.js +6 -0
  135. package/packages/core/dev-delivery-native-execution.js +110 -0
  136. package/packages/core/dev-delivery-native-proof.js +562 -0
  137. package/packages/core/dev-delivery-process-boundary.js +563 -0
  138. package/packages/core/dev-delivery-proof.js +37 -3
  139. package/packages/core/dev-delivery-provider-attempt.js +127 -0
  140. package/packages/core/dev-delivery-provider-heartbeat.js +382 -0
  141. package/packages/core/dev-delivery-warrant-cancellation.js +1 -0
  142. package/packages/core/dev-delivery-warrant-qualification.js +145 -0
  143. package/packages/core/dev-delivery-warrant-settlement.js +237 -36
  144. package/packages/core/dev-delivery-warrant-state.js +587 -0
  145. package/packages/core/dev-delivery-warrant.js +328 -370
  146. package/packages/core/github-governance-authority.js +1 -0
  147. package/packages/core/index.js +7 -0
  148. package/packages/core/kungfu-temporal-fact.js +557 -0
  149. package/packages/core/legacy-kfd-adopter-driver.js +167 -0
  150. package/packages/core/next-development-candidate-reservation.js +186 -0
  151. package/packages/core/next-development-controller.js +728 -0
  152. package/packages/core/next-development-projection.js +287 -0
  153. package/packages/core/next-development-transition.js +738 -0
  154. package/packages/core/paper-agent-entry.js +11 -5
  155. package/packages/core/paper.js +16 -5
  156. package/packages/core/publication-authority.js +5 -5
  157. package/packages/core/published-delivery-authority.js +266 -0
  158. package/packages/core/release-candidate-recovery.js +66 -11
  159. package/packages/core/release-candidate.js +79 -19
  160. package/packages/core/release-passport.js +271 -38
  161. package/packages/core/v4-adopter-delivery-parity.js +3 -3
  162. package/packages/core/v4-adopter-delivery.js +359 -0
  163. package/packages/core/v4-canonical-contracts.js +5 -0
  164. package/packages/core/v4-delivery-warrant-read-candidate.js +10 -3
  165. package/packages/core/v4-floating-consumer-evidence.js +338 -0
  166. package/packages/core/v4-floating-consumer-policy.js +569 -0
  167. package/packages/core/v4-floating-consumer-release-passport.js +153 -0
  168. package/packages/core/v4-publication-rehearsal-capsule.js +468 -0
  169. package/packages/core/v4-publication-rehearsal-provider-bindings.js +212 -0
  170. package/packages/core/v4-publication-rehearsal.js +481 -0
  171. package/packages/core/v4-runtime-ref-resume-authority.js +625 -0
  172. package/packages/core/v4-runtime-selector-persistence.js +228 -0
  173. package/packages/core/v4-tail-reseal-contract.js +26 -0
  174. package/packages/core/v4-tail-reseal-github.js +178 -0
  175. package/packages/core/v4-tail-reseal-receipt.js +225 -0
  176. package/packages/core/v4-tail-reseal.js +594 -0
  177. package/packages/core/workflow-yaml-contract.js +72 -2
  178. package/scripts/audit-publication-control-plane.mjs +31 -31
  179. package/scripts/buildchain-cli-help.mjs +41 -2
  180. package/scripts/check-ci-lane-change-budget.mjs +100 -0
  181. package/scripts/check-inventory.mjs +14 -3
  182. package/scripts/check-v4-floating-consumer-policy-contract.mjs +217 -0
  183. package/scripts/check-v4-public-dogfood-contract.mjs +6 -11
  184. package/scripts/dev-alpha-candidate-patrol.mjs +22 -1
  185. package/scripts/dev-delivery-authority-command-adapters.mjs +206 -0
  186. package/scripts/dev-delivery-authority-provider.mjs +28 -0
  187. package/scripts/dev-delivery-authority.mjs +490 -0
  188. package/scripts/dev-delivery-native-run.mjs +177 -0
  189. package/scripts/dev-delivery-process-boundary.mjs +260 -0
  190. package/scripts/dev-delivery-proof.mjs +67 -2
  191. package/scripts/dev-delivery-provider-heartbeat.mjs +215 -0
  192. package/scripts/dev-delivery-source-proof-replay.mjs +153 -0
  193. package/scripts/dev-delivery-source-proof-reuse.mjs +547 -0
  194. package/scripts/dev-delivery-two-phase-resume.mjs +345 -0
  195. package/scripts/dev-delivery-two-phase.mjs +573 -0
  196. package/scripts/dev-delivery-warrant-options.mjs +266 -0
  197. package/scripts/dev-delivery-warrant-store.mjs +231 -0
  198. package/scripts/dev-delivery-warrant.mjs +232 -194
  199. package/scripts/dev-pr-auto-merge.mjs +37 -48
  200. package/scripts/dev-pr-delivery-warrant.mjs +216 -2
  201. package/scripts/dev-pr-prequeue-guard.mjs +399 -0
  202. package/scripts/dev-qualification-patrol.mjs +9 -9
  203. package/scripts/dispatch-artifact-signing-authority.mjs +1 -1
  204. package/scripts/ensure-github-release.mjs +3 -3
  205. package/scripts/generate-channel-build-workflow.mjs +3 -0
  206. package/scripts/generate-channel-promotion-workflow.mjs +114 -14
  207. package/scripts/generate-next-development-guidance.mjs +49 -0
  208. package/scripts/generate-release-candidate-passport.mjs +192 -32
  209. package/scripts/generate-site-bundle.mjs +69 -4
  210. package/scripts/init-repo.mjs +26 -4
  211. package/scripts/inspect-artifact-signing-requests.mjs +6 -0
  212. package/scripts/next-development-self-dogfood-harness.mjs +460 -0
  213. package/scripts/next-development-self-dogfood.mjs +597 -0
  214. package/scripts/next-development-transition.mjs +47 -0
  215. package/scripts/npm-publish-transaction.mjs +103 -91
  216. package/scripts/promotion-channel-router.mjs +4 -4
  217. package/scripts/release-candidate-anchor-provenance.mjs +99 -0
  218. package/scripts/release-tail.mjs +51 -3
  219. package/scripts/release-train-self-dogfood.mjs +94 -92
  220. package/scripts/resume-from-candidate-run.mjs +565 -41
  221. package/scripts/seal-artifact-signing-requests.mjs +6 -0
  222. package/scripts/site-capability-metadata.mjs +43 -0
  223. package/scripts/stable-candidate-qualification.mjs +9 -10
  224. package/scripts/v4-consumer-policy.mjs +231 -0
  225. package/scripts/v4-publication-rehearsal-fixture.mjs +144 -0
  226. package/scripts/v4-tail-reseal-macos-rehearsal.mjs +134 -0
  227. package/scripts/v4-tail-reseal.mjs +416 -0
  228. package/templates/native-dev-delivery.yml +143 -0
@@ -25,19 +25,24 @@
25
25
  "id": "submit-101",
26
26
  "operation": "submit",
27
27
  "pullRequestNumber": 101,
28
+ "overrides": { "deliveryClass": "non-native-fast" },
28
29
  "now": "2026-08-07T00:00:01Z"
29
30
  },
30
31
  {
31
32
  "id": "submit-102",
32
33
  "operation": "submit",
33
34
  "pullRequestNumber": 102,
34
- "overrides": { "priority": "expedited" },
35
+ "overrides": {
36
+ "deliveryClass": "non-native-fast",
37
+ "priority": "expedited"
38
+ },
35
39
  "now": "2026-08-07T00:00:02Z"
36
40
  },
37
41
  {
38
42
  "id": "duplicate-101",
39
43
  "operation": "submit",
40
44
  "pullRequestNumber": 101,
45
+ "overrides": { "deliveryClass": "non-native-fast" },
41
46
  "now": "2026-08-07T00:00:03Z"
42
47
  },
43
48
  {
@@ -61,7 +66,7 @@
61
66
  "now": "2026-08-07T00:02:00Z"
62
67
  }
63
68
  ],
64
- "expectedLegacyProjectionRoot": "sha256:e01018e4797e98813454328aba2c0a04932885fcd6da7d216697c7961bc26f56"
69
+ "expectedLegacyProjectionRoot": "sha256:da58eec588414e16781ffad1b92d3733b207b43e2c7846f6b659c71b150d964d"
65
70
  },
66
71
  {
67
72
  "id": "lease-expiry-and-stale-fence",
@@ -76,36 +81,60 @@
76
81
  "id": "submit",
77
82
  "operation": "submit",
78
83
  "pullRequestNumber": 120,
84
+ "overrides": {
85
+ "environmentRoot": "sha256:9999999999999999999999999999999999999999999999999999999999999999",
86
+ "nativeCommandContract": {
87
+ "schema": "kungfu.buildchain.native-command-contract/v1",
88
+ "runner": "bash-lc",
89
+ "command": "node --test tests/v4-warrant-shadow-plan.test.mjs",
90
+ "commandRoot": "sha256:4d9a03536802c46fe254f247b7236925aec49d789e5e9ac7b2dceac08d7cefab"
91
+ }
92
+ },
79
93
  "now": "2026-08-07T01:00:01Z"
80
94
  },
95
+ {
96
+ "id": "submit-successor",
97
+ "operation": "submit",
98
+ "pullRequestNumber": 121,
99
+ "overrides": { "deliveryClass": "non-native-fast" },
100
+ "now": "2026-08-07T01:00:02Z"
101
+ },
81
102
  {
82
103
  "id": "select-old",
83
104
  "operation": "select",
84
105
  "saveWarrant": "old",
85
106
  "leaseSeconds": 60,
86
- "now": "2026-08-07T01:00:02Z"
107
+ "now": "2026-08-07T01:00:03Z"
87
108
  },
88
109
  {
89
110
  "id": "recover",
90
111
  "operation": "recover-expired",
91
112
  "now": "2026-08-07T01:02:00Z"
92
113
  },
114
+ {
115
+ "id": "close-expired",
116
+ "operation": "close",
117
+ "useWarrant": "old",
118
+ "outcome": "terminal-failure",
119
+ "reason": "fenced native worker stop proved",
120
+ "now": "2026-08-07T01:02:01Z"
121
+ },
93
122
  {
94
123
  "id": "select-new",
95
124
  "operation": "select",
96
125
  "saveWarrant": "new",
97
126
  "leaseSeconds": 60,
98
- "now": "2026-08-07T01:02:01Z"
127
+ "now": "2026-08-07T01:02:02Z"
99
128
  },
100
129
  {
101
130
  "id": "reject-old",
102
131
  "operation": "heartbeat",
103
132
  "useWarrant": "old",
104
133
  "expectError": "stale-fencing-token",
105
- "now": "2026-08-07T01:02:02Z"
134
+ "now": "2026-08-07T01:02:03Z"
106
135
  }
107
136
  ],
108
- "expectedLegacyProjectionRoot": "sha256:3c39ba66a2329a22f3834c4212bda001b6d5c527dcb9fa8a1b3ca88a199a7d16"
137
+ "expectedLegacyProjectionRoot": "sha256:24cf52c9108393b268cb40943f540c0e9a000a782e59251e3a9b6d5a63c1eb06"
109
138
  },
110
139
  {
111
140
  "id": "settlement-idempotence",
@@ -129,6 +158,7 @@
129
158
  "id": "submit",
130
159
  "operation": "submit",
131
160
  "pullRequestNumber": 150,
161
+ "overrides": { "deliveryClass": "non-native-fast" },
132
162
  "now": "2026-08-07T02:00:02Z"
133
163
  },
134
164
  {
@@ -153,7 +183,7 @@
153
183
  "now": "2026-08-07T02:02:00Z"
154
184
  }
155
185
  ],
156
- "expectedLegacyProjectionRoot": "sha256:b67669b2093105f3b4539ca5e4ba3d366bd7005a8781b5352377ae724d310d26"
186
+ "expectedLegacyProjectionRoot": "sha256:60fead53ff605fcd81934e6d752ea5f2b4951c57addcec1c1df87fb6dec9b7ba"
157
187
  },
158
188
  {
159
189
  "id": "queued-cancellation-idempotence",
@@ -168,6 +198,7 @@
168
198
  "id": "submit",
169
199
  "operation": "submit",
170
200
  "pullRequestNumber": 151,
201
+ "overrides": { "deliveryClass": "non-native-fast" },
171
202
  "now": "2026-08-07T03:00:01Z"
172
203
  },
173
204
  {
@@ -187,7 +218,7 @@
187
218
  "now": "2026-08-07T03:00:03Z"
188
219
  }
189
220
  ],
190
- "expectedLegacyProjectionRoot": "sha256:128104385600c72af175a3ff6a58a4266ca7dcd59a5019adbd87ca7fd9bc65c9"
221
+ "expectedLegacyProjectionRoot": "sha256:7000f721d975b379c0f321d935ab70e38589229a691517a3c41d2b1330fd3796"
191
222
  },
192
223
  {
193
224
  "id": "cas-response-loss-provider-conflict",
@@ -202,6 +233,7 @@
202
233
  "id": "submit",
203
234
  "operation": "submit",
204
235
  "pullRequestNumber": 160,
236
+ "overrides": { "deliveryClass": "non-native-fast" },
205
237
  "now": "2026-08-07T04:00:01Z"
206
238
  },
207
239
  {
@@ -221,7 +253,7 @@
221
253
  },
222
254
  { "id": "provider-stop", "operation": "provider-conflict" }
223
255
  ],
224
- "expectedLegacyProjectionRoot": "sha256:e5082eab6504bab8ee382d43429594d0bbe1ee0353f78eb21b0ead03a4740887"
256
+ "expectedLegacyProjectionRoot": "sha256:c616a8278ace8ece6933987cf9559ca53d4e2fba0e937664c2770464800cff04"
225
257
  }
226
258
  ]
227
259
  }
@@ -0,0 +1,81 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "contract": "kungfu-buildchain-v4-floating-consumer-policy/v1",
4
+ "policyVersion": "2026-08-14",
5
+ "scope": {
6
+ "repository": "kungfu-systems/buildchain",
7
+ "majorLine": "v4",
8
+ "persistedSelectors": ["v4", "v4-alpha"],
9
+ "publicWorkflowEntrypoints": [
10
+ ".github/workflows/.build.yml",
11
+ ".github/workflows/publication-artifact.yml",
12
+ ".github/workflows/release-candidate-promote.yml",
13
+ ".github/workflows/v4-stage-capsule-canary.yml"
14
+ ]
15
+ },
16
+ "contractLocks": {
17
+ "stable": {
18
+ "selector": "v4",
19
+ "path": ".buildchain/contract-lock.json"
20
+ },
21
+ "alpha": {
22
+ "selector": "v4-alpha",
23
+ "path": ".buildchain/alpha-contract-lock.json"
24
+ },
25
+ "selectedLockMustBindResolvedWorkflowShell": true,
26
+ "bothRootsRequiredInReceipt": true
27
+ },
28
+ "sourcePolicy": {
29
+ "directExactSha": "deny",
30
+ "exactDefault": "deny",
31
+ "repositoryVariableIndirection": "deny",
32
+ "inputOrEnvironmentIndirection": "deny",
33
+ "nestedCompositeIndirection": "deny",
34
+ "unknownSyntax": "deny",
35
+ "missingCallerCheckout": "deny"
36
+ },
37
+ "runtimeEscapeBoundary": {
38
+ "persistedSelectorOverride": false,
39
+ "protectedAlphaRecoveryBootstrap": {
40
+ "selector": "alpha/v4/v4.0",
41
+ "sourcePath": ".github/workflows/buildchain-ref-promotion-recovery.yml",
42
+ "workflow": ".github/workflows/.release-candidate-promote.yml",
43
+ "repository": "kungfu-systems/buildchain"
44
+ },
45
+ "trustedNonPersistentInput": true,
46
+ "requiresSeparateAuthority": true,
47
+ "requiresReadback": true,
48
+ "receiptReuse": false
49
+ },
50
+ "receipt": {
51
+ "schema": "contracts/v4-floating-consumer-policy-receipt-v1.schema.json",
52
+ "bindings": [
53
+ "caller-repository",
54
+ "caller-source-sha",
55
+ "invoked-workflow",
56
+ "visible-selector-class",
57
+ "channel",
58
+ "stable-contract-lock-root",
59
+ "alpha-contract-lock-root",
60
+ "resolved-workflow-shell-sha",
61
+ "resolved-runtime-sha",
62
+ "policy-version",
63
+ "policy-root",
64
+ "scanner-root",
65
+ "source-scan-root"
66
+ ]
67
+ },
68
+ "enforcement": {
69
+ "earliestConsumerAdmissionRequired": true,
70
+ "heavyJobsTransitivelyGated": true,
71
+ "externalCertificationRequired": true,
72
+ "releasePassportRequired": true,
73
+ "oldRuntimeSelfAuthorization": false
74
+ },
75
+ "authority": {
76
+ "v3BehaviorChange": false,
77
+ "providerEffects": false,
78
+ "credentials": false,
79
+ "productionMutation": false
80
+ }
81
+ }
@@ -0,0 +1,32 @@
1
+ # Architecture Decision: v4 Floating Consumer Admission
2
+
3
+ Status: accepted for the v4 shadow and protected-delivery line on 2026-08-14.
4
+
5
+ Buildchain v4 consumers persist only the public `v4` and `v4-alpha` selectors.
6
+ They commit both `.buildchain/contract-lock.json` and
7
+ `.buildchain/alpha-contract-lock.json`; the selected lock binds the exact commit
8
+ behind the visible workflow selector. An exact SHA remains evidence, not a
9
+ source selector.
10
+
11
+ Every declared public v4 entrypoint runs consumer admission after immutable
12
+ source/runtime checkout and before package setup, matrix expansion, build, or
13
+ publication work. Downstream jobs depend on that admission. The scanner uses
14
+ the shared workflow YAML semantic layer and follows local composite action
15
+ manifests, so block scalar text is not mistaken for a `uses` node and nested
16
+ indirection cannot hide a selector.
17
+
18
+ The rooted receipt binds the caller repository and source SHA, invoked workflow,
19
+ selector class and channel, visible workflow-shell SHA, actual runtime SHA, both
20
+ contract-lock roots, and the policy/scanner/source-scan roots. A trusted manual
21
+ train or SHA may replace only the actual runtime coordinate; it does not rewrite
22
+ the tracked selector or the lock-to-shell binding.
23
+
24
+ Release-candidate Passport construction requires the receipt for v4 runtimes.
25
+ Promotion independently certifies it, and final Release Passport construction
26
+ requires that certification to match the caller source and actual runtime.
27
+ Missing, rejected, stale, root-mismatched, or old-runtime evidence fails closed.
28
+
29
+ The normative machine declaration is
30
+ [`v4-floating-consumer-policy.json`](v4-floating-consumer-policy.json). v3
31
+ behavior, provider effects, credentials, and production mutation authority are
32
+ outside this decision.
@@ -0,0 +1,192 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "contract": "kungfu-buildchain-v4-next-development-parity",
4
+ "sourceAuthority": {
5
+ "branch": "dev/v3/v3.0",
6
+ "capturedCommit": "6b96bdad8d9f8ccf9275f27d9370a226a9c78465",
7
+ "transitionCommit": "d165c2f733859dd2e46a2d1fdb25b242e2fc2567",
8
+ "controllerCommit": "63f494d4b92c0bd01ffb454c6fce23d0692148fb",
9
+ "selfDogfoodCommit": "518bb4cb4706db1854e5a5b39bf7198f2aaa1d1d"
10
+ },
11
+ "target": {
12
+ "branch": "dev/v4/v4.0",
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"
16
+ },
17
+ "earlierContinuityDelta": {
18
+ "assignment": "2026-08-11-buildchain-next-development-version-continuity",
19
+ "disposition": "no-current-reusable-implementation-evidence",
20
+ "requiredDelta": "implement and re-prove the exact v3 semantics against the live protected v4 head"
21
+ },
22
+ "allowedDispositions": [
23
+ "implemented",
24
+ "superseded-equivalent",
25
+ "missing-before-closeout"
26
+ ],
27
+ "invariants": [
28
+ {
29
+ "id": "ND-01",
30
+ "claim": "The exact v3 planner, controller, projection and recovery authorities are mapped to current v4 files rather than inferred from the earlier continuity family.",
31
+ "disposition": "implemented",
32
+ "implementationEvidence": [
33
+ "architecture/decisions/0002-next-development-transition.md",
34
+ "packages/core/next-development-transition.js",
35
+ "packages/core/next-development-controller.js",
36
+ "packages/core/next-development-projection.js"
37
+ ],
38
+ "verificationEvidence": ["tests/v4-next-development-parity.test.mjs"]
39
+ },
40
+ {
41
+ "id": "ND-02",
42
+ "claim": "Semver automatic planning deterministically advances only the Alpha sequence on the same patch and rejects operator-selected targets.",
43
+ "disposition": "implemented",
44
+ "implementationEvidence": [
45
+ "packages/core/next-development-transition.js",
46
+ "contracts/next-development-transition-v1.schema.json"
47
+ ],
48
+ "verificationEvidence": [
49
+ "tests/next-development-transition.test.mjs",
50
+ "contracts/fixtures/next-development-transition-v1/semver-auto-planned.json"
51
+ ]
52
+ },
53
+ {
54
+ "id": "ND-03",
55
+ "claim": "Anchored manual planning remains waiting until reviewed target and exact read-only manifest digest authority are both supplied.",
56
+ "disposition": "implemented",
57
+ "implementationEvidence": [
58
+ "packages/core/next-development-transition.js",
59
+ "scripts/next-development-transition.mjs"
60
+ ],
61
+ "verificationEvidence": [
62
+ "tests/next-development-transition.test.mjs",
63
+ "tests/next-development-controller.test.mjs",
64
+ "contracts/fixtures/next-development-transition-v1/anchored-manual-waiting.json"
65
+ ]
66
+ },
67
+ {
68
+ "id": "ND-04",
69
+ "claim": "Atomic create-if-absent and compare-and-swap checkpoints create one child per completed Alpha and recover idempotent materialization after runner loss.",
70
+ "disposition": "implemented",
71
+ "implementationEvidence": [
72
+ "packages/core/next-development-controller.js"
73
+ ],
74
+ "verificationEvidence": [
75
+ "tests/next-development-controller.test.mjs",
76
+ "tests/next-development-self-dogfood.test.mjs"
77
+ ]
78
+ },
79
+ {
80
+ "id": "ND-05",
81
+ "claim": "Protected Dev movement supersedes only stale preparation, retries from current readback and preserves completed Alpha identity without rebuilding it.",
82
+ "disposition": "implemented",
83
+ "implementationEvidence": [
84
+ "packages/core/next-development-controller.js",
85
+ "actions/promote-buildchain-ref/internal/promote-alpha-channel.js",
86
+ "actions/promote-buildchain-ref/lib.js"
87
+ ],
88
+ "verificationEvidence": [
89
+ "tests/next-development-controller.test.mjs",
90
+ "tests/promote-buildchain-ref-governance.test.mjs"
91
+ ]
92
+ },
93
+ {
94
+ "id": "ND-06",
95
+ "claim": "A protected version pull request and exact source, derived, ancestry and target-version readback are mandatory before verified state.",
96
+ "disposition": "implemented",
97
+ "implementationEvidence": [
98
+ "packages/core/next-development-controller.js"
99
+ ],
100
+ "verificationEvidence": [
101
+ "tests/next-development-controller.test.mjs",
102
+ "tests/next-development-self-dogfood.test.mjs"
103
+ ]
104
+ },
105
+ {
106
+ "id": "ND-07",
107
+ "claim": "Completed candidates and Alpha publication remain immutable and terminal; next-development exposes no tag, release, package, candidate or ref-update effect.",
108
+ "disposition": "implemented",
109
+ "implementationEvidence": [
110
+ "packages/core/next-development-transition.js",
111
+ "packages/core/next-development-controller.js"
112
+ ],
113
+ "verificationEvidence": [
114
+ "tests/next-development-transition.test.mjs",
115
+ "tests/next-development-self-dogfood.test.mjs"
116
+ ]
117
+ },
118
+ {
119
+ "id": "ND-08",
120
+ "claim": "Candidate Patrol ignores pure version preparation and requires current exact blob reservation readback before later product candidate settlement.",
121
+ "disposition": "implemented",
122
+ "implementationEvidence": [
123
+ "packages/core/next-development-candidate-reservation.js",
124
+ "packages/core/channel-promotion-baseline.js",
125
+ "scripts/dev-alpha-candidate-patrol.mjs"
126
+ ],
127
+ "verificationEvidence": ["tests/dev-alpha-candidate-patrol.test.mjs"]
128
+ },
129
+ {
130
+ "id": "ND-09",
131
+ "claim": "The public CLI, Node exports, schemas, init and Paper templates, generated Agent guidance and manual all project one contract source.",
132
+ "disposition": "implemented",
133
+ "implementationEvidence": [
134
+ "bin/buildchain.mjs",
135
+ "bin/internal/command-registry.mjs",
136
+ "scripts/next-development-transition.mjs",
137
+ "package.json",
138
+ "contracts/next-development-request-v1.schema.json",
139
+ "contracts/next-development-transition-v1.schema.json",
140
+ "scripts/init-repo.mjs",
141
+ "packages/core/paper.js",
142
+ "packages/core/paper-agent-entry.js",
143
+ "packages/core/next-development-projection.js"
144
+ ],
145
+ "verificationEvidence": [
146
+ "tests/next-development-transition.test.mjs",
147
+ "tests/v4-next-development-parity.test.mjs"
148
+ ]
149
+ },
150
+ {
151
+ "id": "ND-10",
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
+ "disposition": "implemented",
154
+ "implementationEvidence": [
155
+ ".github/workflows/v4-public-consumer-dogfood.yml",
156
+ ".github/workflows/buildchain-alpha-self-dogfood.yml",
157
+ ".buildchain/buildchain.toml",
158
+ "scripts/next-development-self-dogfood.mjs",
159
+ "scripts/next-development-self-dogfood-harness.mjs"
160
+ ],
161
+ "verificationEvidence": [
162
+ "tests/next-development-self-dogfood.test.mjs",
163
+ "tests/v4-public-dogfood-contract.test.mjs"
164
+ ]
165
+ },
166
+ {
167
+ "id": "ND-11",
168
+ "claim": "Architecture inventory, capability metadata, generated references and site facts expose the current v4 next-development contract without stale generated output.",
169
+ "disposition": "implemented",
170
+ "implementationEvidence": [
171
+ "architecture/v3-core-mechanism-inventory.json",
172
+ "architecture/v4-capability-state-machine-manifest.json",
173
+ "scripts/check-inventory.mjs",
174
+ "scripts/site-capability-metadata.mjs",
175
+ "scripts/generate-site-bundle.mjs"
176
+ ],
177
+ "verificationEvidence": [
178
+ "tests/core-mechanism-inventory.test.mjs",
179
+ "tests/v4-architecture.test.mjs",
180
+ "tests/v4-next-development-parity.test.mjs"
181
+ ]
182
+ },
183
+ {
184
+ "id": "ND-12",
185
+ "claim": "Independent review, protected merge into dev/v4/v4.0 and exact post-merge containment and readback are required external closeout evidence and cannot be inferred from local green tests.",
186
+ "disposition": "missing-before-closeout",
187
+ "implementationEvidence": [],
188
+ "verificationEvidence": []
189
+ }
190
+ ],
191
+ "matrixRoot": "sha256:0f0d69dd338cad33dc61870675cbedb8664e019e403f73a1ddcf8471d69df405"
192
+ }
@@ -0,0 +1,84 @@
1
+ {
2
+ "schema": "buildchain.v4.publication-rehearsal-parity/v1",
3
+ "source": {
4
+ "branch": "dev/v3/v3.0",
5
+ "commit": "6b96bdad8d9f8ccf9275f27d9370a226a9c78465",
6
+ "runtime": "packages/core/publication-rehearsal-runtime.js"
7
+ },
8
+ "target": {
9
+ "branch": "dev/v4/v4.0",
10
+ "commit": "bc12cd0ff18a7e1d918777ea093c169349952d34",
11
+ "capsuleContract": "packages/core/v4-publication-rehearsal-capsule.js",
12
+ "runtime": "packages/core/v4-publication-rehearsal.js",
13
+ "providerBindings": "packages/core/v4-publication-rehearsal-provider-bindings.js"
14
+ },
15
+ "sharedProductionCore": {
16
+ "planner": "compileReleaseTailDeclaration",
17
+ "initializer": "createReleaseTailTransaction",
18
+ "executor": "executeReleaseTailTransaction",
19
+ "version": "buildchain.release-tail/v1"
20
+ },
21
+ "stageCapsuleBoundary": {
22
+ "contract": "buildchain-v4-stage-capsule/v1",
23
+ "purpose": "pure platform-stage build checkpoint reuse",
24
+ "publicationEffects": false,
25
+ "publicationAuthority": false
26
+ },
27
+ "matrix": [
28
+ {
29
+ "invariant": "capsule-purpose",
30
+ "v3": "publication rehearsal",
31
+ "v4": "publication rehearsal distinct from Stage Capsule",
32
+ "parity": "safety-strengthened"
33
+ },
34
+ {
35
+ "invariant": "content-addressed-inputs",
36
+ "v3": "capsule, declaration, transaction, files, data-only provider bindings, policy and observations",
37
+ "v4": "capsule, source, candidate, manifest, config, provider bindings, provider policy, expected observations and core version",
38
+ "parity": "safety-strengthened"
39
+ },
40
+ {
41
+ "invariant": "provider-request-binding",
42
+ "v3": "provider binding payload is capsule-rooted and every input path is in files",
43
+ "v4": "providerBindingsRoot covers canonical bindings and every request byte is inventory-rooted before adapters",
44
+ "parity": "exact"
45
+ },
46
+ {
47
+ "invariant": "shared-release-tail-core",
48
+ "v3": "shared planner and executor",
49
+ "v4": "same production planner, initializer and executor",
50
+ "parity": "exact"
51
+ },
52
+ {
53
+ "invariant": "effect-default",
54
+ "v3": "simulate and replay local defaults",
55
+ "v4": "provider policy is rooted and effect-disabled by default",
56
+ "parity": "safety-strengthened"
57
+ },
58
+ {
59
+ "invariant": "authorized-provider-rehearsal",
60
+ "v3": "provider observations are recorded without authority",
61
+ "v4": "exact capsule-bound rehearsal-only authority plus request and readback transcript",
62
+ "parity": "safety-strengthened"
63
+ },
64
+ {
65
+ "invariant": "release-authority",
66
+ "v3": "externalPublicationClaimed false",
67
+ "v4": "productionAuthority false and releasePassport null",
68
+ "parity": "exact"
69
+ },
70
+ {
71
+ "invariant": "tamper-response",
72
+ "v3": "capsule and file mismatch fail closed",
73
+ "v4": "every named identity root and core version mismatch fails closed",
74
+ "parity": "safety-strengthened"
75
+ },
76
+ {
77
+ "invariant": "portability",
78
+ "v3": "platform-independent local capsule root",
79
+ "v4": "byte-identical offline linux, macos and windows vector",
80
+ "parity": "exact"
81
+ }
82
+ ],
83
+ "matrixRoot": "sha256:521694ce2cc1d5b383eaa6b84f1b6926ef8ce8f33085e02507e611e9f9b6e784"
84
+ }
@@ -26,6 +26,7 @@
26
26
  {
27
27
  "path": "tests/dev-alpha-candidate-patrol.test.mjs",
28
28
  "count": 37,
29
+ "targetAdditionalCount": 4,
29
30
  "result": "exact"
30
31
  },
31
32
  {
@@ -0,0 +1,64 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "contract": "kungfu-buildchain-v4-runtime-ref-resume-authority/v1",
4
+ "schemaAuthority": "contracts/v4-runtime-ref-resume-authority-v1.schema.json",
5
+ "fixtureAuthority": "contracts/fixtures/v4-runtime-ref-resume-authority-v1/scenario.json",
6
+ "runtimeAuthority": "packages/core/v4-runtime-ref-resume-authority.js",
7
+ "mode": "v4-only",
8
+ "transientSelection": {
9
+ "trustedEvent": "workflow_dispatch",
10
+ "actorPermissions": ["write", "maintain", "admin"],
11
+ "approvedRefs": [
12
+ "v4",
13
+ "v4-alpha",
14
+ "train/v4/v4.N/*",
15
+ "authority/v4/v4.N/*"
16
+ ],
17
+ "exactShaRequiresApprovedRefReachability": true,
18
+ "operatorReasonRequired": true,
19
+ "sourceTreeBound": true,
20
+ "consumerPolicyReceiptBound": true,
21
+ "dualContractLockRootsBound": true,
22
+ "providerReadbackRooted": true
23
+ },
24
+ "persistence": {
25
+ "exactShaDefault": "deny",
26
+ "trainOrAuthorityDefault": "deny",
27
+ "repositoryVariableIndirection": "deny",
28
+ "secretIndirection": "deny",
29
+ "environmentIndirection": "deny",
30
+ "oidcIamAndExternalAuthorityInventory": "metadata-only"
31
+ },
32
+ "resume": {
33
+ "freshAttemptRequired": true,
34
+ "failedJobRerun": false,
35
+ "floatingRefMovementRequired": true,
36
+ "buildAndResumeRuntimeMustDiffer": true,
37
+ "sealedCapsuleIdentity": [
38
+ "source-sha",
39
+ "source-tree-sha",
40
+ "platform",
41
+ "build-runtime-sha",
42
+ "consumer-policy-receipt-root",
43
+ "capsule-root",
44
+ "identity-root",
45
+ "artifact-digest"
46
+ ],
47
+ "validUnaffectedPlatforms": "reuse",
48
+ "missingPlatforms": "rebuild",
49
+ "staleOrAmbiguousCapsules": "reject"
50
+ },
51
+ "passport": {
52
+ "section": "v4RuntimeResume",
53
+ "recordsRuntimeAAndB": true,
54
+ "authorizationRootRequired": true,
55
+ "lineageRootRequired": true,
56
+ "finalPublicReadbackRootRequired": true
57
+ },
58
+ "authority": {
59
+ "v3BehaviorChange": false,
60
+ "credentialsInEvidence": false,
61
+ "persistentExactSha": false,
62
+ "providerMutation": false
63
+ }
64
+ }
@@ -26,7 +26,7 @@
26
26
  "publicConsumerDogfood": {
27
27
  "callerWorkflow": ".github/workflows/v4-public-consumer-dogfood.yml",
28
28
  "reusableWorkflow": "kungfu-systems/buildchain/.github/workflows/v4-stage-capsule-canary.yml",
29
- "validationRef": "4178776bf635d0738cb1917e449076d64883218c",
29
+ "validationRef": "v4-alpha",
30
30
  "invocation": "workflow_call",
31
31
  "runtimeBinding": "job.workflow_sha",
32
32
  "consumerSourceBinding": "github.sha",
@@ -46,7 +46,7 @@
46
46
  "relativeOrSelfInvocationAllowed": false,
47
47
  "directQualificationInvocationAllowed": false,
48
48
  "candidateBranchOverrideAllowed": false,
49
- "recursionRecovery": "public-train-ref-only"
49
+ "recursionRecovery": "floating-selector-with-trusted-runtime-input"
50
50
  },
51
51
  "faultCampaign": [
52
52
  "corrupt",