@viberaven/cli 1.7.0 → 1.7.1

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 (35) hide show
  1. package/AGENTS.md +64 -64
  2. package/LICENSE +21 -21
  3. package/README.md +67 -67
  4. package/SECURITY.md +59 -59
  5. package/dist/cli.js +697 -632
  6. package/dist/console/app.js +251 -251
  7. package/dist/console/index.html +46 -46
  8. package/dist/console/styles.css +267 -267
  9. package/dist/github-ci.js +1 -1
  10. package/dist/playbooks/_stack-default.json +11 -11
  11. package/dist/playbooks/auth-supabase.json +31 -31
  12. package/dist/playbooks/stripe.json +66 -66
  13. package/dist/playbooks/supabase.json +51 -51
  14. package/dist/playbooks/vercel.json +42 -42
  15. package/dist/report/assets/provider-authjs.svg +5 -5
  16. package/dist/report/assets/provider-aws.svg +5 -5
  17. package/dist/report/assets/provider-logrocket.svg +4 -4
  18. package/dist/report/report-cli.css +1466 -1466
  19. package/dist/report/station.css +11854 -11854
  20. package/dist/report/station.js +8319 -8319
  21. package/dist/stack/scene.css +522 -522
  22. package/dist/stack/stack.css +1691 -1691
  23. package/dist/vendor/anime.umd.min.js +7 -7
  24. package/package.json +96 -96
  25. package/playbooks/_stack-default.json +11 -11
  26. package/playbooks/auth-supabase.json +31 -31
  27. package/playbooks/stripe.json +66 -66
  28. package/playbooks/supabase.json +51 -51
  29. package/playbooks/vercel.json +42 -42
  30. package/schemas/permissions-matrix.schema.json +90 -90
  31. package/schemas/verification-plan.schema.json +350 -350
  32. package/schemas/verification-report.schema.json +550 -550
  33. package/templates/AGENTS.snippet.md +56 -56
  34. package/templates/CLAUDE.snippet.md +14 -14
  35. package/templates/CURSOR.snippet.md +14 -14
@@ -1,550 +1,550 @@
1
- {
2
- "$schema": "http://json-schema.org/draft-07/schema#",
3
- "title": "VibeRaven local independent verification report v1",
4
- "description": "Generated by the local trusted runner only, never accepted as input. checked means an observation ran; outcome separately records passed/failed. Conditions are the single public evidence mapping. Stored initial Task contract metadata remains backward compatible. Runtime additionally verifies frozen plan, snapshot, artifact and receipt hashes and checks current source freshness.",
5
- "type": "object",
6
- "properties": {
7
- "version": {
8
- "const": 1
9
- },
10
- "taskId": {
11
- "type": "string",
12
- "pattern": "^[a-f0-9-]{36}$"
13
- },
14
- "contractHash": {
15
- "type": "string",
16
- "pattern": "^[a-f0-9]{64}$"
17
- },
18
- "planHash": {
19
- "type": "string",
20
- "pattern": "^[a-f0-9]{64}$"
21
- },
22
- "baselineHash": {
23
- "type": "string",
24
- "pattern": "^[a-f0-9]{64}$"
25
- },
26
- "candidateHash": {
27
- "anyOf": [
28
- {
29
- "type": "string",
30
- "pattern": "^[a-f0-9]{64}$"
31
- },
32
- {
33
- "type": "null"
34
- }
35
- ]
36
- },
37
- "attemptId": {
38
- "anyOf": [
39
- {
40
- "type": "string",
41
- "pattern": "^[a-f0-9-]{36}$"
42
- },
43
- {
44
- "type": "null"
45
- }
46
- ]
47
- },
48
- "status": {
49
- "enum": [
50
- "checked",
51
- "failed",
52
- "not_checked"
53
- ]
54
- },
55
- "stale": {
56
- "type": "boolean"
57
- },
58
- "preparedAt": {
59
- "type": "string",
60
- "minLength": 1,
61
- "maxLength": 40
62
- },
63
- "approvedAt": {
64
- "type": "string",
65
- "minLength": 1,
66
- "maxLength": 40
67
- },
68
- "image": {
69
- "type": "string",
70
- "maxLength": 500
71
- },
72
- "adapterVersion": {
73
- "const": "local-oracle-v1"
74
- },
75
- "baselineHeadSha": {
76
- "anyOf": [
77
- {
78
- "type": "string",
79
- "pattern": "^[a-f0-9]{40,64}$"
80
- },
81
- {
82
- "type": "null"
83
- }
84
- ]
85
- },
86
- "candidateHeadSha": {
87
- "anyOf": [
88
- {
89
- "type": "string",
90
- "pattern": "^[a-f0-9]{40,64}$"
91
- },
92
- {
93
- "type": "null"
94
- }
95
- ]
96
- },
97
- "conditions": {
98
- "type": "array",
99
- "items": {
100
- "type": "object",
101
- "properties": {
102
- "conditionId": {
103
- "type": "string",
104
- "pattern": "^[a-z][a-z0-9_-]{0,39}$"
105
- },
106
- "status": {
107
- "enum": [
108
- "checked",
109
- "not_checked"
110
- ]
111
- },
112
- "outcome": {
113
- "enum": [
114
- "passed",
115
- "failed"
116
- ]
117
- },
118
- "reason": {
119
- "type": "string",
120
- "maxLength": 500
121
- },
122
- "checkIds": {
123
- "type": "array",
124
- "items": {
125
- "type": "string",
126
- "pattern": "^[a-z][a-z0-9_-]{0,39}$"
127
- },
128
- "maxItems": 32
129
- },
130
- "receiptIds": {
131
- "type": "array",
132
- "items": {
133
- "type": "string",
134
- "pattern": "^[a-f0-9-]{36}$"
135
- },
136
- "maxItems": 64
137
- },
138
- "provenance": {
139
- "type": "object",
140
- "properties": {
141
- "kind": {
142
- "const": "independent_local_verification"
143
- },
144
- "planHash": {
145
- "type": "string",
146
- "pattern": "^[a-f0-9]{64}$"
147
- },
148
- "baselineHash": {
149
- "type": "string",
150
- "pattern": "^[a-f0-9]{64}$"
151
- },
152
- "candidateHash": {
153
- "type": "string",
154
- "pattern": "^(?:[a-f0-9]{64})?$"
155
- },
156
- "attemptId": {
157
- "type": "string",
158
- "pattern": "^(?:[a-f0-9-]{36})?$"
159
- },
160
- "adapterVersion": {
161
- "const": "local-oracle-v1"
162
- }
163
- },
164
- "required": [
165
- "kind",
166
- "planHash",
167
- "baselineHash",
168
- "candidateHash",
169
- "attemptId",
170
- "adapterVersion"
171
- ],
172
- "additionalProperties": false
173
- }
174
- },
175
- "required": [
176
- "conditionId",
177
- "status",
178
- "reason",
179
- "checkIds",
180
- "receiptIds",
181
- "provenance"
182
- ],
183
- "additionalProperties": false,
184
- "oneOf": [
185
- {
186
- "properties": {
187
- "status": {
188
- "const": "checked"
189
- },
190
- "checkIds": {
191
- "minItems": 1
192
- },
193
- "receiptIds": {
194
- "minItems": 2
195
- }
196
- },
197
- "required": [
198
- "outcome"
199
- ]
200
- },
201
- {
202
- "properties": {
203
- "status": {
204
- "const": "not_checked"
205
- }
206
- },
207
- "not": {
208
- "required": [
209
- "outcome"
210
- ]
211
- }
212
- }
213
- ]
214
- },
215
- "maxItems": 32
216
- },
217
- "scope": {
218
- "type": "object",
219
- "properties": {
220
- "status": {
221
- "enum": [
222
- "checked",
223
- "failed",
224
- "not_checked"
225
- ]
226
- },
227
- "changedPaths": {
228
- "type": "array",
229
- "items": {
230
- "type": "string",
231
- "maxLength": 500
232
- },
233
- "maxItems": 6000
234
- },
235
- "outsidePaths": {
236
- "type": "array",
237
- "items": {
238
- "type": "string",
239
- "maxLength": 500
240
- },
241
- "maxItems": 6000
242
- },
243
- "protectedChanges": {
244
- "type": "array",
245
- "items": {
246
- "type": "string",
247
- "maxLength": 500
248
- },
249
- "maxItems": 6000
250
- }
251
- },
252
- "required": [
253
- "status",
254
- "changedPaths",
255
- "outsidePaths",
256
- "protectedChanges"
257
- ],
258
- "additionalProperties": false
259
- },
260
- "receipts": {
261
- "type": "array",
262
- "items": {
263
- "type": "object",
264
- "properties": {
265
- "id": {
266
- "type": "string",
267
- "pattern": "^[a-f0-9-]{36}$"
268
- },
269
- "checkId": {
270
- "type": "string",
271
- "pattern": "^[a-z][a-z0-9_-]{0,39}$"
272
- },
273
- "phase": {
274
- "enum": [
275
- "baseline",
276
- "candidate"
277
- ]
278
- },
279
- "attemptId": {
280
- "type": "string",
281
- "pattern": "^[a-f0-9-]{36}$"
282
- },
283
- "planHash": {
284
- "type": "string",
285
- "pattern": "^[a-f0-9]{64}$"
286
- },
287
- "snapshotHash": {
288
- "type": "string",
289
- "pattern": "^[a-f0-9]{64}$"
290
- },
291
- "image": {
292
- "type": "string",
293
- "maxLength": 500
294
- },
295
- "retries": {
296
- "type": "integer",
297
- "minimum": 1,
298
- "maximum": 2
299
- },
300
- "state": {
301
- "enum": [
302
- "running",
303
- "completed"
304
- ]
305
- },
306
- "observation": {
307
- "type": "object",
308
- "properties": {
309
- "outcome": {
310
- "enum": [
311
- "pass",
312
- "fail",
313
- "not_checked"
314
- ]
315
- },
316
- "reason": {
317
- "type": "string",
318
- "maxLength": 500
319
- },
320
- "startedAt": {
321
- "type": "string",
322
- "minLength": 1,
323
- "maxLength": 40
324
- },
325
- "durationMs": {
326
- "type": "integer",
327
- "minimum": 0
328
- },
329
- "image": {
330
- "type": "string",
331
- "maxLength": 500
332
- },
333
- "adapterVersion": {
334
- "enum": [
335
- "local-oracle-v1",
336
- "local-http-v1"
337
- ]
338
- },
339
- "artifacts": {
340
- "type": "object",
341
- "properties": {
342
- "stdoutSha256": {
343
- "type": "string",
344
- "pattern": "^[a-f0-9]{64}$"
345
- },
346
- "stderrSha256": {
347
- "type": "string",
348
- "pattern": "^[a-f0-9]{64}$"
349
- },
350
- "capturedBytes": {
351
- "type": "integer",
352
- "minimum": 0
353
- },
354
- "truncated": {
355
- "type": "boolean"
356
- },
357
- "stdoutRef": {
358
- "type": "string",
359
- "maxLength": 500
360
- },
361
- "stderrRef": {
362
- "type": "string",
363
- "maxLength": 500
364
- }
365
- },
366
- "required": [
367
- "stdoutSha256",
368
- "stderrSha256",
369
- "capturedBytes",
370
- "truncated"
371
- ],
372
- "additionalProperties": false
373
- },
374
- "cases": {
375
- "type": "object",
376
- "properties": {
377
- "passed": {
378
- "type": "integer",
379
- "minimum": 0
380
- },
381
- "total": {
382
- "type": "integer",
383
- "minimum": 0
384
- },
385
- "mismatched": {
386
- "type": "array",
387
- "items": {
388
- "type": "integer",
389
- "minimum": 0
390
- },
391
- "maxItems": 32
392
- }
393
- },
394
- "required": [
395
- "passed",
396
- "total",
397
- "mismatched"
398
- ],
399
- "additionalProperties": false
400
- },
401
- "tests": {
402
- "type": "object",
403
- "properties": {
404
- "passed": {
405
- "type": "integer",
406
- "minimum": 0
407
- },
408
- "failed": {
409
- "type": "integer",
410
- "minimum": 0
411
- },
412
- "skipped": {
413
- "type": "integer",
414
- "minimum": 0
415
- },
416
- "total": {
417
- "type": "integer",
418
- "minimum": 0
419
- },
420
- "fileFailures": {
421
- "type": "integer",
422
- "minimum": 0
423
- }
424
- },
425
- "required": [
426
- "passed",
427
- "failed",
428
- "skipped",
429
- "total"
430
- ],
431
- "additionalProperties": false
432
- }
433
- },
434
- "required": [
435
- "outcome",
436
- "reason",
437
- "startedAt",
438
- "durationMs",
439
- "image",
440
- "adapterVersion",
441
- "artifacts"
442
- ],
443
- "additionalProperties": false
444
- },
445
- "hash": {
446
- "type": "string",
447
- "pattern": "^[a-f0-9]{64}$"
448
- }
449
- },
450
- "required": [
451
- "id",
452
- "checkId",
453
- "phase",
454
- "attemptId",
455
- "planHash",
456
- "snapshotHash",
457
- "image",
458
- "retries",
459
- "state",
460
- "hash"
461
- ],
462
- "additionalProperties": false
463
- },
464
- "maxItems": 64
465
- },
466
- "limitations": {
467
- "type": "array",
468
- "items": {
469
- "type": "string",
470
- "maxLength": 500
471
- },
472
- "maxItems": 16
473
- },
474
- "excluded": {
475
- "type": "array",
476
- "items": {
477
- "type": "object",
478
- "properties": {
479
- "path": {
480
- "type": "string",
481
- "maxLength": 500
482
- },
483
- "reason": {
484
- "enum": [
485
- "secret",
486
- "generated_or_private"
487
- ]
488
- }
489
- },
490
- "required": [
491
- "path",
492
- "reason"
493
- ],
494
- "additionalProperties": false
495
- },
496
- "maxItems": 6000
497
- },
498
- "history": {
499
- "type": "array",
500
- "items": {
501
- "type": "object",
502
- "properties": {
503
- "attemptId": {
504
- "type": "string",
505
- "pattern": "^[a-f0-9-]{36}$"
506
- },
507
- "candidateHash": {
508
- "type": "string",
509
- "pattern": "^[a-f0-9]{64}$"
510
- },
511
- "createdAt": {
512
- "type": "string",
513
- "minLength": 1,
514
- "maxLength": 40
515
- }
516
- },
517
- "required": [
518
- "attemptId",
519
- "candidateHash",
520
- "createdAt"
521
- ],
522
- "additionalProperties": false
523
- },
524
- "maxItems": 16
525
- }
526
- },
527
- "required": [
528
- "version",
529
- "taskId",
530
- "contractHash",
531
- "planHash",
532
- "baselineHash",
533
- "candidateHash",
534
- "attemptId",
535
- "status",
536
- "stale",
537
- "preparedAt",
538
- "image",
539
- "adapterVersion",
540
- "baselineHeadSha",
541
- "candidateHeadSha",
542
- "conditions",
543
- "scope",
544
- "receipts",
545
- "limitations",
546
- "excluded",
547
- "history"
548
- ],
549
- "additionalProperties": false
550
- }
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "VibeRaven local independent verification report v1",
4
+ "description": "Generated by the local trusted runner only, never accepted as input. checked means an observation ran; outcome separately records passed/failed. Conditions are the single public evidence mapping. Stored initial Task contract metadata remains backward compatible. Runtime additionally verifies frozen plan, snapshot, artifact and receipt hashes and checks current source freshness.",
5
+ "type": "object",
6
+ "properties": {
7
+ "version": {
8
+ "const": 1
9
+ },
10
+ "taskId": {
11
+ "type": "string",
12
+ "pattern": "^[a-f0-9-]{36}$"
13
+ },
14
+ "contractHash": {
15
+ "type": "string",
16
+ "pattern": "^[a-f0-9]{64}$"
17
+ },
18
+ "planHash": {
19
+ "type": "string",
20
+ "pattern": "^[a-f0-9]{64}$"
21
+ },
22
+ "baselineHash": {
23
+ "type": "string",
24
+ "pattern": "^[a-f0-9]{64}$"
25
+ },
26
+ "candidateHash": {
27
+ "anyOf": [
28
+ {
29
+ "type": "string",
30
+ "pattern": "^[a-f0-9]{64}$"
31
+ },
32
+ {
33
+ "type": "null"
34
+ }
35
+ ]
36
+ },
37
+ "attemptId": {
38
+ "anyOf": [
39
+ {
40
+ "type": "string",
41
+ "pattern": "^[a-f0-9-]{36}$"
42
+ },
43
+ {
44
+ "type": "null"
45
+ }
46
+ ]
47
+ },
48
+ "status": {
49
+ "enum": [
50
+ "checked",
51
+ "failed",
52
+ "not_checked"
53
+ ]
54
+ },
55
+ "stale": {
56
+ "type": "boolean"
57
+ },
58
+ "preparedAt": {
59
+ "type": "string",
60
+ "minLength": 1,
61
+ "maxLength": 40
62
+ },
63
+ "approvedAt": {
64
+ "type": "string",
65
+ "minLength": 1,
66
+ "maxLength": 40
67
+ },
68
+ "image": {
69
+ "type": "string",
70
+ "maxLength": 500
71
+ },
72
+ "adapterVersion": {
73
+ "const": "local-oracle-v1"
74
+ },
75
+ "baselineHeadSha": {
76
+ "anyOf": [
77
+ {
78
+ "type": "string",
79
+ "pattern": "^[a-f0-9]{40,64}$"
80
+ },
81
+ {
82
+ "type": "null"
83
+ }
84
+ ]
85
+ },
86
+ "candidateHeadSha": {
87
+ "anyOf": [
88
+ {
89
+ "type": "string",
90
+ "pattern": "^[a-f0-9]{40,64}$"
91
+ },
92
+ {
93
+ "type": "null"
94
+ }
95
+ ]
96
+ },
97
+ "conditions": {
98
+ "type": "array",
99
+ "items": {
100
+ "type": "object",
101
+ "properties": {
102
+ "conditionId": {
103
+ "type": "string",
104
+ "pattern": "^[a-z][a-z0-9_-]{0,39}$"
105
+ },
106
+ "status": {
107
+ "enum": [
108
+ "checked",
109
+ "not_checked"
110
+ ]
111
+ },
112
+ "outcome": {
113
+ "enum": [
114
+ "passed",
115
+ "failed"
116
+ ]
117
+ },
118
+ "reason": {
119
+ "type": "string",
120
+ "maxLength": 500
121
+ },
122
+ "checkIds": {
123
+ "type": "array",
124
+ "items": {
125
+ "type": "string",
126
+ "pattern": "^[a-z][a-z0-9_-]{0,39}$"
127
+ },
128
+ "maxItems": 32
129
+ },
130
+ "receiptIds": {
131
+ "type": "array",
132
+ "items": {
133
+ "type": "string",
134
+ "pattern": "^[a-f0-9-]{36}$"
135
+ },
136
+ "maxItems": 64
137
+ },
138
+ "provenance": {
139
+ "type": "object",
140
+ "properties": {
141
+ "kind": {
142
+ "const": "independent_local_verification"
143
+ },
144
+ "planHash": {
145
+ "type": "string",
146
+ "pattern": "^[a-f0-9]{64}$"
147
+ },
148
+ "baselineHash": {
149
+ "type": "string",
150
+ "pattern": "^[a-f0-9]{64}$"
151
+ },
152
+ "candidateHash": {
153
+ "type": "string",
154
+ "pattern": "^(?:[a-f0-9]{64})?$"
155
+ },
156
+ "attemptId": {
157
+ "type": "string",
158
+ "pattern": "^(?:[a-f0-9-]{36})?$"
159
+ },
160
+ "adapterVersion": {
161
+ "const": "local-oracle-v1"
162
+ }
163
+ },
164
+ "required": [
165
+ "kind",
166
+ "planHash",
167
+ "baselineHash",
168
+ "candidateHash",
169
+ "attemptId",
170
+ "adapterVersion"
171
+ ],
172
+ "additionalProperties": false
173
+ }
174
+ },
175
+ "required": [
176
+ "conditionId",
177
+ "status",
178
+ "reason",
179
+ "checkIds",
180
+ "receiptIds",
181
+ "provenance"
182
+ ],
183
+ "additionalProperties": false,
184
+ "oneOf": [
185
+ {
186
+ "properties": {
187
+ "status": {
188
+ "const": "checked"
189
+ },
190
+ "checkIds": {
191
+ "minItems": 1
192
+ },
193
+ "receiptIds": {
194
+ "minItems": 2
195
+ }
196
+ },
197
+ "required": [
198
+ "outcome"
199
+ ]
200
+ },
201
+ {
202
+ "properties": {
203
+ "status": {
204
+ "const": "not_checked"
205
+ }
206
+ },
207
+ "not": {
208
+ "required": [
209
+ "outcome"
210
+ ]
211
+ }
212
+ }
213
+ ]
214
+ },
215
+ "maxItems": 32
216
+ },
217
+ "scope": {
218
+ "type": "object",
219
+ "properties": {
220
+ "status": {
221
+ "enum": [
222
+ "checked",
223
+ "failed",
224
+ "not_checked"
225
+ ]
226
+ },
227
+ "changedPaths": {
228
+ "type": "array",
229
+ "items": {
230
+ "type": "string",
231
+ "maxLength": 500
232
+ },
233
+ "maxItems": 6000
234
+ },
235
+ "outsidePaths": {
236
+ "type": "array",
237
+ "items": {
238
+ "type": "string",
239
+ "maxLength": 500
240
+ },
241
+ "maxItems": 6000
242
+ },
243
+ "protectedChanges": {
244
+ "type": "array",
245
+ "items": {
246
+ "type": "string",
247
+ "maxLength": 500
248
+ },
249
+ "maxItems": 6000
250
+ }
251
+ },
252
+ "required": [
253
+ "status",
254
+ "changedPaths",
255
+ "outsidePaths",
256
+ "protectedChanges"
257
+ ],
258
+ "additionalProperties": false
259
+ },
260
+ "receipts": {
261
+ "type": "array",
262
+ "items": {
263
+ "type": "object",
264
+ "properties": {
265
+ "id": {
266
+ "type": "string",
267
+ "pattern": "^[a-f0-9-]{36}$"
268
+ },
269
+ "checkId": {
270
+ "type": "string",
271
+ "pattern": "^[a-z][a-z0-9_-]{0,39}$"
272
+ },
273
+ "phase": {
274
+ "enum": [
275
+ "baseline",
276
+ "candidate"
277
+ ]
278
+ },
279
+ "attemptId": {
280
+ "type": "string",
281
+ "pattern": "^[a-f0-9-]{36}$"
282
+ },
283
+ "planHash": {
284
+ "type": "string",
285
+ "pattern": "^[a-f0-9]{64}$"
286
+ },
287
+ "snapshotHash": {
288
+ "type": "string",
289
+ "pattern": "^[a-f0-9]{64}$"
290
+ },
291
+ "image": {
292
+ "type": "string",
293
+ "maxLength": 500
294
+ },
295
+ "retries": {
296
+ "type": "integer",
297
+ "minimum": 1,
298
+ "maximum": 2
299
+ },
300
+ "state": {
301
+ "enum": [
302
+ "running",
303
+ "completed"
304
+ ]
305
+ },
306
+ "observation": {
307
+ "type": "object",
308
+ "properties": {
309
+ "outcome": {
310
+ "enum": [
311
+ "pass",
312
+ "fail",
313
+ "not_checked"
314
+ ]
315
+ },
316
+ "reason": {
317
+ "type": "string",
318
+ "maxLength": 500
319
+ },
320
+ "startedAt": {
321
+ "type": "string",
322
+ "minLength": 1,
323
+ "maxLength": 40
324
+ },
325
+ "durationMs": {
326
+ "type": "integer",
327
+ "minimum": 0
328
+ },
329
+ "image": {
330
+ "type": "string",
331
+ "maxLength": 500
332
+ },
333
+ "adapterVersion": {
334
+ "enum": [
335
+ "local-oracle-v1",
336
+ "local-http-v1"
337
+ ]
338
+ },
339
+ "artifacts": {
340
+ "type": "object",
341
+ "properties": {
342
+ "stdoutSha256": {
343
+ "type": "string",
344
+ "pattern": "^[a-f0-9]{64}$"
345
+ },
346
+ "stderrSha256": {
347
+ "type": "string",
348
+ "pattern": "^[a-f0-9]{64}$"
349
+ },
350
+ "capturedBytes": {
351
+ "type": "integer",
352
+ "minimum": 0
353
+ },
354
+ "truncated": {
355
+ "type": "boolean"
356
+ },
357
+ "stdoutRef": {
358
+ "type": "string",
359
+ "maxLength": 500
360
+ },
361
+ "stderrRef": {
362
+ "type": "string",
363
+ "maxLength": 500
364
+ }
365
+ },
366
+ "required": [
367
+ "stdoutSha256",
368
+ "stderrSha256",
369
+ "capturedBytes",
370
+ "truncated"
371
+ ],
372
+ "additionalProperties": false
373
+ },
374
+ "cases": {
375
+ "type": "object",
376
+ "properties": {
377
+ "passed": {
378
+ "type": "integer",
379
+ "minimum": 0
380
+ },
381
+ "total": {
382
+ "type": "integer",
383
+ "minimum": 0
384
+ },
385
+ "mismatched": {
386
+ "type": "array",
387
+ "items": {
388
+ "type": "integer",
389
+ "minimum": 0
390
+ },
391
+ "maxItems": 32
392
+ }
393
+ },
394
+ "required": [
395
+ "passed",
396
+ "total",
397
+ "mismatched"
398
+ ],
399
+ "additionalProperties": false
400
+ },
401
+ "tests": {
402
+ "type": "object",
403
+ "properties": {
404
+ "passed": {
405
+ "type": "integer",
406
+ "minimum": 0
407
+ },
408
+ "failed": {
409
+ "type": "integer",
410
+ "minimum": 0
411
+ },
412
+ "skipped": {
413
+ "type": "integer",
414
+ "minimum": 0
415
+ },
416
+ "total": {
417
+ "type": "integer",
418
+ "minimum": 0
419
+ },
420
+ "fileFailures": {
421
+ "type": "integer",
422
+ "minimum": 0
423
+ }
424
+ },
425
+ "required": [
426
+ "passed",
427
+ "failed",
428
+ "skipped",
429
+ "total"
430
+ ],
431
+ "additionalProperties": false
432
+ }
433
+ },
434
+ "required": [
435
+ "outcome",
436
+ "reason",
437
+ "startedAt",
438
+ "durationMs",
439
+ "image",
440
+ "adapterVersion",
441
+ "artifacts"
442
+ ],
443
+ "additionalProperties": false
444
+ },
445
+ "hash": {
446
+ "type": "string",
447
+ "pattern": "^[a-f0-9]{64}$"
448
+ }
449
+ },
450
+ "required": [
451
+ "id",
452
+ "checkId",
453
+ "phase",
454
+ "attemptId",
455
+ "planHash",
456
+ "snapshotHash",
457
+ "image",
458
+ "retries",
459
+ "state",
460
+ "hash"
461
+ ],
462
+ "additionalProperties": false
463
+ },
464
+ "maxItems": 64
465
+ },
466
+ "limitations": {
467
+ "type": "array",
468
+ "items": {
469
+ "type": "string",
470
+ "maxLength": 500
471
+ },
472
+ "maxItems": 16
473
+ },
474
+ "excluded": {
475
+ "type": "array",
476
+ "items": {
477
+ "type": "object",
478
+ "properties": {
479
+ "path": {
480
+ "type": "string",
481
+ "maxLength": 500
482
+ },
483
+ "reason": {
484
+ "enum": [
485
+ "secret",
486
+ "generated_or_private"
487
+ ]
488
+ }
489
+ },
490
+ "required": [
491
+ "path",
492
+ "reason"
493
+ ],
494
+ "additionalProperties": false
495
+ },
496
+ "maxItems": 6000
497
+ },
498
+ "history": {
499
+ "type": "array",
500
+ "items": {
501
+ "type": "object",
502
+ "properties": {
503
+ "attemptId": {
504
+ "type": "string",
505
+ "pattern": "^[a-f0-9-]{36}$"
506
+ },
507
+ "candidateHash": {
508
+ "type": "string",
509
+ "pattern": "^[a-f0-9]{64}$"
510
+ },
511
+ "createdAt": {
512
+ "type": "string",
513
+ "minLength": 1,
514
+ "maxLength": 40
515
+ }
516
+ },
517
+ "required": [
518
+ "attemptId",
519
+ "candidateHash",
520
+ "createdAt"
521
+ ],
522
+ "additionalProperties": false
523
+ },
524
+ "maxItems": 16
525
+ }
526
+ },
527
+ "required": [
528
+ "version",
529
+ "taskId",
530
+ "contractHash",
531
+ "planHash",
532
+ "baselineHash",
533
+ "candidateHash",
534
+ "attemptId",
535
+ "status",
536
+ "stale",
537
+ "preparedAt",
538
+ "image",
539
+ "adapterVersion",
540
+ "baselineHeadSha",
541
+ "candidateHeadSha",
542
+ "conditions",
543
+ "scope",
544
+ "receipts",
545
+ "limitations",
546
+ "excluded",
547
+ "history"
548
+ ],
549
+ "additionalProperties": false
550
+ }