@kungfu-tech/buildchain 2.9.1 → 2.10.0

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.
@@ -3,11 +3,11 @@
3
3
  "contract": "kungfu-buildchain-public-surface-reverse-audit",
4
4
  "status": "passed",
5
5
  "summary": {
6
- "cliCommandCount": 46,
6
+ "cliCommandCount": 52,
7
7
  "workflowCount": 35,
8
8
  "actionCount": 4,
9
- "sitePageCount": 42,
10
- "docCommandRefCount": 164,
9
+ "sitePageCount": 43,
10
+ "docCommandRefCount": 180,
11
11
  "failureCount": 0
12
12
  },
13
13
  "enumerated": {
@@ -127,6 +127,36 @@
127
127
  "source": "bin/buildchain.mjs",
128
128
  "usage": "buildchain inspect release --passport <file-or-url> [--json]"
129
129
  },
130
+ {
131
+ "id": "kfd-3",
132
+ "source": "bin/buildchain.mjs",
133
+ "usage": "buildchain kfd-3"
134
+ },
135
+ {
136
+ "id": "kfd-3-audit",
137
+ "source": "bin/buildchain.mjs",
138
+ "usage": "buildchain kfd-3 audit [--cwd <dir>] [--registry <path>] [--artifact <path>] [--json]"
139
+ },
140
+ {
141
+ "id": "kfd-3-detect",
142
+ "source": "bin/buildchain.mjs",
143
+ "usage": "buildchain kfd-3 detect [--cwd <dir>] [--kind <kind>]... [--artifact <path>] [--json]"
144
+ },
145
+ {
146
+ "id": "kfd-3-query",
147
+ "source": "bin/buildchain.mjs",
148
+ "usage": "buildchain kfd-3 query [<product>] [--cwd <dir>] [--registry <path>]"
149
+ },
150
+ {
151
+ "id": "kfd-3-register",
152
+ "source": "bin/buildchain.mjs",
153
+ "usage": "buildchain kfd-3 register <node-api|python-api|cli|binary|documentation|site-bundle>"
154
+ },
155
+ {
156
+ "id": "kfd-3-witness",
157
+ "source": "bin/buildchain.mjs",
158
+ "usage": "buildchain kfd-3 witness [--cwd <dir>] [--registry <path>] [--kind prebuild|artifact]"
159
+ },
130
160
  {
131
161
  "id": "lifecycle",
132
162
  "source": "bin/buildchain.mjs",
@@ -1043,6 +1073,10 @@
1043
1073
  "id": "manual:install",
1044
1074
  "category": "manual"
1045
1075
  },
1076
+ {
1077
+ "id": "manual:kfd-support",
1078
+ "category": "manual"
1079
+ },
1046
1080
  {
1047
1081
  "id": "manual:lifecycle-protocol",
1048
1082
  "category": "manual"
@@ -1536,6 +1570,86 @@
1536
1570
  "path": "docs/cli.md",
1537
1571
  "command": "buildchain inspect release"
1538
1572
  },
1573
+ {
1574
+ "id": "kfd-3-audit",
1575
+ "path": "docs/cli.md",
1576
+ "command": "buildchain kfd-3 audit"
1577
+ },
1578
+ {
1579
+ "id": "kfd-3-audit",
1580
+ "path": "docs/kfd-support.md",
1581
+ "command": "buildchain kfd-3 audit"
1582
+ },
1583
+ {
1584
+ "id": "kfd-3-detect",
1585
+ "path": "docs/cli.md",
1586
+ "command": "buildchain kfd-3 detect"
1587
+ },
1588
+ {
1589
+ "id": "kfd-3-detect",
1590
+ "path": "docs/kfd-support.md",
1591
+ "command": "buildchain kfd-3 detect"
1592
+ },
1593
+ {
1594
+ "id": "kfd-3-detect",
1595
+ "path": "docs/kfd-support.md",
1596
+ "command": "buildchain kfd-3 detect"
1597
+ },
1598
+ {
1599
+ "id": "kfd-3-query",
1600
+ "path": "docs/cli.md",
1601
+ "command": "buildchain kfd-3 query"
1602
+ },
1603
+ {
1604
+ "id": "kfd-3-query",
1605
+ "path": "docs/kfd-support.md",
1606
+ "command": "buildchain kfd-3 query"
1607
+ },
1608
+ {
1609
+ "id": "kfd-3-query",
1610
+ "path": "docs/kfd-support.md",
1611
+ "command": "buildchain kfd-3 query"
1612
+ },
1613
+ {
1614
+ "id": "kfd-3-query",
1615
+ "path": "docs/kfd-support.md",
1616
+ "command": "buildchain kfd-3 query"
1617
+ },
1618
+ {
1619
+ "id": "kfd-3-register",
1620
+ "path": "docs/cli.md",
1621
+ "command": "buildchain kfd-3 register"
1622
+ },
1623
+ {
1624
+ "id": "kfd-3-register",
1625
+ "path": "docs/kfd-support.md",
1626
+ "command": "buildchain kfd-3 register"
1627
+ },
1628
+ {
1629
+ "id": "kfd-3-register",
1630
+ "path": "docs/kfd-support.md",
1631
+ "command": "buildchain kfd-3 register"
1632
+ },
1633
+ {
1634
+ "id": "kfd-3-register",
1635
+ "path": "docs/kfd-support.md",
1636
+ "command": "buildchain kfd-3 register"
1637
+ },
1638
+ {
1639
+ "id": "kfd-3-witness",
1640
+ "path": "docs/cli.md",
1641
+ "command": "buildchain kfd-3 witness"
1642
+ },
1643
+ {
1644
+ "id": "kfd-3-witness",
1645
+ "path": "docs/kfd-support.md",
1646
+ "command": "buildchain kfd-3 witness"
1647
+ },
1648
+ {
1649
+ "id": "kfd-3",
1650
+ "path": "docs/cli.md",
1651
+ "command": "buildchain kfd-3"
1652
+ },
1539
1653
  {
1540
1654
  "id": "lifecycle",
1541
1655
  "path": "docs/cli.md",
@@ -1947,9 +2061,9 @@
1947
2061
  "cliRegistryPath": "dist/site/cli-registry.json",
1948
2062
  "workflowRegistryPath": "dist/site/workflow-registry.json",
1949
2063
  "pageRegistryPath": "dist/site/page-registry.json",
1950
- "cliRegistryDigest": "7119de47a94f1b5903b79b7e6281cb205edce8712631efbc5e243ada3d64e817",
2064
+ "cliRegistryDigest": "d86d5cc6f0ef0e711a81edc8dec6178cd3f16f0c46ec4fdadbe8133bdc69789d",
1951
2065
  "workflowRegistryDigest": "a53dd3b746f8d697eaa79fb23efcbbeaa6018efb2c3af0d875526ab6bef939ad",
1952
- "pageRegistryDigest": "26ec63af6a85354720e125a3ba5bb23a8af135d7b8a9dcc6421d5ee6139b4326"
2066
+ "pageRegistryDigest": "9777d75469b33e843a0bd0aa814b45dbdb046ad60393b0aa54782563cb2b9bb7"
1953
2067
  },
1954
2068
  "comparison": {
1955
2069
  "missingCliRegistry": [],
@@ -17,6 +17,7 @@
17
17
  "./diagnostics": "./packages/core/diagnostics.js",
18
18
  "./homebrew": "./packages/core/homebrew.js",
19
19
  "./issue-reporting": "./packages/core/issue-reporting.js",
20
+ "./kfd-3-surfaces": "./packages/core/kfd3-surface-register.js",
20
21
  "./release-line-bootstrap": "./packages/core/release-line-bootstrap.js",
21
22
  "./readme-badges": "./packages/core/readme-badges.js",
22
23
  "./public-surface-audit": "./packages/core/public-surface-audit.js",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "contract": "kungfu-buildchain-site-manifest",
4
- "generatedAt": "2026-07-08T03:54:10.872Z",
5
- "publishedAt": "2026-07-08T03:54:10.872Z",
4
+ "generatedAt": "2026-07-08T04:41:25.510Z",
5
+ "publishedAt": "2026-07-08T04:41:25.510Z",
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": "5a698dae6a95bf881b0579b6dc29b58fab6e324c",
22
+ "sourceRevision": "95af4dcd440cec6d84a9a352e7aa6677ff580809",
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": "2.9.1",
40
+ "version": "2.10.0",
41
41
  "versionSource": "package.json#version"
42
42
  },
43
43
  "entrypoint": "buildchain-site.json",
@@ -53,7 +53,7 @@
53
53
  "path": "docs/MAP.md",
54
54
  "plane": "use",
55
55
  "exists": true,
56
- "digest": "sha256:10292c42c2778e9d164c698a0967c8ae3c50d5e4814170bd5c1426b0d240000a"
56
+ "digest": "sha256:3712026dcfcf44c16bc4def2acf246caee1ec036543c0fea265fa17b19d4de31"
57
57
  },
58
58
  {
59
59
  "id": "install",
@@ -165,7 +165,7 @@
165
165
  "path": "docs/cli.md",
166
166
  "plane": "use",
167
167
  "exists": true,
168
- "digest": "sha256:1922537563582f59e08b7c69c8a1549ea2b438229097b1111110b421a7ad84d8"
168
+ "digest": "sha256:85e014b7e053b74b620e5b438d54453e20b22f758a33dfd5ae970403fa41d9d7"
169
169
  },
170
170
  {
171
171
  "id": "build-facts",
@@ -175,6 +175,14 @@
175
175
  "exists": true,
176
176
  "digest": "sha256:75dcf7a6628dac9e982a455de9966044ae771611d4efc04e7264a2d4adb0bd3e"
177
177
  },
178
+ {
179
+ "id": "kfd-support",
180
+ "title": "KFD support and KFD-3 surface registration",
181
+ "path": "docs/kfd-support.md",
182
+ "plane": "verify",
183
+ "exists": true,
184
+ "digest": "sha256:4bb33e408a2129e1534e92bea78d3cc0e4d8f986b0fbb27fe73ae6eae46b9ca3"
185
+ },
178
186
  {
179
187
  "id": "lifecycle-protocol",
180
188
  "title": "Lifecycle protocol",
@@ -237,7 +245,7 @@
237
245
  "path": "docs/web-surface-deployments.md",
238
246
  "plane": "use",
239
247
  "exists": true,
240
- "digest": "sha256:b56fedfdf6784855e5854a747e7e869d746e6b0a9f419047bcc799945052eb8d"
248
+ "digest": "sha256:8ba3ab4715844df2d5ca07121cde4875f89be55bb44be27d63bae404611f3112"
241
249
  }
242
250
  ],
243
251
  "facts": [
package/docs/MAP.md CHANGED
@@ -22,6 +22,7 @@ manuals explain those facts and give operator examples.
22
22
  | --- | --- | --- |
23
23
  | KFD-1 / KFD-2 / KFD-3 release-passport gates | `dist/site/kfd-claims.json`, `dist/site/buildchain-contract.json`, `dist/site/artifact-schemas.json` | [`release-passport.md`](release-passport.md) |
24
24
  | KFD-3 public surface reverse audit | `dist/site/public-surface-audit.json`, `dist/site/cli-registry.json`, `dist/site/workflow-registry.json`, `dist/site/page-registry.json` | [`cli.md`](cli.md), [`site-bundle-contract.md`](site-bundle-contract.md) |
25
+ | KFD-3 surface registration and capability query | `buildchain.kfd3.json`, `dist/site/kfd-claims.json`, `buildchain.release.json` | [`kfd-support.md`](kfd-support.md) |
25
26
  | Floating `@v2` drift detection and compatibility issues | `dist/site/buildchain-contract.json` | [`reusable-build-surface.md`](reusable-build-surface.md#floating-ref-contract-lock) |
26
27
  | npm publish transactions, evidence, dist-tags, and recovery | `dist/site/release-model.json`, `dist/site/artifact-schemas.json` | [`publish-transaction.md`](publish-transaction.md) |
27
28
  | Git/source/version/module/product build facts | `dist/site/node-api-registry.json`, `dist/site/cli-registry.json`, `kungfu-buildchain-module-build-facts`, `kungfu-buildchain-product-build-facts` | [`build-facts.md`](build-facts.md) |
@@ -62,6 +63,7 @@ replace them.
62
63
  | How do I gate release artifacts with KFD-1 contract-world witnesses? | [`release-passport.md`](release-passport.md#kfd-1-contract-world-release-gate) | verify/use | stable |
63
64
  | How do I audit public KFD-2 release trust claims? | [`release-passport.md`](release-passport.md#kfd-2-release-trust-passport-audit) + [`cli.md`](cli.md) | verify/use | stable |
64
65
  | How do I gate KFD-3 collaboration-interface releases? | [`release-passport.md`](release-passport.md#kfd-3-collaboration-interface-release-gate) + [`cli.md`](cli.md) | verify/use | stable |
66
+ | How do I detect, register, audit, witness, or query KFD-3 product surfaces? | [`kfd-support.md`](kfd-support.md) + [`cli.md`](cli.md) | verify/use | stable |
65
67
  | How do I keep `@v2` floating refs while detecting Buildchain contract drift? | [`reusable-build-surface.md`](reusable-build-surface.md#floating-ref-contract-lock) | verify/use | stable |
66
68
  | How do I propagate finalized upstream releases to downstream package/site PRs? | [`release-propagation.md`](release-propagation.md) | use | preview |
67
69
  | 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 |
package/docs/cli.md CHANGED
@@ -168,6 +168,24 @@ import {
168
168
  assertPublicSurfaceReverseAudit(collectPublicSurfaceReverseAudit({ root: process.cwd() }));
169
169
  ```
170
170
 
171
+ `buildchain kfd-3` is the product-facing registration and query entrypoint for
172
+ KFD-3 surfaces. It is separate from Buildchain's self reverse audit: products
173
+ can detect standard public surfaces, register the accepted boundary, audit the
174
+ current source or artifact tree, generate a release-passport-compatible witness,
175
+ and expose a capability map for agents:
176
+
177
+ ```bash
178
+ buildchain kfd-3 detect --kind node-api --kind cli --json
179
+ buildchain kfd-3 register node-api --product Buildchain
180
+ buildchain kfd-3 audit --json
181
+ buildchain kfd-3 witness --kind prebuild --output .buildchain/kfd-3/collaboration-interface.prebuild.json
182
+ buildchain kfd-3 query buildchain --json
183
+ ```
184
+
185
+ The public Node API is exported from
186
+ `@kungfu-tech/buildchain/kfd-3-surfaces`. See [`kfd-support.md`](kfd-support.md)
187
+ for the detected / declared / enforced model and the agent query flow.
188
+
171
189
  Lifecycle runs also write a Buildchain observability JSONL log at
172
190
  `.buildchain/logs/events.jsonl` by default. Framework events use
173
191
  `source=buildchain`; consumer lifecycle commands use `source=user`. This lets a
@@ -0,0 +1,163 @@
1
+ # KFD Support
2
+
3
+ Buildchain implements KFD support as release evidence and product capability
4
+ facts, not as README prose. The machine-readable sources are:
5
+
6
+ - `dist/site/kfd-claims.json` for Buildchain-owned public claims and KFD-3
7
+ collaboration surfaces;
8
+ - `dist/site/public-surface-audit.json` for reverse enumeration of exposed CLI,
9
+ workflow, action, site, and documented command surfaces;
10
+ - `buildchain.release.json` for release-specific KFD-1, KFD-2, and KFD-3
11
+ passport results;
12
+ - `buildchain.kfd3.json` for product-owned KFD-3 surface registration.
13
+
14
+ ## KFD-1
15
+
16
+ KFD-1 proves that a product release is bound to one contract world. Buildchain
17
+ uses KFD-1 for its runtime contract, release-passport schemas, packaged docs,
18
+ Node exports, workflows, actions, and site-consumption facts.
19
+
20
+ For Buildchain itself, the source registry lives in
21
+ `packages/core/buildchain-kfd-claims.js` and is projected to
22
+ `dist/site/kfd-claims.json`. Release promotion binds that registry to exact
23
+ source and artifact hashes in the release passport.
24
+
25
+ ## KFD-2
26
+
27
+ KFD-2 requires public trust claims to be backed by machine-readable evidence.
28
+ Buildchain release passports fail or downgrade claims that only have prose.
29
+
30
+ Every public claim binds:
31
+
32
+ - declared source files;
33
+ - machine-readable evidence;
34
+ - source, evidence, and artifact hashes;
35
+ - artifact coordinates;
36
+ - verification result;
37
+ - audit boundary;
38
+ - responsibility state;
39
+ - residual risk.
40
+
41
+ ## KFD-3
42
+
43
+ KFD-3 closes participant-facing collaboration surfaces over a declared public
44
+ interface. Buildchain supports two complementary KFD-3 layers.
45
+
46
+ The first layer is Buildchain self-verification. Buildchain reverse-enumerates
47
+ real CLI commands, reusable workflow inputs, action inputs, site pages, and
48
+ documented command references, then compares those facts with the generated
49
+ registries in `dist/site/`. A missing registry entry fails `pnpm run check`.
50
+
51
+ The second layer is product surface registration. Products can ask Buildchain to
52
+ detect standard public surfaces, write a small product-owned registry, audit the
53
+ registry against the current artifact/source tree, generate a release-passport
54
+ compatible witness, and query the resulting capability map.
55
+
56
+ ## Detected, Declared, Enforced
57
+
58
+ KFD-3 surface registration uses three states.
59
+
60
+ | State | Meaning |
61
+ | --- | --- |
62
+ | `detected` | Buildchain found a candidate public surface from package metadata, wheel metadata, CLI bins, binary artifacts, docs, or site bundle facts. |
63
+ | `declared` | The product owner accepted that candidate into `buildchain.kfd3.json`. |
64
+ | `enforced` | The product has promoted a declared surface to a hard release boundary. Missing enforced surfaces fail release verification. |
65
+
66
+ Detection does not silently become product intent. `register` is the boundary
67
+ decision. Existing consumers are unaffected until they opt in.
68
+
69
+ ## CLI
70
+
71
+ Detect public surface candidates:
72
+
73
+ ```bash
74
+ buildchain kfd-3 detect --json
75
+ buildchain kfd-3 detect --kind node-api --kind cli --json
76
+ ```
77
+
78
+ Register standard surface classes:
79
+
80
+ ```bash
81
+ buildchain kfd-3 register node-api --product Buildchain
82
+ buildchain kfd-3 register cli
83
+ buildchain kfd-3 register python-api --artifact dist/wheel-unpacked
84
+ ```
85
+
86
+ Audit detected, declared, and enforced surfaces:
87
+
88
+ ```bash
89
+ buildchain kfd-3 audit --json
90
+ ```
91
+
92
+ Generate a witness for release passport collection:
93
+
94
+ ```bash
95
+ buildchain kfd-3 witness \
96
+ --kind prebuild \
97
+ --output .buildchain/kfd-3/collaboration-interface.prebuild.json
98
+ ```
99
+
100
+ Query capability facts for agents or downstream sites:
101
+
102
+ ```bash
103
+ buildchain kfd-3 query buildchain --json
104
+ buildchain kfd-3 query --passport buildchain.release.json --json
105
+ ```
106
+
107
+ ## Node API
108
+
109
+ The CLI is a thin wrapper over the public Node API:
110
+
111
+ ```js
112
+ import {
113
+ auditKfd3Surfaces,
114
+ createKfd3SurfaceWitness,
115
+ detectKfd3Surfaces,
116
+ queryKfd3Capabilities,
117
+ registerKfd3Surfaces,
118
+ } from "@kungfu-tech/buildchain/kfd-3-surfaces";
119
+ ```
120
+
121
+ Agents should prefer `queryKfd3Capabilities()` when deciding whether a product
122
+ capability is usable. The query result connects each capability to:
123
+
124
+ - KFD-3 surface identity and state;
125
+ - KFD-1 basis facts such as source and artifact paths or digests;
126
+ - KFD-2 trust evidence when a release passport is attached;
127
+ - residual risk and recommended agent action.
128
+
129
+ ## Standard Detectors
130
+
131
+ The initial detector set is intentionally conservative:
132
+
133
+ - npm packages: `package.json` `exports`, `main`, `types`, and `bin`;
134
+ - Python wheels: unpacked `.dist-info/METADATA`, `RECORD`,
135
+ `entry_points.txt`, and `top_level.txt`;
136
+ - CLI binaries: `package.json#bin` and files under `bin/`;
137
+ - standalone binaries and archives: common binary/archive outputs under
138
+ artifact directories such as `dist/`;
139
+ - documentation: `README.md`, `AGENTS.md`, and `docs/*.md`;
140
+ - site bundles: `dist/site/*.json`.
141
+
142
+ Python importability alone is not considered public API. A product can extend
143
+ the registry over time, but the first boundary is metadata-based.
144
+
145
+ ## Buildchain Self Dogfood
146
+
147
+ Buildchain dogfoods this model in two ways:
148
+
149
+ - `dist/site/kfd-claims.json` declares Buildchain's own KFD-3 collaboration
150
+ surface;
151
+ - `buildchain kfd-3 query buildchain --json` resolves the packaged
152
+ Buildchain capability map from that site fact source.
153
+
154
+ This lets downstream agents discover Buildchain's supported CLI, Node API,
155
+ release passport, workflow, and site bundle surfaces from the npm package
156
+ instead of scraping source files or README examples.
157
+
158
+ ## Known Gaps
159
+
160
+ Archive unpacking for `.whl`, `.tar.gz`, `.zip`, and platform-native installers
161
+ is intentionally not part of the first detector. Callers can point
162
+ `--artifact` at an unpacked artifact directory. Future Buildchain versions can
163
+ add archive readers without changing the registry contract.
@@ -384,15 +384,15 @@ and `pr-29/buildchain/docs/`. This makes surface-host requests for `/` and
384
384
  `/docs/` resolve to the surface's `index.html` files even when the CloudFront
385
385
  origin is an S3 REST origin rather than an S3 website endpoint.
386
386
 
387
- For host-per-surface previews, Buildchain also ensures each configured
388
- CloudFront distribution has `DefaultRootObject = "index.html"` before syncing
389
- the surface payload. This is required because the child surface host root
390
- request (`https://buildchain-pr-29.preview.libkungfu.dev/`) must first resolve
391
- to `/index.html`; the existing host/prefix mapping can then serve the object
392
- `pr-29/buildchain/index.html`, the same object that explicit
393
- `/index.html` requests already reach. The operation is idempotent per
394
- distribution and is emitted once even when multiple surfaces share the same
395
- CloudFront distribution.
387
+ Buildchain does not mutate the shared CloudFront distribution as part of a
388
+ consumer preview apply. In particular, it does not require preview roles to
389
+ update `DefaultRootObject`. Shared distribution and origin-request routing are
390
+ infrastructure prerequisites; the consumer workflow owns only its surface
391
+ payload, prefix alias objects, deployment manifests, invalidations, and health
392
+ checks. If root or nested surface routing still fails, the reusable workflow
393
+ uploads `buildchain-web-surface-*-diagnostics` artifacts containing the apply
394
+ and health JSON so the failing AWS operation or HTTP check is visible from the
395
+ consumer run.
396
396
 
397
397
  It can also execute a previously saved deploy plan. In that mode Buildchain
398
398
  recomputes the local artifact hash before running AWS commands and fails closed
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kungfu-tech/buildchain",
3
- "version": "2.9.1",
3
+ "version": "2.10.0",
4
4
  "private": false,
5
5
  "description": "Buildchain Release Passport, release governance, CLI toolkit, and site facts.",
6
6
  "repository": "https://github.com/kungfu-systems/buildchain",
@@ -20,6 +20,7 @@
20
20
  "./diagnostics": "./packages/core/diagnostics.js",
21
21
  "./homebrew": "./packages/core/homebrew.js",
22
22
  "./issue-reporting": "./packages/core/issue-reporting.js",
23
+ "./kfd-3-surfaces": "./packages/core/kfd3-surface-register.js",
23
24
  "./release-line-bootstrap": "./packages/core/release-line-bootstrap.js",
24
25
  "./readme-badges": "./packages/core/readme-badges.js",
25
26
  "./public-surface-audit": "./packages/core/public-surface-audit.js",
@@ -27,6 +27,7 @@ export const BUILDCHAIN_AGENT_MANUALS = Object.freeze([
27
27
  { id: "product-mechanism", title: "Product mechanism", path: "docs/product-mechanism.md", plane: "why" },
28
28
  { id: "cli", title: "CLI and npm package", path: "docs/cli.md", plane: "use" },
29
29
  { id: "build-facts", title: "Build Facts", path: "docs/build-facts.md", plane: "use" },
30
+ { id: "kfd-support", title: "KFD support and KFD-3 surface registration", path: "docs/kfd-support.md", plane: "verify" },
30
31
  { id: "lifecycle-protocol", title: "Lifecycle protocol", path: "docs/lifecycle-protocol.md", plane: "use" },
31
32
  { id: "reusable-build-surface", title: "Reusable build surface", path: "docs/reusable-build-surface.md", plane: "use" },
32
33
  { id: "publish-transaction", title: "Publish transaction", path: "docs/publish-transaction.md", plane: "verify" },
@@ -60,6 +61,7 @@ const SCHEMA_AND_STANDARD_FILES = Object.freeze([
60
61
  "packages/core/release-passport.js",
61
62
  "packages/core/buildchain-contract.js",
62
63
  "packages/core/buildchain-kfd-claims.js",
64
+ "packages/core/kfd3-surface-register.js",
63
65
  "packages/core/public-surface-audit.js",
64
66
  "dist/site/artifact-schemas.json",
65
67
  "dist/site/buildchain-contract.json",
@@ -80,6 +82,7 @@ const EXTRA_KFD1_FILES = Object.freeze([
80
82
  "packages/core/index.js",
81
83
  "packages/core/homebrew.js",
82
84
  "packages/core/build-facts.js",
85
+ "packages/core/kfd3-surface-register.js",
83
86
  "packages/core/release-propagation.js",
84
87
  "scripts/generate-site-bundle.mjs",
85
88
  "scripts/ensure-github-release.mjs",
@@ -282,6 +285,22 @@ export function createBuildchainPublicClaimDefinitions() {
282
285
  "dist/site/kfd-claims.json",
283
286
  ],
284
287
  },
288
+ {
289
+ id: "claim:buildchain-kfd-3-surface-registration",
290
+ claim: "Buildchain provides KFD-3 surface detection, registration, audit, witness, and query APIs so products can declare agent-facing public capability surfaces without hand-writing full witness registries.",
291
+ sourcePaths: [
292
+ "packages/core/kfd3-surface-register.js",
293
+ "bin/buildchain.mjs",
294
+ "docs/kfd-support.md",
295
+ "docs/cli.md",
296
+ ],
297
+ artifactPaths: [
298
+ "dist/site/cli-registry.json",
299
+ "dist/site/node-api-registry.json",
300
+ "dist/site/kfd-claims.json",
301
+ "dist/site/public-surface-audit.json",
302
+ ],
303
+ },
285
304
  {
286
305
  id: "claim:buildchain-readme-badge-facts",
287
306
  claim: "Buildchain README status badges are generated from repository-owned facts and verified release-passport evidence, not hand-maintained README prose.",
@@ -256,6 +256,21 @@ export {
256
256
  updateHomebrewTap,
257
257
  } from "./homebrew.js";
258
258
 
259
+ export {
260
+ KFD3_CAPABILITY_QUERY_CONTRACT,
261
+ KFD3_DEFAULT_REGISTRY_PATH,
262
+ KFD3_SURFACE_AUDIT_CONTRACT,
263
+ KFD3_SURFACE_DETECTION_CONTRACT,
264
+ KFD3_SURFACE_REGISTRY_CONTRACT,
265
+ auditKfd3Surfaces,
266
+ createKfd3SurfaceWitness,
267
+ detectKfd3Surfaces,
268
+ queryKfd3Capabilities,
269
+ readKfd3SurfaceRegistry,
270
+ registerKfd3Surfaces,
271
+ writeKfd3SurfaceRegistry,
272
+ } from "./kfd3-surface-register.js";
273
+
259
274
  export {
260
275
  RELEASE_PROPAGATION_GRAPH_CONTRACT,
261
276
  RELEASE_PROPAGATION_LOCK_CONTRACT,