@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
@@ -0,0 +1,150 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "contract": "kungfu-buildchain-v4-tail-reseal-parity",
4
+ "sourceAuthority": {
5
+ "branch": "dev/v3/v3.0",
6
+ "capturedCommit": "6b96bdad8d9f8ccf9275f27d9370a226a9c78465",
7
+ "implementation": "scripts/release-candidate-tail-reseal.mjs",
8
+ "workflow": ".github/workflows/.build.yml",
9
+ "tests": "tests/release-candidate-tail-reseal.test.mjs"
10
+ },
11
+ "target": {
12
+ "branch": "dev/v4/v4.0",
13
+ "publicReusableWorkflow": "kungfu-systems/buildchain/.github/workflows/v4-tail-reseal.yml@v4-alpha",
14
+ "requestSchema": "contracts/v4-tail-reseal-v1.schema.json",
15
+ "planner": "packages/core/v4-tail-reseal.js",
16
+ "admission": "packages/core/v4-tail-reseal-github.js",
17
+ "receipt": "packages/core/v4-tail-reseal-receipt.js",
18
+ "cli": "buildchain tail-reseal"
19
+ },
20
+ "authority": {
21
+ "productionAuthority": "v4",
22
+ "stageCapsuleEffectAuthority": "none",
23
+ "signingAuthority": "explicit-live-release-tail",
24
+ "credentialAuthority": "lease-bound-secret-island",
25
+ "runtimePersistence": "floating-only",
26
+ "v3BehaviorChange": false
27
+ },
28
+ "allowedDispositions": [
29
+ "implemented",
30
+ "superseded-equivalent",
31
+ "missing-before-closeout"
32
+ ],
33
+ "invariants": [
34
+ {
35
+ "id": "TR-01",
36
+ "claim": "The exact captured v3 retained-candidate script, workflow and tests are rooted as parity authority.",
37
+ "disposition": "implemented",
38
+ "implementationEvidence": ["architecture/v4-tail-reseal-parity.json"],
39
+ "verificationEvidence": ["tests/v4-tail-reseal-parity.test.mjs"]
40
+ },
41
+ {
42
+ "id": "TR-02",
43
+ "claim": "One exact failed run binds four byte-addressed platform payloads, manifests, archives and Stage Capsules.",
44
+ "disposition": "implemented",
45
+ "implementationEvidence": [
46
+ "contracts/v4-tail-reseal-v1.schema.json",
47
+ "packages/core/v4-tail-reseal-github.js"
48
+ ],
49
+ "verificationEvidence": [
50
+ "contracts/fixtures/v4-tail-reseal-v1/valid.json",
51
+ "tests/v4-tail-reseal.test.mjs"
52
+ ]
53
+ },
54
+ {
55
+ "id": "TR-03",
56
+ "claim": "A fresh runner downloads retained archives and verifies every manifest and payload byte before any tail effect.",
57
+ "disposition": "implemented",
58
+ "implementationEvidence": [
59
+ "scripts/v4-tail-reseal.mjs",
60
+ ".github/workflows/v4-tail-reseal.yml"
61
+ ],
62
+ "verificationEvidence": ["tests/v4-tail-reseal.test.mjs"]
63
+ },
64
+ {
65
+ "id": "TR-04",
66
+ "claim": "Install, build, verify, package and platform-matrix remain explicitly skipped under effect-free Stage Capsule reuse.",
67
+ "disposition": "implemented",
68
+ "implementationEvidence": ["packages/core/v4-tail-reseal.js"],
69
+ "verificationEvidence": ["tests/v4-tail-reseal.test.mjs"]
70
+ },
71
+ {
72
+ "id": "TR-05",
73
+ "claim": "Only macOS signing-finalization may change bytes; every other platform stays byte-identical and provider-effect-free.",
74
+ "disposition": "implemented",
75
+ "implementationEvidence": [
76
+ "packages/core/v4-tail-reseal-receipt.js",
77
+ "scripts/v4-tail-reseal.mjs"
78
+ ],
79
+ "verificationEvidence": ["tests/v4-tail-reseal.test.mjs"]
80
+ },
81
+ {
82
+ "id": "TR-06",
83
+ "claim": "The macOS effect is fenced by exact Warrant lineage, credential authority, release-tail transaction and idempotency key.",
84
+ "disposition": "implemented",
85
+ "implementationEvidence": [
86
+ "packages/core/v4-tail-reseal.js",
87
+ ".github/workflows/v4-tail-reseal.yml"
88
+ ],
89
+ "verificationEvidence": ["tests/v4-tail-reseal.test.mjs"]
90
+ },
91
+ {
92
+ "id": "TR-07",
93
+ "claim": "Source, platform, archive, manifest, signer, Warrant, credential, retention and prior-failure drift fails closed.",
94
+ "disposition": "implemented",
95
+ "implementationEvidence": [
96
+ "packages/core/v4-tail-reseal.js",
97
+ "packages/core/v4-tail-reseal-github.js"
98
+ ],
99
+ "verificationEvidence": ["tests/v4-tail-reseal.test.mjs"]
100
+ },
101
+ {
102
+ "id": "TR-08",
103
+ "claim": "Expired retention or credential leases invalidate reuse and require a normal candidate rebuild.",
104
+ "disposition": "implemented",
105
+ "implementationEvidence": ["packages/core/v4-tail-reseal.js"],
106
+ "verificationEvidence": ["tests/v4-tail-reseal.test.mjs"]
107
+ },
108
+ {
109
+ "id": "TR-09",
110
+ "claim": "Successful reseal emits the ordinary v4 Release Candidate Passport with its original floating-consumer policy receipt.",
111
+ "disposition": "implemented",
112
+ "implementationEvidence": [
113
+ "packages/core/v4-tail-reseal-receipt.js",
114
+ ".github/workflows/v4-tail-reseal.yml"
115
+ ],
116
+ "verificationEvidence": ["tests/v4-tail-reseal.test.mjs"]
117
+ },
118
+ {
119
+ "id": "TR-10",
120
+ "claim": "The reusable workflow resolves job.workflow_sha as runtime evidence and exposes no persisted SHA, variable indirection or private self-dogfood path.",
121
+ "disposition": "implemented",
122
+ "implementationEvidence": [".github/workflows/v4-tail-reseal.yml"],
123
+ "verificationEvidence": ["tests/v4-tail-reseal-parity.test.mjs"]
124
+ },
125
+ {
126
+ "id": "TR-11",
127
+ "claim": "Node API, CLI, schema, deterministic fixture, generated references and macOS bounded qualification project one contract.",
128
+ "disposition": "implemented",
129
+ "implementationEvidence": [
130
+ "package.json",
131
+ "bin/buildchain.mjs",
132
+ "scripts/v4-tail-reseal.mjs",
133
+ "docs/v4-tail-reseal.md"
134
+ ],
135
+ "verificationEvidence": [
136
+ "tests/command-registry.test.mjs",
137
+ "tests/v4-tail-reseal.test.mjs",
138
+ "tests/v4-tail-reseal-parity.test.mjs"
139
+ ]
140
+ },
141
+ {
142
+ "id": "TR-12",
143
+ "claim": "Independent review, protected merge and exact post-merge public readback remain external closeout evidence.",
144
+ "disposition": "missing-before-closeout",
145
+ "implementationEvidence": [],
146
+ "verificationEvidence": []
147
+ }
148
+ ],
149
+ "matrixRoot": "sha256:126ec51c12a9dedeb9b9e187202781e3895856af1927b399ba3902f3940750ad"
150
+ }
@@ -11,6 +11,7 @@ import { runLifecycle } from "../scripts/run-lifecycle-core.mjs";
11
11
  import { runReleasePropagationCli } from "../scripts/release-propagation.mjs";
12
12
  import { runReleaseGovernanceCli } from "../scripts/reconcile-release-governance.mjs";
13
13
  import { runReleaseTailCli } from "../scripts/release-tail.mjs";
14
+ import { runV4TailResealCli } from "../scripts/v4-tail-reseal.mjs";
14
15
  import { runPublicationArtifactCli } from "../scripts/publication-artifact.mjs";
15
16
  import { runPublicationPackageCli } from "../scripts/publication-package.mjs";
16
17
  import { runPublicationReproducibilityCli } from "../scripts/publication-reproducibility.mjs";
@@ -109,6 +110,8 @@ import {
109
110
  dispatchTrustReleaseCommand,
110
111
  } from "./internal/trust-release-cli.mjs";
111
112
  import { dispatchRegisteredCommand } from "./internal/command-registry.mjs";
113
+ import { runCompatibilityFactsCli } from "./internal/compatibility-facts-cli.mjs";
114
+ import { runAdopterDeliveryCli } from "./internal/adopter-delivery-cli.mjs";
112
115
 
113
116
  const root = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..");
114
117
  const embeddedPackageVersion = process.env.BUILDCHAIN_EMBEDDED_PACKAGE_VERSION || "";
@@ -987,6 +990,9 @@ async function runKfdCli(args = []) {
987
990
  async function runBuildFactsCli(args = []) {
988
991
  const [subcommand = "", ...factArgs] = args;
989
992
  const cwd = path.resolve(readFlag(factArgs, "cwd", process.cwd()));
993
+ if (subcommand === "compatibility") {
994
+ return runCompatibilityFactsCli({ args: factArgs, cwd, packageRoot: root });
995
+ }
990
996
  if (subcommand === "module") {
991
997
  const fact = collectModuleBuildFacts({
992
998
  cwd,
@@ -1060,7 +1066,7 @@ async function runBuildFactsCli(args = []) {
1060
1066
  }
1061
1067
  return;
1062
1068
  }
1063
- throw new Error("usage: buildchain facts <module|aggregate|verify> ...");
1069
+ throw new Error("usage: buildchain facts <module|aggregate|verify|compatibility> ...");
1064
1070
  }
1065
1071
 
1066
1072
  function appendJsonLine(filePath, value) {
@@ -1385,12 +1391,20 @@ async function handleDevCommand(args) {
1385
1391
  runScript("dev-delivery-warrant.mjs", devArgs);
1386
1392
  return;
1387
1393
  }
1394
+ if (subcommand === "authority") {
1395
+ runScript("dev-delivery-authority.mjs", devArgs);
1396
+ return;
1397
+ }
1388
1398
  if (subcommand === "proof") {
1389
1399
  runScript("dev-delivery-proof.mjs", devArgs);
1390
1400
  return;
1391
1401
  }
1402
+ if (subcommand === "two-phase") {
1403
+ runScript("dev-delivery-two-phase.mjs", devArgs);
1404
+ return;
1405
+ }
1392
1406
  if (subcommand !== "merge-queue") {
1393
- throw new Error("usage: buildchain dev <pr-admit|merge-queue|warrant|proof> [options]");
1407
+ throw new Error("usage: buildchain dev <pr-admit|merge-queue|warrant|authority|proof|two-phase> [options]");
1394
1408
  }
1395
1409
  runScript("dev-merge-queue.mjs", devArgs);
1396
1410
  return;
@@ -1662,7 +1676,15 @@ async function handleReleaseGovernanceCommand(args) {
1662
1676
  }
1663
1677
 
1664
1678
  async function handleReleaseTailCommand(args) {
1665
- runReleaseTailCli(args);
1679
+ await runReleaseTailCli(args);
1680
+ }
1681
+
1682
+ async function handleTailResealCommand(args) {
1683
+ await runV4TailResealCli(args);
1684
+ }
1685
+
1686
+ async function handleNextDevelopmentCommand(args) {
1687
+ runScript("next-development-transition.mjs", args);
1666
1688
  }
1667
1689
 
1668
1690
  async function handleGitHubGovernanceCommand(args) {
@@ -1729,6 +1751,10 @@ async function handleArchitectureCommand(args) {
1729
1751
  runScript("v4-architecture.mjs", args);
1730
1752
  }
1731
1753
 
1754
+ async function handleAdopterDeliveryCommand(args) {
1755
+ await runAdopterDeliveryCli(args);
1756
+ }
1757
+
1732
1758
  const BUILDCHAIN_COMMAND_HANDLERS = Object.freeze({
1733
1759
  "help": handleHelpCommand,
1734
1760
  "version": handleVersionCommand,
@@ -1761,12 +1787,15 @@ const BUILDCHAIN_COMMAND_HANDLERS = Object.freeze({
1761
1787
  "release-propagation": handleReleasePropagationCommand,
1762
1788
  "release-governance": handleReleaseGovernanceCommand,
1763
1789
  "release-tail": handleReleaseTailCommand,
1790
+ "tail-reseal": handleTailResealCommand,
1791
+ "next-development": handleNextDevelopmentCommand,
1764
1792
  "github-governance": handleGitHubGovernanceCommand,
1765
1793
  "badges": handleBadgesCommand,
1766
1794
  "homebrew": handleHomebrewCommand,
1767
1795
  "build-contract": handleBuildContractCommand,
1768
1796
  "publish-source": handlePublishSourceCommand,
1769
1797
  "architecture": handleArchitectureCommand,
1798
+ "adopter-delivery": handleAdopterDeliveryCommand,
1770
1799
  });
1771
1800
 
1772
1801
  async function main(argv = process.argv.slice(2)) {
@@ -0,0 +1,70 @@
1
+ import {
2
+ loadV4PublishedAdopterDeliveryAuthority,
3
+ qualifyV4AdopterDeliveryBootstrap,
4
+ runV4AdopterDeliveryGate,
5
+ verifyV4AdopterDeliveryReadback,
6
+ } from "../../packages/core/v4-adopter-delivery.js";
7
+ import {
8
+ printJson,
9
+ readFlag,
10
+ readJsonInput,
11
+ writeJsonFile,
12
+ } from "./cli-options.mjs";
13
+
14
+ function emit(args, value) {
15
+ writeJsonFile(readFlag(args, "output", ""), value);
16
+ printJson(value);
17
+ }
18
+
19
+ export async function runAdopterDeliveryCli(args = []) {
20
+ const [subcommand = "", ...commandArgs] = args;
21
+ if (subcommand === "run") {
22
+ const input = readJsonInput(readFlag(commandArgs, "input", ""), {
23
+ label: "adopter delivery input",
24
+ });
25
+ emit(commandArgs, runV4AdopterDeliveryGate(input));
26
+ return;
27
+ }
28
+ if (subcommand === "verify") {
29
+ const input = readJsonInput(readFlag(commandArgs, "input", ""), {
30
+ label: "adopter delivery input",
31
+ });
32
+ const readback = readJsonInput(readFlag(commandArgs, "readback", ""), {
33
+ label: "adopter delivery readback",
34
+ });
35
+ emit(commandArgs, verifyV4AdopterDeliveryReadback({ input, readback }));
36
+ return;
37
+ }
38
+ if (subcommand === "bootstrap") {
39
+ const request = readJsonInput(readFlag(commandArgs, "input", ""), {
40
+ label: "adopter delivery bootstrap input",
41
+ });
42
+ emit(commandArgs, qualifyV4AdopterDeliveryBootstrap(request));
43
+ return;
44
+ }
45
+ if (subcommand === "archive") {
46
+ const request = readJsonInput(readFlag(commandArgs, "input", ""), {
47
+ label: "published archive input",
48
+ });
49
+ const authority = await loadV4PublishedAdopterDeliveryAuthority(request);
50
+ try {
51
+ emit(commandArgs, {
52
+ schemaVersion: authority.schemaVersion,
53
+ contract: authority.contract,
54
+ packages: authority.packages,
55
+ moduleCoordinates: authority.moduleCoordinates,
56
+ authorityRoot: authority.authorityRoot,
57
+ qualifying: authority.qualifying,
58
+ selfCertified: authority.selfCertified,
59
+ releaseAuthorized: authority.releaseAuthorized,
60
+ finalAuthority: authority.finalAuthority,
61
+ });
62
+ } finally {
63
+ await authority.dispose();
64
+ }
65
+ return;
66
+ }
67
+ throw new Error(
68
+ "usage: buildchain adopter-delivery <run|verify|bootstrap|archive> --input <json-or-path> [--readback <json-or-path>] [--output <path>]",
69
+ );
70
+ }
@@ -33,12 +33,15 @@ const BUILDCHAIN_COMMAND_REGISTRY = Object.freeze([
33
33
  { id: "release-propagation", aliases: [] },
34
34
  { id: "release-governance", aliases: [] },
35
35
  { id: "release-tail", aliases: [] },
36
+ { id: "tail-reseal", aliases: [] },
37
+ { id: "next-development", aliases: [] },
36
38
  { id: "github-governance", aliases: [] },
37
39
  { id: "badges", aliases: [] },
38
40
  { id: "homebrew", aliases: [] },
39
41
  { id: "build-contract", aliases: [] },
40
42
  { id: "publish-source", aliases: [] },
41
43
  { id: "architecture", aliases: [] },
44
+ { id: "adopter-delivery", aliases: [] },
42
45
  ]);
43
46
 
44
47
  function buildCommandLookup(registry = BUILDCHAIN_COMMAND_REGISTRY) {
@@ -0,0 +1,101 @@
1
+ import path from "node:path";
2
+
3
+ import {
4
+ createBuildchainCompatibilityFactRegistry,
5
+ verifyBuildchainCompatibilityFactRegistry,
6
+ } from "../../packages/core/buildchain-compatibility-fact.js";
7
+ import {
8
+ createBuildchainCompatibilityPathQuery,
9
+ createBuildchainCompatibilityProofRegistry,
10
+ verifyBuildchainCompatibilityPath,
11
+ } from "../../packages/core/buildchain-compatibility-authority.js";
12
+ import { createBuildchainContractWorld } from "../../packages/core/buildchain-contract.js";
13
+ import {
14
+ printJson,
15
+ readBooleanFlag,
16
+ readFlag,
17
+ readJsonInput,
18
+ writeJsonFile,
19
+ } from "./cli-options.mjs";
20
+
21
+ export function runCompatibilityFactsCli({ args, cwd, packageRoot }) {
22
+ const [action = "project", ...factArgs] = args;
23
+ const registryInput = readFlag(factArgs, "registry", "");
24
+ const registry = registryInput
25
+ ? readJsonInput(registryInput, {
26
+ cwd,
27
+ label: "compatibility Fact registry",
28
+ })
29
+ : createBuildchainCompatibilityFactRegistry();
30
+ if (action === "project") {
31
+ const world = createBuildchainContractWorld({ root: packageRoot });
32
+ const projection = createBuildchainCompatibilityProofRegistry({
33
+ proofs: registry.legacyProofs,
34
+ surfaces: world.surfaces,
35
+ majorLine: world.majorLine,
36
+ });
37
+ const result = {
38
+ schema: "kungfu.buildchain.compatibility-fact-projection/v1",
39
+ authority: "Fact-registry-only",
40
+ grantsReleaseAuthority: false,
41
+ registry,
42
+ projections: projection.projections,
43
+ };
44
+ const output = readFlag(factArgs, "output", "");
45
+ if (output) writeJsonFile(path.resolve(cwd, output), result);
46
+ if (readBooleanFlag(factArgs, "json") || !output) printJson(result);
47
+ else
48
+ process.stdout.write(
49
+ `buildchain facts compatibility project: wrote ${output}\n`,
50
+ );
51
+ return;
52
+ }
53
+ if (action === "verify") {
54
+ const result = verifyBuildchainCompatibilityFactRegistry(registry);
55
+ printJson(result);
56
+ if (!result.ok) process.exitCode = 1;
57
+ return;
58
+ }
59
+ if (action === "query") {
60
+ const queryInput = readFlag(factArgs, "query", "");
61
+ if (!queryInput) {
62
+ throw new Error(
63
+ "usage: buildchain facts compatibility query --query <json-or-path> [--registry <json-or-path>]",
64
+ );
65
+ }
66
+ const query = readJsonInput(queryInput, {
67
+ cwd,
68
+ label: "compatibility Fact query",
69
+ });
70
+ const receipt = verifyBuildchainCompatibilityPath({ registry, query });
71
+ printJson(receipt);
72
+ if (receipt.record.status !== "accepted") process.exitCode = 1;
73
+ return;
74
+ }
75
+ if (action === "query-template") {
76
+ const factRoot = readFlag(factArgs, "fact-root", "");
77
+ const fact = registry.facts.find((entry) => entry.factRoot === factRoot);
78
+ if (!fact) {
79
+ throw new Error(
80
+ "buildchain facts compatibility query-template requires a current --fact-root",
81
+ );
82
+ }
83
+ printJson(
84
+ createBuildchainCompatibilityPathQuery({
85
+ registry,
86
+ queryId: readFlag(
87
+ factArgs,
88
+ "query-id",
89
+ `buildchain:compatibility:${fact.factId}`,
90
+ ),
91
+ sourceRoot: fact.sourceRoot,
92
+ targetRoot: fact.targetRoot,
93
+ relationPathRoots: [fact.factRoot],
94
+ }),
95
+ );
96
+ return;
97
+ }
98
+ throw new Error(
99
+ "usage: buildchain facts compatibility <project|verify|query|query-template> ...",
100
+ );
101
+ }
@@ -262,6 +262,11 @@ async function handleCollectCommand({ args, runScript, packageVersion }) {
262
262
  collectArgs,
263
263
  "release-evidence-json",
264
264
  ),
265
+ v4RuntimeResumeEvidenceJson: readFlag(
266
+ collectArgs,
267
+ "v4-runtime-resume-evidence-json",
268
+ "",
269
+ ),
265
270
  githubArtifactAttestationPolicyJsons: readRepeatedFlag(
266
271
  collectArgs,
267
272
  "github-artifact-attestation-policy-json",