@kungfu-tech/buildchain 3.0.1-alpha.2 → 3.0.1-alpha.4

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 (50) hide show
  1. package/AGENTS.md +5 -5
  2. package/README.md +15 -17
  3. package/actions/promote-buildchain-ref/README.md +8 -8
  4. package/actions/report-buildchain-issue/README.md +2 -2
  5. package/actions/run-lifecycle/README.md +1 -1
  6. package/actions/validate-config/README.md +1 -1
  7. package/bin/buildchain.mjs +11 -4
  8. package/dist/site/buildchain-contract.json +59 -24
  9. package/dist/site/buildchain-site.json +78 -83
  10. package/dist/site/controller-registry.json +30 -2
  11. package/dist/site/kfd-claims.json +12 -5
  12. package/dist/site/kfd-upstream-aggregate.json +1 -1
  13. package/dist/site/manual-registry.json +18 -18
  14. package/dist/site/node-api-registry.json +5 -5
  15. package/dist/site/page-registry.json +54 -59
  16. package/dist/site/public-surface-audit.json +11 -9
  17. package/dist/site/publication-registry.json +4 -4
  18. package/dist/site/release-provenance.json +2 -2
  19. package/dist/site/site-manifest.json +22 -22
  20. package/dist/site/workflow-registry.json +8 -1
  21. package/docs/MAP.md +5 -5
  22. package/docs/cli.md +20 -14
  23. package/docs/consumer-issue-reporting.md +1 -1
  24. package/docs/homebrew.md +7 -5
  25. package/docs/install.md +7 -3
  26. package/docs/kfd-agent-hub.md +1 -1
  27. package/docs/lifecycle-protocol.md +3 -3
  28. package/docs/migration-inventory.md +4 -4
  29. package/docs/ownership.md +4 -4
  30. package/docs/publication-artifacts.md +2 -2
  31. package/docs/release-candidate.md +4 -4
  32. package/docs/release-governance.md +13 -13
  33. package/docs/release-passport.md +6 -6
  34. package/docs/release-propagation.md +5 -5
  35. package/docs/reusable-build-surface.md +23 -23
  36. package/docs/runtime-train-validation.md +13 -13
  37. package/docs/shifu-gate-profiles.md +2 -2
  38. package/docs/site-bundle-contract.md +1 -1
  39. package/docs/stable-candidate-patrol.md +2 -2
  40. package/docs/toolkit-observability.md +14 -0
  41. package/docs/web-surface-deployments.md +7 -7
  42. package/fixtures/libnode-shaped/README.md +1 -1
  43. package/package.json +1 -1
  44. package/packages/core/issue-reporting.js +8 -3
  45. package/packages/core/logging.js +101 -0
  46. package/scripts/auditable-demo.mjs +1 -1
  47. package/scripts/check-inventory.mjs +36 -17
  48. package/scripts/init-repo.mjs +2 -2
  49. package/scripts/web-surface-production-release-pr.mjs +99 -0
  50. package/scripts/workflow-friction-report.mjs +10 -0
@@ -14,7 +14,7 @@ Enable it on the reusable build workflow:
14
14
  ```yaml
15
15
  jobs:
16
16
  build:
17
- uses: kungfu-systems/buildchain/.github/workflows/.build.yml@v2
17
+ uses: kungfu-systems/buildchain/.github/workflows/.build.yml@v3
18
18
  with:
19
19
  artifact-name: libnode
20
20
  release-candidate: true
@@ -44,7 +44,7 @@ contains:
44
44
  Promotion workflows that should not rebuild artifacts can enable:
45
45
 
46
46
  ```yaml
47
- - uses: kungfu-systems/buildchain/actions/promote-buildchain-ref@v2
47
+ - uses: kungfu-systems/buildchain/actions/promote-buildchain-ref@v3
48
48
  with:
49
49
  token: ${{ secrets.BUILDCHAIN_PROMOTION_TOKEN }}
50
50
  sha: ${{ needs.build.outputs.publish-source-sha }}
@@ -72,7 +72,7 @@ generates one before calling `promote-buildchain-ref`. Before that call, the
72
72
  wrapper creates or updates `publish-gate/{alpha,release,major}` to the
73
73
  promotion channel commit and passes that ref, target SHA, and `locked=true` to
74
74
  the promote action with `require-publish-source-lock: "true"`. Consumers using
75
- floating `@v2` therefore get publish-side source-lock drift protection without
75
+ floating `@v3` therefore get publish-side source-lock drift protection without
76
76
  copying resolver or promote YAML. The default npm path
77
77
  generates that requirement list from the downloaded `.tgz` payloads themselves:
78
78
  Buildchain reads `package/package.json` inside each tarball for the real scoped
@@ -135,7 +135,7 @@ pre-build/artifact evidence into the wrapper:
135
135
  ```yaml
136
136
  jobs:
137
137
  promote:
138
- uses: kungfu-systems/buildchain/.github/workflows/release-candidate-promote.yml@v2
138
+ uses: kungfu-systems/buildchain/.github/workflows/release-candidate-promote.yml@v3
139
139
  with:
140
140
  buildchain-channel: auto
141
141
  buildchain-alpha-contract-lock-path: .buildchain/alpha-contract-lock.json
@@ -136,7 +136,7 @@ continue from the same SHA without another native build or an administrator
136
136
  merge bypass.
137
137
 
138
138
  Repositories may also expose a small caller workflow around
139
- `.github/workflows/release-governance-reconcile.yml@v2`. Pass `branch`,
139
+ `.github/workflows/release-governance-reconcile.yml@v3`. Pass `branch`,
140
140
  `candidate-sha`, and `apply`, and provide `governance-token` through the caller's
141
141
  secrets. The reusable workflow uploads the JSON reconciliation receipt.
142
142
 
@@ -181,14 +181,14 @@ This is why Buildchain maintains both exact and floating refs:
181
181
  - `v2` is the selected stable major-line entrypoint;
182
182
  - `v2.0.3-alpha.0` is immutable alpha evidence;
183
183
  - `v2.0-alpha` is the latest test channel for the `2.0` line.
184
- - `v2-alpha` is the latest test channel on the highest published alpha minor in major `2`.
184
+ - `v3-alpha` is the latest test channel on the highest published alpha minor in major `2`.
185
185
 
186
186
  A release does not mean "minor is complete." It means "this patch on this minor
187
187
  line is now production."
188
188
 
189
189
  GitHub repository rules must preserve that distinction. Exact tags such as
190
190
  `v2.0.2` and `v2.0.3-alpha.0` should be immutable. Floating channel tags such as
191
- `v2`, `v2.0`, `v2.0-alpha`, and `v2-alpha` must remain movable by the Buildchain promotion
191
+ `v2`, `v2.0`, `v2.0-alpha`, and `v3-alpha` must remain movable by the Buildchain promotion
192
192
  token after governance checks and publish evidence pass. A tag ruleset that
193
193
  protects every `refs/tags/v*` ref is too broad because it also locks the
194
194
  floating channel tags that Buildchain is required to update. Prefer exact-tag
@@ -221,7 +221,7 @@ line-specific dist-tag `vX.Y-alpha` so they cannot roll the global `alpha`
221
221
  channel backward. Exact prerelease versions remain installable directly.
222
222
 
223
223
  This keeps the test channel self-describing. If a consumer checks out
224
- `v2.0-alpha` or `v2-alpha`, the manifests and exact alpha tag agree. The major
224
+ `v2.0-alpha` or `v3-alpha`, the manifests and exact alpha tag agree. The major
225
225
  alpha ref removes routine consumer edits when Buildchain opens a newer minor,
226
226
  while exact tags and SHAs remain the reproducible audit choice.
227
227
 
@@ -229,8 +229,8 @@ while exact tags and SHAs remain the reproducible audit choice.
229
229
 
230
230
  Buildchain continuously consumes its own current major alpha through
231
231
  `.github/workflows/buildchain-alpha-self-dogfood.yml`. Both lanes call the
232
- released channel router at `build.yml@v2-alpha`. The auto lane must resolve
233
- `v2-alpha`; the explicit stable lane must resolve `v2`. Both execute the same
232
+ released channel router at `build.yml@v3-alpha`. The auto lane must resolve
233
+ `v3-alpha`; the explicit stable lane must resolve `v2`. Both execute the same
234
234
  declared install, build, and verify fixture, proving that a single consumer
235
235
  surface routes to distinct released runtimes without duplicating lifecycle
236
236
  configuration in the consumer.
@@ -246,7 +246,7 @@ reviewed alpha SHA and compatibility digest; it does not replace the stable
246
246
  consumer lock. A later alpha with only compatible additive drift continues,
247
247
  while a changed breaking digest fails until the new alpha contract is reviewed.
248
248
 
249
- The evidence job resolves `v2-alpha` and `v2` through the GitHub refs API,
249
+ The evidence job resolves `v3-alpha` and `v2` through the GitHub refs API,
250
250
  compares those immutable SHAs with the reusable workflow outputs, verifies the
251
251
  `alpha` and `stable` classifications, and uploads a JSON evidence artifact.
252
252
  The canary runs after successful Buildchain ref promotion, on a daily fallback
@@ -545,7 +545,7 @@ command = "cargo test --workspace --locked"
545
545
  ```
546
546
 
547
547
  Consumers that want Buildchain to own the check wrapper can call
548
- `.github/workflows/check.yml@v2`. The wrapper runs the declared
548
+ `.github/workflows/check.yml@v3`. The wrapper runs the declared
549
549
  `lifecycle.install` and `lifecycle.verify` stages and fails the `check` job when
550
550
  either declaration is missing or the command exits non-zero.
551
551
 
@@ -572,7 +572,7 @@ on:
572
572
 
573
573
  jobs:
574
574
  merge-dev:
575
- uses: kungfu-systems/buildchain/.github/workflows/dev-pr-auto-merge.yml@v2
575
+ uses: kungfu-systems/buildchain/.github/workflows/dev-pr-auto-merge.yml@v3
576
576
  permissions:
577
577
  contents: write
578
578
  pull-requests: write
@@ -633,7 +633,7 @@ on:
633
633
 
634
634
  jobs:
635
635
  patrol:
636
- uses: kungfu-systems/buildchain/.github/workflows/patrol-daily.yml@v2
636
+ uses: kungfu-systems/buildchain/.github/workflows/patrol-daily.yml@v3
637
637
  with:
638
638
  dry-run: false
639
639
  max-actions: 1
@@ -644,7 +644,7 @@ Weekly and monthly callers use the matching wrapper:
644
644
  ```yaml
645
645
  jobs:
646
646
  patrol:
647
- uses: kungfu-systems/buildchain/.github/workflows/patrol-weekly.yml@v2
647
+ uses: kungfu-systems/buildchain/.github/workflows/patrol-weekly.yml@v3
648
648
  with:
649
649
  dry-run: true
650
650
  ```
@@ -753,7 +753,7 @@ When the loop succeeds, maintainers and consumers can rely on these facts:
753
753
  not a hidden manual button;
754
754
  - every test channel has an exact alpha tag such as `v2.0.3-alpha.0`;
755
755
  - every alpha minor line has a floating tag such as `v2.0-alpha`;
756
- - every major with a published alpha has a cross-minor floating tag such as `v2-alpha`, owned by its highest published alpha minor;
756
+ - every major with a published alpha has a cross-minor floating tag such as `v3-alpha`, owned by its highest published alpha minor;
757
757
  - version manifests match the tag visible from the same commit;
758
758
  - production releases are derived from the alpha tree that was tested;
759
759
  - manual non-dry-run promotion cannot bypass PR review and verification;
@@ -794,7 +794,7 @@ collision discovered after registry publication to recover without republishing.
794
794
 
795
795
  Every Buildchain publish model that can run registry side effects must bind the
796
796
  publish entrypoint to an immutable `publish-gate/*` source lock. The reusable
797
- `release-candidate-promote.yml@v2` wrapper creates or updates that gate ref and
797
+ `release-candidate-promote.yml@v3` wrapper creates or updates that gate ref and
798
798
  passes `require-publish-source-lock`, `publish-source-ref`,
799
799
  `publish-source-sha`, and `publish-source-locked` to
800
800
  `promote-buildchain-ref`. Direct action callers must pass the same four inputs
@@ -127,11 +127,11 @@ Generate a local release passport bundle from release assets:
127
127
 
128
128
  ```bash
129
129
  buildchain collect github-release \
130
- --tag v2.2.0 \
130
+ --tag v3.0.0 \
131
131
  --repository kungfu-systems/buildchain \
132
132
  --assets-dir dist \
133
- --publish-evidence-json .buildchain/release-evidence/v2.2.0/evidence.json \
134
- --transaction-json .buildchain/release-state/v2.2.0/state.json \
133
+ --publish-evidence-json .buildchain/release-evidence/v3.0.0/evidence.json \
134
+ --transaction-json .buildchain/release-state/v3.0.0/state.json \
135
135
  --package-set-json package-set.json \
136
136
  --anchor-manifest-json libnode.release.json \
137
137
  --build-summary-json .buildchain/artifacts/build-summary.json \
@@ -140,7 +140,7 @@ buildchain collect github-release \
140
140
  --platform-manifest-json .buildchain/artifacts/linux-x64/manifest.json \
141
141
  --platform-manifest-json .buildchain/artifacts/darwin-arm64/manifest.json \
142
142
  --platform-manifest-json .buildchain/artifacts/win32-x64/manifest.json \
143
- --dist-tag-evidence-json .buildchain/release-evidence/v2.2.0/dist-tag-evidence.json \
143
+ --dist-tag-evidence-json .buildchain/release-evidence/v3.0.0/dist-tag-evidence.json \
144
144
  --kfd-1-witness-json .buildchain/kfd/kfd-1/contract-world.witness.json \
145
145
  --kfd-2-claim-json .buildchain/kfd/kfd-2/release-claims.json \
146
146
  --invariant-passport-json product/release/qualification/invariant-passport.json \
@@ -288,7 +288,7 @@ current source/artifact hashes and generates:
288
288
  surfaces.
289
289
 
290
290
  The generated claim set covers Buildchain's KFD release passport support,
291
- agent-first single source of truth, floating `@v2` contract drift protection,
291
+ agent-first single source of truth, floating `@v3` contract drift protection,
292
292
  semver GitHub Release evidence publication, channel-preserving release
293
293
  propagation, and npm publish evidence/finalization. Buildchain self promotion
294
294
  passes those files into `promote-buildchain-ref`; `verifyReleasePassport()` then
@@ -391,7 +391,7 @@ and compares it before heavy build or publish work begins.
391
391
 
392
392
  Compatible drift, such as optional inputs or extra diagnostics, continues and
393
393
  creates a consumer-local issue for review. Breaking drift fails fast. This means
394
- consumers can use `@v2` without silently accepting incompatible changes, while
394
+ consumers can use `@v3` without silently accepting incompatible changes, while
395
395
  Buildchain maintainers can still ship compatible improvements under the same
396
396
  major floating tag.
397
397
 
@@ -169,19 +169,19 @@ The written lock has contract
169
169
  ## Reusable Workflow
170
170
 
171
171
  Upstream repositories can call
172
- `.github/workflows/release-propagation.yml@v2` after release finalization:
172
+ `.github/workflows/release-propagation.yml@v3` after release finalization:
173
173
 
174
174
  ```yaml
175
175
  jobs:
176
176
  propagate-site:
177
- uses: kungfu-systems/buildchain/.github/workflows/release-propagation.yml@v2
177
+ uses: kungfu-systems/buildchain/.github/workflows/release-propagation.yml@v3
178
178
  with:
179
- buildchain-ref: v2
179
+ buildchain-ref: v3
180
180
  graph-json: ${{ needs.release.outputs.propagation-graph-json }}
181
181
  upstream-release-json: ${{ needs.release.outputs.upstream-release-json }}
182
182
  downstream-target: site-libkungfu-dev
183
183
  downstream-repository: kungfu-systems/site-libkungfu-dev
184
- downstream-base-ref: dev/v2/v2.7
184
+ downstream-base-ref: main
185
185
  downstream-prepare-command: pnpm install --frozen-lockfile --ignore-scripts
186
186
  downstream-verify-command: pnpm run check
187
187
  dry-run: false
@@ -219,7 +219,7 @@ PR updates source-of-truth facts, then downstream alpha or release publication
219
219
  runs through its own protected channel. A byte-identical rerun is an explicit
220
220
  successful no-op.
221
221
  For unreleased runtime validation, keep the caller's reusable workflow reference
222
- on `@v2` and pass a temporary train ref through `buildchain-ref`.
222
+ on `@v3` and pass a temporary train ref through `buildchain-ref`.
223
223
 
224
224
  ## kfd to site-libkungfu-dev
225
225
 
@@ -14,7 +14,7 @@ development and stable release work:
14
14
  ```yaml
15
15
  jobs:
16
16
  build:
17
- uses: kungfu-systems/buildchain/.github/workflows/build.yml@v2
17
+ uses: kungfu-systems/buildchain/.github/workflows/build.yml@v3
18
18
  permissions:
19
19
  contents: read
20
20
  issues: write
@@ -56,8 +56,8 @@ with:
56
56
  ```
57
57
 
58
58
  During the v2.12 prerelease evaluation window, canaries use
59
- `build.yml@v2-alpha`. The same router then selects `v2-alpha` or stable `v2` as
60
- the runtime. Production consumers should adopt `build.yml@v2` after the router
59
+ `build.yml@v3-alpha`. The same router then selects `v3-alpha` or stable `v2` as
60
+ the runtime. Production consumers should adopt `build.yml@v3` after the router
61
61
  has reached stable; this keeps the routing shell itself on a stable ref.
62
62
 
63
63
  The router is generated from `.build.yml`'s input/output surface. Run
@@ -72,7 +72,7 @@ surface:
72
72
  ```yaml
73
73
  jobs:
74
74
  build:
75
- uses: kungfu-systems/buildchain/.github/workflows/.build.yml@v2
75
+ uses: kungfu-systems/buildchain/.github/workflows/.build.yml@v3
76
76
  with:
77
77
  working-directory: .
78
78
  artifact-name: libnode
@@ -136,7 +136,7 @@ Python, uv, and fnm, but do not need native compilation:
136
136
  ```yaml
137
137
  jobs:
138
138
  build:
139
- uses: kungfu-systems/buildchain/.github/workflows/.build.yml@v2
139
+ uses: kungfu-systems/buildchain/.github/workflows/.build.yml@v3
140
140
  with:
141
141
  runner-preset: kungfu-v4-self-hosted
142
142
  linux-container-preset: kungfu-verify
@@ -217,7 +217,7 @@ on a host runner until their image contract is explicit.
217
217
  ## Buildchain Runtime Override
218
218
 
219
219
  Stable consumers should keep the reusable workflow pinned to stable refs such as
220
- `@v2`. The optional `buildchain-ref` input is empty by default; empty means
220
+ `@v3`. The optional `buildchain-ref` input is empty by default; empty means
221
221
  Buildchain resolves and executes the stable runtime selected by the workflow
222
222
  shell. The full train validation protocol is documented in
223
223
  [`runtime-train-validation.md`](runtime-train-validation.md).
@@ -236,7 +236,7 @@ on:
236
236
 
237
237
  jobs:
238
238
  build:
239
- uses: kungfu-systems/buildchain/.github/workflows/.build.yml@v2
239
+ uses: kungfu-systems/buildchain/.github/workflows/.build.yml@v3
240
240
  with:
241
241
  buildchain-ref: ${{ inputs.buildchain-ref || '' }}
242
242
  ```
@@ -245,8 +245,8 @@ Allowed override refs are deliberately narrow:
245
245
 
246
246
  | Ref form | Meaning |
247
247
  | --- | --- |
248
- | `train/v2/v2.3/<capability>` | Temporary capability train under the active minor line |
249
- | `refs/heads/train/v2/v2.3/<capability>` | Explicit branch ref for the same train |
248
+ | `train/v3/v3.0/<capability>` | Temporary capability train under the active minor line |
249
+ | `refs/heads/train/v3/v3.0/<capability>` | Explicit branch ref for the same train |
250
250
  | `<40-character SHA>` | Exact immutable Buildchain runtime commit |
251
251
 
252
252
  Override requests fail closed unless the event is `workflow_dispatch` and the
@@ -270,7 +270,7 @@ workflow path or a temporary explicit workflow ref.
270
270
 
271
271
  ## Floating Ref Contract Lock
272
272
 
273
- Stable consumers should use floating major refs such as `@v2`, but a floating
273
+ Stable consumers should use floating major refs such as `@v3`, but a floating
274
274
  ref is not blind trust. Each released Buildchain ref carries a package-owned
275
275
  runtime contract world in `dist/site/buildchain-contract.json`. Consumers may
276
276
  keep a small lock file, `.buildchain/contract-lock.json`, recording the
@@ -295,7 +295,7 @@ the default `major-compatible` policy.
295
295
  ```yaml
296
296
  jobs:
297
297
  build:
298
- uses: kungfu-systems/buildchain/.github/workflows/.build.yml@v2
298
+ uses: kungfu-systems/buildchain/.github/workflows/.build.yml@v3
299
299
  permissions:
300
300
  contents: read
301
301
  issues: write
@@ -323,13 +323,13 @@ Advanced alpha-channel consumers select the matching workflow shell:
323
323
  ```yaml
324
324
  jobs:
325
325
  build:
326
- uses: kungfu-systems/buildchain/.github/workflows/.build.yml@v2-alpha
326
+ uses: kungfu-systems/buildchain/.github/workflows/.build.yml@v3-alpha
327
327
  with:
328
328
  buildchain-contract-lock-path: .buildchain/contract-lock.json
329
329
  ```
330
330
 
331
331
  The runtime follows the called workflow through `job.workflow_ref`. Callers may
332
- also pass `buildchain-ref: v2-alpha` explicitly; official floating refs are
332
+ also pass `buildchain-ref: v3-alpha` explicitly; official floating refs are
333
333
  ordinary channel selections and are allowed on pull requests and pushes. Train
334
334
  refs and exact SHAs remain trusted manual overrides.
335
335
 
@@ -345,7 +345,7 @@ semantics remain owned by the consumer's pinned Shifu implementation.
345
345
  ```yaml
346
346
  jobs:
347
347
  build:
348
- uses: kungfu-systems/buildchain/.github/workflows/build.yml@v2
348
+ uses: kungfu-systems/buildchain/.github/workflows/build.yml@v3
349
349
  with:
350
350
  shifu-cache-profile-ref: ${{ vars.SHIFU_CACHE_PROFILE_REF }}
351
351
  shifu-cache-profile-digest: ${{ vars.SHIFU_CACHE_PROFILE_DIGEST }}
@@ -377,7 +377,7 @@ lifecycle commands run.
377
377
  ```yaml
378
378
  jobs:
379
379
  build:
380
- uses: kungfu-systems/buildchain/.github/workflows/.build.yml@v2
380
+ uses: kungfu-systems/buildchain/.github/workflows/.build.yml@v3
381
381
  with:
382
382
  runner-preset: kungfu-v4-self-hosted
383
383
  checkout-cache-mode: auto
@@ -445,8 +445,8 @@ When a Buildchain maintainer asks for downstream validation, the expected
445
445
  request is:
446
446
 
447
447
  ```text
448
- Buildchain train ready: buildchain-ref=train/v2/v2.3/<capability>.
449
- Keep uses: ...@v2; run workflow_dispatch with that buildchain-ref and report the runtime evidence summary.
448
+ Buildchain train ready: buildchain-ref=train/v3/v3.0/<capability>.
449
+ Keep uses: ...@v3; run workflow_dispatch with that buildchain-ref and report the runtime evidence summary.
450
450
  ```
451
451
 
452
452
  After validation succeeds, the Buildchain change should continue through the
@@ -591,7 +591,7 @@ Large self-hosted native builds can opt into the first-class S3 relay path:
591
591
  ```yaml
592
592
  jobs:
593
593
  build:
594
- uses: kungfu-systems/buildchain/.github/workflows/.build.yml@v2
594
+ uses: kungfu-systems/buildchain/.github/workflows/.build.yml@v3
595
595
  with:
596
596
  runner-preset: kungfu-v4-self-hosted
597
597
  artifact-transfer-mode: s3-to-github-artifacts
@@ -670,7 +670,7 @@ Use `publish-channel` to request a channel:
670
670
  ```yaml
671
671
  jobs:
672
672
  build:
673
- uses: kungfu-systems/buildchain/.github/workflows/.build.yml@v2
673
+ uses: kungfu-systems/buildchain/.github/workflows/.build.yml@v3
674
674
  with:
675
675
  publish-channel: release
676
676
 
@@ -796,7 +796,7 @@ calls `actions/promote-buildchain-ref` with
796
796
  `promote-only-release-candidate: "true"` and
797
797
  `require-publish-source-lock: "true"`. The wrapper passes the created
798
798
  `publish-gate/*` ref, target SHA, and `locked=true` into the promote action, so
799
- floating `@v2` consumers receive publish-side source-lock drift protection by
799
+ floating `@v3` consumers receive publish-side source-lock drift protection by
800
800
  default. It also defaults `branch-protection-bypass-apps` to `github-actions`
801
801
  so the workflow automation can apply generated version-state and channel
802
802
  bookkeeping on protected `dev`/`alpha`/`release` branches after the reviewed
@@ -840,7 +840,7 @@ candidate passport, and the final release passport record these identities.
840
840
  ```yaml
841
841
  jobs:
842
842
  promote:
843
- uses: kungfu-systems/buildchain/.github/workflows/release-candidate-promote.yml@v2
843
+ uses: kungfu-systems/buildchain/.github/workflows/release-candidate-promote.yml@v3
844
844
  secrets:
845
845
  buildchain-issue-app-id: ${{ secrets.BUILDCHAIN_ISSUE_APP_ID }}
846
846
  buildchain-issue-app-private-key: ${{ secrets.BUILDCHAIN_ISSUE_APP_PRIVATE_KEY }}
@@ -939,7 +939,7 @@ publish side effect:
939
939
 
940
940
  ```yaml
941
941
  - name: Promote release ref and publish npm package set
942
- uses: kungfu-systems/buildchain/actions/promote-buildchain-ref@v2
942
+ uses: kungfu-systems/buildchain/actions/promote-buildchain-ref@v3
943
943
  with:
944
944
  sha: ${{ needs.build.outputs.publish-source-sha }}
945
945
  target-ref: release/v22/v22.22
@@ -1042,7 +1042,7 @@ sampler path as optional during verify; an explicitly supplied
1042
1042
  For custom workflows, use the action directly:
1043
1043
 
1044
1044
  ```yaml
1045
- - uses: kungfu-systems/buildchain/actions/run-lifecycle@v2
1045
+ - uses: kungfu-systems/buildchain/actions/run-lifecycle@v3
1046
1046
  with:
1047
1047
  stage: build
1048
1048
  required: "true"
@@ -1,14 +1,14 @@
1
1
  # Runtime Train Validation
2
2
 
3
- Buildchain consumers should keep stable workflow refs such as `@v2` in
3
+ Buildchain consumers should keep stable workflow refs such as `@v3` in
4
4
  committed workflow YAML. Runtime trains provide a temporary validation pointer
5
5
  for Buildchain changes that are ready for downstream testing but not yet
6
6
  promoted through the normal `dev -> alpha -> release` chain.
7
7
 
8
8
  Official floating channels are not runtime overrides. A consumer that
9
- deliberately follows `@v2-alpha` gets the matching runtime on pull requests and
9
+ deliberately follows `@v3-alpha` gets the matching runtime on pull requests and
10
10
  pushes because the reusable workflow reads the called workflow identity from
11
- `job.workflow_ref`. Passing `buildchain-ref: v2-alpha` explicitly is also
11
+ `job.workflow_ref`. Passing `buildchain-ref: v3-alpha` explicitly is also
12
12
  accepted when the caller wants the channel binding visible in its input set.
13
13
  The caller's `github.workflow_ref` is not used for this inference because it
14
14
  identifies the caller workflow during reusable calls.
@@ -18,7 +18,7 @@ identifies the caller workflow during reusable calls.
18
18
  A train ref is a branch in the Buildchain repository:
19
19
 
20
20
  ```text
21
- train/v2/v2.3/<capability>
21
+ train/v3/v3.0/<capability>
22
22
  ```
23
23
 
24
24
  It is a validation pointer, not a release channel:
@@ -41,15 +41,15 @@ When a Buildchain change needs downstream validation before stable refs move,
41
41
  publish a train ref before asking consumers to test it:
42
42
 
43
43
  ```sh
44
- git push origin HEAD:refs/heads/train/v2/v2.3/<capability>
44
+ git push origin HEAD:refs/heads/train/v3/v3.0/<capability>
45
45
  ```
46
46
 
47
47
  Use a capability slug that names the behavior being validated, for example:
48
48
 
49
49
  ```text
50
- train/v2/v2.3/runtime-loader
51
- train/v2/v2.3/toolkit-diagnostics
52
- train/v2/v2.3/site-source-of-truth
50
+ train/v3/v3.0/runtime-loader
51
+ train/v3/v3.0/toolkit-diagnostics
52
+ train/v3/v3.0/site-source-of-truth
53
53
  ```
54
54
 
55
55
  The pull request or validation request should include the train ref, the exact
@@ -71,7 +71,7 @@ Consumers keep their reusable workflow pinned to the stable shell:
71
71
  ```yaml
72
72
  jobs:
73
73
  build:
74
- uses: kungfu-systems/buildchain/.github/workflows/.build.yml@v2
74
+ uses: kungfu-systems/buildchain/.github/workflows/.build.yml@v3
75
75
  ```
76
76
 
77
77
  To validate a train without committing temporary workflow refs, expose a
@@ -88,7 +88,7 @@ on:
88
88
 
89
89
  jobs:
90
90
  build:
91
- uses: kungfu-systems/buildchain/.github/workflows/.build.yml@v2
91
+ uses: kungfu-systems/buildchain/.github/workflows/.build.yml@v3
92
92
  with:
93
93
  buildchain-ref: ${{ inputs.buildchain-ref || '' }}
94
94
  ```
@@ -101,8 +101,8 @@ consumers that do not have it should add it once before validating a train.
101
101
  Use this short request when a train is ready:
102
102
 
103
103
  ```text
104
- Buildchain train ready: buildchain-ref=train/v2/v2.3/<capability>.
105
- Keep uses: ...@v2; run workflow_dispatch with that buildchain-ref and report the runtime evidence summary.
104
+ Buildchain train ready: buildchain-ref=train/v3/v3.0/<capability>.
105
+ Keep uses: ...@v3; run workflow_dispatch with that buildchain-ref and report the runtime evidence summary.
106
106
  ```
107
107
 
108
108
  The consumer should run a trusted `workflow_dispatch`, paste the train ref into
@@ -119,7 +119,7 @@ summary. The evidence should include:
119
119
 
120
120
  ## Trust and limitation
121
121
 
122
- Official floating channel refs such as `v2` and `v2-alpha` may be selected on
122
+ Official floating channel refs such as `v2` and `v3-alpha` may be selected on
123
123
  pull requests and pushes. Train refs and arbitrary exact-SHA overrides still
124
124
  fail closed unless the event is `workflow_dispatch` and the actor has write,
125
125
  maintain, or admin permission on the caller repository. Pull requests,
@@ -97,7 +97,7 @@ per-gate evidence pointers, omissions, and issues.
97
97
  ```yaml
98
98
  jobs:
99
99
  gates:
100
- uses: kungfu-systems/buildchain/.github/workflows/.gate-profile.yml@v2
100
+ uses: kungfu-systems/buildchain/.github/workflows/.gate-profile.yml@v3
101
101
  with:
102
102
  gate-profile: alpha-pr
103
103
  runner-preset: kungfu-v4-self-hosted
@@ -105,7 +105,7 @@ jobs:
105
105
 
106
106
  build:
107
107
  needs: gates
108
- uses: kungfu-systems/buildchain/.github/workflows/build.yml@v2
108
+ uses: kungfu-systems/buildchain/.github/workflows/build.yml@v3
109
109
  with:
110
110
  release-candidate: true
111
111
  gate-profile-aggregate-json: ${{ needs.gates.outputs.gate-aggregate-json }}
@@ -154,7 +154,7 @@ The P0 bundle includes:
154
154
  - workflow/action registry;
155
155
  - release model facts;
156
156
  - artifact and evidence schema index;
157
- - Buildchain runtime contract world for `@v2` floating-ref compatibility checks,
157
+ - Buildchain runtime contract world for `@v3` floating-ref compatibility checks,
158
158
  KFD-1/KFD-2/KFD-3 release gates, GitHub Release evidence publication, and
159
159
  site-consumption contracts;
160
160
  - Buildchain KFD claim registry for release-passport self verification and
@@ -125,7 +125,7 @@ permissions:
125
125
 
126
126
  jobs:
127
127
  stable:
128
- uses: kungfu-systems/buildchain/.github/workflows/stable-candidate-patrol.yml@v2
128
+ uses: kungfu-systems/buildchain/.github/workflows/stable-candidate-patrol.yml@v3
129
129
  with:
130
130
  release-now: ${{ inputs.release-now }}
131
131
  dry-run: false
@@ -203,7 +203,7 @@ step; the durable authority record remains the candidate ledger entry and PR.
203
203
  The default ledger ref is derived from the release line, for example:
204
204
 
205
205
  ```text
206
- buildchain/candidate-ledger/v2/v2.12
206
+ buildchain/candidate-ledger/v3/v3.0
207
207
  ```
208
208
 
209
209
  It stores `.buildchain/stable-candidate-ledger.json`. Patrol runs are serialized
@@ -413,6 +413,20 @@ buildchain verify observability-log .buildchain/logs/events.jsonl --min-events 4
413
413
  Every event records a timestamp. `span` records duration and preserves the
414
414
  wrapped command's exit code.
415
415
 
416
+ Buildchain also records local control-plane outcome events for workflow-friction
417
+ incident handling and production release-intent PR handling. `log summary`
418
+ reports the observed incident reuse rate, release-intent suppression rate, and
419
+ suppression reasons. A reused incident means an equivalent occurrence found the
420
+ same fingerprint and was commented, cooled down, or otherwise reused; a
421
+ suppressed release intent means Buildchain proved that the source commit already
422
+ had a qualifying merged release PR. These are operational facts, not release
423
+ policy inputs, and logging failure remains non-fatal by default.
424
+
425
+ The reusable promotion workflow uploads `.buildchain/logs/events.jsonl` when a
426
+ friction report is produced. The web-surface production release PR handoff
427
+ artifact includes the same path, so a real run can falsify the P0 claim instead
428
+ of relying only on unit tests.
429
+
416
430
  ## Release Gate
417
431
 
418
432
  Buildchain's own binary distribution lane verifies required log events before
@@ -167,7 +167,7 @@ floating ref, such as:
167
167
  ```yaml
168
168
  jobs:
169
169
  web:
170
- uses: kungfu-systems/buildchain/.github/workflows/.web-surface.yml@v2
170
+ uses: kungfu-systems/buildchain/.github/workflows/.web-surface.yml@v3
171
171
  with:
172
172
  buildchain-contract-lock-path: .buildchain/contract-lock.json
173
173
  buildchain-contract-compatibility-policy: major-compatible
@@ -667,7 +667,7 @@ the standard PR review and promotion flow without copying bespoke glue:
667
667
  ```yaml
668
668
  jobs:
669
669
  web-surface:
670
- uses: kungfu-systems/buildchain/.github/workflows/.web-surface.yml@v2
670
+ uses: kungfu-systems/buildchain/.github/workflows/.web-surface.yml@v3
671
671
  with:
672
672
  build-command: npm run build
673
673
  verify-command: npm run check
@@ -686,7 +686,7 @@ The reusable workflow maps GitHub events to Buildchain web-surface semantics:
686
686
 
687
687
  The optional `buildchain-ref` input is empty by default. Empty keeps the
688
688
  web-surface run on the stable Buildchain runtime selected by the reusable
689
- workflow ref, normally `@v2`. A trusted maintainer can expose a
689
+ workflow ref, normally `@v3`. A trusted maintainer can expose a
690
690
  `workflow_dispatch` input and pass it through for one-off train validation.
691
691
  See [`runtime-train-validation.md`](runtime-train-validation.md) for the shared
692
692
  train protocol and notification template:
@@ -702,7 +702,7 @@ on:
702
702
 
703
703
  jobs:
704
704
  web-surface:
705
- uses: kungfu-systems/buildchain/.github/workflows/.web-surface.yml@v2
705
+ uses: kungfu-systems/buildchain/.github/workflows/.web-surface.yml@v3
706
706
  with:
707
707
  buildchain-ref: ${{ inputs.buildchain-ref || '' }}
708
708
  build-command: pnpm run build
@@ -712,7 +712,7 @@ jobs:
712
712
 
713
713
  Only trusted `workflow_dispatch` runs by repository actors with write,
714
714
  maintain, or admin permission may use a non-empty runtime override. Train refs
715
- such as `train/v2/v2.3/site-source-of-truth` are temporary validation refs, not
715
+ such as `train/v3/v3.0/site-source-of-truth` are temporary validation refs, not
716
716
  stable production dependencies or pending merge targets. They may remain for a
717
717
  retention window after release as a fast-use and rollback channel, with old
718
718
  trains handled by periodic Buildchain cleanup. The web-surface deployment
@@ -730,7 +730,7 @@ permissions:
730
730
 
731
731
  jobs:
732
732
  web-surface:
733
- uses: kungfu-systems/buildchain/.github/workflows/.web-surface.yml@v2
733
+ uses: kungfu-systems/buildchain/.github/workflows/.web-surface.yml@v3
734
734
  with:
735
735
  build-command: pnpm run build
736
736
  verify-command: pnpm run check
@@ -824,7 +824,7 @@ For release-PR publishing, callers opt in explicitly:
824
824
  ```yaml
825
825
  jobs:
826
826
  web-surface:
827
- uses: kungfu-systems/buildchain/.github/workflows/.web-surface.yml@v2
827
+ uses: kungfu-systems/buildchain/.github/workflows/.web-surface.yml@v3
828
828
  with:
829
829
  build-command: npm run build
830
830
  verify-command: npm run check
@@ -15,7 +15,7 @@ It is intentionally small, but it keeps the important shape:
15
15
  - lifecycle commands are Node-based and cross-platform;
16
16
  - build output lands under `dist/`, which the reusable build workflow uploads
17
17
  with a deterministic artifact name and manifest;
18
- - `.github/workflows/build.yml` exercises the public `build.yml@v2` channel
18
+ - `.github/workflows/build.yml` exercises the public `build.yml@v3` channel
19
19
  router with a caller job named `build`, including its stable top-level
20
20
  `build / Summarize build contract` aggregate;
21
21
  - the fixture can be resolved through a publish-gate source lock, which binds
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kungfu-tech/buildchain",
3
- "version": "3.0.1-alpha.2",
3
+ "version": "3.0.1-alpha.4",
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",