@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.
- package/AGENTS.md +5 -5
- package/README.md +15 -17
- package/actions/promote-buildchain-ref/README.md +8 -8
- package/actions/report-buildchain-issue/README.md +2 -2
- package/actions/run-lifecycle/README.md +1 -1
- package/actions/validate-config/README.md +1 -1
- package/bin/buildchain.mjs +11 -4
- package/dist/site/buildchain-contract.json +59 -24
- package/dist/site/buildchain-site.json +78 -83
- package/dist/site/controller-registry.json +30 -2
- package/dist/site/kfd-claims.json +12 -5
- package/dist/site/kfd-upstream-aggregate.json +1 -1
- package/dist/site/manual-registry.json +18 -18
- package/dist/site/node-api-registry.json +5 -5
- package/dist/site/page-registry.json +54 -59
- package/dist/site/public-surface-audit.json +11 -9
- package/dist/site/publication-registry.json +4 -4
- package/dist/site/release-provenance.json +2 -2
- package/dist/site/site-manifest.json +22 -22
- package/dist/site/workflow-registry.json +8 -1
- package/docs/MAP.md +5 -5
- package/docs/cli.md +20 -14
- package/docs/consumer-issue-reporting.md +1 -1
- package/docs/homebrew.md +7 -5
- package/docs/install.md +7 -3
- package/docs/kfd-agent-hub.md +1 -1
- package/docs/lifecycle-protocol.md +3 -3
- package/docs/migration-inventory.md +4 -4
- package/docs/ownership.md +4 -4
- package/docs/publication-artifacts.md +2 -2
- package/docs/release-candidate.md +4 -4
- package/docs/release-governance.md +13 -13
- package/docs/release-passport.md +6 -6
- package/docs/release-propagation.md +5 -5
- package/docs/reusable-build-surface.md +23 -23
- package/docs/runtime-train-validation.md +13 -13
- package/docs/shifu-gate-profiles.md +2 -2
- package/docs/site-bundle-contract.md +1 -1
- package/docs/stable-candidate-patrol.md +2 -2
- package/docs/toolkit-observability.md +14 -0
- package/docs/web-surface-deployments.md +7 -7
- package/fixtures/libnode-shaped/README.md +1 -1
- package/package.json +1 -1
- package/packages/core/issue-reporting.js +8 -3
- package/packages/core/logging.js +101 -0
- package/scripts/auditable-demo.mjs +1 -1
- package/scripts/check-inventory.mjs +36 -17
- package/scripts/init-repo.mjs +2 -2
- package/scripts/web-surface-production-release-pr.mjs +99 -0
- 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@
|
|
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@
|
|
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 `@
|
|
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@
|
|
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@
|
|
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
|
-
- `
|
|
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 `
|
|
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 `
|
|
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@
|
|
233
|
-
`
|
|
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 `
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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 `
|
|
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@
|
|
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
|
package/docs/release-passport.md
CHANGED
|
@@ -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
|
|
130
|
+
--tag v3.0.0 \
|
|
131
131
|
--repository kungfu-systems/buildchain \
|
|
132
132
|
--assets-dir dist \
|
|
133
|
-
--publish-evidence-json .buildchain/release-evidence/
|
|
134
|
-
--transaction-json .buildchain/release-state/
|
|
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/
|
|
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 `@
|
|
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 `@
|
|
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@
|
|
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@
|
|
177
|
+
uses: kungfu-systems/buildchain/.github/workflows/release-propagation.yml@v3
|
|
178
178
|
with:
|
|
179
|
-
buildchain-ref:
|
|
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:
|
|
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 `@
|
|
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@
|
|
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@
|
|
60
|
-
the runtime. Production consumers should adopt `build.yml@
|
|
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@
|
|
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@
|
|
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
|
-
`@
|
|
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@
|
|
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/
|
|
249
|
-
| `refs/heads/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 `@
|
|
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@
|
|
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@
|
|
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:
|
|
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@
|
|
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@
|
|
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/
|
|
449
|
-
Keep uses: ...@
|
|
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@
|
|
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@
|
|
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 `@
|
|
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@
|
|
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@
|
|
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@
|
|
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 `@
|
|
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 `@
|
|
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:
|
|
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/
|
|
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/
|
|
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/
|
|
51
|
-
train/
|
|
52
|
-
train/
|
|
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@
|
|
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@
|
|
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/
|
|
105
|
-
Keep uses: ...@
|
|
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 `
|
|
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@
|
|
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@
|
|
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 `@
|
|
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@
|
|
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/
|
|
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@
|
|
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@
|
|
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 `@
|
|
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@
|
|
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/
|
|
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@
|
|
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@
|
|
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@
|
|
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.
|
|
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",
|