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

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 (34) hide show
  1. package/actions/promote-buildchain-ref/README.md +7 -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 +137 -37
  6. package/dist/site/buildchain-site.json +68 -12
  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 +104 -13
  10. package/dist/site/kfd-claims.json +251 -15
  11. package/dist/site/kfd-upstream-aggregate.json +1 -1
  12. package/dist/site/manual-registry.json +15 -1
  13. package/dist/site/node-api-registry.json +43 -4
  14. package/dist/site/page-registry.json +54 -7
  15. package/dist/site/public-surface-audit.json +150 -17
  16. package/dist/site/publication-authority-registry.json +754 -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 +14 -5
  20. package/dist/site/workflow-registry.json +108 -10
  21. package/docs/MAP.md +2 -1
  22. package/docs/publication-artifacts.md +12 -10
  23. package/docs/publication-authority.md +204 -0
  24. package/package.json +5 -1
  25. package/packages/core/buildchain-kfd-claims.js +5 -0
  26. package/packages/core/buildchain-publication-authority.js +79 -0
  27. package/packages/core/controller-evidence.js +7 -7
  28. package/packages/core/index.js +28 -0
  29. package/packages/core/publication-authority.js +725 -0
  30. package/packages/core/publication-control-plane-audit.js +133 -0
  31. package/scripts/assemble-self-publication-admission.mjs +182 -0
  32. package/scripts/audit-publication-control-plane.mjs +406 -0
  33. package/scripts/check-inventory.mjs +20 -2
  34. package/scripts/generate-site-bundle.mjs +16 -0
@@ -341,9 +341,13 @@ 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;
347
351
  - alpha promotion must come from a merged same-repository PR
348
352
  `dev/vN/vN.M -> alpha/vN/vN.M`, or from a strict same-line
349
353
  `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.1",
8
8
  "repository": "https://github.com/kungfu-systems/buildchain"
9
9
  },
10
10
  "majorLine": "v2",
@@ -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:d9f9367790d4a4608d3b1a1bdc21237dfdb8831a59253bedc0923e565aad852d"
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,
@@ -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:7ead4cbc1ead68dad820a31dcaa5d664a54c09a8943cf240e597b5c5bf538c0c"
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:cd51cdc232d3c96ebfc9176ff99dc6ddaae1c93822d7f50be055973355b20dc4"
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:f4ea94c3590360ef21ade53056129f0183356de3d1997e43c49a0494d0acd34a",
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:f4ea94c3590360ef21ade53056129f0183356de3d1997e43c49a0494d0acd34a",
750
750
  "inputClassifications": {
751
751
  "BUILDCHAIN_ARTIFACT_RELAY_S3_DOWNLOAD_ROLE_ARN": {
752
752
  "classification": "redacted",
@@ -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:f4ea94c3590360ef21ade53056129f0183356de3d1997e43c49a0494d0acd34a",
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:f4ea94c3590360ef21ade53056129f0183356de3d1997e43c49a0494d0acd34a",
1437
1437
  "inputClassifications": {
1438
1438
  "artifact-name": {
1439
1439
  "classification": "included",
@@ -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:f4ea94c3590360ef21ade53056129f0183356de3d1997e43c49a0494d0acd34a",
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,
@@ -1805,7 +1831,7 @@
1805
1831
  "controllerDescriptor": {
1806
1832
  "contract": "buildchain.controller-descriptor/v1",
1807
1833
  "digest": "sha256:d09d8f4081e7b5b9296487337206111591eeca6f8d7667e90012ac911c1b71cf",
1808
- "registryDigest": "sha256:0bd2214618cfa1fb7cdc052b3dcb64fa1ab8b815416bc00bbd27c0c666923363",
1834
+ "registryDigest": "sha256:f4ea94c3590360ef21ade53056129f0183356de3d1997e43c49a0494d0acd34a",
1809
1835
  "inputClassifications": {
1810
1836
  "artifact-name": {
1811
1837
  "classification": "included",
@@ -1909,6 +1935,7 @@
1909
1935
  "resolve-runtime",
1910
1936
  "build",
1911
1937
  "collect",
1938
+ "publication-authority",
1912
1939
  "publish",
1913
1940
  "passport",
1914
1941
  "aggregate"
@@ -1916,6 +1943,7 @@
1916
1943
  "capabilities": [
1917
1944
  "publication-build",
1918
1945
  "artifact-admission",
1946
+ "publication-authority",
1919
1947
  "release-publish",
1920
1948
  "release-passport"
1921
1949
  ],
@@ -1927,7 +1955,6 @@
1927
1955
  "inputClassificationPolicy": "buildchain-controller-input-policy/v1"
1928
1956
  },
1929
1957
  "optionalInputs": [
1930
- "BUILDCHAIN_PROMOTION_TOKEN",
1931
1958
  "artifact-name",
1932
1959
  "artifact-retention-days",
1933
1960
  "branch-protection-bypass-apps",
@@ -1945,6 +1972,11 @@
1945
1972
  "github-release-title",
1946
1973
  "node-version",
1947
1974
  "package-name",
1975
+ "publication-admission-json",
1976
+ "publication-control-plane-audit-json",
1977
+ "publication-expected-json",
1978
+ "publication-runner-provenance-json",
1979
+ "publication-used-nonces-json",
1948
1980
  "publish-dist-tag",
1949
1981
  "publish-package-set-order",
1950
1982
  "release-passport-impact-json",
@@ -1963,13 +1995,9 @@
1963
1995
  ],
1964
1996
  "controllerDescriptor": {
1965
1997
  "contract": "buildchain.controller-descriptor/v1",
1966
- "digest": "sha256:726e94ed5353240289700df7f436e9aa4041783738757dfbdef1a6825acb6bfb",
1967
- "registryDigest": "sha256:0bd2214618cfa1fb7cdc052b3dcb64fa1ab8b815416bc00bbd27c0c666923363",
1998
+ "digest": "sha256:0613ea545fe2d630f34e665c8e6fe99df3f5333d75051a7176e9cf991e494f59",
1999
+ "registryDigest": "sha256:f4ea94c3590360ef21ade53056129f0183356de3d1997e43c49a0494d0acd34a",
1968
2000
  "inputClassifications": {
1969
- "BUILDCHAIN_PROMOTION_TOKEN": {
1970
- "classification": "redacted",
1971
- "source": "workflow-call-secret"
1972
- },
1973
2001
  "artifact-name": {
1974
2002
  "classification": "included",
1975
2003
  "source": "workflow-call-input"
@@ -2038,6 +2066,26 @@
2038
2066
  "classification": "included",
2039
2067
  "source": "workflow-call-input"
2040
2068
  },
2069
+ "publication-admission-json": {
2070
+ "classification": "digest-only",
2071
+ "source": "workflow-call-input"
2072
+ },
2073
+ "publication-control-plane-audit-json": {
2074
+ "classification": "digest-only",
2075
+ "source": "workflow-call-input"
2076
+ },
2077
+ "publication-expected-json": {
2078
+ "classification": "digest-only",
2079
+ "source": "workflow-call-input"
2080
+ },
2081
+ "publication-runner-provenance-json": {
2082
+ "classification": "digest-only",
2083
+ "source": "workflow-call-input"
2084
+ },
2085
+ "publication-used-nonces-json": {
2086
+ "classification": "digest-only",
2087
+ "source": "workflow-call-input"
2088
+ },
2041
2089
  "publish-dist-tag": {
2042
2090
  "classification": "included",
2043
2091
  "source": "workflow-call-input"
@@ -2106,8 +2154,8 @@
2106
2154
  "redacted input values are never serialized and digest-only input values are never emitted in plaintext",
2107
2155
  "missing receipts are non-qualifying and must not be represented as a successful controller run"
2108
2156
  ],
2109
- "breakingDigest": "sha256:18ed432e8f3dd55a80c7e94dadacc09ab0508f6226a882029ce582d590ac214b",
2110
- "auditDigest": "sha256:cadb8bc59d3cc58cdc2b6bf7f80c235390a685e947d7c78d24ffcde6b321557a"
2157
+ "breakingDigest": "sha256:0eb318df455ef9cb737a7c2515a2411b685d34ed0bde7b5f5b173a7a42513114",
2158
+ "auditDigest": "sha256:4dfb8623c947f6b8ab339a11e31de132401997c6bb5ea0cfe70e45e3b4aa9429"
2111
2159
  },
2112
2160
  {
2113
2161
  "contractVersion": 1,
@@ -2131,6 +2179,7 @@
2131
2179
  "requiredStages": [
2132
2180
  "preflight",
2133
2181
  "admit-release-candidate",
2182
+ "publication-authority",
2134
2183
  "publish",
2135
2184
  "passport",
2136
2185
  "aggregate"
@@ -2138,6 +2187,7 @@
2138
2187
  "capabilities": [
2139
2188
  "promotion-preflight",
2140
2189
  "artifact-admission",
2190
+ "publication-authority",
2141
2191
  "publish-transaction",
2142
2192
  "release-passport"
2143
2193
  ],
@@ -2153,7 +2203,6 @@
2153
2203
  "BUILDCHAIN_ISSUE_APP_ID",
2154
2204
  "BUILDCHAIN_ISSUE_APP_PRIVATE_KEY",
2155
2205
  "BUILDCHAIN_ISSUE_TOKEN",
2156
- "BUILDCHAIN_PROMOTION_TOKEN",
2157
2206
  "allow-repository",
2158
2207
  "artifact-name",
2159
2208
  "artifact-patterns",
@@ -2174,6 +2223,17 @@
2174
2223
  "github-release-notes",
2175
2224
  "github-release-title",
2176
2225
  "package-manager",
2226
+ "publication-admission-json",
2227
+ "publication-auto-admission",
2228
+ "publication-control-plane-audit-json",
2229
+ "publication-expected-json",
2230
+ "publication-gate-aggregate-json",
2231
+ "publication-package-name",
2232
+ "publication-product",
2233
+ "publication-publisher-workflow-path",
2234
+ "publication-runner-provenance-json",
2235
+ "publication-target",
2236
+ "publication-used-nonces-json",
2177
2237
  "publish-artifact-kind",
2178
2238
  "publish-command",
2179
2239
  "publish-dist-tag",
@@ -2204,8 +2264,8 @@
2204
2264
  ],
2205
2265
  "controllerDescriptor": {
2206
2266
  "contract": "buildchain.controller-descriptor/v1",
2207
- "digest": "sha256:f5a295b2d3e8f20ba46c611acaed71ee7ab5cd1ecaa6e7504b4344493271a803",
2208
- "registryDigest": "sha256:0bd2214618cfa1fb7cdc052b3dcb64fa1ab8b815416bc00bbd27c0c666923363",
2267
+ "digest": "sha256:380a550c76a7a0c884d0519b5e6e605ad3e04e86f637ba846c20b546faec4a0f",
2268
+ "registryDigest": "sha256:f4ea94c3590360ef21ade53056129f0183356de3d1997e43c49a0494d0acd34a",
2209
2269
  "inputClassifications": {
2210
2270
  "BUILDCHAIN_ISSUE_APP_ID": {
2211
2271
  "classification": "redacted",
@@ -2219,10 +2279,6 @@
2219
2279
  "classification": "redacted",
2220
2280
  "source": "workflow-call-secret"
2221
2281
  },
2222
- "BUILDCHAIN_PROMOTION_TOKEN": {
2223
- "classification": "redacted",
2224
- "source": "workflow-call-secret"
2225
- },
2226
2282
  "allow-repository": {
2227
2283
  "classification": "included",
2228
2284
  "source": "workflow-call-input"
@@ -2303,6 +2359,50 @@
2303
2359
  "classification": "included",
2304
2360
  "source": "workflow-call-input"
2305
2361
  },
2362
+ "publication-admission-json": {
2363
+ "classification": "digest-only",
2364
+ "source": "workflow-call-input"
2365
+ },
2366
+ "publication-auto-admission": {
2367
+ "classification": "included",
2368
+ "source": "workflow-call-input"
2369
+ },
2370
+ "publication-control-plane-audit-json": {
2371
+ "classification": "digest-only",
2372
+ "source": "workflow-call-input"
2373
+ },
2374
+ "publication-expected-json": {
2375
+ "classification": "digest-only",
2376
+ "source": "workflow-call-input"
2377
+ },
2378
+ "publication-gate-aggregate-json": {
2379
+ "classification": "digest-only",
2380
+ "source": "workflow-call-input"
2381
+ },
2382
+ "publication-package-name": {
2383
+ "classification": "included",
2384
+ "source": "workflow-call-input"
2385
+ },
2386
+ "publication-product": {
2387
+ "classification": "included",
2388
+ "source": "workflow-call-input"
2389
+ },
2390
+ "publication-publisher-workflow-path": {
2391
+ "classification": "digest-only",
2392
+ "source": "workflow-call-input"
2393
+ },
2394
+ "publication-runner-provenance-json": {
2395
+ "classification": "digest-only",
2396
+ "source": "workflow-call-input"
2397
+ },
2398
+ "publication-target": {
2399
+ "classification": "included",
2400
+ "source": "workflow-call-input"
2401
+ },
2402
+ "publication-used-nonces-json": {
2403
+ "classification": "digest-only",
2404
+ "source": "workflow-call-input"
2405
+ },
2306
2406
  "publish-artifact-kind": {
2307
2407
  "classification": "included",
2308
2408
  "source": "workflow-call-input"
@@ -2419,8 +2519,8 @@
2419
2519
  "redacted input values are never serialized and digest-only input values are never emitted in plaintext",
2420
2520
  "missing receipts are non-qualifying and must not be represented as a successful controller run"
2421
2521
  ],
2422
- "breakingDigest": "sha256:63e4340f090bce35f5ab64f38fe16767725a39819498ed4d24c5c16de4083c23",
2423
- "auditDigest": "sha256:7f513e87fe6c12b34c740261cc6412b9d9c56632537b7538a74ccabe03fe171e"
2522
+ "breakingDigest": "sha256:46238f8fc3c20924decc57ecad142a462fc4739c6bc21409d5cd2457fc1c3cdd",
2523
+ "auditDigest": "sha256:d9f9367790d4a4608d3b1a1bdc21237dfdb8831a59253bedc0923e565aad852d"
2424
2524
  },
2425
2525
  {
2426
2526
  "contractVersion": 1,
@@ -2478,7 +2578,7 @@
2478
2578
  "controllerDescriptor": {
2479
2579
  "contract": "buildchain.controller-descriptor/v1",
2480
2580
  "digest": "sha256:9b9f9a2320c4349903d72ee46e329211b5538ed5ebebaa93559df4eafb835997",
2481
- "registryDigest": "sha256:0bd2214618cfa1fb7cdc052b3dcb64fa1ab8b815416bc00bbd27c0c666923363",
2581
+ "registryDigest": "sha256:f4ea94c3590360ef21ade53056129f0183356de3d1997e43c49a0494d0acd34a",
2482
2582
  "inputClassifications": {
2483
2583
  "buildchain-ref": {
2484
2584
  "classification": "included",
@@ -2548,6 +2648,6 @@
2548
2648
  "auditDigest": "sha256:e7d0cc13b9d6f19e7cd77b650693f0d615b919796d075041d74876e6ca58716f"
2549
2649
  }
2550
2650
  ],
2551
- "compatibilityDigest": "sha256:2520207c5d6d6a737dd32251a42be9c5299644d9aebf690a8402ead1724ed495",
2552
- "contractDigest": "sha256:4c369ecd3bf25e43dc44f42c8cdd00924e8585e90c5300cba51b483054effd9d"
2651
+ "compatibilityDigest": "sha256:af162b86ab4506e9b5f1d3c59b41f3fd57fbad79ff4d749a7f12ff16460517f8",
2652
+ "contractDigest": "sha256:6b01efab04525f9c5ab82d1c835a6aabc3d7d806c9f4c89c70502c88f74a159a"
2553
2653
  }