@kungfu-tech/kfd 1.0.0-alpha.3 → 1.0.0-alpha.5

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.
@@ -0,0 +1,278 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://kfd.libkungfu.dev/schemas/kfd-2/release-trust-passport.schema.json",
4
+ "title": "KFD-2 release trust passport",
5
+ "type": "object",
6
+ "required": [
7
+ "schemaVersion",
8
+ "contract",
9
+ "standard",
10
+ "product",
11
+ "release",
12
+ "releaseClaims",
13
+ "result",
14
+ "claims"
15
+ ],
16
+ "properties": {
17
+ "schemaVersion": {
18
+ "const": 1
19
+ },
20
+ "contract": {
21
+ "const": "kfd-2-release-trust-passport"
22
+ },
23
+ "standard": {
24
+ "const": "kfd-2"
25
+ },
26
+ "product": {
27
+ "$ref": "#/$defs/product"
28
+ },
29
+ "release": {
30
+ "$ref": "#/$defs/release"
31
+ },
32
+ "releaseClaims": {
33
+ "type": "object",
34
+ "required": [
35
+ "schemaId",
36
+ "digest"
37
+ ],
38
+ "properties": {
39
+ "schemaId": {
40
+ "const": "https://kfd.libkungfu.dev/schemas/kfd-2/release-claims.schema.json"
41
+ },
42
+ "path": {
43
+ "type": "string",
44
+ "minLength": 1
45
+ },
46
+ "digest": {
47
+ "type": "string",
48
+ "minLength": 1
49
+ }
50
+ },
51
+ "additionalProperties": true
52
+ },
53
+ "result": {
54
+ "enum": [
55
+ "pass",
56
+ "fail",
57
+ "warning",
58
+ "unverifiable"
59
+ ]
60
+ },
61
+ "claims": {
62
+ "type": "array",
63
+ "items": {
64
+ "$ref": "#/$defs/claimResult"
65
+ }
66
+ },
67
+ "unboundClaims": {
68
+ "type": "array",
69
+ "items": {
70
+ "type": "string",
71
+ "minLength": 1
72
+ }
73
+ },
74
+ "downgradeReasons": {
75
+ "type": "array",
76
+ "items": {
77
+ "type": "string",
78
+ "minLength": 1
79
+ }
80
+ },
81
+ "responsibility": {
82
+ "$ref": "#/$defs/responsibilityState"
83
+ },
84
+ "schemaEvolution": {
85
+ "$ref": "#/$defs/schemaEvolution"
86
+ }
87
+ },
88
+ "additionalProperties": true,
89
+ "$defs": {
90
+ "product": {
91
+ "type": "object",
92
+ "required": [
93
+ "name"
94
+ ],
95
+ "properties": {
96
+ "name": {
97
+ "type": "string",
98
+ "minLength": 1
99
+ },
100
+ "repository": {
101
+ "type": "string",
102
+ "minLength": 1
103
+ },
104
+ "package": {
105
+ "type": "string",
106
+ "minLength": 1
107
+ }
108
+ },
109
+ "additionalProperties": true
110
+ },
111
+ "release": {
112
+ "type": "object",
113
+ "required": [
114
+ "version",
115
+ "channel"
116
+ ],
117
+ "properties": {
118
+ "version": {
119
+ "type": "string",
120
+ "minLength": 1
121
+ },
122
+ "channel": {
123
+ "type": "string",
124
+ "minLength": 1
125
+ },
126
+ "tag": {
127
+ "type": "string",
128
+ "minLength": 1
129
+ },
130
+ "sourceSha": {
131
+ "type": "string",
132
+ "minLength": 1
133
+ }
134
+ },
135
+ "additionalProperties": true
136
+ },
137
+ "claimResult": {
138
+ "type": "object",
139
+ "required": [
140
+ "id",
141
+ "result",
142
+ "evidence",
143
+ "auditBoundary",
144
+ "responsibility"
145
+ ],
146
+ "properties": {
147
+ "id": {
148
+ "type": "string",
149
+ "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$"
150
+ },
151
+ "result": {
152
+ "enum": [
153
+ "pass",
154
+ "fail",
155
+ "warning",
156
+ "unverifiable"
157
+ ]
158
+ },
159
+ "evidence": {
160
+ "type": "array",
161
+ "items": {
162
+ "$ref": "#/$defs/evidenceResult"
163
+ }
164
+ },
165
+ "auditBoundary": {
166
+ "$ref": "#/$defs/auditBoundary"
167
+ },
168
+ "responsibility": {
169
+ "$ref": "#/$defs/responsibilityState"
170
+ },
171
+ "residualRisk": {
172
+ "type": "array",
173
+ "items": {
174
+ "type": "string",
175
+ "minLength": 1
176
+ }
177
+ }
178
+ },
179
+ "additionalProperties": true
180
+ },
181
+ "evidenceResult": {
182
+ "type": "object",
183
+ "required": [
184
+ "type",
185
+ "result"
186
+ ],
187
+ "properties": {
188
+ "type": {
189
+ "type": "string",
190
+ "minLength": 1
191
+ },
192
+ "result": {
193
+ "enum": [
194
+ "pass",
195
+ "fail",
196
+ "warning",
197
+ "unverifiable"
198
+ ]
199
+ },
200
+ "digest": {
201
+ "type": "string",
202
+ "minLength": 1
203
+ },
204
+ "description": {
205
+ "type": "string",
206
+ "minLength": 1
207
+ }
208
+ },
209
+ "additionalProperties": true
210
+ },
211
+ "auditBoundary": {
212
+ "type": "object",
213
+ "required": [
214
+ "scope",
215
+ "enumerability"
216
+ ],
217
+ "properties": {
218
+ "scope": {
219
+ "type": "string",
220
+ "minLength": 1
221
+ },
222
+ "enumerability": {
223
+ "enum": [
224
+ "closed-world",
225
+ "declared-open",
226
+ "sampled",
227
+ "manual"
228
+ ]
229
+ }
230
+ },
231
+ "additionalProperties": true
232
+ },
233
+ "responsibilityState": {
234
+ "type": "object",
235
+ "required": [
236
+ "sourceOwner",
237
+ "verificationOwner",
238
+ "releaseDecisionOwner"
239
+ ],
240
+ "properties": {
241
+ "sourceOwner": {
242
+ "type": "string",
243
+ "minLength": 1
244
+ },
245
+ "verificationOwner": {
246
+ "type": "string",
247
+ "minLength": 1
248
+ },
249
+ "releaseDecisionOwner": {
250
+ "type": "string",
251
+ "minLength": 1
252
+ },
253
+ "escalation": {
254
+ "type": "string",
255
+ "minLength": 1
256
+ }
257
+ },
258
+ "additionalProperties": true
259
+ },
260
+ "schemaEvolution": {
261
+ "type": "object",
262
+ "required": [
263
+ "interfaceVersion",
264
+ "compatibilityRule"
265
+ ],
266
+ "properties": {
267
+ "interfaceVersion": {
268
+ "const": 1
269
+ },
270
+ "compatibilityRule": {
271
+ "type": "string",
272
+ "minLength": 1
273
+ }
274
+ },
275
+ "additionalProperties": true
276
+ }
277
+ }
278
+ }
@@ -142,6 +142,10 @@
142
142
  "url": {
143
143
  "type": "string",
144
144
  "format": "uri"
145
+ },
146
+ "sha256": {
147
+ "type": "string",
148
+ "pattern": "^[0-9a-f]{64}$"
145
149
  }
146
150
  },
147
151
  "additionalProperties": false
@@ -186,6 +190,41 @@
186
190
  "type": "string"
187
191
  }
188
192
  },
193
+ "interfaces": {
194
+ "type": "object",
195
+ "additionalProperties": {
196
+ "type": "object",
197
+ "required": [
198
+ "contract",
199
+ "schemaVersion",
200
+ "schemaId",
201
+ "schemaPath"
202
+ ],
203
+ "properties": {
204
+ "contract": {
205
+ "type": "string",
206
+ "minLength": 1
207
+ },
208
+ "schemaVersion": {
209
+ "type": "integer",
210
+ "minimum": 1
211
+ },
212
+ "schemaId": {
213
+ "type": "string",
214
+ "format": "uri"
215
+ },
216
+ "schemaPath": {
217
+ "type": "string",
218
+ "minLength": 1
219
+ },
220
+ "compatibilityRule": {
221
+ "type": "string",
222
+ "minLength": 1
223
+ }
224
+ },
225
+ "additionalProperties": false
226
+ }
227
+ },
189
228
  "concepts": {
190
229
  "type": "object",
191
230
  "minProperties": 1,
package/standards.json CHANGED
@@ -24,7 +24,8 @@
24
24
  "metadataSchemaVersion": "1",
25
25
  "document": {
26
26
  "path": "decisions/kfd-1.md",
27
- "url": "https://kfd.libkungfu.dev/1"
27
+ "url": "https://kfd.libkungfu.dev/1",
28
+ "sha256": "2ef7438b0737009d36da248d2ecec5f788d46a93b184efadf5e2e31ca20254f0"
28
29
  },
29
30
  "compatibility": {
30
31
  "packageLine": "v1.0",
@@ -42,6 +43,22 @@
42
43
  "contractWorld": "schemas/kfd-1/contract-world.schema.json",
43
44
  "witness": "schemas/kfd-1/witness.schema.json"
44
45
  },
46
+ "interfaces": {
47
+ "contractWorld": {
48
+ "contract": "kfd-1-contract-world",
49
+ "schemaVersion": 1,
50
+ "schemaId": "https://kfd.libkungfu.dev/schemas/kfd-1/contract-world.schema.json",
51
+ "schemaPath": "schemas/kfd-1/contract-world.schema.json",
52
+ "compatibilityRule": "Compatible additions may keep schemaVersion 1; semantic or required-field changes require a new interface version or contract."
53
+ },
54
+ "witness": {
55
+ "contract": "kfd-1-witness",
56
+ "schemaVersion": 1,
57
+ "schemaId": "https://kfd.libkungfu.dev/schemas/kfd-1/witness.schema.json",
58
+ "schemaPath": "schemas/kfd-1/witness.schema.json",
59
+ "compatibilityRule": "Compatible additions may keep schemaVersion 1; semantic or required-field changes require a new interface version or contract."
60
+ }
61
+ },
45
62
  "concepts": {
46
63
  "factSource": "fact source",
47
64
  "contractWorld": "contract world",
@@ -61,7 +78,8 @@
61
78
  "metadataSchemaVersion": "1",
62
79
  "document": {
63
80
  "path": "decisions/kfd-2.md",
64
- "url": "https://kfd.libkungfu.dev/2"
81
+ "url": "https://kfd.libkungfu.dev/2",
82
+ "sha256": "b8be7b7526dcec9ea501998056c55f546492abc4eb63484a9bb8856eb434b710"
65
83
  },
66
84
  "compatibility": {
67
85
  "packageLine": "v1.0",
@@ -70,13 +88,39 @@
70
88
  "rule": "Substantive semantic changes mint a new KFD; compatible metadata additions keep schemaVersion 1."
71
89
  },
72
90
  "schemaIds": {
73
- "metadata": "https://kfd.libkungfu.dev/schemas/kfd-standards.schema.json"
91
+ "metadata": "https://kfd.libkungfu.dev/schemas/kfd-standards.schema.json",
92
+ "releaseClaims": "https://kfd.libkungfu.dev/schemas/kfd-2/release-claims.schema.json",
93
+ "releaseTrustPassport": "https://kfd.libkungfu.dev/schemas/kfd-2/release-trust-passport.schema.json"
74
94
  },
75
95
  "schemaPaths": {
76
- "metadata": "schemas/kfd-standards.schema.json"
96
+ "metadata": "schemas/kfd-standards.schema.json",
97
+ "releaseClaims": "schemas/kfd-2/release-claims.schema.json",
98
+ "releaseTrustPassport": "schemas/kfd-2/release-trust-passport.schema.json"
99
+ },
100
+ "interfaces": {
101
+ "releaseClaims": {
102
+ "contract": "kfd-2-release-claims",
103
+ "schemaVersion": 1,
104
+ "schemaId": "https://kfd.libkungfu.dev/schemas/kfd-2/release-claims.schema.json",
105
+ "schemaPath": "schemas/kfd-2/release-claims.schema.json",
106
+ "compatibilityRule": "Compatible additions may keep schemaVersion 1; semantic or required-field changes require a new interface version or contract."
107
+ },
108
+ "releaseTrustPassport": {
109
+ "contract": "kfd-2-release-trust-passport",
110
+ "schemaVersion": 1,
111
+ "schemaId": "https://kfd.libkungfu.dev/schemas/kfd-2/release-trust-passport.schema.json",
112
+ "schemaPath": "schemas/kfd-2/release-trust-passport.schema.json",
113
+ "compatibilityRule": "Compatible additions may keep schemaVersion 1; semantic or required-field changes require a new interface version or contract."
114
+ }
77
115
  },
78
116
  "concepts": {
79
117
  "facts": "inspectable facts",
118
+ "releaseClaim": "release claim",
119
+ "releaseClaims": "release claims",
120
+ "evidenceBinding": "evidence binding",
121
+ "auditBoundary": "audit boundary",
122
+ "residualRisk": "residual risk",
123
+ "releaseTrustPassport": "release trust passport",
80
124
  "responsibilityState": "responsibility state",
81
125
  "trust": "trust from facts"
82
126
  }
@@ -93,7 +137,8 @@
93
137
  "metadataSchemaVersion": "1",
94
138
  "document": {
95
139
  "path": "decisions/kfd-3.md",
96
- "url": "https://kfd.libkungfu.dev/3"
140
+ "url": "https://kfd.libkungfu.dev/3",
141
+ "sha256": "e329bef41ab5cb689346333df317b39918ea1016424a872e438eea8090070b96"
97
142
  },
98
143
  "compatibility": {
99
144
  "packageLine": "v1.0",
@@ -111,6 +156,22 @@
111
156
  "collaborationInterface": "schemas/kfd-3/collaboration-interface.schema.json",
112
157
  "witness": "schemas/kfd-3/witness.schema.json"
113
158
  },
159
+ "interfaces": {
160
+ "collaborationInterface": {
161
+ "contract": "kfd-3-collaboration-interface",
162
+ "schemaVersion": 1,
163
+ "schemaId": "https://kfd.libkungfu.dev/schemas/kfd-3/collaboration-interface.schema.json",
164
+ "schemaPath": "schemas/kfd-3/collaboration-interface.schema.json",
165
+ "compatibilityRule": "Compatible additions may keep schemaVersion 1; semantic or required-field changes require a new interface version or contract."
166
+ },
167
+ "witness": {
168
+ "contract": "kfd-3-witness",
169
+ "schemaVersion": 1,
170
+ "schemaId": "https://kfd.libkungfu.dev/schemas/kfd-3/witness.schema.json",
171
+ "schemaPath": "schemas/kfd-3/witness.schema.json",
172
+ "compatibilityRule": "Compatible additions may keep schemaVersion 1; semantic or required-field changes require a new interface version or contract."
173
+ }
174
+ },
114
175
  "concepts": {
115
176
  "transparentValue": "transparent value",
116
177
  "stableChoice": "stable choice",