assertledger 1.4.0 → 1.5.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 (107) hide show
  1. package/README.fr.md +5 -2
  2. package/README.md +5 -2
  3. package/conformance/schema-extensions.json +15 -0
  4. package/dist/build-info.json +1 -1
  5. package/dist/cli.d.ts.map +1 -1
  6. package/dist/cli.js +213 -8
  7. package/dist/cli.js.map +1 -1
  8. package/dist/contracts/index.d.ts +467 -4
  9. package/dist/contracts/index.d.ts.map +1 -1
  10. package/dist/contracts/index.js +256 -3
  11. package/dist/contracts/index.js.map +1 -1
  12. package/dist/contracts/qualification.d.ts +528 -0
  13. package/dist/contracts/qualification.d.ts.map +1 -0
  14. package/dist/contracts/qualification.js +357 -0
  15. package/dist/contracts/qualification.js.map +1 -0
  16. package/dist/core/index.d.ts +9 -0
  17. package/dist/core/index.d.ts.map +1 -1
  18. package/dist/core/index.js +46 -2
  19. package/dist/core/index.js.map +1 -1
  20. package/dist/core/qualification.d.ts +17 -0
  21. package/dist/core/qualification.d.ts.map +1 -0
  22. package/dist/core/qualification.js +571 -0
  23. package/dist/core/qualification.js.map +1 -0
  24. package/dist/diagnostics.d.ts.map +1 -1
  25. package/dist/diagnostics.js +81 -4
  26. package/dist/diagnostics.js.map +1 -1
  27. package/dist/engine/adapters/bun-native.d.ts +35 -0
  28. package/dist/engine/adapters/bun-native.d.ts.map +1 -0
  29. package/dist/engine/adapters/bun-native.js +179 -0
  30. package/dist/engine/adapters/bun-native.js.map +1 -0
  31. package/dist/engine/adapters/bun-test-designated-profile.d.ts +23 -0
  32. package/dist/engine/adapters/bun-test-designated-profile.d.ts.map +1 -0
  33. package/dist/engine/adapters/bun-test-designated-profile.js +24 -0
  34. package/dist/engine/adapters/bun-test-designated-profile.js.map +1 -0
  35. package/dist/engine/container.d.ts +7 -0
  36. package/dist/engine/container.d.ts.map +1 -1
  37. package/dist/engine/container.js +22 -7
  38. package/dist/engine/container.js.map +1 -1
  39. package/dist/engine/git-regression.d.ts.map +1 -1
  40. package/dist/engine/git-regression.js +9 -2
  41. package/dist/engine/git-regression.js.map +1 -1
  42. package/dist/engine/index.d.ts +14 -0
  43. package/dist/engine/index.d.ts.map +1 -1
  44. package/dist/engine/index.js +828 -97
  45. package/dist/engine/index.js.map +1 -1
  46. package/dist/engine/qualification.d.ts +154 -0
  47. package/dist/engine/qualification.d.ts.map +1 -0
  48. package/dist/engine/qualification.js +725 -0
  49. package/dist/engine/qualification.js.map +1 -0
  50. package/dist/engine/test-closure.d.ts +39 -0
  51. package/dist/engine/test-closure.d.ts.map +1 -0
  52. package/dist/engine/test-closure.js +513 -0
  53. package/dist/engine/test-closure.js.map +1 -0
  54. package/dist/engine/witness-import.d.ts +31 -0
  55. package/dist/engine/witness-import.d.ts.map +1 -0
  56. package/dist/engine/witness-import.js +224 -0
  57. package/dist/engine/witness-import.js.map +1 -0
  58. package/dist/index.d.ts +3 -0
  59. package/dist/index.d.ts.map +1 -1
  60. package/dist/index.js +3 -0
  61. package/dist/index.js.map +1 -1
  62. package/dist/mcp/index.d.ts.map +1 -1
  63. package/dist/mcp/index.js +65 -0
  64. package/dist/mcp/index.js.map +1 -1
  65. package/dist/sdk/index.d.ts +292 -3
  66. package/dist/sdk/index.d.ts.map +1 -1
  67. package/dist/sdk/index.js +39 -1
  68. package/dist/sdk/index.js.map +1 -1
  69. package/docs/container-isolation.md +6 -0
  70. package/docs/migration-orchestration-qualification-v1.md +109 -0
  71. package/docs/migration-verification-v4.md +94 -0
  72. package/docs/orchestration-qualification.md +167 -0
  73. package/docs/reference.md +7 -0
  74. package/docs/witness-import.md +67 -0
  75. package/examples/orchestration/README.md +68 -0
  76. package/examples/orchestration/consumer-obligations.json +101 -0
  77. package/examples/orchestration/workspace/bitbucket-pipelines.yml +10 -0
  78. package/examples/orchestration/workspace/command-shape.test.mjs +25 -0
  79. package/examples/orchestration/workspace/commands.mjs +14 -0
  80. package/examples/orchestration/workspace/completion.mjs +39 -0
  81. package/examples/orchestration/workspace/faults.json +1 -0
  82. package/examples/orchestration/workspace/native.test.ts +4 -0
  83. package/examples/orchestration/workspace/package.json +6 -0
  84. package/examples/orchestration/workspace/packages/app/package.json +12 -0
  85. package/examples/orchestration/workspace/packages/app/verdict.txt +1 -0
  86. package/examples/orchestration/workspace/packages/leaf/package.json +9 -0
  87. package/examples/orchestration/workspace/packages/leaf/verdict.txt +1 -0
  88. package/examples/orchestration/workspace/pnpm-lock.yaml +170 -0
  89. package/examples/orchestration/workspace/pnpm-workspace.yaml +2 -0
  90. package/examples/orchestration/workspace/task.mjs +23 -0
  91. package/examples/orchestration/workspace/turbo.json +38 -0
  92. package/examples/orchestration/workspace/wrapper.mjs +45 -0
  93. package/integrations/bun/driver.d.mts +30 -1
  94. package/integrations/bun/driver.mjs +215 -6
  95. package/integrations/bun/preload.mjs +186 -5
  96. package/integrations/bun-native/README.md +86 -0
  97. package/integrations/bun-native/driver.mjs +396 -0
  98. package/integrations/bun-native/preload.mjs +375 -0
  99. package/integrations/skill/SKILL.md +25 -5
  100. package/package.json +1 -1
  101. package/schemas/evidence-manifest.v4.json +995 -0
  102. package/schemas/qualification-execution-request.v1.json +571 -0
  103. package/schemas/qualification-plan.v1.json +528 -0
  104. package/schemas/qualification-receipt.v1.json +821 -0
  105. package/schemas/qualification-replay-result.v1.json +37 -0
  106. package/schemas/verification-request.v4.json +590 -0
  107. package/schemas/witness-import-request.v1.json +231 -0
@@ -0,0 +1,821 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "type": "object",
4
+ "properties": {
5
+ "schemaVersion": {
6
+ "type": "string",
7
+ "const": "1.0.0"
8
+ },
9
+ "plan": {
10
+ "type": "object",
11
+ "properties": {
12
+ "schemaVersion": {
13
+ "type": "string",
14
+ "const": "1.0.0"
15
+ },
16
+ "profileId": {
17
+ "type": "string",
18
+ "minLength": 1,
19
+ "maxLength": 128,
20
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]*$"
21
+ },
22
+ "subject": {
23
+ "type": "object",
24
+ "properties": {
25
+ "commit": {
26
+ "type": "string",
27
+ "minLength": 1,
28
+ "maxLength": 128
29
+ },
30
+ "baseCommit": {
31
+ "type": "string",
32
+ "minLength": 1,
33
+ "maxLength": 128
34
+ },
35
+ "candidateDigest": {
36
+ "type": "string",
37
+ "pattern": "^sha256:[a-f0-9]{64}$"
38
+ },
39
+ "inputDigest": {
40
+ "type": "string",
41
+ "pattern": "^sha256:[a-f0-9]{64}$"
42
+ }
43
+ },
44
+ "required": ["commit", "baseCommit", "candidateDigest", "inputDigest"],
45
+ "additionalProperties": false
46
+ },
47
+ "ciTrust": {
48
+ "type": "object",
49
+ "properties": {
50
+ "repositoryId": {
51
+ "type": "string",
52
+ "minLength": 1,
53
+ "maxLength": 512
54
+ },
55
+ "observerId": {
56
+ "type": "string",
57
+ "minLength": 1,
58
+ "maxLength": 128,
59
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]*$"
60
+ },
61
+ "publicKeyPem": {
62
+ "type": "string",
63
+ "minLength": 1,
64
+ "maxLength": 8192
65
+ },
66
+ "requiredSteps": {
67
+ "minItems": 1,
68
+ "maxItems": 1000,
69
+ "type": "array",
70
+ "items": {
71
+ "type": "object",
72
+ "properties": {
73
+ "id": {
74
+ "type": "string",
75
+ "minLength": 1,
76
+ "maxLength": 128,
77
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]*$"
78
+ },
79
+ "commandDigest": {
80
+ "type": "string",
81
+ "pattern": "^sha256:[a-f0-9]{64}$"
82
+ }
83
+ },
84
+ "required": ["id", "commandDigest"],
85
+ "additionalProperties": false
86
+ }
87
+ }
88
+ },
89
+ "required": ["repositoryId", "observerId", "publicKeyPem", "requiredSteps"],
90
+ "additionalProperties": false
91
+ },
92
+ "tools": {
93
+ "minItems": 1,
94
+ "maxItems": 100,
95
+ "type": "array",
96
+ "items": {
97
+ "type": "object",
98
+ "properties": {
99
+ "id": {
100
+ "type": "string",
101
+ "minLength": 1,
102
+ "maxLength": 128,
103
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]*$"
104
+ },
105
+ "version": {
106
+ "type": "string",
107
+ "minLength": 1,
108
+ "maxLength": 128
109
+ },
110
+ "digest": {
111
+ "type": "string",
112
+ "pattern": "^sha256:[a-f0-9]{64}$"
113
+ },
114
+ "identityPath": {
115
+ "type": "string",
116
+ "minLength": 1,
117
+ "maxLength": 4096
118
+ },
119
+ "versionCommand": {
120
+ "type": "object",
121
+ "properties": {
122
+ "executable": {
123
+ "type": "string",
124
+ "minLength": 1,
125
+ "maxLength": 4096
126
+ },
127
+ "arguments": {
128
+ "maxItems": 100,
129
+ "type": "array",
130
+ "items": {
131
+ "type": "string",
132
+ "maxLength": 8192
133
+ }
134
+ }
135
+ },
136
+ "required": ["executable", "arguments"],
137
+ "additionalProperties": false
138
+ }
139
+ },
140
+ "required": ["id", "version", "digest"],
141
+ "additionalProperties": false
142
+ }
143
+ },
144
+ "suites": {
145
+ "maxItems": 1000,
146
+ "type": "array",
147
+ "items": {
148
+ "type": "object",
149
+ "properties": {
150
+ "id": {
151
+ "type": "string",
152
+ "minLength": 1,
153
+ "maxLength": 128,
154
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]*$"
155
+ },
156
+ "files": {
157
+ "maxItems": 1000,
158
+ "type": "array",
159
+ "items": {
160
+ "type": "string",
161
+ "minLength": 1,
162
+ "maxLength": 512
163
+ }
164
+ },
165
+ "extraction": {
166
+ "type": "string",
167
+ "enum": ["COMPLETE", "UNAVAILABLE", "OMITTED"]
168
+ }
169
+ },
170
+ "required": ["id", "files", "extraction"],
171
+ "additionalProperties": false
172
+ }
173
+ },
174
+ "obligations": {
175
+ "minItems": 1,
176
+ "maxItems": 1000,
177
+ "type": "array",
178
+ "items": {
179
+ "type": "object",
180
+ "properties": {
181
+ "id": {
182
+ "type": "string",
183
+ "minLength": 1,
184
+ "maxLength": 128,
185
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]*$"
186
+ },
187
+ "kind": {
188
+ "type": "string",
189
+ "enum": [
190
+ "tests",
191
+ "selection",
192
+ "cache",
193
+ "propagation",
194
+ "wrapper",
195
+ "ci-config",
196
+ "ci-local",
197
+ "ci-live"
198
+ ]
199
+ },
200
+ "required": {
201
+ "type": "boolean"
202
+ },
203
+ "suiteIds": {
204
+ "maxItems": 1000,
205
+ "type": "array",
206
+ "items": {
207
+ "type": "string",
208
+ "minLength": 1,
209
+ "maxLength": 128,
210
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]*$"
211
+ }
212
+ },
213
+ "checks": {
214
+ "minItems": 1,
215
+ "maxItems": 1000,
216
+ "type": "array",
217
+ "items": {
218
+ "type": "object",
219
+ "properties": {
220
+ "id": {
221
+ "type": "string",
222
+ "minLength": 1,
223
+ "maxLength": 128,
224
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]*$"
225
+ },
226
+ "actionId": {
227
+ "type": "string",
228
+ "minLength": 1,
229
+ "maxLength": 128,
230
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]*$"
231
+ },
232
+ "field": {
233
+ "type": "string",
234
+ "minLength": 1,
235
+ "maxLength": 512
236
+ },
237
+ "expected": {
238
+ "$ref": "#/$defs/__schema0"
239
+ }
240
+ },
241
+ "required": ["id", "actionId", "field", "expected"],
242
+ "additionalProperties": false
243
+ }
244
+ },
245
+ "limits": {
246
+ "maxItems": 100,
247
+ "type": "array",
248
+ "items": {
249
+ "type": "string",
250
+ "minLength": 1,
251
+ "maxLength": 2048
252
+ }
253
+ }
254
+ },
255
+ "required": ["id", "kind", "required", "suiteIds", "checks", "limits"],
256
+ "additionalProperties": false
257
+ }
258
+ },
259
+ "actions": {
260
+ "minItems": 1,
261
+ "maxItems": 1000,
262
+ "type": "array",
263
+ "items": {
264
+ "type": "object",
265
+ "properties": {
266
+ "id": {
267
+ "type": "string",
268
+ "minLength": 1,
269
+ "maxLength": 128,
270
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]*$"
271
+ },
272
+ "adapter": {
273
+ "type": "string",
274
+ "enum": ["command", "turbo", "node-test", "bun-native", "ci-config"]
275
+ },
276
+ "executable": {
277
+ "type": "string",
278
+ "minLength": 1,
279
+ "maxLength": 1024
280
+ },
281
+ "arguments": {
282
+ "maxItems": 100,
283
+ "type": "array",
284
+ "items": {
285
+ "type": "string",
286
+ "maxLength": 8192
287
+ }
288
+ },
289
+ "environment": {
290
+ "type": "object",
291
+ "propertyNames": {
292
+ "type": "string",
293
+ "pattern": "^[A-Za-z_][A-Za-z0-9_]*$"
294
+ },
295
+ "additionalProperties": {
296
+ "type": "string",
297
+ "maxLength": 8192
298
+ }
299
+ },
300
+ "prepareFiles": {
301
+ "maxItems": 1000,
302
+ "type": "array",
303
+ "items": {
304
+ "type": "object",
305
+ "properties": {
306
+ "path": {
307
+ "type": "string",
308
+ "minLength": 1,
309
+ "maxLength": 512
310
+ },
311
+ "content": {
312
+ "type": "string",
313
+ "maxLength": 1048576
314
+ }
315
+ },
316
+ "required": ["path", "content"],
317
+ "additionalProperties": false
318
+ }
319
+ },
320
+ "removePaths": {
321
+ "maxItems": 1000,
322
+ "type": "array",
323
+ "items": {
324
+ "type": "string",
325
+ "minLength": 1,
326
+ "maxLength": 512
327
+ }
328
+ },
329
+ "observe": {
330
+ "type": "object",
331
+ "properties": {
332
+ "trace": {
333
+ "type": "boolean"
334
+ },
335
+ "outputs": {
336
+ "maxItems": 1000,
337
+ "type": "array",
338
+ "items": {
339
+ "type": "string",
340
+ "minLength": 1,
341
+ "maxLength": 512
342
+ }
343
+ },
344
+ "report": {
345
+ "anyOf": [
346
+ {
347
+ "type": "string",
348
+ "minLength": 1,
349
+ "maxLength": 512
350
+ },
351
+ {
352
+ "type": "null"
353
+ }
354
+ ]
355
+ }
356
+ },
357
+ "required": ["trace", "outputs", "report"],
358
+ "additionalProperties": false
359
+ }
360
+ },
361
+ "required": [
362
+ "id",
363
+ "adapter",
364
+ "executable",
365
+ "arguments",
366
+ "environment",
367
+ "prepareFiles",
368
+ "removePaths",
369
+ "observe"
370
+ ],
371
+ "additionalProperties": false
372
+ }
373
+ },
374
+ "worlds": {
375
+ "minItems": 2,
376
+ "maxItems": 1000,
377
+ "type": "array",
378
+ "items": {
379
+ "type": "object",
380
+ "properties": {
381
+ "id": {
382
+ "type": "string",
383
+ "minLength": 1,
384
+ "maxLength": 128,
385
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]*$"
386
+ },
387
+ "kind": {
388
+ "type": "string",
389
+ "enum": ["REFERENCE", "TARGET", "NEUTRAL"]
390
+ },
391
+ "files": {
392
+ "maxItems": 1000,
393
+ "type": "array",
394
+ "items": {
395
+ "type": "object",
396
+ "properties": {
397
+ "path": {
398
+ "type": "string",
399
+ "minLength": 1,
400
+ "maxLength": 512
401
+ },
402
+ "content": {
403
+ "type": "string",
404
+ "maxLength": 1048576
405
+ }
406
+ },
407
+ "required": ["path", "content"],
408
+ "additionalProperties": false
409
+ }
410
+ },
411
+ "discriminants": {
412
+ "maxItems": 1000,
413
+ "type": "array",
414
+ "items": {
415
+ "type": "object",
416
+ "properties": {
417
+ "obligationId": {
418
+ "type": "string",
419
+ "minLength": 1,
420
+ "maxLength": 128,
421
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]*$"
422
+ },
423
+ "checkIds": {
424
+ "minItems": 1,
425
+ "maxItems": 1000,
426
+ "type": "array",
427
+ "items": {
428
+ "type": "string",
429
+ "minLength": 1,
430
+ "maxLength": 128,
431
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]*$"
432
+ }
433
+ }
434
+ },
435
+ "required": ["obligationId", "checkIds"],
436
+ "additionalProperties": false
437
+ }
438
+ }
439
+ },
440
+ "required": ["id", "kind", "files", "discriminants"],
441
+ "additionalProperties": false
442
+ }
443
+ },
444
+ "requiredAttempts": {
445
+ "type": "integer",
446
+ "minimum": 2,
447
+ "maximum": 10
448
+ },
449
+ "timeoutMs": {
450
+ "type": "integer",
451
+ "minimum": 1,
452
+ "maximum": 600000
453
+ },
454
+ "maximumOutputBytes": {
455
+ "type": "integer",
456
+ "minimum": 1,
457
+ "maximum": 16777216
458
+ },
459
+ "isolation": {
460
+ "type": "object",
461
+ "properties": {
462
+ "kind": {
463
+ "type": "string",
464
+ "const": "trusted-local"
465
+ },
466
+ "acknowledgedUnsafeExecution": {
467
+ "type": "boolean",
468
+ "const": true
469
+ }
470
+ },
471
+ "required": ["kind", "acknowledgedUnsafeExecution"],
472
+ "additionalProperties": false
473
+ },
474
+ "allowedCandidatePaths": {
475
+ "maxItems": 1000,
476
+ "type": "array",
477
+ "items": {
478
+ "type": "string",
479
+ "minLength": 1,
480
+ "maxLength": 512
481
+ }
482
+ }
483
+ },
484
+ "required": [
485
+ "schemaVersion",
486
+ "profileId",
487
+ "subject",
488
+ "tools",
489
+ "suites",
490
+ "obligations",
491
+ "actions",
492
+ "worlds",
493
+ "requiredAttempts",
494
+ "timeoutMs",
495
+ "maximumOutputBytes",
496
+ "isolation",
497
+ "allowedCandidatePaths"
498
+ ],
499
+ "additionalProperties": false
500
+ },
501
+ "planDigest": {
502
+ "type": "string",
503
+ "pattern": "^sha256:[a-f0-9]{64}$"
504
+ },
505
+ "candidateDigest": {
506
+ "type": "string",
507
+ "pattern": "^sha256:[a-f0-9]{64}$"
508
+ },
509
+ "observations": {
510
+ "type": "array",
511
+ "items": {
512
+ "type": "object",
513
+ "properties": {
514
+ "worldId": {
515
+ "type": "string",
516
+ "minLength": 1,
517
+ "maxLength": 128,
518
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]*$"
519
+ },
520
+ "attempt": {
521
+ "type": "integer",
522
+ "minimum": 1,
523
+ "maximum": 10
524
+ },
525
+ "actionId": {
526
+ "type": "string",
527
+ "minLength": 1,
528
+ "maxLength": 128,
529
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]*$"
530
+ },
531
+ "state": {
532
+ "type": "string",
533
+ "enum": ["COMPLETED", "TIMEOUT", "CRASH", "INFRA_ERROR", "COLLECTION_ERROR", "NO_TESTS"]
534
+ },
535
+ "facts": {
536
+ "type": "object",
537
+ "propertyNames": {
538
+ "type": "string"
539
+ },
540
+ "additionalProperties": {
541
+ "$ref": "#/$defs/__schema0"
542
+ }
543
+ },
544
+ "bindingDigest": {
545
+ "type": "string",
546
+ "pattern": "^sha256:[a-f0-9]{64}$"
547
+ }
548
+ },
549
+ "required": ["worldId", "attempt", "actionId", "state", "facts", "bindingDigest"],
550
+ "additionalProperties": false
551
+ }
552
+ },
553
+ "provenance": {
554
+ "type": "object",
555
+ "properties": {
556
+ "engineVersion": {
557
+ "type": "string",
558
+ "minLength": 1
559
+ },
560
+ "adapterVersions": {
561
+ "type": "object",
562
+ "propertyNames": {
563
+ "type": "string"
564
+ },
565
+ "additionalProperties": {
566
+ "type": "string",
567
+ "minLength": 1
568
+ }
569
+ },
570
+ "runtime": {
571
+ "type": "object",
572
+ "properties": {
573
+ "mechanismDigest": {
574
+ "type": "string",
575
+ "pattern": "^sha256:[a-f0-9]{64}$"
576
+ },
577
+ "platform": {
578
+ "type": "string",
579
+ "minLength": 1,
580
+ "maxLength": 128
581
+ },
582
+ "architecture": {
583
+ "type": "string",
584
+ "minLength": 1,
585
+ "maxLength": 128
586
+ },
587
+ "node": {
588
+ "type": "string",
589
+ "pattern": "^\\d+\\.\\d+\\.\\d+(?:[-+][A-Za-z0-9.-]+)?$"
590
+ },
591
+ "tools": {
592
+ "type": "object",
593
+ "propertyNames": {
594
+ "type": "string",
595
+ "minLength": 1,
596
+ "maxLength": 128,
597
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]*$"
598
+ },
599
+ "additionalProperties": {
600
+ "type": "object",
601
+ "properties": {
602
+ "executable": {
603
+ "type": "string",
604
+ "minLength": 1,
605
+ "maxLength": 4096
606
+ },
607
+ "identityPath": {
608
+ "type": "string",
609
+ "minLength": 1,
610
+ "maxLength": 4096
611
+ },
612
+ "digest": {
613
+ "type": "string",
614
+ "pattern": "^sha256:[a-f0-9]{64}$"
615
+ },
616
+ "version": {
617
+ "type": "string",
618
+ "minLength": 1,
619
+ "maxLength": 128
620
+ },
621
+ "versionArguments": {
622
+ "maxItems": 100,
623
+ "type": "array",
624
+ "items": {
625
+ "type": "string",
626
+ "maxLength": 8192
627
+ }
628
+ }
629
+ },
630
+ "required": ["executable", "identityPath", "digest", "version", "versionArguments"],
631
+ "additionalProperties": false
632
+ }
633
+ },
634
+ "collectorDigest": {
635
+ "type": "string",
636
+ "pattern": "^sha256:[a-f0-9]{64}$"
637
+ },
638
+ "snapshotExcludes": {
639
+ "type": "array",
640
+ "prefixItems": [
641
+ {
642
+ "type": "string",
643
+ "const": ".git"
644
+ },
645
+ {
646
+ "type": "string",
647
+ "const": ".testforge"
648
+ },
649
+ {
650
+ "type": "string",
651
+ "const": ".turbo"
652
+ },
653
+ {
654
+ "type": "string",
655
+ "const": "coverage"
656
+ },
657
+ {
658
+ "type": "string",
659
+ "const": "node_modules"
660
+ }
661
+ ]
662
+ },
663
+ "dependencySnapshot": {
664
+ "type": "string",
665
+ "const": "EXCLUDED_NODE_MODULES"
666
+ }
667
+ },
668
+ "required": [
669
+ "mechanismDigest",
670
+ "platform",
671
+ "architecture",
672
+ "node",
673
+ "tools",
674
+ "collectorDigest",
675
+ "snapshotExcludes",
676
+ "dependencySnapshot"
677
+ ],
678
+ "additionalProperties": false
679
+ },
680
+ "executionTrust": {
681
+ "type": "string",
682
+ "const": "TRUSTED_LOCAL_UNSANDBOXED"
683
+ }
684
+ },
685
+ "required": ["engineVersion", "adapterVersions", "runtime", "executionTrust"],
686
+ "additionalProperties": false
687
+ },
688
+ "externalCi": {
689
+ "anyOf": [
690
+ {
691
+ "$ref": "#/$defs/__schema0"
692
+ },
693
+ {
694
+ "type": "null"
695
+ }
696
+ ]
697
+ },
698
+ "assessments": {
699
+ "type": "array",
700
+ "items": {
701
+ "type": "object",
702
+ "properties": {
703
+ "obligationId": {
704
+ "type": "string",
705
+ "minLength": 1,
706
+ "maxLength": 128,
707
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]*$"
708
+ },
709
+ "kind": {
710
+ "type": "string"
711
+ },
712
+ "required": {
713
+ "type": "boolean"
714
+ },
715
+ "status": {
716
+ "type": "string",
717
+ "enum": ["COVERED", "OPEN", "REJECTED"]
718
+ },
719
+ "reasons": {
720
+ "type": "array",
721
+ "items": {
722
+ "type": "string"
723
+ }
724
+ },
725
+ "mismatchCheckIds": {
726
+ "type": "array",
727
+ "items": {
728
+ "type": "string",
729
+ "minLength": 1,
730
+ "maxLength": 128,
731
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]*$"
732
+ }
733
+ }
734
+ },
735
+ "required": ["obligationId", "kind", "required", "status", "reasons", "mismatchCheckIds"],
736
+ "additionalProperties": false
737
+ }
738
+ },
739
+ "coveredGuaranteeIds": {
740
+ "type": "array",
741
+ "items": {
742
+ "type": "string",
743
+ "minLength": 1,
744
+ "maxLength": 128,
745
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]*$"
746
+ }
747
+ },
748
+ "openGuaranteeIds": {
749
+ "type": "array",
750
+ "items": {
751
+ "type": "string",
752
+ "minLength": 1,
753
+ "maxLength": 128,
754
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]*$"
755
+ }
756
+ },
757
+ "decision": {
758
+ "type": "string",
759
+ "enum": ["QUALIFIED", "OPEN", "REJECTED"]
760
+ },
761
+ "decisionDigest": {
762
+ "type": "string",
763
+ "pattern": "^sha256:[a-f0-9]{64}$"
764
+ },
765
+ "artifactDigest": {
766
+ "type": "string",
767
+ "pattern": "^sha256:[a-f0-9]{64}$"
768
+ }
769
+ },
770
+ "required": [
771
+ "schemaVersion",
772
+ "plan",
773
+ "planDigest",
774
+ "candidateDigest",
775
+ "observations",
776
+ "provenance",
777
+ "externalCi",
778
+ "assessments",
779
+ "coveredGuaranteeIds",
780
+ "openGuaranteeIds",
781
+ "decision",
782
+ "decisionDigest",
783
+ "artifactDigest"
784
+ ],
785
+ "additionalProperties": false,
786
+ "$defs": {
787
+ "__schema0": {
788
+ "anyOf": [
789
+ {
790
+ "type": "string"
791
+ },
792
+ {
793
+ "type": "number"
794
+ },
795
+ {
796
+ "type": "boolean"
797
+ },
798
+ {
799
+ "type": "null"
800
+ },
801
+ {
802
+ "type": "array",
803
+ "items": {
804
+ "$ref": "#/$defs/__schema0"
805
+ }
806
+ },
807
+ {
808
+ "type": "object",
809
+ "propertyNames": {
810
+ "type": "string"
811
+ },
812
+ "additionalProperties": {
813
+ "$ref": "#/$defs/__schema0"
814
+ }
815
+ }
816
+ ]
817
+ }
818
+ },
819
+ "$id": "https://testforge.dev/schemas/qualification-receipt.v1.json",
820
+ "title": "Orchestration qualification receipt v1"
821
+ }