@kungfu-tech/buildchain 3.0.2-alpha.6 → 3.0.2-alpha.8

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 (54) hide show
  1. package/README.md +3 -2
  2. package/contracts/auditable-demo-media-profiles-v1.json +168 -0
  3. package/contracts/evidence/auditable-demo-web-delivery-v1.json +103 -0
  4. package/contracts/fixtures/auditable-demo-web-delivery-v1/complete-transcript.txt +2 -0
  5. package/contracts/fixtures/auditable-demo-web-delivery-v1/public-projection.json +16 -0
  6. package/contracts/fixtures/auditable-demo-web-delivery-v1/scene.json +12 -0
  7. package/dist/site/buildchain-contract.json +45 -27
  8. package/dist/site/buildchain-site.json +42 -32
  9. package/dist/site/capability-registry.json +3 -3
  10. package/dist/site/controller-registry.json +11 -3
  11. package/dist/site/kfd-claims.json +74 -8
  12. package/dist/site/kfd-upstream-aggregate.json +1 -1
  13. package/dist/site/manual-registry.json +7 -7
  14. package/dist/site/node-api-registry.json +44 -5
  15. package/dist/site/page-registry.json +30 -20
  16. package/dist/site/public-surface-audit.json +38 -10
  17. package/dist/site/publication-authority-registry.json +26 -1
  18. package/dist/site/publication-registry.json +4 -4
  19. package/dist/site/release-provenance.json +3 -0
  20. package/dist/site/site-manifest.json +11 -11
  21. package/dist/site/workflow-registry.json +41 -7
  22. package/docs/MAP.md +2 -0
  23. package/docs/auditable-demo.md +55 -3
  24. package/docs/dev-alpha-candidate-patrol.md +9 -0
  25. package/docs/github-artifact-attestation.md +1 -1
  26. package/docs/release-governance.md +32 -0
  27. package/docs/reusable-build-surface.md +73 -58
  28. package/docs/runtime-train-validation.md +21 -0
  29. package/docs/versioning.md +1 -0
  30. package/package.json +5 -1
  31. package/packages/core/artifact-signing-result.js +228 -0
  32. package/packages/core/artifact-signing.js +412 -0
  33. package/packages/core/buildchain-config.js +58 -0
  34. package/packages/core/buildchain-contract.js +8 -0
  35. package/packages/core/buildchain-publication-authority.js +1 -0
  36. package/packages/core/detached-artifact-signature.js +121 -0
  37. package/packages/core/github-governance-authority.js +6 -0
  38. package/packages/core/index.js +27 -0
  39. package/scripts/auditable-demo.mjs +491 -22
  40. package/scripts/buildchain-channel-router.mjs +8 -2
  41. package/scripts/check-inventory.mjs +5 -0
  42. package/scripts/dev-alpha-candidate-patrol.mjs +18 -0
  43. package/scripts/dispatch-artifact-signing-authority.mjs +152 -0
  44. package/scripts/finalize-native-artifact-signing-result.mjs +96 -0
  45. package/scripts/generate-site-bundle.mjs +3 -0
  46. package/scripts/import-artifact-signing-results.mjs +76 -0
  47. package/scripts/inspect-artifact-signing-requests.mjs +101 -0
  48. package/scripts/materialize-artifact-signing-request.mjs +66 -0
  49. package/scripts/merge-artifact-signing-results.mjs +76 -0
  50. package/scripts/release-line-policy.mjs +27 -0
  51. package/scripts/runtime-ref-core.mjs +10 -6
  52. package/scripts/seal-artifact-signing-requests.mjs +368 -0
  53. package/scripts/sign-detached-artifact-requests.mjs +237 -0
  54. package/scripts/verify-artifact-signing-results.mjs +99 -0
package/README.md CHANGED
@@ -225,8 +225,9 @@ The active reusable workflow surfaces are:
225
225
  planning, capability-aware runner dispatch, receipt validation, and one
226
226
  stable aggregate check;
227
227
  - `.github/workflows/.auditable-demo.yml` for exact-artifact demo
228
- qualification, transcript-bound renderer smoke, and optional media rendering
229
- from the exact passing Gate bundle;
228
+ qualification, transcript-bound renderer smoke, optional media rendering
229
+ from the exact passing Gate bundle, and opt-in content-addressed web-delivery
230
+ profiles with independently verified rendition roles;
230
231
  - `.github/workflows/.build.yml` for deterministic multi-platform build and
231
232
  artifact contracts;
232
233
  - `.github/workflows/build.yml` for the single-config channel router that uses
@@ -0,0 +1,168 @@
1
+ {
2
+ "schema": "buildchain.auditable-demo-media-profiles/v1",
3
+ "profiles": {
4
+ "archive-v1": {
5
+ "mode": "archive",
6
+ "renditions": [
7
+ {
8
+ "path": "demo.gif",
9
+ "role": "readme-compatibility",
10
+ "mimeType": "image/gif"
11
+ },
12
+ {
13
+ "path": "demo.mp4",
14
+ "role": "archive-video",
15
+ "mimeType": "video/mp4"
16
+ },
17
+ {
18
+ "path": "demo.webm",
19
+ "role": "archive-video-alternate",
20
+ "mimeType": "video/webm"
21
+ },
22
+ {
23
+ "path": "poster.png",
24
+ "role": "evidence-poster",
25
+ "mimeType": "image/png"
26
+ }
27
+ ],
28
+ "singletonRoles": [
29
+ "evidence-poster",
30
+ "readme-compatibility"
31
+ ]
32
+ },
33
+ "web-delivery-v1": {
34
+ "extends": "archive-v1",
35
+ "mode": "web-delivery",
36
+ "renditions": [
37
+ {
38
+ "path": "demo.gif",
39
+ "role": "readme-compatibility",
40
+ "mimeType": "image/gif",
41
+ "container": "gif",
42
+ "videoCodec": "gif",
43
+ "audioStreams": 0,
44
+ "maximumBytes": 1048576,
45
+ "budgetBasis": {
46
+ "evidence": "contracts/evidence/auditable-demo-web-delivery-v1.json",
47
+ "observedPath": "demo.gif",
48
+ "observedBytes": 40826,
49
+ "multiplier": 16,
50
+ "rounding": "next-power-of-two"
51
+ }
52
+ },
53
+ {
54
+ "path": "demo.mp4",
55
+ "role": "primary-video",
56
+ "mimeType": "video/mp4",
57
+ "container": "mp4",
58
+ "videoCodec": "h264",
59
+ "pixelFormat": "yuv420p",
60
+ "audioStreams": 0,
61
+ "maximumBytes": 524288,
62
+ "budgetBasis": {
63
+ "evidence": "contracts/evidence/auditable-demo-web-delivery-v1.json",
64
+ "observedPath": "demo.mp4",
65
+ "observedBytes": 27038,
66
+ "multiplier": 16,
67
+ "rounding": "next-power-of-two"
68
+ },
69
+ "progressiveDownload": "moov-before-mdat",
70
+ "frameRatePolicy": "scene-exact"
71
+ },
72
+ {
73
+ "path": "demo.webm",
74
+ "role": "alternate-video",
75
+ "mimeType": "video/webm",
76
+ "container": "webm",
77
+ "videoCodec": "vp9",
78
+ "pixelFormat": "yuv420p",
79
+ "audioStreams": 0,
80
+ "maximumBytes": 524288,
81
+ "budgetBasis": {
82
+ "evidence": "contracts/evidence/auditable-demo-web-delivery-v1.json",
83
+ "observedPath": "demo.webm",
84
+ "observedBytes": 23383,
85
+ "multiplier": 16,
86
+ "rounding": "next-power-of-two"
87
+ },
88
+ "frameRatePolicy": "scene-exact"
89
+ },
90
+ {
91
+ "path": "poster.png",
92
+ "role": "evidence-poster",
93
+ "mimeType": "image/png",
94
+ "container": "png",
95
+ "videoCodec": "png",
96
+ "audioStreams": 0,
97
+ "maximumBytes": 1048576,
98
+ "budgetBasis": {
99
+ "evidence": "contracts/evidence/auditable-demo-web-delivery-v1.json",
100
+ "observedPath": "poster.png",
101
+ "observedBytes": 34769,
102
+ "multiplier": 16,
103
+ "rounding": "next-power-of-two"
104
+ }
105
+ }
106
+ ],
107
+ "singletonRoles": [
108
+ "primary-video",
109
+ "alternate-video",
110
+ "evidence-poster",
111
+ "readme-compatibility",
112
+ "browser-poster"
113
+ ],
114
+ "additionalRenditions": {
115
+ "allowedRoles": [
116
+ "primary-video",
117
+ "responsive-video",
118
+ "browser-poster"
119
+ ],
120
+ "allowedMimeTypes": [
121
+ "video/mp4",
122
+ "video/webm",
123
+ "image/webp",
124
+ "image/avif"
125
+ ],
126
+ "maximumBytesByMimeType": {
127
+ "video/mp4": 524288,
128
+ "video/webm": 524288,
129
+ "image/webp": 524288,
130
+ "image/avif": 524288
131
+ }
132
+ }
133
+ },
134
+ "site-hero-v1": {
135
+ "extends": "web-delivery-v1",
136
+ "mode": "web-delivery",
137
+ "renditions": [
138
+ {
139
+ "path": "poster.webp",
140
+ "role": "browser-poster",
141
+ "mimeType": "image/webp",
142
+ "container": "webp",
143
+ "videoCodec": "webp",
144
+ "audioStreams": 0,
145
+ "maximumBytes": 524288,
146
+ "budgetBasis": {
147
+ "evidence": "contracts/evidence/auditable-demo-web-delivery-v1.json",
148
+ "observedPath": "poster.png",
149
+ "observedBytes": 34769,
150
+ "multiplier": 8,
151
+ "rounding": "next-power-of-two"
152
+ }
153
+ }
154
+ ]
155
+ }
156
+ },
157
+ "qualification": {
158
+ "dimensions": "exact-scene",
159
+ "durationToleranceMs": 600,
160
+ "memberRootAlgorithm": "sha256",
161
+ "nonClaims": [
162
+ "browser-playback-success",
163
+ "responsive-layout",
164
+ "reduced-motion-behavior",
165
+ "production-site-deployment"
166
+ ]
167
+ }
168
+ }
@@ -0,0 +1,103 @@
1
+ {
2
+ "evidenceRoot": "sha256:451adc20c423fbf680caeb14dcc4850990a3317dd5a77f94ee451a7a26edf3fb",
3
+ "inputs": {
4
+ "complete-transcript.txt": "sha256:f3723a3eda614134ab724ce9fbe1e0e5f916d809a8a3096f5e37c1458cb3656c",
5
+ "public-projection.json": "sha256:127f9877f9750a85eada4338f088bee5460c5c71a83302652d3321667002c3c7",
6
+ "scene.json": "sha256:ea65ec39177aac7e5341d330d61e81fcd523c9f2c7a7d4dd5ac43fb457a51977"
7
+ },
8
+ "qualification": {
9
+ "inspectionRoot": "sha256:3cf9f7c710f4fcbd307b116cf279675a37210905d6d0fc7459d11933e98e6ea4",
10
+ "nonClaims": [
11
+ "browser-playback-success",
12
+ "responsive-layout",
13
+ "reduced-motion-behavior",
14
+ "production-site-deployment"
15
+ ],
16
+ "profile": {
17
+ "catalogRoot": "sha256:b2cf52c7b087be73ea852bbbe574e1a50bb7d64d26b8bc211a2c7d53e2ff9cae",
18
+ "id": "web-delivery-v1",
19
+ "mode": "web-delivery",
20
+ "profileRoot": "sha256:b6fb0a83414d03a7222fc50429e60ed68b6d47758b86ceaa316ecc659a01ae2b"
21
+ },
22
+ "qualificationRoot": "sha256:f2133bab4a3a5937ec3863972049d0a7247a8e108681d4bd247f47d766c461ae",
23
+ "renditions": [
24
+ {
25
+ "audioStreams": 0,
26
+ "bytes": 40826,
27
+ "container": "gif",
28
+ "durationMs": 2500,
29
+ "frameRate": 12.5,
30
+ "height": 720,
31
+ "maximumBytes": 1048576,
32
+ "mimeType": "image/gif",
33
+ "path": "demo.gif",
34
+ "pixelFormat": "bgra",
35
+ "progressiveDownload": "not-applicable",
36
+ "role": "readme-compatibility",
37
+ "root": "sha256:d835fbd3068f672b3aaffc904d1488540f661c48e0429c8887397d1ae531880f",
38
+ "videoCodec": "gif",
39
+ "width": 1280
40
+ },
41
+ {
42
+ "audioStreams": 0,
43
+ "bytes": 27038,
44
+ "container": "mp4",
45
+ "durationMs": 2533,
46
+ "frameRate": 15,
47
+ "height": 720,
48
+ "maximumBytes": 524288,
49
+ "mimeType": "video/mp4",
50
+ "path": "demo.mp4",
51
+ "pixelFormat": "yuv420p",
52
+ "progressiveDownload": "moov-before-mdat",
53
+ "role": "primary-video",
54
+ "root": "sha256:a82c3ed61b101528a07689227dc8af65e8c809aa6de2b749fd53915d97c99ac9",
55
+ "videoCodec": "h264",
56
+ "width": 1280
57
+ },
58
+ {
59
+ "audioStreams": 0,
60
+ "bytes": 23383,
61
+ "container": "webm",
62
+ "durationMs": 2534,
63
+ "frameRate": 15,
64
+ "height": 720,
65
+ "maximumBytes": 524288,
66
+ "mimeType": "video/webm",
67
+ "path": "demo.webm",
68
+ "pixelFormat": "yuv420p",
69
+ "progressiveDownload": "not-applicable",
70
+ "role": "alternate-video",
71
+ "root": "sha256:935deb66eb4734371b21c2fc8c55acd596e79c832a9a7963ab0922b3925564c3",
72
+ "videoCodec": "vp9",
73
+ "width": 1280
74
+ },
75
+ {
76
+ "audioStreams": 0,
77
+ "bytes": 34769,
78
+ "container": "png",
79
+ "durationMs": 0,
80
+ "frameRate": 25,
81
+ "height": 720,
82
+ "maximumBytes": 1048576,
83
+ "mimeType": "image/png",
84
+ "path": "poster.png",
85
+ "pixelFormat": "rgb24",
86
+ "progressiveDownload": "not-applicable",
87
+ "role": "evidence-poster",
88
+ "root": "sha256:7141a41c2b84d074477844d9c8d12e6f44173074829796cefdf8119b21be2de9",
89
+ "videoCodec": "png",
90
+ "width": 1280
91
+ }
92
+ ],
93
+ "schema": "buildchain.auditable-demo-media-qualification/v1"
94
+ },
95
+ "renderer": {
96
+ "image": "ghcr.io/kungfu-systems/build-images/demo-renderer@sha256:cb5e1dec368d21c7d4e8baded99ac75f12f7eff0d19505751888cf974086efa6",
97
+ "sourceRef": "refs/tags/v1.3.0-alpha.16",
98
+ "sourceRepository": "kungfu-systems/build-images",
99
+ "sourceSha": "999b370743f3e64e4f0b634d5131bd1d3d6b83ba"
100
+ },
101
+ "rendererManifestRoot": "sha256:2d3e4e2fcdfd17419e866e99d5e29cef65166b594cc5a5bdf2e5d9454cfb3a49",
102
+ "schema": "buildchain.auditable-demo-media-profile-fixture/v1"
103
+ }
@@ -0,0 +1,2 @@
1
+ buildchain auditable demo media profile qualification
2
+ immutable renderer fixture completed
@@ -0,0 +1,16 @@
1
+ {
2
+ "schema": "build-images.demo-projection/v1",
3
+ "evidenceClass": "qualified-build-output",
4
+ "claimBoundary": "Fixture media qualifies delivery properties only; it does not prove a production deployment.",
5
+ "cues": [
6
+ {
7
+ "startMs": 0,
8
+ "endMs": 2500,
9
+ "transcriptLines": [
10
+ 1,
11
+ 2
12
+ ],
13
+ "annotation": "fixed qualification fixture"
14
+ }
15
+ ]
16
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "schema": "build-images.demo-scene/v1",
3
+ "id": "buildchain-web-delivery-qualification",
4
+ "width": 1280,
5
+ "height": 720,
6
+ "fps": 15,
7
+ "durationMs": 2500,
8
+ "title": "Buildchain web delivery qualification",
9
+ "commandLabel": "buildchain qualify-media-fixture",
10
+ "background": "#0B1020",
11
+ "accent": "#67E8A5"
12
+ }
@@ -4,7 +4,7 @@
4
4
  "product": {
5
5
  "name": "Buildchain",
6
6
  "package": "@kungfu-tech/buildchain",
7
- "version": "3.0.2-alpha.6",
7
+ "version": "3.0.2-alpha.8",
8
8
  "repository": "https://github.com/kungfu-systems/buildchain"
9
9
  },
10
10
  "majorLine": "v3",
@@ -52,7 +52,7 @@
52
52
  "retryable GitHub fallback fetches use a bounded attempt budget before exact source SHA and tree verification"
53
53
  ],
54
54
  "breakingDigest": "sha256:a6a35370d6b0d0f46e1b2712dcc01961fe53c2febde95409a27a485c10a36650",
55
- "auditDigest": "sha256:dbee3ce7db7a6a79138e8b5c6698fb2ba12a0594ba17dcb570d6230f44db6b09"
55
+ "auditDigest": "sha256:e6f26755ff082c9116b68fe199879a482a424938cc308033aaf05a0d31dc8cee"
56
56
  },
57
57
  {
58
58
  "contractVersion": 1,
@@ -91,7 +91,7 @@
91
91
  "alpha and stable channel selections use separate consumer contract locks by default"
92
92
  ],
93
93
  "breakingDigest": "sha256:c4597dfa89e1a58f1023905092b849644f5c080abf150aeba9c7e1cd5ed43962",
94
- "auditDigest": "sha256:158aa13c7954762e1a7ab6e5efffc7edbdf5d380208157ce9bd0fbec50dc6190"
94
+ "auditDigest": "sha256:6f7a097f70558ddff5867e3aaf6be0a0a56eb1838232eebe3ec6e7d071591746"
95
95
  },
96
96
  {
97
97
  "contractVersion": 1,
@@ -175,7 +175,7 @@
175
175
  "GitHub Release passport and evidence publication is delegated to promote-buildchain-ref after the semver release transaction completes"
176
176
  ],
177
177
  "breakingDigest": "sha256:acd401cfc46450115a3763fd4b679d85f185e8757ebd52510d6262e1533df4cf",
178
- "auditDigest": "sha256:df3ae042d9715119eb82d0295ee9a22f1c1fb2e603f96a52ae233db8c628b5a8"
178
+ "auditDigest": "sha256:68f3ad7a1d880a26be48263d9d1d12c38ff89beb08e4f744509b1ca196a889c9"
179
179
  },
180
180
  {
181
181
  "contractVersion": 1,
@@ -288,11 +288,14 @@
288
288
  "media-artifact-id",
289
289
  "media-artifact-digest",
290
290
  "media-artifact-url",
291
- "media-root"
291
+ "media-root",
292
+ "media-profile",
293
+ "media-qualification-root"
292
294
  ],
293
295
  "breakingDefaults": {
294
296
  "trustedEventRequired": true,
295
297
  "renderMediaDefault": false,
298
+ "mediaProfileDefault": "archive-v1",
296
299
  "artifactRetentionDaysDefault": 14,
297
300
  "gatePolicy": "required-before-selective-render"
298
301
  },
@@ -300,6 +303,7 @@
300
303
  "buildchain-repository",
301
304
  "source-ref",
302
305
  "render-media",
306
+ "media-profile",
303
307
  "artifact-retention-days",
304
308
  "require-trusted-event"
305
309
  ],
@@ -308,10 +312,14 @@
308
312
  "the checked-in consumer adapter runs from the exact consumer source with a disposable home and reduced environment",
309
313
  "every invocation runs an immutable network-disabled renderer smoke before emitting a qualified Gate bundle",
310
314
  "complete media rendering is optional and consumes only an exact passing Gate bundle",
311
- "Gate and media bundles expose both GitHub Artifact archive coordinates and deterministic member roots"
312
- ],
313
- "breakingDigest": "sha256:a68f34d3dc24e0e0cd0040f978c174b62bf29a0472cebe1c43751e62408e6af6",
314
- "auditDigest": "sha256:1969981087ee484411daae60797430d0f762d3a328c438dc723f2794d6d41f51"
315
+ "Gate and media bundles expose both GitHub Artifact archive coordinates and deterministic member roots",
316
+ "explicit web-delivery profiles independently verify codec, container, audio, dimensions, duration, byte budgets, rendition roles, and MP4 fast-start evidence",
317
+ "media receipts expose content-addressed rendition facts without requiring consumers to infer roles from filenames",
318
+ "Build Images owns encoding, Buildchain owns qualification and receipts, and site repositories own browser loading and accessibility behavior",
319
+ "media qualification does not claim browser playback, responsive layout, reduced-motion behavior, accessibility, or production deployment"
320
+ ],
321
+ "breakingDigest": "sha256:425f8d3d1ba205dd6fe35a20f1dc6dad7d7c563872283e3af79fea4d5c475692",
322
+ "auditDigest": "sha256:d043897d3d2bd242a83a362fccac408b4bd38e1e2fb50e7cae6a2145a6c0bd51"
315
323
  },
316
324
  {
317
325
  "contractVersion": 1,
@@ -697,7 +705,7 @@
697
705
  "manual entries carry source file digests so downstream sites and agents can detect stale hand-written documentation"
698
706
  ],
699
707
  "breakingDigest": "sha256:7d0d2819e3a3e72989d9c57b5efe9d0bc0a79bc0f2c82a0c7b9d6c5a211a91f2",
700
- "auditDigest": "sha256:8bb23e95ad68832eb554145905a29242a06875baf22ac62c4e7302e447872f3c"
708
+ "auditDigest": "sha256:63522fa4397a62566c0f24de10d0fd91bf040c98410b5ccd1cdcf4b4d4756549"
701
709
  },
702
710
  {
703
711
  "contractVersion": 1,
@@ -719,7 +727,7 @@
719
727
  "agents can discover supported Node APIs without importing internal file paths"
720
728
  ],
721
729
  "breakingDigest": "sha256:48f925608d3e2131d90936b07dc2a30341204cae3e6e785c0f77d61ad755c945",
722
- "auditDigest": "sha256:f9d8d42ea1aaa81e127ad0aeaacf846f944369f49d06f5ee749078aae320e0ee"
730
+ "auditDigest": "sha256:4d201b7021ab28d7999f6ce88b4aacae5eb57e187d220e10a1e3e5ae5544a7d8"
723
731
  },
724
732
  {
725
733
  "contractVersion": 1,
@@ -770,7 +778,7 @@
770
778
  "controllerDescriptor": {
771
779
  "contract": "buildchain.controller-descriptor/v1",
772
780
  "digest": "sha256:373723a73d188194d389dee04c394d3b79cb0c016a370f2f5d0f60979a02ed48",
773
- "registryDigest": "sha256:2d022091ac72303cc5fab5888de3dfd5aecfc8520281f753d963ac7208828d6f",
781
+ "registryDigest": "sha256:c637b908f2be506f3bd56a7e41995450c4d7011f3badc232712884e4fb7039b4",
774
782
  "inputClassifications": {
775
783
  "buildchain-ref": {
776
784
  "classification": "included",
@@ -860,6 +868,7 @@
860
868
  "BUILDCHAIN_MACOS_NOTARY_API_ISSUER",
861
869
  "BUILDCHAIN_MACOS_NOTARY_API_KEY_ID",
862
870
  "BUILDCHAIN_MACOS_NOTARY_API_KEY_P8_BASE64",
871
+ "BUILDCHAIN_PROMOTION_TOKEN",
863
872
  "artifact-name",
864
873
  "artifact-name-template",
865
874
  "artifact-paths",
@@ -935,8 +944,8 @@
935
944
  ],
936
945
  "controllerDescriptor": {
937
946
  "contract": "buildchain.controller-descriptor/v1",
938
- "digest": "sha256:16c0a2506088fc5a4e3337c7c23f5cc7d14f30e9cde23c1d39fc335d05b4a4f9",
939
- "registryDigest": "sha256:2d022091ac72303cc5fab5888de3dfd5aecfc8520281f753d963ac7208828d6f",
947
+ "digest": "sha256:146718143cc50e48ac57154aade4a4b06a8df4e036708a150233098d3c1cb6f7",
948
+ "registryDigest": "sha256:c637b908f2be506f3bd56a7e41995450c4d7011f3badc232712884e4fb7039b4",
940
949
  "inputClassifications": {
941
950
  "BUILDCHAIN_ARTIFACT_RELAY_S3_DOWNLOAD_ROLE_ARN": {
942
951
  "classification": "redacted",
@@ -970,6 +979,10 @@
970
979
  "classification": "redacted",
971
980
  "source": "workflow-call-secret"
972
981
  },
982
+ "BUILDCHAIN_PROMOTION_TOKEN": {
983
+ "classification": "redacted",
984
+ "source": "workflow-call-secret"
985
+ },
973
986
  "artifact-name": {
974
987
  "classification": "included",
975
988
  "source": "workflow-call-input"
@@ -1270,7 +1283,7 @@
1270
1283
  "missing receipts are non-qualifying and must not be represented as a successful controller run"
1271
1284
  ],
1272
1285
  "breakingDigest": "sha256:30745921541e9b0f70475bb2178c2559f6aef248f6680670ccd44d8c5a69a6b1",
1273
- "auditDigest": "sha256:dbee3ce7db7a6a79138e8b5c6698fb2ba12a0594ba17dcb570d6230f44db6b09"
1286
+ "auditDigest": "sha256:e6f26755ff082c9116b68fe199879a482a424938cc308033aaf05a0d31dc8cee"
1274
1287
  },
1275
1288
  {
1276
1289
  "contractVersion": 1,
@@ -1316,6 +1329,7 @@
1316
1329
  "BUILDCHAIN_MACOS_NOTARY_API_ISSUER",
1317
1330
  "BUILDCHAIN_MACOS_NOTARY_API_KEY_ID",
1318
1331
  "BUILDCHAIN_MACOS_NOTARY_API_KEY_P8_BASE64",
1332
+ "BUILDCHAIN_PROMOTION_TOKEN",
1319
1333
  "artifact-name",
1320
1334
  "artifact-name-template",
1321
1335
  "artifact-paths",
@@ -1394,8 +1408,8 @@
1394
1408
  ],
1395
1409
  "controllerDescriptor": {
1396
1410
  "contract": "buildchain.controller-descriptor/v1",
1397
- "digest": "sha256:529f68186a49a8df1f2012fc4a38058548d1cc93eb06b6bed35befddd72519ef",
1398
- "registryDigest": "sha256:2d022091ac72303cc5fab5888de3dfd5aecfc8520281f753d963ac7208828d6f",
1411
+ "digest": "sha256:55b3189412e7da7769a8de60bd1ba4cf52d726d8b79c0a720598e49742aa72a0",
1412
+ "registryDigest": "sha256:c637b908f2be506f3bd56a7e41995450c4d7011f3badc232712884e4fb7039b4",
1399
1413
  "inputClassifications": {
1400
1414
  "BUILDCHAIN_ARTIFACT_RELAY_S3_DOWNLOAD_ROLE_ARN": {
1401
1415
  "classification": "redacted",
@@ -1429,6 +1443,10 @@
1429
1443
  "classification": "redacted",
1430
1444
  "source": "workflow-call-secret"
1431
1445
  },
1446
+ "BUILDCHAIN_PROMOTION_TOKEN": {
1447
+ "classification": "redacted",
1448
+ "source": "workflow-call-secret"
1449
+ },
1432
1450
  "artifact-name": {
1433
1451
  "classification": "included",
1434
1452
  "source": "workflow-call-input"
@@ -1738,7 +1756,7 @@
1738
1756
  "missing receipts are non-qualifying and must not be represented as a successful controller run"
1739
1757
  ],
1740
1758
  "breakingDigest": "sha256:d40dd05d7e07473d4b2dc1b62fbb0ed6f06449b4d3a7c44a2e8014313e3c0273",
1741
- "auditDigest": "sha256:158aa13c7954762e1a7ab6e5efffc7edbdf5d380208157ce9bd0fbec50dc6190"
1759
+ "auditDigest": "sha256:6f7a097f70558ddff5867e3aaf6be0a0a56eb1838232eebe3ec6e7d071591746"
1742
1760
  },
1743
1761
  {
1744
1762
  "contractVersion": 1,
@@ -1808,7 +1826,7 @@
1808
1826
  "controllerDescriptor": {
1809
1827
  "contract": "buildchain.controller-descriptor/v1",
1810
1828
  "digest": "sha256:8e42956a2c10fa109500e72b97994f06b3d22a19cc63a46f66410b2e81706e9d",
1811
- "registryDigest": "sha256:2d022091ac72303cc5fab5888de3dfd5aecfc8520281f753d963ac7208828d6f",
1829
+ "registryDigest": "sha256:c637b908f2be506f3bd56a7e41995450c4d7011f3badc232712884e4fb7039b4",
1812
1830
  "inputClassifications": {
1813
1831
  "artifact-name": {
1814
1832
  "classification": "included",
@@ -2025,7 +2043,7 @@
2025
2043
  "controllerDescriptor": {
2026
2044
  "contract": "buildchain.controller-descriptor/v1",
2027
2045
  "digest": "sha256:c5274b37f04d0054559fdc8698c51bd0f0d8ae470baf163e9caa7699aa970575",
2028
- "registryDigest": "sha256:2d022091ac72303cc5fab5888de3dfd5aecfc8520281f753d963ac7208828d6f",
2046
+ "registryDigest": "sha256:c637b908f2be506f3bd56a7e41995450c4d7011f3badc232712884e4fb7039b4",
2029
2047
  "inputClassifications": {
2030
2048
  "artifact-path": {
2031
2049
  "classification": "digest-only",
@@ -2269,7 +2287,7 @@
2269
2287
  "controllerDescriptor": {
2270
2288
  "contract": "buildchain.controller-descriptor/v1",
2271
2289
  "digest": "sha256:6b132790b9798e8a5dfbe095701d8e024c160a08bc7c4bd477ee79feef7a9cfd",
2272
- "registryDigest": "sha256:2d022091ac72303cc5fab5888de3dfd5aecfc8520281f753d963ac7208828d6f",
2290
+ "registryDigest": "sha256:c637b908f2be506f3bd56a7e41995450c4d7011f3badc232712884e4fb7039b4",
2273
2291
  "inputClassifications": {
2274
2292
  "artifact-name": {
2275
2293
  "classification": "included",
@@ -2451,7 +2469,7 @@
2451
2469
  "controllerDescriptor": {
2452
2470
  "contract": "buildchain.controller-descriptor/v1",
2453
2471
  "digest": "sha256:6d71409659fbf8543c7e520b0c493d8afe86bdf60286b860bb917f0041ebc173",
2454
- "registryDigest": "sha256:2d022091ac72303cc5fab5888de3dfd5aecfc8520281f753d963ac7208828d6f",
2472
+ "registryDigest": "sha256:c637b908f2be506f3bd56a7e41995450c4d7011f3badc232712884e4fb7039b4",
2455
2473
  "inputClassifications": {
2456
2474
  "artifact-name": {
2457
2475
  "classification": "included",
@@ -2761,7 +2779,7 @@
2761
2779
  "controllerDescriptor": {
2762
2780
  "contract": "buildchain.controller-descriptor/v1",
2763
2781
  "digest": "sha256:00baae93d9ed75129fdaed6fcc33285e515b8c7de84816831a39e660941dd7ae",
2764
- "registryDigest": "sha256:2d022091ac72303cc5fab5888de3dfd5aecfc8520281f753d963ac7208828d6f",
2782
+ "registryDigest": "sha256:c637b908f2be506f3bd56a7e41995450c4d7011f3badc232712884e4fb7039b4",
2765
2783
  "inputClassifications": {
2766
2784
  "BUILDCHAIN_ISSUE_APP_ID": {
2767
2785
  "classification": "redacted",
@@ -3225,7 +3243,7 @@
3225
3243
  "controllerDescriptor": {
3226
3244
  "contract": "buildchain.controller-descriptor/v1",
3227
3245
  "digest": "sha256:f97656a8df0758c8e404d5b7c387529256a1ec45d1748f8efb6847a3256b1216",
3228
- "registryDigest": "sha256:2d022091ac72303cc5fab5888de3dfd5aecfc8520281f753d963ac7208828d6f",
3246
+ "registryDigest": "sha256:c637b908f2be506f3bd56a7e41995450c4d7011f3badc232712884e4fb7039b4",
3229
3247
  "inputClassifications": {
3230
3248
  "buildchain-ref": {
3231
3249
  "classification": "included",
@@ -3348,7 +3366,7 @@
3348
3366
  "controllerDescriptor": {
3349
3367
  "contract": "buildchain.controller-descriptor/v1",
3350
3368
  "digest": "sha256:b6f53563c0adc859bc586c05fce560a5094d7d9666438d63c5fd3e1fc4774555",
3351
- "registryDigest": "sha256:2d022091ac72303cc5fab5888de3dfd5aecfc8520281f753d963ac7208828d6f",
3369
+ "registryDigest": "sha256:c637b908f2be506f3bd56a7e41995450c4d7011f3badc232712884e4fb7039b4",
3352
3370
  "inputClassifications": {}
3353
3371
  },
3354
3372
  "guarantees": [
@@ -3361,6 +3379,6 @@
3361
3379
  "auditDigest": "sha256:e07a5db56a71bd0ac79c81f12619938055361bf0a0ed8e5891f88ca1c51f1c93"
3362
3380
  }
3363
3381
  ],
3364
- "compatibilityDigest": "sha256:008b1c5a90a787cf30106829ac7aca68ab501f6d9c375e415d9c5c6b89039f46",
3365
- "contractDigest": "sha256:741a9262d51445d776077265081fbf7acac549dea1a624e9728861eabf66cc6e"
3382
+ "compatibilityDigest": "sha256:9770baa99ba374e9dbd743ca9624a72137513b8c4e65af1fbf2160cb3ef51d9d",
3383
+ "contractDigest": "sha256:5b75cb3c3f376e023497d3374b338b1f9622c6c24e7d5fc197ffa9ae7ce66c08"
3366
3384
  }