@kungfu-tech/buildchain 3.0.6 → 3.0.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 (103) hide show
  1. package/README.md +4 -2
  2. package/actions/promote-buildchain-ref/README.md +10 -0
  3. package/actions/release-tail/README.md +17 -0
  4. package/bin/buildchain.mjs +11 -0
  5. package/bin/internal/command-registry.mjs +2 -0
  6. package/contracts/auditable-demo-scenario-v1.schema.json +1 -1
  7. package/contracts/engineering-housekeeper-v1.schema.json +143 -0
  8. package/contracts/fixtures/engineering-housekeeper-v1/cases.json +68 -0
  9. package/contracts/fixtures/release-tail-capabilities-v1/kungfu-alpha.json +273 -0
  10. package/contracts/publication-rehearsal-capsule-v1.schema.json +173 -0
  11. package/contracts/release-tail-capabilities-v1.schema.json +199 -0
  12. package/contracts/release-tail-provider-bindings-v1.schema.json +56 -0
  13. package/dist/site/agent-index.json +3 -0
  14. package/dist/site/artifact-schemas.json +6 -0
  15. package/dist/site/buildchain-contract.json +42 -27
  16. package/dist/site/buildchain-site.json +384 -33
  17. package/dist/site/capability-registry.json +15 -12
  18. package/dist/site/cli-registry.json +102 -0
  19. package/dist/site/controller-registry.json +19 -3
  20. package/dist/site/kfd-claims.json +359 -17
  21. package/dist/site/kfd-upstream-aggregate.json +1 -1
  22. package/dist/site/manual-registry.json +53 -7
  23. package/dist/site/node-api-registry.json +5882 -3605
  24. package/dist/site/page-registry.json +348 -21
  25. package/dist/site/public-surface-audit.json +396 -16
  26. package/dist/site/publication-authority-registry.json +106 -1
  27. package/dist/site/publication-registry.json +4 -4
  28. package/dist/site/release-provenance.json +7 -0
  29. package/dist/site/schemas/publication-rehearsal-capsule-v1.schema.json +269 -0
  30. package/dist/site/schemas/release-tail-capabilities-v1.schema.json +353 -0
  31. package/dist/site/schemas/release-tail-provider-bindings-v1.schema.json +94 -0
  32. package/dist/site/site-manifest.json +35 -11
  33. package/dist/site/workflow-registry.json +204 -10
  34. package/docs/MAP.md +6 -2
  35. package/docs/auditable-demo.md +2 -2
  36. package/docs/cli-reference.md +136 -0
  37. package/docs/dev-delivery-warrant.md +49 -4
  38. package/docs/engineering-housekeeper.md +138 -0
  39. package/docs/lifecycle-protocol.md +4 -2
  40. package/docs/node-api-reference.md +495 -281
  41. package/docs/publication-rehearsal.md +94 -0
  42. package/docs/release-governance.md +17 -2
  43. package/docs/release-tail-contract.md +160 -0
  44. package/docs/release-tail-provider-plane.md +120 -0
  45. package/docs/reusable-build-surface.md +11 -0
  46. package/package.json +11 -3
  47. package/packages/core/artifact-signing.js +61 -0
  48. package/packages/core/buildchain-agent-manuals.js +3 -0
  49. package/packages/core/buildchain-config.js +66 -6
  50. package/packages/core/buildchain-kfd-claims.js +1 -1
  51. package/packages/core/buildchain-publication-authority.js +5 -0
  52. package/packages/core/controller-evidence.js +2 -1
  53. package/packages/core/dev-delivery-warrant-cancellation.js +1 -0
  54. package/packages/core/dev-delivery-warrant-shadow.js +502 -0
  55. package/packages/core/dev-delivery-warrant.js +15 -6
  56. package/packages/core/diagnostics.js +8 -3
  57. package/packages/core/engineering-housekeeper-github-client.js +222 -0
  58. package/packages/core/engineering-housekeeper-github.js +501 -0
  59. package/packages/core/engineering-housekeeper.js +259 -0
  60. package/packages/core/index.js +42 -0
  61. package/packages/core/kfd-gate.js +45 -15
  62. package/packages/core/paper-agent-entry.js +11 -5
  63. package/packages/core/paper-repository.js +1 -0
  64. package/packages/core/paper-scaffold-content.js +21 -0
  65. package/packages/core/paper.js +28 -2
  66. package/packages/core/publication-rehearsal-projection.js +173 -0
  67. package/packages/core/publication-rehearsal-runtime.js +921 -0
  68. package/packages/core/release-passport.js +130 -20
  69. package/packages/core/release-tail-compatibility.js +60 -0
  70. package/packages/core/release-tail-provider-adapters.js +461 -0
  71. package/packages/core/release-tail-provider-plane.js +1228 -0
  72. package/scripts/assemble-publication-artifact-admission.mjs +1 -1
  73. package/scripts/assemble-self-publication-admission.mjs +2 -2
  74. package/scripts/audit-publication-control-plane.mjs +1 -1
  75. package/scripts/auditable-demo-bundle-verification.mjs +2 -3
  76. package/scripts/auditable-demo-platform.mjs +2 -2
  77. package/scripts/auditable-demo-renditions.mjs +1 -1
  78. package/scripts/auditable-demo.mjs +2 -2
  79. package/scripts/build-contract-core.mjs +8 -3
  80. package/scripts/build-standalone-binary.mjs +14 -3
  81. package/scripts/buildchain-cli-help.mjs +13 -0
  82. package/scripts/check-core-mechanism-inventory.mjs +347 -0
  83. package/scripts/check-inventory.mjs +10 -8
  84. package/scripts/check-maintainability.mjs +9 -2
  85. package/scripts/check-release-tail-contract.mjs +435 -0
  86. package/scripts/dev-delivery-warrant.mjs +31 -4
  87. package/scripts/dev-pr-auto-merge.mjs +30 -4
  88. package/scripts/dev-pr-delivery-warrant.mjs +50 -0
  89. package/scripts/engineering-housekeeper-workflow.mjs +394 -0
  90. package/scripts/generate-channel-promotion-workflow.mjs +10 -8
  91. package/scripts/generate-site-bundle.mjs +47 -4
  92. package/scripts/init-repo.mjs +26 -2
  93. package/scripts/inspect-artifact-signing-requests.mjs +6 -0
  94. package/scripts/materialize-self-release-candidate-version.mjs +137 -0
  95. package/scripts/publication-commit-evidence.mjs +69 -23
  96. package/scripts/release-candidate-resolver.mjs +16 -10
  97. package/scripts/release-tail.mjs +159 -0
  98. package/scripts/resume-from-candidate-run.mjs +123 -9
  99. package/scripts/seal-artifact-signing-requests.mjs +6 -0
  100. package/scripts/site-capability-metadata.mjs +13 -0
  101. package/scripts/v4-architecture.mjs +600 -0
  102. package/scripts/web-surface-core.mjs +8 -2
  103. package/scripts/workflow-call-contract.mjs +184 -5
@@ -467,6 +467,7 @@
467
467
  "buildchain-ref",
468
468
  "buildchain-repository",
469
469
  "channel",
470
+ "declarative-release-tail",
470
471
  "dry-run",
471
472
  "github-artifact-attestation-environment",
472
473
  "github-artifact-attestation-policy-json",
@@ -489,12 +490,14 @@
489
490
  "promotion-shell-sha",
490
491
  "promotion-target-ref",
491
492
  "publication-admission-json",
493
+ "publication-authority-workflow-path",
492
494
  "publication-auto-admission",
493
495
  "publication-auto-no-gate",
494
496
  "publication-commit-command",
495
497
  "publication-commit-evidence-path",
496
498
  "publication-consumer-predicate-id",
497
499
  "publication-consumer-qualification-command",
500
+ "publication-consumer-qualification-controller-sha",
498
501
  "publication-control-plane-audit-json",
499
502
  "publication-expected-json",
500
503
  "publication-gate-aggregate-json",
@@ -563,7 +566,7 @@
563
566
  "target-sha",
564
567
  "trusted-publishing"
565
568
  ],
566
- "inputCount": 107,
569
+ "inputCount": 110,
567
570
  "secrets": [
568
571
  "BUILDCHAIN_ISSUE_APP_ID",
569
572
  "BUILDCHAIN_ISSUE_APP_PRIVATE_KEY",
@@ -600,9 +603,14 @@
600
603
  "release-candidate-artifact",
601
604
  "release-candidate-recovery-receipt-artifact",
602
605
  "release-candidate-recovery-root",
603
- "release-propagation-work-artifact"
604
- ],
605
- "outputCount": 23,
606
+ "release-propagation-work-artifact",
607
+ "release-tail-declaration-root",
608
+ "release-tail-receipt-roots-json",
609
+ "release-tail-state-root",
610
+ "release-tail-transaction-root",
611
+ "release-tail-transaction-state"
612
+ ],
613
+ "outputCount": 28,
606
614
  "surface": "reusable-workflow",
607
615
  "capabilityGroup": "api-cli-reference",
608
616
  "status": "active",
@@ -1819,6 +1827,7 @@
1819
1827
  "path": ".github/workflows/dev-pr-auto-merge.yml",
1820
1828
  "reusable": true,
1821
1829
  "inputs": [
1830
+ "active-lease-context",
1822
1831
  "affected-paths-json",
1823
1832
  "allowed-head-prefixes",
1824
1833
  "assignment-root",
@@ -1834,6 +1843,7 @@
1834
1843
  "dry-run",
1835
1844
  "expected-head-sha",
1836
1845
  "expected-pr-number",
1846
+ "handoff-workflow-id",
1837
1847
  "initiative-root",
1838
1848
  "landing-mode",
1839
1849
  "max-merges",
@@ -1848,11 +1858,13 @@
1848
1858
  "shard-evidence-roots-json",
1849
1859
  "source-identity-root",
1850
1860
  "source-patch-root",
1861
+ "source-workflow-id",
1862
+ "source-workflow-run-id",
1851
1863
  "target-branch",
1852
1864
  "toolchain-root",
1853
1865
  "warrant-lease-seconds"
1854
1866
  ],
1855
- "inputCount": 32,
1867
+ "inputCount": 36,
1856
1868
  "secrets": [
1857
1869
  "github-token"
1858
1870
  ],
@@ -1926,6 +1938,118 @@
1926
1938
  "sunsetCondition": "explicit-breaking-change-review-in-a-future-major-line",
1927
1939
  "nonDuplicationRationale": "Existing workflow identity retained for caller compatibility and repository orchestration."
1928
1940
  },
1941
+ {
1942
+ "id": "engineering-housekeeper-daily",
1943
+ "path": ".github/workflows/engineering-housekeeper-daily.yml",
1944
+ "reusable": false,
1945
+ "inputs": [],
1946
+ "inputCount": 0,
1947
+ "secrets": [],
1948
+ "secretCount": 0,
1949
+ "outputs": [],
1950
+ "outputCount": 0,
1951
+ "surface": "repository-patrol",
1952
+ "capabilityGroup": "governance-versioning",
1953
+ "status": "preview",
1954
+ "owner": "buildchain-workflows",
1955
+ "maturity": "preview",
1956
+ "introducedVersion": "3.0.7-alpha.1",
1957
+ "compatibilityPromise": "preserved-through-the-v3-major-line",
1958
+ "deprecationReplacement": "",
1959
+ "sunsetCondition": "explicit-breaking-change-review-in-a-future-major-line",
1960
+ "nonDuplicationRationale": "One reusable policy and evidence boundary owns Engineering Housekeeper execution; scheduled callers contain cadence values only."
1961
+ },
1962
+ {
1963
+ "id": "engineering-housekeeper-monthly",
1964
+ "path": ".github/workflows/engineering-housekeeper-monthly.yml",
1965
+ "reusable": false,
1966
+ "inputs": [],
1967
+ "inputCount": 0,
1968
+ "secrets": [],
1969
+ "secretCount": 0,
1970
+ "outputs": [],
1971
+ "outputCount": 0,
1972
+ "surface": "repository-patrol",
1973
+ "capabilityGroup": "governance-versioning",
1974
+ "status": "preview",
1975
+ "owner": "buildchain-workflows",
1976
+ "maturity": "preview",
1977
+ "introducedVersion": "3.0.7-alpha.1",
1978
+ "compatibilityPromise": "preserved-through-the-v3-major-line",
1979
+ "deprecationReplacement": "",
1980
+ "sunsetCondition": "explicit-breaking-change-review-in-a-future-major-line",
1981
+ "nonDuplicationRationale": "One reusable policy and evidence boundary owns Engineering Housekeeper execution; scheduled callers contain cadence values only."
1982
+ },
1983
+ {
1984
+ "id": "engineering-housekeeper-weekly",
1985
+ "path": ".github/workflows/engineering-housekeeper-weekly.yml",
1986
+ "reusable": false,
1987
+ "inputs": [],
1988
+ "inputCount": 0,
1989
+ "secrets": [],
1990
+ "secretCount": 0,
1991
+ "outputs": [],
1992
+ "outputCount": 0,
1993
+ "surface": "repository-patrol",
1994
+ "capabilityGroup": "governance-versioning",
1995
+ "status": "preview",
1996
+ "owner": "buildchain-workflows",
1997
+ "maturity": "preview",
1998
+ "introducedVersion": "3.0.7-alpha.1",
1999
+ "compatibilityPromise": "preserved-through-the-v3-major-line",
2000
+ "deprecationReplacement": "",
2001
+ "sunsetCondition": "explicit-breaking-change-review-in-a-future-major-line",
2002
+ "nonDuplicationRationale": "One reusable policy and evidence boundary owns Engineering Housekeeper execution; scheduled callers contain cadence values only."
2003
+ },
2004
+ {
2005
+ "id": "engineering-housekeeper",
2006
+ "path": ".github/workflows/engineering-housekeeper.yml",
2007
+ "reusable": true,
2008
+ "inputs": [
2009
+ "apply-enabled",
2010
+ "artifact-prefix",
2011
+ "artifact-retention-days",
2012
+ "buildchain-ref",
2013
+ "buildchain-repository",
2014
+ "max-actions",
2015
+ "mode",
2016
+ "protected-patterns",
2017
+ "repository",
2018
+ "retained-patterns",
2019
+ "stale-days",
2020
+ "stale-pull-request-label",
2021
+ "target-branch"
2022
+ ],
2023
+ "inputCount": 13,
2024
+ "secrets": [
2025
+ "github_app_id",
2026
+ "github_app_private_key",
2027
+ "github_token"
2028
+ ],
2029
+ "secretCount": 3,
2030
+ "outputs": [
2031
+ "action-count",
2032
+ "branch-receipt-root",
2033
+ "outcome",
2034
+ "plan-artifact",
2035
+ "plan-root",
2036
+ "pull-request-receipt-root",
2037
+ "receipt-artifact",
2038
+ "report-artifact",
2039
+ "report-receipt-root"
2040
+ ],
2041
+ "outputCount": 9,
2042
+ "surface": "repository-patrol",
2043
+ "capabilityGroup": "governance-versioning",
2044
+ "status": "preview",
2045
+ "owner": "buildchain-workflows",
2046
+ "maturity": "preview",
2047
+ "introducedVersion": "3.0.7-alpha.1",
2048
+ "compatibilityPromise": "preserved-through-the-v3-major-line",
2049
+ "deprecationReplacement": "",
2050
+ "sunsetCondition": "explicit-breaking-change-review-in-a-future-major-line",
2051
+ "nonDuplicationRationale": "One reusable policy and evidence boundary owns Engineering Housekeeper execution; scheduled callers contain cadence values only."
2052
+ },
1929
2053
  {
1930
2054
  "id": "github-artifact-attestation",
1931
2055
  "path": ".github/workflows/github-artifact-attestation.yml",
@@ -2371,6 +2495,7 @@
2371
2495
  "buildchain-repository",
2372
2496
  "buildchain-stable-contract-lock-path",
2373
2497
  "channel",
2498
+ "declarative-release-tail",
2374
2499
  "dry-run",
2375
2500
  "github-artifact-attestation-environment",
2376
2501
  "github-artifact-attestation-policy-json",
@@ -2388,6 +2513,7 @@
2388
2513
  "publication-commit-evidence-path",
2389
2514
  "publication-consumer-predicate-id",
2390
2515
  "publication-consumer-qualification-command",
2516
+ "publication-consumer-qualification-controller-sha",
2391
2517
  "publication-control-plane-audit-json",
2392
2518
  "publication-expected-json",
2393
2519
  "publication-gate-aggregate-json",
@@ -2456,7 +2582,7 @@
2456
2582
  "target-sha",
2457
2583
  "trusted-publishing"
2458
2584
  ],
2459
- "inputCount": 99,
2585
+ "inputCount": 101,
2460
2586
  "secrets": [
2461
2587
  "BUILDCHAIN_ISSUE_APP_ID",
2462
2588
  "BUILDCHAIN_ISSUE_APP_PRIVATE_KEY",
@@ -2505,9 +2631,14 @@
2505
2631
  "release-candidate-artifact",
2506
2632
  "release-candidate-recovery-receipt-artifact",
2507
2633
  "release-candidate-recovery-root",
2508
- "release-propagation-work-artifact"
2509
- ],
2510
- "outputCount": 35,
2634
+ "release-propagation-work-artifact",
2635
+ "release-tail-declaration-root",
2636
+ "release-tail-receipt-roots-json",
2637
+ "release-tail-state-root",
2638
+ "release-tail-transaction-root",
2639
+ "release-tail-transaction-state"
2640
+ ],
2641
+ "outputCount": 40,
2511
2642
  "surface": "release-governance",
2512
2643
  "capabilityGroup": "reusable-build",
2513
2644
  "status": "active",
@@ -2647,6 +2778,42 @@
2647
2778
  "sunsetCondition": "explicit-breaking-change-review-in-a-future-major-line",
2648
2779
  "nonDuplicationRationale": "Existing workflow identity retained for caller compatibility and repository orchestration."
2649
2780
  },
2781
+ {
2782
+ "id": "release-tail",
2783
+ "path": ".github/workflows/release-tail.yml",
2784
+ "reusable": true,
2785
+ "inputs": [
2786
+ "buildchain-ref",
2787
+ "capsule-contract",
2788
+ "capsule-path",
2789
+ "capsule-root",
2790
+ "evidence-path",
2791
+ "state-path"
2792
+ ],
2793
+ "inputCount": 6,
2794
+ "secrets": [
2795
+ "http-token"
2796
+ ],
2797
+ "secretCount": 1,
2798
+ "outputs": [
2799
+ "binding-root",
2800
+ "evidence-root",
2801
+ "state-root",
2802
+ "transaction-root",
2803
+ "transaction-state"
2804
+ ],
2805
+ "outputCount": 5,
2806
+ "surface": "release-tail-provider-plane",
2807
+ "capabilityGroup": "release-passport-trust",
2808
+ "status": "active",
2809
+ "owner": "buildchain-workflows",
2810
+ "maturity": "active",
2811
+ "introducedVersion": "pre-3.0.2-alpha.4",
2812
+ "compatibilityPromise": "preserved-through-the-v3-major-line",
2813
+ "deprecationReplacement": "",
2814
+ "sunsetCondition": "explicit-breaking-change-review-in-a-future-major-line",
2815
+ "nonDuplicationRationale": "Existing workflow identity retained for caller compatibility and repository orchestration."
2816
+ },
2650
2817
  {
2651
2818
  "id": "release-verify",
2652
2819
  "path": ".github/workflows/release-verify.yml",
@@ -2856,6 +3023,7 @@
2856
3023
  "branch-protection-bypass-apps",
2857
3024
  "branch-protection-bypass-teams",
2858
3025
  "branch-protection-bypass-users",
3026
+ "declarative-release-tail",
2859
3027
  "dry-run",
2860
3028
  "expected-publication-version",
2861
3029
  "generated-pull-request-token",
@@ -2865,6 +3033,7 @@
2865
3033
  "github-release-artifact-paths",
2866
3034
  "github-release-notes",
2867
3035
  "github-release-title",
3036
+ "plan-before-target-advance",
2868
3037
  "promote-only-release-candidate",
2869
3038
  "publication-capability-json",
2870
3039
  "publication-gate-aggregate-json",
@@ -2879,6 +3048,7 @@
2879
3048
  "publish-package-set-order",
2880
3049
  "publish-rematerialize-on-resume",
2881
3050
  "publish-required-artifacts-json",
3051
+ "publish-required-artifacts-path",
2882
3052
  "publish-sealed-bundle-manifest",
2883
3053
  "publish-sealed-bundle-root",
2884
3054
  "publish-source-locked",
@@ -2917,6 +3087,7 @@
2917
3087
  "release-passport-platform-manifest-paths",
2918
3088
  "release-passport-product-name",
2919
3089
  "release-passport-promotion-routing-json",
3090
+ "release-tail-state-path",
2920
3091
  "require-governance",
2921
3092
  "require-publication-qualification",
2922
3093
  "require-publish-source-lock",
@@ -2929,7 +3100,30 @@
2929
3100
  "transaction-state-path",
2930
3101
  "verification-command"
2931
3102
  ],
2932
- "inputCount": 76,
3103
+ "inputCount": 80,
3104
+ "capabilityGroup": "release-passport-trust",
3105
+ "status": "active",
3106
+ "owner": "buildchain-actions",
3107
+ "maturity": "stable",
3108
+ "introducedVersion": "pre-3.0.2-alpha.4",
3109
+ "compatibilityPromise": "preserved-through-the-v3-major-line",
3110
+ "deprecationReplacement": "",
3111
+ "sunsetCondition": "explicit-breaking-change-review-in-a-future-major-line",
3112
+ "nonDuplicationRationale": "Existing action identity retained as the canonical composite or JavaScript action boundary."
3113
+ },
3114
+ {
3115
+ "id": "release-tail",
3116
+ "path": "actions/release-tail/action.yml",
3117
+ "inputs": [
3118
+ "capsule",
3119
+ "capsule-contract",
3120
+ "capsule-root",
3121
+ "evidence-path",
3122
+ "github-token",
3123
+ "http-token",
3124
+ "state-path"
3125
+ ],
3126
+ "inputCount": 7,
2933
3127
  "capabilityGroup": "release-passport-trust",
2934
3128
  "status": "active",
2935
3129
  "owner": "buildchain-actions",
package/docs/MAP.md CHANGED
@@ -59,7 +59,7 @@ workflow, action, and Node API export also carries a `capabilityGroup`,
59
59
  | Capability group | Primary facts | Primary manuals |
60
60
  | --- | --- | --- |
61
61
  | Getting Started | `capability-registry.json`, `product-mechanism.json` | [`getting-started.md`](getting-started.md), [`install.md`](install.md), [`product-mechanism.md`](product-mechanism.md), [`cli.md`](cli.md) |
62
- | Release Passport and Trust | `release-model.json`, `artifact-schemas.json`, `publication-authority-registry.json`, `kfd-claims.json` | [`release-passport.md`](release-passport.md), [`github-artifact-attestation.md`](github-artifact-attestation.md), [`publication-authority.md`](publication-authority.md), [`release-candidate.md`](release-candidate.md), [`publish-transaction.md`](publish-transaction.md), [`binary-distribution.md`](binary-distribution.md) |
62
+ | Release Passport and Trust | `release-model.json`, `artifact-schemas.json`, `publication-authority-registry.json`, `kfd-claims.json` | [`release-passport.md`](release-passport.md), [`github-artifact-attestation.md`](github-artifact-attestation.md), [`publication-authority.md`](publication-authority.md), [`release-candidate.md`](release-candidate.md), [`publish-transaction.md`](publish-transaction.md), [`release-tail-contract.md`](release-tail-contract.md), [`publication-rehearsal.md`](publication-rehearsal.md), [`binary-distribution.md`](binary-distribution.md) |
63
63
  | Reusable Build and Lifecycle | `workflow-registry.json`, `controller-registry.json`, `release-model.json` | [`reusable-build-surface.md`](reusable-build-surface.md), [`controller-evidence.md`](controller-evidence.md), [`shifu-gate-profiles.md`](shifu-gate-profiles.md), [`lifecycle-protocol.md`](lifecycle-protocol.md) |
64
64
  | KFD Trust and Surface Closure | `kfd-claims.json`, `public-surface-audit.json`, `cli-registry.json`, `node-api-registry.json` | [`kfd-support.md`](kfd-support.md), [`release-passport.md`](release-passport.md) |
65
65
  | Site Bundle, Web Surfaces, and Propagation | `buildchain-site.json`, `site-manifest.json`, `page-registry.json`, `release-model.json` | [`site-bundle-contract.md`](site-bundle-contract.md), [`web-surface-deployments.md`](web-surface-deployments.md), [`release-propagation.md`](release-propagation.md) |
@@ -109,17 +109,21 @@ replace them.
109
109
  | How do I import Buildchain toolkit APIs from JavaScript build code? | [`node-api-reference.md`](node-api-reference.md) + [`../packages/core/README.md`](../packages/core/README.md) | use | stable |
110
110
  | How do I initialize a new repository? | [`getting-started.md`](getting-started.md) + [`lifecycle-protocol.md`](lifecycle-protocol.md) | use | stable |
111
111
  | Why does Buildchain use branch-driven release governance? | [`release-governance.md`](release-governance.md) | why | stable |
112
+ | What freezes the v4 dependency direction, writer authority, complexity budgets, exceptions, and N-1 qualification? | [`../architecture/v4-architecture-constitution.md`](../architecture/v4-architecture-constitution.md) | why/verify | preview |
112
113
  | How do protected dev branches and scheduled ready-PR merging work? | [`release-governance.md`](release-governance.md#protected-dev-branches) | use | stable |
113
114
  | How do slow required checks land reliably on a busy dev channel? | [`release-governance.md`](release-governance.md#protected-dev-branches) + [`cli.md`](cli.md#commands) | use | preview |
114
115
  | How does the durable fair Dev Delivery Warrant Queue prevent slow-candidate starvation? | [`dev-delivery-warrant.md`](dev-delivery-warrant.md) | use/verify | preview |
115
116
  | How do I coalesce rapid Dev changes, preserve release runner priority, and retry only transient failed jobs? | [`dev-qualification-patrol.md`](dev-qualification-patrol.md) | use/verify | preview |
116
117
  | How do I run daily, weekly, or monthly repository patrols? | [`release-governance.md`](release-governance.md#buildchain-patrol) | use | stable |
118
+ | How do I report or safely apply branch and pull-request engineering hygiene? | [`engineering-housekeeper.md`](engineering-housekeeper.md) | use/verify | preview |
117
119
  | How does Buildchain decide patch, minor, and major release lines? | [`versioning.md`](versioning.md) | why | stable |
118
120
  | What exact branch/tag state machine runs on alpha, release, and major gate? | [`release-flow.md`](release-flow.md) | verify | stable |
119
121
  | What did Buildchain migrate or retire from old action repositories? | [`migration-inventory.md`](migration-inventory.md) | verify | stable |
120
122
  | What is the active action and workflow source of truth? | [`ownership.md`](ownership.md) | verify | stable |
121
123
  | How do I declare version files and custom lifecycle commands? | [`lifecycle-protocol.md`](lifecycle-protocol.md) | use | stable |
122
124
  | How does publish evidence, recovery, and finalization work? | [`publish-transaction.md`](publish-transaction.md) | verify | stable |
125
+ | How are consumer-owned release-tail commands inventoried and replaced by declarative capabilities? | [`release-tail-contract.md`](release-tail-contract.md) | verify | draft |
126
+ | How do I reproduce publication semantics locally without GitHub runner state? | [`publication-rehearsal.md`](publication-rehearsal.md), [`../architecture/decisions/0001-release-local-constructibility.md`](../architecture/decisions/0001-release-local-constructibility.md) | use/verify | preview |
123
127
  | How do I collect and verify module/product build facts from Git source, version files, and outputs? | [`build-facts.md`](build-facts.md) + [`cli.md`](cli.md) | use/verify | stable |
124
128
  | How do I publish or verify release passport artifacts? | [`release-passport.md`](release-passport.md) | use | stable |
125
129
  | How do I keylessly attest Linux release artifacts with GitHub and bind them to a Release Passport? | [`github-artifact-attestation.md`](github-artifact-attestation.md) | verify/use | preview |
@@ -154,7 +158,7 @@ replace them.
154
158
  | How do I deploy a site/app preview, staging, or production surface? | [`web-surface-deployments.md`](web-surface-deployments.md) | use | stable |
155
159
  | How do I publish observed infrastructure contracts for downstream consumers? | [`infra-contract.md`](infra-contract.md) | use | preview |
156
160
  | How do I operate a repeatable, disabled-by-default, budget-fail-closed AWS Windows JIT campaign? | [`aws-us-elastic-runner-burst-plane.md`](aws-us-elastic-runner-burst-plane.md#phase-2-operator-workflow) | use/verify | preview |
157
- | How do I use the active actions directly? | [`../actions/validate-config/README.md`](../actions/validate-config/README.md), [`../actions/run-lifecycle/README.md`](../actions/run-lifecycle/README.md), [`../actions/promote-buildchain-ref/README.md`](../actions/promote-buildchain-ref/README.md), [`../actions/report-buildchain-issue/README.md`](../actions/report-buildchain-issue/README.md), [`../actions/github-artifact-attestation/README.md`](../actions/github-artifact-attestation/README.md), [`../actions/macos-credential-island/README.md`](../actions/macos-credential-island/README.md); `dist/site/workflow-registry.json#actions` is authoritative for the six-entry inventory. | use | stable |
161
+ | How do I use the active actions directly? | [`../actions/validate-config/README.md`](../actions/validate-config/README.md), [`../actions/run-lifecycle/README.md`](../actions/run-lifecycle/README.md), [`../actions/promote-buildchain-ref/README.md`](../actions/promote-buildchain-ref/README.md), [`../actions/report-buildchain-issue/README.md`](../actions/report-buildchain-issue/README.md), [`../actions/github-artifact-attestation/README.md`](../actions/github-artifact-attestation/README.md), [`../actions/macos-credential-island/README.md`](../actions/macos-credential-island/README.md), [`../actions/release-tail/README.md`](../actions/release-tail/README.md); `dist/site/workflow-registry.json#actions` is authoritative for the seven-entry inventory. | use | stable |
158
162
  | How can a consumer workflow report a Buildchain-owned failure back to Buildchain? | [`consumer-issue-reporting.md`](consumer-issue-reporting.md) + [`../actions/report-buildchain-issue/README.md`](../actions/report-buildchain-issue/README.md) | use | stable |
159
163
  | What do the fixture repositories demonstrate? | [`../fixtures/libnode-shaped/README.md`](../fixtures/libnode-shaped/README.md), [`../fixtures/publish-transaction-shaped/README.md`](../fixtures/publish-transaction-shaped/README.md), [`../fixtures/web-surface-shaped/README.md`](../fixtures/web-surface-shaped/README.md), [`../fixtures/publication-artifact-shaped/README.md`](../fixtures/publication-artifact-shaped/README.md) | verify | stable |
160
164
  | What license and contribution terms apply? | [`../LICENSE`](../LICENSE) + [`../LICENSE-POLICY.md`](../LICENSE-POLICY.md) | use | stable |
@@ -47,7 +47,7 @@ literal argv steps. Steps in one demo share a disposable workspace; separate
47
47
  demos and the two rendition captures do not. Commands are never accepted as a
48
48
  shell string. An omitted or explicit `standard` duration class remains bounded
49
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
50
+ raise the scenario and literal step ceilings to 360 seconds; it does not change
51
51
  the default. Both classes retain 4 MiB per step, a clean Home/XDG environment,
52
52
  no inherited credentials, and a network-disabled read-only container with
53
53
  bounded tmpfs.
@@ -155,7 +155,7 @@ scene.json
155
155
 
156
156
  It may additionally emit one declared `terminal-capture.json` using
157
157
  `kungfu.terminal-capture/v1`. The optional capture is bounded to 60 seconds by
158
- default or 180 seconds only when its scene explicitly declares `long-form`,
158
+ default or 360 seconds only when its scene explicitly declares `long-form`,
159
159
  fixed 80-200 by 24-80 terminal cells, 10,000 events, and 4 MiB of canonical
160
160
  base64 bytes. It must contain a qualified completion sentinel and an explicitly
161
161
  empty authority-grant list. Existing three-file adapters remain valid.
@@ -22,6 +22,63 @@ ai_provenance:
22
22
 
23
23
  Every listed help command is intercepted before dispatch, exits zero, and performs no command side effects.
24
24
 
25
+ ## `architecture`
26
+
27
+ ### `buildchain architecture`
28
+
29
+ - Help: `buildchain architecture --help`
30
+ - Canonical id: `architecture`
31
+ - Options: none declared
32
+ - Syntax:
33
+
34
+ ```text
35
+ buildchain architecture
36
+ ```
37
+
38
+ ### `buildchain architecture list`
39
+
40
+ - Help: `buildchain architecture list --help`
41
+ - Canonical id: `architecture`
42
+ - Options: `--cwd`, `--json`
43
+ - Syntax:
44
+
45
+ ```text
46
+ buildchain architecture list [--cwd <dir>] [--json]
47
+ ```
48
+
49
+ ### `buildchain architecture qualify`
50
+
51
+ - Help: `buildchain architecture qualify --help`
52
+ - Canonical id: `architecture`
53
+ - Options: `--authority-revision`, `--candidate-revision`, `--cwd`, `--json`
54
+ - Syntax:
55
+
56
+ ```text
57
+ buildchain architecture qualify --authority-revision <git-revision> [--candidate-revision <git-revision>] [--cwd <dir>] [--json]
58
+ ```
59
+
60
+ ### `buildchain architecture show`
61
+
62
+ - Help: `buildchain architecture show --help`
63
+ - Canonical id: `architecture`
64
+ - Options: `--cwd`, `--json`
65
+ - Syntax:
66
+
67
+ ```text
68
+ buildchain architecture show <capability-id> [--cwd <dir>] [--json]
69
+ ```
70
+
71
+ ### `buildchain architecture validate`
72
+
73
+ - Help: `buildchain architecture validate --help`
74
+ - Canonical id: `architecture`
75
+ - Options: `--cwd`, `--json`
76
+ - Syntax:
77
+
78
+ ```text
79
+ buildchain architecture validate [--cwd <dir>] [--json]
80
+ ```
81
+
25
82
  ## `audit`
26
83
 
27
84
  ### `buildchain audit`
@@ -1877,6 +1934,85 @@ buildchain release-propagation <plan|write-lock|work|entry|pickup> ...
1877
1934
  buildchain release-propagation <plan|write-lock|work|entry|pickup> ...
1878
1935
  ```
1879
1936
 
1937
+ ## `release-tail`
1938
+
1939
+ ### `buildchain release-tail`
1940
+
1941
+ - Help: `buildchain release-tail --help`
1942
+ - Canonical id: `release-tail`
1943
+ - Options: none declared
1944
+ - Syntax:
1945
+
1946
+ ```text
1947
+ buildchain release-tail
1948
+ ```
1949
+
1950
+ ### `buildchain release-tail compat`
1951
+
1952
+ - Help: `buildchain release-tail compat --help`
1953
+ - Canonical id: `release-tail`
1954
+ - Options: `--hooks-json`, `--output`
1955
+ - Syntax:
1956
+
1957
+ ```text
1958
+ buildchain release-tail compat --hooks-json <json-or-path> [--output <path>]
1959
+ ```
1960
+
1961
+ ### `buildchain release-tail init`
1962
+
1963
+ - Help: `buildchain release-tail init --help`
1964
+ - Canonical id: `release-tail`
1965
+ - Options: `--declaration`, `--state`
1966
+ - Syntax:
1967
+
1968
+ ```text
1969
+ buildchain release-tail init --declaration <json-or-path> [--state <path>]
1970
+ ```
1971
+
1972
+ ### `buildchain release-tail plan`
1973
+
1974
+ - Help: `buildchain release-tail plan --help`
1975
+ - Canonical id: `release-tail`
1976
+ - Options: `--declaration`, `--output`
1977
+ - Syntax:
1978
+
1979
+ ```text
1980
+ buildchain release-tail plan --declaration <json-or-path> [--output <path>]
1981
+ ```
1982
+
1983
+ ### `buildchain release-tail rehearse`
1984
+
1985
+ - Help: `buildchain release-tail rehearse --help`
1986
+ - Canonical id: `release-tail`
1987
+ - Options: `--capsule`, `--capsule-root`, `--environment-json`, `--evidence`, `--mode`, `--state`
1988
+ - Syntax:
1989
+
1990
+ ```text
1991
+ buildchain release-tail rehearse --capsule <path> --capsule-root <absolute-path> --mode <simulate|replay> --state <path> --evidence <path> [--environment-json <json-or-path>]
1992
+ ```
1993
+
1994
+ ### `buildchain release-tail status`
1995
+
1996
+ - Help: `buildchain release-tail status --help`
1997
+ - Canonical id: `release-tail`
1998
+ - Options: `--output`, `--state`
1999
+ - Syntax:
2000
+
2001
+ ```text
2002
+ buildchain release-tail <status|verify> [--state <path>] [--output <path>]
2003
+ ```
2004
+
2005
+ ### `buildchain release-tail verify`
2006
+
2007
+ - Help: `buildchain release-tail verify --help`
2008
+ - Canonical id: `release-tail`
2009
+ - Options: `--output`, `--state`
2010
+ - Syntax:
2011
+
2012
+ ```text
2013
+ buildchain release-tail <status|verify> [--state <path>] [--output <path>]
2014
+ ```
2015
+
1880
2016
  ## `sample`
1881
2017
 
1882
2018
  ### `buildchain sample`
@@ -8,11 +8,11 @@ confidence: high
8
8
  sensitivity: public
9
9
  evidence_grade: A
10
10
  review_state: unreviewed
11
- last_reviewed: 2026-08-05
11
+ last_reviewed: 2026-08-09
12
12
  ai_provenance:
13
13
  model_family: GPT-5
14
14
  product: Codex
15
- generated_at: 2026-08-04
15
+ generated_at: 2026-08-09
16
16
  invisible_context: not asserted
17
17
  ---
18
18
 
@@ -125,6 +125,39 @@ buildchain dev proof replay-proof \
125
125
  buildchain dev proof integration --warrant-result warrant.json ...
126
126
  ```
127
127
 
128
+ ## Bounded-concurrency shadow qualification
129
+
130
+ The production queue remains single-flight. A separate effect-disabled shadow
131
+ planner can replay the same deterministic candidate order with a bound of one
132
+ or two lanes. It does not issue, renew, supersede, close, or persist a Warrant;
133
+ it cannot enqueue a pull request; and its output explicitly carries no
134
+ production or rollout authority.
135
+
136
+ Each lane binds the exact queue root and generation, protected-base head,
137
+ source head, projected-base root, Project Cut, approval, required checks,
138
+ status, and lease evidence. An active production candidate must additionally
139
+ match its current fencing token and lease generation. A queued shadow lane must
140
+ not carry either. Stale evidence, an occupied native queue, cross-lane evidence
141
+ aliasing, shared conflict keys, or an incompatible projected base fails closed.
142
+ A failure in one lane remains visible without converting or concealing the
143
+ other lane's result.
144
+
145
+ The planner and aggregate qualification command consume immutable JSON files:
146
+
147
+ ```sh
148
+ buildchain dev warrant shadow-plan --input observation.json \
149
+ --max-concurrency 2 --output shadow-plan.json
150
+
151
+ buildchain dev warrant shadow-qualify --input qualification-input.json \
152
+ --output shadow-qualification.json
153
+ ```
154
+
155
+ Both commands reject `--execute`. Qualification reports compare explicit
156
+ thresholds for sample count, eligible overlap, projected queue-wait benefit,
157
+ additional runner cost, ambiguity, and false positives. A `proceed` result is
158
+ only evidence for a separate reviewed rollout decision; it never changes the
159
+ live Warrant schema, queue state, merge-queue policy, or protected branch.
160
+
128
161
  ## Workflow rollout and rollback
129
162
 
130
163
  The reusable `dev-pr-auto-merge.yml` supports three explicit rollout modes:
@@ -133,7 +166,17 @@ The reusable `dev-pr-auto-merge.yml` supports three explicit rollout modes:
133
166
  - `shadow` qualifies the source and emits a read-only queue submission plan;
134
167
  - `required` persists the submission, selects the Warrant, and refuses GitHub
135
168
  enqueue unless the immutable queue commit, state root, active Warrant, and
136
- selected candidate all pass exact readback validation.
169
+ selected candidate all pass exact readback validation. Immediately before
170
+ enqueue, the controller also rereads the current protected state ref and
171
+ verifies the active candidate, fencing token, generation, pull request, and
172
+ exact head. A previously valid result is not authority after terminal
173
+ closeout. Re-running qualification for the same selected head may regenerate
174
+ timestamped proof bytes, but it retains the immutable active Warrant and its
175
+ originally selected proof instead of rewriting or rejecting that attempt.
176
+ Each candidate also retains the exact successful source workflow run. If a
177
+ controller discovers that another candidate owns the active Warrant, a
178
+ configured consumer workflow is dispatched immediately for that exact PR,
179
+ head, and source run; the candidate is not left waiting for a patrol cron.
137
180
 
138
181
  Consumers should deploy `shadow` first, inspect receipts, then change their
139
182
  protected caller to `required`. Rollback is a reviewed caller change back to
@@ -143,7 +186,9 @@ merged candidate (or accepts explicit evidence for another terminal outcome),
143
186
  then closes only the current fencing generation. The separate queued
144
187
  cancellation reusable workflow cannot close an active generation; it advances
145
188
  the state ref only when the caller's complete terminal binding and expected-old
146
- root still match.
189
+ root still match. A delayed `dequeued` event is ignored when GitHub readback
190
+ shows the same exact PR head is already queued again, so an earlier queue event
191
+ cannot close a newer active Warrant generation.
147
192
 
148
193
  Buildchain uses the same contract for its own protected dev line through
149
194
  `buildchain-dev-delivery.yml`. The manual caller requires the exact PR head and