@kungfu-tech/kfd 1.0.0-alpha.1 → 1.0.0-alpha.12

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/README.md CHANGED
@@ -113,6 +113,36 @@ e.g. `https://kfd.libkungfu.dev/1`). This repository publishes
113
113
  `@kungfu-tech/kfd` — the decision texts plus a machine-readable
114
114
  `registry.json` — which the site consumes as its single fact source.
115
115
 
116
+ Machine consumers that need KFD-owned standard identity should read
117
+ `standards.json`. It is the versioned metadata surface for stable standard
118
+ keys, document routes and SHA-256 digests, schema IDs, KFD-owned concept names,
119
+ and machine-interface contract versions. In Node or TypeScript projects, import
120
+ it as:
121
+
122
+ ```js
123
+ import standards from "@kungfu-tech/kfd/standards.json" with { type: "json" };
124
+ ```
125
+
126
+ KFD package semver is only the distribution version. KFD-owned machine
127
+ interfaces carry their own `schemaVersion` and `contract` fields. Compatible
128
+ additions may keep the same interface version; semantic changes, required-field
129
+ changes, verification meaning changes, or responsibility-boundary changes must
130
+ use a new interface version or contract.
131
+
132
+ KFD-2 publishes release-claims and release-trust-passport schemas under
133
+ `schemas/kfd-2/`. These schemas let Buildchain and other release systems audit
134
+ whether public release claims are bound to source facts, evidence, hashes,
135
+ audit boundaries, residual risk, and responsibility state. See
136
+ [`docs/kfd-2-release-trust.md`](docs/kfd-2-release-trust.md).
137
+
138
+ KFD-3 also publishes a general collaboration-interface schema and witness
139
+ schema under `schemas/kfd-3/`. These schemas are for participant-facing product
140
+ interfaces, not only agent APIs. A product such as Kungfu may implement an
141
+ agent-first profile, but that profile remains a product-specific realization of
142
+ KFD-3. The KFD-owned boundary is the standard vocabulary, schema IDs, and
143
+ closed-world evidence shape. See
144
+ [`docs/kfd-3-collaboration-interface.md`](docs/kfd-3-collaboration-interface.md).
145
+
116
146
  ## Current decisions
117
147
 
118
148
  | ID | Kind | Title | Status |
@@ -137,18 +167,25 @@ reference KFDs; KFDs never depend on repository internals.
137
167
  ```text
138
168
  decisions/ one markdown file per decision (kfd-N.md)
139
169
  registry.json machine-readable index (schemaVersion 1, contract kfd-registry)
170
+ standards.json machine-readable KFD standard metadata (schemaVersion 1,
171
+ contract kfd-standards-metadata)
172
+ schemas/ JSON schemas for package metadata and KFD-owned schema IDs
140
173
  site/ machine-readable site bundle for kfd.libkungfu.dev renderers
174
+ buildchain.release-propagation.json
175
+ Buildchain release propagation graph for KFD -> site consumers
141
176
  release-impact.json
142
177
  Buildchain surface-aware impact ledger for production release passports
143
178
  scripts/ conformance check: registry and documents must agree
144
179
  ```
145
180
 
146
181
  `node scripts/check.mjs` (also `pnpm run check`) verifies numbering
147
- uniqueness, registry/document agreement, status validity, and the release
148
- impact ledger required by Buildchain production release passports. Releases are
149
- governed by Buildchain; this package versions itself under KFD-1's own rules:
150
- the outer package line remains `v1.0`, while patch and prerelease numbers are
151
- advanced by Buildchain release promotion.
182
+ uniqueness, registry/document agreement, standards metadata/schema agreement,
183
+ status validity, decision document SHA-256 bindings, interface contract
184
+ version bindings, and the release impact ledger required by Buildchain
185
+ production release passports. Releases are governed by Buildchain; this package
186
+ versions itself under KFD-1's own rules: the outer package line remains `v1.0`,
187
+ while patch and prerelease numbers are advanced by Buildchain release
188
+ promotion.
152
189
 
153
190
  ## Release impact ledger
154
191
 
@@ -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/docs/MAP.md CHANGED
@@ -8,7 +8,11 @@
8
8
  | What should a site renderer consume to render `kfd.libkungfu.dev`? | [`../site/kfd-site.json`](../site/kfd-site.json) |
9
9
  | What is the top-level product accountability principle? | [KFD-2](../decisions/kfd-2.md) |
10
10
  | What stance should products take toward humans and agents as reasoning participants? | [KFD-3](../decisions/kfd-3.md) |
11
+ | What schema should products use for KFD-3 participant-facing collaboration interfaces? | [`kfd-3-collaboration-interface.md`](kfd-3-collaboration-interface.md) |
11
12
  | What does a specific decision say? | [`../decisions/`](../decisions) (index: [`../registry.json`](../registry.json)) |
13
+ | What machine metadata should Buildchain or another consumer import for KFD standard identity and schema IDs? | [`../standards.json`](../standards.json) |
14
+ | What schema validates the standards metadata surface? | [`../schemas/kfd-standards.schema.json`](../schemas/kfd-standards.schema.json) |
15
+ | 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
16
  | How do I cite a decision? | [`../README.md`](../README.md) — cite by number, e.g. `KFD-1` |
13
17
  | How do decisions change over time? | [`../CONTRIBUTING.md`](../CONTRIBUTING.md) — append-only; explicit supersession mints a new number |
14
18
  | How is this package versioned and released? | [KFD-1](../decisions/kfd-1.md) applied to itself; Buildchain governs releases |
@@ -0,0 +1,46 @@
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/release-claims.schema.json`: the product's declared public
11
+ release claims.
12
+ - `schemas/kfd-2/release-trust-passport.schema.json`: the verifier's result
13
+ after auditing those claims against evidence.
14
+
15
+ The intended Buildchain flow is:
16
+
17
+ ```text
18
+ release claims -> evidence audit -> release trust passport -> release passport
19
+ ```
20
+
21
+ Each claim should declare the statement being made, the source of the claim,
22
+ machine-readable evidence, the audit boundary, residual risk, and responsibility
23
+ state. The trust passport should then record whether each claim is bound to
24
+ evidence, which evidence was checked, what the result was, and who owns the
25
+ release decision.
26
+
27
+ ## Interface Versioning
28
+
29
+ KFD package semver is only the distribution version. It is not the version of a
30
+ KFD-owned machine interface.
31
+
32
+ Every KFD-owned machine interface uses:
33
+
34
+ - `schemaVersion`: the interface version consumed by tools.
35
+ - `contract`: the stable contract name, such as `kfd-2-release-claims`.
36
+ - `$id`: the canonical schema URL for the current stable interface.
37
+
38
+ Compatible additions may keep `schemaVersion: 1`. A change that alters required
39
+ fields, field semantics, verification meaning, audit boundary semantics, or
40
+ responsibility semantics must not silently reuse the same interface contract.
41
+ It must introduce a new interface version or, when the standard itself changes,
42
+ a new KFD decision or amendment path.
43
+
44
+ The same rule applies to KFD-1 and KFD-3 schemas. Their current schemas already
45
+ carry `schemaVersion: 1` and a `contract` value; this document makes the
46
+ evolution rule explicit across the KFD package.
@@ -0,0 +1,59 @@
1
+ # KFD-3 Collaboration Interface
2
+
3
+ KFD-3 is a cooperation standard for intelligent participants. It is not an
4
+ agent-only standard. Products can use it for humans, agents, operators,
5
+ extension authors, API consumers, hosted-service users, service integrators,
6
+ maintainers, and other participants who need to understand value, choices, and
7
+ constraints before cooperating.
8
+
9
+ The KFD-owned schema surface is intentionally general:
10
+
11
+ - `schemas/kfd-3/collaboration-interface.schema.json` declares a product's
12
+ participant-facing collaboration interface.
13
+ - `schemas/kfd-3/witness.schema.json` declares release or build evidence that
14
+ the interface is discoverable, classified, constraint-transparent, and closed
15
+ over reachable participant-facing entrypoints.
16
+
17
+ KFD owns the standard identity, schema IDs, concept names, and compatibility
18
+ rules. Product repositories own their concrete profiles. For example, Kungfu
19
+ may expose an agent-first profile because agents are a first-class participant
20
+ in the current product, but that profile remains a Kungfu implementation of
21
+ KFD-3 rather than the definition of KFD-3 itself.
22
+
23
+ ## Required shape
24
+
25
+ A product collaboration interface should identify:
26
+
27
+ - participant profiles, such as `human`, `agent`, `operator`,
28
+ `extension-author`, or `api-consumer`;
29
+ - minimal entrypoints that let each participant discover the rest of the
30
+ interface;
31
+ - participant-visible surfaces, such as CLI commands, JSON APIs, manuals,
32
+ skills, GUI routes, envelopes, packages, or protocols;
33
+ - visible constraints, including what is restricted, why, and where review or
34
+ escalation happens;
35
+ - choice paths that let participants choose or decline safe cooperation modes;
36
+ - a closure policy for reachable participant-facing entrypoints.
37
+
38
+ The KFD-3 witness schema is intentionally stricter about closure: a passing
39
+ closed-world proof reports reachable entrypoints, classified entrypoints, and
40
+ an empty `unclassifiedEntrypoints` list. This prevents a product from exposing
41
+ a participant-facing or callable backdoor API outside the declared interface.
42
+
43
+ ## Product profile boundary
44
+
45
+ Concrete product profiles may add their own contracts, registry fields, command
46
+ metadata, generated manuals, or audit output. Those fields should reference the
47
+ KFD-3 schema IDs from `standards.json` instead of copying KFD-owned terms.
48
+
49
+ Examples:
50
+
51
+ - A Kungfu agent-first bridge can map local commands, provider skills, command
52
+ metadata, and operating manuals into a KFD-3 collaboration interface.
53
+ - A Buildchain release passport can carry a KFD-3 witness once a downstream
54
+ product can freeze and verify the concrete interface artifact.
55
+ - A hosted surface can use the same standard to show where policy constraints,
56
+ permission gates, and user choices are visible before cooperation is
57
+ requested.
58
+
59
+ This keeps KFD-3 general while making real product interfaces testable.
@@ -0,0 +1,13 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "contract": "kfd-release-anchor",
4
+ "line": "v1.0",
5
+ "channel": "alpha",
6
+ "npmPackage": "@kungfu-tech/kfd",
7
+ "npmVersion": "1.0.0-alpha.12",
8
+ "source": {
9
+ "repository": "kungfu-systems/kfd",
10
+ "branch": "alpha/v1/v1.0"
11
+ },
12
+ "rationale": "KFD uses an anchored/manual Buildchain mode: the public package version is an explicit release fact, while the outer KFD line remains v1.0."
13
+ }
package/package.json CHANGED
@@ -1,17 +1,47 @@
1
1
  {
2
2
  "name": "@kungfu-tech/kfd",
3
- "version": "1.0.0-alpha.1",
3
+ "version": "1.0.0-alpha.12",
4
4
  "description": "Kung Fu Decisions (KFD): the kungfu-systems organization-wide decision registry, as a consumable artifact",
5
5
  "license": "Apache-2.0",
6
6
  "files": [
7
7
  "README.md",
8
8
  "decisions",
9
9
  "registry.json",
10
+ "standards.json",
11
+ "kfd.release.json",
12
+ "schemas",
10
13
  "site",
14
+ "buildchain.release-propagation.json",
15
+ "release-impact.json",
16
+ ".buildchain/kfd-1/contract-world.witness.json",
17
+ ".buildchain/kfd-2",
18
+ ".buildchain/kfd-3",
11
19
  "docs"
12
20
  ],
21
+ "exports": {
22
+ "./package.json": "./package.json",
23
+ "./README.md": "./README.md",
24
+ "./registry.json": "./registry.json",
25
+ "./standards.json": "./standards.json",
26
+ "./kfd.release.json": "./kfd.release.json",
27
+ "./site/kfd-site.json": "./site/kfd-site.json",
28
+ "./buildchain.release-propagation.json": "./buildchain.release-propagation.json",
29
+ "./release-impact.json": "./release-impact.json",
30
+ "./buildchain/kfd-1/contract-world.witness.json": "./.buildchain/kfd-1/contract-world.witness.json",
31
+ "./buildchain/kfd-2/public-release-trust.claim.json": "./.buildchain/kfd-2/public-release-trust.claim.json",
32
+ "./buildchain/kfd-3/collaboration-interface.json": "./.buildchain/kfd-3/collaboration-interface.json",
33
+ "./buildchain/kfd-3/collaboration-interface.prebuild.json": "./.buildchain/kfd-3/collaboration-interface.prebuild.json",
34
+ "./buildchain/kfd-3/collaboration-interface.artifact.json": "./.buildchain/kfd-3/collaboration-interface.artifact.json",
35
+ "./schemas/*.json": "./schemas/*.json",
36
+ "./schemas/*/*.json": "./schemas/*/*.json",
37
+ "./decisions/*.md": "./decisions/*.md",
38
+ "./docs/*": "./docs/*"
39
+ },
13
40
  "scripts": {
14
- "check": "node scripts/check.mjs"
41
+ "check": "node scripts/check.mjs",
42
+ "update:kfd-1-witness": "node scripts/update-kfd-1-witness.mjs",
43
+ "update:kfd-2-claim": "node scripts/update-kfd-2-claim.mjs",
44
+ "update:kfd-3-witness": "node scripts/update-kfd-3-witness.mjs"
15
45
  },
16
46
  "publishConfig": {
17
47
  "registry": "https://registry.npmjs.org/",
@@ -0,0 +1,65 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "contract": "kungfu-buildchain-impact",
4
+ "release": {
5
+ "line": "v1.0",
6
+ "channel": "release",
7
+ "targetRef": "release/v1/v1.0"
8
+ },
9
+ "versionImpact": {
10
+ "final": "minor",
11
+ "source": "kfd-surface-register",
12
+ "rationale": "This change additively registers KFD-owned standards metadata, KFD-2 release trust schemas, KFD-3 collaboration-interface schemas, KFD-3 self-verification witnesses, and KFD-1 document/interface integrity bindings while keeping existing registry and decision surfaces compatible."
13
+ },
14
+ "surfaceImpacts": [
15
+ {
16
+ "id": "kfd-content",
17
+ "impact": "patch",
18
+ "class": "content",
19
+ "rationale": "KFD documents are append-only content coordinates; current decision text changes do not alter a machine-consumed surface."
20
+ },
21
+ {
22
+ "id": "kfd-registry-schema",
23
+ "impact": "patch",
24
+ "class": "compatible",
25
+ "rationale": "registry.json keeps schemaVersion 1 and the existing entry shape, including number, id, slug, title, kind, status, path, and url; slug and path values are stable number coordinates."
26
+ },
27
+ {
28
+ "id": "kfd-standards-metadata",
29
+ "impact": "minor",
30
+ "class": "additive",
31
+ "rationale": "standards.json and schemas/ add KFD-2 release-claims and release-trust-passport schema IDs, explicit KFD-1/2/3 interface versions, KFD document SHA-256 bindings, and KFD-owned concept names for downstream consumers."
32
+ },
33
+ {
34
+ "id": "kfd-package-structure",
35
+ "impact": "minor",
36
+ "class": "additive",
37
+ "rationale": "The npm package now also publishes KFD-2 schemas, KFD-2 documentation, and KFD-3 self collaboration-interface witnesses through existing schemas/, docs/, standards.json, .buildchain/, and subpath exports while preserving existing README.md, decisions/, registry.json, and site/ paths."
38
+ },
39
+ {
40
+ "id": "kfd-3-self-collaboration",
41
+ "impact": "minor",
42
+ "class": "release-passport",
43
+ "rationale": "KFD now declares its own participant-facing collaboration interface and ships pre-build plus artifact-side KFD-3 witnesses so Buildchain can audit interface closure in the release passport."
44
+ },
45
+ {
46
+ "id": "kfd-2-public-release-trust-claim",
47
+ "impact": "minor",
48
+ "class": "release-passport",
49
+ "rationale": "KFD now ships an explicit machine-bound public KFD-2 release trust claim and passes it into Buildchain release passport generation."
50
+ },
51
+ {
52
+ "id": "kfd-release-anchor",
53
+ "impact": "minor",
54
+ "class": "release-governance",
55
+ "rationale": "KFD now declares its package version through an anchored/manual release manifest so package version state is an explicit release fact rather than an auto-derived Buildchain side effect."
56
+ },
57
+ {
58
+ "id": "kfd-release-propagation",
59
+ "impact": "patch",
60
+ "class": "compatible",
61
+ "rationale": "The KFD to site-libkungfu-dev propagation graph now targets the downstream site's actual main branch and documents the exact KFD package surfaces consumed by kfd.libkungfu.dev, without changing the release propagation graph contract."
62
+ }
63
+ ],
64
+ "summary": "KFD v1.0 production promotion is minor-impact because it additively exposes KFD-2 release trust metadata, KFD-1/2/3 interface version metadata, KFD-3 self-verification witnesses, document integrity bindings, and a corrected site release-propagation target for Buildchain and other consumers; existing registry, decision text, site bundle, and propagation graph contracts remain compatible."
65
+ }
@@ -0,0 +1,57 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://kfd.libkungfu.dev/schemas/kfd-1/contract-world.schema.json",
4
+ "title": "KFD-1 contract world",
5
+ "type": "object",
6
+ "required": [
7
+ "schemaVersion",
8
+ "contract",
9
+ "standard",
10
+ "factSource",
11
+ "surfaces"
12
+ ],
13
+ "properties": {
14
+ "schemaVersion": {
15
+ "const": 1
16
+ },
17
+ "contract": {
18
+ "const": "kfd-1-contract-world"
19
+ },
20
+ "standard": {
21
+ "const": "kfd-1"
22
+ },
23
+ "factSource": {
24
+ "type": "string",
25
+ "minLength": 1
26
+ },
27
+ "surfaces": {
28
+ "type": "array",
29
+ "items": {
30
+ "type": "object",
31
+ "required": [
32
+ "id",
33
+ "class",
34
+ "description"
35
+ ],
36
+ "properties": {
37
+ "id": {
38
+ "type": "string",
39
+ "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$"
40
+ },
41
+ "class": {
42
+ "enum": [
43
+ "integration-time",
44
+ "cross-time"
45
+ ]
46
+ },
47
+ "description": {
48
+ "type": "string",
49
+ "minLength": 1
50
+ }
51
+ },
52
+ "additionalProperties": false
53
+ }
54
+ }
55
+ },
56
+ "additionalProperties": true
57
+ }
@@ -0,0 +1,63 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://kfd.libkungfu.dev/schemas/kfd-1/witness.schema.json",
4
+ "title": "KFD-1 witness",
5
+ "type": "object",
6
+ "required": [
7
+ "schemaVersion",
8
+ "contract",
9
+ "standard",
10
+ "contractWorld",
11
+ "evidence"
12
+ ],
13
+ "properties": {
14
+ "schemaVersion": {
15
+ "const": 1
16
+ },
17
+ "contract": {
18
+ "const": "kfd-1-witness"
19
+ },
20
+ "standard": {
21
+ "const": "kfd-1"
22
+ },
23
+ "contractWorld": {
24
+ "type": "object",
25
+ "required": [
26
+ "schemaId",
27
+ "digest"
28
+ ],
29
+ "properties": {
30
+ "schemaId": {
31
+ "const": "https://kfd.libkungfu.dev/schemas/kfd-1/contract-world.schema.json"
32
+ },
33
+ "digest": {
34
+ "type": "string",
35
+ "minLength": 1
36
+ }
37
+ },
38
+ "additionalProperties": false
39
+ },
40
+ "evidence": {
41
+ "type": "array",
42
+ "items": {
43
+ "type": "object",
44
+ "required": [
45
+ "kind",
46
+ "path"
47
+ ],
48
+ "properties": {
49
+ "kind": {
50
+ "type": "string",
51
+ "minLength": 1
52
+ },
53
+ "path": {
54
+ "type": "string",
55
+ "minLength": 1
56
+ }
57
+ },
58
+ "additionalProperties": true
59
+ }
60
+ }
61
+ },
62
+ "additionalProperties": true
63
+ }