@crvouga/atlas 1.7.0 → 1.9.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 (46) hide show
  1. package/CHANGELOG.md +13 -1
  2. package/dist/reports/src/evidence-detail.js +6 -1
  3. package/dist/reports/src/evidence-types.d.ts +2 -0
  4. package/dist/reports/src/explorer-types.d.ts +19 -0
  5. package/dist/reports/src/latency.d.ts +204 -0
  6. package/dist/reports/src/latency.js +219 -0
  7. package/dist/reports/src/reliability.d.ts +181 -0
  8. package/dist/reports/src/reliability.js +294 -0
  9. package/dist/reports/src/report-index.js +1 -1
  10. package/dist/reports/src/reports-explorer-route.d.ts +19 -6
  11. package/dist/reports/src/reports-route.d.ts +19 -6
  12. package/dist/reports/src/test-catalog.d.ts +11 -3
  13. package/dist/reports/src/test-catalog.js +12 -5
  14. package/dist/schema/src/api.d.ts +377 -0
  15. package/dist/schema/src/api.js +55 -3
  16. package/dist/schema/src/layer.d.ts +90 -0
  17. package/dist/schema/src/layer.js +20 -1
  18. package/dist/server/src/app.js +15 -0
  19. package/dist/server/src/llms.js +1 -0
  20. package/dist/server/src/openapi.js +25 -2
  21. package/docs/extending.md +1 -1
  22. package/docs/reference/http-api.md +48 -0
  23. package/docs/reference/reports.md +619 -1
  24. package/docs/reference/schema.md +39 -0
  25. package/docs/rich-evidence.md +43 -0
  26. package/docs/server.md +18 -0
  27. package/docs/ui.md +20 -1
  28. package/llms-full.txt +130 -2
  29. package/package.json +1 -1
  30. package/packages/schema/schemas/check-detail.schema.json +56 -1
  31. package/packages/schema/schemas/effective-delta.schema.json +86 -2
  32. package/packages/schema/schemas/effective-evidence.schema.json +86 -2
  33. package/packages/schema/schemas/evidence-page.schema.json +13 -0
  34. package/packages/schema/schemas/layer-rows.schema.json +73 -2
  35. package/packages/schema/schemas/layer.schema.json +112 -2
  36. package/packages/schema/schemas/publish-checks.schema.json +56 -1
  37. package/packages/schema/schemas/test-catalog.schema.json +102 -0
  38. package/packages/schema/schemas/test-history.schema.json +204 -0
  39. package/packages/schema/schemas/test-reliability.schema.json +629 -0
  40. package/packages/server/openapi.json +2354 -661
  41. package/packages/visualizer/src/evidence/check-detail.tsx +9 -0
  42. package/packages/visualizer/src/explorer/ProductLatency.tsx +214 -0
  43. package/packages/visualizer/src/explorer/Reliability.tsx +337 -0
  44. package/packages/visualizer/src/explorer/TestDetail.tsx +12 -2
  45. package/packages/visualizer/src/explorer/catalog.tsx +1 -1
  46. package/packages/visualizer/src/explorer/search.ts +36 -0
@@ -0,0 +1,629 @@
1
+ {
2
+ "$id": "https://github.com/crvouga/atlas/schemas/test-reliability.schema.json",
3
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
4
+ "type": "object",
5
+ "properties": {
6
+ "schemaVersion": {
7
+ "type": "number",
8
+ "const": 1
9
+ },
10
+ "key": {
11
+ "type": "string",
12
+ "description": "The test's key"
13
+ },
14
+ "scope": {
15
+ "type": "object",
16
+ "properties": {
17
+ "environment": {
18
+ "type": "array",
19
+ "items": {
20
+ "type": "string"
21
+ }
22
+ },
23
+ "producer": {
24
+ "type": "array",
25
+ "items": {
26
+ "type": "string"
27
+ }
28
+ },
29
+ "parameter": {
30
+ "type": "array",
31
+ "items": {
32
+ "type": "string"
33
+ }
34
+ },
35
+ "branch": {
36
+ "type": "array",
37
+ "items": {
38
+ "type": "string"
39
+ }
40
+ },
41
+ "sha": {
42
+ "type": "array",
43
+ "items": {
44
+ "type": "string"
45
+ }
46
+ },
47
+ "specRevision": {
48
+ "type": "array",
49
+ "items": {
50
+ "type": "string"
51
+ }
52
+ },
53
+ "revision": {
54
+ "type": "string",
55
+ "enum": [
56
+ "current",
57
+ "any"
58
+ ]
59
+ },
60
+ "since": {
61
+ "type": "number"
62
+ },
63
+ "until": {
64
+ "type": "number"
65
+ }
66
+ },
67
+ "additionalProperties": {},
68
+ "description": "What was asked: the selection the figures are about"
69
+ },
70
+ "minimumExecutions": {
71
+ "type": "integer",
72
+ "exclusiveMinimum": 0,
73
+ "maximum": 9007199254740991,
74
+ "description": "Completed executions below which the sample is `insufficient`"
75
+ },
76
+ "sample": {
77
+ "type": "string",
78
+ "enum": [
79
+ "none",
80
+ "insufficient",
81
+ "sufficient"
82
+ ],
83
+ "description": "A count only: it says nothing about whether the executions are representative; read `notes`"
84
+ },
85
+ "eventual": {
86
+ "type": "object",
87
+ "properties": {
88
+ "executions": {
89
+ "type": "integer",
90
+ "minimum": 0,
91
+ "maximum": 9007199254740991,
92
+ "description": "Independent executions that passed or failed"
93
+ },
94
+ "passed": {
95
+ "type": "integer",
96
+ "minimum": 0,
97
+ "maximum": 9007199254740991
98
+ },
99
+ "failed": {
100
+ "type": "integer",
101
+ "minimum": 0,
102
+ "maximum": 9007199254740991
103
+ },
104
+ "rate": {
105
+ "description": "passed / executions, or null with none",
106
+ "type": [
107
+ "number",
108
+ "null"
109
+ ]
110
+ }
111
+ },
112
+ "required": [
113
+ "executions",
114
+ "passed",
115
+ "failed",
116
+ "rate"
117
+ ],
118
+ "additionalProperties": {},
119
+ "description": "Executions that passed in the end, over those that passed or failed"
120
+ },
121
+ "interval": {
122
+ "anyOf": [
123
+ {
124
+ "type": "object",
125
+ "properties": {
126
+ "method": {
127
+ "type": "string",
128
+ "const": "wilson"
129
+ },
130
+ "level": {
131
+ "type": "number"
132
+ },
133
+ "lower": {
134
+ "type": "number"
135
+ },
136
+ "upper": {
137
+ "type": "number"
138
+ },
139
+ "assumptions": {
140
+ "type": "string"
141
+ }
142
+ },
143
+ "required": [
144
+ "method",
145
+ "level",
146
+ "lower",
147
+ "upper",
148
+ "assumptions"
149
+ ],
150
+ "additionalProperties": {}
151
+ },
152
+ {
153
+ "type": "null"
154
+ }
155
+ ],
156
+ "description": "An interval estimate with the assumptions it needs; null without an execution"
157
+ },
158
+ "firstAttempt": {
159
+ "type": "object",
160
+ "properties": {
161
+ "executions": {
162
+ "type": "integer",
163
+ "minimum": 0,
164
+ "maximum": 9007199254740991,
165
+ "description": "Independent executions that passed or failed"
166
+ },
167
+ "passed": {
168
+ "type": "integer",
169
+ "minimum": 0,
170
+ "maximum": 9007199254740991
171
+ },
172
+ "failed": {
173
+ "type": "integer",
174
+ "minimum": 0,
175
+ "maximum": 9007199254740991
176
+ },
177
+ "rate": {
178
+ "description": "passed / executions, or null with none",
179
+ "type": [
180
+ "number",
181
+ "null"
182
+ ]
183
+ }
184
+ },
185
+ "required": [
186
+ "executions",
187
+ "passed",
188
+ "failed",
189
+ "rate"
190
+ ],
191
+ "additionalProperties": {},
192
+ "description": "Over the executions that recorded their tries: those whose first try passed"
193
+ },
194
+ "unrecordedAttempts": {
195
+ "type": "integer",
196
+ "minimum": 0,
197
+ "maximum": 9007199254740991,
198
+ "description": "Counted executions that recorded no tries: their first try is unknown, never assumed to have passed"
199
+ },
200
+ "attempts": {
201
+ "type": "object",
202
+ "properties": {
203
+ "total": {
204
+ "type": "integer",
205
+ "minimum": 0,
206
+ "maximum": 9007199254740991
207
+ },
208
+ "retried": {
209
+ "type": "integer",
210
+ "minimum": 0,
211
+ "maximum": 9007199254740991
212
+ },
213
+ "recovered": {
214
+ "type": "integer",
215
+ "minimum": 0,
216
+ "maximum": 9007199254740991
217
+ }
218
+ },
219
+ "required": [
220
+ "total",
221
+ "retried",
222
+ "recovered"
223
+ ],
224
+ "additionalProperties": {}
225
+ },
226
+ "currentRevision": {
227
+ "description": "The spec revision `revision=current` counted, or null",
228
+ "type": [
229
+ "string",
230
+ "null"
231
+ ]
232
+ },
233
+ "historical": {
234
+ "type": "object",
235
+ "properties": {
236
+ "executions": {
237
+ "type": "integer",
238
+ "minimum": 0,
239
+ "maximum": 9007199254740991
240
+ },
241
+ "passed": {
242
+ "type": "integer",
243
+ "minimum": 0,
244
+ "maximum": 9007199254740991
245
+ },
246
+ "failed": {
247
+ "type": "integer",
248
+ "minimum": 0,
249
+ "maximum": 9007199254740991
250
+ },
251
+ "revisions": {
252
+ "type": "array",
253
+ "items": {
254
+ "type": "object",
255
+ "properties": {
256
+ "specRevision": {
257
+ "type": "string"
258
+ },
259
+ "executions": {
260
+ "type": "integer",
261
+ "minimum": 0,
262
+ "maximum": 9007199254740991
263
+ }
264
+ },
265
+ "required": [
266
+ "specRevision",
267
+ "executions"
268
+ ],
269
+ "additionalProperties": {}
270
+ }
271
+ }
272
+ },
273
+ "required": [
274
+ "executions",
275
+ "passed",
276
+ "failed",
277
+ "revisions"
278
+ ],
279
+ "additionalProperties": {},
280
+ "description": "Earlier spec revisions: context only, counted nowhere above"
281
+ },
282
+ "excluded": {
283
+ "type": "object",
284
+ "propertyNames": {
285
+ "type": "string"
286
+ },
287
+ "additionalProperties": {
288
+ "type": "integer",
289
+ "minimum": 0,
290
+ "maximum": 9007199254740991
291
+ },
292
+ "description": "Executions in the scope that are not trials, by reason: `not-run`, `unfinished`, `unknown-status`, `historical-revision`, `revision-not-recorded`"
293
+ },
294
+ "outsideScope": {
295
+ "type": "integer",
296
+ "minimum": 0,
297
+ "maximum": 9007199254740991,
298
+ "description": "Executions the scope did not select"
299
+ },
300
+ "snapshots": {
301
+ "type": "integer",
302
+ "minimum": 0,
303
+ "maximum": 9007199254740991,
304
+ "description": "Raw recorded snapshots behind the counted executions"
305
+ },
306
+ "cohorts": {
307
+ "type": "array",
308
+ "items": {
309
+ "type": "object",
310
+ "properties": {
311
+ "executions": {
312
+ "type": "integer",
313
+ "minimum": 0,
314
+ "maximum": 9007199254740991,
315
+ "description": "Independent executions that passed or failed"
316
+ },
317
+ "passed": {
318
+ "type": "integer",
319
+ "minimum": 0,
320
+ "maximum": 9007199254740991
321
+ },
322
+ "failed": {
323
+ "type": "integer",
324
+ "minimum": 0,
325
+ "maximum": 9007199254740991
326
+ },
327
+ "rate": {
328
+ "description": "passed / executions, or null with none",
329
+ "type": [
330
+ "number",
331
+ "null"
332
+ ]
333
+ },
334
+ "environment": {
335
+ "type": [
336
+ "string",
337
+ "null"
338
+ ]
339
+ },
340
+ "producer": {
341
+ "type": "string"
342
+ },
343
+ "parameters": {
344
+ "type": "object",
345
+ "propertyNames": {
346
+ "type": "string"
347
+ },
348
+ "additionalProperties": {
349
+ "type": "string"
350
+ }
351
+ }
352
+ },
353
+ "required": [
354
+ "executions",
355
+ "passed",
356
+ "failed",
357
+ "rate",
358
+ "environment",
359
+ "producer",
360
+ "parameters"
361
+ ],
362
+ "additionalProperties": {}
363
+ }
364
+ },
365
+ "available": {
366
+ "type": "object",
367
+ "properties": {
368
+ "environments": {
369
+ "type": "array",
370
+ "items": {
371
+ "type": "object",
372
+ "properties": {
373
+ "value": {
374
+ "type": "string"
375
+ },
376
+ "count": {
377
+ "type": "integer",
378
+ "minimum": 0,
379
+ "maximum": 9007199254740991
380
+ }
381
+ },
382
+ "required": [
383
+ "value",
384
+ "count"
385
+ ],
386
+ "additionalProperties": {}
387
+ }
388
+ },
389
+ "producers": {
390
+ "type": "array",
391
+ "items": {
392
+ "type": "object",
393
+ "properties": {
394
+ "value": {
395
+ "type": "string"
396
+ },
397
+ "count": {
398
+ "type": "integer",
399
+ "minimum": 0,
400
+ "maximum": 9007199254740991
401
+ }
402
+ },
403
+ "required": [
404
+ "value",
405
+ "count"
406
+ ],
407
+ "additionalProperties": {}
408
+ }
409
+ },
410
+ "branches": {
411
+ "type": "array",
412
+ "items": {
413
+ "type": "object",
414
+ "properties": {
415
+ "value": {
416
+ "type": "string"
417
+ },
418
+ "count": {
419
+ "type": "integer",
420
+ "minimum": 0,
421
+ "maximum": 9007199254740991
422
+ }
423
+ },
424
+ "required": [
425
+ "value",
426
+ "count"
427
+ ],
428
+ "additionalProperties": {}
429
+ }
430
+ },
431
+ "specRevisions": {
432
+ "type": "array",
433
+ "items": {
434
+ "type": "object",
435
+ "properties": {
436
+ "value": {
437
+ "type": "string"
438
+ },
439
+ "count": {
440
+ "type": "integer",
441
+ "minimum": 0,
442
+ "maximum": 9007199254740991
443
+ }
444
+ },
445
+ "required": [
446
+ "value",
447
+ "count"
448
+ ],
449
+ "additionalProperties": {}
450
+ }
451
+ }
452
+ },
453
+ "required": [
454
+ "environments",
455
+ "producers",
456
+ "branches",
457
+ "specRevisions"
458
+ ],
459
+ "additionalProperties": {},
460
+ "description": "What a scope could choose among, with independent executions"
461
+ },
462
+ "notes": {
463
+ "type": "array",
464
+ "items": {
465
+ "type": "object",
466
+ "properties": {
467
+ "code": {
468
+ "type": "string",
469
+ "description": "An open set: treat a code you do not know as informational"
470
+ },
471
+ "severity": {
472
+ "type": "string",
473
+ "enum": [
474
+ "warning",
475
+ "info"
476
+ ]
477
+ },
478
+ "message": {
479
+ "type": "string"
480
+ }
481
+ },
482
+ "required": [
483
+ "code",
484
+ "severity",
485
+ "message"
486
+ ],
487
+ "additionalProperties": {}
488
+ }
489
+ },
490
+ "executions": {
491
+ "type": "array",
492
+ "items": {
493
+ "type": "object",
494
+ "properties": {
495
+ "run": {
496
+ "type": "string"
497
+ },
498
+ "at": {
499
+ "type": "number"
500
+ },
501
+ "status": {
502
+ "type": "string"
503
+ },
504
+ "counted": {
505
+ "type": "boolean"
506
+ },
507
+ "excluded": {
508
+ "type": "string"
509
+ },
510
+ "environment": {
511
+ "type": [
512
+ "string",
513
+ "null"
514
+ ]
515
+ },
516
+ "producer": {
517
+ "type": "string"
518
+ },
519
+ "kind": {
520
+ "type": "string"
521
+ },
522
+ "parameters": {
523
+ "type": "object",
524
+ "propertyNames": {
525
+ "type": "string"
526
+ },
527
+ "additionalProperties": {
528
+ "type": "string"
529
+ }
530
+ },
531
+ "branch": {
532
+ "type": [
533
+ "string",
534
+ "null"
535
+ ]
536
+ },
537
+ "sha": {
538
+ "type": [
539
+ "string",
540
+ "null"
541
+ ]
542
+ },
543
+ "runUrl": {
544
+ "type": [
545
+ "string",
546
+ "null"
547
+ ]
548
+ },
549
+ "layer": {
550
+ "type": "string"
551
+ },
552
+ "backend": {
553
+ "type": "string"
554
+ },
555
+ "durationMs": {
556
+ "type": [
557
+ "number",
558
+ "null"
559
+ ]
560
+ },
561
+ "specRevision": {
562
+ "type": "string"
563
+ },
564
+ "snapshots": {
565
+ "type": "integer",
566
+ "exclusiveMinimum": 0,
567
+ "maximum": 9007199254740991
568
+ },
569
+ "attempts": {
570
+ "description": "The status of each recorded try, in order",
571
+ "type": "array",
572
+ "items": {
573
+ "type": "string"
574
+ }
575
+ },
576
+ "firstAttempt": {
577
+ "type": "string"
578
+ },
579
+ "republished": {
580
+ "type": "boolean",
581
+ "description": "A failed snapshot of this execution was followed by a later one"
582
+ }
583
+ },
584
+ "required": [
585
+ "run",
586
+ "at",
587
+ "status",
588
+ "counted",
589
+ "environment",
590
+ "producer",
591
+ "kind",
592
+ "parameters",
593
+ "branch",
594
+ "sha",
595
+ "runUrl",
596
+ "layer",
597
+ "backend",
598
+ "durationMs",
599
+ "snapshots",
600
+ "republished"
601
+ ],
602
+ "additionalProperties": {}
603
+ },
604
+ "description": "Every independent execution of the selection, newest first: the denominator, open to inspection"
605
+ }
606
+ },
607
+ "required": [
608
+ "schemaVersion",
609
+ "key",
610
+ "scope",
611
+ "minimumExecutions",
612
+ "sample",
613
+ "eventual",
614
+ "interval",
615
+ "firstAttempt",
616
+ "unrecordedAttempts",
617
+ "attempts",
618
+ "currentRevision",
619
+ "historical",
620
+ "excluded",
621
+ "outsideScope",
622
+ "snapshots",
623
+ "cohorts",
624
+ "available",
625
+ "notes",
626
+ "executions"
627
+ ],
628
+ "additionalProperties": {}
629
+ }