@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
|
@@ -345,6 +345,102 @@
|
|
|
345
345
|
"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\"",
|
|
346
346
|
"type": "string"
|
|
347
347
|
},
|
|
348
|
+
"scope": {
|
|
349
|
+
"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",
|
|
350
|
+
"type": "object",
|
|
351
|
+
"properties": {
|
|
352
|
+
"surface": {
|
|
353
|
+
"description": "Where the product ran, in an open vocabulary: `browser`, `native-app`, `api`, `cli`…",
|
|
354
|
+
"type": "string",
|
|
355
|
+
"minLength": 1
|
|
356
|
+
},
|
|
357
|
+
"deviceKind": {
|
|
358
|
+
"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",
|
|
359
|
+
"type": "string",
|
|
360
|
+
"minLength": 1
|
|
361
|
+
},
|
|
362
|
+
"syntheticData": {
|
|
363
|
+
"description": "True: the data was made up for the run. False: real data. Absent: unknown",
|
|
364
|
+
"type": "boolean"
|
|
365
|
+
},
|
|
366
|
+
"dependencies": {
|
|
367
|
+
"description": "Whether what the product talks to was `scripted` (replies fixed in advance), `live` or `mixed`. An open vocabulary; absent is unknown",
|
|
368
|
+
"type": "string",
|
|
369
|
+
"minLength": 1
|
|
370
|
+
},
|
|
371
|
+
"audioCaptured": {
|
|
372
|
+
"description": "True: the recording has real audio. False: it is silent. Absent: unknown",
|
|
373
|
+
"type": "boolean"
|
|
374
|
+
},
|
|
375
|
+
"pacing": {
|
|
376
|
+
"description": "How time ran, in an open vocabulary: `paced` (slowed or scripted for a viewer), `real-time`. Absent: unknown",
|
|
377
|
+
"type": "string",
|
|
378
|
+
"minLength": 1
|
|
379
|
+
},
|
|
380
|
+
"asserted": {
|
|
381
|
+
"description": "The boundaries the result actually asserts. Activity visible in a recording beyond them is not verified behavior",
|
|
382
|
+
"type": "array",
|
|
383
|
+
"items": {
|
|
384
|
+
"type": "string"
|
|
385
|
+
}
|
|
386
|
+
},
|
|
387
|
+
"limitations": {
|
|
388
|
+
"description": "Known limits of what this evidence shows, in the producer's words",
|
|
389
|
+
"type": "array",
|
|
390
|
+
"items": {
|
|
391
|
+
"type": "string"
|
|
392
|
+
}
|
|
393
|
+
},
|
|
394
|
+
"declaredBy": {
|
|
395
|
+
"description": "Who or what made this declaration: a tool, a team, a person",
|
|
396
|
+
"type": "string"
|
|
397
|
+
},
|
|
398
|
+
"verified": {
|
|
399
|
+
"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",
|
|
400
|
+
"type": "array",
|
|
401
|
+
"items": {
|
|
402
|
+
"type": "string"
|
|
403
|
+
}
|
|
404
|
+
},
|
|
405
|
+
"verifiedBy": {
|
|
406
|
+
"description": "What checked the `verified` fields",
|
|
407
|
+
"type": "string"
|
|
408
|
+
},
|
|
409
|
+
"provenance": {
|
|
410
|
+
"description": "Where the declaration comes from and how to check it: a document, a CI step, a device log",
|
|
411
|
+
"type": "array",
|
|
412
|
+
"items": {
|
|
413
|
+
"type": "object",
|
|
414
|
+
"properties": {
|
|
415
|
+
"url": {
|
|
416
|
+
"type": "string",
|
|
417
|
+
"minLength": 1
|
|
418
|
+
},
|
|
419
|
+
"name": {
|
|
420
|
+
"type": "string"
|
|
421
|
+
},
|
|
422
|
+
"rel": {
|
|
423
|
+
"description": "Why it is linked, in an open vocabulary: issue, run, trace, docs, source…",
|
|
424
|
+
"type": "string"
|
|
425
|
+
}
|
|
426
|
+
},
|
|
427
|
+
"required": [
|
|
428
|
+
"url"
|
|
429
|
+
],
|
|
430
|
+
"additionalProperties": {}
|
|
431
|
+
}
|
|
432
|
+
},
|
|
433
|
+
"extensions": {
|
|
434
|
+
"type": "object",
|
|
435
|
+
"propertyNames": {
|
|
436
|
+
"type": "string",
|
|
437
|
+
"minLength": 1
|
|
438
|
+
},
|
|
439
|
+
"additionalProperties": {}
|
|
440
|
+
}
|
|
441
|
+
},
|
|
442
|
+
"additionalProperties": {}
|
|
443
|
+
},
|
|
348
444
|
"tags": {
|
|
349
445
|
"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",
|
|
350
446
|
"type": "array",
|
|
@@ -481,6 +577,102 @@
|
|
|
481
577
|
"additionalProperties": {}
|
|
482
578
|
}
|
|
483
579
|
},
|
|
580
|
+
"scope": {
|
|
581
|
+
"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",
|
|
582
|
+
"type": "object",
|
|
583
|
+
"properties": {
|
|
584
|
+
"surface": {
|
|
585
|
+
"description": "Where the product ran, in an open vocabulary: `browser`, `native-app`, `api`, `cli`…",
|
|
586
|
+
"type": "string",
|
|
587
|
+
"minLength": 1
|
|
588
|
+
},
|
|
589
|
+
"deviceKind": {
|
|
590
|
+
"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",
|
|
591
|
+
"type": "string",
|
|
592
|
+
"minLength": 1
|
|
593
|
+
},
|
|
594
|
+
"syntheticData": {
|
|
595
|
+
"description": "True: the data was made up for the run. False: real data. Absent: unknown",
|
|
596
|
+
"type": "boolean"
|
|
597
|
+
},
|
|
598
|
+
"dependencies": {
|
|
599
|
+
"description": "Whether what the product talks to was `scripted` (replies fixed in advance), `live` or `mixed`. An open vocabulary; absent is unknown",
|
|
600
|
+
"type": "string",
|
|
601
|
+
"minLength": 1
|
|
602
|
+
},
|
|
603
|
+
"audioCaptured": {
|
|
604
|
+
"description": "True: the recording has real audio. False: it is silent. Absent: unknown",
|
|
605
|
+
"type": "boolean"
|
|
606
|
+
},
|
|
607
|
+
"pacing": {
|
|
608
|
+
"description": "How time ran, in an open vocabulary: `paced` (slowed or scripted for a viewer), `real-time`. Absent: unknown",
|
|
609
|
+
"type": "string",
|
|
610
|
+
"minLength": 1
|
|
611
|
+
},
|
|
612
|
+
"asserted": {
|
|
613
|
+
"description": "The boundaries the result actually asserts. Activity visible in a recording beyond them is not verified behavior",
|
|
614
|
+
"type": "array",
|
|
615
|
+
"items": {
|
|
616
|
+
"type": "string"
|
|
617
|
+
}
|
|
618
|
+
},
|
|
619
|
+
"limitations": {
|
|
620
|
+
"description": "Known limits of what this evidence shows, in the producer's words",
|
|
621
|
+
"type": "array",
|
|
622
|
+
"items": {
|
|
623
|
+
"type": "string"
|
|
624
|
+
}
|
|
625
|
+
},
|
|
626
|
+
"declaredBy": {
|
|
627
|
+
"description": "Who or what made this declaration: a tool, a team, a person",
|
|
628
|
+
"type": "string"
|
|
629
|
+
},
|
|
630
|
+
"verified": {
|
|
631
|
+
"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",
|
|
632
|
+
"type": "array",
|
|
633
|
+
"items": {
|
|
634
|
+
"type": "string"
|
|
635
|
+
}
|
|
636
|
+
},
|
|
637
|
+
"verifiedBy": {
|
|
638
|
+
"description": "What checked the `verified` fields",
|
|
639
|
+
"type": "string"
|
|
640
|
+
},
|
|
641
|
+
"provenance": {
|
|
642
|
+
"description": "Where the declaration comes from and how to check it: a document, a CI step, a device log",
|
|
643
|
+
"type": "array",
|
|
644
|
+
"items": {
|
|
645
|
+
"type": "object",
|
|
646
|
+
"properties": {
|
|
647
|
+
"url": {
|
|
648
|
+
"type": "string",
|
|
649
|
+
"minLength": 1
|
|
650
|
+
},
|
|
651
|
+
"name": {
|
|
652
|
+
"type": "string"
|
|
653
|
+
},
|
|
654
|
+
"rel": {
|
|
655
|
+
"description": "Why it is linked, in an open vocabulary: issue, run, trace, docs, source…",
|
|
656
|
+
"type": "string"
|
|
657
|
+
}
|
|
658
|
+
},
|
|
659
|
+
"required": [
|
|
660
|
+
"url"
|
|
661
|
+
],
|
|
662
|
+
"additionalProperties": {}
|
|
663
|
+
}
|
|
664
|
+
},
|
|
665
|
+
"extensions": {
|
|
666
|
+
"type": "object",
|
|
667
|
+
"propertyNames": {
|
|
668
|
+
"type": "string",
|
|
669
|
+
"minLength": 1
|
|
670
|
+
},
|
|
671
|
+
"additionalProperties": {}
|
|
672
|
+
}
|
|
673
|
+
},
|
|
674
|
+
"additionalProperties": {}
|
|
675
|
+
},
|
|
484
676
|
"extensions": {
|
|
485
677
|
"type": "object",
|
|
486
678
|
"propertyNames": {
|
|
@@ -584,6 +776,102 @@
|
|
|
584
776
|
"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\"",
|
|
585
777
|
"type": "string"
|
|
586
778
|
},
|
|
779
|
+
"scope": {
|
|
780
|
+
"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",
|
|
781
|
+
"type": "object",
|
|
782
|
+
"properties": {
|
|
783
|
+
"surface": {
|
|
784
|
+
"description": "Where the product ran, in an open vocabulary: `browser`, `native-app`, `api`, `cli`…",
|
|
785
|
+
"type": "string",
|
|
786
|
+
"minLength": 1
|
|
787
|
+
},
|
|
788
|
+
"deviceKind": {
|
|
789
|
+
"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",
|
|
790
|
+
"type": "string",
|
|
791
|
+
"minLength": 1
|
|
792
|
+
},
|
|
793
|
+
"syntheticData": {
|
|
794
|
+
"description": "True: the data was made up for the run. False: real data. Absent: unknown",
|
|
795
|
+
"type": "boolean"
|
|
796
|
+
},
|
|
797
|
+
"dependencies": {
|
|
798
|
+
"description": "Whether what the product talks to was `scripted` (replies fixed in advance), `live` or `mixed`. An open vocabulary; absent is unknown",
|
|
799
|
+
"type": "string",
|
|
800
|
+
"minLength": 1
|
|
801
|
+
},
|
|
802
|
+
"audioCaptured": {
|
|
803
|
+
"description": "True: the recording has real audio. False: it is silent. Absent: unknown",
|
|
804
|
+
"type": "boolean"
|
|
805
|
+
},
|
|
806
|
+
"pacing": {
|
|
807
|
+
"description": "How time ran, in an open vocabulary: `paced` (slowed or scripted for a viewer), `real-time`. Absent: unknown",
|
|
808
|
+
"type": "string",
|
|
809
|
+
"minLength": 1
|
|
810
|
+
},
|
|
811
|
+
"asserted": {
|
|
812
|
+
"description": "The boundaries the result actually asserts. Activity visible in a recording beyond them is not verified behavior",
|
|
813
|
+
"type": "array",
|
|
814
|
+
"items": {
|
|
815
|
+
"type": "string"
|
|
816
|
+
}
|
|
817
|
+
},
|
|
818
|
+
"limitations": {
|
|
819
|
+
"description": "Known limits of what this evidence shows, in the producer's words",
|
|
820
|
+
"type": "array",
|
|
821
|
+
"items": {
|
|
822
|
+
"type": "string"
|
|
823
|
+
}
|
|
824
|
+
},
|
|
825
|
+
"declaredBy": {
|
|
826
|
+
"description": "Who or what made this declaration: a tool, a team, a person",
|
|
827
|
+
"type": "string"
|
|
828
|
+
},
|
|
829
|
+
"verified": {
|
|
830
|
+
"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",
|
|
831
|
+
"type": "array",
|
|
832
|
+
"items": {
|
|
833
|
+
"type": "string"
|
|
834
|
+
}
|
|
835
|
+
},
|
|
836
|
+
"verifiedBy": {
|
|
837
|
+
"description": "What checked the `verified` fields",
|
|
838
|
+
"type": "string"
|
|
839
|
+
},
|
|
840
|
+
"provenance": {
|
|
841
|
+
"description": "Where the declaration comes from and how to check it: a document, a CI step, a device log",
|
|
842
|
+
"type": "array",
|
|
843
|
+
"items": {
|
|
844
|
+
"type": "object",
|
|
845
|
+
"properties": {
|
|
846
|
+
"url": {
|
|
847
|
+
"type": "string",
|
|
848
|
+
"minLength": 1
|
|
849
|
+
},
|
|
850
|
+
"name": {
|
|
851
|
+
"type": "string"
|
|
852
|
+
},
|
|
853
|
+
"rel": {
|
|
854
|
+
"description": "Why it is linked, in an open vocabulary: issue, run, trace, docs, source…",
|
|
855
|
+
"type": "string"
|
|
856
|
+
}
|
|
857
|
+
},
|
|
858
|
+
"required": [
|
|
859
|
+
"url"
|
|
860
|
+
],
|
|
861
|
+
"additionalProperties": {}
|
|
862
|
+
}
|
|
863
|
+
},
|
|
864
|
+
"extensions": {
|
|
865
|
+
"type": "object",
|
|
866
|
+
"propertyNames": {
|
|
867
|
+
"type": "string",
|
|
868
|
+
"minLength": 1
|
|
869
|
+
},
|
|
870
|
+
"additionalProperties": {}
|
|
871
|
+
}
|
|
872
|
+
},
|
|
873
|
+
"additionalProperties": {}
|
|
874
|
+
},
|
|
587
875
|
"tags": {
|
|
588
876
|
"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",
|
|
589
877
|
"type": "array",
|
|
@@ -766,6 +1054,102 @@
|
|
|
766
1054
|
"detail": {
|
|
767
1055
|
"type": "string"
|
|
768
1056
|
},
|
|
1057
|
+
"scope": {
|
|
1058
|
+
"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",
|
|
1059
|
+
"type": "object",
|
|
1060
|
+
"properties": {
|
|
1061
|
+
"surface": {
|
|
1062
|
+
"description": "Where the product ran, in an open vocabulary: `browser`, `native-app`, `api`, `cli`…",
|
|
1063
|
+
"type": "string",
|
|
1064
|
+
"minLength": 1
|
|
1065
|
+
},
|
|
1066
|
+
"deviceKind": {
|
|
1067
|
+
"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",
|
|
1068
|
+
"type": "string",
|
|
1069
|
+
"minLength": 1
|
|
1070
|
+
},
|
|
1071
|
+
"syntheticData": {
|
|
1072
|
+
"description": "True: the data was made up for the run. False: real data. Absent: unknown",
|
|
1073
|
+
"type": "boolean"
|
|
1074
|
+
},
|
|
1075
|
+
"dependencies": {
|
|
1076
|
+
"description": "Whether what the product talks to was `scripted` (replies fixed in advance), `live` or `mixed`. An open vocabulary; absent is unknown",
|
|
1077
|
+
"type": "string",
|
|
1078
|
+
"minLength": 1
|
|
1079
|
+
},
|
|
1080
|
+
"audioCaptured": {
|
|
1081
|
+
"description": "True: the recording has real audio. False: it is silent. Absent: unknown",
|
|
1082
|
+
"type": "boolean"
|
|
1083
|
+
},
|
|
1084
|
+
"pacing": {
|
|
1085
|
+
"description": "How time ran, in an open vocabulary: `paced` (slowed or scripted for a viewer), `real-time`. Absent: unknown",
|
|
1086
|
+
"type": "string",
|
|
1087
|
+
"minLength": 1
|
|
1088
|
+
},
|
|
1089
|
+
"asserted": {
|
|
1090
|
+
"description": "The boundaries the result actually asserts. Activity visible in a recording beyond them is not verified behavior",
|
|
1091
|
+
"type": "array",
|
|
1092
|
+
"items": {
|
|
1093
|
+
"type": "string"
|
|
1094
|
+
}
|
|
1095
|
+
},
|
|
1096
|
+
"limitations": {
|
|
1097
|
+
"description": "Known limits of what this evidence shows, in the producer's words",
|
|
1098
|
+
"type": "array",
|
|
1099
|
+
"items": {
|
|
1100
|
+
"type": "string"
|
|
1101
|
+
}
|
|
1102
|
+
},
|
|
1103
|
+
"declaredBy": {
|
|
1104
|
+
"description": "Who or what made this declaration: a tool, a team, a person",
|
|
1105
|
+
"type": "string"
|
|
1106
|
+
},
|
|
1107
|
+
"verified": {
|
|
1108
|
+
"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",
|
|
1109
|
+
"type": "array",
|
|
1110
|
+
"items": {
|
|
1111
|
+
"type": "string"
|
|
1112
|
+
}
|
|
1113
|
+
},
|
|
1114
|
+
"verifiedBy": {
|
|
1115
|
+
"description": "What checked the `verified` fields",
|
|
1116
|
+
"type": "string"
|
|
1117
|
+
},
|
|
1118
|
+
"provenance": {
|
|
1119
|
+
"description": "Where the declaration comes from and how to check it: a document, a CI step, a device log",
|
|
1120
|
+
"type": "array",
|
|
1121
|
+
"items": {
|
|
1122
|
+
"type": "object",
|
|
1123
|
+
"properties": {
|
|
1124
|
+
"url": {
|
|
1125
|
+
"type": "string",
|
|
1126
|
+
"minLength": 1
|
|
1127
|
+
},
|
|
1128
|
+
"name": {
|
|
1129
|
+
"type": "string"
|
|
1130
|
+
},
|
|
1131
|
+
"rel": {
|
|
1132
|
+
"description": "Why it is linked, in an open vocabulary: issue, run, trace, docs, source…",
|
|
1133
|
+
"type": "string"
|
|
1134
|
+
}
|
|
1135
|
+
},
|
|
1136
|
+
"required": [
|
|
1137
|
+
"url"
|
|
1138
|
+
],
|
|
1139
|
+
"additionalProperties": {}
|
|
1140
|
+
}
|
|
1141
|
+
},
|
|
1142
|
+
"extensions": {
|
|
1143
|
+
"type": "object",
|
|
1144
|
+
"propertyNames": {
|
|
1145
|
+
"type": "string",
|
|
1146
|
+
"minLength": 1
|
|
1147
|
+
},
|
|
1148
|
+
"additionalProperties": {}
|
|
1149
|
+
}
|
|
1150
|
+
},
|
|
1151
|
+
"additionalProperties": {}
|
|
1152
|
+
},
|
|
769
1153
|
"steps": {
|
|
770
1154
|
"type": "array",
|
|
771
1155
|
"items": {
|
|
@@ -860,6 +1244,102 @@
|
|
|
860
1244
|
"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\"",
|
|
861
1245
|
"type": "string"
|
|
862
1246
|
},
|
|
1247
|
+
"scope": {
|
|
1248
|
+
"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",
|
|
1249
|
+
"type": "object",
|
|
1250
|
+
"properties": {
|
|
1251
|
+
"surface": {
|
|
1252
|
+
"description": "Where the product ran, in an open vocabulary: `browser`, `native-app`, `api`, `cli`…",
|
|
1253
|
+
"type": "string",
|
|
1254
|
+
"minLength": 1
|
|
1255
|
+
},
|
|
1256
|
+
"deviceKind": {
|
|
1257
|
+
"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",
|
|
1258
|
+
"type": "string",
|
|
1259
|
+
"minLength": 1
|
|
1260
|
+
},
|
|
1261
|
+
"syntheticData": {
|
|
1262
|
+
"description": "True: the data was made up for the run. False: real data. Absent: unknown",
|
|
1263
|
+
"type": "boolean"
|
|
1264
|
+
},
|
|
1265
|
+
"dependencies": {
|
|
1266
|
+
"description": "Whether what the product talks to was `scripted` (replies fixed in advance), `live` or `mixed`. An open vocabulary; absent is unknown",
|
|
1267
|
+
"type": "string",
|
|
1268
|
+
"minLength": 1
|
|
1269
|
+
},
|
|
1270
|
+
"audioCaptured": {
|
|
1271
|
+
"description": "True: the recording has real audio. False: it is silent. Absent: unknown",
|
|
1272
|
+
"type": "boolean"
|
|
1273
|
+
},
|
|
1274
|
+
"pacing": {
|
|
1275
|
+
"description": "How time ran, in an open vocabulary: `paced` (slowed or scripted for a viewer), `real-time`. Absent: unknown",
|
|
1276
|
+
"type": "string",
|
|
1277
|
+
"minLength": 1
|
|
1278
|
+
},
|
|
1279
|
+
"asserted": {
|
|
1280
|
+
"description": "The boundaries the result actually asserts. Activity visible in a recording beyond them is not verified behavior",
|
|
1281
|
+
"type": "array",
|
|
1282
|
+
"items": {
|
|
1283
|
+
"type": "string"
|
|
1284
|
+
}
|
|
1285
|
+
},
|
|
1286
|
+
"limitations": {
|
|
1287
|
+
"description": "Known limits of what this evidence shows, in the producer's words",
|
|
1288
|
+
"type": "array",
|
|
1289
|
+
"items": {
|
|
1290
|
+
"type": "string"
|
|
1291
|
+
}
|
|
1292
|
+
},
|
|
1293
|
+
"declaredBy": {
|
|
1294
|
+
"description": "Who or what made this declaration: a tool, a team, a person",
|
|
1295
|
+
"type": "string"
|
|
1296
|
+
},
|
|
1297
|
+
"verified": {
|
|
1298
|
+
"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",
|
|
1299
|
+
"type": "array",
|
|
1300
|
+
"items": {
|
|
1301
|
+
"type": "string"
|
|
1302
|
+
}
|
|
1303
|
+
},
|
|
1304
|
+
"verifiedBy": {
|
|
1305
|
+
"description": "What checked the `verified` fields",
|
|
1306
|
+
"type": "string"
|
|
1307
|
+
},
|
|
1308
|
+
"provenance": {
|
|
1309
|
+
"description": "Where the declaration comes from and how to check it: a document, a CI step, a device log",
|
|
1310
|
+
"type": "array",
|
|
1311
|
+
"items": {
|
|
1312
|
+
"type": "object",
|
|
1313
|
+
"properties": {
|
|
1314
|
+
"url": {
|
|
1315
|
+
"type": "string",
|
|
1316
|
+
"minLength": 1
|
|
1317
|
+
},
|
|
1318
|
+
"name": {
|
|
1319
|
+
"type": "string"
|
|
1320
|
+
},
|
|
1321
|
+
"rel": {
|
|
1322
|
+
"description": "Why it is linked, in an open vocabulary: issue, run, trace, docs, source…",
|
|
1323
|
+
"type": "string"
|
|
1324
|
+
}
|
|
1325
|
+
},
|
|
1326
|
+
"required": [
|
|
1327
|
+
"url"
|
|
1328
|
+
],
|
|
1329
|
+
"additionalProperties": {}
|
|
1330
|
+
}
|
|
1331
|
+
},
|
|
1332
|
+
"extensions": {
|
|
1333
|
+
"type": "object",
|
|
1334
|
+
"propertyNames": {
|
|
1335
|
+
"type": "string",
|
|
1336
|
+
"minLength": 1
|
|
1337
|
+
},
|
|
1338
|
+
"additionalProperties": {}
|
|
1339
|
+
}
|
|
1340
|
+
},
|
|
1341
|
+
"additionalProperties": {}
|
|
1342
|
+
},
|
|
863
1343
|
"tags": {
|
|
864
1344
|
"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",
|
|
865
1345
|
"type": "array",
|
|
@@ -1071,20 +1551,116 @@
|
|
|
1071
1551
|
"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\"",
|
|
1072
1552
|
"type": "string"
|
|
1073
1553
|
},
|
|
1074
|
-
"
|
|
1075
|
-
"description": "
|
|
1076
|
-
"type": "array",
|
|
1077
|
-
"items": {
|
|
1078
|
-
"type": "string"
|
|
1079
|
-
}
|
|
1080
|
-
},
|
|
1081
|
-
"at": {
|
|
1554
|
+
"scope": {
|
|
1555
|
+
"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",
|
|
1082
1556
|
"type": "object",
|
|
1083
1557
|
"properties": {
|
|
1084
|
-
"
|
|
1085
|
-
"description": "
|
|
1086
|
-
"type": "string"
|
|
1087
|
-
|
|
1558
|
+
"surface": {
|
|
1559
|
+
"description": "Where the product ran, in an open vocabulary: `browser`, `native-app`, `api`, `cli`…",
|
|
1560
|
+
"type": "string",
|
|
1561
|
+
"minLength": 1
|
|
1562
|
+
},
|
|
1563
|
+
"deviceKind": {
|
|
1564
|
+
"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",
|
|
1565
|
+
"type": "string",
|
|
1566
|
+
"minLength": 1
|
|
1567
|
+
},
|
|
1568
|
+
"syntheticData": {
|
|
1569
|
+
"description": "True: the data was made up for the run. False: real data. Absent: unknown",
|
|
1570
|
+
"type": "boolean"
|
|
1571
|
+
},
|
|
1572
|
+
"dependencies": {
|
|
1573
|
+
"description": "Whether what the product talks to was `scripted` (replies fixed in advance), `live` or `mixed`. An open vocabulary; absent is unknown",
|
|
1574
|
+
"type": "string",
|
|
1575
|
+
"minLength": 1
|
|
1576
|
+
},
|
|
1577
|
+
"audioCaptured": {
|
|
1578
|
+
"description": "True: the recording has real audio. False: it is silent. Absent: unknown",
|
|
1579
|
+
"type": "boolean"
|
|
1580
|
+
},
|
|
1581
|
+
"pacing": {
|
|
1582
|
+
"description": "How time ran, in an open vocabulary: `paced` (slowed or scripted for a viewer), `real-time`. Absent: unknown",
|
|
1583
|
+
"type": "string",
|
|
1584
|
+
"minLength": 1
|
|
1585
|
+
},
|
|
1586
|
+
"asserted": {
|
|
1587
|
+
"description": "The boundaries the result actually asserts. Activity visible in a recording beyond them is not verified behavior",
|
|
1588
|
+
"type": "array",
|
|
1589
|
+
"items": {
|
|
1590
|
+
"type": "string"
|
|
1591
|
+
}
|
|
1592
|
+
},
|
|
1593
|
+
"limitations": {
|
|
1594
|
+
"description": "Known limits of what this evidence shows, in the producer's words",
|
|
1595
|
+
"type": "array",
|
|
1596
|
+
"items": {
|
|
1597
|
+
"type": "string"
|
|
1598
|
+
}
|
|
1599
|
+
},
|
|
1600
|
+
"declaredBy": {
|
|
1601
|
+
"description": "Who or what made this declaration: a tool, a team, a person",
|
|
1602
|
+
"type": "string"
|
|
1603
|
+
},
|
|
1604
|
+
"verified": {
|
|
1605
|
+
"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",
|
|
1606
|
+
"type": "array",
|
|
1607
|
+
"items": {
|
|
1608
|
+
"type": "string"
|
|
1609
|
+
}
|
|
1610
|
+
},
|
|
1611
|
+
"verifiedBy": {
|
|
1612
|
+
"description": "What checked the `verified` fields",
|
|
1613
|
+
"type": "string"
|
|
1614
|
+
},
|
|
1615
|
+
"provenance": {
|
|
1616
|
+
"description": "Where the declaration comes from and how to check it: a document, a CI step, a device log",
|
|
1617
|
+
"type": "array",
|
|
1618
|
+
"items": {
|
|
1619
|
+
"type": "object",
|
|
1620
|
+
"properties": {
|
|
1621
|
+
"url": {
|
|
1622
|
+
"type": "string",
|
|
1623
|
+
"minLength": 1
|
|
1624
|
+
},
|
|
1625
|
+
"name": {
|
|
1626
|
+
"type": "string"
|
|
1627
|
+
},
|
|
1628
|
+
"rel": {
|
|
1629
|
+
"description": "Why it is linked, in an open vocabulary: issue, run, trace, docs, source…",
|
|
1630
|
+
"type": "string"
|
|
1631
|
+
}
|
|
1632
|
+
},
|
|
1633
|
+
"required": [
|
|
1634
|
+
"url"
|
|
1635
|
+
],
|
|
1636
|
+
"additionalProperties": {}
|
|
1637
|
+
}
|
|
1638
|
+
},
|
|
1639
|
+
"extensions": {
|
|
1640
|
+
"type": "object",
|
|
1641
|
+
"propertyNames": {
|
|
1642
|
+
"type": "string",
|
|
1643
|
+
"minLength": 1
|
|
1644
|
+
},
|
|
1645
|
+
"additionalProperties": {}
|
|
1646
|
+
}
|
|
1647
|
+
},
|
|
1648
|
+
"additionalProperties": {}
|
|
1649
|
+
},
|
|
1650
|
+
"tags": {
|
|
1651
|
+
"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",
|
|
1652
|
+
"type": "array",
|
|
1653
|
+
"items": {
|
|
1654
|
+
"type": "string"
|
|
1655
|
+
}
|
|
1656
|
+
},
|
|
1657
|
+
"at": {
|
|
1658
|
+
"type": "object",
|
|
1659
|
+
"properties": {
|
|
1660
|
+
"step": {
|
|
1661
|
+
"description": "The `id` of a step",
|
|
1662
|
+
"type": "string"
|
|
1663
|
+
},
|
|
1088
1664
|
"offsetMs": {
|
|
1089
1665
|
"type": "number",
|
|
1090
1666
|
"minimum": 0
|
|
@@ -1332,6 +1908,102 @@
|
|
|
1332
1908
|
"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\"",
|
|
1333
1909
|
"type": "string"
|
|
1334
1910
|
},
|
|
1911
|
+
"scope": {
|
|
1912
|
+
"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",
|
|
1913
|
+
"type": "object",
|
|
1914
|
+
"properties": {
|
|
1915
|
+
"surface": {
|
|
1916
|
+
"description": "Where the product ran, in an open vocabulary: `browser`, `native-app`, `api`, `cli`…",
|
|
1917
|
+
"type": "string",
|
|
1918
|
+
"minLength": 1
|
|
1919
|
+
},
|
|
1920
|
+
"deviceKind": {
|
|
1921
|
+
"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",
|
|
1922
|
+
"type": "string",
|
|
1923
|
+
"minLength": 1
|
|
1924
|
+
},
|
|
1925
|
+
"syntheticData": {
|
|
1926
|
+
"description": "True: the data was made up for the run. False: real data. Absent: unknown",
|
|
1927
|
+
"type": "boolean"
|
|
1928
|
+
},
|
|
1929
|
+
"dependencies": {
|
|
1930
|
+
"description": "Whether what the product talks to was `scripted` (replies fixed in advance), `live` or `mixed`. An open vocabulary; absent is unknown",
|
|
1931
|
+
"type": "string",
|
|
1932
|
+
"minLength": 1
|
|
1933
|
+
},
|
|
1934
|
+
"audioCaptured": {
|
|
1935
|
+
"description": "True: the recording has real audio. False: it is silent. Absent: unknown",
|
|
1936
|
+
"type": "boolean"
|
|
1937
|
+
},
|
|
1938
|
+
"pacing": {
|
|
1939
|
+
"description": "How time ran, in an open vocabulary: `paced` (slowed or scripted for a viewer), `real-time`. Absent: unknown",
|
|
1940
|
+
"type": "string",
|
|
1941
|
+
"minLength": 1
|
|
1942
|
+
},
|
|
1943
|
+
"asserted": {
|
|
1944
|
+
"description": "The boundaries the result actually asserts. Activity visible in a recording beyond them is not verified behavior",
|
|
1945
|
+
"type": "array",
|
|
1946
|
+
"items": {
|
|
1947
|
+
"type": "string"
|
|
1948
|
+
}
|
|
1949
|
+
},
|
|
1950
|
+
"limitations": {
|
|
1951
|
+
"description": "Known limits of what this evidence shows, in the producer's words",
|
|
1952
|
+
"type": "array",
|
|
1953
|
+
"items": {
|
|
1954
|
+
"type": "string"
|
|
1955
|
+
}
|
|
1956
|
+
},
|
|
1957
|
+
"declaredBy": {
|
|
1958
|
+
"description": "Who or what made this declaration: a tool, a team, a person",
|
|
1959
|
+
"type": "string"
|
|
1960
|
+
},
|
|
1961
|
+
"verified": {
|
|
1962
|
+
"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",
|
|
1963
|
+
"type": "array",
|
|
1964
|
+
"items": {
|
|
1965
|
+
"type": "string"
|
|
1966
|
+
}
|
|
1967
|
+
},
|
|
1968
|
+
"verifiedBy": {
|
|
1969
|
+
"description": "What checked the `verified` fields",
|
|
1970
|
+
"type": "string"
|
|
1971
|
+
},
|
|
1972
|
+
"provenance": {
|
|
1973
|
+
"description": "Where the declaration comes from and how to check it: a document, a CI step, a device log",
|
|
1974
|
+
"type": "array",
|
|
1975
|
+
"items": {
|
|
1976
|
+
"type": "object",
|
|
1977
|
+
"properties": {
|
|
1978
|
+
"url": {
|
|
1979
|
+
"type": "string",
|
|
1980
|
+
"minLength": 1
|
|
1981
|
+
},
|
|
1982
|
+
"name": {
|
|
1983
|
+
"type": "string"
|
|
1984
|
+
},
|
|
1985
|
+
"rel": {
|
|
1986
|
+
"description": "Why it is linked, in an open vocabulary: issue, run, trace, docs, source…",
|
|
1987
|
+
"type": "string"
|
|
1988
|
+
}
|
|
1989
|
+
},
|
|
1990
|
+
"required": [
|
|
1991
|
+
"url"
|
|
1992
|
+
],
|
|
1993
|
+
"additionalProperties": {}
|
|
1994
|
+
}
|
|
1995
|
+
},
|
|
1996
|
+
"extensions": {
|
|
1997
|
+
"type": "object",
|
|
1998
|
+
"propertyNames": {
|
|
1999
|
+
"type": "string",
|
|
2000
|
+
"minLength": 1
|
|
2001
|
+
},
|
|
2002
|
+
"additionalProperties": {}
|
|
2003
|
+
}
|
|
2004
|
+
},
|
|
2005
|
+
"additionalProperties": {}
|
|
2006
|
+
},
|
|
1335
2007
|
"tags": {
|
|
1336
2008
|
"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",
|
|
1337
2009
|
"type": "array",
|
|
@@ -1468,6 +2140,102 @@
|
|
|
1468
2140
|
"additionalProperties": {}
|
|
1469
2141
|
}
|
|
1470
2142
|
},
|
|
2143
|
+
"scope": {
|
|
2144
|
+
"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",
|
|
2145
|
+
"type": "object",
|
|
2146
|
+
"properties": {
|
|
2147
|
+
"surface": {
|
|
2148
|
+
"description": "Where the product ran, in an open vocabulary: `browser`, `native-app`, `api`, `cli`…",
|
|
2149
|
+
"type": "string",
|
|
2150
|
+
"minLength": 1
|
|
2151
|
+
},
|
|
2152
|
+
"deviceKind": {
|
|
2153
|
+
"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",
|
|
2154
|
+
"type": "string",
|
|
2155
|
+
"minLength": 1
|
|
2156
|
+
},
|
|
2157
|
+
"syntheticData": {
|
|
2158
|
+
"description": "True: the data was made up for the run. False: real data. Absent: unknown",
|
|
2159
|
+
"type": "boolean"
|
|
2160
|
+
},
|
|
2161
|
+
"dependencies": {
|
|
2162
|
+
"description": "Whether what the product talks to was `scripted` (replies fixed in advance), `live` or `mixed`. An open vocabulary; absent is unknown",
|
|
2163
|
+
"type": "string",
|
|
2164
|
+
"minLength": 1
|
|
2165
|
+
},
|
|
2166
|
+
"audioCaptured": {
|
|
2167
|
+
"description": "True: the recording has real audio. False: it is silent. Absent: unknown",
|
|
2168
|
+
"type": "boolean"
|
|
2169
|
+
},
|
|
2170
|
+
"pacing": {
|
|
2171
|
+
"description": "How time ran, in an open vocabulary: `paced` (slowed or scripted for a viewer), `real-time`. Absent: unknown",
|
|
2172
|
+
"type": "string",
|
|
2173
|
+
"minLength": 1
|
|
2174
|
+
},
|
|
2175
|
+
"asserted": {
|
|
2176
|
+
"description": "The boundaries the result actually asserts. Activity visible in a recording beyond them is not verified behavior",
|
|
2177
|
+
"type": "array",
|
|
2178
|
+
"items": {
|
|
2179
|
+
"type": "string"
|
|
2180
|
+
}
|
|
2181
|
+
},
|
|
2182
|
+
"limitations": {
|
|
2183
|
+
"description": "Known limits of what this evidence shows, in the producer's words",
|
|
2184
|
+
"type": "array",
|
|
2185
|
+
"items": {
|
|
2186
|
+
"type": "string"
|
|
2187
|
+
}
|
|
2188
|
+
},
|
|
2189
|
+
"declaredBy": {
|
|
2190
|
+
"description": "Who or what made this declaration: a tool, a team, a person",
|
|
2191
|
+
"type": "string"
|
|
2192
|
+
},
|
|
2193
|
+
"verified": {
|
|
2194
|
+
"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",
|
|
2195
|
+
"type": "array",
|
|
2196
|
+
"items": {
|
|
2197
|
+
"type": "string"
|
|
2198
|
+
}
|
|
2199
|
+
},
|
|
2200
|
+
"verifiedBy": {
|
|
2201
|
+
"description": "What checked the `verified` fields",
|
|
2202
|
+
"type": "string"
|
|
2203
|
+
},
|
|
2204
|
+
"provenance": {
|
|
2205
|
+
"description": "Where the declaration comes from and how to check it: a document, a CI step, a device log",
|
|
2206
|
+
"type": "array",
|
|
2207
|
+
"items": {
|
|
2208
|
+
"type": "object",
|
|
2209
|
+
"properties": {
|
|
2210
|
+
"url": {
|
|
2211
|
+
"type": "string",
|
|
2212
|
+
"minLength": 1
|
|
2213
|
+
},
|
|
2214
|
+
"name": {
|
|
2215
|
+
"type": "string"
|
|
2216
|
+
},
|
|
2217
|
+
"rel": {
|
|
2218
|
+
"description": "Why it is linked, in an open vocabulary: issue, run, trace, docs, source…",
|
|
2219
|
+
"type": "string"
|
|
2220
|
+
}
|
|
2221
|
+
},
|
|
2222
|
+
"required": [
|
|
2223
|
+
"url"
|
|
2224
|
+
],
|
|
2225
|
+
"additionalProperties": {}
|
|
2226
|
+
}
|
|
2227
|
+
},
|
|
2228
|
+
"extensions": {
|
|
2229
|
+
"type": "object",
|
|
2230
|
+
"propertyNames": {
|
|
2231
|
+
"type": "string",
|
|
2232
|
+
"minLength": 1
|
|
2233
|
+
},
|
|
2234
|
+
"additionalProperties": {}
|
|
2235
|
+
}
|
|
2236
|
+
},
|
|
2237
|
+
"additionalProperties": {}
|
|
2238
|
+
},
|
|
1471
2239
|
"extensions": {
|
|
1472
2240
|
"type": "object",
|
|
1473
2241
|
"propertyNames": {
|
|
@@ -1708,6 +2476,102 @@
|
|
|
1708
2476
|
"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\"",
|
|
1709
2477
|
"type": "string"
|
|
1710
2478
|
},
|
|
2479
|
+
"scope": {
|
|
2480
|
+
"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",
|
|
2481
|
+
"type": "object",
|
|
2482
|
+
"properties": {
|
|
2483
|
+
"surface": {
|
|
2484
|
+
"description": "Where the product ran, in an open vocabulary: `browser`, `native-app`, `api`, `cli`…",
|
|
2485
|
+
"type": "string",
|
|
2486
|
+
"minLength": 1
|
|
2487
|
+
},
|
|
2488
|
+
"deviceKind": {
|
|
2489
|
+
"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",
|
|
2490
|
+
"type": "string",
|
|
2491
|
+
"minLength": 1
|
|
2492
|
+
},
|
|
2493
|
+
"syntheticData": {
|
|
2494
|
+
"description": "True: the data was made up for the run. False: real data. Absent: unknown",
|
|
2495
|
+
"type": "boolean"
|
|
2496
|
+
},
|
|
2497
|
+
"dependencies": {
|
|
2498
|
+
"description": "Whether what the product talks to was `scripted` (replies fixed in advance), `live` or `mixed`. An open vocabulary; absent is unknown",
|
|
2499
|
+
"type": "string",
|
|
2500
|
+
"minLength": 1
|
|
2501
|
+
},
|
|
2502
|
+
"audioCaptured": {
|
|
2503
|
+
"description": "True: the recording has real audio. False: it is silent. Absent: unknown",
|
|
2504
|
+
"type": "boolean"
|
|
2505
|
+
},
|
|
2506
|
+
"pacing": {
|
|
2507
|
+
"description": "How time ran, in an open vocabulary: `paced` (slowed or scripted for a viewer), `real-time`. Absent: unknown",
|
|
2508
|
+
"type": "string",
|
|
2509
|
+
"minLength": 1
|
|
2510
|
+
},
|
|
2511
|
+
"asserted": {
|
|
2512
|
+
"description": "The boundaries the result actually asserts. Activity visible in a recording beyond them is not verified behavior",
|
|
2513
|
+
"type": "array",
|
|
2514
|
+
"items": {
|
|
2515
|
+
"type": "string"
|
|
2516
|
+
}
|
|
2517
|
+
},
|
|
2518
|
+
"limitations": {
|
|
2519
|
+
"description": "Known limits of what this evidence shows, in the producer's words",
|
|
2520
|
+
"type": "array",
|
|
2521
|
+
"items": {
|
|
2522
|
+
"type": "string"
|
|
2523
|
+
}
|
|
2524
|
+
},
|
|
2525
|
+
"declaredBy": {
|
|
2526
|
+
"description": "Who or what made this declaration: a tool, a team, a person",
|
|
2527
|
+
"type": "string"
|
|
2528
|
+
},
|
|
2529
|
+
"verified": {
|
|
2530
|
+
"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",
|
|
2531
|
+
"type": "array",
|
|
2532
|
+
"items": {
|
|
2533
|
+
"type": "string"
|
|
2534
|
+
}
|
|
2535
|
+
},
|
|
2536
|
+
"verifiedBy": {
|
|
2537
|
+
"description": "What checked the `verified` fields",
|
|
2538
|
+
"type": "string"
|
|
2539
|
+
},
|
|
2540
|
+
"provenance": {
|
|
2541
|
+
"description": "Where the declaration comes from and how to check it: a document, a CI step, a device log",
|
|
2542
|
+
"type": "array",
|
|
2543
|
+
"items": {
|
|
2544
|
+
"type": "object",
|
|
2545
|
+
"properties": {
|
|
2546
|
+
"url": {
|
|
2547
|
+
"type": "string",
|
|
2548
|
+
"minLength": 1
|
|
2549
|
+
},
|
|
2550
|
+
"name": {
|
|
2551
|
+
"type": "string"
|
|
2552
|
+
},
|
|
2553
|
+
"rel": {
|
|
2554
|
+
"description": "Why it is linked, in an open vocabulary: issue, run, trace, docs, source…",
|
|
2555
|
+
"type": "string"
|
|
2556
|
+
}
|
|
2557
|
+
},
|
|
2558
|
+
"required": [
|
|
2559
|
+
"url"
|
|
2560
|
+
],
|
|
2561
|
+
"additionalProperties": {}
|
|
2562
|
+
}
|
|
2563
|
+
},
|
|
2564
|
+
"extensions": {
|
|
2565
|
+
"type": "object",
|
|
2566
|
+
"propertyNames": {
|
|
2567
|
+
"type": "string",
|
|
2568
|
+
"minLength": 1
|
|
2569
|
+
},
|
|
2570
|
+
"additionalProperties": {}
|
|
2571
|
+
}
|
|
2572
|
+
},
|
|
2573
|
+
"additionalProperties": {}
|
|
2574
|
+
},
|
|
1711
2575
|
"tags": {
|
|
1712
2576
|
"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",
|
|
1713
2577
|
"type": "array",
|
|
@@ -1844,6 +2708,102 @@
|
|
|
1844
2708
|
"additionalProperties": {}
|
|
1845
2709
|
}
|
|
1846
2710
|
},
|
|
2711
|
+
"scope": {
|
|
2712
|
+
"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",
|
|
2713
|
+
"type": "object",
|
|
2714
|
+
"properties": {
|
|
2715
|
+
"surface": {
|
|
2716
|
+
"description": "Where the product ran, in an open vocabulary: `browser`, `native-app`, `api`, `cli`…",
|
|
2717
|
+
"type": "string",
|
|
2718
|
+
"minLength": 1
|
|
2719
|
+
},
|
|
2720
|
+
"deviceKind": {
|
|
2721
|
+
"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",
|
|
2722
|
+
"type": "string",
|
|
2723
|
+
"minLength": 1
|
|
2724
|
+
},
|
|
2725
|
+
"syntheticData": {
|
|
2726
|
+
"description": "True: the data was made up for the run. False: real data. Absent: unknown",
|
|
2727
|
+
"type": "boolean"
|
|
2728
|
+
},
|
|
2729
|
+
"dependencies": {
|
|
2730
|
+
"description": "Whether what the product talks to was `scripted` (replies fixed in advance), `live` or `mixed`. An open vocabulary; absent is unknown",
|
|
2731
|
+
"type": "string",
|
|
2732
|
+
"minLength": 1
|
|
2733
|
+
},
|
|
2734
|
+
"audioCaptured": {
|
|
2735
|
+
"description": "True: the recording has real audio. False: it is silent. Absent: unknown",
|
|
2736
|
+
"type": "boolean"
|
|
2737
|
+
},
|
|
2738
|
+
"pacing": {
|
|
2739
|
+
"description": "How time ran, in an open vocabulary: `paced` (slowed or scripted for a viewer), `real-time`. Absent: unknown",
|
|
2740
|
+
"type": "string",
|
|
2741
|
+
"minLength": 1
|
|
2742
|
+
},
|
|
2743
|
+
"asserted": {
|
|
2744
|
+
"description": "The boundaries the result actually asserts. Activity visible in a recording beyond them is not verified behavior",
|
|
2745
|
+
"type": "array",
|
|
2746
|
+
"items": {
|
|
2747
|
+
"type": "string"
|
|
2748
|
+
}
|
|
2749
|
+
},
|
|
2750
|
+
"limitations": {
|
|
2751
|
+
"description": "Known limits of what this evidence shows, in the producer's words",
|
|
2752
|
+
"type": "array",
|
|
2753
|
+
"items": {
|
|
2754
|
+
"type": "string"
|
|
2755
|
+
}
|
|
2756
|
+
},
|
|
2757
|
+
"declaredBy": {
|
|
2758
|
+
"description": "Who or what made this declaration: a tool, a team, a person",
|
|
2759
|
+
"type": "string"
|
|
2760
|
+
},
|
|
2761
|
+
"verified": {
|
|
2762
|
+
"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",
|
|
2763
|
+
"type": "array",
|
|
2764
|
+
"items": {
|
|
2765
|
+
"type": "string"
|
|
2766
|
+
}
|
|
2767
|
+
},
|
|
2768
|
+
"verifiedBy": {
|
|
2769
|
+
"description": "What checked the `verified` fields",
|
|
2770
|
+
"type": "string"
|
|
2771
|
+
},
|
|
2772
|
+
"provenance": {
|
|
2773
|
+
"description": "Where the declaration comes from and how to check it: a document, a CI step, a device log",
|
|
2774
|
+
"type": "array",
|
|
2775
|
+
"items": {
|
|
2776
|
+
"type": "object",
|
|
2777
|
+
"properties": {
|
|
2778
|
+
"url": {
|
|
2779
|
+
"type": "string",
|
|
2780
|
+
"minLength": 1
|
|
2781
|
+
},
|
|
2782
|
+
"name": {
|
|
2783
|
+
"type": "string"
|
|
2784
|
+
},
|
|
2785
|
+
"rel": {
|
|
2786
|
+
"description": "Why it is linked, in an open vocabulary: issue, run, trace, docs, source…",
|
|
2787
|
+
"type": "string"
|
|
2788
|
+
}
|
|
2789
|
+
},
|
|
2790
|
+
"required": [
|
|
2791
|
+
"url"
|
|
2792
|
+
],
|
|
2793
|
+
"additionalProperties": {}
|
|
2794
|
+
}
|
|
2795
|
+
},
|
|
2796
|
+
"extensions": {
|
|
2797
|
+
"type": "object",
|
|
2798
|
+
"propertyNames": {
|
|
2799
|
+
"type": "string",
|
|
2800
|
+
"minLength": 1
|
|
2801
|
+
},
|
|
2802
|
+
"additionalProperties": {}
|
|
2803
|
+
}
|
|
2804
|
+
},
|
|
2805
|
+
"additionalProperties": {}
|
|
2806
|
+
},
|
|
1847
2807
|
"extensions": {
|
|
1848
2808
|
"type": "object",
|
|
1849
2809
|
"propertyNames": {
|
|
@@ -1947,6 +2907,102 @@
|
|
|
1947
2907
|
"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\"",
|
|
1948
2908
|
"type": "string"
|
|
1949
2909
|
},
|
|
2910
|
+
"scope": {
|
|
2911
|
+
"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",
|
|
2912
|
+
"type": "object",
|
|
2913
|
+
"properties": {
|
|
2914
|
+
"surface": {
|
|
2915
|
+
"description": "Where the product ran, in an open vocabulary: `browser`, `native-app`, `api`, `cli`…",
|
|
2916
|
+
"type": "string",
|
|
2917
|
+
"minLength": 1
|
|
2918
|
+
},
|
|
2919
|
+
"deviceKind": {
|
|
2920
|
+
"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",
|
|
2921
|
+
"type": "string",
|
|
2922
|
+
"minLength": 1
|
|
2923
|
+
},
|
|
2924
|
+
"syntheticData": {
|
|
2925
|
+
"description": "True: the data was made up for the run. False: real data. Absent: unknown",
|
|
2926
|
+
"type": "boolean"
|
|
2927
|
+
},
|
|
2928
|
+
"dependencies": {
|
|
2929
|
+
"description": "Whether what the product talks to was `scripted` (replies fixed in advance), `live` or `mixed`. An open vocabulary; absent is unknown",
|
|
2930
|
+
"type": "string",
|
|
2931
|
+
"minLength": 1
|
|
2932
|
+
},
|
|
2933
|
+
"audioCaptured": {
|
|
2934
|
+
"description": "True: the recording has real audio. False: it is silent. Absent: unknown",
|
|
2935
|
+
"type": "boolean"
|
|
2936
|
+
},
|
|
2937
|
+
"pacing": {
|
|
2938
|
+
"description": "How time ran, in an open vocabulary: `paced` (slowed or scripted for a viewer), `real-time`. Absent: unknown",
|
|
2939
|
+
"type": "string",
|
|
2940
|
+
"minLength": 1
|
|
2941
|
+
},
|
|
2942
|
+
"asserted": {
|
|
2943
|
+
"description": "The boundaries the result actually asserts. Activity visible in a recording beyond them is not verified behavior",
|
|
2944
|
+
"type": "array",
|
|
2945
|
+
"items": {
|
|
2946
|
+
"type": "string"
|
|
2947
|
+
}
|
|
2948
|
+
},
|
|
2949
|
+
"limitations": {
|
|
2950
|
+
"description": "Known limits of what this evidence shows, in the producer's words",
|
|
2951
|
+
"type": "array",
|
|
2952
|
+
"items": {
|
|
2953
|
+
"type": "string"
|
|
2954
|
+
}
|
|
2955
|
+
},
|
|
2956
|
+
"declaredBy": {
|
|
2957
|
+
"description": "Who or what made this declaration: a tool, a team, a person",
|
|
2958
|
+
"type": "string"
|
|
2959
|
+
},
|
|
2960
|
+
"verified": {
|
|
2961
|
+
"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",
|
|
2962
|
+
"type": "array",
|
|
2963
|
+
"items": {
|
|
2964
|
+
"type": "string"
|
|
2965
|
+
}
|
|
2966
|
+
},
|
|
2967
|
+
"verifiedBy": {
|
|
2968
|
+
"description": "What checked the `verified` fields",
|
|
2969
|
+
"type": "string"
|
|
2970
|
+
},
|
|
2971
|
+
"provenance": {
|
|
2972
|
+
"description": "Where the declaration comes from and how to check it: a document, a CI step, a device log",
|
|
2973
|
+
"type": "array",
|
|
2974
|
+
"items": {
|
|
2975
|
+
"type": "object",
|
|
2976
|
+
"properties": {
|
|
2977
|
+
"url": {
|
|
2978
|
+
"type": "string",
|
|
2979
|
+
"minLength": 1
|
|
2980
|
+
},
|
|
2981
|
+
"name": {
|
|
2982
|
+
"type": "string"
|
|
2983
|
+
},
|
|
2984
|
+
"rel": {
|
|
2985
|
+
"description": "Why it is linked, in an open vocabulary: issue, run, trace, docs, source…",
|
|
2986
|
+
"type": "string"
|
|
2987
|
+
}
|
|
2988
|
+
},
|
|
2989
|
+
"required": [
|
|
2990
|
+
"url"
|
|
2991
|
+
],
|
|
2992
|
+
"additionalProperties": {}
|
|
2993
|
+
}
|
|
2994
|
+
},
|
|
2995
|
+
"extensions": {
|
|
2996
|
+
"type": "object",
|
|
2997
|
+
"propertyNames": {
|
|
2998
|
+
"type": "string",
|
|
2999
|
+
"minLength": 1
|
|
3000
|
+
},
|
|
3001
|
+
"additionalProperties": {}
|
|
3002
|
+
}
|
|
3003
|
+
},
|
|
3004
|
+
"additionalProperties": {}
|
|
3005
|
+
},
|
|
1950
3006
|
"tags": {
|
|
1951
3007
|
"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",
|
|
1952
3008
|
"type": "array",
|
|
@@ -2076,58 +3132,154 @@
|
|
|
2076
3132
|
"additionalProperties": {}
|
|
2077
3133
|
}
|
|
2078
3134
|
},
|
|
2079
|
-
"required": [
|
|
2080
|
-
"type",
|
|
2081
|
-
"message"
|
|
2082
|
-
],
|
|
2083
|
-
"additionalProperties": {}
|
|
2084
|
-
}
|
|
2085
|
-
},
|
|
2086
|
-
"extensions": {
|
|
2087
|
-
"type": "object",
|
|
2088
|
-
"propertyNames": {
|
|
2089
|
-
"type": "string",
|
|
2090
|
-
"minLength": 1
|
|
3135
|
+
"required": [
|
|
3136
|
+
"type",
|
|
3137
|
+
"message"
|
|
3138
|
+
],
|
|
3139
|
+
"additionalProperties": {}
|
|
3140
|
+
}
|
|
3141
|
+
},
|
|
3142
|
+
"extensions": {
|
|
3143
|
+
"type": "object",
|
|
3144
|
+
"propertyNames": {
|
|
3145
|
+
"type": "string",
|
|
3146
|
+
"minLength": 1
|
|
3147
|
+
},
|
|
3148
|
+
"additionalProperties": {}
|
|
3149
|
+
}
|
|
3150
|
+
},
|
|
3151
|
+
"required": [
|
|
3152
|
+
"name"
|
|
3153
|
+
],
|
|
3154
|
+
"additionalProperties": {}
|
|
3155
|
+
}
|
|
3156
|
+
},
|
|
3157
|
+
"attempts": {
|
|
3158
|
+
"description": "Every try, when the check was retried",
|
|
3159
|
+
"type": "array",
|
|
3160
|
+
"items": {
|
|
3161
|
+
"type": "object",
|
|
3162
|
+
"properties": {
|
|
3163
|
+
"index": {
|
|
3164
|
+
"type": "integer",
|
|
3165
|
+
"minimum": 0,
|
|
3166
|
+
"maximum": 9007199254740991
|
|
3167
|
+
},
|
|
3168
|
+
"status": {
|
|
3169
|
+
"type": "string",
|
|
3170
|
+
"enum": [
|
|
3171
|
+
"passed",
|
|
3172
|
+
"failed",
|
|
3173
|
+
"running",
|
|
3174
|
+
"not-run"
|
|
3175
|
+
]
|
|
3176
|
+
},
|
|
3177
|
+
"durationMs": {
|
|
3178
|
+
"type": "number",
|
|
3179
|
+
"minimum": 0
|
|
3180
|
+
},
|
|
3181
|
+
"startedAtMs": {
|
|
3182
|
+
"type": "number",
|
|
3183
|
+
"minimum": 0
|
|
3184
|
+
},
|
|
3185
|
+
"detail": {
|
|
3186
|
+
"type": "string"
|
|
3187
|
+
},
|
|
3188
|
+
"scope": {
|
|
3189
|
+
"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",
|
|
3190
|
+
"type": "object",
|
|
3191
|
+
"properties": {
|
|
3192
|
+
"surface": {
|
|
3193
|
+
"description": "Where the product ran, in an open vocabulary: `browser`, `native-app`, `api`, `cli`…",
|
|
3194
|
+
"type": "string",
|
|
3195
|
+
"minLength": 1
|
|
3196
|
+
},
|
|
3197
|
+
"deviceKind": {
|
|
3198
|
+
"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",
|
|
3199
|
+
"type": "string",
|
|
3200
|
+
"minLength": 1
|
|
3201
|
+
},
|
|
3202
|
+
"syntheticData": {
|
|
3203
|
+
"description": "True: the data was made up for the run. False: real data. Absent: unknown",
|
|
3204
|
+
"type": "boolean"
|
|
3205
|
+
},
|
|
3206
|
+
"dependencies": {
|
|
3207
|
+
"description": "Whether what the product talks to was `scripted` (replies fixed in advance), `live` or `mixed`. An open vocabulary; absent is unknown",
|
|
3208
|
+
"type": "string",
|
|
3209
|
+
"minLength": 1
|
|
3210
|
+
},
|
|
3211
|
+
"audioCaptured": {
|
|
3212
|
+
"description": "True: the recording has real audio. False: it is silent. Absent: unknown",
|
|
3213
|
+
"type": "boolean"
|
|
3214
|
+
},
|
|
3215
|
+
"pacing": {
|
|
3216
|
+
"description": "How time ran, in an open vocabulary: `paced` (slowed or scripted for a viewer), `real-time`. Absent: unknown",
|
|
3217
|
+
"type": "string",
|
|
3218
|
+
"minLength": 1
|
|
3219
|
+
},
|
|
3220
|
+
"asserted": {
|
|
3221
|
+
"description": "The boundaries the result actually asserts. Activity visible in a recording beyond them is not verified behavior",
|
|
3222
|
+
"type": "array",
|
|
3223
|
+
"items": {
|
|
3224
|
+
"type": "string"
|
|
3225
|
+
}
|
|
3226
|
+
},
|
|
3227
|
+
"limitations": {
|
|
3228
|
+
"description": "Known limits of what this evidence shows, in the producer's words",
|
|
3229
|
+
"type": "array",
|
|
3230
|
+
"items": {
|
|
3231
|
+
"type": "string"
|
|
3232
|
+
}
|
|
3233
|
+
},
|
|
3234
|
+
"declaredBy": {
|
|
3235
|
+
"description": "Who or what made this declaration: a tool, a team, a person",
|
|
3236
|
+
"type": "string"
|
|
3237
|
+
},
|
|
3238
|
+
"verified": {
|
|
3239
|
+
"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",
|
|
3240
|
+
"type": "array",
|
|
3241
|
+
"items": {
|
|
3242
|
+
"type": "string"
|
|
3243
|
+
}
|
|
3244
|
+
},
|
|
3245
|
+
"verifiedBy": {
|
|
3246
|
+
"description": "What checked the `verified` fields",
|
|
3247
|
+
"type": "string"
|
|
3248
|
+
},
|
|
3249
|
+
"provenance": {
|
|
3250
|
+
"description": "Where the declaration comes from and how to check it: a document, a CI step, a device log",
|
|
3251
|
+
"type": "array",
|
|
3252
|
+
"items": {
|
|
3253
|
+
"type": "object",
|
|
3254
|
+
"properties": {
|
|
3255
|
+
"url": {
|
|
3256
|
+
"type": "string",
|
|
3257
|
+
"minLength": 1
|
|
3258
|
+
},
|
|
3259
|
+
"name": {
|
|
3260
|
+
"type": "string"
|
|
3261
|
+
},
|
|
3262
|
+
"rel": {
|
|
3263
|
+
"description": "Why it is linked, in an open vocabulary: issue, run, trace, docs, source…",
|
|
3264
|
+
"type": "string"
|
|
3265
|
+
}
|
|
3266
|
+
},
|
|
3267
|
+
"required": [
|
|
3268
|
+
"url"
|
|
3269
|
+
],
|
|
3270
|
+
"additionalProperties": {}
|
|
3271
|
+
}
|
|
3272
|
+
},
|
|
3273
|
+
"extensions": {
|
|
3274
|
+
"type": "object",
|
|
3275
|
+
"propertyNames": {
|
|
3276
|
+
"type": "string",
|
|
3277
|
+
"minLength": 1
|
|
3278
|
+
},
|
|
3279
|
+
"additionalProperties": {}
|
|
3280
|
+
}
|
|
2091
3281
|
},
|
|
2092
3282
|
"additionalProperties": {}
|
|
2093
|
-
}
|
|
2094
|
-
},
|
|
2095
|
-
"required": [
|
|
2096
|
-
"name"
|
|
2097
|
-
],
|
|
2098
|
-
"additionalProperties": {}
|
|
2099
|
-
}
|
|
2100
|
-
},
|
|
2101
|
-
"attempts": {
|
|
2102
|
-
"description": "Every try, when the check was retried",
|
|
2103
|
-
"type": "array",
|
|
2104
|
-
"items": {
|
|
2105
|
-
"type": "object",
|
|
2106
|
-
"properties": {
|
|
2107
|
-
"index": {
|
|
2108
|
-
"type": "integer",
|
|
2109
|
-
"minimum": 0,
|
|
2110
|
-
"maximum": 9007199254740991
|
|
2111
|
-
},
|
|
2112
|
-
"status": {
|
|
2113
|
-
"type": "string",
|
|
2114
|
-
"enum": [
|
|
2115
|
-
"passed",
|
|
2116
|
-
"failed",
|
|
2117
|
-
"running",
|
|
2118
|
-
"not-run"
|
|
2119
|
-
]
|
|
2120
|
-
},
|
|
2121
|
-
"durationMs": {
|
|
2122
|
-
"type": "number",
|
|
2123
|
-
"minimum": 0
|
|
2124
|
-
},
|
|
2125
|
-
"startedAtMs": {
|
|
2126
|
-
"type": "number",
|
|
2127
|
-
"minimum": 0
|
|
2128
|
-
},
|
|
2129
|
-
"detail": {
|
|
2130
|
-
"type": "string"
|
|
2131
3283
|
},
|
|
2132
3284
|
"steps": {
|
|
2133
3285
|
"type": "array",
|
|
@@ -2223,6 +3375,102 @@
|
|
|
2223
3375
|
"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\"",
|
|
2224
3376
|
"type": "string"
|
|
2225
3377
|
},
|
|
3378
|
+
"scope": {
|
|
3379
|
+
"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",
|
|
3380
|
+
"type": "object",
|
|
3381
|
+
"properties": {
|
|
3382
|
+
"surface": {
|
|
3383
|
+
"description": "Where the product ran, in an open vocabulary: `browser`, `native-app`, `api`, `cli`…",
|
|
3384
|
+
"type": "string",
|
|
3385
|
+
"minLength": 1
|
|
3386
|
+
},
|
|
3387
|
+
"deviceKind": {
|
|
3388
|
+
"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",
|
|
3389
|
+
"type": "string",
|
|
3390
|
+
"minLength": 1
|
|
3391
|
+
},
|
|
3392
|
+
"syntheticData": {
|
|
3393
|
+
"description": "True: the data was made up for the run. False: real data. Absent: unknown",
|
|
3394
|
+
"type": "boolean"
|
|
3395
|
+
},
|
|
3396
|
+
"dependencies": {
|
|
3397
|
+
"description": "Whether what the product talks to was `scripted` (replies fixed in advance), `live` or `mixed`. An open vocabulary; absent is unknown",
|
|
3398
|
+
"type": "string",
|
|
3399
|
+
"minLength": 1
|
|
3400
|
+
},
|
|
3401
|
+
"audioCaptured": {
|
|
3402
|
+
"description": "True: the recording has real audio. False: it is silent. Absent: unknown",
|
|
3403
|
+
"type": "boolean"
|
|
3404
|
+
},
|
|
3405
|
+
"pacing": {
|
|
3406
|
+
"description": "How time ran, in an open vocabulary: `paced` (slowed or scripted for a viewer), `real-time`. Absent: unknown",
|
|
3407
|
+
"type": "string",
|
|
3408
|
+
"minLength": 1
|
|
3409
|
+
},
|
|
3410
|
+
"asserted": {
|
|
3411
|
+
"description": "The boundaries the result actually asserts. Activity visible in a recording beyond them is not verified behavior",
|
|
3412
|
+
"type": "array",
|
|
3413
|
+
"items": {
|
|
3414
|
+
"type": "string"
|
|
3415
|
+
}
|
|
3416
|
+
},
|
|
3417
|
+
"limitations": {
|
|
3418
|
+
"description": "Known limits of what this evidence shows, in the producer's words",
|
|
3419
|
+
"type": "array",
|
|
3420
|
+
"items": {
|
|
3421
|
+
"type": "string"
|
|
3422
|
+
}
|
|
3423
|
+
},
|
|
3424
|
+
"declaredBy": {
|
|
3425
|
+
"description": "Who or what made this declaration: a tool, a team, a person",
|
|
3426
|
+
"type": "string"
|
|
3427
|
+
},
|
|
3428
|
+
"verified": {
|
|
3429
|
+
"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",
|
|
3430
|
+
"type": "array",
|
|
3431
|
+
"items": {
|
|
3432
|
+
"type": "string"
|
|
3433
|
+
}
|
|
3434
|
+
},
|
|
3435
|
+
"verifiedBy": {
|
|
3436
|
+
"description": "What checked the `verified` fields",
|
|
3437
|
+
"type": "string"
|
|
3438
|
+
},
|
|
3439
|
+
"provenance": {
|
|
3440
|
+
"description": "Where the declaration comes from and how to check it: a document, a CI step, a device log",
|
|
3441
|
+
"type": "array",
|
|
3442
|
+
"items": {
|
|
3443
|
+
"type": "object",
|
|
3444
|
+
"properties": {
|
|
3445
|
+
"url": {
|
|
3446
|
+
"type": "string",
|
|
3447
|
+
"minLength": 1
|
|
3448
|
+
},
|
|
3449
|
+
"name": {
|
|
3450
|
+
"type": "string"
|
|
3451
|
+
},
|
|
3452
|
+
"rel": {
|
|
3453
|
+
"description": "Why it is linked, in an open vocabulary: issue, run, trace, docs, source…",
|
|
3454
|
+
"type": "string"
|
|
3455
|
+
}
|
|
3456
|
+
},
|
|
3457
|
+
"required": [
|
|
3458
|
+
"url"
|
|
3459
|
+
],
|
|
3460
|
+
"additionalProperties": {}
|
|
3461
|
+
}
|
|
3462
|
+
},
|
|
3463
|
+
"extensions": {
|
|
3464
|
+
"type": "object",
|
|
3465
|
+
"propertyNames": {
|
|
3466
|
+
"type": "string",
|
|
3467
|
+
"minLength": 1
|
|
3468
|
+
},
|
|
3469
|
+
"additionalProperties": {}
|
|
3470
|
+
}
|
|
3471
|
+
},
|
|
3472
|
+
"additionalProperties": {}
|
|
3473
|
+
},
|
|
2226
3474
|
"tags": {
|
|
2227
3475
|
"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",
|
|
2228
3476
|
"type": "array",
|
|
@@ -2434,6 +3682,102 @@
|
|
|
2434
3682
|
"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\"",
|
|
2435
3683
|
"type": "string"
|
|
2436
3684
|
},
|
|
3685
|
+
"scope": {
|
|
3686
|
+
"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",
|
|
3687
|
+
"type": "object",
|
|
3688
|
+
"properties": {
|
|
3689
|
+
"surface": {
|
|
3690
|
+
"description": "Where the product ran, in an open vocabulary: `browser`, `native-app`, `api`, `cli`…",
|
|
3691
|
+
"type": "string",
|
|
3692
|
+
"minLength": 1
|
|
3693
|
+
},
|
|
3694
|
+
"deviceKind": {
|
|
3695
|
+
"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",
|
|
3696
|
+
"type": "string",
|
|
3697
|
+
"minLength": 1
|
|
3698
|
+
},
|
|
3699
|
+
"syntheticData": {
|
|
3700
|
+
"description": "True: the data was made up for the run. False: real data. Absent: unknown",
|
|
3701
|
+
"type": "boolean"
|
|
3702
|
+
},
|
|
3703
|
+
"dependencies": {
|
|
3704
|
+
"description": "Whether what the product talks to was `scripted` (replies fixed in advance), `live` or `mixed`. An open vocabulary; absent is unknown",
|
|
3705
|
+
"type": "string",
|
|
3706
|
+
"minLength": 1
|
|
3707
|
+
},
|
|
3708
|
+
"audioCaptured": {
|
|
3709
|
+
"description": "True: the recording has real audio. False: it is silent. Absent: unknown",
|
|
3710
|
+
"type": "boolean"
|
|
3711
|
+
},
|
|
3712
|
+
"pacing": {
|
|
3713
|
+
"description": "How time ran, in an open vocabulary: `paced` (slowed or scripted for a viewer), `real-time`. Absent: unknown",
|
|
3714
|
+
"type": "string",
|
|
3715
|
+
"minLength": 1
|
|
3716
|
+
},
|
|
3717
|
+
"asserted": {
|
|
3718
|
+
"description": "The boundaries the result actually asserts. Activity visible in a recording beyond them is not verified behavior",
|
|
3719
|
+
"type": "array",
|
|
3720
|
+
"items": {
|
|
3721
|
+
"type": "string"
|
|
3722
|
+
}
|
|
3723
|
+
},
|
|
3724
|
+
"limitations": {
|
|
3725
|
+
"description": "Known limits of what this evidence shows, in the producer's words",
|
|
3726
|
+
"type": "array",
|
|
3727
|
+
"items": {
|
|
3728
|
+
"type": "string"
|
|
3729
|
+
}
|
|
3730
|
+
},
|
|
3731
|
+
"declaredBy": {
|
|
3732
|
+
"description": "Who or what made this declaration: a tool, a team, a person",
|
|
3733
|
+
"type": "string"
|
|
3734
|
+
},
|
|
3735
|
+
"verified": {
|
|
3736
|
+
"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",
|
|
3737
|
+
"type": "array",
|
|
3738
|
+
"items": {
|
|
3739
|
+
"type": "string"
|
|
3740
|
+
}
|
|
3741
|
+
},
|
|
3742
|
+
"verifiedBy": {
|
|
3743
|
+
"description": "What checked the `verified` fields",
|
|
3744
|
+
"type": "string"
|
|
3745
|
+
},
|
|
3746
|
+
"provenance": {
|
|
3747
|
+
"description": "Where the declaration comes from and how to check it: a document, a CI step, a device log",
|
|
3748
|
+
"type": "array",
|
|
3749
|
+
"items": {
|
|
3750
|
+
"type": "object",
|
|
3751
|
+
"properties": {
|
|
3752
|
+
"url": {
|
|
3753
|
+
"type": "string",
|
|
3754
|
+
"minLength": 1
|
|
3755
|
+
},
|
|
3756
|
+
"name": {
|
|
3757
|
+
"type": "string"
|
|
3758
|
+
},
|
|
3759
|
+
"rel": {
|
|
3760
|
+
"description": "Why it is linked, in an open vocabulary: issue, run, trace, docs, source…",
|
|
3761
|
+
"type": "string"
|
|
3762
|
+
}
|
|
3763
|
+
},
|
|
3764
|
+
"required": [
|
|
3765
|
+
"url"
|
|
3766
|
+
],
|
|
3767
|
+
"additionalProperties": {}
|
|
3768
|
+
}
|
|
3769
|
+
},
|
|
3770
|
+
"extensions": {
|
|
3771
|
+
"type": "object",
|
|
3772
|
+
"propertyNames": {
|
|
3773
|
+
"type": "string",
|
|
3774
|
+
"minLength": 1
|
|
3775
|
+
},
|
|
3776
|
+
"additionalProperties": {}
|
|
3777
|
+
}
|
|
3778
|
+
},
|
|
3779
|
+
"additionalProperties": {}
|
|
3780
|
+
},
|
|
2437
3781
|
"tags": {
|
|
2438
3782
|
"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",
|
|
2439
3783
|
"type": "array",
|
|
@@ -2966,6 +4310,102 @@
|
|
|
2966
4310
|
"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\"",
|
|
2967
4311
|
"type": "string"
|
|
2968
4312
|
},
|
|
4313
|
+
"scope": {
|
|
4314
|
+
"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",
|
|
4315
|
+
"type": "object",
|
|
4316
|
+
"properties": {
|
|
4317
|
+
"surface": {
|
|
4318
|
+
"description": "Where the product ran, in an open vocabulary: `browser`, `native-app`, `api`, `cli`…",
|
|
4319
|
+
"type": "string",
|
|
4320
|
+
"minLength": 1
|
|
4321
|
+
},
|
|
4322
|
+
"deviceKind": {
|
|
4323
|
+
"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",
|
|
4324
|
+
"type": "string",
|
|
4325
|
+
"minLength": 1
|
|
4326
|
+
},
|
|
4327
|
+
"syntheticData": {
|
|
4328
|
+
"description": "True: the data was made up for the run. False: real data. Absent: unknown",
|
|
4329
|
+
"type": "boolean"
|
|
4330
|
+
},
|
|
4331
|
+
"dependencies": {
|
|
4332
|
+
"description": "Whether what the product talks to was `scripted` (replies fixed in advance), `live` or `mixed`. An open vocabulary; absent is unknown",
|
|
4333
|
+
"type": "string",
|
|
4334
|
+
"minLength": 1
|
|
4335
|
+
},
|
|
4336
|
+
"audioCaptured": {
|
|
4337
|
+
"description": "True: the recording has real audio. False: it is silent. Absent: unknown",
|
|
4338
|
+
"type": "boolean"
|
|
4339
|
+
},
|
|
4340
|
+
"pacing": {
|
|
4341
|
+
"description": "How time ran, in an open vocabulary: `paced` (slowed or scripted for a viewer), `real-time`. Absent: unknown",
|
|
4342
|
+
"type": "string",
|
|
4343
|
+
"minLength": 1
|
|
4344
|
+
},
|
|
4345
|
+
"asserted": {
|
|
4346
|
+
"description": "The boundaries the result actually asserts. Activity visible in a recording beyond them is not verified behavior",
|
|
4347
|
+
"type": "array",
|
|
4348
|
+
"items": {
|
|
4349
|
+
"type": "string"
|
|
4350
|
+
}
|
|
4351
|
+
},
|
|
4352
|
+
"limitations": {
|
|
4353
|
+
"description": "Known limits of what this evidence shows, in the producer's words",
|
|
4354
|
+
"type": "array",
|
|
4355
|
+
"items": {
|
|
4356
|
+
"type": "string"
|
|
4357
|
+
}
|
|
4358
|
+
},
|
|
4359
|
+
"declaredBy": {
|
|
4360
|
+
"description": "Who or what made this declaration: a tool, a team, a person",
|
|
4361
|
+
"type": "string"
|
|
4362
|
+
},
|
|
4363
|
+
"verified": {
|
|
4364
|
+
"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",
|
|
4365
|
+
"type": "array",
|
|
4366
|
+
"items": {
|
|
4367
|
+
"type": "string"
|
|
4368
|
+
}
|
|
4369
|
+
},
|
|
4370
|
+
"verifiedBy": {
|
|
4371
|
+
"description": "What checked the `verified` fields",
|
|
4372
|
+
"type": "string"
|
|
4373
|
+
},
|
|
4374
|
+
"provenance": {
|
|
4375
|
+
"description": "Where the declaration comes from and how to check it: a document, a CI step, a device log",
|
|
4376
|
+
"type": "array",
|
|
4377
|
+
"items": {
|
|
4378
|
+
"type": "object",
|
|
4379
|
+
"properties": {
|
|
4380
|
+
"url": {
|
|
4381
|
+
"type": "string",
|
|
4382
|
+
"minLength": 1
|
|
4383
|
+
},
|
|
4384
|
+
"name": {
|
|
4385
|
+
"type": "string"
|
|
4386
|
+
},
|
|
4387
|
+
"rel": {
|
|
4388
|
+
"description": "Why it is linked, in an open vocabulary: issue, run, trace, docs, source…",
|
|
4389
|
+
"type": "string"
|
|
4390
|
+
}
|
|
4391
|
+
},
|
|
4392
|
+
"required": [
|
|
4393
|
+
"url"
|
|
4394
|
+
],
|
|
4395
|
+
"additionalProperties": {}
|
|
4396
|
+
}
|
|
4397
|
+
},
|
|
4398
|
+
"extensions": {
|
|
4399
|
+
"type": "object",
|
|
4400
|
+
"propertyNames": {
|
|
4401
|
+
"type": "string",
|
|
4402
|
+
"minLength": 1
|
|
4403
|
+
},
|
|
4404
|
+
"additionalProperties": {}
|
|
4405
|
+
}
|
|
4406
|
+
},
|
|
4407
|
+
"additionalProperties": {}
|
|
4408
|
+
},
|
|
2969
4409
|
"tags": {
|
|
2970
4410
|
"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",
|
|
2971
4411
|
"type": "array",
|
|
@@ -3102,6 +4542,102 @@
|
|
|
3102
4542
|
"additionalProperties": {}
|
|
3103
4543
|
}
|
|
3104
4544
|
},
|
|
4545
|
+
"scope": {
|
|
4546
|
+
"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",
|
|
4547
|
+
"type": "object",
|
|
4548
|
+
"properties": {
|
|
4549
|
+
"surface": {
|
|
4550
|
+
"description": "Where the product ran, in an open vocabulary: `browser`, `native-app`, `api`, `cli`…",
|
|
4551
|
+
"type": "string",
|
|
4552
|
+
"minLength": 1
|
|
4553
|
+
},
|
|
4554
|
+
"deviceKind": {
|
|
4555
|
+
"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",
|
|
4556
|
+
"type": "string",
|
|
4557
|
+
"minLength": 1
|
|
4558
|
+
},
|
|
4559
|
+
"syntheticData": {
|
|
4560
|
+
"description": "True: the data was made up for the run. False: real data. Absent: unknown",
|
|
4561
|
+
"type": "boolean"
|
|
4562
|
+
},
|
|
4563
|
+
"dependencies": {
|
|
4564
|
+
"description": "Whether what the product talks to was `scripted` (replies fixed in advance), `live` or `mixed`. An open vocabulary; absent is unknown",
|
|
4565
|
+
"type": "string",
|
|
4566
|
+
"minLength": 1
|
|
4567
|
+
},
|
|
4568
|
+
"audioCaptured": {
|
|
4569
|
+
"description": "True: the recording has real audio. False: it is silent. Absent: unknown",
|
|
4570
|
+
"type": "boolean"
|
|
4571
|
+
},
|
|
4572
|
+
"pacing": {
|
|
4573
|
+
"description": "How time ran, in an open vocabulary: `paced` (slowed or scripted for a viewer), `real-time`. Absent: unknown",
|
|
4574
|
+
"type": "string",
|
|
4575
|
+
"minLength": 1
|
|
4576
|
+
},
|
|
4577
|
+
"asserted": {
|
|
4578
|
+
"description": "The boundaries the result actually asserts. Activity visible in a recording beyond them is not verified behavior",
|
|
4579
|
+
"type": "array",
|
|
4580
|
+
"items": {
|
|
4581
|
+
"type": "string"
|
|
4582
|
+
}
|
|
4583
|
+
},
|
|
4584
|
+
"limitations": {
|
|
4585
|
+
"description": "Known limits of what this evidence shows, in the producer's words",
|
|
4586
|
+
"type": "array",
|
|
4587
|
+
"items": {
|
|
4588
|
+
"type": "string"
|
|
4589
|
+
}
|
|
4590
|
+
},
|
|
4591
|
+
"declaredBy": {
|
|
4592
|
+
"description": "Who or what made this declaration: a tool, a team, a person",
|
|
4593
|
+
"type": "string"
|
|
4594
|
+
},
|
|
4595
|
+
"verified": {
|
|
4596
|
+
"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",
|
|
4597
|
+
"type": "array",
|
|
4598
|
+
"items": {
|
|
4599
|
+
"type": "string"
|
|
4600
|
+
}
|
|
4601
|
+
},
|
|
4602
|
+
"verifiedBy": {
|
|
4603
|
+
"description": "What checked the `verified` fields",
|
|
4604
|
+
"type": "string"
|
|
4605
|
+
},
|
|
4606
|
+
"provenance": {
|
|
4607
|
+
"description": "Where the declaration comes from and how to check it: a document, a CI step, a device log",
|
|
4608
|
+
"type": "array",
|
|
4609
|
+
"items": {
|
|
4610
|
+
"type": "object",
|
|
4611
|
+
"properties": {
|
|
4612
|
+
"url": {
|
|
4613
|
+
"type": "string",
|
|
4614
|
+
"minLength": 1
|
|
4615
|
+
},
|
|
4616
|
+
"name": {
|
|
4617
|
+
"type": "string"
|
|
4618
|
+
},
|
|
4619
|
+
"rel": {
|
|
4620
|
+
"description": "Why it is linked, in an open vocabulary: issue, run, trace, docs, source…",
|
|
4621
|
+
"type": "string"
|
|
4622
|
+
}
|
|
4623
|
+
},
|
|
4624
|
+
"required": [
|
|
4625
|
+
"url"
|
|
4626
|
+
],
|
|
4627
|
+
"additionalProperties": {}
|
|
4628
|
+
}
|
|
4629
|
+
},
|
|
4630
|
+
"extensions": {
|
|
4631
|
+
"type": "object",
|
|
4632
|
+
"propertyNames": {
|
|
4633
|
+
"type": "string",
|
|
4634
|
+
"minLength": 1
|
|
4635
|
+
},
|
|
4636
|
+
"additionalProperties": {}
|
|
4637
|
+
}
|
|
4638
|
+
},
|
|
4639
|
+
"additionalProperties": {}
|
|
4640
|
+
},
|
|
3105
4641
|
"extensions": {
|
|
3106
4642
|
"type": "object",
|
|
3107
4643
|
"propertyNames": {
|