@kungfu-tech/buildchain 2.14.18-alpha.1 → 2.14.18-alpha.11

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 (43) hide show
  1. package/README.md +1 -0
  2. package/actions/promote-buildchain-ref/README.md +33 -30
  3. package/bin/buildchain.mjs +16 -4
  4. package/dist/site/buildchain-contract.json +86 -31
  5. package/dist/site/buildchain-site.json +88 -27
  6. package/dist/site/capability-registry.json +6 -5
  7. package/dist/site/cli-registry.json +12 -0
  8. package/dist/site/controller-registry.json +50 -6
  9. package/dist/site/kfd-claims.json +110 -21
  10. package/dist/site/kfd-upstream-aggregate.json +1 -1
  11. package/dist/site/manual-registry.json +21 -6
  12. package/dist/site/node-api-registry.json +19 -6
  13. package/dist/site/page-registry.json +70 -17
  14. package/dist/site/public-surface-audit.json +130 -23
  15. package/dist/site/publication-authority-registry.json +21 -1
  16. package/dist/site/publication-registry.json +4 -4
  17. package/dist/site/release-provenance.json +1 -0
  18. package/dist/site/site-manifest.json +18 -10
  19. package/dist/site/workflow-registry.json +62 -16
  20. package/docs/MAP.md +3 -1
  21. package/docs/github-governance-authority.md +267 -0
  22. package/docs/lifecycle-protocol.md +10 -10
  23. package/docs/publish-transaction.md +73 -4
  24. package/docs/release-governance.md +38 -24
  25. package/docs/reusable-build-surface.md +29 -11
  26. package/docs/web-surface-deployments.md +46 -0
  27. package/package.json +2 -1
  28. package/packages/core/buildchain-kfd-claims.js +2 -0
  29. package/packages/core/buildchain-publication-authority.js +1 -0
  30. package/packages/core/controller-evidence.js +1 -1
  31. package/packages/core/github-governance-authority.js +1312 -0
  32. package/packages/core/index.js +22 -0
  33. package/packages/core/publication-control-plane-audit.js +4 -1
  34. package/scripts/audit-github-governance.mjs +474 -0
  35. package/scripts/audit-publication-control-plane.mjs +41 -5
  36. package/scripts/check-inventory.mjs +8 -0
  37. package/scripts/generate-channel-promotion-workflow.mjs +3 -0
  38. package/scripts/generate-site-bundle.mjs +5 -0
  39. package/scripts/installer-publication.mjs +351 -0
  40. package/scripts/publication-commit-evidence.mjs +158 -0
  41. package/scripts/reconcile-github-governance.mjs +549 -0
  42. package/scripts/release-candidate-resolver.mjs +53 -0
  43. package/scripts/web-surface-core.mjs +127 -14
package/README.md CHANGED
@@ -362,6 +362,7 @@ npm pack --dry-run --json --registry=https://registry.npmjs.org/
362
362
  - [Documentation map](docs/MAP.md)
363
363
  - [Product mechanism](docs/product-mechanism.md)
364
364
  - [Release Passport and binary distribution](docs/release-passport.md)
365
+ - [GitHub governance authority](docs/github-governance-authority.md)
365
366
  - [Binary distribution details](docs/binary-distribution.md)
366
367
  - [Toolkit observability](docs/toolkit-observability.md)
367
368
  - [Site bundle contract](docs/site-bundle-contract.md)
@@ -82,17 +82,18 @@ explicitly, then run the normal channel promotion flow for that line.
82
82
 
83
83
  When branch protection requires pull requests, generated version-state commits
84
84
  still run through promotion automation first. The action updates
85
- Buildchain-managed channel protection before generated bookkeeping, adds the
86
- authenticated promotion token user or app to the bypass allowlist, creates
85
+ Buildchain-managed channel protection before generated bookkeeping, admits only
86
+ the exact `github-actions` App to the target-bound bypass allowlist, creates
87
87
  every configured required check on the exact generated version-state commit, then
88
88
  tries to apply that commit directly. If GitHub still rejects release
89
89
  finalization bookkeeping, Buildchain creates or reuses a same-repository
90
90
  `buildchain/version-state/*` PR based on the current target channel head and
91
91
  returns `finalization-needed=true`; a later idempotent promotion run can resume
92
- from the durable transaction state. Strict alpha promotion still fails with a
93
- configuration diagnostic instead of opening a post-publish human PR. Reusable
94
- wrapper callers should allow `checks: write` so the generated checks are owned by
95
- GitHub Actions and matches the managed branch protection rule.
92
+ from the durable transaction state. Strict alpha uses the same protected
93
+ version-state PR recovery for its target and dev bookkeeping, and does not move
94
+ tags until those provider-enforced transactions land. Reusable wrapper callers
95
+ should allow `checks: write` so the generated checks are owned by GitHub Actions
96
+ and match the managed branch protection rule.
96
97
 
97
98
  Stable promotion also protects concurrent development work. The reusable
98
99
  wrapper checks out the exact current `dev/vN/vN.M` head as a reconciliation
@@ -104,17 +105,23 @@ This prevents generated projections from an older release tree from replacing
104
105
  capabilities that reached dev while the release was in progress.
105
106
 
106
107
  For Buildchain-owned automation, callers may pass
107
- `branch-protection-bypass-apps`, `branch-protection-bypass-users`, or
108
- `branch-protection-bypass-teams`. The action still configures managed
108
+ `branch-protection-bypass-apps: github-actions`. The action rejects every other
109
+ App slug and all user or team bypass actors. It configures managed
109
110
  `dev/vN/vN.M`, `alpha/vN/vN.M`, and `release/vN/vN.M` branches with one
110
- required approving review, strict GitHub Actions checks, admin enforcement,
111
+ required approving review, Code Owner review, stale-review dismissal,
112
+ latest-push approval, exact App-bound GitHub Actions checks, admin enforcement,
111
113
  conversation resolution, no force pushes, and no deletions; the bypass
112
114
  allowance only lets the named automation identity apply generated version-state
113
115
  or channel bookkeeping without a second human review after the reviewed channel
114
- PR has already merged. Direct action calls automatically include the current
115
- promotion token's authenticated user or app when GitHub exposes it; explicit
116
- inputs are supplemental allowlist entries for less discoverable release
117
- authorities.
116
+ PR has already merged.
117
+
118
+ GitHub may return either `403` or a deliberately opaque `404` when a
119
+ non-administrator token reads the full branch-protection endpoint. In that
120
+ case, promotion reads the provider's branch summary and accepts only an
121
+ already-protected branch that enforces the exact required check for everyone.
122
+ It does not interpret the opaque response as missing protection or try to
123
+ rewrite policy with a developer token. The independent publication-authority
124
+ audit remains responsible for the complete read-only governance proof.
118
125
 
119
126
  ## Publish Transactions
120
127
 
@@ -125,7 +132,7 @@ trusted channel workflow:
125
132
  - uses: kungfu-systems/buildchain/actions/promote-buildchain-ref@v2
126
133
  with:
127
134
  token: ${{ secrets.BUILDCHAIN_PROMOTION_TOKEN }}
128
- generated-ref-update-token: ${{ secrets.BUILDCHAIN_PROMOTION_TOKEN }}
135
+ generated-ref-update-token: ${{ github.token }}
129
136
  sha: ${{ github.sha }}
130
137
  target-ref: release/v2/v2.0
131
138
  publish-transaction: "true"
@@ -406,26 +413,22 @@ governance semantics:
406
413
  with either the `verification-command` input or `buildchain.toml`
407
414
  `lifecycle.verify` before any tags or channel refs move.
408
415
 
409
- The promotion workflow should use `BUILDCHAIN_PROMOTION_TOKEN` for non-dry-run
410
- promotion. The token is the buildchain equivalent of the old ABV runner release
411
- authority: protected branch review and check rules guard human channel merges,
412
- while the reusable build trust gate now checks the source-lock channel HEAD and
413
- merged same-repository PR lineage before heavy build runners start. This action
414
- still independently rechecks PR lineage, alpha/release tree equivalence, and
415
- generated version-state verification before moving channel refs and tags.
416
- Generated version-state direct ref updates can use a separate
417
- `generated-ref-update-token`; the reusable wrapper defaults it to
418
- `secrets.BUILDCHAIN_PROMOTION_TOKEN || github.token`. Consumers that protect
419
- `dev/*`, `alpha/*`, or `release/*` with one required review should configure
420
- `BUILDCHAIN_PROMOTION_TOKEN` as the bypass-capable release authority, so
421
- post-publish dev/alpha/release bookkeeping completes without a human PR.
416
+ The reusable promotion workflow keeps governance reads, generated status checks,
417
+ and generated ref updates on the run-scoped `github.token`. When branch
418
+ protection rejects generated bookkeeping, it supplies `BUILDCHAIN_PROMOTION_TOKEN`
419
+ only through `generated-pull-request-token` so the same-repository recovery PR can
420
+ be listed or created without broadening the governance client. Protected branch
421
+ review and check rules guard human channel merges, while the reusable build trust
422
+ gate checks the source-lock channel HEAD and merged same-repository PR lineage
423
+ before heavy build runners start. This action still independently rechecks PR
424
+ lineage, alpha/release tree equivalence, and generated version-state verification
425
+ before moving channel refs and tags.
422
426
  The reusable `release-candidate-promote.yml` wrapper defaults
423
427
  `branch-protection-bypass-apps` to `github-actions`, so flow-internal promotion
424
428
  can complete generated `dev`/`alpha`/`release` bookkeeping while ordinary human
425
429
  pushes and PR merges remain governed by the one-review branch protection rule.
426
- The promotion action also auto-discovers the current token's authenticated user
427
- or app and adds it to the managed bypass allowlist, so consumers do not have to
428
- declare the same release authority twice.
430
+ The promotion action rejects alternate App slugs and every user or team bypass,
431
+ so the mutation path cannot widen the authority descriptor.
429
432
 
430
433
  The tag names intentionally follow the old ABV release semantics:
431
434
  exact release tags are `vX.Y.Z`, exact alpha tags are `vX.Y.Z-alpha.N`, floating
@@ -148,6 +148,7 @@ function usage() {
148
148
  buildchain release-governance reconcile --repository <owner/repo>
149
149
  --branch <dev|alpha|release/vN/vN.N>
150
150
  --candidate-sha <sha> [--apply] [--json]
151
+ buildchain github-governance <plan|apply|rollback|protection-policy-plan|ruleset-policy-plan> ...
151
152
  buildchain release <inspect|recover|finalize|abort> ...
152
153
  buildchain transaction inspect ...
153
154
  buildchain collect github-release --tag <tag> [--repository <owner/repo>]
@@ -184,6 +185,8 @@ function usage() {
184
185
  --publication-evidence-json <file-or-json>
185
186
  [--expected-json <file-or-json>] [--used-nonce <nonce>]... [--json]
186
187
  buildchain audit publication-control-plane --repository <owner/repo> --branch <protected-branch>
188
+ buildchain audit github-governance [--organization <owner>] [--repository <owner/repo>]
189
+ [--output <file>] [--require-qualifying] [--json]
187
190
  [--source-sha <merged-branch-sha>] [--workflow-repository <owner/repo>]
188
191
  [--workflow <path>] [--workflow-ref <sha-or-ref>]
189
192
  [--job <id>] [--environment <name>] [--package <name>]
@@ -2024,11 +2027,15 @@ async function main(argv = process.argv.slice(2)) {
2024
2027
 
2025
2028
  if (command === "audit") {
2026
2029
  const [subcommand = "", ...auditArgs] = args;
2027
- if (subcommand !== "publication-control-plane") {
2028
- throw new Error("usage: buildchain audit publication-control-plane --repository <owner/repo> --branch <protected-branch>");
2030
+ if (subcommand === "publication-control-plane") {
2031
+ runScript("audit-publication-control-plane.mjs", auditArgs);
2032
+ return;
2029
2033
  }
2030
- runScript("audit-publication-control-plane.mjs", auditArgs);
2031
- return;
2034
+ if (subcommand === "github-governance") {
2035
+ runScript("audit-github-governance.mjs", auditArgs);
2036
+ return;
2037
+ }
2038
+ throw new Error("usage: buildchain audit <publication-control-plane|github-governance> ...");
2032
2039
  }
2033
2040
 
2034
2041
  if (command === "explain") {
@@ -2149,6 +2156,11 @@ async function main(argv = process.argv.slice(2)) {
2149
2156
  return;
2150
2157
  }
2151
2158
 
2159
+ if (command === "github-governance") {
2160
+ runScript("reconcile-github-governance.mjs", args);
2161
+ return;
2162
+ }
2163
+
2152
2164
  if (command === "badges") {
2153
2165
  await runReadmeBadgesCli(args);
2154
2166
  return;
@@ -4,7 +4,7 @@
4
4
  "product": {
5
5
  "name": "Buildchain",
6
6
  "package": "@kungfu-tech/buildchain",
7
- "version": "2.14.18-alpha.1",
7
+ "version": "2.14.18-alpha.11",
8
8
  "repository": "https://github.com/kungfu-systems/buildchain"
9
9
  },
10
10
  "majorLine": "v2",
@@ -50,7 +50,7 @@
50
50
  "retryable GitHub fallback fetches use a bounded attempt budget before exact source SHA and tree verification"
51
51
  ],
52
52
  "breakingDigest": "sha256:a6a35370d6b0d0f46e1b2712dcc01961fe53c2febde95409a27a485c10a36650",
53
- "auditDigest": "sha256:c745bc1ae44adec6f5fb7e4f7c31eee2543e978bbf0021102634a9efd4cb0f81"
53
+ "auditDigest": "sha256:1e1386b49f8f3ea813f8157afb96cecec7609b6efe01f07895c893c097b1ed66"
54
54
  },
55
55
  {
56
56
  "contractVersion": 1,
@@ -89,7 +89,7 @@
89
89
  "alpha and stable channel selections use separate consumer contract locks by default"
90
90
  ],
91
91
  "breakingDigest": "sha256:c4597dfa89e1a58f1023905092b849644f5c080abf150aeba9c7e1cd5ed43962",
92
- "auditDigest": "sha256:50baf9fb6743b74d4c2489941dbc1e2e917a6df8e053258a4a4414e4868ec0cc"
92
+ "auditDigest": "sha256:1f29079465cb11004db3f1a6ec4f37b1900fdd90d3278d8d0bacb223757bffa5"
93
93
  },
94
94
  {
95
95
  "contractVersion": 1,
@@ -170,7 +170,7 @@
170
170
  "GitHub Release passport and evidence publication is delegated to promote-buildchain-ref after the semver release transaction completes"
171
171
  ],
172
172
  "breakingDigest": "sha256:1f476fb9a4854b362c4b24cef89a3c7675d7d63baf3bc828d7b8ae7d2787cead",
173
- "auditDigest": "sha256:069b7e2f83dea972b139ccee42876b4cb4644fcff2e7931696b9d0c9e8d98f09"
173
+ "auditDigest": "sha256:5a5cbec0b5382c34101623ed11f264797b618920d8c98c78e0d14af9f07a1f6b"
174
174
  },
175
175
  {
176
176
  "contractVersion": 1,
@@ -212,7 +212,7 @@
212
212
  "promotion reuses PR-stage release-candidate artifacts and does not run the heavy native build matrix"
213
213
  ],
214
214
  "breakingDigest": "sha256:aa30f22e3af0a89841310bdbdc900844dd95a66974db173fa140a71bbd7e82c0",
215
- "auditDigest": "sha256:ce4cdad0b0165349fe2fa1377f10a7625faa90fa2fb858d7603640b19de0de06"
215
+ "auditDigest": "sha256:ba3117f22b343d5f18cd48d327bffaa8ed442cb6150b6c2f95d091808cd009a7"
216
216
  },
217
217
  {
218
218
  "contractVersion": 1,
@@ -256,7 +256,7 @@
256
256
  "channel-aware artifact host facts are checked against the deploy plan before adapter side effects"
257
257
  ],
258
258
  "breakingDigest": "sha256:da569f90374e878948e3d5160ed9929338ce0572473ca8ee54867b0fe1aaeace",
259
- "auditDigest": "sha256:4a7c696ec399c14aa3170fdd24adac0d624bd33db6a2639c489e2b58726c190b"
259
+ "auditDigest": "sha256:063dfe24e1ccdd95b4ffbf89a154aa71197c8bd1cb98b4705d8663917c026366"
260
260
  },
261
261
  {
262
262
  "contractVersion": 1,
@@ -327,7 +327,7 @@
327
327
  "sha256:a59f0910e6df842e7699139472e5dd69ac2fdd7f7213bf2cb346d1d622556874"
328
328
  ],
329
329
  "breakingDigest": "sha256:6147c0a8d5c36bfaa6021871574e1fc28192a3f1b8cfdae4d24ef3059ac1ebda",
330
- "auditDigest": "sha256:cfb90e83dd459200534dbabeabce0effbc143e1e2578313c849743d009864d86"
330
+ "auditDigest": "sha256:c23298988d29d6dbf99c65fd7d5567d704f012cc7a061c46a848c26814cab4b9"
331
331
  },
332
332
  {
333
333
  "contractVersion": 1,
@@ -551,7 +551,7 @@
551
551
  "README badge block checks and writes are generated from machine-readable repository facts"
552
552
  ],
553
553
  "breakingDigest": "sha256:90a73892b2d6c214048448d5f45df75639bdf7b7e8fefd9c596e04b087407bcc",
554
- "auditDigest": "sha256:0e33a9c24a2a23e5657d06ee7013454ada97b141a3dbae0c10490554bb74bf1f"
554
+ "auditDigest": "sha256:a6f8915ef3ade05f04efff98c1723f7562e2b4fc83dcdb1e7decead0e5ac7533"
555
555
  },
556
556
  {
557
557
  "contractVersion": 1,
@@ -641,7 +641,7 @@
641
641
  "manual entries carry source file digests so downstream sites and agents can detect stale hand-written documentation"
642
642
  ],
643
643
  "breakingDigest": "sha256:7d0d2819e3a3e72989d9c57b5efe9d0bc0a79bc0f2c82a0c7b9d6c5a211a91f2",
644
- "auditDigest": "sha256:eba91f08a1327fc7465029e7788d8da9b909531581ddb2bc402a46452f54e17e"
644
+ "auditDigest": "sha256:29b45afe77400b5b38872574cdf7ccfcf8abc93b7f78ad32d994a6636a4f9f68"
645
645
  },
646
646
  {
647
647
  "contractVersion": 1,
@@ -663,7 +663,7 @@
663
663
  "agents can discover supported Node APIs without importing internal file paths"
664
664
  ],
665
665
  "breakingDigest": "sha256:48f925608d3e2131d90936b07dc2a30341204cae3e6e785c0f77d61ad755c945",
666
- "auditDigest": "sha256:0e17c4d3fd07e8c4b4db81efa6757cf7554449139dfe9657aeaaf81dc79f8c0d"
666
+ "auditDigest": "sha256:4572769775450f49fa37a72e6dda211eea0af0a4dd73ad1d188dbb34782a35a9"
667
667
  },
668
668
  {
669
669
  "contractVersion": 1,
@@ -714,7 +714,7 @@
714
714
  "controllerDescriptor": {
715
715
  "contract": "buildchain.controller-descriptor/v1",
716
716
  "digest": "sha256:373723a73d188194d389dee04c394d3b79cb0c016a370f2f5d0f60979a02ed48",
717
- "registryDigest": "sha256:f3c286292ba70b3c9b74eb8ae4052bafb8d5c393ce0037a06b4fc8e675de0f40",
717
+ "registryDigest": "sha256:15fdbedc9c0a2b51104e854300d1725bcab76b11cebde61f53a70a49fe43966b",
718
718
  "inputClassifications": {
719
719
  "buildchain-ref": {
720
720
  "classification": "included",
@@ -830,6 +830,7 @@
830
830
  "checkout-cache-mode",
831
831
  "checkout-cache-reference-repository-template",
832
832
  "checkout-cache-timeout-seconds",
833
+ "credential-island-caller-owned",
833
834
  "credential-island-environment",
834
835
  "credential-island-macos-app-path",
835
836
  "credential-island-macos-platform-id",
@@ -871,8 +872,8 @@
871
872
  ],
872
873
  "controllerDescriptor": {
873
874
  "contract": "buildchain.controller-descriptor/v1",
874
- "digest": "sha256:fd1519f97e045331a21454da1132385d3f4e68f21479b311f0f3569618fe62b1",
875
- "registryDigest": "sha256:f3c286292ba70b3c9b74eb8ae4052bafb8d5c393ce0037a06b4fc8e675de0f40",
875
+ "digest": "sha256:a06607b6ebd3fb00b77519098c81d6fb5e9943ec268aebb1e5fdbefef6e598ad",
876
+ "registryDigest": "sha256:15fdbedc9c0a2b51104e854300d1725bcab76b11cebde61f53a70a49fe43966b",
876
877
  "inputClassifications": {
877
878
  "BUILDCHAIN_ARTIFACT_RELAY_S3_DOWNLOAD_ROLE_ARN": {
878
879
  "classification": "redacted",
@@ -1010,6 +1011,10 @@
1010
1011
  "classification": "digest-only",
1011
1012
  "source": "workflow-call-input"
1012
1013
  },
1014
+ "credential-island-caller-owned": {
1015
+ "classification": "included",
1016
+ "source": "workflow-call-input"
1017
+ },
1013
1018
  "credential-island-environment": {
1014
1019
  "classification": "digest-only",
1015
1020
  "source": "workflow-call-input"
@@ -1174,7 +1179,7 @@
1174
1179
  "missing receipts are non-qualifying and must not be represented as a successful controller run"
1175
1180
  ],
1176
1181
  "breakingDigest": "sha256:30745921541e9b0f70475bb2178c2559f6aef248f6680670ccd44d8c5a69a6b1",
1177
- "auditDigest": "sha256:c745bc1ae44adec6f5fb7e4f7c31eee2543e978bbf0021102634a9efd4cb0f81"
1182
+ "auditDigest": "sha256:1e1386b49f8f3ea813f8157afb96cecec7609b6efe01f07895c893c097b1ed66"
1178
1183
  },
1179
1184
  {
1180
1185
  "contractVersion": 1,
@@ -1249,6 +1254,7 @@
1249
1254
  "checkout-cache-mode",
1250
1255
  "checkout-cache-reference-repository-template",
1251
1256
  "checkout-cache-timeout-seconds",
1257
+ "credential-island-caller-owned",
1252
1258
  "credential-island-environment",
1253
1259
  "credential-island-macos-app-path",
1254
1260
  "credential-island-macos-platform-id",
@@ -1290,8 +1296,8 @@
1290
1296
  ],
1291
1297
  "controllerDescriptor": {
1292
1298
  "contract": "buildchain.controller-descriptor/v1",
1293
- "digest": "sha256:1f6bc118b79876ecab5760356676a3b5076da44f4ba763a6b110f9b1d6fdfb38",
1294
- "registryDigest": "sha256:f3c286292ba70b3c9b74eb8ae4052bafb8d5c393ce0037a06b4fc8e675de0f40",
1299
+ "digest": "sha256:4fc6c33bf5b429f8087ac752d5cf2a19f4a1cc30db01aae927a28cee1cf924f0",
1300
+ "registryDigest": "sha256:15fdbedc9c0a2b51104e854300d1725bcab76b11cebde61f53a70a49fe43966b",
1295
1301
  "inputClassifications": {
1296
1302
  "BUILDCHAIN_ARTIFACT_RELAY_S3_DOWNLOAD_ROLE_ARN": {
1297
1303
  "classification": "redacted",
@@ -1441,6 +1447,10 @@
1441
1447
  "classification": "digest-only",
1442
1448
  "source": "workflow-call-input"
1443
1449
  },
1450
+ "credential-island-caller-owned": {
1451
+ "classification": "included",
1452
+ "source": "workflow-call-input"
1453
+ },
1444
1454
  "credential-island-environment": {
1445
1455
  "classification": "digest-only",
1446
1456
  "source": "workflow-call-input"
@@ -1602,7 +1612,7 @@
1602
1612
  "missing receipts are non-qualifying and must not be represented as a successful controller run"
1603
1613
  ],
1604
1614
  "breakingDigest": "sha256:d40dd05d7e07473d4b2dc1b62fbb0ed6f06449b4d3a7c44a2e8014313e3c0273",
1605
- "auditDigest": "sha256:50baf9fb6743b74d4c2489941dbc1e2e917a6df8e053258a4a4414e4868ec0cc"
1615
+ "auditDigest": "sha256:1f29079465cb11004db3f1a6ec4f37b1900fdd90d3278d8d0bacb223757bffa5"
1606
1616
  },
1607
1617
  {
1608
1618
  "contractVersion": 1,
@@ -1661,7 +1671,7 @@
1661
1671
  "controllerDescriptor": {
1662
1672
  "contract": "buildchain.controller-descriptor/v1",
1663
1673
  "digest": "sha256:29569f4b754595792a16742d1c4c63838b54601674a2cb6c96261a72c962dece",
1664
- "registryDigest": "sha256:f3c286292ba70b3c9b74eb8ae4052bafb8d5c393ce0037a06b4fc8e675de0f40",
1674
+ "registryDigest": "sha256:15fdbedc9c0a2b51104e854300d1725bcab76b11cebde61f53a70a49fe43966b",
1665
1675
  "inputClassifications": {
1666
1676
  "artifact-name": {
1667
1677
  "classification": "included",
@@ -1797,6 +1807,7 @@
1797
1807
  "buildchain-ref",
1798
1808
  "buildchain-repository",
1799
1809
  "fail-on-release-pr-error",
1810
+ "github-governance-receipt-json",
1800
1811
  "node-version",
1801
1812
  "preview-apply",
1802
1813
  "preview-aws-role-arn",
@@ -1831,8 +1842,8 @@
1831
1842
  ],
1832
1843
  "controllerDescriptor": {
1833
1844
  "contract": "buildchain.controller-descriptor/v1",
1834
- "digest": "sha256:7e6283c8fbeab7a680bae57c9ab9c8eb94aab7400d3ee01c5b9dfdd03f149edb",
1835
- "registryDigest": "sha256:f3c286292ba70b3c9b74eb8ae4052bafb8d5c393ce0037a06b4fc8e675de0f40",
1845
+ "digest": "sha256:65cc01e6d2b622277d67237e4811e82d24d2289d55c2f7d2dfb72325c610b2ea",
1846
+ "registryDigest": "sha256:15fdbedc9c0a2b51104e854300d1725bcab76b11cebde61f53a70a49fe43966b",
1836
1847
  "inputClassifications": {
1837
1848
  "artifact-path": {
1838
1849
  "classification": "digest-only",
@@ -1870,6 +1881,10 @@
1870
1881
  "classification": "included",
1871
1882
  "source": "workflow-call-input"
1872
1883
  },
1884
+ "github-governance-receipt-json": {
1885
+ "classification": "digest-only",
1886
+ "source": "workflow-call-input"
1887
+ },
1873
1888
  "node-version": {
1874
1889
  "classification": "included",
1875
1890
  "source": "workflow-call-input"
@@ -2003,7 +2018,7 @@
2003
2018
  "missing receipts are non-qualifying and must not be represented as a successful controller run"
2004
2019
  ],
2005
2020
  "breakingDigest": "sha256:f14825324a16b51c2e9ed708ebe64e1932e05b6d5e0866f83aea8439decb4a27",
2006
- "auditDigest": "sha256:4a7c696ec399c14aa3170fdd24adac0d624bd33db6a2639c489e2b58726c190b"
2021
+ "auditDigest": "sha256:063dfe24e1ccdd95b4ffbf89a154aa71197c8bd1cb98b4705d8663917c026366"
2007
2022
  },
2008
2023
  {
2009
2024
  "contractVersion": 1,
@@ -2068,7 +2083,7 @@
2068
2083
  "controllerDescriptor": {
2069
2084
  "contract": "buildchain.controller-descriptor/v1",
2070
2085
  "digest": "sha256:6b132790b9798e8a5dfbe095701d8e024c160a08bc7c4bd477ee79feef7a9cfd",
2071
- "registryDigest": "sha256:f3c286292ba70b3c9b74eb8ae4052bafb8d5c393ce0037a06b4fc8e675de0f40",
2086
+ "registryDigest": "sha256:15fdbedc9c0a2b51104e854300d1725bcab76b11cebde61f53a70a49fe43966b",
2072
2087
  "inputClassifications": {
2073
2088
  "artifact-name": {
2074
2089
  "classification": "included",
@@ -2220,6 +2235,7 @@
2220
2235
  "buildchain-ref",
2221
2236
  "buildchain-repository",
2222
2237
  "dry-run",
2238
+ "github-governance-receipt-json",
2223
2239
  "github-release",
2224
2240
  "github-release-notes",
2225
2241
  "github-release-title",
@@ -2248,8 +2264,8 @@
2248
2264
  ],
2249
2265
  "controllerDescriptor": {
2250
2266
  "contract": "buildchain.controller-descriptor/v1",
2251
- "digest": "sha256:0613ea545fe2d630f34e665c8e6fe99df3f5333d75051a7176e9cf991e494f59",
2252
- "registryDigest": "sha256:f3c286292ba70b3c9b74eb8ae4052bafb8d5c393ce0037a06b4fc8e675de0f40",
2267
+ "digest": "sha256:6d71409659fbf8543c7e520b0c493d8afe86bdf60286b860bb917f0041ebc173",
2268
+ "registryDigest": "sha256:15fdbedc9c0a2b51104e854300d1725bcab76b11cebde61f53a70a49fe43966b",
2253
2269
  "inputClassifications": {
2254
2270
  "artifact-name": {
2255
2271
  "classification": "included",
@@ -2299,6 +2315,10 @@
2299
2315
  "classification": "included",
2300
2316
  "source": "workflow-call-input"
2301
2317
  },
2318
+ "github-governance-receipt-json": {
2319
+ "classification": "digest-only",
2320
+ "source": "workflow-call-input"
2321
+ },
2302
2322
  "github-release": {
2303
2323
  "classification": "included",
2304
2324
  "source": "workflow-call-input"
@@ -2408,7 +2428,7 @@
2408
2428
  "missing receipts are non-qualifying and must not be represented as a successful controller run"
2409
2429
  ],
2410
2430
  "breakingDigest": "sha256:0eb318df455ef9cb737a7c2515a2411b685d34ed0bde7b5f5b173a7a42513114",
2411
- "auditDigest": "sha256:9b810a4120c819dc28021921da243ddcc8d3f832fd610ef9d1be0212d3ba3fa6"
2431
+ "auditDigest": "sha256:fd939f9dcce745f3e1b8063b68715460cb8e1af6d2b813a96b37a741740122b9"
2412
2432
  },
2413
2433
  {
2414
2434
  "contractVersion": 1,
@@ -2457,6 +2477,9 @@
2457
2477
  "BUILDCHAIN_ISSUE_APP_PRIVATE_KEY",
2458
2478
  "BUILDCHAIN_ISSUE_TOKEN",
2459
2479
  "BUILDCHAIN_PROMOTION_TOKEN",
2480
+ "BUILDCHAIN_PUBLICATION_COMMIT_SIGNING_KEY",
2481
+ "BUILDCHAIN_PUBLICATION_COMMIT_TOKEN",
2482
+ "KUNGFU_GOVERNANCE_AUDITOR_APP_PRIVATE_KEY",
2460
2483
  "allow-repository",
2461
2484
  "artifact-name",
2462
2485
  "artifact-patterns",
@@ -2473,8 +2496,10 @@
2473
2496
  "buildchain-repository",
2474
2497
  "channel",
2475
2498
  "dry-run",
2499
+ "github-governance-receipt-json",
2476
2500
  "github-release",
2477
2501
  "github-release-notes",
2502
+ "github-release-payload-patterns",
2478
2503
  "github-release-title",
2479
2504
  "package-manager",
2480
2505
  "promotion-contract-lock-digest",
@@ -2491,6 +2516,8 @@
2491
2516
  "publication-admission-json",
2492
2517
  "publication-auto-admission",
2493
2518
  "publication-auto-no-gate",
2519
+ "publication-commit-command",
2520
+ "publication-commit-evidence-path",
2494
2521
  "publication-consumer-predicate-id",
2495
2522
  "publication-consumer-qualification-command",
2496
2523
  "publication-control-plane-audit-json",
@@ -2537,8 +2564,8 @@
2537
2564
  ],
2538
2565
  "controllerDescriptor": {
2539
2566
  "contract": "buildchain.controller-descriptor/v1",
2540
- "digest": "sha256:bde6769a31f35ea89e8bdc67a4ca37175f24028b2b3975ff795ba5b2fb95d3a5",
2541
- "registryDigest": "sha256:f3c286292ba70b3c9b74eb8ae4052bafb8d5c393ce0037a06b4fc8e675de0f40",
2567
+ "digest": "sha256:98e2676d01470992d7b4ca9c2a1e12b0e6c816c0586a8e8e1736f4b58a1360a9",
2568
+ "registryDigest": "sha256:15fdbedc9c0a2b51104e854300d1725bcab76b11cebde61f53a70a49fe43966b",
2542
2569
  "inputClassifications": {
2543
2570
  "BUILDCHAIN_ISSUE_APP_ID": {
2544
2571
  "classification": "redacted",
@@ -2556,6 +2583,18 @@
2556
2583
  "classification": "redacted",
2557
2584
  "source": "workflow-call-secret"
2558
2585
  },
2586
+ "BUILDCHAIN_PUBLICATION_COMMIT_SIGNING_KEY": {
2587
+ "classification": "redacted",
2588
+ "source": "workflow-call-secret"
2589
+ },
2590
+ "BUILDCHAIN_PUBLICATION_COMMIT_TOKEN": {
2591
+ "classification": "redacted",
2592
+ "source": "workflow-call-secret"
2593
+ },
2594
+ "KUNGFU_GOVERNANCE_AUDITOR_APP_PRIVATE_KEY": {
2595
+ "classification": "redacted",
2596
+ "source": "workflow-call-secret"
2597
+ },
2559
2598
  "allow-repository": {
2560
2599
  "classification": "included",
2561
2600
  "source": "workflow-call-input"
@@ -2620,6 +2659,10 @@
2620
2659
  "classification": "included",
2621
2660
  "source": "workflow-call-input"
2622
2661
  },
2662
+ "github-governance-receipt-json": {
2663
+ "classification": "digest-only",
2664
+ "source": "workflow-call-input"
2665
+ },
2623
2666
  "github-release": {
2624
2667
  "classification": "included",
2625
2668
  "source": "workflow-call-input"
@@ -2628,6 +2671,10 @@
2628
2671
  "classification": "digest-only",
2629
2672
  "source": "workflow-call-input"
2630
2673
  },
2674
+ "github-release-payload-patterns": {
2675
+ "classification": "included",
2676
+ "source": "workflow-call-input"
2677
+ },
2631
2678
  "github-release-title": {
2632
2679
  "classification": "included",
2633
2680
  "source": "workflow-call-input"
@@ -2692,6 +2739,14 @@
2692
2739
  "classification": "included",
2693
2740
  "source": "workflow-call-input"
2694
2741
  },
2742
+ "publication-commit-command": {
2743
+ "classification": "digest-only",
2744
+ "source": "workflow-call-input"
2745
+ },
2746
+ "publication-commit-evidence-path": {
2747
+ "classification": "digest-only",
2748
+ "source": "workflow-call-input"
2749
+ },
2695
2750
  "publication-consumer-predicate-id": {
2696
2751
  "classification": "included",
2697
2752
  "source": "workflow-call-input"
@@ -2873,7 +2928,7 @@
2873
2928
  "missing receipts are non-qualifying and must not be represented as a successful controller run"
2874
2929
  ],
2875
2930
  "breakingDigest": "sha256:015d8de793adbd4c539416be7d7512e18cc92097e629b0203fa06d2c183e98bd",
2876
- "auditDigest": "sha256:ce4cdad0b0165349fe2fa1377f10a7625faa90fa2fb858d7603640b19de0de06"
2931
+ "auditDigest": "sha256:ba3117f22b343d5f18cd48d327bffaa8ed442cb6150b6c2f95d091808cd009a7"
2877
2932
  },
2878
2933
  {
2879
2934
  "contractVersion": 1,
@@ -2934,7 +2989,7 @@
2934
2989
  "controllerDescriptor": {
2935
2990
  "contract": "buildchain.controller-descriptor/v1",
2936
2991
  "digest": "sha256:f97656a8df0758c8e404d5b7c387529256a1ec45d1748f8efb6847a3256b1216",
2937
- "registryDigest": "sha256:f3c286292ba70b3c9b74eb8ae4052bafb8d5c393ce0037a06b4fc8e675de0f40",
2992
+ "registryDigest": "sha256:15fdbedc9c0a2b51104e854300d1725bcab76b11cebde61f53a70a49fe43966b",
2938
2993
  "inputClassifications": {
2939
2994
  "buildchain-ref": {
2940
2995
  "classification": "included",
@@ -3057,7 +3112,7 @@
3057
3112
  "controllerDescriptor": {
3058
3113
  "contract": "buildchain.controller-descriptor/v1",
3059
3114
  "digest": "sha256:b6f53563c0adc859bc586c05fce560a5094d7d9666438d63c5fd3e1fc4774555",
3060
- "registryDigest": "sha256:f3c286292ba70b3c9b74eb8ae4052bafb8d5c393ce0037a06b4fc8e675de0f40",
3115
+ "registryDigest": "sha256:15fdbedc9c0a2b51104e854300d1725bcab76b11cebde61f53a70a49fe43966b",
3061
3116
  "inputClassifications": {}
3062
3117
  },
3063
3118
  "guarantees": [
@@ -3071,5 +3126,5 @@
3071
3126
  }
3072
3127
  ],
3073
3128
  "compatibilityDigest": "sha256:df13c3b8066068925ce847b31002201d533034d10d342542422db3a665c10475",
3074
- "contractDigest": "sha256:171f367853e2346388feb9df902bafbe67970bd21c86212d3563731fb0ec2b83"
3129
+ "contractDigest": "sha256:4ab4fe71bad2b757c8ec3cc7545245eabaa6f9e440a9c34f8af113804d02067d"
3075
3130
  }