@kungfu-tech/buildchain 3.0.4-alpha.0 → 3.0.4-alpha.10
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.
- package/AGENTS.md +14 -5
- package/README.md +18 -0
- package/bin/buildchain.mjs +136 -73
- package/bin/internal/trust-release-cli.mjs +15 -537
- package/bin/internal/trust-release-command-handlers.mjs +14 -0
- package/bin/internal/trust-release-inspection-handlers.mjs +175 -0
- package/bin/internal/trust-release-release-handlers.mjs +317 -0
- package/bin/internal/trust-release-verification-handlers.mjs +306 -0
- package/dist/site/buildchain-contract.json +36 -25
- package/dist/site/buildchain-site.json +1474 -61
- package/dist/site/capability-registry.json +8 -5
- package/dist/site/cli-registry.json +1869 -0
- package/dist/site/controller-registry.json +16 -3
- package/dist/site/kfd-claims.json +84 -10
- package/dist/site/kfd-upstream-aggregate.json +1 -1
- package/dist/site/manual-registry.json +49 -6
- package/dist/site/node-api-registry.json +17802 -11
- package/dist/site/page-registry.json +1441 -59
- package/dist/site/public-surface-audit.json +2863 -358
- package/dist/site/publication-registry.json +4 -4
- package/dist/site/release-model.json +7 -0
- package/dist/site/site-manifest.json +34 -10
- package/dist/site/workflow-registry.json +13 -5
- package/docs/MAP.md +21 -6
- package/docs/cli-reference.md +1936 -0
- package/docs/cli.md +15 -1
- package/docs/getting-started.md +167 -0
- package/docs/install.md +7 -8
- package/docs/node-api-reference.md +1952 -0
- package/docs/release-propagation.md +166 -8
- package/docs/site-bundle-contract.md +10 -4
- package/docs/versioning.md +5 -4
- package/package.json +8 -5
- package/packages/core/buildchain-agent-manuals.js +37 -0
- package/packages/core/buildchain-kfd-claims.js +4 -37
- package/packages/core/controller-evidence.js +8 -1
- package/packages/core/index.js +1 -13
- package/packages/core/paper-agent-entry.js +14 -11
- package/packages/core/paper-fleet.js +34 -7
- package/packages/core/paper-npm-bootstrap.js +492 -0
- package/packages/core/paper-repository.js +1 -0
- package/packages/core/paper.js +356 -674
- package/packages/core/public-surface-cli.js +12 -1
- package/packages/core/publication-package.js +7 -0
- package/packages/core/release-passport.js +67 -71
- package/packages/core/release-propagation-common.js +64 -0
- package/packages/core/release-propagation-execution-profile.js +59 -0
- package/packages/core/release-propagation-release.js +196 -0
- package/packages/core/release-propagation-stage-evidence.js +364 -0
- package/packages/core/release-propagation-work-capture.js +64 -0
- package/packages/core/release-propagation-work-constants.js +34 -0
- package/packages/core/release-propagation-work-control.js +203 -0
- package/packages/core/release-propagation-work-transitions.js +145 -0
- package/packages/core/release-propagation-work.js +517 -0
- package/packages/core/release-propagation.js +34 -158
- package/scripts/aggregate-build-summary.mjs +67 -4
- package/scripts/auditable-demo-renditions.mjs +131 -0
- package/scripts/auditable-demo.mjs +88 -91
- package/scripts/aws-windows-jit-controller-core.mjs +269 -0
- package/scripts/aws-windows-jit-controller.mjs +502 -0
- package/scripts/check-internal-architecture.mjs +178 -52
- package/scripts/check-inventory.mjs +2 -2
- package/scripts/check-maintainability.mjs +76 -17
- package/scripts/generate-public-reference.mjs +68 -0
- package/scripts/generate-site-bundle.mjs +35 -41
- package/scripts/maintainability-metrics.mjs +24 -4
- package/scripts/paper-work-fleet-cli.mjs +22 -3
- package/scripts/public-reference.mjs +557 -0
- package/scripts/release-propagation.mjs +126 -0
- package/scripts/resolve-artifact-transfer-mode.mjs +117 -0
- package/scripts/site-reference-registry.mjs +174 -0
- package/scripts/verify-golden-path.mjs +169 -0
- package/scripts/web-surface-core.mjs +46 -207
- package/scripts/web-surface-routing.mjs +286 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"contract": "kungfu-buildchain-publication-release-registry",
|
|
4
|
-
"generatedAt": "2026-08-
|
|
5
|
-
"publishedAt": "2026-08-
|
|
4
|
+
"generatedAt": "2026-08-01T13:56:48.612Z",
|
|
5
|
+
"publishedAt": "2026-08-01T13:56:48.612Z",
|
|
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": "
|
|
22
|
+
"sourceRevision": "c79b12aa311d9d39ff9c42164bf1b450df2e6e9b",
|
|
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.4-alpha.
|
|
35
|
+
"version": "3.0.4-alpha.10",
|
|
36
36
|
"versionSource": "package.json#version"
|
|
37
37
|
},
|
|
38
38
|
"sourceKind": "package-site-bundle",
|
|
@@ -23,6 +23,13 @@
|
|
|
23
23
|
"graphContract": "kungfu-buildchain-release-propagation-graph",
|
|
24
24
|
"planContract": "kungfu-buildchain-release-propagation-plan",
|
|
25
25
|
"lockContract": "kungfu-buildchain-release-propagation-lock",
|
|
26
|
+
"workContract": "kungfu-buildchain-release-propagation-work",
|
|
27
|
+
"stageReceiptContract": "kungfu-buildchain-release-propagation-stage-receipt",
|
|
28
|
+
"workControlBindings": [
|
|
29
|
+
"kungfu.assignment-graph.work-ref/v1",
|
|
30
|
+
"kungfu.work-control.initiative-family-state/v2"
|
|
31
|
+
],
|
|
32
|
+
"completionBoundary": "production-online-readback-plus-accepted-work-control-decision",
|
|
26
33
|
"defaultChannelPolicy": "preserve",
|
|
27
34
|
"defaultChannelMap": {
|
|
28
35
|
"alpha": "alpha",
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"contract": "kungfu-buildchain-site-manifest",
|
|
4
|
-
"generatedAt": "2026-08-
|
|
5
|
-
"publishedAt": "2026-08-
|
|
4
|
+
"generatedAt": "2026-08-01T13:56:48.612Z",
|
|
5
|
+
"publishedAt": "2026-08-01T13:56:48.612Z",
|
|
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": "
|
|
22
|
+
"sourceRevision": "c79b12aa311d9d39ff9c42164bf1b450df2e6e9b",
|
|
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.4-alpha.
|
|
40
|
+
"version": "3.0.4-alpha.10",
|
|
41
41
|
"versionSource": "package.json#version"
|
|
42
42
|
},
|
|
43
43
|
"entrypoint": "buildchain-site.json",
|
|
@@ -53,7 +53,15 @@
|
|
|
53
53
|
"path": "docs/MAP.md",
|
|
54
54
|
"plane": "use",
|
|
55
55
|
"exists": true,
|
|
56
|
-
"digest": "sha256:
|
|
56
|
+
"digest": "sha256:0731b18f6a7aa6a164197080fac3b57ff161640a28433c4cd26adcf145403fb5"
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"id": "getting-started",
|
|
60
|
+
"title": "Golden Path",
|
|
61
|
+
"path": "docs/getting-started.md",
|
|
62
|
+
"plane": "use",
|
|
63
|
+
"exists": true,
|
|
64
|
+
"digest": "sha256:806224481f542786ed2e60226417bd1ba673099a3110f564357792bdbf637403"
|
|
57
65
|
},
|
|
58
66
|
{
|
|
59
67
|
"id": "auditable-demo",
|
|
@@ -69,7 +77,7 @@
|
|
|
69
77
|
"path": "docs/install.md",
|
|
70
78
|
"plane": "use",
|
|
71
79
|
"exists": true,
|
|
72
|
-
"digest": "sha256:
|
|
80
|
+
"digest": "sha256:b9d87becf94efff804495ee3beea5da795241ae4402186102baa846c87c7bf14"
|
|
73
81
|
},
|
|
74
82
|
{
|
|
75
83
|
"id": "release-passport",
|
|
@@ -125,7 +133,7 @@
|
|
|
125
133
|
"path": "docs/release-propagation.md",
|
|
126
134
|
"plane": "use",
|
|
127
135
|
"exists": true,
|
|
128
|
-
"digest": "sha256:
|
|
136
|
+
"digest": "sha256:d9c9b4ba9dff6ed336b1ff31e5a02fcdf68dd013278caa86510e5fd0b50c4267"
|
|
129
137
|
},
|
|
130
138
|
{
|
|
131
139
|
"id": "readme-badges",
|
|
@@ -181,7 +189,7 @@
|
|
|
181
189
|
"path": "docs/site-bundle-contract.md",
|
|
182
190
|
"plane": "use",
|
|
183
191
|
"exists": true,
|
|
184
|
-
"digest": "sha256:
|
|
192
|
+
"digest": "sha256:36a4e60e91f500ea1dcdbef97cd0250a2c26562b98d8d3622e8e0f9df2aad23b"
|
|
185
193
|
},
|
|
186
194
|
{
|
|
187
195
|
"id": "migration-inventory",
|
|
@@ -213,7 +221,23 @@
|
|
|
213
221
|
"path": "docs/cli.md",
|
|
214
222
|
"plane": "use",
|
|
215
223
|
"exists": true,
|
|
216
|
-
"digest": "sha256:
|
|
224
|
+
"digest": "sha256:1707dd8989e1630b5ba9381c6f8aabbbc64288590628cbae9058ea6f56f9037c"
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
"id": "cli-reference",
|
|
228
|
+
"title": "Generated CLI reference",
|
|
229
|
+
"path": "docs/cli-reference.md",
|
|
230
|
+
"plane": "use",
|
|
231
|
+
"exists": true,
|
|
232
|
+
"digest": "sha256:c728fe693ab591ab5b52f4276a817ec5a013c79833f0d20ca2cc137e85ae51ca"
|
|
233
|
+
},
|
|
234
|
+
{
|
|
235
|
+
"id": "node-api-reference",
|
|
236
|
+
"title": "Generated Node API reference",
|
|
237
|
+
"path": "docs/node-api-reference.md",
|
|
238
|
+
"plane": "use",
|
|
239
|
+
"exists": true,
|
|
240
|
+
"digest": "sha256:ce9b018e6b1cfd98d8faa0ccadd6570585f2812b4828d610810f984f9810df5d"
|
|
217
241
|
},
|
|
218
242
|
{
|
|
219
243
|
"id": "build-facts",
|
|
@@ -293,7 +317,7 @@
|
|
|
293
317
|
"path": "docs/versioning.md",
|
|
294
318
|
"plane": "why",
|
|
295
319
|
"exists": true,
|
|
296
|
-
"digest": "sha256:
|
|
320
|
+
"digest": "sha256:bdb155e873f9c2ea5cd40bdde057d2c2f90322f0d4575de77fe1670bd040e643"
|
|
297
321
|
},
|
|
298
322
|
{
|
|
299
323
|
"id": "web-surface-deployments",
|
|
@@ -1767,10 +1767,12 @@
|
|
|
1767
1767
|
"github-release-url",
|
|
1768
1768
|
"package-name",
|
|
1769
1769
|
"package-version",
|
|
1770
|
+
"propagation-work-artifact",
|
|
1770
1771
|
"public-release-tag",
|
|
1771
|
-
"release-passport-path"
|
|
1772
|
+
"release-passport-path",
|
|
1773
|
+
"upstream-release-json"
|
|
1772
1774
|
],
|
|
1773
|
-
"outputCount":
|
|
1775
|
+
"outputCount": 7,
|
|
1774
1776
|
"surface": "repository-workflow",
|
|
1775
1777
|
"capabilityGroup": "api-cli-reference",
|
|
1776
1778
|
"status": "active",
|
|
@@ -2289,6 +2291,8 @@
|
|
|
2289
2291
|
"path": ".github/workflows/release-propagation.yml",
|
|
2290
2292
|
"reusable": true,
|
|
2291
2293
|
"inputs": [
|
|
2294
|
+
"agent-work-context-json",
|
|
2295
|
+
"agent-work-mode",
|
|
2292
2296
|
"buildchain-ref",
|
|
2293
2297
|
"buildchain-repository",
|
|
2294
2298
|
"downstream-base-ref",
|
|
@@ -2307,7 +2311,7 @@
|
|
|
2307
2311
|
"source-node",
|
|
2308
2312
|
"upstream-release-json"
|
|
2309
2313
|
],
|
|
2310
|
-
"inputCount":
|
|
2314
|
+
"inputCount": 19,
|
|
2311
2315
|
"secrets": [
|
|
2312
2316
|
"propagation-token"
|
|
2313
2317
|
],
|
|
@@ -2321,9 +2325,13 @@
|
|
|
2321
2325
|
"controller-receipt-json",
|
|
2322
2326
|
"controller-receipt-status",
|
|
2323
2327
|
"propagation-receipt-digest",
|
|
2324
|
-
"propagation-receipt-json"
|
|
2328
|
+
"propagation-receipt-json",
|
|
2329
|
+
"propagation-work-artifact",
|
|
2330
|
+
"propagation-work-json",
|
|
2331
|
+
"propagation-work-next-action",
|
|
2332
|
+
"propagation-work-root"
|
|
2325
2333
|
],
|
|
2326
|
-
"outputCount":
|
|
2334
|
+
"outputCount": 13,
|
|
2327
2335
|
"surface": "release-propagation",
|
|
2328
2336
|
"capabilityGroup": "site-and-propagation",
|
|
2329
2337
|
"status": "preview",
|
package/docs/MAP.md
CHANGED
|
@@ -30,6 +30,20 @@ running artifact), *use* (consume / extend) - and a **status**:
|
|
|
30
30
|
- `to write` - planned; the material exists but is not yet a single doc.
|
|
31
31
|
- `retired` - intentionally not part of the active Buildchain v3 surface.
|
|
32
32
|
|
|
33
|
+
## Start by Role or Intent
|
|
34
|
+
|
|
35
|
+
| Role or intent | First entry | Then |
|
|
36
|
+
| --- | --- | --- |
|
|
37
|
+
| First-time repository adopter | [Golden Path](getting-started.md) | [Lifecycle Protocol](lifecycle-protocol.md) only when the generated defaults need changes |
|
|
38
|
+
| CLI operator or agent | [Generated CLI Reference](cli-reference.md) | [CLI guide](cli.md) for concepts and worked examples |
|
|
39
|
+
| Node toolkit developer | [Generated Node API Reference](node-api-reference.md) | [Core package guide](../packages/core/README.md) for recipes |
|
|
40
|
+
| Build/release operator | [Reusable Build Surface](reusable-build-surface.md) | [Release Flow](release-flow.md) and [Release Passport](release-passport.md) |
|
|
41
|
+
| Product/trust reviewer | [Product Mechanism](product-mechanism.md) | [Release Passport](release-passport.md) and [KFD Support](kfd-support.md) |
|
|
42
|
+
|
|
43
|
+
These entrypoints keep common destinations within three meaningful hops:
|
|
44
|
+
README or this map, the role entry, and the normative contract or generated
|
|
45
|
+
reference.
|
|
46
|
+
|
|
33
47
|
## Capability Coverage
|
|
34
48
|
|
|
35
49
|
This package should be usable by an agent from the npm artifact alone. The
|
|
@@ -44,7 +58,7 @@ workflow, action, and Node API export also carries a `capabilityGroup`,
|
|
|
44
58
|
|
|
45
59
|
| Capability group | Primary facts | Primary manuals |
|
|
46
60
|
| --- | --- | --- |
|
|
47
|
-
| Getting Started | `capability-registry.json`, `product-mechanism.json` | [`install.md`](install.md), [`product-mechanism.md`](product-mechanism.md), [`cli.md`](cli.md) |
|
|
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) |
|
|
48
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) |
|
|
49
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) |
|
|
50
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) |
|
|
@@ -53,7 +67,7 @@ workflow, action, and Node API export also carries a `capabilityGroup`,
|
|
|
53
67
|
| Distribution Indexes and Badges | `badge-endpoint-registry.json`, `node-api-registry.json`, `manual-registry.json` | [`readme-badges.md`](readme-badges.md), [`homebrew.md`](homebrew.md) |
|
|
54
68
|
| Build Facts, Observability, and Diagnostics | `cli-registry.json`, `node-api-registry.json`, lifecycle artifacts | [`build-facts.md`](build-facts.md), [`toolkit-observability.md`](toolkit-observability.md), [`consumer-issue-reporting.md`](consumer-issue-reporting.md) |
|
|
55
69
|
| Governance, Versioning, and Runtime Drift | `buildchain-contract.json`, `workflow-registry.json`, `release-model.json` | [`github-governance-authority.md`](github-governance-authority.md), [`release-governance.md`](release-governance.md), [`release-flow.md`](release-flow.md), [`versioning.md`](versioning.md), [`runtime-train-validation.md`](runtime-train-validation.md), [`cli.md`](cli.md) |
|
|
56
|
-
| CLI and Node API Reference | `cli-registry.json`, `node-api-registry.json`, `workflow-registry.json`, `manual-registry.json` | [`cli.md`](cli.md), [`../packages/core/README.md`](../packages/core/README.md) |
|
|
70
|
+
| CLI and Node API Reference | `cli-registry.json`, `node-api-registry.json`, `workflow-registry.json`, `manual-registry.json` | [`cli-reference.md`](cli-reference.md), [`node-api-reference.md`](node-api-reference.md), [`cli.md`](cli.md), [`../packages/core/README.md`](../packages/core/README.md) |
|
|
57
71
|
|
|
58
72
|
| Capability | Machine-readable entry | Manual entry |
|
|
59
73
|
| --- | --- | --- |
|
|
@@ -87,12 +101,13 @@ replace them.
|
|
|
87
101
|
| Your question | Document | Plane | Status |
|
|
88
102
|
| --- | --- | --- | --- |
|
|
89
103
|
| What is Buildchain, in one idea? | [`../README.md`](../README.md) | - | stable |
|
|
104
|
+
| How do I complete a first clean adoption in 15–30 minutes? | [`getting-started.md`](getting-started.md) | use | stable |
|
|
90
105
|
| Why is Buildchain a Release Passport mechanism rather than a generic workflow collection? | [`product-mechanism.md`](product-mechanism.md) | why | stable |
|
|
91
106
|
| How do agents and contributors enter this repo? | [`../AGENTS.md`](../AGENTS.md) + [`../CONTRIBUTING.md`](../CONTRIBUTING.md) | use | stable |
|
|
92
107
|
| How do I install a standalone binary or npm package? | [`install.md`](install.md) | use | stable |
|
|
93
|
-
| How do I run the `buildchain` CLI? | [`cli.md`](cli.md) | use | stable |
|
|
94
|
-
| How do I import Buildchain toolkit APIs from JavaScript build code? | [`
|
|
95
|
-
| How do I initialize a new repository? | [`
|
|
108
|
+
| How do I run or look up the `buildchain` CLI? | [`cli-reference.md`](cli-reference.md) + [`cli.md`](cli.md) | use | stable |
|
|
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
|
+
| How do I initialize a new repository? | [`getting-started.md`](getting-started.md) + [`lifecycle-protocol.md`](lifecycle-protocol.md) | use | stable |
|
|
96
111
|
| Why does Buildchain use branch-driven release governance? | [`release-governance.md`](release-governance.md) | why | stable |
|
|
97
112
|
| How do protected dev branches and scheduled ready-PR merging work? | [`release-governance.md`](release-governance.md#protected-dev-branches) | use | stable |
|
|
98
113
|
| 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 |
|
|
@@ -117,7 +132,7 @@ replace them.
|
|
|
117
132
|
| How do I adopt the KFD Agent Hub profile with one declaration and one adapter? | [`kfd-agent-hub.md`](kfd-agent-hub.md) | verify/use | preview |
|
|
118
133
|
| How do I keep `@v3` floating refs while detecting Buildchain contract drift? | [`reusable-build-surface.md`](reusable-build-surface.md#floating-ref-contract-lock) | verify/use | stable |
|
|
119
134
|
| How do reusable workflows bind controller intent, source/runtime identity, outcomes, and receipt evidence? | [`controller-evidence.md`](controller-evidence.md) | verify/use | draft |
|
|
120
|
-
| How
|
|
135
|
+
| How does an Agent propagate a finalized upstream release through downstream PR, deployment, production readback, and Work Control completion? | [`release-propagation.md`](release-propagation.md) | use/verify | preview |
|
|
121
136
|
| How do paper or report repositories publish PDFs, metadata, source bundles, site-consumable manifests, npm packages, and GitHub Releases? | [`publication-artifacts.md`](publication-artifacts.md) | use | stable |
|
|
122
137
|
| How do I generate KFD / Release Passport badge bundles without hand-maintaining Markdown? | [`readme-badges.md`](readme-badges.md) + [`cli.md`](cli.md) | use | stable |
|
|
123
138
|
| How do I generate and verify a Homebrew tap from release passport evidence? | [`homebrew.md`](homebrew.md) + [`cli.md`](cli.md) | use/verify | stable |
|