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

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.
@@ -100,6 +100,7 @@
100
100
  "checkout-cache-mode",
101
101
  "checkout-cache-reference-repository-template",
102
102
  "checkout-cache-timeout-seconds",
103
+ "control-runner-json",
103
104
  "credential-island-caller-owned",
104
105
  "credential-island-environment",
105
106
  "credential-island-macos-app-path",
@@ -140,7 +141,7 @@
140
141
  "verify-command",
141
142
  "working-directory"
142
143
  ],
143
- "inputCount": 65,
144
+ "inputCount": 66,
144
145
  "secrets": [
145
146
  "BUILDCHAIN_ARTIFACT_RELAY_S3_DOWNLOAD_ROLE_ARN",
146
147
  "BUILDCHAIN_ARTIFACT_RELAY_S3_ROLE_ARN",
@@ -226,6 +227,7 @@
226
227
  "artifact-retention-days",
227
228
  "buildchain-ref",
228
229
  "buildchain-repository",
230
+ "cargo-registry-index",
229
231
  "checkout-cache-fallback",
230
232
  "checkout-cache-fetch-attempts",
231
233
  "checkout-cache-github-timeout-seconds",
@@ -243,13 +245,16 @@
243
245
  "platforms-json",
244
246
  "require-trusted-event",
245
247
  "runner-preset",
248
+ "rust-toolchain",
249
+ "rustup-dist-server",
250
+ "rustup-update-root",
246
251
  "shifu-cache-profile-digest",
247
252
  "shifu-cache-profile-ref",
248
253
  "source-ref",
249
254
  "untrusted-policy",
250
255
  "working-directory"
251
256
  ],
252
- "inputCount": 26,
257
+ "inputCount": 30,
253
258
  "secrets": [],
254
259
  "secretCount": 0,
255
260
  "outputs": [
@@ -914,6 +919,7 @@
914
919
  "checkout-cache-mode",
915
920
  "checkout-cache-reference-repository-template",
916
921
  "checkout-cache-timeout-seconds",
922
+ "control-runner-json",
917
923
  "credential-island-caller-owned",
918
924
  "credential-island-environment",
919
925
  "credential-island-macos-app-path",
@@ -954,7 +960,7 @@
954
960
  "verify-command",
955
961
  "working-directory"
956
962
  ],
957
- "inputCount": 68,
963
+ "inputCount": 69,
958
964
  "secrets": [
959
965
  "BUILDCHAIN_ARTIFACT_RELAY_S3_DOWNLOAD_ROLE_ARN",
960
966
  "BUILDCHAIN_ARTIFACT_RELAY_S3_ROLE_ARN",
@@ -1151,6 +1151,24 @@ with:
1151
1151
  Do not set `require-trusted-event: false` for workflows that use self-hosted
1152
1152
  runners or secrets.
1153
1153
 
1154
+ The build matrix and the workflow control plane are routed independently. The
1155
+ matrix continues to use `runner-preset` and `platforms-json`. Consumers with a
1156
+ governed runner may also move channel resolution, trust evaluation, contract
1157
+ resolution, controller evidence, artifact transfer, and aggregation off the
1158
+ default GitHub-hosted runner:
1159
+
1160
+ ```yaml
1161
+ with:
1162
+ control-runner-json: '["self-hosted","agent-120"]'
1163
+ runner-preset: custom
1164
+ platforms-json: '[{"id":"linux-x64","name":"Linux x64","runner":"[\"self-hosted\",\"agent-120\"]"}]'
1165
+ ```
1166
+
1167
+ `control-runner-json` is additive and defaults to `["ubuntu-24.04"]`. Keep
1168
+ `require-trusted-event: true` whenever either runner input selects
1169
+ `self-hosted`; a self-hosted control plane must not be exposed to untrusted fork
1170
+ events or arbitrary caller-controlled workflow code.
1171
+
1154
1172
  `require-trusted-event` controls access to build runners. It does not override
1155
1173
  the publish gate: pull requests remain non-publishing events.
1156
1174
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kungfu-tech/buildchain",
3
- "version": "3.0.1-alpha.4",
3
+ "version": "3.0.1-alpha.6",
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",
@@ -93,7 +93,7 @@ function routerControllerPlanJob() {
93
93
  return ` controller-plan:
94
94
  name: Plan channel router controller evidence
95
95
  needs: resolve-channel
96
- runs-on: ubuntu-24.04
96
+ runs-on: \${{ fromJSON(inputs.control-runner-json) }}
97
97
  outputs:
98
98
  controller-plan-artifact: \${{ steps.names.outputs.controller-plan-artifact }}
99
99
  controller-plan-json: \${{ steps.plan.outputs.controller-plan-json }}
@@ -156,7 +156,7 @@ function routerControllerReceiptJob() {
156
156
  - controller-plan
157
157
  - build
158
158
  if: \${{ always() && needs.controller-plan.result == 'success' }}
159
- runs-on: ubuntu-24.04
159
+ runs-on: \${{ fromJSON(inputs.control-runner-json) }}
160
160
  outputs:
161
161
  controller-receipt-artifact: \${{ steps.names.outputs.controller-receipt-artifact }}
162
162
  controller-receipt-json: \${{ steps.receipt.outputs.controller-receipt-json }}
@@ -218,7 +218,7 @@ function routerAggregateJob() {
218
218
  - build
219
219
  - controller-receipt
220
220
  if: \${{ always() }}
221
- runs-on: ubuntu-24.04
221
+ runs-on: \${{ fromJSON(inputs.control-runner-json) }}
222
222
  steps:
223
223
  - name: Enforce public channel router aggregate
224
224
  shell: bash
@@ -295,6 +295,7 @@ function bindRouterCheckoutToWorkflowSha(workflow) {
295
295
 
296
296
  export function generateChannelBuildWorkflow(source) {
297
297
  const generated = bindRouterCheckoutToWorkflowSha(generateChannelBuildWorkflowBase(source))
298
+ .replaceAll("runs-on: ubuntu-24.04", "runs-on: ${{ fromJSON(inputs.control-runner-json) }}")
298
299
  .replace(
299
300
  "\npermissions:\n contents: read\n",
300
301
  "\npermissions:\n actions: read\n contents: read\n",