@kungfu-tech/buildchain 3.0.6 → 3.0.7-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/README.md +4 -2
  2. package/actions/release-tail/README.md +17 -0
  3. package/bin/buildchain.mjs +11 -0
  4. package/bin/internal/command-registry.mjs +2 -0
  5. package/contracts/fixtures/release-tail-capabilities-v1/kungfu-alpha.json +273 -0
  6. package/contracts/publication-rehearsal-capsule-v1.schema.json +173 -0
  7. package/contracts/release-tail-capabilities-v1.schema.json +199 -0
  8. package/contracts/release-tail-provider-bindings-v1.schema.json +56 -0
  9. package/dist/site/agent-index.json +3 -0
  10. package/dist/site/artifact-schemas.json +6 -0
  11. package/dist/site/buildchain-contract.json +35 -20
  12. package/dist/site/buildchain-site.json +307 -17
  13. package/dist/site/capability-registry.json +12 -9
  14. package/dist/site/cli-registry.json +102 -0
  15. package/dist/site/controller-registry.json +14 -2
  16. package/dist/site/kfd-claims.json +247 -16
  17. package/dist/site/kfd-upstream-aggregate.json +1 -1
  18. package/dist/site/manual-registry.json +48 -3
  19. package/dist/site/node-api-registry.json +3108 -1409
  20. package/dist/site/page-registry.json +275 -9
  21. package/dist/site/public-surface-audit.json +304 -15
  22. package/dist/site/publication-authority-registry.json +26 -1
  23. package/dist/site/publication-registry.json +4 -4
  24. package/dist/site/release-provenance.json +5 -0
  25. package/dist/site/schemas/publication-rehearsal-capsule-v1.schema.json +269 -0
  26. package/dist/site/schemas/release-tail-capabilities-v1.schema.json +353 -0
  27. package/dist/site/schemas/release-tail-provider-bindings-v1.schema.json +94 -0
  28. package/dist/site/site-manifest.json +31 -7
  29. package/dist/site/workflow-registry.json +86 -9
  30. package/docs/MAP.md +5 -2
  31. package/docs/cli-reference.md +136 -0
  32. package/docs/node-api-reference.md +233 -84
  33. package/docs/publication-rehearsal.md +94 -0
  34. package/docs/release-tail-contract.md +160 -0
  35. package/docs/release-tail-provider-plane.md +120 -0
  36. package/package.json +8 -3
  37. package/packages/core/buildchain-agent-manuals.js +3 -0
  38. package/packages/core/buildchain-kfd-claims.js +1 -1
  39. package/packages/core/buildchain-publication-authority.js +1 -0
  40. package/packages/core/index.js +39 -0
  41. package/packages/core/paper-agent-entry.js +11 -5
  42. package/packages/core/paper-repository.js +1 -0
  43. package/packages/core/paper-scaffold-content.js +21 -0
  44. package/packages/core/paper.js +28 -2
  45. package/packages/core/publication-rehearsal-projection.js +173 -0
  46. package/packages/core/publication-rehearsal-runtime.js +909 -0
  47. package/packages/core/release-tail-compatibility.js +60 -0
  48. package/packages/core/release-tail-provider-adapters.js +461 -0
  49. package/packages/core/release-tail-provider-plane.js +1228 -0
  50. package/scripts/assemble-publication-artifact-admission.mjs +1 -1
  51. package/scripts/assemble-self-publication-admission.mjs +1 -1
  52. package/scripts/buildchain-cli-help.mjs +13 -0
  53. package/scripts/check-core-mechanism-inventory.mjs +347 -0
  54. package/scripts/check-inventory.mjs +8 -8
  55. package/scripts/check-maintainability.mjs +9 -2
  56. package/scripts/check-release-tail-contract.mjs +435 -0
  57. package/scripts/generate-channel-promotion-workflow.mjs +10 -8
  58. package/scripts/generate-site-bundle.mjs +24 -0
  59. package/scripts/init-repo.mjs +26 -2
  60. package/scripts/materialize-self-release-candidate-version.mjs +131 -0
  61. package/scripts/release-tail.mjs +159 -0
  62. package/scripts/site-capability-metadata.mjs +11 -0
  63. package/scripts/v4-architecture.mjs +600 -0
  64. package/scripts/workflow-call-contract.mjs +184 -5
@@ -0,0 +1,269 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://buildchain.kungfu.ai/contracts/publication-rehearsal-capsule-v1.schema.json",
4
+ "title": "Buildchain publication rehearsal capsule",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": [
8
+ "contract",
9
+ "schemaVersion",
10
+ "root",
11
+ "declaration",
12
+ "policyRoots",
13
+ "passport",
14
+ "transaction",
15
+ "files",
16
+ "providerBindings",
17
+ "providerObservations",
18
+ "runtime"
19
+ ],
20
+ "properties": {
21
+ "contract": {
22
+ "const": "kungfu.buildchain.publication-rehearsal-capsule/v1"
23
+ },
24
+ "schemaVersion": {
25
+ "const": 1
26
+ },
27
+ "root": {
28
+ "$ref": "#/$defs/root"
29
+ },
30
+ "declaration": {
31
+ "$ref": "release-tail-capabilities-v1.schema.json"
32
+ },
33
+ "policyRoots": {
34
+ "type": "array",
35
+ "minItems": 1,
36
+ "uniqueItems": true,
37
+ "items": {
38
+ "$ref": "#/$defs/root"
39
+ }
40
+ },
41
+ "passport": {
42
+ "type": "object",
43
+ "additionalProperties": false,
44
+ "required": [
45
+ "path",
46
+ "root"
47
+ ],
48
+ "properties": {
49
+ "path": {
50
+ "$ref": "#/$defs/path"
51
+ },
52
+ "root": {
53
+ "$ref": "#/$defs/root"
54
+ }
55
+ }
56
+ },
57
+ "transaction": {
58
+ "type": "object",
59
+ "required": [
60
+ "schema",
61
+ "transactionPolicy",
62
+ "transactionRoot",
63
+ "declarationRoot",
64
+ "planRoot",
65
+ "subject",
66
+ "state",
67
+ "operationOrder",
68
+ "operations",
69
+ "observations",
70
+ "receipts",
71
+ "failure",
72
+ "stateRoot"
73
+ ]
74
+ },
75
+ "files": {
76
+ "type": "array",
77
+ "minItems": 1,
78
+ "items": {
79
+ "type": "object",
80
+ "additionalProperties": false,
81
+ "required": [
82
+ "role",
83
+ "path",
84
+ "size",
85
+ "root"
86
+ ],
87
+ "properties": {
88
+ "role": {
89
+ "type": "string",
90
+ "minLength": 1
91
+ },
92
+ "path": {
93
+ "$ref": "#/$defs/path"
94
+ },
95
+ "size": {
96
+ "type": "integer",
97
+ "minimum": 0
98
+ },
99
+ "root": {
100
+ "$ref": "#/$defs/root"
101
+ }
102
+ }
103
+ }
104
+ },
105
+ "providerBindings": {
106
+ "$ref": "release-tail-provider-bindings-v1.schema.json"
107
+ },
108
+ "providerObservations": {
109
+ "type": "array",
110
+ "items": {
111
+ "type": "object",
112
+ "additionalProperties": false,
113
+ "required": [
114
+ "operationId",
115
+ "readbacks",
116
+ "apply"
117
+ ],
118
+ "properties": {
119
+ "operationId": {
120
+ "$ref": "#/$defs/root"
121
+ },
122
+ "readbacks": {
123
+ "type": "array",
124
+ "minItems": 1,
125
+ "items": {
126
+ "$ref": "#/$defs/observation"
127
+ }
128
+ },
129
+ "apply": {
130
+ "type": "object",
131
+ "additionalProperties": false,
132
+ "required": [
133
+ "outcome",
134
+ "code",
135
+ "classification"
136
+ ],
137
+ "properties": {
138
+ "outcome": {
139
+ "enum": [
140
+ "applied",
141
+ "transient",
142
+ "conflict"
143
+ ]
144
+ },
145
+ "code": {
146
+ "type": "string",
147
+ "minLength": 1
148
+ },
149
+ "classification": {
150
+ "type": "string",
151
+ "minLength": 1
152
+ }
153
+ }
154
+ }
155
+ }
156
+ }
157
+ },
158
+ "runtime": {
159
+ "type": "object",
160
+ "additionalProperties": false,
161
+ "required": [
162
+ "platform",
163
+ "declaredEnvironment",
164
+ "externalEffects"
165
+ ],
166
+ "properties": {
167
+ "platform": {
168
+ "const": "portable"
169
+ },
170
+ "declaredEnvironment": {
171
+ "type": "array",
172
+ "uniqueItems": true,
173
+ "items": {
174
+ "type": "string",
175
+ "pattern": "^[A-Z][A-Z0-9_]*$"
176
+ }
177
+ },
178
+ "externalEffects": {
179
+ "type": "array",
180
+ "items": {
181
+ "type": "object",
182
+ "additionalProperties": false,
183
+ "required": [
184
+ "capabilityId",
185
+ "adapter",
186
+ "kind"
187
+ ],
188
+ "properties": {
189
+ "capabilityId": {
190
+ "type": "string",
191
+ "minLength": 1
192
+ },
193
+ "adapter": {
194
+ "type": "string",
195
+ "minLength": 1
196
+ },
197
+ "kind": {
198
+ "type": "string",
199
+ "minLength": 1
200
+ }
201
+ }
202
+ }
203
+ }
204
+ }
205
+ }
206
+ },
207
+ "$defs": {
208
+ "root": {
209
+ "type": "string",
210
+ "pattern": "^sha256:[0-9a-f]{64}$"
211
+ },
212
+ "path": {
213
+ "type": "string",
214
+ "minLength": 1,
215
+ "pattern": "^(?!/)(?!.*(?:^|/)\\.\\.(?:/|$))(?!.*//)(?!.*\\\\).+$"
216
+ },
217
+ "observation": {
218
+ "type": "object",
219
+ "additionalProperties": false,
220
+ "required": [
221
+ "outcome",
222
+ "subjectRoot",
223
+ "targetRoot",
224
+ "evidenceRoots",
225
+ "providerCode"
226
+ ],
227
+ "properties": {
228
+ "outcome": {
229
+ "enum": [
230
+ "observed",
231
+ "absent",
232
+ "transient",
233
+ "conflict"
234
+ ]
235
+ },
236
+ "subjectRoot": {
237
+ "anyOf": [
238
+ {
239
+ "$ref": "#/$defs/root"
240
+ },
241
+ {
242
+ "const": ""
243
+ }
244
+ ]
245
+ },
246
+ "targetRoot": {
247
+ "anyOf": [
248
+ {
249
+ "$ref": "#/$defs/root"
250
+ },
251
+ {
252
+ "const": ""
253
+ }
254
+ ]
255
+ },
256
+ "evidenceRoots": {
257
+ "type": "array",
258
+ "items": {
259
+ "$ref": "#/$defs/root"
260
+ }
261
+ },
262
+ "providerCode": {
263
+ "type": "string",
264
+ "minLength": 1
265
+ }
266
+ }
267
+ }
268
+ }
269
+ }
@@ -0,0 +1,353 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://buildchain.kungfu.ai/contracts/release-tail-capabilities-v1.schema.json",
4
+ "title": "Buildchain release-tail capability declaration",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": [
8
+ "contract",
9
+ "schemaVersion",
10
+ "transactionPolicy",
11
+ "subject",
12
+ "capabilities"
13
+ ],
14
+ "properties": {
15
+ "contract": {
16
+ "const": "kungfu-buildchain-release-tail-capabilities"
17
+ },
18
+ "schemaVersion": {
19
+ "const": 1
20
+ },
21
+ "transactionPolicy": {
22
+ "const": "buildchain.release-tail/v1"
23
+ },
24
+ "subject": {
25
+ "type": "object",
26
+ "additionalProperties": false,
27
+ "required": [
28
+ "repository",
29
+ "sourceSha",
30
+ "version",
31
+ "tag",
32
+ "channel"
33
+ ],
34
+ "properties": {
35
+ "repository": {
36
+ "type": "string",
37
+ "minLength": 1
38
+ },
39
+ "sourceSha": {
40
+ "type": "string",
41
+ "pattern": "^[0-9a-f]{40}$"
42
+ },
43
+ "version": {
44
+ "type": "string",
45
+ "minLength": 1
46
+ },
47
+ "tag": {
48
+ "type": "string",
49
+ "minLength": 1
50
+ },
51
+ "channel": {
52
+ "enum": [
53
+ "alpha",
54
+ "release",
55
+ "stable"
56
+ ]
57
+ }
58
+ }
59
+ },
60
+ "capabilities": {
61
+ "type": "array",
62
+ "minItems": 1,
63
+ "items": {
64
+ "$ref": "#/$defs/capability"
65
+ }
66
+ }
67
+ },
68
+ "$defs": {
69
+ "root": {
70
+ "type": "string",
71
+ "pattern": "^sha256:[0-9a-f]{64}$"
72
+ },
73
+ "capability": {
74
+ "type": "object",
75
+ "additionalProperties": false,
76
+ "required": [
77
+ "id",
78
+ "executor",
79
+ "adapter",
80
+ "artifactRoles",
81
+ "destination",
82
+ "channelPolicy",
83
+ "activationPolicy",
84
+ "readbackPredicates",
85
+ "effect",
86
+ "observation",
87
+ "receipt",
88
+ "operationIdentity",
89
+ "idempotency",
90
+ "retry",
91
+ "evidenceRequirements"
92
+ ],
93
+ "properties": {
94
+ "id": {
95
+ "enum": [
96
+ "artifact.publish",
97
+ "signed-channel.commit",
98
+ "release.activate",
99
+ "released-evidence.synthesize"
100
+ ]
101
+ },
102
+ "executor": {
103
+ "enum": [
104
+ "buildchain-core",
105
+ "provider-adapter"
106
+ ]
107
+ },
108
+ "adapter": {
109
+ "type": "string",
110
+ "minLength": 1
111
+ },
112
+ "artifactRoles": {
113
+ "type": "array",
114
+ "items": {
115
+ "type": "object",
116
+ "additionalProperties": false,
117
+ "required": [
118
+ "role",
119
+ "root"
120
+ ],
121
+ "properties": {
122
+ "role": {
123
+ "type": "string",
124
+ "minLength": 1
125
+ },
126
+ "root": {
127
+ "$ref": "#/$defs/root"
128
+ }
129
+ }
130
+ }
131
+ },
132
+ "destination": {
133
+ "type": "object",
134
+ "additionalProperties": false,
135
+ "required": [
136
+ "kind",
137
+ "locator"
138
+ ],
139
+ "properties": {
140
+ "kind": {
141
+ "type": "string",
142
+ "minLength": 1
143
+ },
144
+ "locator": {
145
+ "type": "string",
146
+ "minLength": 1
147
+ }
148
+ }
149
+ },
150
+ "channelPolicy": {
151
+ "type": "object",
152
+ "additionalProperties": false,
153
+ "required": [
154
+ "channel",
155
+ "tagPattern",
156
+ "authorityMove"
157
+ ],
158
+ "properties": {
159
+ "channel": {
160
+ "enum": [
161
+ "alpha",
162
+ "release",
163
+ "stable"
164
+ ]
165
+ },
166
+ "tagPattern": {
167
+ "type": "string",
168
+ "minLength": 1
169
+ },
170
+ "authorityMove": {
171
+ "enum": [
172
+ "none",
173
+ "signed-cas",
174
+ "verified-ref"
175
+ ]
176
+ }
177
+ }
178
+ },
179
+ "activationPolicy": {
180
+ "type": "object",
181
+ "additionalProperties": false,
182
+ "required": [
183
+ "mode",
184
+ "environment"
185
+ ],
186
+ "properties": {
187
+ "mode": {
188
+ "enum": [
189
+ "none",
190
+ "receipt-set",
191
+ "receipt-only"
192
+ ]
193
+ },
194
+ "environment": {
195
+ "enum": [
196
+ "none",
197
+ "shadow",
198
+ "production"
199
+ ]
200
+ }
201
+ }
202
+ },
203
+ "readbackPredicates": {
204
+ "type": "array",
205
+ "items": {
206
+ "type": "object",
207
+ "additionalProperties": false,
208
+ "required": [
209
+ "id",
210
+ "kind",
211
+ "expected"
212
+ ],
213
+ "properties": {
214
+ "id": {
215
+ "type": "string",
216
+ "minLength": 1
217
+ },
218
+ "kind": {
219
+ "type": "string",
220
+ "minLength": 1
221
+ },
222
+ "expected": {
223
+ "type": "string",
224
+ "minLength": 1
225
+ }
226
+ }
227
+ }
228
+ },
229
+ "effect": {
230
+ "$ref": "#/$defs/message"
231
+ },
232
+ "observation": {
233
+ "$ref": "#/$defs/message"
234
+ },
235
+ "receipt": {
236
+ "$ref": "#/$defs/message"
237
+ },
238
+ "operationIdentity": {
239
+ "type": "object",
240
+ "additionalProperties": false,
241
+ "required": [
242
+ "transactionRoot",
243
+ "capabilityId",
244
+ "subjectRoot",
245
+ "targetRoot",
246
+ "attemptKey"
247
+ ],
248
+ "properties": {
249
+ "transactionRoot": {
250
+ "$ref": "#/$defs/root"
251
+ },
252
+ "capabilityId": {
253
+ "enum": [
254
+ "artifact.publish",
255
+ "signed-channel.commit",
256
+ "release.activate",
257
+ "released-evidence.synthesize"
258
+ ]
259
+ },
260
+ "subjectRoot": {
261
+ "$ref": "#/$defs/root"
262
+ },
263
+ "targetRoot": {
264
+ "$ref": "#/$defs/root"
265
+ },
266
+ "attemptKey": {
267
+ "type": "string",
268
+ "minLength": 1
269
+ }
270
+ }
271
+ },
272
+ "idempotency": {
273
+ "type": "object",
274
+ "additionalProperties": false,
275
+ "required": [
276
+ "scope",
277
+ "duplicate"
278
+ ],
279
+ "properties": {
280
+ "scope": {
281
+ "enum": [
282
+ "operation",
283
+ "subject-target"
284
+ ]
285
+ },
286
+ "duplicate": {
287
+ "enum": [
288
+ "return-observed-receipt",
289
+ "readback-before-retry"
290
+ ]
291
+ }
292
+ }
293
+ },
294
+ "retry": {
295
+ "type": "object",
296
+ "additionalProperties": false,
297
+ "required": [
298
+ "class",
299
+ "localAttempts",
300
+ "exhausted"
301
+ ],
302
+ "properties": {
303
+ "class": {
304
+ "enum": [
305
+ "never",
306
+ "readback",
307
+ "provider-transient"
308
+ ]
309
+ },
310
+ "localAttempts": {
311
+ "type": "integer",
312
+ "minimum": 0,
313
+ "maximum": 3
314
+ },
315
+ "exhausted": {
316
+ "enum": [
317
+ "blocked",
318
+ "repair-required",
319
+ "terminal-failure"
320
+ ]
321
+ }
322
+ }
323
+ },
324
+ "evidenceRequirements": {
325
+ "type": "array",
326
+ "minItems": 1,
327
+ "items": {
328
+ "type": "string",
329
+ "minLength": 1
330
+ }
331
+ }
332
+ }
333
+ },
334
+ "message": {
335
+ "type": "object",
336
+ "additionalProperties": false,
337
+ "required": [
338
+ "kind",
339
+ "schema"
340
+ ],
341
+ "properties": {
342
+ "kind": {
343
+ "type": "string",
344
+ "minLength": 1
345
+ },
346
+ "schema": {
347
+ "type": "string",
348
+ "minLength": 1
349
+ }
350
+ }
351
+ }
352
+ }
353
+ }
@@ -0,0 +1,94 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://buildchain.kungfu.ai/contracts/release-tail-provider-bindings-v1.schema.json",
4
+ "title": "Buildchain release-tail provider bindings",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": [
8
+ "schema",
9
+ "artifacts",
10
+ "documents",
11
+ "evidence"
12
+ ],
13
+ "properties": {
14
+ "schema": {
15
+ "const": "kungfu.buildchain.release-tail.provider-bindings/v1"
16
+ },
17
+ "artifacts": {
18
+ "type": "object",
19
+ "additionalProperties": {
20
+ "type": "object",
21
+ "additionalProperties": false,
22
+ "required": [
23
+ "path",
24
+ "name"
25
+ ],
26
+ "properties": {
27
+ "path": {
28
+ "type": "string",
29
+ "minLength": 1
30
+ },
31
+ "name": {
32
+ "type": "string",
33
+ "minLength": 1
34
+ }
35
+ }
36
+ }
37
+ },
38
+ "documents": {
39
+ "type": "object",
40
+ "additionalProperties": false,
41
+ "properties": {
42
+ "signed-channel.commit": {
43
+ "$ref": "#/$defs/document"
44
+ },
45
+ "release.activate": {
46
+ "$ref": "#/$defs/document"
47
+ }
48
+ }
49
+ },
50
+ "evidence": {
51
+ "type": "object",
52
+ "additionalProperties": false,
53
+ "required": [
54
+ "inputs",
55
+ "output"
56
+ ],
57
+ "properties": {
58
+ "inputs": {
59
+ "type": "array",
60
+ "items": {
61
+ "type": "string",
62
+ "minLength": 1
63
+ }
64
+ },
65
+ "output": {
66
+ "type": "string",
67
+ "minLength": 1
68
+ }
69
+ }
70
+ }
71
+ },
72
+ "$defs": {
73
+ "document": {
74
+ "type": "object",
75
+ "additionalProperties": false,
76
+ "required": [
77
+ "path",
78
+ "method"
79
+ ],
80
+ "properties": {
81
+ "path": {
82
+ "type": "string",
83
+ "minLength": 1
84
+ },
85
+ "method": {
86
+ "enum": [
87
+ "PUT",
88
+ "POST"
89
+ ]
90
+ }
91
+ }
92
+ }
93
+ }
94
+ }