@crvouga/atlas 1.2.0 → 1.3.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.
- package/CHANGELOG.md +6 -0
- package/dist/reports/src/evidence-detail.d.ts +14 -3
- package/dist/reports/src/evidence-detail.js +33 -19
- package/dist/reports/src/evidence-scope.d.ts +83 -0
- package/dist/reports/src/evidence-scope.js +129 -0
- package/dist/reports/src/evidence-types.d.ts +3 -1
- package/dist/reports/src/explorer-types.d.ts +1 -1
- package/dist/reports/src/layer-merge.js +3 -2
- package/dist/reports/src/layer-types.d.ts +1 -1
- package/dist/reports/src/publish-checks.js +1 -0
- package/dist/reports/src/reporter.d.ts +1 -1
- package/dist/reports/src/reports-explorer-route.d.ts +276 -0
- package/dist/reports/src/reports-route.d.ts +276 -0
- package/dist/reports/src/test-catalog.d.ts +7 -1
- package/dist/reports/src/test-catalog.js +15 -3
- package/dist/schema/src/api.d.ts +520 -0
- package/dist/schema/src/api.js +7 -4
- package/dist/schema/src/layer.d.ts +981 -0
- package/dist/schema/src/layer.js +43 -4
- package/dist/server/src/openapi.js +1 -0
- package/docs/extending.md +1 -0
- package/docs/reference/http-api.md +2 -0
- package/docs/reference/reports.md +179 -7
- package/docs/reference/schema.md +23 -0
- package/docs/rich-evidence.md +47 -0
- package/llms-full.txt +50 -0
- package/package.json +1 -1
- package/packages/schema/schemas/check-detail.schema.json +673 -1
- package/packages/schema/schemas/effective-delta.schema.json +192 -0
- package/packages/schema/schemas/effective-evidence.schema.json +192 -0
- package/packages/schema/schemas/evidence-page.schema.json +96 -0
- package/packages/schema/schemas/layer-rows.schema.json +96 -0
- package/packages/schema/schemas/layer.schema.json +1598 -62
- package/packages/schema/schemas/publish-checks.schema.json +768 -0
- package/packages/schema/schemas/report-run.schema.json +96 -0
- package/packages/schema/schemas/test-catalog.schema.json +128 -0
- package/packages/schema/schemas/test-history.schema.json +202 -0
- package/packages/server/openapi.json +2581 -23
- package/packages/visualizer/src/evidence/artifacts.tsx +24 -18
- package/packages/visualizer/src/evidence/evidence-scope.tsx +106 -0
- package/packages/visualizer/src/evidence/format.ts +11 -0
- package/packages/visualizer/src/explorer/Explorer.tsx +19 -0
- package/packages/visualizer/src/explorer/search.ts +5 -1
|
@@ -177,6 +177,102 @@
|
|
|
177
177
|
"description": "Why the producer did not include its bytes, in an open vocabulary: too-large, not-found, not-allowed, over-budget, policy… Present on a metadata-only attachment, so a reader can tell \"left out\" from \"never recorded\"",
|
|
178
178
|
"type": "string"
|
|
179
179
|
},
|
|
180
|
+
"scope": {
|
|
181
|
+
"description": "What this one attachment (usually a recording) does and does not show. Overrides the scope of its attempt, check, part and layer as a whole",
|
|
182
|
+
"type": "object",
|
|
183
|
+
"properties": {
|
|
184
|
+
"surface": {
|
|
185
|
+
"description": "Where the product ran, in an open vocabulary: `browser`, `native-app`, `api`, `cli`…",
|
|
186
|
+
"type": "string",
|
|
187
|
+
"minLength": 1
|
|
188
|
+
},
|
|
189
|
+
"deviceKind": {
|
|
190
|
+
"description": "What it ran on, in an open vocabulary: `simulator`, `emulator`, `physical`, `virtual-machine`, `desktop`… A simulator and a physical phone stay distinct values; they are filtered separately",
|
|
191
|
+
"type": "string",
|
|
192
|
+
"minLength": 1
|
|
193
|
+
},
|
|
194
|
+
"syntheticData": {
|
|
195
|
+
"description": "True: the data was made up for the run. False: real data. Absent: unknown",
|
|
196
|
+
"type": "boolean"
|
|
197
|
+
},
|
|
198
|
+
"dependencies": {
|
|
199
|
+
"description": "Whether what the product talks to was `scripted` (replies fixed in advance), `live` or `mixed`. An open vocabulary; absent is unknown",
|
|
200
|
+
"type": "string",
|
|
201
|
+
"minLength": 1
|
|
202
|
+
},
|
|
203
|
+
"audioCaptured": {
|
|
204
|
+
"description": "True: the recording has real audio. False: it is silent. Absent: unknown",
|
|
205
|
+
"type": "boolean"
|
|
206
|
+
},
|
|
207
|
+
"pacing": {
|
|
208
|
+
"description": "How time ran, in an open vocabulary: `paced` (slowed or scripted for a viewer), `real-time`. Absent: unknown",
|
|
209
|
+
"type": "string",
|
|
210
|
+
"minLength": 1
|
|
211
|
+
},
|
|
212
|
+
"asserted": {
|
|
213
|
+
"description": "The boundaries the result actually asserts. Activity visible in a recording beyond them is not verified behavior",
|
|
214
|
+
"type": "array",
|
|
215
|
+
"items": {
|
|
216
|
+
"type": "string"
|
|
217
|
+
}
|
|
218
|
+
},
|
|
219
|
+
"limitations": {
|
|
220
|
+
"description": "Known limits of what this evidence shows, in the producer's words",
|
|
221
|
+
"type": "array",
|
|
222
|
+
"items": {
|
|
223
|
+
"type": "string"
|
|
224
|
+
}
|
|
225
|
+
},
|
|
226
|
+
"declaredBy": {
|
|
227
|
+
"description": "Who or what made this declaration: a tool, a team, a person",
|
|
228
|
+
"type": "string"
|
|
229
|
+
},
|
|
230
|
+
"verified": {
|
|
231
|
+
"description": "The names of the fields above (`surface`, `deviceKind`, `syntheticData`, `dependencies`, `audioCaptured`, `pacing`) that something independent of the producer checked. Every other field is only declared",
|
|
232
|
+
"type": "array",
|
|
233
|
+
"items": {
|
|
234
|
+
"type": "string"
|
|
235
|
+
}
|
|
236
|
+
},
|
|
237
|
+
"verifiedBy": {
|
|
238
|
+
"description": "What checked the `verified` fields",
|
|
239
|
+
"type": "string"
|
|
240
|
+
},
|
|
241
|
+
"provenance": {
|
|
242
|
+
"description": "Where the declaration comes from and how to check it: a document, a CI step, a device log",
|
|
243
|
+
"type": "array",
|
|
244
|
+
"items": {
|
|
245
|
+
"type": "object",
|
|
246
|
+
"properties": {
|
|
247
|
+
"url": {
|
|
248
|
+
"type": "string",
|
|
249
|
+
"minLength": 1
|
|
250
|
+
},
|
|
251
|
+
"name": {
|
|
252
|
+
"type": "string"
|
|
253
|
+
},
|
|
254
|
+
"rel": {
|
|
255
|
+
"description": "Why it is linked, in an open vocabulary: issue, run, trace, docs, source…",
|
|
256
|
+
"type": "string"
|
|
257
|
+
}
|
|
258
|
+
},
|
|
259
|
+
"required": [
|
|
260
|
+
"url"
|
|
261
|
+
],
|
|
262
|
+
"additionalProperties": {}
|
|
263
|
+
}
|
|
264
|
+
},
|
|
265
|
+
"extensions": {
|
|
266
|
+
"type": "object",
|
|
267
|
+
"propertyNames": {
|
|
268
|
+
"type": "string",
|
|
269
|
+
"minLength": 1
|
|
270
|
+
},
|
|
271
|
+
"additionalProperties": {}
|
|
272
|
+
}
|
|
273
|
+
},
|
|
274
|
+
"additionalProperties": {}
|
|
275
|
+
},
|
|
180
276
|
"tags": {
|
|
181
277
|
"description": "Free labels of this one attachment, such as `demo`: shown as `#demo`, searchable, and normalized by `normalizeTag` (a leading `#` and letter case never matter). Unlike the tags of a check they say nothing about its result",
|
|
182
278
|
"type": "array",
|
|
@@ -313,6 +409,102 @@
|
|
|
313
409
|
"additionalProperties": {}
|
|
314
410
|
}
|
|
315
411
|
},
|
|
412
|
+
"scope": {
|
|
413
|
+
"description": "What the evidence below this level does and does not show: where it ran, how real its data and dependencies were, whether audio was captured, and what is asserted. Absent: unknown, never assumed live, physical or end to end",
|
|
414
|
+
"type": "object",
|
|
415
|
+
"properties": {
|
|
416
|
+
"surface": {
|
|
417
|
+
"description": "Where the product ran, in an open vocabulary: `browser`, `native-app`, `api`, `cli`…",
|
|
418
|
+
"type": "string",
|
|
419
|
+
"minLength": 1
|
|
420
|
+
},
|
|
421
|
+
"deviceKind": {
|
|
422
|
+
"description": "What it ran on, in an open vocabulary: `simulator`, `emulator`, `physical`, `virtual-machine`, `desktop`… A simulator and a physical phone stay distinct values; they are filtered separately",
|
|
423
|
+
"type": "string",
|
|
424
|
+
"minLength": 1
|
|
425
|
+
},
|
|
426
|
+
"syntheticData": {
|
|
427
|
+
"description": "True: the data was made up for the run. False: real data. Absent: unknown",
|
|
428
|
+
"type": "boolean"
|
|
429
|
+
},
|
|
430
|
+
"dependencies": {
|
|
431
|
+
"description": "Whether what the product talks to was `scripted` (replies fixed in advance), `live` or `mixed`. An open vocabulary; absent is unknown",
|
|
432
|
+
"type": "string",
|
|
433
|
+
"minLength": 1
|
|
434
|
+
},
|
|
435
|
+
"audioCaptured": {
|
|
436
|
+
"description": "True: the recording has real audio. False: it is silent. Absent: unknown",
|
|
437
|
+
"type": "boolean"
|
|
438
|
+
},
|
|
439
|
+
"pacing": {
|
|
440
|
+
"description": "How time ran, in an open vocabulary: `paced` (slowed or scripted for a viewer), `real-time`. Absent: unknown",
|
|
441
|
+
"type": "string",
|
|
442
|
+
"minLength": 1
|
|
443
|
+
},
|
|
444
|
+
"asserted": {
|
|
445
|
+
"description": "The boundaries the result actually asserts. Activity visible in a recording beyond them is not verified behavior",
|
|
446
|
+
"type": "array",
|
|
447
|
+
"items": {
|
|
448
|
+
"type": "string"
|
|
449
|
+
}
|
|
450
|
+
},
|
|
451
|
+
"limitations": {
|
|
452
|
+
"description": "Known limits of what this evidence shows, in the producer's words",
|
|
453
|
+
"type": "array",
|
|
454
|
+
"items": {
|
|
455
|
+
"type": "string"
|
|
456
|
+
}
|
|
457
|
+
},
|
|
458
|
+
"declaredBy": {
|
|
459
|
+
"description": "Who or what made this declaration: a tool, a team, a person",
|
|
460
|
+
"type": "string"
|
|
461
|
+
},
|
|
462
|
+
"verified": {
|
|
463
|
+
"description": "The names of the fields above (`surface`, `deviceKind`, `syntheticData`, `dependencies`, `audioCaptured`, `pacing`) that something independent of the producer checked. Every other field is only declared",
|
|
464
|
+
"type": "array",
|
|
465
|
+
"items": {
|
|
466
|
+
"type": "string"
|
|
467
|
+
}
|
|
468
|
+
},
|
|
469
|
+
"verifiedBy": {
|
|
470
|
+
"description": "What checked the `verified` fields",
|
|
471
|
+
"type": "string"
|
|
472
|
+
},
|
|
473
|
+
"provenance": {
|
|
474
|
+
"description": "Where the declaration comes from and how to check it: a document, a CI step, a device log",
|
|
475
|
+
"type": "array",
|
|
476
|
+
"items": {
|
|
477
|
+
"type": "object",
|
|
478
|
+
"properties": {
|
|
479
|
+
"url": {
|
|
480
|
+
"type": "string",
|
|
481
|
+
"minLength": 1
|
|
482
|
+
},
|
|
483
|
+
"name": {
|
|
484
|
+
"type": "string"
|
|
485
|
+
},
|
|
486
|
+
"rel": {
|
|
487
|
+
"description": "Why it is linked, in an open vocabulary: issue, run, trace, docs, source…",
|
|
488
|
+
"type": "string"
|
|
489
|
+
}
|
|
490
|
+
},
|
|
491
|
+
"required": [
|
|
492
|
+
"url"
|
|
493
|
+
],
|
|
494
|
+
"additionalProperties": {}
|
|
495
|
+
}
|
|
496
|
+
},
|
|
497
|
+
"extensions": {
|
|
498
|
+
"type": "object",
|
|
499
|
+
"propertyNames": {
|
|
500
|
+
"type": "string",
|
|
501
|
+
"minLength": 1
|
|
502
|
+
},
|
|
503
|
+
"additionalProperties": {}
|
|
504
|
+
}
|
|
505
|
+
},
|
|
506
|
+
"additionalProperties": {}
|
|
507
|
+
},
|
|
316
508
|
"extensions": {
|
|
317
509
|
"type": "object",
|
|
318
510
|
"propertyNames": {
|
|
@@ -416,6 +608,102 @@
|
|
|
416
608
|
"description": "Why the producer did not include its bytes, in an open vocabulary: too-large, not-found, not-allowed, over-budget, policy… Present on a metadata-only attachment, so a reader can tell \"left out\" from \"never recorded\"",
|
|
417
609
|
"type": "string"
|
|
418
610
|
},
|
|
611
|
+
"scope": {
|
|
612
|
+
"description": "What this one attachment (usually a recording) does and does not show. Overrides the scope of its attempt, check, part and layer as a whole",
|
|
613
|
+
"type": "object",
|
|
614
|
+
"properties": {
|
|
615
|
+
"surface": {
|
|
616
|
+
"description": "Where the product ran, in an open vocabulary: `browser`, `native-app`, `api`, `cli`…",
|
|
617
|
+
"type": "string",
|
|
618
|
+
"minLength": 1
|
|
619
|
+
},
|
|
620
|
+
"deviceKind": {
|
|
621
|
+
"description": "What it ran on, in an open vocabulary: `simulator`, `emulator`, `physical`, `virtual-machine`, `desktop`… A simulator and a physical phone stay distinct values; they are filtered separately",
|
|
622
|
+
"type": "string",
|
|
623
|
+
"minLength": 1
|
|
624
|
+
},
|
|
625
|
+
"syntheticData": {
|
|
626
|
+
"description": "True: the data was made up for the run. False: real data. Absent: unknown",
|
|
627
|
+
"type": "boolean"
|
|
628
|
+
},
|
|
629
|
+
"dependencies": {
|
|
630
|
+
"description": "Whether what the product talks to was `scripted` (replies fixed in advance), `live` or `mixed`. An open vocabulary; absent is unknown",
|
|
631
|
+
"type": "string",
|
|
632
|
+
"minLength": 1
|
|
633
|
+
},
|
|
634
|
+
"audioCaptured": {
|
|
635
|
+
"description": "True: the recording has real audio. False: it is silent. Absent: unknown",
|
|
636
|
+
"type": "boolean"
|
|
637
|
+
},
|
|
638
|
+
"pacing": {
|
|
639
|
+
"description": "How time ran, in an open vocabulary: `paced` (slowed or scripted for a viewer), `real-time`. Absent: unknown",
|
|
640
|
+
"type": "string",
|
|
641
|
+
"minLength": 1
|
|
642
|
+
},
|
|
643
|
+
"asserted": {
|
|
644
|
+
"description": "The boundaries the result actually asserts. Activity visible in a recording beyond them is not verified behavior",
|
|
645
|
+
"type": "array",
|
|
646
|
+
"items": {
|
|
647
|
+
"type": "string"
|
|
648
|
+
}
|
|
649
|
+
},
|
|
650
|
+
"limitations": {
|
|
651
|
+
"description": "Known limits of what this evidence shows, in the producer's words",
|
|
652
|
+
"type": "array",
|
|
653
|
+
"items": {
|
|
654
|
+
"type": "string"
|
|
655
|
+
}
|
|
656
|
+
},
|
|
657
|
+
"declaredBy": {
|
|
658
|
+
"description": "Who or what made this declaration: a tool, a team, a person",
|
|
659
|
+
"type": "string"
|
|
660
|
+
},
|
|
661
|
+
"verified": {
|
|
662
|
+
"description": "The names of the fields above (`surface`, `deviceKind`, `syntheticData`, `dependencies`, `audioCaptured`, `pacing`) that something independent of the producer checked. Every other field is only declared",
|
|
663
|
+
"type": "array",
|
|
664
|
+
"items": {
|
|
665
|
+
"type": "string"
|
|
666
|
+
}
|
|
667
|
+
},
|
|
668
|
+
"verifiedBy": {
|
|
669
|
+
"description": "What checked the `verified` fields",
|
|
670
|
+
"type": "string"
|
|
671
|
+
},
|
|
672
|
+
"provenance": {
|
|
673
|
+
"description": "Where the declaration comes from and how to check it: a document, a CI step, a device log",
|
|
674
|
+
"type": "array",
|
|
675
|
+
"items": {
|
|
676
|
+
"type": "object",
|
|
677
|
+
"properties": {
|
|
678
|
+
"url": {
|
|
679
|
+
"type": "string",
|
|
680
|
+
"minLength": 1
|
|
681
|
+
},
|
|
682
|
+
"name": {
|
|
683
|
+
"type": "string"
|
|
684
|
+
},
|
|
685
|
+
"rel": {
|
|
686
|
+
"description": "Why it is linked, in an open vocabulary: issue, run, trace, docs, source…",
|
|
687
|
+
"type": "string"
|
|
688
|
+
}
|
|
689
|
+
},
|
|
690
|
+
"required": [
|
|
691
|
+
"url"
|
|
692
|
+
],
|
|
693
|
+
"additionalProperties": {}
|
|
694
|
+
}
|
|
695
|
+
},
|
|
696
|
+
"extensions": {
|
|
697
|
+
"type": "object",
|
|
698
|
+
"propertyNames": {
|
|
699
|
+
"type": "string",
|
|
700
|
+
"minLength": 1
|
|
701
|
+
},
|
|
702
|
+
"additionalProperties": {}
|
|
703
|
+
}
|
|
704
|
+
},
|
|
705
|
+
"additionalProperties": {}
|
|
706
|
+
},
|
|
419
707
|
"tags": {
|
|
420
708
|
"description": "Free labels of this one attachment, such as `demo`: shown as `#demo`, searchable, and normalized by `normalizeTag` (a leading `#` and letter case never matter). Unlike the tags of a check they say nothing about its result",
|
|
421
709
|
"type": "array",
|
|
@@ -598,6 +886,102 @@
|
|
|
598
886
|
"detail": {
|
|
599
887
|
"type": "string"
|
|
600
888
|
},
|
|
889
|
+
"scope": {
|
|
890
|
+
"description": "What this try's evidence shows, when it differs from the other tries (a retry on another device). Overrides the check's scope for this try's attachments",
|
|
891
|
+
"type": "object",
|
|
892
|
+
"properties": {
|
|
893
|
+
"surface": {
|
|
894
|
+
"description": "Where the product ran, in an open vocabulary: `browser`, `native-app`, `api`, `cli`…",
|
|
895
|
+
"type": "string",
|
|
896
|
+
"minLength": 1
|
|
897
|
+
},
|
|
898
|
+
"deviceKind": {
|
|
899
|
+
"description": "What it ran on, in an open vocabulary: `simulator`, `emulator`, `physical`, `virtual-machine`, `desktop`… A simulator and a physical phone stay distinct values; they are filtered separately",
|
|
900
|
+
"type": "string",
|
|
901
|
+
"minLength": 1
|
|
902
|
+
},
|
|
903
|
+
"syntheticData": {
|
|
904
|
+
"description": "True: the data was made up for the run. False: real data. Absent: unknown",
|
|
905
|
+
"type": "boolean"
|
|
906
|
+
},
|
|
907
|
+
"dependencies": {
|
|
908
|
+
"description": "Whether what the product talks to was `scripted` (replies fixed in advance), `live` or `mixed`. An open vocabulary; absent is unknown",
|
|
909
|
+
"type": "string",
|
|
910
|
+
"minLength": 1
|
|
911
|
+
},
|
|
912
|
+
"audioCaptured": {
|
|
913
|
+
"description": "True: the recording has real audio. False: it is silent. Absent: unknown",
|
|
914
|
+
"type": "boolean"
|
|
915
|
+
},
|
|
916
|
+
"pacing": {
|
|
917
|
+
"description": "How time ran, in an open vocabulary: `paced` (slowed or scripted for a viewer), `real-time`. Absent: unknown",
|
|
918
|
+
"type": "string",
|
|
919
|
+
"minLength": 1
|
|
920
|
+
},
|
|
921
|
+
"asserted": {
|
|
922
|
+
"description": "The boundaries the result actually asserts. Activity visible in a recording beyond them is not verified behavior",
|
|
923
|
+
"type": "array",
|
|
924
|
+
"items": {
|
|
925
|
+
"type": "string"
|
|
926
|
+
}
|
|
927
|
+
},
|
|
928
|
+
"limitations": {
|
|
929
|
+
"description": "Known limits of what this evidence shows, in the producer's words",
|
|
930
|
+
"type": "array",
|
|
931
|
+
"items": {
|
|
932
|
+
"type": "string"
|
|
933
|
+
}
|
|
934
|
+
},
|
|
935
|
+
"declaredBy": {
|
|
936
|
+
"description": "Who or what made this declaration: a tool, a team, a person",
|
|
937
|
+
"type": "string"
|
|
938
|
+
},
|
|
939
|
+
"verified": {
|
|
940
|
+
"description": "The names of the fields above (`surface`, `deviceKind`, `syntheticData`, `dependencies`, `audioCaptured`, `pacing`) that something independent of the producer checked. Every other field is only declared",
|
|
941
|
+
"type": "array",
|
|
942
|
+
"items": {
|
|
943
|
+
"type": "string"
|
|
944
|
+
}
|
|
945
|
+
},
|
|
946
|
+
"verifiedBy": {
|
|
947
|
+
"description": "What checked the `verified` fields",
|
|
948
|
+
"type": "string"
|
|
949
|
+
},
|
|
950
|
+
"provenance": {
|
|
951
|
+
"description": "Where the declaration comes from and how to check it: a document, a CI step, a device log",
|
|
952
|
+
"type": "array",
|
|
953
|
+
"items": {
|
|
954
|
+
"type": "object",
|
|
955
|
+
"properties": {
|
|
956
|
+
"url": {
|
|
957
|
+
"type": "string",
|
|
958
|
+
"minLength": 1
|
|
959
|
+
},
|
|
960
|
+
"name": {
|
|
961
|
+
"type": "string"
|
|
962
|
+
},
|
|
963
|
+
"rel": {
|
|
964
|
+
"description": "Why it is linked, in an open vocabulary: issue, run, trace, docs, source…",
|
|
965
|
+
"type": "string"
|
|
966
|
+
}
|
|
967
|
+
},
|
|
968
|
+
"required": [
|
|
969
|
+
"url"
|
|
970
|
+
],
|
|
971
|
+
"additionalProperties": {}
|
|
972
|
+
}
|
|
973
|
+
},
|
|
974
|
+
"extensions": {
|
|
975
|
+
"type": "object",
|
|
976
|
+
"propertyNames": {
|
|
977
|
+
"type": "string",
|
|
978
|
+
"minLength": 1
|
|
979
|
+
},
|
|
980
|
+
"additionalProperties": {}
|
|
981
|
+
}
|
|
982
|
+
},
|
|
983
|
+
"additionalProperties": {}
|
|
984
|
+
},
|
|
601
985
|
"steps": {
|
|
602
986
|
"type": "array",
|
|
603
987
|
"items": {
|
|
@@ -692,6 +1076,102 @@
|
|
|
692
1076
|
"description": "Why the producer did not include its bytes, in an open vocabulary: too-large, not-found, not-allowed, over-budget, policy… Present on a metadata-only attachment, so a reader can tell \"left out\" from \"never recorded\"",
|
|
693
1077
|
"type": "string"
|
|
694
1078
|
},
|
|
1079
|
+
"scope": {
|
|
1080
|
+
"description": "What this one attachment (usually a recording) does and does not show. Overrides the scope of its attempt, check, part and layer as a whole",
|
|
1081
|
+
"type": "object",
|
|
1082
|
+
"properties": {
|
|
1083
|
+
"surface": {
|
|
1084
|
+
"description": "Where the product ran, in an open vocabulary: `browser`, `native-app`, `api`, `cli`…",
|
|
1085
|
+
"type": "string",
|
|
1086
|
+
"minLength": 1
|
|
1087
|
+
},
|
|
1088
|
+
"deviceKind": {
|
|
1089
|
+
"description": "What it ran on, in an open vocabulary: `simulator`, `emulator`, `physical`, `virtual-machine`, `desktop`… A simulator and a physical phone stay distinct values; they are filtered separately",
|
|
1090
|
+
"type": "string",
|
|
1091
|
+
"minLength": 1
|
|
1092
|
+
},
|
|
1093
|
+
"syntheticData": {
|
|
1094
|
+
"description": "True: the data was made up for the run. False: real data. Absent: unknown",
|
|
1095
|
+
"type": "boolean"
|
|
1096
|
+
},
|
|
1097
|
+
"dependencies": {
|
|
1098
|
+
"description": "Whether what the product talks to was `scripted` (replies fixed in advance), `live` or `mixed`. An open vocabulary; absent is unknown",
|
|
1099
|
+
"type": "string",
|
|
1100
|
+
"minLength": 1
|
|
1101
|
+
},
|
|
1102
|
+
"audioCaptured": {
|
|
1103
|
+
"description": "True: the recording has real audio. False: it is silent. Absent: unknown",
|
|
1104
|
+
"type": "boolean"
|
|
1105
|
+
},
|
|
1106
|
+
"pacing": {
|
|
1107
|
+
"description": "How time ran, in an open vocabulary: `paced` (slowed or scripted for a viewer), `real-time`. Absent: unknown",
|
|
1108
|
+
"type": "string",
|
|
1109
|
+
"minLength": 1
|
|
1110
|
+
},
|
|
1111
|
+
"asserted": {
|
|
1112
|
+
"description": "The boundaries the result actually asserts. Activity visible in a recording beyond them is not verified behavior",
|
|
1113
|
+
"type": "array",
|
|
1114
|
+
"items": {
|
|
1115
|
+
"type": "string"
|
|
1116
|
+
}
|
|
1117
|
+
},
|
|
1118
|
+
"limitations": {
|
|
1119
|
+
"description": "Known limits of what this evidence shows, in the producer's words",
|
|
1120
|
+
"type": "array",
|
|
1121
|
+
"items": {
|
|
1122
|
+
"type": "string"
|
|
1123
|
+
}
|
|
1124
|
+
},
|
|
1125
|
+
"declaredBy": {
|
|
1126
|
+
"description": "Who or what made this declaration: a tool, a team, a person",
|
|
1127
|
+
"type": "string"
|
|
1128
|
+
},
|
|
1129
|
+
"verified": {
|
|
1130
|
+
"description": "The names of the fields above (`surface`, `deviceKind`, `syntheticData`, `dependencies`, `audioCaptured`, `pacing`) that something independent of the producer checked. Every other field is only declared",
|
|
1131
|
+
"type": "array",
|
|
1132
|
+
"items": {
|
|
1133
|
+
"type": "string"
|
|
1134
|
+
}
|
|
1135
|
+
},
|
|
1136
|
+
"verifiedBy": {
|
|
1137
|
+
"description": "What checked the `verified` fields",
|
|
1138
|
+
"type": "string"
|
|
1139
|
+
},
|
|
1140
|
+
"provenance": {
|
|
1141
|
+
"description": "Where the declaration comes from and how to check it: a document, a CI step, a device log",
|
|
1142
|
+
"type": "array",
|
|
1143
|
+
"items": {
|
|
1144
|
+
"type": "object",
|
|
1145
|
+
"properties": {
|
|
1146
|
+
"url": {
|
|
1147
|
+
"type": "string",
|
|
1148
|
+
"minLength": 1
|
|
1149
|
+
},
|
|
1150
|
+
"name": {
|
|
1151
|
+
"type": "string"
|
|
1152
|
+
},
|
|
1153
|
+
"rel": {
|
|
1154
|
+
"description": "Why it is linked, in an open vocabulary: issue, run, trace, docs, source…",
|
|
1155
|
+
"type": "string"
|
|
1156
|
+
}
|
|
1157
|
+
},
|
|
1158
|
+
"required": [
|
|
1159
|
+
"url"
|
|
1160
|
+
],
|
|
1161
|
+
"additionalProperties": {}
|
|
1162
|
+
}
|
|
1163
|
+
},
|
|
1164
|
+
"extensions": {
|
|
1165
|
+
"type": "object",
|
|
1166
|
+
"propertyNames": {
|
|
1167
|
+
"type": "string",
|
|
1168
|
+
"minLength": 1
|
|
1169
|
+
},
|
|
1170
|
+
"additionalProperties": {}
|
|
1171
|
+
}
|
|
1172
|
+
},
|
|
1173
|
+
"additionalProperties": {}
|
|
1174
|
+
},
|
|
695
1175
|
"tags": {
|
|
696
1176
|
"description": "Free labels of this one attachment, such as `demo`: shown as `#demo`, searchable, and normalized by `normalizeTag` (a leading `#` and letter case never matter). Unlike the tags of a check they say nothing about its result",
|
|
697
1177
|
"type": "array",
|
|
@@ -903,6 +1383,102 @@
|
|
|
903
1383
|
"description": "Why the producer did not include its bytes, in an open vocabulary: too-large, not-found, not-allowed, over-budget, policy… Present on a metadata-only attachment, so a reader can tell \"left out\" from \"never recorded\"",
|
|
904
1384
|
"type": "string"
|
|
905
1385
|
},
|
|
1386
|
+
"scope": {
|
|
1387
|
+
"description": "What this one attachment (usually a recording) does and does not show. Overrides the scope of its attempt, check, part and layer as a whole",
|
|
1388
|
+
"type": "object",
|
|
1389
|
+
"properties": {
|
|
1390
|
+
"surface": {
|
|
1391
|
+
"description": "Where the product ran, in an open vocabulary: `browser`, `native-app`, `api`, `cli`…",
|
|
1392
|
+
"type": "string",
|
|
1393
|
+
"minLength": 1
|
|
1394
|
+
},
|
|
1395
|
+
"deviceKind": {
|
|
1396
|
+
"description": "What it ran on, in an open vocabulary: `simulator`, `emulator`, `physical`, `virtual-machine`, `desktop`… A simulator and a physical phone stay distinct values; they are filtered separately",
|
|
1397
|
+
"type": "string",
|
|
1398
|
+
"minLength": 1
|
|
1399
|
+
},
|
|
1400
|
+
"syntheticData": {
|
|
1401
|
+
"description": "True: the data was made up for the run. False: real data. Absent: unknown",
|
|
1402
|
+
"type": "boolean"
|
|
1403
|
+
},
|
|
1404
|
+
"dependencies": {
|
|
1405
|
+
"description": "Whether what the product talks to was `scripted` (replies fixed in advance), `live` or `mixed`. An open vocabulary; absent is unknown",
|
|
1406
|
+
"type": "string",
|
|
1407
|
+
"minLength": 1
|
|
1408
|
+
},
|
|
1409
|
+
"audioCaptured": {
|
|
1410
|
+
"description": "True: the recording has real audio. False: it is silent. Absent: unknown",
|
|
1411
|
+
"type": "boolean"
|
|
1412
|
+
},
|
|
1413
|
+
"pacing": {
|
|
1414
|
+
"description": "How time ran, in an open vocabulary: `paced` (slowed or scripted for a viewer), `real-time`. Absent: unknown",
|
|
1415
|
+
"type": "string",
|
|
1416
|
+
"minLength": 1
|
|
1417
|
+
},
|
|
1418
|
+
"asserted": {
|
|
1419
|
+
"description": "The boundaries the result actually asserts. Activity visible in a recording beyond them is not verified behavior",
|
|
1420
|
+
"type": "array",
|
|
1421
|
+
"items": {
|
|
1422
|
+
"type": "string"
|
|
1423
|
+
}
|
|
1424
|
+
},
|
|
1425
|
+
"limitations": {
|
|
1426
|
+
"description": "Known limits of what this evidence shows, in the producer's words",
|
|
1427
|
+
"type": "array",
|
|
1428
|
+
"items": {
|
|
1429
|
+
"type": "string"
|
|
1430
|
+
}
|
|
1431
|
+
},
|
|
1432
|
+
"declaredBy": {
|
|
1433
|
+
"description": "Who or what made this declaration: a tool, a team, a person",
|
|
1434
|
+
"type": "string"
|
|
1435
|
+
},
|
|
1436
|
+
"verified": {
|
|
1437
|
+
"description": "The names of the fields above (`surface`, `deviceKind`, `syntheticData`, `dependencies`, `audioCaptured`, `pacing`) that something independent of the producer checked. Every other field is only declared",
|
|
1438
|
+
"type": "array",
|
|
1439
|
+
"items": {
|
|
1440
|
+
"type": "string"
|
|
1441
|
+
}
|
|
1442
|
+
},
|
|
1443
|
+
"verifiedBy": {
|
|
1444
|
+
"description": "What checked the `verified` fields",
|
|
1445
|
+
"type": "string"
|
|
1446
|
+
},
|
|
1447
|
+
"provenance": {
|
|
1448
|
+
"description": "Where the declaration comes from and how to check it: a document, a CI step, a device log",
|
|
1449
|
+
"type": "array",
|
|
1450
|
+
"items": {
|
|
1451
|
+
"type": "object",
|
|
1452
|
+
"properties": {
|
|
1453
|
+
"url": {
|
|
1454
|
+
"type": "string",
|
|
1455
|
+
"minLength": 1
|
|
1456
|
+
},
|
|
1457
|
+
"name": {
|
|
1458
|
+
"type": "string"
|
|
1459
|
+
},
|
|
1460
|
+
"rel": {
|
|
1461
|
+
"description": "Why it is linked, in an open vocabulary: issue, run, trace, docs, source…",
|
|
1462
|
+
"type": "string"
|
|
1463
|
+
}
|
|
1464
|
+
},
|
|
1465
|
+
"required": [
|
|
1466
|
+
"url"
|
|
1467
|
+
],
|
|
1468
|
+
"additionalProperties": {}
|
|
1469
|
+
}
|
|
1470
|
+
},
|
|
1471
|
+
"extensions": {
|
|
1472
|
+
"type": "object",
|
|
1473
|
+
"propertyNames": {
|
|
1474
|
+
"type": "string",
|
|
1475
|
+
"minLength": 1
|
|
1476
|
+
},
|
|
1477
|
+
"additionalProperties": {}
|
|
1478
|
+
}
|
|
1479
|
+
},
|
|
1480
|
+
"additionalProperties": {}
|
|
1481
|
+
},
|
|
906
1482
|
"tags": {
|
|
907
1483
|
"description": "Free labels of this one attachment, such as `demo`: shown as `#demo`, searchable, and normalized by `normalizeTag` (a leading `#` and letter case never matter). Unlike the tags of a check they say nothing about its result",
|
|
908
1484
|
"type": "array",
|
|
@@ -1067,7 +1643,103 @@
|
|
|
1067
1643
|
"type": "object",
|
|
1068
1644
|
"properties": {},
|
|
1069
1645
|
"additionalProperties": {},
|
|
1070
|
-
"description": "What the run as a whole carries: its logs, links, labels, annotations and extensions"
|
|
1646
|
+
"description": "What the run as a whole carries: its logs, links, labels, annotations, scope and extensions"
|
|
1647
|
+
},
|
|
1648
|
+
"inheritedScope": {
|
|
1649
|
+
"description": "The scope the check inherits: its part's declaration, else its layer's. Absent when neither declared one: unknown, not live or physical",
|
|
1650
|
+
"type": "object",
|
|
1651
|
+
"properties": {
|
|
1652
|
+
"surface": {
|
|
1653
|
+
"description": "Where the product ran, in an open vocabulary: `browser`, `native-app`, `api`, `cli`…",
|
|
1654
|
+
"type": "string",
|
|
1655
|
+
"minLength": 1
|
|
1656
|
+
},
|
|
1657
|
+
"deviceKind": {
|
|
1658
|
+
"description": "What it ran on, in an open vocabulary: `simulator`, `emulator`, `physical`, `virtual-machine`, `desktop`… A simulator and a physical phone stay distinct values; they are filtered separately",
|
|
1659
|
+
"type": "string",
|
|
1660
|
+
"minLength": 1
|
|
1661
|
+
},
|
|
1662
|
+
"syntheticData": {
|
|
1663
|
+
"description": "True: the data was made up for the run. False: real data. Absent: unknown",
|
|
1664
|
+
"type": "boolean"
|
|
1665
|
+
},
|
|
1666
|
+
"dependencies": {
|
|
1667
|
+
"description": "Whether what the product talks to was `scripted` (replies fixed in advance), `live` or `mixed`. An open vocabulary; absent is unknown",
|
|
1668
|
+
"type": "string",
|
|
1669
|
+
"minLength": 1
|
|
1670
|
+
},
|
|
1671
|
+
"audioCaptured": {
|
|
1672
|
+
"description": "True: the recording has real audio. False: it is silent. Absent: unknown",
|
|
1673
|
+
"type": "boolean"
|
|
1674
|
+
},
|
|
1675
|
+
"pacing": {
|
|
1676
|
+
"description": "How time ran, in an open vocabulary: `paced` (slowed or scripted for a viewer), `real-time`. Absent: unknown",
|
|
1677
|
+
"type": "string",
|
|
1678
|
+
"minLength": 1
|
|
1679
|
+
},
|
|
1680
|
+
"asserted": {
|
|
1681
|
+
"description": "The boundaries the result actually asserts. Activity visible in a recording beyond them is not verified behavior",
|
|
1682
|
+
"type": "array",
|
|
1683
|
+
"items": {
|
|
1684
|
+
"type": "string"
|
|
1685
|
+
}
|
|
1686
|
+
},
|
|
1687
|
+
"limitations": {
|
|
1688
|
+
"description": "Known limits of what this evidence shows, in the producer's words",
|
|
1689
|
+
"type": "array",
|
|
1690
|
+
"items": {
|
|
1691
|
+
"type": "string"
|
|
1692
|
+
}
|
|
1693
|
+
},
|
|
1694
|
+
"declaredBy": {
|
|
1695
|
+
"description": "Who or what made this declaration: a tool, a team, a person",
|
|
1696
|
+
"type": "string"
|
|
1697
|
+
},
|
|
1698
|
+
"verified": {
|
|
1699
|
+
"description": "The names of the fields above (`surface`, `deviceKind`, `syntheticData`, `dependencies`, `audioCaptured`, `pacing`) that something independent of the producer checked. Every other field is only declared",
|
|
1700
|
+
"type": "array",
|
|
1701
|
+
"items": {
|
|
1702
|
+
"type": "string"
|
|
1703
|
+
}
|
|
1704
|
+
},
|
|
1705
|
+
"verifiedBy": {
|
|
1706
|
+
"description": "What checked the `verified` fields",
|
|
1707
|
+
"type": "string"
|
|
1708
|
+
},
|
|
1709
|
+
"provenance": {
|
|
1710
|
+
"description": "Where the declaration comes from and how to check it: a document, a CI step, a device log",
|
|
1711
|
+
"type": "array",
|
|
1712
|
+
"items": {
|
|
1713
|
+
"type": "object",
|
|
1714
|
+
"properties": {
|
|
1715
|
+
"url": {
|
|
1716
|
+
"type": "string",
|
|
1717
|
+
"minLength": 1
|
|
1718
|
+
},
|
|
1719
|
+
"name": {
|
|
1720
|
+
"type": "string"
|
|
1721
|
+
},
|
|
1722
|
+
"rel": {
|
|
1723
|
+
"description": "Why it is linked, in an open vocabulary: issue, run, trace, docs, source…",
|
|
1724
|
+
"type": "string"
|
|
1725
|
+
}
|
|
1726
|
+
},
|
|
1727
|
+
"required": [
|
|
1728
|
+
"url"
|
|
1729
|
+
],
|
|
1730
|
+
"additionalProperties": {}
|
|
1731
|
+
}
|
|
1732
|
+
},
|
|
1733
|
+
"extensions": {
|
|
1734
|
+
"type": "object",
|
|
1735
|
+
"propertyNames": {
|
|
1736
|
+
"type": "string",
|
|
1737
|
+
"minLength": 1
|
|
1738
|
+
},
|
|
1739
|
+
"additionalProperties": {}
|
|
1740
|
+
}
|
|
1741
|
+
},
|
|
1742
|
+
"additionalProperties": {}
|
|
1071
1743
|
}
|
|
1072
1744
|
},
|
|
1073
1745
|
"required": [
|