@kungfu-tech/buildchain 3.0.2 → 3.0.3-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 (127) hide show
  1. package/AGENTS.md +1 -1
  2. package/CONTRIBUTING.md +1 -1
  3. package/README.md +27 -1
  4. package/actions/promote-buildchain-ref/README.md +90 -19
  5. package/actions/report-buildchain-issue/README.md +20 -2
  6. package/actions/run-lifecycle/README.md +5 -0
  7. package/actions/validate-config/README.md +19 -1
  8. package/bin/buildchain.mjs +56 -2
  9. package/bin/internal/command-registry.mjs +82 -0
  10. package/bin/internal/trust-release-cli.mjs +1 -0
  11. package/contracts/auditable-demo-media-profiles-v1.json +116 -1
  12. package/contracts/buildchain-v2-residuals-v1.json +146 -0
  13. package/contracts/evidence/auditable-demo-responsive-web-delivery-v1.json +143 -0
  14. package/contracts/evidence/auditable-demo-web-delivery-v1.json +7 -3
  15. package/contracts/fixtures/auditable-demo-responsive-web-delivery-v1/complete-transcript.txt +2 -0
  16. package/contracts/fixtures/auditable-demo-responsive-web-delivery-v1/public-projection.json +16 -0
  17. package/contracts/fixtures/auditable-demo-responsive-web-delivery-v1/scene.json +12 -0
  18. package/dist/site/buildchain-contract.json +188 -46
  19. package/dist/site/buildchain-site.json +181 -90
  20. package/dist/site/capability-registry.json +5 -5
  21. package/dist/site/cli-registry.json +860 -98
  22. package/dist/site/controller-registry.json +118 -5
  23. package/dist/site/kfd-claims.json +233 -19
  24. package/dist/site/kfd-upstream-aggregate.json +1 -1
  25. package/dist/site/manual-registry.json +20 -20
  26. package/dist/site/node-api-registry.json +374 -59
  27. package/dist/site/page-registry.json +156 -65
  28. package/dist/site/public-surface-audit.json +231 -22
  29. package/dist/site/publication-registry.json +4 -4
  30. package/dist/site/release-provenance.json +3 -0
  31. package/dist/site/site-manifest.json +24 -24
  32. package/dist/site/workflow-registry.json +575 -79
  33. package/docs/MAP.md +22 -4
  34. package/docs/auditable-demo.md +54 -13
  35. package/docs/aws-us-elastic-runner-burst-plane.md +381 -0
  36. package/docs/cli.md +119 -12
  37. package/docs/consumer-issue-reporting.md +20 -2
  38. package/docs/dev-alpha-candidate-patrol.md +24 -10
  39. package/docs/github-governance-authority.md +24 -31
  40. package/docs/lifecycle-protocol.md +20 -2
  41. package/docs/migration-inventory.md +24 -5
  42. package/docs/observed-evidence-patrol.md +28 -12
  43. package/docs/ownership.md +19 -1
  44. package/docs/publication-artifacts.md +158 -18
  45. package/docs/publication-authority.md +4 -4
  46. package/docs/publish-transaction.md +78 -31
  47. package/docs/release-candidate.md +24 -0
  48. package/docs/release-flow.md +50 -32
  49. package/docs/release-governance.md +39 -32
  50. package/docs/release-passport.md +4 -0
  51. package/docs/release-propagation.md +57 -12
  52. package/docs/reusable-build-surface.md +218 -90
  53. package/docs/runtime-train-validation.md +20 -2
  54. package/docs/shifu-gate-profiles.md +7 -1
  55. package/docs/stable-candidate-patrol.md +6 -6
  56. package/docs/toolkit-observability.md +22 -0
  57. package/docs/versioning.md +46 -24
  58. package/docs/web-surface-deployments.md +82 -1
  59. package/package.json +7 -5
  60. package/packages/core/README.md +60 -4
  61. package/packages/core/artifact-signing.js +1 -0
  62. package/packages/core/buildchain-contract.js +9 -4
  63. package/packages/core/cache-evidence.js +1 -0
  64. package/packages/core/controller-evidence.js +2 -0
  65. package/packages/core/diagnostics.js +105 -30
  66. package/packages/core/github-governance-authority.js +25 -17
  67. package/packages/core/index.js +40 -0
  68. package/packages/core/paper.js +3226 -0
  69. package/packages/core/public-surface-audit.js +3 -0
  70. package/packages/core/publication-artifact.js +1 -6
  71. package/packages/core/publication-authority.js +1 -0
  72. package/packages/core/publication-control-plane-audit.js +28 -0
  73. package/packages/core/publication-reproducibility.js +947 -0
  74. package/packages/core/publication-sealed-bundle.js +190 -0
  75. package/packages/core/publish-transaction.js +147 -17
  76. package/packages/core/release-candidate.js +234 -0
  77. package/packages/core/release-passport.js +519 -228
  78. package/packages/core/release-propagation.js +175 -1
  79. package/packages/core/stable-release-gate.js +4 -1
  80. package/scripts/artifact-signing-delegation.mjs +268 -0
  81. package/scripts/audit-github-governance.mjs +32 -13
  82. package/scripts/audit-publication-control-plane.mjs +17 -8
  83. package/scripts/auditable-demo.mjs +266 -7
  84. package/scripts/aws-codebuild-toolchain.mjs +285 -0
  85. package/scripts/aws-macos-jit-core.mjs +378 -0
  86. package/scripts/aws-macos-jit.mjs +123 -0
  87. package/scripts/aws-runner-burst-core.mjs +248 -0
  88. package/scripts/aws-runner-burst.mjs +79 -0
  89. package/scripts/aws-windows-jit-core.mjs +374 -0
  90. package/scripts/aws-windows-jit.mjs +121 -0
  91. package/scripts/build-contract-core.mjs +69 -6
  92. package/scripts/build-standalone-binary.mjs +23 -0
  93. package/scripts/buildchain-contract-lock.mjs +1 -1
  94. package/scripts/buildchain-patrol.mjs +1 -1
  95. package/scripts/check-internal-architecture.mjs +69 -2
  96. package/scripts/check-inventory.mjs +70 -2
  97. package/scripts/check-javascript-syntax.mjs +31 -0
  98. package/scripts/check-maintainability.mjs +371 -0
  99. package/scripts/compiler-cache-evidence.mjs +221 -0
  100. package/scripts/dev-alpha-candidate-patrol.mjs +288 -43
  101. package/scripts/dispatch-artifact-signing-authority.mjs +7 -1
  102. package/scripts/finalize-native-artifact-signing-result.mjs +185 -31
  103. package/scripts/gate-profile-core.mjs +6 -1
  104. package/scripts/generate-channel-promotion-workflow.mjs +3 -12
  105. package/scripts/generate-release-candidate-passport.mjs +4 -0
  106. package/scripts/generate-site-bundle.mjs +84 -18
  107. package/scripts/import-artifact-signing-results.mjs +64 -5
  108. package/scripts/inspect-artifact-signing-requests.mjs +52 -14
  109. package/scripts/maintainability-metrics.mjs +339 -0
  110. package/scripts/npm-publish-transaction.mjs +57 -6
  111. package/scripts/observed-evidence.mjs +151 -33
  112. package/scripts/paper.mjs +645 -0
  113. package/scripts/promotion-channel-router.mjs +16 -4
  114. package/scripts/publication-reproducibility.mjs +62 -0
  115. package/scripts/reconcile-github-governance.mjs +8 -1
  116. package/scripts/release-propagation.mjs +39 -0
  117. package/scripts/resolve-artifact-signing-upload-route.mjs +55 -0
  118. package/scripts/resolve-build-contract.mjs +6 -0
  119. package/scripts/route-offline-runners.mjs +236 -0
  120. package/scripts/run-candidate-body-prefix-renderer.mjs +187 -0
  121. package/scripts/run-lifecycle-core.mjs +62 -1
  122. package/scripts/runtime-ref-core.mjs +36 -4
  123. package/scripts/seal-artifact-signing-requests.mjs +64 -12
  124. package/scripts/stable-candidate-qualification.mjs +50 -0
  125. package/scripts/verify-artifact-signing-results.mjs +26 -1
  126. package/scripts/web-surface-core.mjs +272 -86
  127. package/scripts/web-surface-production-decision.mjs +19 -3
@@ -131,6 +131,121 @@
131
131
  }
132
132
  }
133
133
  },
134
+ "responsive-web-delivery-v1": {
135
+ "extends": "web-delivery-v1",
136
+ "mode": "web-delivery",
137
+ "renditions": [
138
+ {
139
+ "path": "demo.gif",
140
+ "role": "readme-compatibility",
141
+ "mimeType": "image/gif",
142
+ "container": "gif",
143
+ "videoCodec": "gif",
144
+ "audioStreams": 0,
145
+ "maximumBytes": 1048576,
146
+ "budgetBasis": {
147
+ "evidence": "contracts/evidence/auditable-demo-web-delivery-v1.json",
148
+ "observedPath": "demo.gif",
149
+ "observedBytes": 40826,
150
+ "multiplier": 16,
151
+ "rounding": "next-power-of-two"
152
+ },
153
+ "dimensions": {
154
+ "policy": "exact-downscale-same-aspect",
155
+ "width": 1280,
156
+ "height": 720
157
+ }
158
+ },
159
+ {
160
+ "path": "demo.mp4",
161
+ "role": "primary-video",
162
+ "mimeType": "video/mp4",
163
+ "container": "mp4",
164
+ "videoCodec": "h264",
165
+ "pixelFormat": "yuv420p",
166
+ "audioStreams": 0,
167
+ "maximumBytes": 2097152,
168
+ "budgetBasis": {
169
+ "evidence": "contracts/evidence/auditable-demo-web-delivery-v1.json",
170
+ "observedPath": "demo.mp4",
171
+ "observedBytes": 27038,
172
+ "multiplier": 64,
173
+ "rounding": "next-power-of-two"
174
+ },
175
+ "progressiveDownload": "moov-before-mdat",
176
+ "frameRatePolicy": "scene-exact"
177
+ },
178
+ {
179
+ "path": "demo.webm",
180
+ "role": "alternate-video",
181
+ "mimeType": "video/webm",
182
+ "container": "webm",
183
+ "videoCodec": "vp9",
184
+ "pixelFormat": "yuv420p",
185
+ "audioStreams": 0,
186
+ "maximumBytes": 2097152,
187
+ "budgetBasis": {
188
+ "evidence": "contracts/evidence/auditable-demo-web-delivery-v1.json",
189
+ "observedPath": "demo.webm",
190
+ "observedBytes": 23383,
191
+ "multiplier": 64,
192
+ "rounding": "next-power-of-two"
193
+ },
194
+ "frameRatePolicy": "scene-exact"
195
+ },
196
+ {
197
+ "path": "demo-720p.mp4",
198
+ "role": "responsive-primary-video",
199
+ "mimeType": "video/mp4",
200
+ "container": "mp4",
201
+ "videoCodec": "h264",
202
+ "pixelFormat": "yuv420p",
203
+ "audioStreams": 0,
204
+ "maximumBytes": 2097152,
205
+ "budgetBasis": {
206
+ "evidence": "contracts/evidence/auditable-demo-web-delivery-v1.json",
207
+ "observedPath": "demo.mp4",
208
+ "observedBytes": 27038,
209
+ "multiplier": 64,
210
+ "rounding": "next-power-of-two"
211
+ },
212
+ "progressiveDownload": "moov-before-mdat",
213
+ "frameRatePolicy": "scene-exact",
214
+ "dimensions": {
215
+ "policy": "exact-downscale-same-aspect",
216
+ "width": 1280,
217
+ "height": 720
218
+ }
219
+ },
220
+ {
221
+ "path": "demo-720p.webm",
222
+ "role": "responsive-alternate-video",
223
+ "mimeType": "video/webm",
224
+ "container": "webm",
225
+ "videoCodec": "vp9",
226
+ "pixelFormat": "yuv420p",
227
+ "audioStreams": 0,
228
+ "maximumBytes": 2097152,
229
+ "budgetBasis": {
230
+ "evidence": "contracts/evidence/auditable-demo-web-delivery-v1.json",
231
+ "observedPath": "demo.webm",
232
+ "observedBytes": 23383,
233
+ "multiplier": 64,
234
+ "rounding": "next-power-of-two"
235
+ },
236
+ "frameRatePolicy": "scene-exact",
237
+ "dimensions": {
238
+ "policy": "exact-downscale-same-aspect",
239
+ "width": 1280,
240
+ "height": 720
241
+ }
242
+ }
243
+ ],
244
+ "singletonRoles": [
245
+ "responsive-primary-video",
246
+ "responsive-alternate-video"
247
+ ]
248
+ },
134
249
  "site-hero-v1": {
135
250
  "extends": "web-delivery-v1",
136
251
  "mode": "web-delivery",
@@ -155,7 +270,7 @@
155
270
  }
156
271
  },
157
272
  "qualification": {
158
- "dimensions": "exact-scene",
273
+ "dimensions": "exact-scene-or-profile-declared-downscale",
159
274
  "durationToleranceMs": 600,
160
275
  "memberRootAlgorithm": "sha256",
161
276
  "nonClaims": [
@@ -0,0 +1,146 @@
1
+ {
2
+ "contract": "buildchain.v2-residual-inventory/v1",
3
+ "scope": ".github/workflows on the current default branch",
4
+ "policy": {
5
+ "runtimeDefault": "v3",
6
+ "dogfoodRuntimeDefault": "v3-alpha",
7
+ "unclassifiedV2TokensAllowed": false
8
+ },
9
+ "entries": [
10
+ {
11
+ "path": ".github/workflows/.bump-minor-version.yml",
12
+ "token": "kungfu-systems/buildchain/actions/bump-version@v2",
13
+ "expectedOccurrences": 1,
14
+ "classification": "legacy-compatibility-action",
15
+ "callerStatus": "legacy-reusable",
16
+ "owner": "buildchain-maintainers",
17
+ "sunsetCondition": "Remove after every known caller migrates to the lifecycle version command."
18
+ },
19
+ {
20
+ "path": ".github/workflows/.release-candidate-promote.yml",
21
+ "token": "actions/create-github-app-token@v2",
22
+ "expectedOccurrences": 1,
23
+ "classification": "third-party-action-version",
24
+ "callerStatus": "active",
25
+ "owner": "actions/create-github-app-token maintainers",
26
+ "sunsetCondition": "Upgrade through normal dependency review when a compatible successor is adopted."
27
+ },
28
+ {
29
+ "path": ".github/workflows/.release-docker.yml",
30
+ "token": "workflows v2 Docker release path is retired",
31
+ "expectedOccurrences": 1,
32
+ "classification": "retired-path-tombstone",
33
+ "callerStatus": "fail-closed",
34
+ "owner": "buildchain-maintainers",
35
+ "sunsetCondition": "Remove only after the compatibility workflow entry itself is removed."
36
+ },
37
+ {
38
+ "path": ".github/workflows/.release-elastic-beanstalk.yml",
39
+ "token": "workflows v2 Elastic Beanstalk release path is retired",
40
+ "expectedOccurrences": 1,
41
+ "classification": "retired-path-tombstone",
42
+ "callerStatus": "fail-closed",
43
+ "owner": "buildchain-maintainers",
44
+ "sunsetCondition": "Remove only after the compatibility workflow entry itself is removed."
45
+ },
46
+ {
47
+ "path": ".github/workflows/.release-new-version.yml",
48
+ "token": "default: \"v2\"",
49
+ "expectedOccurrences": 1,
50
+ "classification": "retired-input-tombstone",
51
+ "callerStatus": "fail-closed-unused-input",
52
+ "owner": "buildchain-maintainers",
53
+ "sunsetCondition": "Remove with the retired workflow input compatibility surface."
54
+ },
55
+ {
56
+ "path": ".github/workflows/.release-verify.yml",
57
+ "token": "workflows v2",
58
+ "expectedOccurrences": 3,
59
+ "classification": "retired-path-tombstone",
60
+ "callerStatus": "fail-closed",
61
+ "owner": "buildchain-maintainers",
62
+ "sunsetCondition": "Remove each message with its corresponding retired input or path."
63
+ },
64
+ {
65
+ "path": ".github/workflows/.sam-release.yml",
66
+ "token": "workflows v2 SAM release path is retired",
67
+ "expectedOccurrences": 1,
68
+ "classification": "retired-path-tombstone",
69
+ "callerStatus": "fail-closed",
70
+ "owner": "buildchain-maintainers",
71
+ "sunsetCondition": "Remove only after the compatibility workflow entry itself is removed."
72
+ },
73
+ {
74
+ "path": ".github/workflows/.sam-verify.yml",
75
+ "token": "kungfu-systems/buildchain/actions/bump-version@v2",
76
+ "expectedOccurrences": 3,
77
+ "classification": "legacy-compatibility-action",
78
+ "callerStatus": "legacy-reusable",
79
+ "owner": "buildchain-maintainers",
80
+ "sunsetCondition": "Remove after SAM consumers migrate to the lifecycle version command."
81
+ },
82
+ {
83
+ "path": ".github/workflows/.sam-verify.yml",
84
+ "token": "aws-actions/setup-sam@v2",
85
+ "expectedOccurrences": 1,
86
+ "classification": "third-party-action-version",
87
+ "callerStatus": "legacy-reusable",
88
+ "owner": "aws-actions/setup-sam maintainers",
89
+ "sunsetCondition": "Upgrade through normal dependency review when a compatible successor is adopted."
90
+ },
91
+ {
92
+ "path": ".github/workflows/.sync-release-page.yml",
93
+ "token": "retired in workflows v2",
94
+ "expectedOccurrences": 1,
95
+ "classification": "retired-path-tombstone",
96
+ "callerStatus": "fail-closed",
97
+ "owner": "buildchain-maintainers",
98
+ "sunsetCondition": "Remove only after the compatibility workflow entry itself is removed."
99
+ },
100
+ {
101
+ "path": ".github/workflows/.wheel-release.yml",
102
+ "token": "workflows v2 wheel release path is retired",
103
+ "expectedOccurrences": 1,
104
+ "classification": "retired-path-tombstone",
105
+ "callerStatus": "fail-closed",
106
+ "owner": "buildchain-maintainers",
107
+ "sunsetCondition": "Remove only after the compatibility workflow entry itself is removed."
108
+ },
109
+ {
110
+ "path": ".github/workflows/.wheel-verify.yml",
111
+ "token": "kungfu-systems/buildchain/actions/publish-prebuilt@v2",
112
+ "expectedOccurrences": 1,
113
+ "classification": "legacy-compatibility-action",
114
+ "callerStatus": "legacy-reusable",
115
+ "owner": "buildchain-maintainers",
116
+ "sunsetCondition": "Remove after wheel consumers migrate to the publication authority path."
117
+ },
118
+ {
119
+ "path": ".github/workflows/.wheel-verify.yml",
120
+ "token": "kungfu-systems/buildchain/actions/bump-version@v2",
121
+ "expectedOccurrences": 3,
122
+ "classification": "legacy-compatibility-action",
123
+ "callerStatus": "legacy-reusable",
124
+ "owner": "buildchain-maintainers",
125
+ "sunsetCondition": "Remove after wheel consumers migrate to the lifecycle version command."
126
+ },
127
+ {
128
+ "path": ".github/workflows/candidate-lab.yml",
129
+ "token": "default: \"v2\"",
130
+ "expectedOccurrences": 1,
131
+ "classification": "legacy-compatibility-ref",
132
+ "callerStatus": "manual-no-publish-report-only",
133
+ "owner": "buildchain-maintainers",
134
+ "sunsetCondition": "Remove after the legacy workflows comparison lane is formally retired."
135
+ },
136
+ {
137
+ "path": ".github/workflows/schedule-purge-artifacts.yml",
138
+ "token": "not shipped in buildchain v2",
139
+ "expectedOccurrences": 1,
140
+ "classification": "retired-path-tombstone",
141
+ "callerStatus": "fail-closed",
142
+ "owner": "buildchain-maintainers",
143
+ "sunsetCondition": "Remove only after the compatibility workflow entry itself is removed."
144
+ }
145
+ ]
146
+ }
@@ -0,0 +1,143 @@
1
+ {
2
+ "evidenceRoot": "sha256:5bebb7ca41b7b509d63293c3c363fbff917d188fe1d6ae19a73d33424ea623ed",
3
+ "inputs": {
4
+ "complete-transcript.txt": "sha256:3cc1fc8a46d47fad052143b54ab261f08d007403c4ec00eba37b0a733f7cc615",
5
+ "public-projection.json": "sha256:c5d5ec702189d2e6eed17419f2fd9a659c1b4cbcf7ee1a58ac8507ec2a748180",
6
+ "scene.json": "sha256:a140e39b721ba3fe0daa05d6391fb690027efd52e15e1d801dade3934385e67e"
7
+ },
8
+ "qualification": {
9
+ "inspectionRoot": "sha256:c2ad1f75b543f2dbc5abb3dcedce3bb11d1f02cb2463444277ae6ecd80459f76",
10
+ "nonClaims": [
11
+ "browser-playback-success",
12
+ "responsive-layout",
13
+ "reduced-motion-behavior",
14
+ "production-site-deployment"
15
+ ],
16
+ "profile": {
17
+ "catalogRoot": "sha256:cf885ac31104a36aa051fb62f47dd79b68bd671f7dfeeb1a458ea7d0cbf0c479",
18
+ "id": "responsive-web-delivery-v1",
19
+ "mode": "web-delivery",
20
+ "profileRoot": "sha256:fdbda001970304af935f58af11ccfdb7c32ec466c9dd487cbb81ee1b19dc4556"
21
+ },
22
+ "qualificationRoot": "sha256:1c588662db5abcc6776a43b3210f43555161b55ddf8aa4aa4530371bc1d26ec8",
23
+ "renditions": [
24
+ {
25
+ "audioStreams": 0,
26
+ "bytes": 45632,
27
+ "container": "gif",
28
+ "dimensionPolicy": "exact-downscale-same-aspect",
29
+ "durationMs": 2500,
30
+ "frameRate": 12.5,
31
+ "height": 720,
32
+ "maximumBytes": 1048576,
33
+ "mimeType": "image/gif",
34
+ "path": "demo.gif",
35
+ "pixelFormat": "bgra",
36
+ "progressiveDownload": "not-applicable",
37
+ "role": "readme-compatibility",
38
+ "root": "sha256:92a73e4c384f4a1c563d1594d77ac114db0f969fefe033e4bd98fad62473478d",
39
+ "videoCodec": "gif",
40
+ "width": 1280
41
+ },
42
+ {
43
+ "audioStreams": 0,
44
+ "bytes": 30654,
45
+ "container": "mp4",
46
+ "dimensionPolicy": "scene-exact",
47
+ "durationMs": 2533,
48
+ "frameRate": 15,
49
+ "height": 1080,
50
+ "maximumBytes": 2097152,
51
+ "mimeType": "video/mp4",
52
+ "path": "demo.mp4",
53
+ "pixelFormat": "yuv420p",
54
+ "progressiveDownload": "moov-before-mdat",
55
+ "role": "primary-video",
56
+ "root": "sha256:1a5a7896781417973d0f2c0ad936c89701a2705e1eb2d2d3c45b8ab95665717e",
57
+ "videoCodec": "h264",
58
+ "width": 1920
59
+ },
60
+ {
61
+ "audioStreams": 0,
62
+ "bytes": 25420,
63
+ "container": "webm",
64
+ "dimensionPolicy": "scene-exact",
65
+ "durationMs": 2534,
66
+ "frameRate": 15,
67
+ "height": 1080,
68
+ "maximumBytes": 2097152,
69
+ "mimeType": "video/webm",
70
+ "path": "demo.webm",
71
+ "pixelFormat": "yuv420p",
72
+ "progressiveDownload": "not-applicable",
73
+ "role": "alternate-video",
74
+ "root": "sha256:f5b47da43d1f69dc66483933e3b3491215e686817eb787008cf026c20f543530",
75
+ "videoCodec": "vp9",
76
+ "width": 1920
77
+ },
78
+ {
79
+ "audioStreams": 0,
80
+ "bytes": 42679,
81
+ "container": "png",
82
+ "dimensionPolicy": "scene-exact",
83
+ "durationMs": 0,
84
+ "frameRate": 25,
85
+ "height": 1080,
86
+ "maximumBytes": 1048576,
87
+ "mimeType": "image/png",
88
+ "path": "poster.png",
89
+ "pixelFormat": "rgb24",
90
+ "progressiveDownload": "not-applicable",
91
+ "role": "evidence-poster",
92
+ "root": "sha256:cf53da4af2c1ddd5341db19fc1f3cf5f23164517c2fe962f546be2faf0f606b0",
93
+ "videoCodec": "png",
94
+ "width": 1920
95
+ },
96
+ {
97
+ "audioStreams": 0,
98
+ "bytes": 19252,
99
+ "container": "mp4",
100
+ "dimensionPolicy": "exact-downscale-same-aspect",
101
+ "durationMs": 2533,
102
+ "frameRate": 15,
103
+ "height": 720,
104
+ "maximumBytes": 2097152,
105
+ "mimeType": "video/mp4",
106
+ "path": "demo-720p.mp4",
107
+ "pixelFormat": "yuv420p",
108
+ "progressiveDownload": "moov-before-mdat",
109
+ "role": "responsive-primary-video",
110
+ "root": "sha256:7b397af86e2f9e8cdab1b5c669bc4b4475d9168508ecb938bab69979e0fcdeee",
111
+ "videoCodec": "h264",
112
+ "width": 1280
113
+ },
114
+ {
115
+ "audioStreams": 0,
116
+ "bytes": 16089,
117
+ "container": "webm",
118
+ "dimensionPolicy": "exact-downscale-same-aspect",
119
+ "durationMs": 2534,
120
+ "frameRate": 15,
121
+ "height": 720,
122
+ "maximumBytes": 2097152,
123
+ "mimeType": "video/webm",
124
+ "path": "demo-720p.webm",
125
+ "pixelFormat": "yuv420p",
126
+ "progressiveDownload": "not-applicable",
127
+ "role": "responsive-alternate-video",
128
+ "root": "sha256:d6b8ae4513e09092de330dcc3a1b916f0e64a7743b6cfc102ae1e7a09667cb1c",
129
+ "videoCodec": "vp9",
130
+ "width": 1280
131
+ }
132
+ ],
133
+ "schema": "buildchain.auditable-demo-media-qualification/v1"
134
+ },
135
+ "renderer": {
136
+ "image": "ghcr.io/kungfu-systems/build-images/demo-renderer@sha256:b70a2f5631665f685280bc9d7434c5ed5cf48b760b728873734d0c47bff72b25",
137
+ "sourceRef": "refs/tags/v1.3.0-alpha.20",
138
+ "sourceRepository": "kungfu-systems/build-images",
139
+ "sourceSha": "b3cebc2deb5f140af74db24b1b45233ac6733ef1"
140
+ },
141
+ "rendererManifestRoot": "sha256:7c4066cbcf4cd612869d160ddc0beca0e35237369cdca895ffda265b60a74993",
142
+ "schema": "buildchain.auditable-demo-media-profile-fixture/v1"
143
+ }
@@ -1,5 +1,5 @@
1
1
  {
2
- "evidenceRoot": "sha256:451adc20c423fbf680caeb14dcc4850990a3317dd5a77f94ee451a7a26edf3fb",
2
+ "evidenceRoot": "sha256:5a4fced32999b3007628dfaee32206b0f7512032e65fd57be455e59df2f5d877",
3
3
  "inputs": {
4
4
  "complete-transcript.txt": "sha256:f3723a3eda614134ab724ce9fbe1e0e5f916d809a8a3096f5e37c1458cb3656c",
5
5
  "public-projection.json": "sha256:127f9877f9750a85eada4338f088bee5460c5c71a83302652d3321667002c3c7",
@@ -14,17 +14,18 @@
14
14
  "production-site-deployment"
15
15
  ],
16
16
  "profile": {
17
- "catalogRoot": "sha256:b2cf52c7b087be73ea852bbbe574e1a50bb7d64d26b8bc211a2c7d53e2ff9cae",
17
+ "catalogRoot": "sha256:cf885ac31104a36aa051fb62f47dd79b68bd671f7dfeeb1a458ea7d0cbf0c479",
18
18
  "id": "web-delivery-v1",
19
19
  "mode": "web-delivery",
20
20
  "profileRoot": "sha256:b6fb0a83414d03a7222fc50429e60ed68b6d47758b86ceaa316ecc659a01ae2b"
21
21
  },
22
- "qualificationRoot": "sha256:f2133bab4a3a5937ec3863972049d0a7247a8e108681d4bd247f47d766c461ae",
22
+ "qualificationRoot": "sha256:a8509982ce43c133ef50bbb651bdba07b5b37bed06841ebb165f23b81e3b9fc1",
23
23
  "renditions": [
24
24
  {
25
25
  "audioStreams": 0,
26
26
  "bytes": 40826,
27
27
  "container": "gif",
28
+ "dimensionPolicy": "scene-exact",
28
29
  "durationMs": 2500,
29
30
  "frameRate": 12.5,
30
31
  "height": 720,
@@ -42,6 +43,7 @@
42
43
  "audioStreams": 0,
43
44
  "bytes": 27038,
44
45
  "container": "mp4",
46
+ "dimensionPolicy": "scene-exact",
45
47
  "durationMs": 2533,
46
48
  "frameRate": 15,
47
49
  "height": 720,
@@ -59,6 +61,7 @@
59
61
  "audioStreams": 0,
60
62
  "bytes": 23383,
61
63
  "container": "webm",
64
+ "dimensionPolicy": "scene-exact",
62
65
  "durationMs": 2534,
63
66
  "frameRate": 15,
64
67
  "height": 720,
@@ -76,6 +79,7 @@
76
79
  "audioStreams": 0,
77
80
  "bytes": 34769,
78
81
  "container": "png",
82
+ "dimensionPolicy": "scene-exact",
79
83
  "durationMs": 0,
80
84
  "frameRate": 25,
81
85
  "height": 720,
@@ -0,0 +1,2 @@
1
+ buildchain auditable demo responsive 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 responsive 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 responsive qualification fixture"
14
+ }
15
+ ]
16
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "schema": "build-images.demo-scene/v1",
3
+ "id": "buildchain-responsive-web-delivery-qualification",
4
+ "width": 1920,
5
+ "height": 1080,
6
+ "fps": 15,
7
+ "durationMs": 2500,
8
+ "title": "Buildchain responsive web delivery qualification",
9
+ "commandLabel": "buildchain qualify-media-fixture",
10
+ "background": "#0B1020",
11
+ "accent": "#67E8A5"
12
+ }