@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
|
@@ -0,0 +1,77 @@
|
|
|
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
|
+
- public fact sources that identify where load-bearing facts live and which
|
|
30
|
+
surfaces are only projections;
|
|
31
|
+
- minimal entrypoints that let each participant discover the rest of the
|
|
32
|
+
interface;
|
|
33
|
+
- participant-visible surfaces, such as CLI commands, JSON APIs, manuals,
|
|
34
|
+
skills, GUI routes, envelopes, packages, or protocols;
|
|
35
|
+
- visible constraints, including what is restricted, why, and where review or
|
|
36
|
+
escalation happens;
|
|
37
|
+
- choice paths that let participants choose or decline safe cooperation modes;
|
|
38
|
+
- extension requests that tell participants how to ask for a new value,
|
|
39
|
+
capability, or interface when the declared interface is insufficient;
|
|
40
|
+
- a closure policy for reachable participant-facing entrypoints.
|
|
41
|
+
|
|
42
|
+
The KFD-3 witness schema is intentionally stricter about closure: a passing
|
|
43
|
+
closed-world proof reports reachable entrypoints, classified entrypoints, and
|
|
44
|
+
an empty `unclassifiedEntrypoints` list. This prevents a product from exposing
|
|
45
|
+
a participant-facing or callable backdoor API outside the declared interface.
|
|
46
|
+
|
|
47
|
+
## Product profile boundary
|
|
48
|
+
|
|
49
|
+
Concrete product profiles may add their own contracts, registry fields, command
|
|
50
|
+
metadata, generated manuals, or audit output. Those fields should reference the
|
|
51
|
+
KFD-3 schema IDs from `standards.json` instead of copying KFD-owned terms.
|
|
52
|
+
|
|
53
|
+
Examples:
|
|
54
|
+
|
|
55
|
+
- A Kungfu agent-first bridge can map local commands, provider skills, command
|
|
56
|
+
metadata, and operating manuals into a KFD-3 collaboration interface.
|
|
57
|
+
- A Buildchain release passport can carry a KFD-3 witness once a downstream
|
|
58
|
+
product can freeze and verify the concrete interface artifact.
|
|
59
|
+
- A hosted surface can use the same standard to show where policy constraints,
|
|
60
|
+
permission gates, and user choices are visible before cooperation is
|
|
61
|
+
requested.
|
|
62
|
+
|
|
63
|
+
This keeps KFD-3 general while making real product interfaces testable.
|
|
64
|
+
|
|
65
|
+
## Extension Requests
|
|
66
|
+
|
|
67
|
+
KFD-3 treats extension requests as part of the collaboration interface. A
|
|
68
|
+
human or agent should not have to infer how to cooperate when a declared
|
|
69
|
+
interface is missing a value or capability. The interface should expose a
|
|
70
|
+
visible request path, the participants it is for, the trigger, and the expected
|
|
71
|
+
outcome.
|
|
72
|
+
|
|
73
|
+
For KFD itself, the standard request path for missing KFD-2 trust-taxonomy
|
|
74
|
+
values is a GitHub issue in `kungfu-systems/kfd`. This is both a KFD-2 trust
|
|
75
|
+
rule and a KFD-3 collaboration rule: the taxonomy defines what values are valid,
|
|
76
|
+
while the collaboration interface tells agents how to request an extension
|
|
77
|
+
without inventing private values or relying on pressure.
|
package/kfd.release.json
ADDED
|
@@ -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.13",
|
|
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,49 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kungfu-tech/kfd",
|
|
3
|
-
"version": "1.0.0-alpha.
|
|
3
|
+
"version": "1.0.0-alpha.13",
|
|
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
|
+
"TRADEMARKS.md",
|
|
8
9
|
"decisions",
|
|
9
10
|
"registry.json",
|
|
11
|
+
"standards.json",
|
|
12
|
+
"kfd.release.json",
|
|
13
|
+
"schemas",
|
|
10
14
|
"site",
|
|
15
|
+
"buildchain.release-propagation.json",
|
|
16
|
+
"release-impact.json",
|
|
17
|
+
".buildchain/kfd-1/contract-world.witness.json",
|
|
18
|
+
".buildchain/kfd-2",
|
|
19
|
+
".buildchain/kfd-3",
|
|
11
20
|
"docs"
|
|
12
21
|
],
|
|
22
|
+
"exports": {
|
|
23
|
+
"./package.json": "./package.json",
|
|
24
|
+
"./README.md": "./README.md",
|
|
25
|
+
"./TRADEMARKS.md": "./TRADEMARKS.md",
|
|
26
|
+
"./registry.json": "./registry.json",
|
|
27
|
+
"./standards.json": "./standards.json",
|
|
28
|
+
"./kfd.release.json": "./kfd.release.json",
|
|
29
|
+
"./site/kfd-site.json": "./site/kfd-site.json",
|
|
30
|
+
"./buildchain.release-propagation.json": "./buildchain.release-propagation.json",
|
|
31
|
+
"./release-impact.json": "./release-impact.json",
|
|
32
|
+
"./buildchain/kfd-1/contract-world.witness.json": "./.buildchain/kfd-1/contract-world.witness.json",
|
|
33
|
+
"./buildchain/kfd-2/public-release-trust.claim.json": "./.buildchain/kfd-2/public-release-trust.claim.json",
|
|
34
|
+
"./buildchain/kfd-3/collaboration-interface.json": "./.buildchain/kfd-3/collaboration-interface.json",
|
|
35
|
+
"./buildchain/kfd-3/collaboration-interface.prebuild.json": "./.buildchain/kfd-3/collaboration-interface.prebuild.json",
|
|
36
|
+
"./buildchain/kfd-3/collaboration-interface.artifact.json": "./.buildchain/kfd-3/collaboration-interface.artifact.json",
|
|
37
|
+
"./schemas/*.json": "./schemas/*.json",
|
|
38
|
+
"./schemas/*/*.json": "./schemas/*/*.json",
|
|
39
|
+
"./decisions/*.md": "./decisions/*.md",
|
|
40
|
+
"./docs/*": "./docs/*"
|
|
41
|
+
},
|
|
13
42
|
"scripts": {
|
|
14
|
-
"check": "node scripts/check.mjs"
|
|
43
|
+
"check": "node scripts/check.mjs",
|
|
44
|
+
"update:kfd-1-witness": "node scripts/update-kfd-1-witness.mjs",
|
|
45
|
+
"update:kfd-2-claim": "node scripts/update-kfd-2-claim.mjs",
|
|
46
|
+
"update:kfd-3-witness": "node scripts/update-kfd-3-witness.mjs"
|
|
15
47
|
},
|
|
16
48
|
"publishConfig": {
|
|
17
49
|
"registry": "https://registry.npmjs.org/",
|
package/registry.json
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"number": 1,
|
|
7
7
|
"id": "KFD-1",
|
|
8
8
|
"slug": "kfd-1",
|
|
9
|
-
"title": "
|
|
9
|
+
"title": "Facts must not drift: contract worlds need one fact source",
|
|
10
10
|
"kind": "procedure",
|
|
11
11
|
"status": "active",
|
|
12
12
|
"path": "decisions/kfd-1.md",
|
|
@@ -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, the KFD-2 trust taxonomy, 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 documentation changes clarify the KFD public fact-source, license, trademark, official-status, and derivative-authority boundaries without altering the decision numbers or registry shape."
|
|
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 the KFD-2 trust-taxonomy schema ID, release-claims and release-trust-passport schema IDs, explicit KFD-1/2/3 interface versions, KFD document SHA-256 bindings, KFD-owned concept names, KFD-3 fact-source interface metadata, and official-status interface metadata for downstream consumers."
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"id": "kfd-package-structure",
|
|
35
|
+
"impact": "minor",
|
|
36
|
+
"class": "additive",
|
|
37
|
+
"rationale": "The npm package now publishes the KFD-2 trust taxonomy, KFD-2 schemas, KFD-2 documentation, KFD-3 self collaboration-interface witnesses, TRADEMARKS.md, public fact-source metadata, and agent quickstart/self-proof documentation through existing schemas/, docs/, standards.json, site/, .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 trust taxonomy and 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
|
+
}
|
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://kfd.libkungfu.dev/schemas/kfd-2/release-claims.schema.json",
|
|
4
|
+
"title": "KFD-2 release claims",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": [
|
|
7
|
+
"schemaVersion",
|
|
8
|
+
"contract",
|
|
9
|
+
"standard",
|
|
10
|
+
"product",
|
|
11
|
+
"release",
|
|
12
|
+
"claims"
|
|
13
|
+
],
|
|
14
|
+
"properties": {
|
|
15
|
+
"schemaVersion": {
|
|
16
|
+
"const": 1
|
|
17
|
+
},
|
|
18
|
+
"contract": {
|
|
19
|
+
"const": "kfd-2-release-claims"
|
|
20
|
+
},
|
|
21
|
+
"standard": {
|
|
22
|
+
"const": "kfd-2"
|
|
23
|
+
},
|
|
24
|
+
"product": {
|
|
25
|
+
"$ref": "#/$defs/product"
|
|
26
|
+
},
|
|
27
|
+
"release": {
|
|
28
|
+
"$ref": "#/$defs/release"
|
|
29
|
+
},
|
|
30
|
+
"claims": {
|
|
31
|
+
"type": "array",
|
|
32
|
+
"minItems": 1,
|
|
33
|
+
"items": {
|
|
34
|
+
"$ref": "#/$defs/claim"
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
"schemaEvolution": {
|
|
38
|
+
"$ref": "#/$defs/schemaEvolution"
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
"additionalProperties": true,
|
|
42
|
+
"$defs": {
|
|
43
|
+
"product": {
|
|
44
|
+
"type": "object",
|
|
45
|
+
"required": [
|
|
46
|
+
"name"
|
|
47
|
+
],
|
|
48
|
+
"properties": {
|
|
49
|
+
"name": {
|
|
50
|
+
"type": "string",
|
|
51
|
+
"minLength": 1
|
|
52
|
+
},
|
|
53
|
+
"repository": {
|
|
54
|
+
"type": "string",
|
|
55
|
+
"minLength": 1
|
|
56
|
+
},
|
|
57
|
+
"package": {
|
|
58
|
+
"type": "string",
|
|
59
|
+
"minLength": 1
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
"additionalProperties": true
|
|
63
|
+
},
|
|
64
|
+
"release": {
|
|
65
|
+
"type": "object",
|
|
66
|
+
"required": [
|
|
67
|
+
"version",
|
|
68
|
+
"channel"
|
|
69
|
+
],
|
|
70
|
+
"properties": {
|
|
71
|
+
"version": {
|
|
72
|
+
"type": "string",
|
|
73
|
+
"minLength": 1
|
|
74
|
+
},
|
|
75
|
+
"channel": {
|
|
76
|
+
"type": "string",
|
|
77
|
+
"minLength": 1
|
|
78
|
+
},
|
|
79
|
+
"tag": {
|
|
80
|
+
"type": "string",
|
|
81
|
+
"minLength": 1
|
|
82
|
+
},
|
|
83
|
+
"sourceSha": {
|
|
84
|
+
"type": "string",
|
|
85
|
+
"minLength": 1
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
"additionalProperties": true
|
|
89
|
+
},
|
|
90
|
+
"claim": {
|
|
91
|
+
"type": "object",
|
|
92
|
+
"required": [
|
|
93
|
+
"id",
|
|
94
|
+
"statement",
|
|
95
|
+
"source",
|
|
96
|
+
"evidence",
|
|
97
|
+
"auditBoundary",
|
|
98
|
+
"responsibility",
|
|
99
|
+
"status"
|
|
100
|
+
],
|
|
101
|
+
"properties": {
|
|
102
|
+
"id": {
|
|
103
|
+
"type": "string",
|
|
104
|
+
"pattern": "^[a-z0-9]+(-[a-z0-9]+)*$"
|
|
105
|
+
},
|
|
106
|
+
"statement": {
|
|
107
|
+
"type": "string",
|
|
108
|
+
"minLength": 1
|
|
109
|
+
},
|
|
110
|
+
"category": {
|
|
111
|
+
"enum": [
|
|
112
|
+
"metadata",
|
|
113
|
+
"schema",
|
|
114
|
+
"package-export",
|
|
115
|
+
"artifact",
|
|
116
|
+
"site",
|
|
117
|
+
"release",
|
|
118
|
+
"kfd-1",
|
|
119
|
+
"kfd-2",
|
|
120
|
+
"kfd-3",
|
|
121
|
+
"other"
|
|
122
|
+
]
|
|
123
|
+
},
|
|
124
|
+
"source": {
|
|
125
|
+
"$ref": "#/$defs/artifactPointer"
|
|
126
|
+
},
|
|
127
|
+
"evidence": {
|
|
128
|
+
"type": "array",
|
|
129
|
+
"minItems": 1,
|
|
130
|
+
"items": {
|
|
131
|
+
"$ref": "#/$defs/evidenceBinding"
|
|
132
|
+
}
|
|
133
|
+
},
|
|
134
|
+
"verification": {
|
|
135
|
+
"$ref": "#/$defs/verification"
|
|
136
|
+
},
|
|
137
|
+
"auditBoundary": {
|
|
138
|
+
"$ref": "#/$defs/auditBoundary"
|
|
139
|
+
},
|
|
140
|
+
"residualRisk": {
|
|
141
|
+
"type": "array",
|
|
142
|
+
"items": {
|
|
143
|
+
"$ref": "https://kfd.libkungfu.dev/schemas/kfd-2/trust-taxonomy.schema.json#/$defs/residualRisk"
|
|
144
|
+
}
|
|
145
|
+
},
|
|
146
|
+
"responsibility": {
|
|
147
|
+
"$ref": "#/$defs/responsibilityState"
|
|
148
|
+
},
|
|
149
|
+
"status": {
|
|
150
|
+
"enum": [
|
|
151
|
+
"declared",
|
|
152
|
+
"audited",
|
|
153
|
+
"enforced",
|
|
154
|
+
"not-applicable"
|
|
155
|
+
]
|
|
156
|
+
}
|
|
157
|
+
},
|
|
158
|
+
"additionalProperties": true
|
|
159
|
+
},
|
|
160
|
+
"artifactPointer": {
|
|
161
|
+
"type": "object",
|
|
162
|
+
"required": [
|
|
163
|
+
"kind"
|
|
164
|
+
],
|
|
165
|
+
"properties": {
|
|
166
|
+
"kind": {
|
|
167
|
+
"enum": [
|
|
168
|
+
"file",
|
|
169
|
+
"schema",
|
|
170
|
+
"package-export",
|
|
171
|
+
"artifact",
|
|
172
|
+
"command",
|
|
173
|
+
"witness",
|
|
174
|
+
"passport",
|
|
175
|
+
"url",
|
|
176
|
+
"other"
|
|
177
|
+
]
|
|
178
|
+
},
|
|
179
|
+
"path": {
|
|
180
|
+
"type": "string",
|
|
181
|
+
"minLength": 1
|
|
182
|
+
},
|
|
183
|
+
"specifier": {
|
|
184
|
+
"type": "string",
|
|
185
|
+
"minLength": 1
|
|
186
|
+
},
|
|
187
|
+
"url": {
|
|
188
|
+
"type": "string",
|
|
189
|
+
"format": "uri"
|
|
190
|
+
},
|
|
191
|
+
"schemaId": {
|
|
192
|
+
"type": "string",
|
|
193
|
+
"format": "uri"
|
|
194
|
+
},
|
|
195
|
+
"sha256": {
|
|
196
|
+
"type": "string",
|
|
197
|
+
"pattern": "^[0-9a-f]{64}$"
|
|
198
|
+
},
|
|
199
|
+
"digest": {
|
|
200
|
+
"type": "string",
|
|
201
|
+
"minLength": 1
|
|
202
|
+
}
|
|
203
|
+
},
|
|
204
|
+
"additionalProperties": true
|
|
205
|
+
},
|
|
206
|
+
"evidenceBinding": {
|
|
207
|
+
"type": "object",
|
|
208
|
+
"required": [
|
|
209
|
+
"type"
|
|
210
|
+
],
|
|
211
|
+
"properties": {
|
|
212
|
+
"type": {
|
|
213
|
+
"enum": [
|
|
214
|
+
"file",
|
|
215
|
+
"schema",
|
|
216
|
+
"package-export",
|
|
217
|
+
"artifact",
|
|
218
|
+
"hash",
|
|
219
|
+
"command-result",
|
|
220
|
+
"witness",
|
|
221
|
+
"passport-section",
|
|
222
|
+
"url",
|
|
223
|
+
"other"
|
|
224
|
+
]
|
|
225
|
+
},
|
|
226
|
+
"pointer": {
|
|
227
|
+
"$ref": "#/$defs/artifactPointer"
|
|
228
|
+
},
|
|
229
|
+
"description": {
|
|
230
|
+
"type": "string",
|
|
231
|
+
"minLength": 1
|
|
232
|
+
}
|
|
233
|
+
},
|
|
234
|
+
"additionalProperties": true
|
|
235
|
+
},
|
|
236
|
+
"verification": {
|
|
237
|
+
"type": "object",
|
|
238
|
+
"properties": {
|
|
239
|
+
"resultRef": {
|
|
240
|
+
"$ref": "#/$defs/artifactPointer"
|
|
241
|
+
},
|
|
242
|
+
"command": {
|
|
243
|
+
"type": "string",
|
|
244
|
+
"minLength": 1
|
|
245
|
+
},
|
|
246
|
+
"expectedResult": {
|
|
247
|
+
"enum": [
|
|
248
|
+
"pass",
|
|
249
|
+
"fail",
|
|
250
|
+
"warning",
|
|
251
|
+
"unverifiable"
|
|
252
|
+
]
|
|
253
|
+
}
|
|
254
|
+
},
|
|
255
|
+
"additionalProperties": true
|
|
256
|
+
},
|
|
257
|
+
"auditBoundary": {
|
|
258
|
+
"type": "object",
|
|
259
|
+
"required": [
|
|
260
|
+
"scope",
|
|
261
|
+
"enumerability"
|
|
262
|
+
],
|
|
263
|
+
"properties": {
|
|
264
|
+
"scope": {
|
|
265
|
+
"type": "string",
|
|
266
|
+
"minLength": 1
|
|
267
|
+
},
|
|
268
|
+
"enumerability": {
|
|
269
|
+
"enum": [
|
|
270
|
+
"closed-world",
|
|
271
|
+
"declared-open",
|
|
272
|
+
"sampled",
|
|
273
|
+
"manual"
|
|
274
|
+
]
|
|
275
|
+
},
|
|
276
|
+
"exclusions": {
|
|
277
|
+
"type": "array",
|
|
278
|
+
"items": {
|
|
279
|
+
"type": "string",
|
|
280
|
+
"minLength": 1
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
},
|
|
284
|
+
"additionalProperties": true
|
|
285
|
+
},
|
|
286
|
+
"responsibilityState": {
|
|
287
|
+
"type": "object",
|
|
288
|
+
"required": [
|
|
289
|
+
"sourceOwner",
|
|
290
|
+
"verificationOwner",
|
|
291
|
+
"releaseDecisionOwner"
|
|
292
|
+
],
|
|
293
|
+
"properties": {
|
|
294
|
+
"sourceOwner": {
|
|
295
|
+
"type": "string",
|
|
296
|
+
"minLength": 1
|
|
297
|
+
},
|
|
298
|
+
"verificationOwner": {
|
|
299
|
+
"type": "string",
|
|
300
|
+
"minLength": 1
|
|
301
|
+
},
|
|
302
|
+
"releaseDecisionOwner": {
|
|
303
|
+
"type": "string",
|
|
304
|
+
"minLength": 1
|
|
305
|
+
},
|
|
306
|
+
"escalation": {
|
|
307
|
+
"type": "string",
|
|
308
|
+
"minLength": 1
|
|
309
|
+
}
|
|
310
|
+
},
|
|
311
|
+
"additionalProperties": true
|
|
312
|
+
},
|
|
313
|
+
"schemaEvolution": {
|
|
314
|
+
"type": "object",
|
|
315
|
+
"required": [
|
|
316
|
+
"interfaceVersion",
|
|
317
|
+
"compatibilityRule"
|
|
318
|
+
],
|
|
319
|
+
"properties": {
|
|
320
|
+
"interfaceVersion": {
|
|
321
|
+
"const": 1
|
|
322
|
+
},
|
|
323
|
+
"compatibilityRule": {
|
|
324
|
+
"type": "string",
|
|
325
|
+
"minLength": 1
|
|
326
|
+
}
|
|
327
|
+
},
|
|
328
|
+
"additionalProperties": true
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
}
|