@kungfu-tech/buildchain 2.12.6 → 2.12.7-alpha.10

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 (40) hide show
  1. package/actions/promote-buildchain-ref/README.md +11 -3
  2. package/bin/buildchain.mjs +78 -0
  3. package/dist/site/agent-index.json +1 -0
  4. package/dist/site/artifact-schemas.json +1 -0
  5. package/dist/site/buildchain-contract.json +163 -38
  6. package/dist/site/buildchain-site.json +73 -17
  7. package/dist/site/capability-registry.json +6 -5
  8. package/dist/site/cli-registry.json +36 -0
  9. package/dist/site/controller-registry.json +121 -10
  10. package/dist/site/kfd-claims.json +305 -17
  11. package/dist/site/kfd-upstream-aggregate.json +1 -1
  12. package/dist/site/manual-registry.json +16 -2
  13. package/dist/site/node-api-registry.json +43 -4
  14. package/dist/site/page-registry.json +58 -11
  15. package/dist/site/public-surface-audit.json +212 -19
  16. package/dist/site/publication-authority-registry.json +778 -0
  17. package/dist/site/publication-registry.json +4 -4
  18. package/dist/site/release-provenance.json +4 -0
  19. package/dist/site/site-manifest.json +15 -6
  20. package/dist/site/workflow-registry.json +173 -12
  21. package/docs/MAP.md +2 -1
  22. package/docs/publication-artifacts.md +25 -18
  23. package/docs/publication-authority.md +213 -0
  24. package/docs/release-governance.md +3 -1
  25. package/docs/shifu-gate-profiles.md +6 -0
  26. package/package.json +5 -1
  27. package/packages/core/buildchain-kfd-claims.js +5 -0
  28. package/packages/core/buildchain-publication-authority.js +80 -0
  29. package/packages/core/controller-evidence.js +8 -8
  30. package/packages/core/index.js +35 -0
  31. package/packages/core/publication-artifact-candidate.js +128 -0
  32. package/packages/core/publication-authority.js +764 -0
  33. package/packages/core/publication-control-plane-audit.js +135 -0
  34. package/scripts/assemble-publication-artifact-admission.mjs +190 -0
  35. package/scripts/assemble-self-publication-admission.mjs +183 -0
  36. package/scripts/audit-publication-control-plane.mjs +409 -0
  37. package/scripts/check-inventory.mjs +25 -2
  38. package/scripts/generate-site-bundle.mjs +16 -0
  39. package/scripts/publication-artifact-candidate.mjs +130 -0
  40. package/scripts/workflow-friction-report.mjs +13 -2
@@ -341,9 +341,17 @@ set for a controlled repair.
341
341
  In strict buildchain promotion, ref movement is also gated by the old ABV
342
342
  governance semantics:
343
343
 
344
- - the target channel branch protection details must be readable, must enforce
345
- protection for administrators, and must require approving PR review plus the
346
- strict `check` job from the `Verify` workflow;
344
+ - when detailed target branch protection is readable, it must enforce
345
+ protection for administrators and require approving PR review plus the strict
346
+ `check` job from the `Verify` workflow; when GitHub withholds that
347
+ administration endpoint from the workflow token, the exact transaction must
348
+ instead prove a protected current head, same-repository merged PR,
349
+ independent approval, and the required successful `check` from its configured
350
+ GitHub App;
351
+ - post-publish channel reconciliation reuses an already qualifying
352
+ provider-enforced policy when the workflow token cannot read or rewrite the
353
+ administrative protection document, and fails closed if the public branch
354
+ summary no longer carries the required check for everyone;
347
355
  - alpha promotion must come from a merged same-repository PR
348
356
  `dev/vN/vN.M -> alpha/vN/vN.M`, or from a strict same-line
349
357
  `publish-gate/alpha/vN/vN.M/<version> -> alpha/vN/vN.M` source-lock PR;
@@ -32,6 +32,11 @@ import {
32
32
  explainReleasePassport,
33
33
  verifyReleasePassport,
34
34
  } from "../packages/core/release-passport.js";
35
+ import {
36
+ createPublicationAdmission,
37
+ createRunnerProvenance,
38
+ verifyPublicationAdmission,
39
+ } from "../packages/core/publication-authority.js";
35
40
  import {
36
41
  explainArtifactPassport,
37
42
  verifyArtifactPassport,
@@ -138,7 +143,22 @@ function usage() {
138
143
  [--base-passport-json <json-or-path>] [--require-base-kfd]
139
144
  [--release-extra-json <json-or-path>]
140
145
  [--publish-json <json-or-path>] [--output-dir <dir>] [--json]
146
+ buildchain create publication-admission --input-json <file-or-json> [--output <file>] [--json]
147
+ buildchain create runner-provenance --input-json <file-or-json> [--output <file>] [--json]
141
148
  buildchain verify release-passport <file-or-url> [--json]
149
+ buildchain verify publication-admission <file-or-json>
150
+ --registry-json <file-or-json>
151
+ --runner-json <file-or-json>
152
+ --control-plane-audit-json <file-or-json>
153
+ --publication-evidence-json <file-or-json>
154
+ [--expected-json <file-or-json>] [--used-nonce <nonce>]... [--json]
155
+ buildchain audit publication-control-plane --repository <owner/repo> --branch <protected-branch>
156
+ [--source-sha <merged-branch-sha>] [--workflow-repository <owner/repo>]
157
+ [--workflow <path>] [--workflow-ref <sha-or-ref>]
158
+ [--job <id>] [--environment <name>] [--package <name>]
159
+ [--publisher-mode npm-trusted-publisher|github-token|oidc-role]
160
+ [--npm-trust-json <file-or-json>]
161
+ [--provider-audit-json <file>] [--output <file>] [--allow-nonqualifying]
142
162
  buildchain verify artifact <file|dir|url|npm:...|oci:...|github-release:...>
143
163
  [--passport <file-or-url>] [--locator-config <json>]
144
164
  [--repository <owner/repo>] [--tag <tag>]
@@ -231,7 +251,11 @@ Examples:
231
251
  buildchain release line open --major 2 --minor 10 --source-ref release/v2/v2.9 --json
232
252
  buildchain span --event native.build -- cmake --build build
233
253
  buildchain collect github-release --tag v2.2.0 --assets-dir dist --output-dir .buildchain/release-passport
254
+ buildchain create publication-admission --input-json admission-input.json --output admission.json
255
+ buildchain create runner-provenance --input-json runner-input.json --output runner.json
234
256
  buildchain verify release-passport .buildchain/release-passport/buildchain.release.json
257
+ buildchain verify publication-admission admission.json --registry-json publication-authority-registry.json --runner-json runner.json --control-plane-audit-json control-plane.json --expected-json expected.json --json
258
+ buildchain audit publication-control-plane --repository kungfu-systems/buildchain --branch release/v2/v2.12
235
259
  buildchain verify artifact ./dist/buildchain-x86_64-unknown-linux-gnu.tar.gz --passport .buildchain/release-passport/buildchain.release.json
236
260
  buildchain verify infra-contract-evidence-bundle .buildchain/infra-contract-evidence-bundle.json
237
261
  buildchain verify observability-log .buildchain/logs/events.jsonl --min-events 4 --require-phase build
@@ -1595,6 +1619,23 @@ async function main(argv = process.argv.slice(2)) {
1595
1619
  return;
1596
1620
  }
1597
1621
 
1622
+ if (command === "create") {
1623
+ const [subcommand = "", ...createArgs] = args;
1624
+ const inputValue = readFlag(createArgs, "input-json", "");
1625
+ if (!inputValue || !["publication-admission", "runner-provenance"].includes(subcommand)) {
1626
+ throw new Error("usage: buildchain create <publication-admission|runner-provenance> --input-json <file-or-json> [--output <file>]");
1627
+ }
1628
+ const input = readJsonInput(inputValue, { label: "input-json" });
1629
+ const value = subcommand === "publication-admission"
1630
+ ? createPublicationAdmission(input)
1631
+ : createRunnerProvenance(input);
1632
+ const output = readFlag(createArgs, "output", "");
1633
+ if (output) writeJsonFile(path.resolve(output), value);
1634
+ if (!output || readBooleanFlag(createArgs, "json")) printJson(value);
1635
+ else process.stdout.write(`${subcommand}: ${output}\n`);
1636
+ return;
1637
+ }
1638
+
1598
1639
  if (command === "collect") {
1599
1640
  const [subcommand = "", ...collectArgs] = args;
1600
1641
  if (subcommand !== "github-release") {
@@ -1657,6 +1698,34 @@ async function main(argv = process.argv.slice(2)) {
1657
1698
 
1658
1699
  if (command === "verify") {
1659
1700
  const [subcommand = "", location = "", ...verifyArgs] = args;
1701
+ if (subcommand === "publication-admission") {
1702
+ if (!location) {
1703
+ throw new Error("usage: buildchain verify publication-admission <file-or-json> --registry-json <file-or-json> --runner-json <file-or-json> --control-plane-audit-json <file-or-json> --publication-evidence-json <file-or-json>");
1704
+ }
1705
+ const requiredInput = (name) => {
1706
+ const value = readFlag(verifyArgs, name, "");
1707
+ if (!value) throw new Error(`buildchain verify publication-admission requires --${name} <file-or-json>`);
1708
+ return readJsonInput(value, { label: name });
1709
+ };
1710
+ const expectedInput = readFlag(verifyArgs, "expected-json", "");
1711
+ const capability = verifyPublicationAdmission({
1712
+ admission: readJsonInput(location, { label: "publication admission" }),
1713
+ registry: requiredInput("registry-json"),
1714
+ runnerProvenance: requiredInput("runner-json"),
1715
+ controlPlaneAudit: requiredInput("control-plane-audit-json"),
1716
+ publicationEvidence: requiredInput("publication-evidence-json"),
1717
+ expected: expectedInput ? readJsonInput(expectedInput, { label: "expected-json" }) : {},
1718
+ usedNonces: readRepeatedFlag(verifyArgs, "used-nonce"),
1719
+ });
1720
+ if (readBooleanFlag(verifyArgs, "json")) {
1721
+ printJson(capability);
1722
+ } else {
1723
+ process.stdout.write(`publication admission: ${capability.decision}\n`);
1724
+ process.stdout.write(`capability digest: ${capability.capabilityDigest}\n`);
1725
+ process.stdout.write(`expires at: ${capability.expiresAt}\n`);
1726
+ }
1727
+ return;
1728
+ }
1660
1729
  if (subcommand === "artifact") {
1661
1730
  if (!location) {
1662
1731
  throw new Error("usage: buildchain verify artifact <subject>");
@@ -1745,6 +1814,15 @@ async function main(argv = process.argv.slice(2)) {
1745
1814
  return;
1746
1815
  }
1747
1816
 
1817
+ if (command === "audit") {
1818
+ const [subcommand = "", ...auditArgs] = args;
1819
+ if (subcommand !== "publication-control-plane") {
1820
+ throw new Error("usage: buildchain audit publication-control-plane --repository <owner/repo> --branch <protected-branch>");
1821
+ }
1822
+ runScript("audit-publication-control-plane.mjs", auditArgs);
1823
+ return;
1824
+ }
1825
+
1748
1826
  if (command === "explain") {
1749
1827
  const [subcommand = "", ...explainArgs] = args;
1750
1828
  if (subcommand === "artifact") {
@@ -12,6 +12,7 @@
12
12
  "node-api-registry.json",
13
13
  "workflow-registry.json",
14
14
  "controller-registry.json",
15
+ "publication-authority-registry.json",
15
16
  "public-surface-audit.json",
16
17
  "artifact-schemas.json",
17
18
  "buildchain-contract.json",
@@ -24,6 +24,7 @@
24
24
  "node-api-registry.json",
25
25
  "workflow-registry.json",
26
26
  "controller-registry.json",
27
+ "publication-authority-registry.json",
27
28
  "public-surface-audit.json",
28
29
  "release-model.json",
29
30
  "artifact-schemas.json",
@@ -4,7 +4,7 @@
4
4
  "product": {
5
5
  "name": "Buildchain",
6
6
  "package": "@kungfu-tech/buildchain",
7
- "version": "2.12.6",
7
+ "version": "2.12.7-alpha.10",
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:18b1cdc05272152120fdb52eb98be1d146702664ca8eba29ae92591ae55d5d2a"
53
+ "auditDigest": "sha256:4dc810c734e3b597297932839d3919219b93c69a985fc1b8ecc91a08299b940e"
54
54
  },
55
55
  {
56
56
  "contractVersion": 1,
@@ -159,7 +159,7 @@
159
159
  "GitHub Release passport and evidence publication is delegated to promote-buildchain-ref after the semver release transaction completes"
160
160
  ],
161
161
  "breakingDigest": "sha256:6dbae32ce3d7aab3be6957065105af574794581847b7637314dad45f5349c919",
162
- "auditDigest": "sha256:7f513e87fe6c12b34c740261cc6412b9d9c56632537b7538a74ccabe03fe171e"
162
+ "auditDigest": "sha256:10c3132362feab7e8e3f612eedc2e62b9b90ff0ed2fcf8445ce75caef55c26d5"
163
163
  },
164
164
  {
165
165
  "contractVersion": 1,
@@ -203,7 +203,7 @@
203
203
  "channel-aware artifact host facts are checked against the deploy plan before adapter side effects"
204
204
  ],
205
205
  "breakingDigest": "sha256:da569f90374e878948e3d5160ed9929338ce0572473ca8ee54867b0fe1aaeace",
206
- "auditDigest": "sha256:465182c56f3fef7463bab7cf2b93931797bad6c5e51c1f3029b71c09d5e42e1d"
206
+ "auditDigest": "sha256:a849c35accf5a7e756a3782cc3540f13376f3d52ae30efcb4329a65ddb875ab5"
207
207
  },
208
208
  {
209
209
  "contractVersion": 1,
@@ -269,7 +269,7 @@
269
269
  "semver GitHub Releases are created or updated only after transaction completion, with prerelease/latest metadata derived from the public release tag"
270
270
  ],
271
271
  "breakingDigest": "sha256:a59f0910e6df842e7699139472e5dd69ac2fdd7f7213bf2cb346d1d622556874",
272
- "auditDigest": "sha256:61edd187a303c33eeef28ccca138e46d7494645b16e6df72719b6d632b0d8e80"
272
+ "auditDigest": "sha256:0a6b261a43f59477497d99f840e83b11a2cfa6545a3d89c9952f47d7ebed33dc"
273
273
  },
274
274
  {
275
275
  "contractVersion": 1,
@@ -437,7 +437,7 @@
437
437
  "README badge block checks and writes are generated from machine-readable repository facts"
438
438
  ],
439
439
  "breakingDigest": "sha256:90a73892b2d6c214048448d5f45df75639bdf7b7e8fefd9c596e04b087407bcc",
440
- "auditDigest": "sha256:46b22f2970d23ce444c5ae4ecedc2d3d99e65aab8a78af671ab40b847d7e956c"
440
+ "auditDigest": "sha256:6b388928ae928d679c36bfac7b45987ee7b6761b8ac141b72e4f60155a7110ec"
441
441
  },
442
442
  {
443
443
  "contractVersion": 1,
@@ -527,7 +527,7 @@
527
527
  "manual entries carry source file digests so downstream sites and agents can detect stale hand-written documentation"
528
528
  ],
529
529
  "breakingDigest": "sha256:7d0d2819e3a3e72989d9c57b5efe9d0bc0a79bc0f2c82a0c7b9d6c5a211a91f2",
530
- "auditDigest": "sha256:89cf8c7d2a1134e747e4456c59c8089132ff4b2be81c6c4de7e485db4427e953"
530
+ "auditDigest": "sha256:653df5708fa73f074129b3bf1e047f7f204f42e4521e2b0d7521618f01f9f345"
531
531
  },
532
532
  {
533
533
  "contractVersion": 1,
@@ -549,7 +549,7 @@
549
549
  "agents can discover supported Node APIs without importing internal file paths"
550
550
  ],
551
551
  "breakingDigest": "sha256:48f925608d3e2131d90936b07dc2a30341204cae3e6e785c0f77d61ad755c945",
552
- "auditDigest": "sha256:63874351201e9323e51c011e81cf1d4d1ff0e3f6d733d5a0cef2537eba95228a"
552
+ "auditDigest": "sha256:6cb094e42fb35ae6a3b166fbe179a4663f019737cd82bad6279ffaf690110737"
553
553
  },
554
554
  {
555
555
  "contractVersion": 1,
@@ -600,7 +600,7 @@
600
600
  "controllerDescriptor": {
601
601
  "contract": "buildchain.controller-descriptor/v1",
602
602
  "digest": "sha256:373723a73d188194d389dee04c394d3b79cb0c016a370f2f5d0f60979a02ed48",
603
- "registryDigest": "sha256:0bd2214618cfa1fb7cdc052b3dcb64fa1ab8b815416bc00bbd27c0c666923363",
603
+ "registryDigest": "sha256:aeb2d6b05cdd8e8118d6cc2c82cf4b7bf00f934b809479017a12b69c299d0e05",
604
604
  "inputClassifications": {
605
605
  "buildchain-ref": {
606
606
  "classification": "included",
@@ -746,7 +746,7 @@
746
746
  "controllerDescriptor": {
747
747
  "contract": "buildchain.controller-descriptor/v1",
748
748
  "digest": "sha256:ce2ada5daf86cbe6e58327c190fdfe07510952cc8820cf445eb4342daae4da18",
749
- "registryDigest": "sha256:0bd2214618cfa1fb7cdc052b3dcb64fa1ab8b815416bc00bbd27c0c666923363",
749
+ "registryDigest": "sha256:aeb2d6b05cdd8e8118d6cc2c82cf4b7bf00f934b809479017a12b69c299d0e05",
750
750
  "inputClassifications": {
751
751
  "BUILDCHAIN_ARTIFACT_RELAY_S3_DOWNLOAD_ROLE_ARN": {
752
752
  "classification": "redacted",
@@ -1001,7 +1001,7 @@
1001
1001
  "missing receipts are non-qualifying and must not be represented as a successful controller run"
1002
1002
  ],
1003
1003
  "breakingDigest": "sha256:e264a79f9f399038c2fcfd21e4168c68c2e1485ee5c651c02242a02b622ac2be",
1004
- "auditDigest": "sha256:18b1cdc05272152120fdb52eb98be1d146702664ca8eba29ae92591ae55d5d2a"
1004
+ "auditDigest": "sha256:4dc810c734e3b597297932839d3919219b93c69a985fc1b8ecc91a08299b940e"
1005
1005
  },
1006
1006
  {
1007
1007
  "contractVersion": 1,
@@ -1107,7 +1107,7 @@
1107
1107
  "controllerDescriptor": {
1108
1108
  "contract": "buildchain.controller-descriptor/v1",
1109
1109
  "digest": "sha256:0ed17d03e410ca1b7726422716522a5e9096eee7badb197401291d53198518ea",
1110
- "registryDigest": "sha256:0bd2214618cfa1fb7cdc052b3dcb64fa1ab8b815416bc00bbd27c0c666923363",
1110
+ "registryDigest": "sha256:aeb2d6b05cdd8e8118d6cc2c82cf4b7bf00f934b809479017a12b69c299d0e05",
1111
1111
  "inputClassifications": {
1112
1112
  "BUILDCHAIN_ARTIFACT_RELAY_S3_DOWNLOAD_ROLE_ARN": {
1113
1113
  "classification": "redacted",
@@ -1433,7 +1433,7 @@
1433
1433
  "controllerDescriptor": {
1434
1434
  "contract": "buildchain.controller-descriptor/v1",
1435
1435
  "digest": "sha256:29569f4b754595792a16742d1c4c63838b54601674a2cb6c96261a72c962dece",
1436
- "registryDigest": "sha256:0bd2214618cfa1fb7cdc052b3dcb64fa1ab8b815416bc00bbd27c0c666923363",
1436
+ "registryDigest": "sha256:aeb2d6b05cdd8e8118d6cc2c82cf4b7bf00f934b809479017a12b69c299d0e05",
1437
1437
  "inputClassifications": {
1438
1438
  "artifact-name": {
1439
1439
  "classification": "included",
@@ -1520,7 +1520,7 @@
1520
1520
  "missing receipts are non-qualifying and must not be represented as a successful controller run"
1521
1521
  ],
1522
1522
  "breakingDigest": "sha256:5f1868478b7ccd9fb79aea76bc771289d2ca6bd2dccd1abf57575426f1eae5fb",
1523
- "auditDigest": "sha256:2b8db410486b9f572536be9fc68b8819c373ba31bdf8a7379c2770ce5168eb6c"
1523
+ "auditDigest": "sha256:f478f291726cd47d998c37d454d9fc3e97f1d4a45dc60fe756d8c239fa1245bd"
1524
1524
  },
1525
1525
  {
1526
1526
  "contractVersion": 1,
@@ -1550,7 +1550,8 @@
1550
1550
  "web-build",
1551
1551
  "web-verify",
1552
1552
  "deployment-plan",
1553
- "deployment-apply"
1553
+ "deployment-apply",
1554
+ "publication-authority"
1554
1555
  ],
1555
1556
  "evidenceRequirements": [
1556
1557
  "web-surface-plan",
@@ -1587,6 +1588,11 @@
1587
1588
  "production-release-on-main",
1588
1589
  "production-release-pr-mode",
1589
1590
  "production-release-pr-token",
1591
+ "publication-admission-json",
1592
+ "publication-control-plane-audit-json",
1593
+ "publication-expected-json",
1594
+ "publication-runner-provenance-json",
1595
+ "publication-used-nonces-json",
1590
1596
  "release-feedback-actor-privacy",
1591
1597
  "staging-apply",
1592
1598
  "staging-aws-role-arn",
@@ -1596,8 +1602,8 @@
1596
1602
  ],
1597
1603
  "controllerDescriptor": {
1598
1604
  "contract": "buildchain.controller-descriptor/v1",
1599
- "digest": "sha256:09b4d98c400fb12a87b701eedaaefbf4af2fd0c1fb19b8b44c6219c596430e80",
1600
- "registryDigest": "sha256:0bd2214618cfa1fb7cdc052b3dcb64fa1ab8b815416bc00bbd27c0c666923363",
1605
+ "digest": "sha256:f08c4970f33c059f8e0b43110f0063172fb1015ac914bdb0c8e9646692fb9f06",
1606
+ "registryDigest": "sha256:aeb2d6b05cdd8e8118d6cc2c82cf4b7bf00f934b809479017a12b69c299d0e05",
1601
1607
  "inputClassifications": {
1602
1608
  "artifact-path": {
1603
1609
  "classification": "digest-only",
@@ -1711,6 +1717,26 @@
1711
1717
  "classification": "redacted",
1712
1718
  "source": "workflow-call-input"
1713
1719
  },
1720
+ "publication-admission-json": {
1721
+ "classification": "digest-only",
1722
+ "source": "workflow-call-input"
1723
+ },
1724
+ "publication-control-plane-audit-json": {
1725
+ "classification": "digest-only",
1726
+ "source": "workflow-call-input"
1727
+ },
1728
+ "publication-expected-json": {
1729
+ "classification": "digest-only",
1730
+ "source": "workflow-call-input"
1731
+ },
1732
+ "publication-runner-provenance-json": {
1733
+ "classification": "digest-only",
1734
+ "source": "workflow-call-input"
1735
+ },
1736
+ "publication-used-nonces-json": {
1737
+ "classification": "digest-only",
1738
+ "source": "workflow-call-input"
1739
+ },
1714
1740
  "release-feedback-actor-privacy": {
1715
1741
  "classification": "included",
1716
1742
  "source": "workflow-call-input"
@@ -1743,8 +1769,8 @@
1743
1769
  "redacted input values are never serialized and digest-only input values are never emitted in plaintext",
1744
1770
  "missing receipts are non-qualifying and must not be represented as a successful controller run"
1745
1771
  ],
1746
- "breakingDigest": "sha256:b48566da2325d9a6a603fbd444a8cc7deb8abed3e6c70a984259208fb0ed513c",
1747
- "auditDigest": "sha256:465182c56f3fef7463bab7cf2b93931797bad6c5e51c1f3029b71c09d5e42e1d"
1772
+ "breakingDigest": "sha256:f14825324a16b51c2e9ed708ebe64e1932e05b6d5e0866f83aea8439decb4a27",
1773
+ "auditDigest": "sha256:a849c35accf5a7e756a3782cc3540f13376f3d52ae30efcb4329a65ddb875ab5"
1748
1774
  },
1749
1775
  {
1750
1776
  "contractVersion": 1,
@@ -1794,7 +1820,11 @@
1794
1820
  "buildchain-ref",
1795
1821
  "buildchain-repository",
1796
1822
  "node-version",
1823
+ "package-name",
1824
+ "prepare-paper-package",
1825
+ "publish-dist-tag",
1797
1826
  "setup-node",
1827
+ "target-ref",
1798
1828
  "toolchain-command",
1799
1829
  "toolchain-digest",
1800
1830
  "toolchain-image",
@@ -1804,8 +1834,8 @@
1804
1834
  ],
1805
1835
  "controllerDescriptor": {
1806
1836
  "contract": "buildchain.controller-descriptor/v1",
1807
- "digest": "sha256:d09d8f4081e7b5b9296487337206111591eeca6f8d7667e90012ac911c1b71cf",
1808
- "registryDigest": "sha256:0bd2214618cfa1fb7cdc052b3dcb64fa1ab8b815416bc00bbd27c0c666923363",
1837
+ "digest": "sha256:6b132790b9798e8a5dfbe095701d8e024c160a08bc7c4bd477ee79feef7a9cfd",
1838
+ "registryDigest": "sha256:aeb2d6b05cdd8e8118d6cc2c82cf4b7bf00f934b809479017a12b69c299d0e05",
1809
1839
  "inputClassifications": {
1810
1840
  "artifact-name": {
1811
1841
  "classification": "included",
@@ -1847,10 +1877,26 @@
1847
1877
  "classification": "included",
1848
1878
  "source": "workflow-call-input"
1849
1879
  },
1880
+ "package-name": {
1881
+ "classification": "included",
1882
+ "source": "workflow-call-input"
1883
+ },
1884
+ "prepare-paper-package": {
1885
+ "classification": "included",
1886
+ "source": "workflow-call-input"
1887
+ },
1888
+ "publish-dist-tag": {
1889
+ "classification": "included",
1890
+ "source": "workflow-call-input"
1891
+ },
1850
1892
  "setup-node": {
1851
1893
  "classification": "included",
1852
1894
  "source": "workflow-call-input"
1853
1895
  },
1896
+ "target-ref": {
1897
+ "classification": "included",
1898
+ "source": "workflow-call-input"
1899
+ },
1854
1900
  "toolchain-command": {
1855
1901
  "classification": "digest-only",
1856
1902
  "source": "workflow-call-input"
@@ -1884,7 +1930,7 @@
1884
1930
  "missing receipts are non-qualifying and must not be represented as a successful controller run"
1885
1931
  ],
1886
1932
  "breakingDigest": "sha256:3f76502666069c2727d23efcfdb08fb80f89ced1955a69e29f11525ae88aca1d",
1887
- "auditDigest": "sha256:4756627241ae819e4796b6ddb3b37096223c62652dbc79ac95c2fce8f1bc74a8"
1933
+ "auditDigest": "sha256:53dfff0c1fbe8b8a06a7536d4f1dee30829db35c266d2b180c8c3ce3f3678b84"
1888
1934
  },
1889
1935
  {
1890
1936
  "contractVersion": 1,
@@ -1909,6 +1955,7 @@
1909
1955
  "resolve-runtime",
1910
1956
  "build",
1911
1957
  "collect",
1958
+ "publication-authority",
1912
1959
  "publish",
1913
1960
  "passport",
1914
1961
  "aggregate"
@@ -1916,6 +1963,7 @@
1916
1963
  "capabilities": [
1917
1964
  "publication-build",
1918
1965
  "artifact-admission",
1966
+ "publication-authority",
1919
1967
  "release-publish",
1920
1968
  "release-passport"
1921
1969
  ],
@@ -1927,7 +1975,6 @@
1927
1975
  "inputClassificationPolicy": "buildchain-controller-input-policy/v1"
1928
1976
  },
1929
1977
  "optionalInputs": [
1930
- "BUILDCHAIN_PROMOTION_TOKEN",
1931
1978
  "artifact-name",
1932
1979
  "artifact-retention-days",
1933
1980
  "branch-protection-bypass-apps",
@@ -1945,6 +1992,11 @@
1945
1992
  "github-release-title",
1946
1993
  "node-version",
1947
1994
  "package-name",
1995
+ "publication-admission-json",
1996
+ "publication-control-plane-audit-json",
1997
+ "publication-expected-json",
1998
+ "publication-runner-provenance-json",
1999
+ "publication-used-nonces-json",
1948
2000
  "publish-dist-tag",
1949
2001
  "publish-package-set-order",
1950
2002
  "release-passport-impact-json",
@@ -1963,13 +2015,9 @@
1963
2015
  ],
1964
2016
  "controllerDescriptor": {
1965
2017
  "contract": "buildchain.controller-descriptor/v1",
1966
- "digest": "sha256:726e94ed5353240289700df7f436e9aa4041783738757dfbdef1a6825acb6bfb",
1967
- "registryDigest": "sha256:0bd2214618cfa1fb7cdc052b3dcb64fa1ab8b815416bc00bbd27c0c666923363",
2018
+ "digest": "sha256:0613ea545fe2d630f34e665c8e6fe99df3f5333d75051a7176e9cf991e494f59",
2019
+ "registryDigest": "sha256:aeb2d6b05cdd8e8118d6cc2c82cf4b7bf00f934b809479017a12b69c299d0e05",
1968
2020
  "inputClassifications": {
1969
- "BUILDCHAIN_PROMOTION_TOKEN": {
1970
- "classification": "redacted",
1971
- "source": "workflow-call-secret"
1972
- },
1973
2021
  "artifact-name": {
1974
2022
  "classification": "included",
1975
2023
  "source": "workflow-call-input"
@@ -2038,6 +2086,26 @@
2038
2086
  "classification": "included",
2039
2087
  "source": "workflow-call-input"
2040
2088
  },
2089
+ "publication-admission-json": {
2090
+ "classification": "digest-only",
2091
+ "source": "workflow-call-input"
2092
+ },
2093
+ "publication-control-plane-audit-json": {
2094
+ "classification": "digest-only",
2095
+ "source": "workflow-call-input"
2096
+ },
2097
+ "publication-expected-json": {
2098
+ "classification": "digest-only",
2099
+ "source": "workflow-call-input"
2100
+ },
2101
+ "publication-runner-provenance-json": {
2102
+ "classification": "digest-only",
2103
+ "source": "workflow-call-input"
2104
+ },
2105
+ "publication-used-nonces-json": {
2106
+ "classification": "digest-only",
2107
+ "source": "workflow-call-input"
2108
+ },
2041
2109
  "publish-dist-tag": {
2042
2110
  "classification": "included",
2043
2111
  "source": "workflow-call-input"
@@ -2106,8 +2174,8 @@
2106
2174
  "redacted input values are never serialized and digest-only input values are never emitted in plaintext",
2107
2175
  "missing receipts are non-qualifying and must not be represented as a successful controller run"
2108
2176
  ],
2109
- "breakingDigest": "sha256:18ed432e8f3dd55a80c7e94dadacc09ab0508f6226a882029ce582d590ac214b",
2110
- "auditDigest": "sha256:cadb8bc59d3cc58cdc2b6bf7f80c235390a685e947d7c78d24ffcde6b321557a"
2177
+ "breakingDigest": "sha256:0eb318df455ef9cb737a7c2515a2411b685d34ed0bde7b5f5b173a7a42513114",
2178
+ "auditDigest": "sha256:9b810a4120c819dc28021921da243ddcc8d3f832fd610ef9d1be0212d3ba3fa6"
2111
2179
  },
2112
2180
  {
2113
2181
  "contractVersion": 1,
@@ -2131,6 +2199,7 @@
2131
2199
  "requiredStages": [
2132
2200
  "preflight",
2133
2201
  "admit-release-candidate",
2202
+ "publication-authority",
2134
2203
  "publish",
2135
2204
  "passport",
2136
2205
  "aggregate"
@@ -2138,6 +2207,7 @@
2138
2207
  "capabilities": [
2139
2208
  "promotion-preflight",
2140
2209
  "artifact-admission",
2210
+ "publication-authority",
2141
2211
  "publish-transaction",
2142
2212
  "release-passport"
2143
2213
  ],
@@ -2174,6 +2244,17 @@
2174
2244
  "github-release-notes",
2175
2245
  "github-release-title",
2176
2246
  "package-manager",
2247
+ "publication-admission-json",
2248
+ "publication-auto-admission",
2249
+ "publication-control-plane-audit-json",
2250
+ "publication-expected-json",
2251
+ "publication-gate-aggregate-json",
2252
+ "publication-package-name",
2253
+ "publication-product",
2254
+ "publication-publisher-workflow-path",
2255
+ "publication-runner-provenance-json",
2256
+ "publication-target",
2257
+ "publication-used-nonces-json",
2177
2258
  "publish-artifact-kind",
2178
2259
  "publish-command",
2179
2260
  "publish-dist-tag",
@@ -2204,8 +2285,8 @@
2204
2285
  ],
2205
2286
  "controllerDescriptor": {
2206
2287
  "contract": "buildchain.controller-descriptor/v1",
2207
- "digest": "sha256:f5a295b2d3e8f20ba46c611acaed71ee7ab5cd1ecaa6e7504b4344493271a803",
2208
- "registryDigest": "sha256:0bd2214618cfa1fb7cdc052b3dcb64fa1ab8b815416bc00bbd27c0c666923363",
2288
+ "digest": "sha256:c2f1fd6e984606b077b27bb243b66077162c2c4be03f99c0d8f917bf7bf4d0d1",
2289
+ "registryDigest": "sha256:aeb2d6b05cdd8e8118d6cc2c82cf4b7bf00f934b809479017a12b69c299d0e05",
2209
2290
  "inputClassifications": {
2210
2291
  "BUILDCHAIN_ISSUE_APP_ID": {
2211
2292
  "classification": "redacted",
@@ -2303,6 +2384,50 @@
2303
2384
  "classification": "included",
2304
2385
  "source": "workflow-call-input"
2305
2386
  },
2387
+ "publication-admission-json": {
2388
+ "classification": "digest-only",
2389
+ "source": "workflow-call-input"
2390
+ },
2391
+ "publication-auto-admission": {
2392
+ "classification": "included",
2393
+ "source": "workflow-call-input"
2394
+ },
2395
+ "publication-control-plane-audit-json": {
2396
+ "classification": "digest-only",
2397
+ "source": "workflow-call-input"
2398
+ },
2399
+ "publication-expected-json": {
2400
+ "classification": "digest-only",
2401
+ "source": "workflow-call-input"
2402
+ },
2403
+ "publication-gate-aggregate-json": {
2404
+ "classification": "digest-only",
2405
+ "source": "workflow-call-input"
2406
+ },
2407
+ "publication-package-name": {
2408
+ "classification": "included",
2409
+ "source": "workflow-call-input"
2410
+ },
2411
+ "publication-product": {
2412
+ "classification": "included",
2413
+ "source": "workflow-call-input"
2414
+ },
2415
+ "publication-publisher-workflow-path": {
2416
+ "classification": "digest-only",
2417
+ "source": "workflow-call-input"
2418
+ },
2419
+ "publication-runner-provenance-json": {
2420
+ "classification": "digest-only",
2421
+ "source": "workflow-call-input"
2422
+ },
2423
+ "publication-target": {
2424
+ "classification": "included",
2425
+ "source": "workflow-call-input"
2426
+ },
2427
+ "publication-used-nonces-json": {
2428
+ "classification": "digest-only",
2429
+ "source": "workflow-call-input"
2430
+ },
2306
2431
  "publish-artifact-kind": {
2307
2432
  "classification": "included",
2308
2433
  "source": "workflow-call-input"
@@ -2419,8 +2544,8 @@
2419
2544
  "redacted input values are never serialized and digest-only input values are never emitted in plaintext",
2420
2545
  "missing receipts are non-qualifying and must not be represented as a successful controller run"
2421
2546
  ],
2422
- "breakingDigest": "sha256:63e4340f090bce35f5ab64f38fe16767725a39819498ed4d24c5c16de4083c23",
2423
- "auditDigest": "sha256:7f513e87fe6c12b34c740261cc6412b9d9c56632537b7538a74ccabe03fe171e"
2547
+ "breakingDigest": "sha256:46238f8fc3c20924decc57ecad142a462fc4739c6bc21409d5cd2457fc1c3cdd",
2548
+ "auditDigest": "sha256:10c3132362feab7e8e3f612eedc2e62b9b90ff0ed2fcf8445ce75caef55c26d5"
2424
2549
  },
2425
2550
  {
2426
2551
  "contractVersion": 1,
@@ -2478,7 +2603,7 @@
2478
2603
  "controllerDescriptor": {
2479
2604
  "contract": "buildchain.controller-descriptor/v1",
2480
2605
  "digest": "sha256:9b9f9a2320c4349903d72ee46e329211b5538ed5ebebaa93559df4eafb835997",
2481
- "registryDigest": "sha256:0bd2214618cfa1fb7cdc052b3dcb64fa1ab8b815416bc00bbd27c0c666923363",
2606
+ "registryDigest": "sha256:aeb2d6b05cdd8e8118d6cc2c82cf4b7bf00f934b809479017a12b69c299d0e05",
2482
2607
  "inputClassifications": {
2483
2608
  "buildchain-ref": {
2484
2609
  "classification": "included",
@@ -2548,6 +2673,6 @@
2548
2673
  "auditDigest": "sha256:e7d0cc13b9d6f19e7cd77b650693f0d615b919796d075041d74876e6ca58716f"
2549
2674
  }
2550
2675
  ],
2551
- "compatibilityDigest": "sha256:2520207c5d6d6a737dd32251a42be9c5299644d9aebf690a8402ead1724ed495",
2552
- "contractDigest": "sha256:4c369ecd3bf25e43dc44f42c8cdd00924e8585e90c5300cba51b483054effd9d"
2676
+ "compatibilityDigest": "sha256:af162b86ab4506e9b5f1d3c59b41f3fd57fbad79ff4d749a7f12ff16460517f8",
2677
+ "contractDigest": "sha256:b14d7b8b1e52ad3b894234f4cc81554fc901d7c1cfe91d59deae4cc3453d3675"
2553
2678
  }