@kungfu-tech/buildchain 3.0.5-alpha.6 → 3.0.5-alpha.7

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 (37) hide show
  1. package/README.md +31 -0
  2. package/bin/buildchain.mjs +1 -1
  3. package/contracts/auditable-demo-media-profiles-v1.json +61 -0
  4. package/contracts/auditable-demo-scenario-v1.schema.json +153 -0
  5. package/contracts/evidence/auditable-demo-responsive-web-delivery-v1.json +3 -3
  6. package/contracts/evidence/auditable-demo-web-delivery-v1.json +3 -3
  7. package/dist/site/buildchain-contract.json +57 -6
  8. package/dist/site/buildchain-site.json +38 -22
  9. package/dist/site/capability-registry.json +1 -1
  10. package/dist/site/cli-registry.json +6 -2
  11. package/dist/site/kfd-claims.json +49 -9
  12. package/dist/site/kfd-upstream-aggregate.json +1 -1
  13. package/dist/site/manual-registry.json +3 -3
  14. package/dist/site/node-api-registry.json +203 -21
  15. package/dist/site/page-registry.json +28 -8
  16. package/dist/site/public-surface-audit.json +94 -6
  17. package/dist/site/publication-authority-registry.json +42 -1
  18. package/dist/site/publication-registry.json +4 -4
  19. package/dist/site/site-manifest.json +7 -7
  20. package/dist/site/workflow-registry.json +63 -0
  21. package/docs/auditable-demo.md +74 -7
  22. package/docs/cli-reference.md +24 -2
  23. package/docs/node-api-reference.md +63 -45
  24. package/package.json +1 -1
  25. package/packages/core/buildchain-contract.js +36 -1
  26. package/packages/core/buildchain-publication-authority.js +2 -0
  27. package/packages/core/release-propagation-pickup.js +386 -0
  28. package/packages/core/release-propagation-release.js +61 -18
  29. package/packages/core/release-propagation.js +12 -2
  30. package/scripts/auditable-demo-platform.mjs +506 -0
  31. package/scripts/auditable-demo-renditions.mjs +6 -1
  32. package/scripts/auditable-demo.mjs +14 -4
  33. package/scripts/build-standalone-binary.mjs +4 -0
  34. package/scripts/buildchain-cli-help.mjs +2 -1
  35. package/scripts/check-inventory.mjs +5 -0
  36. package/scripts/generate-site-bundle.mjs +2 -0
  37. package/scripts/release-propagation.mjs +77 -2
@@ -4,10 +4,10 @@
4
4
  "status": "passed",
5
5
  "summary": {
6
6
  "cliCommandCount": 112,
7
- "workflowCount": 57,
7
+ "workflowCount": 59,
8
8
  "actionCount": 6,
9
9
  "sitePageCount": 63,
10
- "docCommandRefCount": 813,
10
+ "docCommandRefCount": 822,
11
11
  "failureCount": 0
12
12
  },
13
13
  "enumerated": {
@@ -490,7 +490,7 @@
490
490
  {
491
491
  "id": "release-propagation",
492
492
  "source": "bin/buildchain.mjs",
493
- "usage": "buildchain release-propagation <plan|write-lock> ..."
493
+ "usage": "buildchain release-propagation <plan|write-lock|work|pickup> ..."
494
494
  },
495
495
  {
496
496
  "id": "release-transaction",
@@ -800,6 +800,38 @@
800
800
  "outputs": [],
801
801
  "outputCount": 0
802
802
  },
803
+ {
804
+ "id": ".declarative-auditable-demo",
805
+ "path": ".github/workflows/.declarative-auditable-demo.yml",
806
+ "reusable": true,
807
+ "inputs": [
808
+ "artifact-retention-days",
809
+ "binary-artifact-digest",
810
+ "binary-artifact-name",
811
+ "buildchain-repository",
812
+ "materialize",
813
+ "materialize-base-ref",
814
+ "media-profile",
815
+ "render-media",
816
+ "renderer-image",
817
+ "scenario-path",
818
+ "source-ref"
819
+ ],
820
+ "inputCount": 11,
821
+ "secrets": [
822
+ "DEMO_UPDATE_TOKEN"
823
+ ],
824
+ "secretCount": 1,
825
+ "outputs": [
826
+ "capture-artifact-digest",
827
+ "capture-artifact-name",
828
+ "evidence-artifact-digest",
829
+ "evidence-artifact-name",
830
+ "publication-pr-url",
831
+ "source-sha"
832
+ ],
833
+ "outputCount": 6
834
+ },
803
835
  {
804
836
  "id": ".gate-profile",
805
837
  "path": ".github/workflows/.gate-profile.yml",
@@ -1422,6 +1454,17 @@
1422
1454
  "outputs": [],
1423
1455
  "outputCount": 0
1424
1456
  },
1457
+ {
1458
+ "id": "auditable-demo",
1459
+ "path": ".github/workflows/auditable-demo.yml",
1460
+ "reusable": false,
1461
+ "inputs": [],
1462
+ "inputCount": 0,
1463
+ "secrets": [],
1464
+ "secretCount": 0,
1465
+ "outputs": [],
1466
+ "outputCount": 0
1467
+ },
1425
1468
  {
1426
1469
  "id": "binary-distribution",
1427
1470
  "path": ".github/workflows/binary-distribution.yml",
@@ -4033,6 +4076,11 @@
4033
4076
  "path": "docs/lifecycle-protocol.md",
4034
4077
  "command": "buildchain init --type infra-contract"
4035
4078
  },
4079
+ {
4080
+ "id": "init",
4081
+ "path": "README.md",
4082
+ "command": "buildchain init --cwd"
4083
+ },
4036
4084
  {
4037
4085
  "id": "init",
4038
4086
  "path": "README.md",
@@ -5293,6 +5341,11 @@
5293
5341
  "path": "docs/kfd-support.md",
5294
5342
  "command": "buildchain layout --cwd"
5295
5343
  },
5344
+ {
5345
+ "id": "layout",
5346
+ "path": "README.md",
5347
+ "command": "buildchain layout --cwd"
5348
+ },
5296
5349
  {
5297
5350
  "id": "lifecycle",
5298
5351
  "path": "docs/cli-reference.md",
@@ -6313,11 +6366,31 @@
6313
6366
  "path": "docs/cli-reference.md",
6314
6367
  "command": "buildchain release-propagation"
6315
6368
  },
6369
+ {
6370
+ "id": "release-propagation",
6371
+ "path": "docs/cli-reference.md",
6372
+ "command": "buildchain release-propagation"
6373
+ },
6374
+ {
6375
+ "id": "release-propagation",
6376
+ "path": "docs/cli-reference.md",
6377
+ "command": "buildchain release-propagation"
6378
+ },
6316
6379
  {
6317
6380
  "id": "release-propagation",
6318
6381
  "path": "docs/cli-reference.md",
6319
6382
  "command": "buildchain release-propagation --help"
6320
6383
  },
6384
+ {
6385
+ "id": "release-propagation",
6386
+ "path": "docs/cli-reference.md",
6387
+ "command": "buildchain release-propagation pickup"
6388
+ },
6389
+ {
6390
+ "id": "release-propagation",
6391
+ "path": "docs/cli-reference.md",
6392
+ "command": "buildchain release-propagation pickup --help"
6393
+ },
6321
6394
  {
6322
6395
  "id": "release-propagation",
6323
6396
  "path": "docs/cli-reference.md",
@@ -6328,6 +6401,16 @@
6328
6401
  "path": "docs/cli-reference.md",
6329
6402
  "command": "buildchain release-propagation plan --help"
6330
6403
  },
6404
+ {
6405
+ "id": "release-propagation",
6406
+ "path": "docs/cli-reference.md",
6407
+ "command": "buildchain release-propagation work"
6408
+ },
6409
+ {
6410
+ "id": "release-propagation",
6411
+ "path": "docs/cli-reference.md",
6412
+ "command": "buildchain release-propagation work --help"
6413
+ },
6331
6414
  {
6332
6415
  "id": "release-propagation",
6333
6416
  "path": "docs/cli-reference.md",
@@ -6998,6 +7081,11 @@
6998
7081
  "path": "docs/install.md",
6999
7082
  "command": "buildchain version npx buildchain"
7000
7083
  },
7084
+ {
7085
+ "id": "version",
7086
+ "path": "README.md",
7087
+ "command": "buildchain version"
7088
+ },
7001
7089
  {
7002
7090
  "id": "version",
7003
7091
  "path": "README.md",
@@ -7029,9 +7117,9 @@
7029
7117
  "cliRegistryPath": "dist/site/cli-registry.json",
7030
7118
  "workflowRegistryPath": "dist/site/workflow-registry.json",
7031
7119
  "pageRegistryPath": "dist/site/page-registry.json",
7032
- "cliRegistryDigest": "0db010925d1c60209c3dac8bc2797537f307ab21bc68084263e79004c5c16ff7",
7033
- "workflowRegistryDigest": "4f1b9a933e117abc5fc4212241c83a35609f23477dac98d6cd37c4b40b57ba29",
7034
- "pageRegistryDigest": "1f715d11aca1124de121006046c07387d8d3d6b14fb868f8542626195285ec24"
7120
+ "cliRegistryDigest": "c070e7bff9d1cb65a08daacd936f3567871af7844e88fa6ffcb05ea59579c15f",
7121
+ "workflowRegistryDigest": "dff218a0f6f03602912c4f2e238cc79a1304ee2d0f6d1e3f3bae8514302f4706",
7122
+ "pageRegistryDigest": "1270adac7acf01d2d1467feed70432c0d61c581925cad4af503b7db98c224d3f"
7035
7123
  },
7036
7124
  "comparison": {
7037
7125
  "missingCliRegistry": [],
@@ -44,6 +44,19 @@
44
44
  "runnerPolicy": "unqualified",
45
45
  "notes": ""
46
46
  },
47
+ {
48
+ "workflowPath": ".github/workflows/.declarative-auditable-demo.yml",
49
+ "authorityClass": "governance-write",
50
+ "publicationCapable": false,
51
+ "capabilityIds": [],
52
+ "credentialMode": "none",
53
+ "publisherWorkflowMode": "fixed",
54
+ "publisherWorkflowPath": ".github/workflows/.declarative-auditable-demo.yml",
55
+ "environment": "",
56
+ "environmentMode": "fixed",
57
+ "runnerPolicy": "unqualified",
58
+ "notes": ""
59
+ },
47
60
  {
48
61
  "workflowPath": ".github/workflows/.publication-authority.yml",
49
62
  "authorityClass": "evidence-publication",
@@ -180,6 +193,19 @@
180
193
  "runnerPolicy": "unqualified",
181
194
  "notes": ""
182
195
  },
196
+ {
197
+ "workflowPath": ".github/workflows/auditable-demo.yml",
198
+ "authorityClass": "governance-write",
199
+ "publicationCapable": false,
200
+ "capabilityIds": [],
201
+ "credentialMode": "none",
202
+ "publisherWorkflowMode": "fixed",
203
+ "publisherWorkflowPath": ".github/workflows/auditable-demo.yml",
204
+ "environment": "",
205
+ "environmentMode": "fixed",
206
+ "runnerPolicy": "unqualified",
207
+ "notes": ""
208
+ },
183
209
  {
184
210
  "workflowPath": ".github/workflows/binary-distribution.yml",
185
211
  "authorityClass": "evidence-publication",
@@ -602,6 +628,14 @@
602
628
  "signals": [],
603
629
  "classified": false
604
630
  },
631
+ {
632
+ "path": ".github/workflows/.declarative-auditable-demo.yml",
633
+ "signals": [
634
+ "write-permission",
635
+ "git-push"
636
+ ],
637
+ "classified": true
638
+ },
605
639
  {
606
640
  "path": ".github/workflows/.gate-profile.yml",
607
641
  "signals": [],
@@ -702,6 +736,13 @@
702
736
  "signals": [],
703
737
  "classified": false
704
738
  },
739
+ {
740
+ "path": ".github/workflows/auditable-demo.yml",
741
+ "signals": [
742
+ "write-permission"
743
+ ],
744
+ "classified": true
745
+ },
705
746
  {
706
747
  "path": ".github/workflows/binary-distribution.yml",
707
748
  "signals": [
@@ -958,5 +999,5 @@
958
999
  "classified": false
959
1000
  }
960
1001
  ],
961
- "registryDigest": "0f4705fb7b2afcb72e9136dac44eac7fc47d9440330aa3c72a8ae8bd8f3339c3"
1002
+ "registryDigest": "c4574eaddd6cecd08c24e9125a2767f3126e8fbae894ed71d24cd5cc16e2443b"
962
1003
  }
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "contract": "kungfu-buildchain-publication-release-registry",
4
- "generatedAt": "2026-08-02T08:34:45.723Z",
5
- "publishedAt": "2026-08-02T08:34:45.723Z",
4
+ "generatedAt": "2026-08-02T13:42:28.157Z",
5
+ "publishedAt": "2026-08-02T13:42:28.157Z",
6
6
  "reproducible": true,
7
7
  "timestampPolicy": "ci-injected",
8
8
  "deterministicInputs": [
@@ -19,7 +19,7 @@
19
19
  "declared Buildchain surface manifest contract"
20
20
  ],
21
21
  "sourceDateEpoch": "0",
22
- "sourceRevision": "2b5880a79f169f4a64b193a06a47b990d6585e16",
22
+ "sourceRevision": "b5a8cb26691966378ee01f12e83d362fded9e47c",
23
23
  "timestampPolicyDetails": {
24
24
  "contract": "kungfu-buildchain-surface-timestamp-policy",
25
25
  "timestampFields": [
@@ -32,7 +32,7 @@
32
32
  },
33
33
  "package": {
34
34
  "name": "@kungfu-tech/buildchain",
35
- "version": "3.0.5-alpha.6",
35
+ "version": "3.0.5-alpha.7",
36
36
  "versionSource": "package.json#version"
37
37
  },
38
38
  "sourceKind": "package-site-bundle",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "contract": "kungfu-buildchain-site-manifest",
4
- "generatedAt": "2026-08-02T08:34:45.723Z",
5
- "publishedAt": "2026-08-02T08:34:45.723Z",
4
+ "generatedAt": "2026-08-02T13:42:28.157Z",
5
+ "publishedAt": "2026-08-02T13:42:28.157Z",
6
6
  "reproducible": true,
7
7
  "timestampPolicy": "ci-injected",
8
8
  "deterministicInputs": [
@@ -19,7 +19,7 @@
19
19
  "declared Buildchain surface manifest contract"
20
20
  ],
21
21
  "sourceDateEpoch": "0",
22
- "sourceRevision": "2b5880a79f169f4a64b193a06a47b990d6585e16",
22
+ "sourceRevision": "b5a8cb26691966378ee01f12e83d362fded9e47c",
23
23
  "timestampPolicyDetails": {
24
24
  "contract": "kungfu-buildchain-surface-timestamp-policy",
25
25
  "timestampFields": [
@@ -37,7 +37,7 @@
37
37
  },
38
38
  "package": {
39
39
  "name": "@kungfu-tech/buildchain",
40
- "version": "3.0.5-alpha.6",
40
+ "version": "3.0.5-alpha.7",
41
41
  "versionSource": "package.json#version"
42
42
  },
43
43
  "entrypoint": "buildchain-site.json",
@@ -69,7 +69,7 @@
69
69
  "path": "docs/auditable-demo.md",
70
70
  "plane": "verify",
71
71
  "exists": true,
72
- "digest": "sha256:4d32c82b652decfbb26b441c203fe34e70daa86022bb4baed9da02a5d6cf5831"
72
+ "digest": "sha256:a99175216b3774748b253814c1933683cace8107a34083dd711f639f3e680c61"
73
73
  },
74
74
  {
75
75
  "id": "install",
@@ -229,7 +229,7 @@
229
229
  "path": "docs/cli-reference.md",
230
230
  "plane": "use",
231
231
  "exists": true,
232
- "digest": "sha256:c728fe693ab591ab5b52f4276a817ec5a013c79833f0d20ca2cc137e85ae51ca"
232
+ "digest": "sha256:94207fa353e87b087ecf53b6cebe6dfffdc1311b2b6bc90b511d83d5757e7827"
233
233
  },
234
234
  {
235
235
  "id": "node-api-reference",
@@ -237,7 +237,7 @@
237
237
  "path": "docs/node-api-reference.md",
238
238
  "plane": "use",
239
239
  "exists": true,
240
- "digest": "sha256:470b65c96353a9f3fac0db7b67bba34058e03bfa7e1a8fc6bec0d6d9f13aa6c4"
240
+ "digest": "sha256:c67e43ac62b7771c997c089da1541e573b7bb3202bdef01816a782b876e403c3"
241
241
  },
242
242
  {
243
243
  "id": "build-facts",
@@ -269,6 +269,48 @@
269
269
  "sunsetCondition": "explicit-breaking-change-review-in-a-future-major-line",
270
270
  "nonDuplicationRationale": "Existing workflow identity retained for caller compatibility and repository orchestration."
271
271
  },
272
+ {
273
+ "id": ".declarative-auditable-demo",
274
+ "path": ".github/workflows/.declarative-auditable-demo.yml",
275
+ "reusable": true,
276
+ "inputs": [
277
+ "artifact-retention-days",
278
+ "binary-artifact-digest",
279
+ "binary-artifact-name",
280
+ "buildchain-repository",
281
+ "materialize",
282
+ "materialize-base-ref",
283
+ "media-profile",
284
+ "render-media",
285
+ "renderer-image",
286
+ "scenario-path",
287
+ "source-ref"
288
+ ],
289
+ "inputCount": 11,
290
+ "secrets": [
291
+ "DEMO_UPDATE_TOKEN"
292
+ ],
293
+ "secretCount": 1,
294
+ "outputs": [
295
+ "capture-artifact-digest",
296
+ "capture-artifact-name",
297
+ "evidence-artifact-digest",
298
+ "evidence-artifact-name",
299
+ "publication-pr-url",
300
+ "source-sha"
301
+ ],
302
+ "outputCount": 6,
303
+ "surface": "declarative-auditable-demo",
304
+ "capabilityGroup": "api-cli-reference",
305
+ "status": "preview",
306
+ "owner": "buildchain-workflows",
307
+ "maturity": "preview",
308
+ "introducedVersion": "pre-3.0.2-alpha.4",
309
+ "compatibilityPromise": "preserved-through-the-v3-major-line",
310
+ "deprecationReplacement": "",
311
+ "sunsetCondition": "explicit-breaking-change-review-in-a-future-major-line",
312
+ "nonDuplicationRationale": "Existing workflow identity retained for caller compatibility and repository orchestration."
313
+ },
272
314
  {
273
315
  "id": ".gate-profile",
274
316
  "path": ".github/workflows/.gate-profile.yml",
@@ -1051,6 +1093,27 @@
1051
1093
  "sunsetCondition": "explicit-breaking-change-review-in-a-future-major-line",
1052
1094
  "nonDuplicationRationale": "Existing workflow identity retained for caller compatibility and repository orchestration."
1053
1095
  },
1096
+ {
1097
+ "id": "auditable-demo",
1098
+ "path": ".github/workflows/auditable-demo.yml",
1099
+ "reusable": false,
1100
+ "inputs": [],
1101
+ "inputCount": 0,
1102
+ "secrets": [],
1103
+ "secretCount": 0,
1104
+ "outputs": [],
1105
+ "outputCount": 0,
1106
+ "surface": "repository-workflow",
1107
+ "capabilityGroup": "api-cli-reference",
1108
+ "status": "active",
1109
+ "owner": "buildchain-workflows",
1110
+ "maturity": "active",
1111
+ "introducedVersion": "pre-3.0.2-alpha.4",
1112
+ "compatibilityPromise": "preserved-through-the-v3-major-line",
1113
+ "deprecationReplacement": "",
1114
+ "sunsetCondition": "explicit-breaking-change-review-in-a-future-major-line",
1115
+ "nonDuplicationRationale": "Existing workflow identity retained for caller compatibility and repository orchestration."
1116
+ },
1054
1117
  {
1055
1118
  "id": "binary-distribution",
1056
1119
  "path": ".github/workflows/binary-distribution.yml",
@@ -8,11 +8,11 @@ confidence: high
8
8
  sensitivity: public
9
9
  evidence_grade: A
10
10
  review_state: self-reviewed
11
- last_reviewed: 2026-07-31
11
+ last_reviewed: 2026-08-02
12
12
  ai_provenance:
13
13
  model_family: GPT-5
14
14
  product: Codex
15
- generated_at: 2026-07-31
15
+ generated_at: 2026-08-02
16
16
  invisible_context_boundary: No hidden model build, parameter count, or private corpus is asserted.
17
17
  ---
18
18
 
@@ -30,6 +30,68 @@ The public reusable workflow is
30
30
  does not know how a Kungfu, library, service, or application artifact should be
31
31
  interpreted. The consumer owns a small checked-in executable adapter.
32
32
 
33
+ For standalone binary CLIs, the higher-level first-class surface is
34
+ `.github/workflows/.declarative-auditable-demo.yml`. A consumer checks in only
35
+ `.buildchain/auditable-demo.json`, builds and uploads its exact same-run binary
36
+ plus metadata, and passes the producer-owned artifact name and digest to that
37
+ workflow. Buildchain then owns capture, Gate adaptation, independent native
38
+ 1080p and 720p rendering, Release Passport construction, content-addressed
39
+ materialization, and the protected README update pull request. No
40
+ product-specific capture, adapter, passport, or materializer is required.
41
+
42
+ ## Declarative Standalone Binary Scenarios
43
+
44
+ The schema is `contracts/auditable-demo-scenario-v1.schema.json`. One scenario
45
+ can declare up to eight demos, and each demo can contain up to twelve ordered
46
+ literal argv steps. Steps in one demo share a disposable workspace; separate
47
+ demos and the two rendition captures do not. Commands are never accepted as a
48
+ shell string. An omitted or explicit `standard` duration class remains bounded
49
+ to 60 seconds. A reviewed `execution.durationClass: long-form` declaration may
50
+ raise the scenario and literal step ceilings to 180 seconds; it does not change
51
+ the default. Both classes retain 4 MiB per step, a clean Home/XDG environment,
52
+ no inherited credentials, and a network-disabled read-only container with
53
+ bounded tmpfs.
54
+
55
+ The uploaded metadata must bind the executable SHA-256 and declare an empty
56
+ runtime dependency set. Capture rejects an artifact name or upload digest that
57
+ does not resolve to exactly one live artifact from the current workflow run.
58
+ It retains ANSI terminal bytes with the real PTY read timestamps, verifies
59
+ declared stdout and JSON file facts, enforces the total deadline while a step is
60
+ running, and removes the disposable workspace before emitting evidence.
61
+
62
+ Both manual validation and alpha or release refreshes call the same reusable
63
+ workflow. Manual callers select Gate-only or full rendering and can explicitly
64
+ request a materialization PR. Release callers select full rendering and the
65
+ same materializer automatically; there is no separate release-only recording
66
+ implementation. Publication requires a dedicated update token and target
67
+ branch. The token is an explicit bounded capability, while actor identity,
68
+ first-party/System classification, KFD compliance, Product System metadata,
69
+ package metadata, registry history, scans, and generated evidence grant no
70
+ authority.
71
+
72
+ ```yaml
73
+ jobs:
74
+ demo:
75
+ needs: exact-binary
76
+ uses: kungfu-systems/buildchain/.github/workflows/.declarative-auditable-demo.yml@BUILDCHAIN_EXACT_SHA
77
+ with:
78
+ source-ref: ${{ github.sha }}
79
+ binary-artifact-name: ${{ needs.exact-binary.outputs.artifact-name }}
80
+ binary-artifact-digest: ${{ needs.exact-binary.outputs.artifact-digest }}
81
+ scenario-path: .buildchain/auditable-demo.json
82
+ renderer-image: ghcr.io/kungfu-systems/build-images/demo-renderer@sha256:RENDERER_DIGEST
83
+ render-media: true
84
+ media-profile: responsive-web-delivery-v1
85
+ materialize: true
86
+ materialize-base-ref: dev/v1/v1.0
87
+ secrets:
88
+ DEMO_UPDATE_TOKEN: ${{ secrets.DEMO_UPDATE_TOKEN }}
89
+ ```
90
+
91
+ Buildchain recursively consumes this surface in
92
+ `.github/workflows/auditable-demo.yml` using its own exact standalone binary
93
+ and the beginner bootstrap scenario in `.buildchain/auditable-demo.json`.
94
+
33
95
  ## Authority Boundary
34
96
 
35
97
  The retained build output is authoritative. The adapter reads that exact
@@ -42,9 +104,10 @@ scene.json
42
104
  ```
43
105
 
44
106
  It may additionally emit one declared `terminal-capture.json` using
45
- `kungfu.terminal-capture/v1`. The optional capture is bounded to 60 seconds,
107
+ `kungfu.terminal-capture/v1`. The optional capture is bounded to 60 seconds by
108
+ default or 180 seconds only when its scene explicitly declares `long-form`,
46
109
  fixed 80-200 by 24-80 terminal cells, 10,000 events, and 4 MiB of canonical
47
- base64 bytes. It must contain a passed completion sentinel and an explicitly
110
+ base64 bytes. It must contain a qualified completion sentinel and an explicitly
48
111
  empty authority-grant list. Existing three-file adapters remain valid.
49
112
 
50
113
  The completion sentinel names a consumer-owned versioned schema, the exact
@@ -151,6 +214,7 @@ shell fragments, arbitrary profile paths, or transcoding instructions.
151
214
  | `archive-v1` | Default compatibility contract. Retains the exact renderer outputs and classifies GIF as README compatibility evidence without making a browser-delivery claim. |
152
215
  | `web-delivery-v1` | Independently qualifies H.264 MP4 and VP9 WebM playback sources, forbids audio, requires exact scene dimensions and bounded duration/frame-rate drift, checks per-rendition byte ceilings, and proves MP4 `moov` precedes `mdat`. PNG remains the lossless evidence poster. |
153
216
  | `responsive-web-delivery-v1` | Extends `web-delivery-v1` with exact 1280x720 H.264 MP4 and VP9 WebM responsive sources plus a 1280x720 README GIF while keeping the primary MP4/WebM and evidence poster at the source scene dimensions. Every declared downscale must preserve the scene aspect ratio and may never upscale. |
217
+ | `responsive-long-form-web-delivery-v1` | Extends the responsive profile for explicitly admitted long-form scenes. Its measured-baseline multipliers raise only the GIF ceiling to 8 MiB and the four video ceilings to 4 MiB; all codec, native-resolution, no-audio, duration, and authority checks remain unchanged. |
154
218
  | `site-hero-v1` | Extends `web-delivery-v1` and additionally requires a qualified WebP browser poster. The current Build Images v1 renderer does not emit that member, so selecting this profile fails closed until the producer adds it. |
155
219
 
156
220
  For web-delivery profiles, Buildchain runs its own fixed `ffprobe` invocation
@@ -185,8 +249,10 @@ Initial byte ceilings are derived from the checked-in
185
249
  `auditable-demo-web-delivery-v1` fixture rendered by Build Images
186
250
  `v1.3.0-alpha.16` at its exact source SHA and image digest. GIF, MP4, WebM, and
187
251
  PNG ceilings are the next power of two above sixteen times the measured member
188
- bytes. The not-yet-produced WebP poster uses eight times the measured lossless
189
- PNG as its conservative proxy. The path-scoped qualification workflow
252
+ bytes. The explicit responsive long-form profile derives its 4 MiB video and
253
+ 8 MiB GIF ceilings from the same observed bytes at a bounded 128-times
254
+ multiplier; it does not change another profile. The not-yet-produced WebP poster
255
+ uses eight times the measured lossless PNG as its conservative proxy. The path-scoped qualification workflow
190
256
  regenerates the content-addressed evidence and fails on any byte or fact drift.
191
257
  Its matrix retains the original 1280x720 web-delivery baseline on the renderer
192
258
  that produced it and separately measures the responsive profile against a
@@ -242,7 +308,8 @@ build should always call the reusable workflow. Selection policy changes only
242
308
 
243
309
  Use `web-delivery-v1` only when the rendered bundle is intended to become a
244
310
  qualified web-delivery source. Use `site-hero-v1` when an optimized browser
245
- poster is also required. Profile qualification does not prove browser playback,
311
+ poster is also required. Select `responsive-long-form-web-delivery-v1` only
312
+ with an explicit long-form scenario. Profile qualification does not prove browser playback,
246
313
  responsive layout, reduced-motion behavior, accessibility, or production
247
314
  deployment; those remain site responsibilities.
248
315
 
@@ -1668,6 +1668,17 @@ buildchain release-governance reconcile --repository <owner/repo> --branch <dev|
1668
1668
  buildchain release-propagation
1669
1669
  ```
1670
1670
 
1671
+ ### `buildchain release-propagation pickup`
1672
+
1673
+ - Help: `buildchain release-propagation pickup --help`
1674
+ - Canonical id: `release-propagation`
1675
+ - Options: none declared
1676
+ - Syntax:
1677
+
1678
+ ```text
1679
+ buildchain release-propagation <plan|write-lock|work|pickup> ...
1680
+ ```
1681
+
1671
1682
  ### `buildchain release-propagation plan`
1672
1683
 
1673
1684
  - Help: `buildchain release-propagation plan --help`
@@ -1676,7 +1687,18 @@ buildchain release-propagation
1676
1687
  - Syntax:
1677
1688
 
1678
1689
  ```text
1679
- buildchain release-propagation <plan|write-lock> ...
1690
+ buildchain release-propagation <plan|write-lock|work|pickup> ...
1691
+ ```
1692
+
1693
+ ### `buildchain release-propagation work`
1694
+
1695
+ - Help: `buildchain release-propagation work --help`
1696
+ - Canonical id: `release-propagation`
1697
+ - Options: none declared
1698
+ - Syntax:
1699
+
1700
+ ```text
1701
+ buildchain release-propagation <plan|write-lock|work|pickup> ...
1680
1702
  ```
1681
1703
 
1682
1704
  ### `buildchain release-propagation write-lock`
@@ -1687,7 +1709,7 @@ buildchain release-propagation <plan|write-lock> ...
1687
1709
  - Syntax:
1688
1710
 
1689
1711
  ```text
1690
- buildchain release-propagation <plan|write-lock> ...
1712
+ buildchain release-propagation <plan|write-lock|work|pickup> ...
1691
1713
  ```
1692
1714
 
1693
1715
  ## `sample`