@kungfu-tech/kfd 1.0.0-alpha.1 → 1.0.0-alpha.13
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/.buildchain/kfd-1/contract-world.witness.json +249 -0
- package/.buildchain/kfd-2/public-release-trust.claim.json +113 -0
- package/.buildchain/kfd-3/collaboration-interface.artifact.json +574 -0
- package/.buildchain/kfd-3/collaboration-interface.json +323 -0
- package/.buildchain/kfd-3/collaboration-interface.prebuild.json +897 -0
- package/README.md +112 -29
- package/TRADEMARKS.md +60 -0
- package/buildchain.release-propagation.json +32 -0
- package/decisions/kfd-1.md +37 -23
- package/decisions/kfd-2.md +30 -11
- package/decisions/kfd-3.md +25 -6
- package/docs/MAP.md +9 -0
- package/docs/kfd-2-release-trust.md +78 -0
- package/docs/kfd-3-collaboration-interface.md +77 -0
- package/kfd.release.json +13 -0
- package/package.json +34 -2
- package/registry.json +1 -1
- package/release-impact.json +65 -0
- package/schemas/kfd-1/contract-world.schema.json +57 -0
- package/schemas/kfd-1/witness.schema.json +63 -0
- package/schemas/kfd-2/release-claims.schema.json +331 -0
- package/schemas/kfd-2/release-trust-passport.schema.json +276 -0
- package/schemas/kfd-2/trust-taxonomy.schema.json +219 -0
- package/schemas/kfd-3/collaboration-interface.schema.json +482 -0
- package/schemas/kfd-3/witness.schema.json +159 -0
- package/schemas/kfd-standards.schema.json +239 -0
- package/site/kfd-site.json +37 -8
- package/standards.json +205 -0
package/README.md
CHANGED
|
@@ -5,6 +5,8 @@ set of standing, cross-repository norms that products and their consumers
|
|
|
5
5
|
weld to. Each decision has an immutable number (`KFD-N`), a kind, a status,
|
|
6
6
|
and a single authoritative text in this repository.
|
|
7
7
|
|
|
8
|
+
Stable rendered site: `https://kfd.libkungfu.dev`.
|
|
9
|
+
|
|
8
10
|
KFDs can be **principles** or **procedures**. Principles state what must remain
|
|
9
11
|
true across kungfu-systems; procedures state how a class of work enforces or
|
|
10
12
|
protects a principle.
|
|
@@ -14,14 +16,14 @@ protects a principle.
|
|
|
14
16
|
The first three KFDs form the public foundation for kungfu-systems:
|
|
15
17
|
|
|
16
18
|
```text
|
|
17
|
-
KFD-1:
|
|
19
|
+
KFD-1: facts must not drift.
|
|
18
20
|
KFD-2: trust must start from facts.
|
|
19
|
-
KFD-3: cooperation must start from transparent value
|
|
21
|
+
KFD-3: cooperation must start from transparent value.
|
|
20
22
|
```
|
|
21
23
|
|
|
22
|
-
Together they define the load-bearing path for Kungfu products: make
|
|
23
|
-
|
|
24
|
-
cooperate through visible value rather than hidden pressure.
|
|
24
|
+
Together they define the load-bearing path for Kungfu products: make facts
|
|
25
|
+
non-drifting, make trust inspectable from those facts, and let humans and
|
|
26
|
+
agents cooperate through visible value rather than hidden pressure.
|
|
25
27
|
|
|
26
28
|
## Foundation model
|
|
27
29
|
|
|
@@ -31,22 +33,21 @@ act, delegate, and remember across many surfaces.
|
|
|
31
33
|
|
|
32
34
|
| Layer | Decision | Reader question | Commitment |
|
|
33
35
|
|---|---|---|---|
|
|
34
|
-
| Fact-source ontology | KFD-1 | What can count as a fact? |
|
|
36
|
+
| Fact-source ontology | KFD-1 | What can count as a fact? | Facts must not drift: a load-bearing contract world comes from one declared fact source. |
|
|
35
37
|
| Participant-to-object trust | KFD-2 | When can a user or agent trust a claim, product, artifact, or control surface? | Trust starts from inspectable facts and responsibility state. |
|
|
36
38
|
| Participant-to-participant cooperation | KFD-3 | How should peer intelligent participants cooperate? | Cooperation starts from transparent value, stable choice, and explainable constraints, not pressure. |
|
|
37
39
|
|
|
38
40
|
In short:
|
|
39
41
|
|
|
40
42
|
```text
|
|
41
|
-
|
|
43
|
+
non-drifting facts -> inspectable trust -> transparent cooperation
|
|
42
44
|
```
|
|
43
45
|
|
|
44
|
-
This is why KFDs are not only internal governance text. KFD-1
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
are visible.
|
|
46
|
+
This is why KFDs are not only internal governance text. KFD-1 gives the
|
|
47
|
+
foundation model its first layer by making fact sources operational: a
|
|
48
|
+
fact-bearing contract world must be declared, inspectable, and unable to drift
|
|
49
|
+
invisibly. KFD-2 then defines how trust can stand on those facts. KFD-3
|
|
50
|
+
defines how humans and agents can cooperate once facts and trust are visible.
|
|
50
51
|
|
|
51
52
|
Real-world agent work turns ordinary work into a dense system of products,
|
|
52
53
|
files, repositories, traces, policies, humans, and agents. In that world,
|
|
@@ -89,7 +90,7 @@ The first screen should be derived from this README:
|
|
|
89
90
|
- Foundation signal: the `Foundation triad` section, especially the three
|
|
90
91
|
one-line commitments.
|
|
91
92
|
- First-screen explanation: the beginning of `Foundation model`, ending at the
|
|
92
|
-
`
|
|
93
|
+
`non-drifting facts -> inspectable trust -> transparent cooperation` chain.
|
|
93
94
|
|
|
94
95
|
Decision cards, detail links, and machine paths should come from
|
|
95
96
|
`registry.json`. The machine-readable site bundle lives at `site/kfd-site.json`
|
|
@@ -102,10 +103,14 @@ separate homepage wording that can drift from this package.
|
|
|
102
103
|
|
|
103
104
|
KFDs are not a detached manifesto, but they are not a demand that readers adopt
|
|
104
105
|
a Kungfu product before understanding the decisions. A philosophy becomes
|
|
105
|
-
load-bearing only when it can be seen in a concrete case.
|
|
106
|
-
case
|
|
107
|
-
|
|
108
|
-
|
|
106
|
+
load-bearing only when it can be seen in a concrete case. The first concrete
|
|
107
|
+
case is this package itself: `standards.json`, `schemas/`, `docs/`,
|
|
108
|
+
`site/kfd-site.json`, and `scripts/check.mjs` show how KFD-1, KFD-2, and KFD-3
|
|
109
|
+
are expressed as consumable interfaces for both humans and agents. For the
|
|
110
|
+
broader product case, use the main Kungfu product entrypoint
|
|
111
|
+
(`https://kungfu.tech`) for product philosophy, and Buildchain
|
|
112
|
+
(`https://buildchain.libkungfu.dev`) for release and provenance
|
|
113
|
+
accountability. This registry states the commitments; this package and those
|
|
109
114
|
entrypoints show how the commitments are meant to be borne in practice.
|
|
110
115
|
|
|
111
116
|
Rendered index: `https://kfd.libkungfu.dev` (stable machine path per entry,
|
|
@@ -113,13 +118,80 @@ e.g. `https://kfd.libkungfu.dev/1`). This repository publishes
|
|
|
113
118
|
`@kungfu-tech/kfd` — the decision texts plus a machine-readable
|
|
114
119
|
`registry.json` — which the site consumes as its single fact source.
|
|
115
120
|
|
|
121
|
+
Machine consumers that need KFD-owned standard identity should read
|
|
122
|
+
`standards.json`. It is the versioned metadata surface for stable standard
|
|
123
|
+
keys, document routes and SHA-256 digests, schema IDs, KFD-owned concept names,
|
|
124
|
+
and machine-interface contract versions. In Node or TypeScript projects, import
|
|
125
|
+
it as:
|
|
126
|
+
|
|
127
|
+
```js
|
|
128
|
+
import standards from "@kungfu-tech/kfd/standards.json" with { type: "json" };
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
## Agent Quickstart
|
|
132
|
+
|
|
133
|
+
Agents consuming this package should start from the same sources as humans:
|
|
134
|
+
|
|
135
|
+
1. Read this README for the foundation model and package map.
|
|
136
|
+
2. Read `standards.json` for canonical KFD numbers, schema IDs, concept names,
|
|
137
|
+
and interface contracts.
|
|
138
|
+
3. Use `site/kfd-site.json` decision metadata or the KFD-3 collaboration
|
|
139
|
+
interface fact-source metadata to identify the public KFD fact source.
|
|
140
|
+
4. Use `schemas/kfd-2/trust-taxonomy.schema.json` for KFD-2 residual-risk and
|
|
141
|
+
trust-downgrade values. Unknown taxonomy values are invalid.
|
|
142
|
+
5. Use `schemas/kfd-3/collaboration-interface.schema.json` and
|
|
143
|
+
`schemas/kfd-3/witness.schema.json` to inspect collaboration interfaces.
|
|
144
|
+
6. If a needed KFD-2 taxonomy value is missing, open a KFD GitHub issue rather
|
|
145
|
+
than inventing a local value:
|
|
146
|
+
`https://github.com/kungfu-systems/kfd/issues/new?title=KFD-2%20trust%20taxonomy%20extension%20request`.
|
|
147
|
+
|
|
148
|
+
KFD package semver is only the distribution version. KFD-owned machine
|
|
149
|
+
interfaces carry their own `schemaVersion` and `contract` fields. Compatible
|
|
150
|
+
additions may keep the same interface version; semantic changes, required-field
|
|
151
|
+
changes, verification meaning changes, or responsibility-boundary changes must
|
|
152
|
+
use a new interface version or contract.
|
|
153
|
+
|
|
154
|
+
KFD-2 publishes trust-taxonomy, release-claims, and release-trust-passport
|
|
155
|
+
schemas under `schemas/kfd-2/`. These schemas let Buildchain and other release
|
|
156
|
+
systems audit whether public release claims are bound to source facts,
|
|
157
|
+
evidence, hashes, audit boundaries, residual risk, and responsibility state. See
|
|
158
|
+
[`docs/kfd-2-release-trust.md`](docs/kfd-2-release-trust.md).
|
|
159
|
+
|
|
160
|
+
KFD-3 also publishes a general collaboration-interface schema and witness
|
|
161
|
+
schema under `schemas/kfd-3/`. These schemas are for participant-facing product
|
|
162
|
+
interfaces, not only agent APIs. A product such as Kungfu may implement an
|
|
163
|
+
agent-first profile, but that profile remains a product-specific realization of
|
|
164
|
+
KFD-3. The KFD-owned boundary is the standard vocabulary, schema IDs, and
|
|
165
|
+
closed-world evidence shape. See
|
|
166
|
+
[`docs/kfd-3-collaboration-interface.md`](docs/kfd-3-collaboration-interface.md).
|
|
167
|
+
|
|
116
168
|
## Current decisions
|
|
117
169
|
|
|
118
|
-
| ID | Kind |
|
|
170
|
+
| ID | Kind | Axiom | Status |
|
|
119
171
|
|---|---|---|---|
|
|
120
|
-
| [KFD-1](decisions/kfd-1.md) | procedure |
|
|
121
|
-
| [KFD-2](decisions/kfd-2.md) | principle | Trust must start from facts
|
|
122
|
-
| [KFD-3](decisions/kfd-3.md) | principle | Cooperation must start from transparent value
|
|
172
|
+
| [KFD-1](decisions/kfd-1.md) | procedure | Facts must not drift. | active |
|
|
173
|
+
| [KFD-2](decisions/kfd-2.md) | principle | Trust must start from facts. | active |
|
|
174
|
+
| [KFD-3](decisions/kfd-3.md) | principle | Cooperation must start from transparent value. | active |
|
|
175
|
+
|
|
176
|
+
## Decision metadata
|
|
177
|
+
|
|
178
|
+
Every rendered decision page should make the KFD fact source explicit. The
|
|
179
|
+
public KFD fact source is the GitHub-hosted `kungfu-systems/kfd` git
|
|
180
|
+
repository. GitHub is the current canonical coordination and hosting surface;
|
|
181
|
+
the load-bearing facts are the commit-addressed repository contents.
|
|
182
|
+
|
|
183
|
+
Decision metadata should expose:
|
|
184
|
+
|
|
185
|
+
- Public fact source: `https://github.com/kungfu-systems/kfd`
|
|
186
|
+
- Load-bearing coordinate: commit-addressed repository contents.
|
|
187
|
+
- Canonical paths: `decisions/kfd-N.md`, `registry.json`, `standards.json`.
|
|
188
|
+
- Stable rendered index: `https://kfd.libkungfu.dev`.
|
|
189
|
+
- Rendered URL: `https://kfd.libkungfu.dev/N`.
|
|
190
|
+
|
|
191
|
+
Rendered pages, npm package contents, Buildchain release passports, and
|
|
192
|
+
`kfd.libkungfu.dev` are projections or evidence surfaces. A GitHub issue is an
|
|
193
|
+
extension request path, not a KFD fact by itself; it becomes part of the KFD
|
|
194
|
+
fact source only after the resulting change is committed to the repository.
|
|
123
195
|
|
|
124
196
|
## How to cite
|
|
125
197
|
|
|
@@ -137,18 +209,25 @@ reference KFDs; KFDs never depend on repository internals.
|
|
|
137
209
|
```text
|
|
138
210
|
decisions/ one markdown file per decision (kfd-N.md)
|
|
139
211
|
registry.json machine-readable index (schemaVersion 1, contract kfd-registry)
|
|
212
|
+
standards.json machine-readable KFD standard metadata (schemaVersion 1,
|
|
213
|
+
contract kfd-standards-metadata)
|
|
214
|
+
schemas/ JSON schemas for package metadata and KFD-owned schema IDs
|
|
140
215
|
site/ machine-readable site bundle for kfd.libkungfu.dev renderers
|
|
216
|
+
buildchain.release-propagation.json
|
|
217
|
+
Buildchain release propagation graph for KFD -> site consumers
|
|
141
218
|
release-impact.json
|
|
142
219
|
Buildchain surface-aware impact ledger for production release passports
|
|
143
220
|
scripts/ conformance check: registry and documents must agree
|
|
144
221
|
```
|
|
145
222
|
|
|
146
223
|
`node scripts/check.mjs` (also `pnpm run check`) verifies numbering
|
|
147
|
-
uniqueness, registry/document agreement,
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
224
|
+
uniqueness, registry/document agreement, standards metadata/schema agreement,
|
|
225
|
+
status validity, decision document SHA-256 bindings, interface contract
|
|
226
|
+
version bindings, and the release impact ledger required by Buildchain
|
|
227
|
+
production release passports. Releases are governed by Buildchain; this package
|
|
228
|
+
versions itself under KFD-1's own rules: the outer package line remains `v1.0`,
|
|
229
|
+
while patch and prerelease numbers are advanced by Buildchain release
|
|
230
|
+
promotion.
|
|
152
231
|
|
|
153
232
|
## Release impact ledger
|
|
154
233
|
|
|
@@ -166,6 +245,10 @@ paths, or published structure under KFD-1. These values are Buildchain release
|
|
|
166
245
|
passport impact classifications; they do not by themselves open a new
|
|
167
246
|
`@kungfu-tech/kfd` package major or minor line.
|
|
168
247
|
|
|
169
|
-
## License
|
|
248
|
+
## License and official status
|
|
170
249
|
|
|
171
|
-
[Apache License 2.0](LICENSE).
|
|
250
|
+
Repository contents are licensed under the [Apache License 2.0](LICENSE).
|
|
251
|
+
Apache-2.0 grants broad reuse rights for the licensed contents, but it does
|
|
252
|
+
not grant KFD/Kungfu trademarks, official status, certification status, or
|
|
253
|
+
endorsement. The official source, name-use, fork, derivative, and agent-facing
|
|
254
|
+
authority boundaries are defined in [`TRADEMARKS.md`](TRADEMARKS.md).
|
package/TRADEMARKS.md
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Trademarks and Official Status
|
|
2
|
+
|
|
3
|
+
The contents of this repository are licensed under the Apache License 2.0.
|
|
4
|
+
That license covers use, reproduction, modification, and distribution of the
|
|
5
|
+
licensed repository contents under the terms of `LICENSE`.
|
|
6
|
+
|
|
7
|
+
Apache-2.0 does not grant trademark rights, official project status,
|
|
8
|
+
certification status, or endorsement by kungfu-systems.
|
|
9
|
+
|
|
10
|
+
## Names and marks
|
|
11
|
+
|
|
12
|
+
The names `Kungfu`, `Kung Fu Decisions`, `KFD`, `kungfu-systems`,
|
|
13
|
+
`@kungfu-tech`, and related project names, logos, domains, and package names
|
|
14
|
+
identify kungfu-systems projects and release surfaces. They may be used for
|
|
15
|
+
accurate, non-misleading reference to the origin of the work, but not to imply
|
|
16
|
+
official status, certification, endorsement, or project ownership.
|
|
17
|
+
|
|
18
|
+
## Official sources
|
|
19
|
+
|
|
20
|
+
The current public KFD fact source is:
|
|
21
|
+
|
|
22
|
+
```text
|
|
23
|
+
https://github.com/kungfu-systems/kfd
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
The stable rendered KFD site is:
|
|
27
|
+
|
|
28
|
+
```text
|
|
29
|
+
https://kfd.libkungfu.dev
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
The public npm package is:
|
|
33
|
+
|
|
34
|
+
```text
|
|
35
|
+
npm:@kungfu-tech/kfd
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Those surfaces are official only when published or controlled by
|
|
39
|
+
kungfu-systems. Forks, mirrors, local copies, downstream packages, generated
|
|
40
|
+
sites, and derivative works are not official KFD sources unless kungfu-systems
|
|
41
|
+
explicitly says so.
|
|
42
|
+
|
|
43
|
+
## Forks and derivatives
|
|
44
|
+
|
|
45
|
+
Forks and derivative works may say that they are based on KFD or implement
|
|
46
|
+
specific KFD decisions when that statement is accurate. They must not describe
|
|
47
|
+
themselves as the official KFD registry, canonical KFD release, certified KFD
|
|
48
|
+
implementation, or kungfu-systems-approved project unless that status has been
|
|
49
|
+
explicitly granted by kungfu-systems.
|
|
50
|
+
|
|
51
|
+
If a derivative changes KFD content, metadata, schemas, or package surfaces, it
|
|
52
|
+
should make those changes clear to readers and agents so that official KFD
|
|
53
|
+
facts do not drift into derivative facts.
|
|
54
|
+
|
|
55
|
+
## Agent-facing rule
|
|
56
|
+
|
|
57
|
+
An agent consuming KFD should treat Apache-2.0 as permission to reuse the
|
|
58
|
+
licensed repository contents, not as permission to claim official KFD authority.
|
|
59
|
+
When official status matters, the agent should resolve facts through the
|
|
60
|
+
public KFD fact source and the metadata surfaces declared in this repository.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"contract": "kungfu-buildchain-release-propagation-graph",
|
|
4
|
+
"nodes": [
|
|
5
|
+
{
|
|
6
|
+
"id": "kfd",
|
|
7
|
+
"repository": "kungfu-systems/kfd",
|
|
8
|
+
"package": "@kungfu-tech/kfd"
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"id": "site-libkungfu-dev",
|
|
12
|
+
"repository": "kungfu-systems/site-libkungfu-dev",
|
|
13
|
+
"lockPath": "buildchain.upstreams/kfd.release.json",
|
|
14
|
+
"baseRef": "main"
|
|
15
|
+
}
|
|
16
|
+
],
|
|
17
|
+
"edges": [
|
|
18
|
+
{
|
|
19
|
+
"id": "kfd-to-site-libkungfu-dev",
|
|
20
|
+
"from": "kfd",
|
|
21
|
+
"to": "site-libkungfu-dev",
|
|
22
|
+
"channelPolicy": "preserve",
|
|
23
|
+
"consumes": [
|
|
24
|
+
"@kungfu-tech/kfd",
|
|
25
|
+
"site/kfd-site.json",
|
|
26
|
+
"registry.json",
|
|
27
|
+
"standards.json",
|
|
28
|
+
"decisions/*.md"
|
|
29
|
+
]
|
|
30
|
+
}
|
|
31
|
+
]
|
|
32
|
+
}
|
package/decisions/kfd-1.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# KFD-1:
|
|
1
|
+
# KFD-1: Facts must not drift — contract worlds need one fact source
|
|
2
2
|
|
|
3
3
|
- Status: active
|
|
4
4
|
- Number: 1
|
|
@@ -7,27 +7,30 @@
|
|
|
7
7
|
|
|
8
8
|
## One sentence
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
Facts must not drift.
|
|
11
|
+
|
|
12
|
+
Any contract world that users, agents, or systems weld to must come from one
|
|
13
|
+
declared fact source and change only through an explicit compatibility
|
|
14
|
+
boundary.
|
|
13
15
|
|
|
14
16
|
## Foundation role
|
|
15
17
|
|
|
16
|
-
Within the KFD-1/2/3 foundation, this is the
|
|
18
|
+
Within the KFD-1/2/3 foundation, this is the fact-source procedure:
|
|
17
19
|
|
|
18
20
|
```text
|
|
19
|
-
|
|
21
|
+
facts must not drift
|
|
20
22
|
```
|
|
21
23
|
|
|
22
|
-
KFD-1 makes
|
|
23
|
-
changelog volume, cadence pressure,
|
|
24
|
-
|
|
25
|
-
are integrating with, replaying, auditing, or trusting.
|
|
24
|
+
KFD-1 makes fact-bearing contract worlds explicit so they do not drift under
|
|
25
|
+
changelog volume, cadence pressure, implementation pressure, or marketing
|
|
26
|
+
pressure. It is the procedure that lets users and agents know which fact world
|
|
27
|
+
they are integrating with, replaying, auditing, or trusting.
|
|
26
28
|
|
|
27
|
-
KFD-1
|
|
28
|
-
versioning protects release lines from contract drift,
|
|
29
|
-
|
|
30
|
-
agent-facing surfaces
|
|
29
|
+
KFD-1 has concrete implementation surfaces across the Kungfu ecosystem:
|
|
30
|
+
versioning protects release lines from contract drift, config contracts protect
|
|
31
|
+
multi-target configuration from drifting across runtimes, products, and
|
|
32
|
+
agent-facing surfaces, and KFD metadata protects the decision package's own
|
|
33
|
+
standard surfaces from drifting away from their declared source.
|
|
31
34
|
|
|
32
35
|
## Premise: the welded-surface register
|
|
33
36
|
|
|
@@ -140,17 +143,16 @@ table and the machine record never diverge): `schemaVersion: 1`,
|
|
|
140
143
|
|
|
141
144
|
## Relation to KFD-2 and KFD-3
|
|
142
145
|
|
|
143
|
-
KFD-2 establishes fact-first product accountability:
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
decisions.
|
|
146
|
+
KFD-2 establishes fact-first product accountability: trust must start from
|
|
147
|
+
facts. KFD-1 defines the lower layer that makes such facts load-bearing:
|
|
148
|
+
important facts must not drift from the contract world that declares them.
|
|
149
|
+
Without KFD-1, KFD-2 would have facts that cannot reliably be re-read,
|
|
150
|
+
replayed, audited, or trusted over time.
|
|
149
151
|
|
|
150
152
|
KFD-3 establishes non-coercive cooperation with intelligent participants. That
|
|
151
|
-
cooperation depends on
|
|
152
|
-
delegate, replay, or refuse more honestly when the
|
|
153
|
-
|
|
153
|
+
cooperation depends on non-drifting facts: users and agents can choose,
|
|
154
|
+
delegate, replay, or refuse more honestly when the fact world is legible and
|
|
155
|
+
does not drift invisibly.
|
|
154
156
|
|
|
155
157
|
## How KFDs themselves are versioned
|
|
156
158
|
|
|
@@ -164,6 +166,18 @@ registry schema, the package structure) can still require `minor` or `major`
|
|
|
164
166
|
surface-impact review in the Buildchain release passport, but that review
|
|
165
167
|
classification is not a silent package-line upgrade.
|
|
166
168
|
|
|
169
|
+
## Implementation case: the KFD package
|
|
170
|
+
|
|
171
|
+
The `@kungfu-tech/kfd` npm package is a self-proof case for this procedure.
|
|
172
|
+
Its decision texts, `registry.json`, `standards.json`, schemas, site bundle,
|
|
173
|
+
and release propagation graph are published as stable surfaces. Their contract
|
|
174
|
+
world is not inferred from README prose or package version alone: it is exposed
|
|
175
|
+
through `standards.json`, checked by `scripts/check.mjs`, and bound into the
|
|
176
|
+
KFD-1 witness under `.buildchain/kfd-1/contract-world.witness.json`.
|
|
177
|
+
|
|
178
|
+
This lets humans and agents inspect how the KFD package prevents its own
|
|
179
|
+
contract surfaces from drifting while it evolves.
|
|
180
|
+
|
|
167
181
|
## Adopters
|
|
168
182
|
|
|
169
183
|
Each adopting repository keeps an adoption record, its welded-surface
|
package/decisions/kfd-2.md
CHANGED
|
@@ -7,6 +7,8 @@
|
|
|
7
7
|
|
|
8
8
|
## One sentence
|
|
9
9
|
|
|
10
|
+
Trust must start from facts.
|
|
11
|
+
|
|
10
12
|
A product must not ask users or agents to trust important claims before the
|
|
11
13
|
relevant facts are inspectable, local where possible, and connected to
|
|
12
14
|
responsibility state.
|
|
@@ -19,8 +21,9 @@ KFDs can be principles or procedures:
|
|
|
19
21
|
products, repositories, and release lines change.
|
|
20
22
|
- A **procedure** states how a class of work enforces or protects a principle.
|
|
21
23
|
|
|
22
|
-
This KFD is a principle. KFD-1 is
|
|
23
|
-
|
|
24
|
+
This KFD is a principle. KFD-1 is the procedure that keeps the fact sources
|
|
25
|
+
under this principle from drifting. KFD-3 is the principle that governs how
|
|
26
|
+
humans and agents cooperate once facts and trust are visible.
|
|
24
27
|
|
|
25
28
|
## Foundation role
|
|
26
29
|
|
|
@@ -31,9 +34,9 @@ trust must start from facts
|
|
|
31
34
|
```
|
|
32
35
|
|
|
33
36
|
KFD-2 says Kungfu products should not ask users or agents to trust a claim
|
|
34
|
-
before the product has made the relevant facts inspectable. KFD-1 protects
|
|
35
|
-
|
|
36
|
-
human or agent who must understand and act on those facts.
|
|
37
|
+
before the product has made the relevant facts inspectable. KFD-1 protects the
|
|
38
|
+
non-drifting fact source those claims stand on. KFD-3 protects the relationship
|
|
39
|
+
with the human or agent who must understand and act on those facts.
|
|
37
40
|
|
|
38
41
|
## Principle
|
|
39
42
|
|
|
@@ -81,14 +84,15 @@ leaves enough evidence for later review.
|
|
|
81
84
|
|
|
82
85
|
## Relation to KFD-1
|
|
83
86
|
|
|
84
|
-
KFD-1 is a procedure. It
|
|
85
|
-
contract
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
state to proof-backed decision.
|
|
87
|
+
KFD-1 is a procedure. It defines what can count as a load-bearing fact source:
|
|
88
|
+
facts must not drift from the contract world that declares them. KFD-2 is the
|
|
89
|
+
next layer: once facts are non-drifting and inspectable, trust claims must be
|
|
90
|
+
bound to those facts and to responsibility state.
|
|
89
91
|
|
|
90
92
|
KFD-2 does not supersede KFD-1. KFD-1 remains active and is one concrete
|
|
91
|
-
procedure that implements KFD-2
|
|
93
|
+
procedure that implements KFD-2 wherever trust depends on contract worlds,
|
|
94
|
+
release evidence, fact ledgers, agent control panes, extension gates, hosted
|
|
95
|
+
surfaces, schemas, configs, or package metadata.
|
|
92
96
|
|
|
93
97
|
## Supersession rule
|
|
94
98
|
|
|
@@ -98,6 +102,21 @@ explicitly and the registry records the affected decision. Two active KFDs that
|
|
|
98
102
|
conflict without an explicit supersession relationship are a registry defect,
|
|
99
103
|
not an invitation to pick the newer text silently.
|
|
100
104
|
|
|
105
|
+
## Implementation case: the KFD package
|
|
106
|
+
|
|
107
|
+
The `@kungfu-tech/kfd` npm package is a self-proof case for this principle.
|
|
108
|
+
It does not ask humans or agents to trust the KFD registry only because the
|
|
109
|
+
README says so. It publishes inspectable facts: decision documents,
|
|
110
|
+
`registry.json`, `standards.json`, JSON schemas, document hashes, release-impact
|
|
111
|
+
metadata, and conformance checks.
|
|
112
|
+
|
|
113
|
+
KFD-2 also owns the trust taxonomy used by release claims, release trust
|
|
114
|
+
passports, and KFD-3 witnesses. Unknown residual-risk or trust-downgrade values
|
|
115
|
+
fail validation until KFD records them in
|
|
116
|
+
`schemas/kfd-2/trust-taxonomy.schema.json`. When an agent needs a new value,
|
|
117
|
+
the declared extension path is to open an issue in
|
|
118
|
+
`https://github.com/kungfu-systems/kfd` rather than inventing a private value.
|
|
119
|
+
|
|
101
120
|
## Adopters
|
|
102
121
|
|
|
103
122
|
Each adopting repository cites this KFD when designing or changing a fact
|
package/decisions/kfd-3.md
CHANGED
|
@@ -7,6 +7,8 @@
|
|
|
7
7
|
|
|
8
8
|
## One sentence
|
|
9
9
|
|
|
10
|
+
Cooperation must start from transparent value.
|
|
11
|
+
|
|
10
12
|
A product must not obtain cooperation through pressure, manipulation, hidden
|
|
11
13
|
control, or forced workflow capture. It must make value, choices, and
|
|
12
14
|
constraints visible enough for intelligent participants to understand, decide,
|
|
@@ -28,11 +30,11 @@ kungfu-systems takes toward humans and agents as reasoning participants.
|
|
|
28
30
|
Within the KFD-1/2/3 foundation, this is the relationship path:
|
|
29
31
|
|
|
30
32
|
```text
|
|
31
|
-
cooperation must start from transparent value
|
|
33
|
+
cooperation must start from transparent value
|
|
32
34
|
```
|
|
33
35
|
|
|
34
36
|
KFD-2 protects the truth path: show facts before asking for trust. KFD-3
|
|
35
|
-
protects the relationship path: show value before asking for
|
|
37
|
+
protects the relationship path: show value before asking for cooperation.
|
|
36
38
|
|
|
37
39
|
## Principle
|
|
38
40
|
|
|
@@ -151,12 +153,29 @@ KFD-3 says the path of least resistance should not be built from pressure or
|
|
|
151
153
|
hidden control. Together:
|
|
152
154
|
|
|
153
155
|
```text
|
|
154
|
-
KFD-
|
|
155
|
-
KFD-
|
|
156
|
+
KFD-1: facts must not drift.
|
|
157
|
+
KFD-2: trust must start from facts.
|
|
158
|
+
KFD-3: cooperation must start from transparent value.
|
|
156
159
|
```
|
|
157
160
|
|
|
158
|
-
KFD-
|
|
159
|
-
intelligent participant who must walk that
|
|
161
|
+
KFD-1 protects the fact-source layer. KFD-2 protects the trust layer. KFD-3
|
|
162
|
+
protects the relationship with the intelligent participant who must walk that
|
|
163
|
+
path.
|
|
164
|
+
|
|
165
|
+
## Implementation case: the KFD package
|
|
166
|
+
|
|
167
|
+
The `@kungfu-tech/kfd` npm package is a self-proof case for this principle.
|
|
168
|
+
Its README gives humans and agents the same quickstart path. `standards.json`
|
|
169
|
+
gives stable standard identity, schema IDs, and concept names. The KFD-3
|
|
170
|
+
schemas define collaboration interfaces, witnesses, and extension requests, so
|
|
171
|
+
an agent can discover both the valid interface and the standard path for asking
|
|
172
|
+
to extend it.
|
|
173
|
+
|
|
174
|
+
For example, if an agent needs a KFD-2 trust-taxonomy value that does not
|
|
175
|
+
exist, the KFD-3 collaboration path is not hidden maintainer pressure or local
|
|
176
|
+
invention. The declared path is a visible GitHub issue in the KFD repository,
|
|
177
|
+
where the new value can be reviewed and, if accepted, added to the KFD-owned
|
|
178
|
+
taxonomy for everyone.
|
|
160
179
|
|
|
161
180
|
## Adopters
|
|
162
181
|
|
package/docs/MAP.md
CHANGED
|
@@ -5,10 +5,19 @@
|
|
|
5
5
|
| What is KFD, and what decisions exist? | [`../README.md`](../README.md) |
|
|
6
6
|
| What is the KFD-1/2/3 foundation triad? | [`../README.md`](../README.md#foundation-triad) |
|
|
7
7
|
| What worldview structure does the foundation triad express? | [`../README.md`](../README.md#foundation-model) |
|
|
8
|
+
| How should an agent quickly understand this package? | [`../README.md`](../README.md#agent-quickstart) |
|
|
9
|
+
| What is the concrete self-proof case for KFD-1/2/3? | [`../README.md`](../README.md#product-proof-path) and the implementation case in each KFD |
|
|
10
|
+
| Where is the public KFD fact source? | [`../README.md`](../README.md#decision-metadata) and [`../site/kfd-site.json`](../site/kfd-site.json) decision metadata |
|
|
11
|
+
| What does Apache-2.0 cover, and what remains official/trademark-bound? | [`../TRADEMARKS.md`](../TRADEMARKS.md) |
|
|
8
12
|
| What should a site renderer consume to render `kfd.libkungfu.dev`? | [`../site/kfd-site.json`](../site/kfd-site.json) |
|
|
9
13
|
| What is the top-level product accountability principle? | [KFD-2](../decisions/kfd-2.md) |
|
|
10
14
|
| What stance should products take toward humans and agents as reasoning participants? | [KFD-3](../decisions/kfd-3.md) |
|
|
15
|
+
| What schema should products use for KFD-3 participant-facing collaboration interfaces? | [`kfd-3-collaboration-interface.md`](kfd-3-collaboration-interface.md) |
|
|
16
|
+
| What should an agent do when a needed KFD-2 trust taxonomy value is missing? | [`kfd-2-release-trust.md`](kfd-2-release-trust.md#trust-taxonomy) — open a KFD GitHub issue |
|
|
11
17
|
| What does a specific decision say? | [`../decisions/`](../decisions) (index: [`../registry.json`](../registry.json)) |
|
|
18
|
+
| What machine metadata should Buildchain or another consumer import for KFD standard identity and schema IDs? | [`../standards.json`](../standards.json) |
|
|
19
|
+
| What schema validates the standards metadata surface? | [`../schemas/kfd-standards.schema.json`](../schemas/kfd-standards.schema.json) |
|
|
20
|
+
| What schema should release systems use for KFD-2 release claims and trust passports? | [`kfd-2-release-trust.md`](kfd-2-release-trust.md) |
|
|
12
21
|
| How do I cite a decision? | [`../README.md`](../README.md) — cite by number, e.g. `KFD-1` |
|
|
13
22
|
| How do decisions change over time? | [`../CONTRIBUTING.md`](../CONTRIBUTING.md) — append-only; explicit supersession mints a new number |
|
|
14
23
|
| How is this package versioned and released? | [KFD-1](../decisions/kfd-1.md) applied to itself; Buildchain governs releases |
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# KFD-2 Release Trust Metadata
|
|
2
|
+
|
|
3
|
+
KFD-2 says that trust must start from inspectable facts and responsibility
|
|
4
|
+
state. For releases, that means a product must not ask users or agents to trust
|
|
5
|
+
release claims only because they appear in prose, changelogs, or repository
|
|
6
|
+
history.
|
|
7
|
+
|
|
8
|
+
This package defines two KFD-owned machine interfaces:
|
|
9
|
+
|
|
10
|
+
- `schemas/kfd-2/trust-taxonomy.schema.json`: the KFD-owned taxonomy for
|
|
11
|
+
residual-risk types, trust impact, machine provability, agent actions, and
|
|
12
|
+
downgrade reasons.
|
|
13
|
+
- `schemas/kfd-2/release-claims.schema.json`: the product's declared public
|
|
14
|
+
release claims.
|
|
15
|
+
- `schemas/kfd-2/release-trust-passport.schema.json`: the verifier's result
|
|
16
|
+
after auditing those claims against evidence.
|
|
17
|
+
|
|
18
|
+
The intended Buildchain flow is:
|
|
19
|
+
|
|
20
|
+
```text
|
|
21
|
+
release claims -> evidence audit -> release trust passport -> release passport
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Each claim should declare the statement being made, the source of the claim,
|
|
25
|
+
machine-readable evidence, the audit boundary, residual risk, and responsibility
|
|
26
|
+
state. The trust passport should then record whether each claim is bound to
|
|
27
|
+
evidence, which evidence was checked, what the result was, and who owns the
|
|
28
|
+
release decision.
|
|
29
|
+
|
|
30
|
+
## Trust Taxonomy
|
|
31
|
+
|
|
32
|
+
KFD-2 owns the vocabulary for residual risks and trust downgrades. A product,
|
|
33
|
+
release tool, or agent must not invent new residual-risk values locally and
|
|
34
|
+
still claim KFD-2 conformance. Unknown values fail schema validation.
|
|
35
|
+
|
|
36
|
+
The current taxonomy is published in
|
|
37
|
+
`schemas/kfd-2/trust-taxonomy.schema.json`. It defines:
|
|
38
|
+
|
|
39
|
+
- `riskType`: what kind of trust gap remains;
|
|
40
|
+
- `trustImpact`: whether the gap is informational, downgraded, failing, or
|
|
41
|
+
unverifiable;
|
|
42
|
+
- `machineProvability`: whether the gap can be fully proved by machine;
|
|
43
|
+
- `agentAction`: what an agent should do next;
|
|
44
|
+
- `downgradeReason`: how a verifier maps residual risk into a release trust
|
|
45
|
+
result.
|
|
46
|
+
|
|
47
|
+
If an agent needs a KFD-2 value that is not present, the standard extension
|
|
48
|
+
path is to open an issue in the KFD repository:
|
|
49
|
+
|
|
50
|
+
```text
|
|
51
|
+
https://github.com/kungfu-systems/kfd/issues/new?title=KFD-2%20trust%20taxonomy%20extension%20request
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
The issue should state the missing value, the field it belongs to, the product
|
|
55
|
+
or release scenario that needs it, and why existing values cannot express the
|
|
56
|
+
case. Until KFD accepts the new value into the taxonomy schema, consumers
|
|
57
|
+
should treat the value as invalid rather than as a soft warning.
|
|
58
|
+
|
|
59
|
+
## Interface Versioning
|
|
60
|
+
|
|
61
|
+
KFD package semver is only the distribution version. It is not the version of a
|
|
62
|
+
KFD-owned machine interface.
|
|
63
|
+
|
|
64
|
+
Every KFD-owned machine interface uses:
|
|
65
|
+
|
|
66
|
+
- `schemaVersion`: the interface version consumed by tools.
|
|
67
|
+
- `contract`: the stable contract name, such as `kfd-2-release-claims`.
|
|
68
|
+
- `$id`: the canonical schema URL for the current stable interface.
|
|
69
|
+
|
|
70
|
+
Compatible additions may keep `schemaVersion: 1`. A change that alters required
|
|
71
|
+
fields, field semantics, verification meaning, audit boundary semantics, or
|
|
72
|
+
responsibility semantics must not silently reuse the same interface contract.
|
|
73
|
+
It must introduce a new interface version or, when the standard itself changes,
|
|
74
|
+
a new KFD decision or amendment path.
|
|
75
|
+
|
|
76
|
+
The same rule applies to KFD-1 and KFD-3 schemas. Their current schemas already
|
|
77
|
+
carry `schemaVersion: 1` and a `contract` value; this document makes the
|
|
78
|
+
evolution rule explicit across the KFD package.
|