@kungfu-tech/buildchain 3.0.5-alpha.0 → 3.0.5-alpha.2

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.
@@ -677,6 +677,7 @@
677
677
  "checkout-cache-mode",
678
678
  "checkout-cache-reference-repository-template",
679
679
  "checkout-cache-timeout-seconds",
680
+ "checkout-history-mode",
680
681
  "compiler-cache-platforms-json",
681
682
  "compiler-cache-provider",
682
683
  "compiler-cache-required",
@@ -726,7 +727,7 @@
726
727
  "verify-command",
727
728
  "working-directory"
728
729
  ],
729
- "inputCount": 82,
730
+ "inputCount": 83,
730
731
  "secrets": [
731
732
  "BUILDCHAIN_ARTIFACT_RELAY_S3_DOWNLOAD_ROLE_ARN",
732
733
  "BUILDCHAIN_ARTIFACT_RELAY_S3_ROLE_ARN",
@@ -1496,6 +1497,7 @@
1496
1497
  "checkout-cache-mode",
1497
1498
  "checkout-cache-reference-repository-template",
1498
1499
  "checkout-cache-timeout-seconds",
1500
+ "checkout-history-mode",
1499
1501
  "compiler-cache-platforms-json",
1500
1502
  "compiler-cache-provider",
1501
1503
  "compiler-cache-required",
@@ -1545,7 +1547,7 @@
1545
1547
  "verify-command",
1546
1548
  "working-directory"
1547
1549
  ],
1548
- "inputCount": 85,
1550
+ "inputCount": 86,
1549
1551
  "secrets": [
1550
1552
  "BUILDCHAIN_ARTIFACT_RELAY_S3_DOWNLOAD_ROLE_ARN",
1551
1553
  "BUILDCHAIN_ARTIFACT_RELAY_S3_ROLE_ARN",
@@ -7028,8 +7030,8 @@
7028
7030
  "workflowRegistryPath": "dist/site/workflow-registry.json",
7029
7031
  "pageRegistryPath": "dist/site/page-registry.json",
7030
7032
  "cliRegistryDigest": "0db010925d1c60209c3dac8bc2797537f307ab21bc68084263e79004c5c16ff7",
7031
- "workflowRegistryDigest": "b5b860965abf645e1618d7840db544d638fd8ea3d0ee04ed00ccd4c8f8ccaabb",
7032
- "pageRegistryDigest": "fda54ffd3528f81630f0fabf91ab777a471f9d6bbd89f5f995d1dc383e077264"
7033
+ "workflowRegistryDigest": "4f1b9a933e117abc5fc4212241c83a35609f23477dac98d6cd37c4b40b57ba29",
7034
+ "pageRegistryDigest": "ae6076b33246fc76a7d9ce4a54ae65b9eb3a11a9772a8ea937e6f5e93bda13d1"
7033
7035
  },
7034
7036
  "comparison": {
7035
7037
  "missingCliRegistry": [],
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "contract": "kungfu-buildchain-publication-release-registry",
4
- "generatedAt": "2026-08-02T01:14:59.679Z",
5
- "publishedAt": "2026-08-02T01:14:59.679Z",
4
+ "generatedAt": "2026-08-02T03:31:24.457Z",
5
+ "publishedAt": "2026-08-02T03:31:24.457Z",
6
6
  "reproducible": true,
7
7
  "timestampPolicy": "ci-injected",
8
8
  "deterministicInputs": [
@@ -19,7 +19,7 @@
19
19
  "declared Buildchain surface manifest contract"
20
20
  ],
21
21
  "sourceDateEpoch": "0",
22
- "sourceRevision": "99ce7a8de4cd35f81d743b63d723bee2d4c26f80",
22
+ "sourceRevision": "1d2c6f6f9571f0417063c9814e5ad0e6fd61bb81",
23
23
  "timestampPolicyDetails": {
24
24
  "contract": "kungfu-buildchain-surface-timestamp-policy",
25
25
  "timestampFields": [
@@ -32,7 +32,7 @@
32
32
  },
33
33
  "package": {
34
34
  "name": "@kungfu-tech/buildchain",
35
- "version": "3.0.5-alpha.0",
35
+ "version": "3.0.5-alpha.2",
36
36
  "versionSource": "package.json#version"
37
37
  },
38
38
  "sourceKind": "package-site-bundle",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "contract": "kungfu-buildchain-site-manifest",
4
- "generatedAt": "2026-08-02T01:14:59.679Z",
5
- "publishedAt": "2026-08-02T01:14:59.679Z",
4
+ "generatedAt": "2026-08-02T03:31:24.457Z",
5
+ "publishedAt": "2026-08-02T03:31:24.457Z",
6
6
  "reproducible": true,
7
7
  "timestampPolicy": "ci-injected",
8
8
  "deterministicInputs": [
@@ -19,7 +19,7 @@
19
19
  "declared Buildchain surface manifest contract"
20
20
  ],
21
21
  "sourceDateEpoch": "0",
22
- "sourceRevision": "99ce7a8de4cd35f81d743b63d723bee2d4c26f80",
22
+ "sourceRevision": "1d2c6f6f9571f0417063c9814e5ad0e6fd61bb81",
23
23
  "timestampPolicyDetails": {
24
24
  "contract": "kungfu-buildchain-surface-timestamp-policy",
25
25
  "timestampFields": [
@@ -37,7 +37,7 @@
37
37
  },
38
38
  "package": {
39
39
  "name": "@kungfu-tech/buildchain",
40
- "version": "3.0.5-alpha.0",
40
+ "version": "3.0.5-alpha.2",
41
41
  "versionSource": "package.json#version"
42
42
  },
43
43
  "entrypoint": "buildchain-site.json",
@@ -277,7 +277,7 @@
277
277
  "path": "docs/reusable-build-surface.md",
278
278
  "plane": "use",
279
279
  "exists": true,
280
- "digest": "sha256:8908e1f1589537ac8ef82ee1dacdd24072ca871e3e245825669e7cfbdebd2e3d"
280
+ "digest": "sha256:baadd0c0ef61d877b409d2bdf0e696e218971eb541c5f51a1a8e88e75af4904d"
281
281
  },
282
282
  {
283
283
  "id": "publish-transaction",
@@ -285,7 +285,7 @@
285
285
  "path": "docs/publish-transaction.md",
286
286
  "plane": "verify",
287
287
  "exists": true,
288
- "digest": "sha256:9b830727e5b0d2192c937f19106c11ea5064dde77e30d290825f343df47f291b"
288
+ "digest": "sha256:3a9ef099d5d93d9b558c7b6a0aa4403dfcce1479ce5d6fc36ecb3e34cdd5bb6d"
289
289
  },
290
290
  {
291
291
  "id": "release-governance",
@@ -293,7 +293,7 @@
293
293
  "path": "docs/release-governance.md",
294
294
  "plane": "why",
295
295
  "exists": true,
296
- "digest": "sha256:60ec90d3294818d3c53e403312801a8ab47be7c0f34810002676fbfcdbceaa60"
296
+ "digest": "sha256:96d78f800cd7d43d3a47a11863d4813711e360418ba33a4284688389c7e4b70c"
297
297
  },
298
298
  {
299
299
  "id": "release-flow",
@@ -301,7 +301,7 @@
301
301
  "path": "docs/release-flow.md",
302
302
  "plane": "verify",
303
303
  "exists": true,
304
- "digest": "sha256:bac959565c36cf39c3cd30dfce00dbbb59b73ed21b852a8f24a6cae281cb5f05"
304
+ "digest": "sha256:dc54b8a264489341984ca6157b07d1956e934366f937b7412a21df7f025d2d8d"
305
305
  },
306
306
  {
307
307
  "id": "runtime-train-validation",
@@ -126,6 +126,7 @@
126
126
  "checkout-cache-mode",
127
127
  "checkout-cache-reference-repository-template",
128
128
  "checkout-cache-timeout-seconds",
129
+ "checkout-history-mode",
129
130
  "compiler-cache-platforms-json",
130
131
  "compiler-cache-provider",
131
132
  "compiler-cache-required",
@@ -175,7 +176,7 @@
175
176
  "verify-command",
176
177
  "working-directory"
177
178
  ],
178
- "inputCount": 82,
179
+ "inputCount": 83,
179
180
  "secrets": [
180
181
  "BUILDCHAIN_ARTIFACT_RELAY_S3_DOWNLOAD_ROLE_ARN",
181
182
  "BUILDCHAIN_ARTIFACT_RELAY_S3_ROLE_ARN",
@@ -1155,6 +1156,7 @@
1155
1156
  "checkout-cache-mode",
1156
1157
  "checkout-cache-reference-repository-template",
1157
1158
  "checkout-cache-timeout-seconds",
1159
+ "checkout-history-mode",
1158
1160
  "compiler-cache-platforms-json",
1159
1161
  "compiler-cache-provider",
1160
1162
  "compiler-cache-required",
@@ -1204,7 +1206,7 @@
1204
1206
  "verify-command",
1205
1207
  "working-directory"
1206
1208
  ],
1207
- "inputCount": 85,
1209
+ "inputCount": 86,
1208
1210
  "secrets": [
1209
1211
  "BUILDCHAIN_ARTIFACT_RELAY_S3_DOWNLOAD_ROLE_ARN",
1210
1212
  "BUILDCHAIN_ARTIFACT_RELAY_S3_ROLE_ARN",
@@ -8,7 +8,12 @@ confidence: high
8
8
  sensitivity: public
9
9
  evidence_grade: A
10
10
  review_state: unreviewed
11
- last_reviewed: 2026-07-30
11
+ last_reviewed: 2026-08-02
12
+ ai_provenance:
13
+ model_family: GPT-5
14
+ product: Codex
15
+ generated_at: 2026-08-01
16
+ invisible_information: No hidden model checkpoint, parameters, or private training data were available.
12
17
  ---
13
18
 
14
19
  # AWS US elastic runner burst plane
@@ -138,14 +143,16 @@ The source-bound evidence and deterministic phase receipt are:
138
143
 
139
144
  The Windows phase uses the explicit `aws-us-ec2-windows-jit` runner preset.
140
145
  Its caller supplies one bounded label under
141
- `aws-us-ec2-windows-jit-<qualification-id>`, and Buildchain resolves exactly
142
- one Windows x64 native lane. The reusable trust gate still runs on a
143
- GitHub-hosted runner before the JIT label can select EC2.
146
+ `aws-us-ec2-windows-jit-<campaign-id>-<qualification-id>`, and Buildchain
147
+ resolves exactly one Windows x64 native lane. The reusable trust gate still
148
+ runs on a GitHub-hosted runner before the JIT label can select EC2.
144
149
 
145
150
  The provider creates repository-level GitHub JIT configuration for
146
151
  `kungfu-systems/kungfu`. Its `labels` request must contain all four scheduling
147
152
  labels: `self-hosted`, `Windows`, `X64`, and the card-scoped
148
- `aws-us-ec2-windows-jit-<qualification-id>` label. GitHub's JIT endpoint does
153
+ `aws-us-ec2-windows-jit-<campaign-id>-<qualification-id>` label. The workflow
154
+ display title also carries both identities, allowing the launch controller to
155
+ verify the queued run against its campaign plan. GitHub's JIT endpoint does
149
156
  not infer the default OS and architecture labels when they are omitted. The
150
157
  encoded configuration is never placed in EC2 user data, a tag, a command log,
151
158
  or an artifact. The operator writes it to a card-scoped SSM SecureString under
@@ -168,21 +175,104 @@ Each runner uses:
168
175
  security-group rule, no key pair, and no warm Auto Scaling capacity.
169
176
 
170
177
  Runner diagnostics and a redacted lifecycle record are uploaded to the
171
- provider's encrypted, private evidence bucket. The runner process exits after
172
- one job, Windows shuts down, and EC2's instance-initiated shutdown behavior is
173
- set to `terminate`. A five-minute reaper terminates card-owned stopped or
178
+ provider's encrypted, private evidence bucket under the exact campaign, run,
179
+ attempt, and instance identity. The runner process exits after one job, Windows
180
+ shuts down, and EC2's instance-initiated shutdown behavior is set to
181
+ `terminate`. A five-minute reaper terminates card-owned stopped or
174
182
  three-hour-old instances and deletes only their dedicated JIT parameter.
175
183
 
176
184
  At the 2026-07-29 AWS Price List rate of USD 1.45 per Windows
177
- `c7i.4xlarge` hour, six accepted three-hour instances reserve USD 26.10. The
178
- two-instance race envelope reserves another USD 8.70, producing a USD 34.80
179
- worst case below the dedicated USD 40 budget. Budget notifications at 80% and
180
- 95% invoke the same card-scoped global kill switch.
185
+ `c7i.4xlarge` hour, each accepted instance reserves its complete three-hour
186
+ USD 4.35 fail-closed lifetime before `RunInstances`. A DynamoDB transaction
187
+ binds the exact campaign and source, creates an idempotent run ledger entry,
188
+ and atomically refuses a seventh accepted instance. Six accepted instances
189
+ therefore reserve at most USD 26.10 under the dedicated USD 40 decision.
190
+
191
+ The campaign starts unarmed and expires within 24 hours. Its `CONTROL` record
192
+ can be created only once: a killed or expired campaign cannot be re-armed by
193
+ the campaign tool. A budget notification or any instance lifetime violation
194
+ persists `KILLED` before cleanup, so later workflow dispatches fail before a
195
+ paid launch. Reservations are never refunded: a controller crash, ambiguous
196
+ launch, or successful launch all remain charged to the campaign, favoring a
197
+ false stop over an accidental budget overrun.
198
+
199
+ The tag-filtered AWS Budget is defense in depth, not the authoritative launch
200
+ gate. It is disabled by default because a linked account cannot activate a
201
+ cost-allocation tag. Set `EnableTagFilteredBudget=true` only after the AWS
202
+ Organizations management account has activated `kungfu:provider` and a Cost
203
+ Explorer readback proves that `windows-ec2-jit` spend is visible. The DynamoDB
204
+ reservation cap remains mandatory in either mode.
205
+
206
+ Qualification requires one runner-profile smoke and three trusted exact-source
207
+ full Windows jobs all bound to the same campaign, independent cancellation and
208
+ timeout cleanup exercises, and zero repository runner, EC2 instance,
209
+ disposable volume, min capacity, and desired capacity within 15 minutes of the
210
+ final job.
211
+
212
+ ### Phase 2 campaign controller
213
+
214
+ `scripts/aws-windows-jit-campaign.mjs` is the one-shot operator boundary.
215
+ Without a mutation mode it emits the arm plan. `arm-campaign` requires the
216
+ campaign id, exact source SHA, and state table to be repeated as confirmations,
217
+ then creates `CONTROL` and `CAMPAIGN#<id>` with `attribute_not_exists`
218
+ conditions. DynamoDB therefore refuses a second campaign in the same retained
219
+ state table. The operator can always use `kill-campaign`; there is deliberately
220
+ no clear or re-arm operation.
221
+
222
+ Every `scripts/aws-windows-jit-controller.mjs --execute` call must provide the
223
+ same `--campaign-id`, `--confirm-campaign-id`, `--state-table`, and
224
+ `--confirm-state-table`. After the GitHub, AMI, active-instance, SSM, and EC2
225
+ DryRun checks pass, the controller
226
+ atomically reserves one run. Duplicate run-attempt-qualification identities,
227
+ source mismatch, expiry, `KILLED`, the seventh accepted instance, or a
228
+ reservation over the USD 40 ceiling all fail closed before `RunInstances`.
229
+
230
+ Example dry-run and arm boundary (do not execute without a new campaign budget
231
+ decision):
181
232
 
182
- Qualification requires one runner-profile smoke, three trusted exact-source
183
- full Windows jobs, independent cancellation and timeout cleanup exercises, and
184
- zero repository runner, EC2 instance, disposable volume, min capacity, and
185
- desired capacity within 15 minutes of the final job.
233
+ ```bash
234
+ windows_campaign=win-REPLACE_WITH_CAMPAIGN_ID
235
+ windows_source=REPLACE_WITH_EXACT_40_CHARACTER_SHA
236
+ windows_state_table=REPLACE_WITH_CAMPAIGN_STATE_TABLE
237
+ windows_expires_at=REPLACE_WITH_ISO_TIMESTAMP_WITHIN_24_HOURS
238
+
239
+ node scripts/aws-windows-jit-campaign.mjs plan-arm \
240
+ --campaign-id "$windows_campaign" \
241
+ --source-sha "$windows_source" \
242
+ --state-table "$windows_state_table" \
243
+ --expires-at "$windows_expires_at"
244
+
245
+ node scripts/aws-windows-jit-campaign.mjs arm-campaign \
246
+ --campaign-id "$windows_campaign" \
247
+ --confirm-campaign-id "$windows_campaign" \
248
+ --source-sha "$windows_source" \
249
+ --confirm-source-sha "$windows_source" \
250
+ --state-table "$windows_state_table" \
251
+ --confirm-state-table "$windows_state_table" \
252
+ --expires-at "$windows_expires_at"
253
+ ```
254
+
255
+ Arming creates a permanent one-shot control record and admits up to six paid
256
+ instances. Its rollback is fail-closed, not deletion: `kill-campaign` first
257
+ persists `KILLED`, then publishes to the dedicated SNS topic so the reaper
258
+ terminates active card-owned instances and removes their JIT parameters. The
259
+ command is idempotent, but the operator must read back DynamoDB, EC2, SSM, and
260
+ GitHub runners before treating cleanup as complete:
261
+
262
+ ```bash
263
+ windows_kill_topic=REPLACE_WITH_DEDICATED_KILL_SWITCH_TOPIC_ARN
264
+
265
+ node scripts/aws-windows-jit-campaign.mjs kill-campaign \
266
+ --campaign-id "$windows_campaign" \
267
+ --confirm-campaign-id "$windows_campaign" \
268
+ --source-sha "$windows_source" \
269
+ --confirm-source-sha "$windows_source" \
270
+ --state-table "$windows_state_table" \
271
+ --confirm-state-table "$windows_state_table" \
272
+ --kill-switch-topic "$windows_kill_topic" \
273
+ --confirm-kill-switch-topic "$windows_kill_topic" \
274
+ --reason operator-kill
275
+ ```
186
276
 
187
277
  ## Phase 3 contract
188
278
 
@@ -226,6 +316,32 @@ host, including at least one full run, plus proof that:
226
316
  - AWS has no active campaign instance or allocated campaign host;
227
317
  - actual incremental spend remained below USD 25.
228
318
 
319
+ ### Phase 3 lifecycle controller
320
+
321
+ `scripts/aws-macos-jit-controller.mjs` is the operator boundary for the paid
322
+ campaign. It has three explicit mutation modes:
323
+
324
+ - `launch-campaign` binds the exact repository source, AMI, availability zone,
325
+ tagged Dedicated Host, and reusable instance. It rejects pre-existing Mac
326
+ capacity and requires successful `AllocateHosts` and `RunInstances` DryRuns
327
+ before either real call.
328
+ - `run-job` binds one queued exact-source GitHub job to the existing campaign
329
+ host and instance. It writes the repository JIT configuration through a
330
+ mode-0600 temporary file into a distinct SSM SecureString, sends only the
331
+ credential-free bootstrap through SSM, and removes the parameter plus runner
332
+ registration if command delivery fails.
333
+ - `close-campaign` refuses execution before the provider's 24-hour minimum,
334
+ verifies the encrypted delete-on-termination root volume, removes scoped JIT
335
+ residue, terminates the exact instance, and requires a `ReleaseHosts` DryRun
336
+ before release. If Apple host scrubbing is still in progress, it reports
337
+ `release-pending`; the ten-minute card-scoped reaper remains the bounded
338
+ retry path.
339
+
340
+ Every execute mode requires the exact source SHA and campaign id to be repeated
341
+ through `--confirm-source-sha` and `--confirm-campaign-id`. `run-job` also
342
+ requires `--confirm-run-id`. Omitting `--execute` emits a deterministic plan
343
+ without changing AWS or GitHub state.
344
+
229
345
  ## Provider lifecycle
230
346
 
231
347
  The three infrastructure templates live under
@@ -415,9 +415,10 @@ first run can stop at `finalizing` after registry publication. If the reviewed
415
415
  merge commit later contains that exact transaction release material but the
416
416
  exact tag is still absent, a retry performs finalization only: it reloads the
417
417
  same durable source, release material, tooling, evidence, version, and target
418
- bindings; creates the exact and floating tags at the transaction release SHA;
419
- and completes the passport from the transaction source tree. It does not rerun
420
- the provider mutation and does not authorize the newer composite channel tree
418
+ bindings; creates the exact tag at the transaction source SHA; moves floating
419
+ refs to the transaction release SHA; and completes the passport from the
420
+ transaction source tree. It does not rerun the provider mutation and does not
421
+ authorize the newer composite channel tree
421
422
  as published material. A different source tree still requires a new version and
422
423
  a fresh release candidate.
423
424
 
@@ -536,8 +537,9 @@ inside the mutation boundary.
536
537
 
537
538
  If finalization fails after an exact Git tag is created, the next run reads the
538
539
  durable `finalizing` state, verifies the exact tag points at the recorded
539
- release SHA, and retries the remaining floating refs. An exact tag at a
540
- different SHA is a material conflict and blocks recovery.
540
+ source SHA (while accepting legacy release/material targets for recovery), and
541
+ retries the remaining floating refs. An exact tag at an unrelated SHA is a
542
+ material conflict and blocks recovery.
541
543
 
542
544
  ## CLI Recovery
543
545
 
@@ -96,6 +96,10 @@ published artifacts are already durable.
96
96
  The intended governance split is:
97
97
 
98
98
  - exact tags such as `v3.0.2` and `v3.0.3-alpha.0` are immutable audit refs;
99
+ - for publish transactions, the exact tag points to the transaction
100
+ `source_sha`, matching package-registry source metadata such as npm
101
+ `gitHead`; generated version-state commits remain on protected branches and
102
+ floating channel refs;
99
103
  - floating tags such as `v3`, `v3.0`, `v3.0-alpha`, and `v3-alpha` are mutable channel refs
100
104
  owned by the Buildchain promotion token;
101
105
  - protected branches still require reviewed channel PRs before Buildchain can
@@ -831,6 +831,13 @@ must be absent or already point at accepted release material. This preserves an
831
831
  immutable tag that represents a completed transaction while allowing a tag
832
832
  collision discovered after registry publication to recover without republishing.
833
833
 
834
+ For package publish transactions, the immutable public version tag points to
835
+ the transaction `source_sha`, so registry source metadata such as npm `gitHead`
836
+ and the Git tag identify the same source commit. Protected branches and mutable
837
+ channel tags continue to point to the generated `release_sha`. Recovery accepts
838
+ older completed transactions whose exact tags already point to recorded release
839
+ or release-material SHAs, but new tags are source-bound.
840
+
834
841
  Every Buildchain publish model that can run registry side effects must bind the
835
842
  publish entrypoint to an immutable `publish-gate/*` source lock. The reusable
836
843
  `release-candidate-promote.yml@v3` wrapper creates or updates that gate ref and
@@ -439,6 +439,7 @@ jobs:
439
439
  checkout-cache-timeout-seconds: 60
440
440
  checkout-cache-github-timeout-seconds: 600
441
441
  checkout-cache-fetch-attempts: 3
442
+ checkout-history-mode: shallow
442
443
  ```
443
444
 
444
445
  `checkout-cache-mode` accepts:
@@ -449,6 +450,14 @@ jobs:
449
450
  | `auto` | Try the trusted cache first; on miss, record the miss and fall back according to `checkout-cache-fallback`. |
450
451
  | `require` | Require the cache to provide the locked commit and fail before lifecycle work if unavailable. |
451
452
 
453
+ `checkout-history-mode` defaults to `shallow`, preserving the bounded single-
454
+ commit transport used by ordinary builds. Set it to `full` only when a
455
+ consumer gate must inspect source ancestry, for example when an Alpha pull
456
+ request qualifies GitHub's synthetic merge ref while retained evidence is
457
+ bound to an ancestor of the source-lock head. Full mode still verifies the
458
+ resolved immutable `HEAD` and tree; it changes only whether the advertised
459
+ source ref is fetched with depth one or with its reachable history.
460
+
452
461
  The cache can be a local/LAN mirror URL template or a runner-local bare
453
462
  reference repository template. Templates support `{owner}`, `{repo}`,
454
463
  `{repository}`, `{repositorySlug}`, and `{sha}`. The workflow also reads
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kungfu-tech/buildchain",
3
- "version": "3.0.5-alpha.0",
3
+ "version": "3.0.5-alpha.2",
4
4
  "private": false,
5
5
  "description": "Buildchain Release Passport, release governance, CLI toolkit, and site facts.",
6
6
  "repository": "https://github.com/kungfu-systems/buildchain",