@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.
Files changed (43) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/reports/src/evidence-detail.d.ts +14 -3
  3. package/dist/reports/src/evidence-detail.js +33 -19
  4. package/dist/reports/src/evidence-scope.d.ts +83 -0
  5. package/dist/reports/src/evidence-scope.js +129 -0
  6. package/dist/reports/src/evidence-types.d.ts +3 -1
  7. package/dist/reports/src/explorer-types.d.ts +1 -1
  8. package/dist/reports/src/layer-merge.js +3 -2
  9. package/dist/reports/src/layer-types.d.ts +1 -1
  10. package/dist/reports/src/publish-checks.js +1 -0
  11. package/dist/reports/src/reporter.d.ts +1 -1
  12. package/dist/reports/src/reports-explorer-route.d.ts +276 -0
  13. package/dist/reports/src/reports-route.d.ts +276 -0
  14. package/dist/reports/src/test-catalog.d.ts +7 -1
  15. package/dist/reports/src/test-catalog.js +15 -3
  16. package/dist/schema/src/api.d.ts +520 -0
  17. package/dist/schema/src/api.js +7 -4
  18. package/dist/schema/src/layer.d.ts +981 -0
  19. package/dist/schema/src/layer.js +43 -4
  20. package/dist/server/src/openapi.js +1 -0
  21. package/docs/extending.md +1 -0
  22. package/docs/reference/http-api.md +2 -0
  23. package/docs/reference/reports.md +179 -7
  24. package/docs/reference/schema.md +23 -0
  25. package/docs/rich-evidence.md +47 -0
  26. package/llms-full.txt +50 -0
  27. package/package.json +1 -1
  28. package/packages/schema/schemas/check-detail.schema.json +673 -1
  29. package/packages/schema/schemas/effective-delta.schema.json +192 -0
  30. package/packages/schema/schemas/effective-evidence.schema.json +192 -0
  31. package/packages/schema/schemas/evidence-page.schema.json +96 -0
  32. package/packages/schema/schemas/layer-rows.schema.json +96 -0
  33. package/packages/schema/schemas/layer.schema.json +1598 -62
  34. package/packages/schema/schemas/publish-checks.schema.json +768 -0
  35. package/packages/schema/schemas/report-run.schema.json +96 -0
  36. package/packages/schema/schemas/test-catalog.schema.json +128 -0
  37. package/packages/schema/schemas/test-history.schema.json +202 -0
  38. package/packages/server/openapi.json +2581 -23
  39. package/packages/visualizer/src/evidence/artifacts.tsx +24 -18
  40. package/packages/visualizer/src/evidence/evidence-scope.tsx +106 -0
  41. package/packages/visualizer/src/evidence/format.ts +11 -0
  42. package/packages/visualizer/src/explorer/Explorer.tsx +19 -0
  43. package/packages/visualizer/src/explorer/search.ts +5 -1
@@ -3326,6 +3326,16 @@
3326
3326
  ]
3327
3327
  }
3328
3328
  },
3329
+ {
3330
+ "required": false,
3331
+ "name": "scope",
3332
+ "in": "query",
3333
+ "description": "Only tests with one playable recording that states every one of these producer-declared qualifications: `surface:<value>`, `device:<value>` (`device:physical` and `device:simulator` stay apart), `data:synthetic` or `data:real`, `dependencies:<value>`, `audio:recorded` or `audio:silent`, `pacing:<value>`. All must hold for the same recording. A recording that did not declare a value never matches it, and `unknown` matches only a recording that declared no scope. Repeatable or comma-separated.",
3334
+ "example": "device:physical,audio:recorded",
3335
+ "schema": {
3336
+ "type": "string"
3337
+ }
3338
+ },
3329
3339
  {
3330
3340
  "required": false,
3331
3341
  "name": "run",
@@ -3565,6 +3575,16 @@
3565
3575
  ]
3566
3576
  }
3567
3577
  },
3578
+ {
3579
+ "required": false,
3580
+ "name": "scope",
3581
+ "in": "query",
3582
+ "description": "Only tests with one playable recording that states every one of these producer-declared qualifications: `surface:<value>`, `device:<value>` (`device:physical` and `device:simulator` stay apart), `data:synthetic` or `data:real`, `dependencies:<value>`, `audio:recorded` or `audio:silent`, `pacing:<value>`. All must hold for the same recording. A recording that did not declare a value never matches it, and `unknown` matches only a recording that declared no scope. Repeatable or comma-separated.",
3583
+ "example": "device:physical,audio:recorded",
3584
+ "schema": {
3585
+ "type": "string"
3586
+ }
3587
+ },
3568
3588
  {
3569
3589
  "required": false,
3570
3590
  "name": "run",
@@ -8939,6 +8959,102 @@
8939
8959
  "available": {
8940
8960
  "type": "boolean",
8941
8961
  "description": "False when the reference names no bytes (no bundle key, address or inline text)"
8962
+ },
8963
+ "scope": {
8964
+ "description": "What this recording shows as its producer declared it: its own `scope`, else its attempt's, check's, part's or layer's. Absent: the scope is unknown, never live, physical or audible",
8965
+ "type": "object",
8966
+ "properties": {
8967
+ "surface": {
8968
+ "description": "Where the product ran, in an open vocabulary: `browser`, `native-app`, `api`, `cli`…",
8969
+ "type": "string",
8970
+ "minLength": 1
8971
+ },
8972
+ "deviceKind": {
8973
+ "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",
8974
+ "type": "string",
8975
+ "minLength": 1
8976
+ },
8977
+ "syntheticData": {
8978
+ "description": "True: the data was made up for the run. False: real data. Absent: unknown",
8979
+ "type": "boolean"
8980
+ },
8981
+ "dependencies": {
8982
+ "description": "Whether what the product talks to was `scripted` (replies fixed in advance), `live` or `mixed`. An open vocabulary; absent is unknown",
8983
+ "type": "string",
8984
+ "minLength": 1
8985
+ },
8986
+ "audioCaptured": {
8987
+ "description": "True: the recording has real audio. False: it is silent. Absent: unknown",
8988
+ "type": "boolean"
8989
+ },
8990
+ "pacing": {
8991
+ "description": "How time ran, in an open vocabulary: `paced` (slowed or scripted for a viewer), `real-time`. Absent: unknown",
8992
+ "type": "string",
8993
+ "minLength": 1
8994
+ },
8995
+ "asserted": {
8996
+ "description": "The boundaries the result actually asserts. Activity visible in a recording beyond them is not verified behavior",
8997
+ "type": "array",
8998
+ "items": {
8999
+ "type": "string"
9000
+ }
9001
+ },
9002
+ "limitations": {
9003
+ "description": "Known limits of what this evidence shows, in the producer's words",
9004
+ "type": "array",
9005
+ "items": {
9006
+ "type": "string"
9007
+ }
9008
+ },
9009
+ "declaredBy": {
9010
+ "description": "Who or what made this declaration: a tool, a team, a person",
9011
+ "type": "string"
9012
+ },
9013
+ "verified": {
9014
+ "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",
9015
+ "type": "array",
9016
+ "items": {
9017
+ "type": "string"
9018
+ }
9019
+ },
9020
+ "verifiedBy": {
9021
+ "description": "What checked the `verified` fields",
9022
+ "type": "string"
9023
+ },
9024
+ "provenance": {
9025
+ "description": "Where the declaration comes from and how to check it: a document, a CI step, a device log",
9026
+ "type": "array",
9027
+ "items": {
9028
+ "type": "object",
9029
+ "properties": {
9030
+ "url": {
9031
+ "type": "string",
9032
+ "minLength": 1
9033
+ },
9034
+ "name": {
9035
+ "type": "string"
9036
+ },
9037
+ "rel": {
9038
+ "description": "Why it is linked, in an open vocabulary: issue, run, trace, docs, source…",
9039
+ "type": "string"
9040
+ }
9041
+ },
9042
+ "required": [
9043
+ "url"
9044
+ ],
9045
+ "additionalProperties": {}
9046
+ }
9047
+ },
9048
+ "extensions": {
9049
+ "type": "object",
9050
+ "propertyNames": {
9051
+ "type": "string",
9052
+ "minLength": 1
9053
+ },
9054
+ "additionalProperties": {}
9055
+ }
9056
+ },
9057
+ "additionalProperties": {}
8942
9058
  }
8943
9059
  },
8944
9060
  "required": [
@@ -9236,6 +9352,102 @@
9236
9352
  "available": {
9237
9353
  "type": "boolean",
9238
9354
  "description": "False when the reference names no bytes (no bundle key, address or inline text)"
9355
+ },
9356
+ "scope": {
9357
+ "description": "What this recording shows as its producer declared it: its own `scope`, else its attempt's, check's, part's or layer's. Absent: the scope is unknown, never live, physical or audible",
9358
+ "type": "object",
9359
+ "properties": {
9360
+ "surface": {
9361
+ "description": "Where the product ran, in an open vocabulary: `browser`, `native-app`, `api`, `cli`…",
9362
+ "type": "string",
9363
+ "minLength": 1
9364
+ },
9365
+ "deviceKind": {
9366
+ "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",
9367
+ "type": "string",
9368
+ "minLength": 1
9369
+ },
9370
+ "syntheticData": {
9371
+ "description": "True: the data was made up for the run. False: real data. Absent: unknown",
9372
+ "type": "boolean"
9373
+ },
9374
+ "dependencies": {
9375
+ "description": "Whether what the product talks to was `scripted` (replies fixed in advance), `live` or `mixed`. An open vocabulary; absent is unknown",
9376
+ "type": "string",
9377
+ "minLength": 1
9378
+ },
9379
+ "audioCaptured": {
9380
+ "description": "True: the recording has real audio. False: it is silent. Absent: unknown",
9381
+ "type": "boolean"
9382
+ },
9383
+ "pacing": {
9384
+ "description": "How time ran, in an open vocabulary: `paced` (slowed or scripted for a viewer), `real-time`. Absent: unknown",
9385
+ "type": "string",
9386
+ "minLength": 1
9387
+ },
9388
+ "asserted": {
9389
+ "description": "The boundaries the result actually asserts. Activity visible in a recording beyond them is not verified behavior",
9390
+ "type": "array",
9391
+ "items": {
9392
+ "type": "string"
9393
+ }
9394
+ },
9395
+ "limitations": {
9396
+ "description": "Known limits of what this evidence shows, in the producer's words",
9397
+ "type": "array",
9398
+ "items": {
9399
+ "type": "string"
9400
+ }
9401
+ },
9402
+ "declaredBy": {
9403
+ "description": "Who or what made this declaration: a tool, a team, a person",
9404
+ "type": "string"
9405
+ },
9406
+ "verified": {
9407
+ "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",
9408
+ "type": "array",
9409
+ "items": {
9410
+ "type": "string"
9411
+ }
9412
+ },
9413
+ "verifiedBy": {
9414
+ "description": "What checked the `verified` fields",
9415
+ "type": "string"
9416
+ },
9417
+ "provenance": {
9418
+ "description": "Where the declaration comes from and how to check it: a document, a CI step, a device log",
9419
+ "type": "array",
9420
+ "items": {
9421
+ "type": "object",
9422
+ "properties": {
9423
+ "url": {
9424
+ "type": "string",
9425
+ "minLength": 1
9426
+ },
9427
+ "name": {
9428
+ "type": "string"
9429
+ },
9430
+ "rel": {
9431
+ "description": "Why it is linked, in an open vocabulary: issue, run, trace, docs, source…",
9432
+ "type": "string"
9433
+ }
9434
+ },
9435
+ "required": [
9436
+ "url"
9437
+ ],
9438
+ "additionalProperties": {}
9439
+ }
9440
+ },
9441
+ "extensions": {
9442
+ "type": "object",
9443
+ "propertyNames": {
9444
+ "type": "string",
9445
+ "minLength": 1
9446
+ },
9447
+ "additionalProperties": {}
9448
+ }
9449
+ },
9450
+ "additionalProperties": {}
9239
9451
  }
9240
9452
  },
9241
9453
  "required": [
@@ -9583,6 +9795,102 @@
9583
9795
  "available": {
9584
9796
  "type": "boolean",
9585
9797
  "description": "False when the reference names no bytes (no bundle key, address or inline text)"
9798
+ },
9799
+ "scope": {
9800
+ "description": "What this recording shows as its producer declared it: its own `scope`, else its attempt's, check's, part's or layer's. Absent: the scope is unknown, never live, physical or audible",
9801
+ "type": "object",
9802
+ "properties": {
9803
+ "surface": {
9804
+ "description": "Where the product ran, in an open vocabulary: `browser`, `native-app`, `api`, `cli`…",
9805
+ "type": "string",
9806
+ "minLength": 1
9807
+ },
9808
+ "deviceKind": {
9809
+ "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",
9810
+ "type": "string",
9811
+ "minLength": 1
9812
+ },
9813
+ "syntheticData": {
9814
+ "description": "True: the data was made up for the run. False: real data. Absent: unknown",
9815
+ "type": "boolean"
9816
+ },
9817
+ "dependencies": {
9818
+ "description": "Whether what the product talks to was `scripted` (replies fixed in advance), `live` or `mixed`. An open vocabulary; absent is unknown",
9819
+ "type": "string",
9820
+ "minLength": 1
9821
+ },
9822
+ "audioCaptured": {
9823
+ "description": "True: the recording has real audio. False: it is silent. Absent: unknown",
9824
+ "type": "boolean"
9825
+ },
9826
+ "pacing": {
9827
+ "description": "How time ran, in an open vocabulary: `paced` (slowed or scripted for a viewer), `real-time`. Absent: unknown",
9828
+ "type": "string",
9829
+ "minLength": 1
9830
+ },
9831
+ "asserted": {
9832
+ "description": "The boundaries the result actually asserts. Activity visible in a recording beyond them is not verified behavior",
9833
+ "type": "array",
9834
+ "items": {
9835
+ "type": "string"
9836
+ }
9837
+ },
9838
+ "limitations": {
9839
+ "description": "Known limits of what this evidence shows, in the producer's words",
9840
+ "type": "array",
9841
+ "items": {
9842
+ "type": "string"
9843
+ }
9844
+ },
9845
+ "declaredBy": {
9846
+ "description": "Who or what made this declaration: a tool, a team, a person",
9847
+ "type": "string"
9848
+ },
9849
+ "verified": {
9850
+ "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",
9851
+ "type": "array",
9852
+ "items": {
9853
+ "type": "string"
9854
+ }
9855
+ },
9856
+ "verifiedBy": {
9857
+ "description": "What checked the `verified` fields",
9858
+ "type": "string"
9859
+ },
9860
+ "provenance": {
9861
+ "description": "Where the declaration comes from and how to check it: a document, a CI step, a device log",
9862
+ "type": "array",
9863
+ "items": {
9864
+ "type": "object",
9865
+ "properties": {
9866
+ "url": {
9867
+ "type": "string",
9868
+ "minLength": 1
9869
+ },
9870
+ "name": {
9871
+ "type": "string"
9872
+ },
9873
+ "rel": {
9874
+ "description": "Why it is linked, in an open vocabulary: issue, run, trace, docs, source…",
9875
+ "type": "string"
9876
+ }
9877
+ },
9878
+ "required": [
9879
+ "url"
9880
+ ],
9881
+ "additionalProperties": {}
9882
+ }
9883
+ },
9884
+ "extensions": {
9885
+ "type": "object",
9886
+ "propertyNames": {
9887
+ "type": "string",
9888
+ "minLength": 1
9889
+ },
9890
+ "additionalProperties": {}
9891
+ }
9892
+ },
9893
+ "additionalProperties": {}
9586
9894
  }
9587
9895
  },
9588
9896
  "required": [
@@ -9880,6 +10188,102 @@
9880
10188
  "available": {
9881
10189
  "type": "boolean",
9882
10190
  "description": "False when the reference names no bytes (no bundle key, address or inline text)"
10191
+ },
10192
+ "scope": {
10193
+ "description": "What this recording shows as its producer declared it: its own `scope`, else its attempt's, check's, part's or layer's. Absent: the scope is unknown, never live, physical or audible",
10194
+ "type": "object",
10195
+ "properties": {
10196
+ "surface": {
10197
+ "description": "Where the product ran, in an open vocabulary: `browser`, `native-app`, `api`, `cli`…",
10198
+ "type": "string",
10199
+ "minLength": 1
10200
+ },
10201
+ "deviceKind": {
10202
+ "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",
10203
+ "type": "string",
10204
+ "minLength": 1
10205
+ },
10206
+ "syntheticData": {
10207
+ "description": "True: the data was made up for the run. False: real data. Absent: unknown",
10208
+ "type": "boolean"
10209
+ },
10210
+ "dependencies": {
10211
+ "description": "Whether what the product talks to was `scripted` (replies fixed in advance), `live` or `mixed`. An open vocabulary; absent is unknown",
10212
+ "type": "string",
10213
+ "minLength": 1
10214
+ },
10215
+ "audioCaptured": {
10216
+ "description": "True: the recording has real audio. False: it is silent. Absent: unknown",
10217
+ "type": "boolean"
10218
+ },
10219
+ "pacing": {
10220
+ "description": "How time ran, in an open vocabulary: `paced` (slowed or scripted for a viewer), `real-time`. Absent: unknown",
10221
+ "type": "string",
10222
+ "minLength": 1
10223
+ },
10224
+ "asserted": {
10225
+ "description": "The boundaries the result actually asserts. Activity visible in a recording beyond them is not verified behavior",
10226
+ "type": "array",
10227
+ "items": {
10228
+ "type": "string"
10229
+ }
10230
+ },
10231
+ "limitations": {
10232
+ "description": "Known limits of what this evidence shows, in the producer's words",
10233
+ "type": "array",
10234
+ "items": {
10235
+ "type": "string"
10236
+ }
10237
+ },
10238
+ "declaredBy": {
10239
+ "description": "Who or what made this declaration: a tool, a team, a person",
10240
+ "type": "string"
10241
+ },
10242
+ "verified": {
10243
+ "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",
10244
+ "type": "array",
10245
+ "items": {
10246
+ "type": "string"
10247
+ }
10248
+ },
10249
+ "verifiedBy": {
10250
+ "description": "What checked the `verified` fields",
10251
+ "type": "string"
10252
+ },
10253
+ "provenance": {
10254
+ "description": "Where the declaration comes from and how to check it: a document, a CI step, a device log",
10255
+ "type": "array",
10256
+ "items": {
10257
+ "type": "object",
10258
+ "properties": {
10259
+ "url": {
10260
+ "type": "string",
10261
+ "minLength": 1
10262
+ },
10263
+ "name": {
10264
+ "type": "string"
10265
+ },
10266
+ "rel": {
10267
+ "description": "Why it is linked, in an open vocabulary: issue, run, trace, docs, source…",
10268
+ "type": "string"
10269
+ }
10270
+ },
10271
+ "required": [
10272
+ "url"
10273
+ ],
10274
+ "additionalProperties": {}
10275
+ }
10276
+ },
10277
+ "extensions": {
10278
+ "type": "object",
10279
+ "propertyNames": {
10280
+ "type": "string",
10281
+ "minLength": 1
10282
+ },
10283
+ "additionalProperties": {}
10284
+ }
10285
+ },
10286
+ "additionalProperties": {}
9883
10287
  }
9884
10288
  },
9885
10289
  "required": [
@@ -10684,31 +11088,127 @@
10684
11088
  "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\"",
10685
11089
  "type": "string"
10686
11090
  },
10687
- "tags": {
10688
- "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",
10689
- "type": "array",
10690
- "items": {
10691
- "type": "string"
10692
- }
10693
- },
10694
- "at": {
11091
+ "scope": {
11092
+ "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",
10695
11093
  "type": "object",
10696
11094
  "properties": {
10697
- "step": {
10698
- "description": "The `id` of a step",
10699
- "type": "string"
11095
+ "surface": {
11096
+ "description": "Where the product ran, in an open vocabulary: `browser`, `native-app`, `api`, `cli`…",
11097
+ "type": "string",
11098
+ "minLength": 1
10700
11099
  },
10701
- "offsetMs": {
10702
- "type": "number",
10703
- "minimum": 0
10704
- }
10705
- },
10706
- "additionalProperties": {}
10707
- },
10708
- "poster": {
10709
- "description": "The `id` of an attachment that stands for this one before it is opened",
10710
- "type": "string"
10711
- },
11100
+ "deviceKind": {
11101
+ "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",
11102
+ "type": "string",
11103
+ "minLength": 1
11104
+ },
11105
+ "syntheticData": {
11106
+ "description": "True: the data was made up for the run. False: real data. Absent: unknown",
11107
+ "type": "boolean"
11108
+ },
11109
+ "dependencies": {
11110
+ "description": "Whether what the product talks to was `scripted` (replies fixed in advance), `live` or `mixed`. An open vocabulary; absent is unknown",
11111
+ "type": "string",
11112
+ "minLength": 1
11113
+ },
11114
+ "audioCaptured": {
11115
+ "description": "True: the recording has real audio. False: it is silent. Absent: unknown",
11116
+ "type": "boolean"
11117
+ },
11118
+ "pacing": {
11119
+ "description": "How time ran, in an open vocabulary: `paced` (slowed or scripted for a viewer), `real-time`. Absent: unknown",
11120
+ "type": "string",
11121
+ "minLength": 1
11122
+ },
11123
+ "asserted": {
11124
+ "description": "The boundaries the result actually asserts. Activity visible in a recording beyond them is not verified behavior",
11125
+ "type": "array",
11126
+ "items": {
11127
+ "type": "string"
11128
+ }
11129
+ },
11130
+ "limitations": {
11131
+ "description": "Known limits of what this evidence shows, in the producer's words",
11132
+ "type": "array",
11133
+ "items": {
11134
+ "type": "string"
11135
+ }
11136
+ },
11137
+ "declaredBy": {
11138
+ "description": "Who or what made this declaration: a tool, a team, a person",
11139
+ "type": "string"
11140
+ },
11141
+ "verified": {
11142
+ "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",
11143
+ "type": "array",
11144
+ "items": {
11145
+ "type": "string"
11146
+ }
11147
+ },
11148
+ "verifiedBy": {
11149
+ "description": "What checked the `verified` fields",
11150
+ "type": "string"
11151
+ },
11152
+ "provenance": {
11153
+ "description": "Where the declaration comes from and how to check it: a document, a CI step, a device log",
11154
+ "type": "array",
11155
+ "items": {
11156
+ "type": "object",
11157
+ "properties": {
11158
+ "url": {
11159
+ "type": "string",
11160
+ "minLength": 1
11161
+ },
11162
+ "name": {
11163
+ "type": "string"
11164
+ },
11165
+ "rel": {
11166
+ "description": "Why it is linked, in an open vocabulary: issue, run, trace, docs, source…",
11167
+ "type": "string"
11168
+ }
11169
+ },
11170
+ "required": [
11171
+ "url"
11172
+ ],
11173
+ "additionalProperties": {}
11174
+ }
11175
+ },
11176
+ "extensions": {
11177
+ "type": "object",
11178
+ "propertyNames": {
11179
+ "type": "string",
11180
+ "minLength": 1
11181
+ },
11182
+ "additionalProperties": {}
11183
+ }
11184
+ },
11185
+ "additionalProperties": {}
11186
+ },
11187
+ "tags": {
11188
+ "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",
11189
+ "type": "array",
11190
+ "items": {
11191
+ "type": "string"
11192
+ }
11193
+ },
11194
+ "at": {
11195
+ "type": "object",
11196
+ "properties": {
11197
+ "step": {
11198
+ "description": "The `id` of a step",
11199
+ "type": "string"
11200
+ },
11201
+ "offsetMs": {
11202
+ "type": "number",
11203
+ "minimum": 0
11204
+ }
11205
+ },
11206
+ "additionalProperties": {}
11207
+ },
11208
+ "poster": {
11209
+ "description": "The `id` of an attachment that stands for this one before it is opened",
11210
+ "type": "string"
11211
+ },
10712
11212
  "captions": {
10713
11213
  "description": "The `id`s of attachments (WebVTT, SRT) that caption this one",
10714
11214
  "type": "array",
@@ -10830,6 +11330,102 @@
10830
11330
  "additionalProperties": {}
10831
11331
  }
10832
11332
  },
11333
+ "scope": {
11334
+ "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",
11335
+ "type": "object",
11336
+ "properties": {
11337
+ "surface": {
11338
+ "description": "Where the product ran, in an open vocabulary: `browser`, `native-app`, `api`, `cli`…",
11339
+ "type": "string",
11340
+ "minLength": 1
11341
+ },
11342
+ "deviceKind": {
11343
+ "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",
11344
+ "type": "string",
11345
+ "minLength": 1
11346
+ },
11347
+ "syntheticData": {
11348
+ "description": "True: the data was made up for the run. False: real data. Absent: unknown",
11349
+ "type": "boolean"
11350
+ },
11351
+ "dependencies": {
11352
+ "description": "Whether what the product talks to was `scripted` (replies fixed in advance), `live` or `mixed`. An open vocabulary; absent is unknown",
11353
+ "type": "string",
11354
+ "minLength": 1
11355
+ },
11356
+ "audioCaptured": {
11357
+ "description": "True: the recording has real audio. False: it is silent. Absent: unknown",
11358
+ "type": "boolean"
11359
+ },
11360
+ "pacing": {
11361
+ "description": "How time ran, in an open vocabulary: `paced` (slowed or scripted for a viewer), `real-time`. Absent: unknown",
11362
+ "type": "string",
11363
+ "minLength": 1
11364
+ },
11365
+ "asserted": {
11366
+ "description": "The boundaries the result actually asserts. Activity visible in a recording beyond them is not verified behavior",
11367
+ "type": "array",
11368
+ "items": {
11369
+ "type": "string"
11370
+ }
11371
+ },
11372
+ "limitations": {
11373
+ "description": "Known limits of what this evidence shows, in the producer's words",
11374
+ "type": "array",
11375
+ "items": {
11376
+ "type": "string"
11377
+ }
11378
+ },
11379
+ "declaredBy": {
11380
+ "description": "Who or what made this declaration: a tool, a team, a person",
11381
+ "type": "string"
11382
+ },
11383
+ "verified": {
11384
+ "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",
11385
+ "type": "array",
11386
+ "items": {
11387
+ "type": "string"
11388
+ }
11389
+ },
11390
+ "verifiedBy": {
11391
+ "description": "What checked the `verified` fields",
11392
+ "type": "string"
11393
+ },
11394
+ "provenance": {
11395
+ "description": "Where the declaration comes from and how to check it: a document, a CI step, a device log",
11396
+ "type": "array",
11397
+ "items": {
11398
+ "type": "object",
11399
+ "properties": {
11400
+ "url": {
11401
+ "type": "string",
11402
+ "minLength": 1
11403
+ },
11404
+ "name": {
11405
+ "type": "string"
11406
+ },
11407
+ "rel": {
11408
+ "description": "Why it is linked, in an open vocabulary: issue, run, trace, docs, source…",
11409
+ "type": "string"
11410
+ }
11411
+ },
11412
+ "required": [
11413
+ "url"
11414
+ ],
11415
+ "additionalProperties": {}
11416
+ }
11417
+ },
11418
+ "extensions": {
11419
+ "type": "object",
11420
+ "propertyNames": {
11421
+ "type": "string",
11422
+ "minLength": 1
11423
+ },
11424
+ "additionalProperties": {}
11425
+ }
11426
+ },
11427
+ "additionalProperties": {}
11428
+ },
10833
11429
  "extensions": {
10834
11430
  "type": "object",
10835
11431
  "propertyNames": {
@@ -10932,6 +11528,102 @@
10932
11528
  "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\"",
10933
11529
  "type": "string"
10934
11530
  },
11531
+ "scope": {
11532
+ "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",
11533
+ "type": "object",
11534
+ "properties": {
11535
+ "surface": {
11536
+ "description": "Where the product ran, in an open vocabulary: `browser`, `native-app`, `api`, `cli`…",
11537
+ "type": "string",
11538
+ "minLength": 1
11539
+ },
11540
+ "deviceKind": {
11541
+ "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",
11542
+ "type": "string",
11543
+ "minLength": 1
11544
+ },
11545
+ "syntheticData": {
11546
+ "description": "True: the data was made up for the run. False: real data. Absent: unknown",
11547
+ "type": "boolean"
11548
+ },
11549
+ "dependencies": {
11550
+ "description": "Whether what the product talks to was `scripted` (replies fixed in advance), `live` or `mixed`. An open vocabulary; absent is unknown",
11551
+ "type": "string",
11552
+ "minLength": 1
11553
+ },
11554
+ "audioCaptured": {
11555
+ "description": "True: the recording has real audio. False: it is silent. Absent: unknown",
11556
+ "type": "boolean"
11557
+ },
11558
+ "pacing": {
11559
+ "description": "How time ran, in an open vocabulary: `paced` (slowed or scripted for a viewer), `real-time`. Absent: unknown",
11560
+ "type": "string",
11561
+ "minLength": 1
11562
+ },
11563
+ "asserted": {
11564
+ "description": "The boundaries the result actually asserts. Activity visible in a recording beyond them is not verified behavior",
11565
+ "type": "array",
11566
+ "items": {
11567
+ "type": "string"
11568
+ }
11569
+ },
11570
+ "limitations": {
11571
+ "description": "Known limits of what this evidence shows, in the producer's words",
11572
+ "type": "array",
11573
+ "items": {
11574
+ "type": "string"
11575
+ }
11576
+ },
11577
+ "declaredBy": {
11578
+ "description": "Who or what made this declaration: a tool, a team, a person",
11579
+ "type": "string"
11580
+ },
11581
+ "verified": {
11582
+ "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",
11583
+ "type": "array",
11584
+ "items": {
11585
+ "type": "string"
11586
+ }
11587
+ },
11588
+ "verifiedBy": {
11589
+ "description": "What checked the `verified` fields",
11590
+ "type": "string"
11591
+ },
11592
+ "provenance": {
11593
+ "description": "Where the declaration comes from and how to check it: a document, a CI step, a device log",
11594
+ "type": "array",
11595
+ "items": {
11596
+ "type": "object",
11597
+ "properties": {
11598
+ "url": {
11599
+ "type": "string",
11600
+ "minLength": 1
11601
+ },
11602
+ "name": {
11603
+ "type": "string"
11604
+ },
11605
+ "rel": {
11606
+ "description": "Why it is linked, in an open vocabulary: issue, run, trace, docs, source…",
11607
+ "type": "string"
11608
+ }
11609
+ },
11610
+ "required": [
11611
+ "url"
11612
+ ],
11613
+ "additionalProperties": {}
11614
+ }
11615
+ },
11616
+ "extensions": {
11617
+ "type": "object",
11618
+ "propertyNames": {
11619
+ "type": "string",
11620
+ "minLength": 1
11621
+ },
11622
+ "additionalProperties": {}
11623
+ }
11624
+ },
11625
+ "additionalProperties": {}
11626
+ },
10935
11627
  "tags": {
10936
11628
  "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",
10937
11629
  "type": "array",
@@ -11123,6 +11815,102 @@
11123
11815
  "detail": {
11124
11816
  "type": "string"
11125
11817
  },
11818
+ "scope": {
11819
+ "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",
11820
+ "type": "object",
11821
+ "properties": {
11822
+ "surface": {
11823
+ "description": "Where the product ran, in an open vocabulary: `browser`, `native-app`, `api`, `cli`…",
11824
+ "type": "string",
11825
+ "minLength": 1
11826
+ },
11827
+ "deviceKind": {
11828
+ "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",
11829
+ "type": "string",
11830
+ "minLength": 1
11831
+ },
11832
+ "syntheticData": {
11833
+ "description": "True: the data was made up for the run. False: real data. Absent: unknown",
11834
+ "type": "boolean"
11835
+ },
11836
+ "dependencies": {
11837
+ "description": "Whether what the product talks to was `scripted` (replies fixed in advance), `live` or `mixed`. An open vocabulary; absent is unknown",
11838
+ "type": "string",
11839
+ "minLength": 1
11840
+ },
11841
+ "audioCaptured": {
11842
+ "description": "True: the recording has real audio. False: it is silent. Absent: unknown",
11843
+ "type": "boolean"
11844
+ },
11845
+ "pacing": {
11846
+ "description": "How time ran, in an open vocabulary: `paced` (slowed or scripted for a viewer), `real-time`. Absent: unknown",
11847
+ "type": "string",
11848
+ "minLength": 1
11849
+ },
11850
+ "asserted": {
11851
+ "description": "The boundaries the result actually asserts. Activity visible in a recording beyond them is not verified behavior",
11852
+ "type": "array",
11853
+ "items": {
11854
+ "type": "string"
11855
+ }
11856
+ },
11857
+ "limitations": {
11858
+ "description": "Known limits of what this evidence shows, in the producer's words",
11859
+ "type": "array",
11860
+ "items": {
11861
+ "type": "string"
11862
+ }
11863
+ },
11864
+ "declaredBy": {
11865
+ "description": "Who or what made this declaration: a tool, a team, a person",
11866
+ "type": "string"
11867
+ },
11868
+ "verified": {
11869
+ "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",
11870
+ "type": "array",
11871
+ "items": {
11872
+ "type": "string"
11873
+ }
11874
+ },
11875
+ "verifiedBy": {
11876
+ "description": "What checked the `verified` fields",
11877
+ "type": "string"
11878
+ },
11879
+ "provenance": {
11880
+ "description": "Where the declaration comes from and how to check it: a document, a CI step, a device log",
11881
+ "type": "array",
11882
+ "items": {
11883
+ "type": "object",
11884
+ "properties": {
11885
+ "url": {
11886
+ "type": "string",
11887
+ "minLength": 1
11888
+ },
11889
+ "name": {
11890
+ "type": "string"
11891
+ },
11892
+ "rel": {
11893
+ "description": "Why it is linked, in an open vocabulary: issue, run, trace, docs, source…",
11894
+ "type": "string"
11895
+ }
11896
+ },
11897
+ "required": [
11898
+ "url"
11899
+ ],
11900
+ "additionalProperties": {}
11901
+ }
11902
+ },
11903
+ "extensions": {
11904
+ "type": "object",
11905
+ "propertyNames": {
11906
+ "type": "string",
11907
+ "minLength": 1
11908
+ },
11909
+ "additionalProperties": {}
11910
+ }
11911
+ },
11912
+ "additionalProperties": {}
11913
+ },
11126
11914
  "steps": {
11127
11915
  "type": "array",
11128
11916
  "items": {
@@ -11217,6 +12005,102 @@
11217
12005
  "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\"",
11218
12006
  "type": "string"
11219
12007
  },
12008
+ "scope": {
12009
+ "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",
12010
+ "type": "object",
12011
+ "properties": {
12012
+ "surface": {
12013
+ "description": "Where the product ran, in an open vocabulary: `browser`, `native-app`, `api`, `cli`…",
12014
+ "type": "string",
12015
+ "minLength": 1
12016
+ },
12017
+ "deviceKind": {
12018
+ "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",
12019
+ "type": "string",
12020
+ "minLength": 1
12021
+ },
12022
+ "syntheticData": {
12023
+ "description": "True: the data was made up for the run. False: real data. Absent: unknown",
12024
+ "type": "boolean"
12025
+ },
12026
+ "dependencies": {
12027
+ "description": "Whether what the product talks to was `scripted` (replies fixed in advance), `live` or `mixed`. An open vocabulary; absent is unknown",
12028
+ "type": "string",
12029
+ "minLength": 1
12030
+ },
12031
+ "audioCaptured": {
12032
+ "description": "True: the recording has real audio. False: it is silent. Absent: unknown",
12033
+ "type": "boolean"
12034
+ },
12035
+ "pacing": {
12036
+ "description": "How time ran, in an open vocabulary: `paced` (slowed or scripted for a viewer), `real-time`. Absent: unknown",
12037
+ "type": "string",
12038
+ "minLength": 1
12039
+ },
12040
+ "asserted": {
12041
+ "description": "The boundaries the result actually asserts. Activity visible in a recording beyond them is not verified behavior",
12042
+ "type": "array",
12043
+ "items": {
12044
+ "type": "string"
12045
+ }
12046
+ },
12047
+ "limitations": {
12048
+ "description": "Known limits of what this evidence shows, in the producer's words",
12049
+ "type": "array",
12050
+ "items": {
12051
+ "type": "string"
12052
+ }
12053
+ },
12054
+ "declaredBy": {
12055
+ "description": "Who or what made this declaration: a tool, a team, a person",
12056
+ "type": "string"
12057
+ },
12058
+ "verified": {
12059
+ "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",
12060
+ "type": "array",
12061
+ "items": {
12062
+ "type": "string"
12063
+ }
12064
+ },
12065
+ "verifiedBy": {
12066
+ "description": "What checked the `verified` fields",
12067
+ "type": "string"
12068
+ },
12069
+ "provenance": {
12070
+ "description": "Where the declaration comes from and how to check it: a document, a CI step, a device log",
12071
+ "type": "array",
12072
+ "items": {
12073
+ "type": "object",
12074
+ "properties": {
12075
+ "url": {
12076
+ "type": "string",
12077
+ "minLength": 1
12078
+ },
12079
+ "name": {
12080
+ "type": "string"
12081
+ },
12082
+ "rel": {
12083
+ "description": "Why it is linked, in an open vocabulary: issue, run, trace, docs, source…",
12084
+ "type": "string"
12085
+ }
12086
+ },
12087
+ "required": [
12088
+ "url"
12089
+ ],
12090
+ "additionalProperties": {}
12091
+ }
12092
+ },
12093
+ "extensions": {
12094
+ "type": "object",
12095
+ "propertyNames": {
12096
+ "type": "string",
12097
+ "minLength": 1
12098
+ },
12099
+ "additionalProperties": {}
12100
+ }
12101
+ },
12102
+ "additionalProperties": {}
12103
+ },
11220
12104
  "tags": {
11221
12105
  "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",
11222
12106
  "type": "array",
@@ -11438,6 +12322,102 @@
11438
12322
  "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\"",
11439
12323
  "type": "string"
11440
12324
  },
12325
+ "scope": {
12326
+ "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",
12327
+ "type": "object",
12328
+ "properties": {
12329
+ "surface": {
12330
+ "description": "Where the product ran, in an open vocabulary: `browser`, `native-app`, `api`, `cli`…",
12331
+ "type": "string",
12332
+ "minLength": 1
12333
+ },
12334
+ "deviceKind": {
12335
+ "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",
12336
+ "type": "string",
12337
+ "minLength": 1
12338
+ },
12339
+ "syntheticData": {
12340
+ "description": "True: the data was made up for the run. False: real data. Absent: unknown",
12341
+ "type": "boolean"
12342
+ },
12343
+ "dependencies": {
12344
+ "description": "Whether what the product talks to was `scripted` (replies fixed in advance), `live` or `mixed`. An open vocabulary; absent is unknown",
12345
+ "type": "string",
12346
+ "minLength": 1
12347
+ },
12348
+ "audioCaptured": {
12349
+ "description": "True: the recording has real audio. False: it is silent. Absent: unknown",
12350
+ "type": "boolean"
12351
+ },
12352
+ "pacing": {
12353
+ "description": "How time ran, in an open vocabulary: `paced` (slowed or scripted for a viewer), `real-time`. Absent: unknown",
12354
+ "type": "string",
12355
+ "minLength": 1
12356
+ },
12357
+ "asserted": {
12358
+ "description": "The boundaries the result actually asserts. Activity visible in a recording beyond them is not verified behavior",
12359
+ "type": "array",
12360
+ "items": {
12361
+ "type": "string"
12362
+ }
12363
+ },
12364
+ "limitations": {
12365
+ "description": "Known limits of what this evidence shows, in the producer's words",
12366
+ "type": "array",
12367
+ "items": {
12368
+ "type": "string"
12369
+ }
12370
+ },
12371
+ "declaredBy": {
12372
+ "description": "Who or what made this declaration: a tool, a team, a person",
12373
+ "type": "string"
12374
+ },
12375
+ "verified": {
12376
+ "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",
12377
+ "type": "array",
12378
+ "items": {
12379
+ "type": "string"
12380
+ }
12381
+ },
12382
+ "verifiedBy": {
12383
+ "description": "What checked the `verified` fields",
12384
+ "type": "string"
12385
+ },
12386
+ "provenance": {
12387
+ "description": "Where the declaration comes from and how to check it: a document, a CI step, a device log",
12388
+ "type": "array",
12389
+ "items": {
12390
+ "type": "object",
12391
+ "properties": {
12392
+ "url": {
12393
+ "type": "string",
12394
+ "minLength": 1
12395
+ },
12396
+ "name": {
12397
+ "type": "string"
12398
+ },
12399
+ "rel": {
12400
+ "description": "Why it is linked, in an open vocabulary: issue, run, trace, docs, source…",
12401
+ "type": "string"
12402
+ }
12403
+ },
12404
+ "required": [
12405
+ "url"
12406
+ ],
12407
+ "additionalProperties": {}
12408
+ }
12409
+ },
12410
+ "extensions": {
12411
+ "type": "object",
12412
+ "propertyNames": {
12413
+ "type": "string",
12414
+ "minLength": 1
12415
+ },
12416
+ "additionalProperties": {}
12417
+ }
12418
+ },
12419
+ "additionalProperties": {}
12420
+ },
11441
12421
  "tags": {
11442
12422
  "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",
11443
12423
  "type": "array",
@@ -11829,6 +12809,102 @@
11829
12809
  "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\"",
11830
12810
  "type": "string"
11831
12811
  },
12812
+ "scope": {
12813
+ "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",
12814
+ "type": "object",
12815
+ "properties": {
12816
+ "surface": {
12817
+ "description": "Where the product ran, in an open vocabulary: `browser`, `native-app`, `api`, `cli`…",
12818
+ "type": "string",
12819
+ "minLength": 1
12820
+ },
12821
+ "deviceKind": {
12822
+ "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",
12823
+ "type": "string",
12824
+ "minLength": 1
12825
+ },
12826
+ "syntheticData": {
12827
+ "description": "True: the data was made up for the run. False: real data. Absent: unknown",
12828
+ "type": "boolean"
12829
+ },
12830
+ "dependencies": {
12831
+ "description": "Whether what the product talks to was `scripted` (replies fixed in advance), `live` or `mixed`. An open vocabulary; absent is unknown",
12832
+ "type": "string",
12833
+ "minLength": 1
12834
+ },
12835
+ "audioCaptured": {
12836
+ "description": "True: the recording has real audio. False: it is silent. Absent: unknown",
12837
+ "type": "boolean"
12838
+ },
12839
+ "pacing": {
12840
+ "description": "How time ran, in an open vocabulary: `paced` (slowed or scripted for a viewer), `real-time`. Absent: unknown",
12841
+ "type": "string",
12842
+ "minLength": 1
12843
+ },
12844
+ "asserted": {
12845
+ "description": "The boundaries the result actually asserts. Activity visible in a recording beyond them is not verified behavior",
12846
+ "type": "array",
12847
+ "items": {
12848
+ "type": "string"
12849
+ }
12850
+ },
12851
+ "limitations": {
12852
+ "description": "Known limits of what this evidence shows, in the producer's words",
12853
+ "type": "array",
12854
+ "items": {
12855
+ "type": "string"
12856
+ }
12857
+ },
12858
+ "declaredBy": {
12859
+ "description": "Who or what made this declaration: a tool, a team, a person",
12860
+ "type": "string"
12861
+ },
12862
+ "verified": {
12863
+ "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",
12864
+ "type": "array",
12865
+ "items": {
12866
+ "type": "string"
12867
+ }
12868
+ },
12869
+ "verifiedBy": {
12870
+ "description": "What checked the `verified` fields",
12871
+ "type": "string"
12872
+ },
12873
+ "provenance": {
12874
+ "description": "Where the declaration comes from and how to check it: a document, a CI step, a device log",
12875
+ "type": "array",
12876
+ "items": {
12877
+ "type": "object",
12878
+ "properties": {
12879
+ "url": {
12880
+ "type": "string",
12881
+ "minLength": 1
12882
+ },
12883
+ "name": {
12884
+ "type": "string"
12885
+ },
12886
+ "rel": {
12887
+ "description": "Why it is linked, in an open vocabulary: issue, run, trace, docs, source…",
12888
+ "type": "string"
12889
+ }
12890
+ },
12891
+ "required": [
12892
+ "url"
12893
+ ],
12894
+ "additionalProperties": {}
12895
+ }
12896
+ },
12897
+ "extensions": {
12898
+ "type": "object",
12899
+ "propertyNames": {
12900
+ "type": "string",
12901
+ "minLength": 1
12902
+ },
12903
+ "additionalProperties": {}
12904
+ }
12905
+ },
12906
+ "additionalProperties": {}
12907
+ },
11832
12908
  "tags": {
11833
12909
  "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",
11834
12910
  "type": "array",
@@ -11975,6 +13051,102 @@
11975
13051
  "additionalProperties": {}
11976
13052
  }
11977
13053
  },
13054
+ "scope": {
13055
+ "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",
13056
+ "type": "object",
13057
+ "properties": {
13058
+ "surface": {
13059
+ "description": "Where the product ran, in an open vocabulary: `browser`, `native-app`, `api`, `cli`…",
13060
+ "type": "string",
13061
+ "minLength": 1
13062
+ },
13063
+ "deviceKind": {
13064
+ "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",
13065
+ "type": "string",
13066
+ "minLength": 1
13067
+ },
13068
+ "syntheticData": {
13069
+ "description": "True: the data was made up for the run. False: real data. Absent: unknown",
13070
+ "type": "boolean"
13071
+ },
13072
+ "dependencies": {
13073
+ "description": "Whether what the product talks to was `scripted` (replies fixed in advance), `live` or `mixed`. An open vocabulary; absent is unknown",
13074
+ "type": "string",
13075
+ "minLength": 1
13076
+ },
13077
+ "audioCaptured": {
13078
+ "description": "True: the recording has real audio. False: it is silent. Absent: unknown",
13079
+ "type": "boolean"
13080
+ },
13081
+ "pacing": {
13082
+ "description": "How time ran, in an open vocabulary: `paced` (slowed or scripted for a viewer), `real-time`. Absent: unknown",
13083
+ "type": "string",
13084
+ "minLength": 1
13085
+ },
13086
+ "asserted": {
13087
+ "description": "The boundaries the result actually asserts. Activity visible in a recording beyond them is not verified behavior",
13088
+ "type": "array",
13089
+ "items": {
13090
+ "type": "string"
13091
+ }
13092
+ },
13093
+ "limitations": {
13094
+ "description": "Known limits of what this evidence shows, in the producer's words",
13095
+ "type": "array",
13096
+ "items": {
13097
+ "type": "string"
13098
+ }
13099
+ },
13100
+ "declaredBy": {
13101
+ "description": "Who or what made this declaration: a tool, a team, a person",
13102
+ "type": "string"
13103
+ },
13104
+ "verified": {
13105
+ "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",
13106
+ "type": "array",
13107
+ "items": {
13108
+ "type": "string"
13109
+ }
13110
+ },
13111
+ "verifiedBy": {
13112
+ "description": "What checked the `verified` fields",
13113
+ "type": "string"
13114
+ },
13115
+ "provenance": {
13116
+ "description": "Where the declaration comes from and how to check it: a document, a CI step, a device log",
13117
+ "type": "array",
13118
+ "items": {
13119
+ "type": "object",
13120
+ "properties": {
13121
+ "url": {
13122
+ "type": "string",
13123
+ "minLength": 1
13124
+ },
13125
+ "name": {
13126
+ "type": "string"
13127
+ },
13128
+ "rel": {
13129
+ "description": "Why it is linked, in an open vocabulary: issue, run, trace, docs, source…",
13130
+ "type": "string"
13131
+ }
13132
+ },
13133
+ "required": [
13134
+ "url"
13135
+ ],
13136
+ "additionalProperties": {}
13137
+ }
13138
+ },
13139
+ "extensions": {
13140
+ "type": "object",
13141
+ "propertyNames": {
13142
+ "type": "string",
13143
+ "minLength": 1
13144
+ },
13145
+ "additionalProperties": {}
13146
+ }
13147
+ },
13148
+ "additionalProperties": {}
13149
+ },
11978
13150
  "extensions": {
11979
13151
  "type": "object",
11980
13152
  "propertyNames": {
@@ -12356,6 +13528,102 @@
12356
13528
  "available": {
12357
13529
  "type": "boolean",
12358
13530
  "description": "False when the reference names no bytes (no bundle key, address or inline text)"
13531
+ },
13532
+ "scope": {
13533
+ "description": "What this recording shows as its producer declared it: its own `scope`, else its attempt's, check's, part's or layer's. Absent: the scope is unknown, never live, physical or audible",
13534
+ "type": "object",
13535
+ "properties": {
13536
+ "surface": {
13537
+ "description": "Where the product ran, in an open vocabulary: `browser`, `native-app`, `api`, `cli`…",
13538
+ "type": "string",
13539
+ "minLength": 1
13540
+ },
13541
+ "deviceKind": {
13542
+ "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",
13543
+ "type": "string",
13544
+ "minLength": 1
13545
+ },
13546
+ "syntheticData": {
13547
+ "description": "True: the data was made up for the run. False: real data. Absent: unknown",
13548
+ "type": "boolean"
13549
+ },
13550
+ "dependencies": {
13551
+ "description": "Whether what the product talks to was `scripted` (replies fixed in advance), `live` or `mixed`. An open vocabulary; absent is unknown",
13552
+ "type": "string",
13553
+ "minLength": 1
13554
+ },
13555
+ "audioCaptured": {
13556
+ "description": "True: the recording has real audio. False: it is silent. Absent: unknown",
13557
+ "type": "boolean"
13558
+ },
13559
+ "pacing": {
13560
+ "description": "How time ran, in an open vocabulary: `paced` (slowed or scripted for a viewer), `real-time`. Absent: unknown",
13561
+ "type": "string",
13562
+ "minLength": 1
13563
+ },
13564
+ "asserted": {
13565
+ "description": "The boundaries the result actually asserts. Activity visible in a recording beyond them is not verified behavior",
13566
+ "type": "array",
13567
+ "items": {
13568
+ "type": "string"
13569
+ }
13570
+ },
13571
+ "limitations": {
13572
+ "description": "Known limits of what this evidence shows, in the producer's words",
13573
+ "type": "array",
13574
+ "items": {
13575
+ "type": "string"
13576
+ }
13577
+ },
13578
+ "declaredBy": {
13579
+ "description": "Who or what made this declaration: a tool, a team, a person",
13580
+ "type": "string"
13581
+ },
13582
+ "verified": {
13583
+ "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",
13584
+ "type": "array",
13585
+ "items": {
13586
+ "type": "string"
13587
+ }
13588
+ },
13589
+ "verifiedBy": {
13590
+ "description": "What checked the `verified` fields",
13591
+ "type": "string"
13592
+ },
13593
+ "provenance": {
13594
+ "description": "Where the declaration comes from and how to check it: a document, a CI step, a device log",
13595
+ "type": "array",
13596
+ "items": {
13597
+ "type": "object",
13598
+ "properties": {
13599
+ "url": {
13600
+ "type": "string",
13601
+ "minLength": 1
13602
+ },
13603
+ "name": {
13604
+ "type": "string"
13605
+ },
13606
+ "rel": {
13607
+ "description": "Why it is linked, in an open vocabulary: issue, run, trace, docs, source…",
13608
+ "type": "string"
13609
+ }
13610
+ },
13611
+ "required": [
13612
+ "url"
13613
+ ],
13614
+ "additionalProperties": {}
13615
+ }
13616
+ },
13617
+ "extensions": {
13618
+ "type": "object",
13619
+ "propertyNames": {
13620
+ "type": "string",
13621
+ "minLength": 1
13622
+ },
13623
+ "additionalProperties": {}
13624
+ }
13625
+ },
13626
+ "additionalProperties": {}
12359
13627
  }
12360
13628
  },
12361
13629
  "required": [
@@ -12683,6 +13951,102 @@
12683
13951
  "available": {
12684
13952
  "type": "boolean",
12685
13953
  "description": "False when the reference names no bytes (no bundle key, address or inline text)"
13954
+ },
13955
+ "scope": {
13956
+ "description": "What this recording shows as its producer declared it: its own `scope`, else its attempt's, check's, part's or layer's. Absent: the scope is unknown, never live, physical or audible",
13957
+ "type": "object",
13958
+ "properties": {
13959
+ "surface": {
13960
+ "description": "Where the product ran, in an open vocabulary: `browser`, `native-app`, `api`, `cli`…",
13961
+ "type": "string",
13962
+ "minLength": 1
13963
+ },
13964
+ "deviceKind": {
13965
+ "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",
13966
+ "type": "string",
13967
+ "minLength": 1
13968
+ },
13969
+ "syntheticData": {
13970
+ "description": "True: the data was made up for the run. False: real data. Absent: unknown",
13971
+ "type": "boolean"
13972
+ },
13973
+ "dependencies": {
13974
+ "description": "Whether what the product talks to was `scripted` (replies fixed in advance), `live` or `mixed`. An open vocabulary; absent is unknown",
13975
+ "type": "string",
13976
+ "minLength": 1
13977
+ },
13978
+ "audioCaptured": {
13979
+ "description": "True: the recording has real audio. False: it is silent. Absent: unknown",
13980
+ "type": "boolean"
13981
+ },
13982
+ "pacing": {
13983
+ "description": "How time ran, in an open vocabulary: `paced` (slowed or scripted for a viewer), `real-time`. Absent: unknown",
13984
+ "type": "string",
13985
+ "minLength": 1
13986
+ },
13987
+ "asserted": {
13988
+ "description": "The boundaries the result actually asserts. Activity visible in a recording beyond them is not verified behavior",
13989
+ "type": "array",
13990
+ "items": {
13991
+ "type": "string"
13992
+ }
13993
+ },
13994
+ "limitations": {
13995
+ "description": "Known limits of what this evidence shows, in the producer's words",
13996
+ "type": "array",
13997
+ "items": {
13998
+ "type": "string"
13999
+ }
14000
+ },
14001
+ "declaredBy": {
14002
+ "description": "Who or what made this declaration: a tool, a team, a person",
14003
+ "type": "string"
14004
+ },
14005
+ "verified": {
14006
+ "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",
14007
+ "type": "array",
14008
+ "items": {
14009
+ "type": "string"
14010
+ }
14011
+ },
14012
+ "verifiedBy": {
14013
+ "description": "What checked the `verified` fields",
14014
+ "type": "string"
14015
+ },
14016
+ "provenance": {
14017
+ "description": "Where the declaration comes from and how to check it: a document, a CI step, a device log",
14018
+ "type": "array",
14019
+ "items": {
14020
+ "type": "object",
14021
+ "properties": {
14022
+ "url": {
14023
+ "type": "string",
14024
+ "minLength": 1
14025
+ },
14026
+ "name": {
14027
+ "type": "string"
14028
+ },
14029
+ "rel": {
14030
+ "description": "Why it is linked, in an open vocabulary: issue, run, trace, docs, source…",
14031
+ "type": "string"
14032
+ }
14033
+ },
14034
+ "required": [
14035
+ "url"
14036
+ ],
14037
+ "additionalProperties": {}
14038
+ }
14039
+ },
14040
+ "extensions": {
14041
+ "type": "object",
14042
+ "propertyNames": {
14043
+ "type": "string",
14044
+ "minLength": 1
14045
+ },
14046
+ "additionalProperties": {}
14047
+ }
14048
+ },
14049
+ "additionalProperties": {}
12686
14050
  }
12687
14051
  },
12688
14052
  "required": [
@@ -12933,6 +14297,102 @@
12933
14297
  "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\"",
12934
14298
  "type": "string"
12935
14299
  },
14300
+ "scope": {
14301
+ "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",
14302
+ "type": "object",
14303
+ "properties": {
14304
+ "surface": {
14305
+ "description": "Where the product ran, in an open vocabulary: `browser`, `native-app`, `api`, `cli`…",
14306
+ "type": "string",
14307
+ "minLength": 1
14308
+ },
14309
+ "deviceKind": {
14310
+ "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",
14311
+ "type": "string",
14312
+ "minLength": 1
14313
+ },
14314
+ "syntheticData": {
14315
+ "description": "True: the data was made up for the run. False: real data. Absent: unknown",
14316
+ "type": "boolean"
14317
+ },
14318
+ "dependencies": {
14319
+ "description": "Whether what the product talks to was `scripted` (replies fixed in advance), `live` or `mixed`. An open vocabulary; absent is unknown",
14320
+ "type": "string",
14321
+ "minLength": 1
14322
+ },
14323
+ "audioCaptured": {
14324
+ "description": "True: the recording has real audio. False: it is silent. Absent: unknown",
14325
+ "type": "boolean"
14326
+ },
14327
+ "pacing": {
14328
+ "description": "How time ran, in an open vocabulary: `paced` (slowed or scripted for a viewer), `real-time`. Absent: unknown",
14329
+ "type": "string",
14330
+ "minLength": 1
14331
+ },
14332
+ "asserted": {
14333
+ "description": "The boundaries the result actually asserts. Activity visible in a recording beyond them is not verified behavior",
14334
+ "type": "array",
14335
+ "items": {
14336
+ "type": "string"
14337
+ }
14338
+ },
14339
+ "limitations": {
14340
+ "description": "Known limits of what this evidence shows, in the producer's words",
14341
+ "type": "array",
14342
+ "items": {
14343
+ "type": "string"
14344
+ }
14345
+ },
14346
+ "declaredBy": {
14347
+ "description": "Who or what made this declaration: a tool, a team, a person",
14348
+ "type": "string"
14349
+ },
14350
+ "verified": {
14351
+ "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",
14352
+ "type": "array",
14353
+ "items": {
14354
+ "type": "string"
14355
+ }
14356
+ },
14357
+ "verifiedBy": {
14358
+ "description": "What checked the `verified` fields",
14359
+ "type": "string"
14360
+ },
14361
+ "provenance": {
14362
+ "description": "Where the declaration comes from and how to check it: a document, a CI step, a device log",
14363
+ "type": "array",
14364
+ "items": {
14365
+ "type": "object",
14366
+ "properties": {
14367
+ "url": {
14368
+ "type": "string",
14369
+ "minLength": 1
14370
+ },
14371
+ "name": {
14372
+ "type": "string"
14373
+ },
14374
+ "rel": {
14375
+ "description": "Why it is linked, in an open vocabulary: issue, run, trace, docs, source…",
14376
+ "type": "string"
14377
+ }
14378
+ },
14379
+ "required": [
14380
+ "url"
14381
+ ],
14382
+ "additionalProperties": {}
14383
+ }
14384
+ },
14385
+ "extensions": {
14386
+ "type": "object",
14387
+ "propertyNames": {
14388
+ "type": "string",
14389
+ "minLength": 1
14390
+ },
14391
+ "additionalProperties": {}
14392
+ }
14393
+ },
14394
+ "additionalProperties": {}
14395
+ },
12936
14396
  "tags": {
12937
14397
  "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",
12938
14398
  "type": "array",
@@ -13069,6 +14529,102 @@
13069
14529
  "additionalProperties": {}
13070
14530
  }
13071
14531
  },
14532
+ "scope": {
14533
+ "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",
14534
+ "type": "object",
14535
+ "properties": {
14536
+ "surface": {
14537
+ "description": "Where the product ran, in an open vocabulary: `browser`, `native-app`, `api`, `cli`…",
14538
+ "type": "string",
14539
+ "minLength": 1
14540
+ },
14541
+ "deviceKind": {
14542
+ "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",
14543
+ "type": "string",
14544
+ "minLength": 1
14545
+ },
14546
+ "syntheticData": {
14547
+ "description": "True: the data was made up for the run. False: real data. Absent: unknown",
14548
+ "type": "boolean"
14549
+ },
14550
+ "dependencies": {
14551
+ "description": "Whether what the product talks to was `scripted` (replies fixed in advance), `live` or `mixed`. An open vocabulary; absent is unknown",
14552
+ "type": "string",
14553
+ "minLength": 1
14554
+ },
14555
+ "audioCaptured": {
14556
+ "description": "True: the recording has real audio. False: it is silent. Absent: unknown",
14557
+ "type": "boolean"
14558
+ },
14559
+ "pacing": {
14560
+ "description": "How time ran, in an open vocabulary: `paced` (slowed or scripted for a viewer), `real-time`. Absent: unknown",
14561
+ "type": "string",
14562
+ "minLength": 1
14563
+ },
14564
+ "asserted": {
14565
+ "description": "The boundaries the result actually asserts. Activity visible in a recording beyond them is not verified behavior",
14566
+ "type": "array",
14567
+ "items": {
14568
+ "type": "string"
14569
+ }
14570
+ },
14571
+ "limitations": {
14572
+ "description": "Known limits of what this evidence shows, in the producer's words",
14573
+ "type": "array",
14574
+ "items": {
14575
+ "type": "string"
14576
+ }
14577
+ },
14578
+ "declaredBy": {
14579
+ "description": "Who or what made this declaration: a tool, a team, a person",
14580
+ "type": "string"
14581
+ },
14582
+ "verified": {
14583
+ "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",
14584
+ "type": "array",
14585
+ "items": {
14586
+ "type": "string"
14587
+ }
14588
+ },
14589
+ "verifiedBy": {
14590
+ "description": "What checked the `verified` fields",
14591
+ "type": "string"
14592
+ },
14593
+ "provenance": {
14594
+ "description": "Where the declaration comes from and how to check it: a document, a CI step, a device log",
14595
+ "type": "array",
14596
+ "items": {
14597
+ "type": "object",
14598
+ "properties": {
14599
+ "url": {
14600
+ "type": "string",
14601
+ "minLength": 1
14602
+ },
14603
+ "name": {
14604
+ "type": "string"
14605
+ },
14606
+ "rel": {
14607
+ "description": "Why it is linked, in an open vocabulary: issue, run, trace, docs, source…",
14608
+ "type": "string"
14609
+ }
14610
+ },
14611
+ "required": [
14612
+ "url"
14613
+ ],
14614
+ "additionalProperties": {}
14615
+ }
14616
+ },
14617
+ "extensions": {
14618
+ "type": "object",
14619
+ "propertyNames": {
14620
+ "type": "string",
14621
+ "minLength": 1
14622
+ },
14623
+ "additionalProperties": {}
14624
+ }
14625
+ },
14626
+ "additionalProperties": {}
14627
+ },
13072
14628
  "extensions": {
13073
14629
  "type": "object",
13074
14630
  "propertyNames": {
@@ -13172,6 +14728,102 @@
13172
14728
  "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\"",
13173
14729
  "type": "string"
13174
14730
  },
14731
+ "scope": {
14732
+ "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",
14733
+ "type": "object",
14734
+ "properties": {
14735
+ "surface": {
14736
+ "description": "Where the product ran, in an open vocabulary: `browser`, `native-app`, `api`, `cli`…",
14737
+ "type": "string",
14738
+ "minLength": 1
14739
+ },
14740
+ "deviceKind": {
14741
+ "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",
14742
+ "type": "string",
14743
+ "minLength": 1
14744
+ },
14745
+ "syntheticData": {
14746
+ "description": "True: the data was made up for the run. False: real data. Absent: unknown",
14747
+ "type": "boolean"
14748
+ },
14749
+ "dependencies": {
14750
+ "description": "Whether what the product talks to was `scripted` (replies fixed in advance), `live` or `mixed`. An open vocabulary; absent is unknown",
14751
+ "type": "string",
14752
+ "minLength": 1
14753
+ },
14754
+ "audioCaptured": {
14755
+ "description": "True: the recording has real audio. False: it is silent. Absent: unknown",
14756
+ "type": "boolean"
14757
+ },
14758
+ "pacing": {
14759
+ "description": "How time ran, in an open vocabulary: `paced` (slowed or scripted for a viewer), `real-time`. Absent: unknown",
14760
+ "type": "string",
14761
+ "minLength": 1
14762
+ },
14763
+ "asserted": {
14764
+ "description": "The boundaries the result actually asserts. Activity visible in a recording beyond them is not verified behavior",
14765
+ "type": "array",
14766
+ "items": {
14767
+ "type": "string"
14768
+ }
14769
+ },
14770
+ "limitations": {
14771
+ "description": "Known limits of what this evidence shows, in the producer's words",
14772
+ "type": "array",
14773
+ "items": {
14774
+ "type": "string"
14775
+ }
14776
+ },
14777
+ "declaredBy": {
14778
+ "description": "Who or what made this declaration: a tool, a team, a person",
14779
+ "type": "string"
14780
+ },
14781
+ "verified": {
14782
+ "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",
14783
+ "type": "array",
14784
+ "items": {
14785
+ "type": "string"
14786
+ }
14787
+ },
14788
+ "verifiedBy": {
14789
+ "description": "What checked the `verified` fields",
14790
+ "type": "string"
14791
+ },
14792
+ "provenance": {
14793
+ "description": "Where the declaration comes from and how to check it: a document, a CI step, a device log",
14794
+ "type": "array",
14795
+ "items": {
14796
+ "type": "object",
14797
+ "properties": {
14798
+ "url": {
14799
+ "type": "string",
14800
+ "minLength": 1
14801
+ },
14802
+ "name": {
14803
+ "type": "string"
14804
+ },
14805
+ "rel": {
14806
+ "description": "Why it is linked, in an open vocabulary: issue, run, trace, docs, source…",
14807
+ "type": "string"
14808
+ }
14809
+ },
14810
+ "required": [
14811
+ "url"
14812
+ ],
14813
+ "additionalProperties": {}
14814
+ }
14815
+ },
14816
+ "extensions": {
14817
+ "type": "object",
14818
+ "propertyNames": {
14819
+ "type": "string",
14820
+ "minLength": 1
14821
+ },
14822
+ "additionalProperties": {}
14823
+ }
14824
+ },
14825
+ "additionalProperties": {}
14826
+ },
13175
14827
  "tags": {
13176
14828
  "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",
13177
14829
  "type": "array",
@@ -13354,6 +15006,102 @@
13354
15006
  "detail": {
13355
15007
  "type": "string"
13356
15008
  },
15009
+ "scope": {
15010
+ "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",
15011
+ "type": "object",
15012
+ "properties": {
15013
+ "surface": {
15014
+ "description": "Where the product ran, in an open vocabulary: `browser`, `native-app`, `api`, `cli`…",
15015
+ "type": "string",
15016
+ "minLength": 1
15017
+ },
15018
+ "deviceKind": {
15019
+ "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",
15020
+ "type": "string",
15021
+ "minLength": 1
15022
+ },
15023
+ "syntheticData": {
15024
+ "description": "True: the data was made up for the run. False: real data. Absent: unknown",
15025
+ "type": "boolean"
15026
+ },
15027
+ "dependencies": {
15028
+ "description": "Whether what the product talks to was `scripted` (replies fixed in advance), `live` or `mixed`. An open vocabulary; absent is unknown",
15029
+ "type": "string",
15030
+ "minLength": 1
15031
+ },
15032
+ "audioCaptured": {
15033
+ "description": "True: the recording has real audio. False: it is silent. Absent: unknown",
15034
+ "type": "boolean"
15035
+ },
15036
+ "pacing": {
15037
+ "description": "How time ran, in an open vocabulary: `paced` (slowed or scripted for a viewer), `real-time`. Absent: unknown",
15038
+ "type": "string",
15039
+ "minLength": 1
15040
+ },
15041
+ "asserted": {
15042
+ "description": "The boundaries the result actually asserts. Activity visible in a recording beyond them is not verified behavior",
15043
+ "type": "array",
15044
+ "items": {
15045
+ "type": "string"
15046
+ }
15047
+ },
15048
+ "limitations": {
15049
+ "description": "Known limits of what this evidence shows, in the producer's words",
15050
+ "type": "array",
15051
+ "items": {
15052
+ "type": "string"
15053
+ }
15054
+ },
15055
+ "declaredBy": {
15056
+ "description": "Who or what made this declaration: a tool, a team, a person",
15057
+ "type": "string"
15058
+ },
15059
+ "verified": {
15060
+ "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",
15061
+ "type": "array",
15062
+ "items": {
15063
+ "type": "string"
15064
+ }
15065
+ },
15066
+ "verifiedBy": {
15067
+ "description": "What checked the `verified` fields",
15068
+ "type": "string"
15069
+ },
15070
+ "provenance": {
15071
+ "description": "Where the declaration comes from and how to check it: a document, a CI step, a device log",
15072
+ "type": "array",
15073
+ "items": {
15074
+ "type": "object",
15075
+ "properties": {
15076
+ "url": {
15077
+ "type": "string",
15078
+ "minLength": 1
15079
+ },
15080
+ "name": {
15081
+ "type": "string"
15082
+ },
15083
+ "rel": {
15084
+ "description": "Why it is linked, in an open vocabulary: issue, run, trace, docs, source…",
15085
+ "type": "string"
15086
+ }
15087
+ },
15088
+ "required": [
15089
+ "url"
15090
+ ],
15091
+ "additionalProperties": {}
15092
+ }
15093
+ },
15094
+ "extensions": {
15095
+ "type": "object",
15096
+ "propertyNames": {
15097
+ "type": "string",
15098
+ "minLength": 1
15099
+ },
15100
+ "additionalProperties": {}
15101
+ }
15102
+ },
15103
+ "additionalProperties": {}
15104
+ },
13357
15105
  "steps": {
13358
15106
  "type": "array",
13359
15107
  "items": {
@@ -13448,6 +15196,102 @@
13448
15196
  "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\"",
13449
15197
  "type": "string"
13450
15198
  },
15199
+ "scope": {
15200
+ "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",
15201
+ "type": "object",
15202
+ "properties": {
15203
+ "surface": {
15204
+ "description": "Where the product ran, in an open vocabulary: `browser`, `native-app`, `api`, `cli`…",
15205
+ "type": "string",
15206
+ "minLength": 1
15207
+ },
15208
+ "deviceKind": {
15209
+ "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",
15210
+ "type": "string",
15211
+ "minLength": 1
15212
+ },
15213
+ "syntheticData": {
15214
+ "description": "True: the data was made up for the run. False: real data. Absent: unknown",
15215
+ "type": "boolean"
15216
+ },
15217
+ "dependencies": {
15218
+ "description": "Whether what the product talks to was `scripted` (replies fixed in advance), `live` or `mixed`. An open vocabulary; absent is unknown",
15219
+ "type": "string",
15220
+ "minLength": 1
15221
+ },
15222
+ "audioCaptured": {
15223
+ "description": "True: the recording has real audio. False: it is silent. Absent: unknown",
15224
+ "type": "boolean"
15225
+ },
15226
+ "pacing": {
15227
+ "description": "How time ran, in an open vocabulary: `paced` (slowed or scripted for a viewer), `real-time`. Absent: unknown",
15228
+ "type": "string",
15229
+ "minLength": 1
15230
+ },
15231
+ "asserted": {
15232
+ "description": "The boundaries the result actually asserts. Activity visible in a recording beyond them is not verified behavior",
15233
+ "type": "array",
15234
+ "items": {
15235
+ "type": "string"
15236
+ }
15237
+ },
15238
+ "limitations": {
15239
+ "description": "Known limits of what this evidence shows, in the producer's words",
15240
+ "type": "array",
15241
+ "items": {
15242
+ "type": "string"
15243
+ }
15244
+ },
15245
+ "declaredBy": {
15246
+ "description": "Who or what made this declaration: a tool, a team, a person",
15247
+ "type": "string"
15248
+ },
15249
+ "verified": {
15250
+ "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",
15251
+ "type": "array",
15252
+ "items": {
15253
+ "type": "string"
15254
+ }
15255
+ },
15256
+ "verifiedBy": {
15257
+ "description": "What checked the `verified` fields",
15258
+ "type": "string"
15259
+ },
15260
+ "provenance": {
15261
+ "description": "Where the declaration comes from and how to check it: a document, a CI step, a device log",
15262
+ "type": "array",
15263
+ "items": {
15264
+ "type": "object",
15265
+ "properties": {
15266
+ "url": {
15267
+ "type": "string",
15268
+ "minLength": 1
15269
+ },
15270
+ "name": {
15271
+ "type": "string"
15272
+ },
15273
+ "rel": {
15274
+ "description": "Why it is linked, in an open vocabulary: issue, run, trace, docs, source…",
15275
+ "type": "string"
15276
+ }
15277
+ },
15278
+ "required": [
15279
+ "url"
15280
+ ],
15281
+ "additionalProperties": {}
15282
+ }
15283
+ },
15284
+ "extensions": {
15285
+ "type": "object",
15286
+ "propertyNames": {
15287
+ "type": "string",
15288
+ "minLength": 1
15289
+ },
15290
+ "additionalProperties": {}
15291
+ }
15292
+ },
15293
+ "additionalProperties": {}
15294
+ },
13451
15295
  "tags": {
13452
15296
  "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",
13453
15297
  "type": "array",
@@ -13659,6 +15503,102 @@
13659
15503
  "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\"",
13660
15504
  "type": "string"
13661
15505
  },
15506
+ "scope": {
15507
+ "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",
15508
+ "type": "object",
15509
+ "properties": {
15510
+ "surface": {
15511
+ "description": "Where the product ran, in an open vocabulary: `browser`, `native-app`, `api`, `cli`…",
15512
+ "type": "string",
15513
+ "minLength": 1
15514
+ },
15515
+ "deviceKind": {
15516
+ "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",
15517
+ "type": "string",
15518
+ "minLength": 1
15519
+ },
15520
+ "syntheticData": {
15521
+ "description": "True: the data was made up for the run. False: real data. Absent: unknown",
15522
+ "type": "boolean"
15523
+ },
15524
+ "dependencies": {
15525
+ "description": "Whether what the product talks to was `scripted` (replies fixed in advance), `live` or `mixed`. An open vocabulary; absent is unknown",
15526
+ "type": "string",
15527
+ "minLength": 1
15528
+ },
15529
+ "audioCaptured": {
15530
+ "description": "True: the recording has real audio. False: it is silent. Absent: unknown",
15531
+ "type": "boolean"
15532
+ },
15533
+ "pacing": {
15534
+ "description": "How time ran, in an open vocabulary: `paced` (slowed or scripted for a viewer), `real-time`. Absent: unknown",
15535
+ "type": "string",
15536
+ "minLength": 1
15537
+ },
15538
+ "asserted": {
15539
+ "description": "The boundaries the result actually asserts. Activity visible in a recording beyond them is not verified behavior",
15540
+ "type": "array",
15541
+ "items": {
15542
+ "type": "string"
15543
+ }
15544
+ },
15545
+ "limitations": {
15546
+ "description": "Known limits of what this evidence shows, in the producer's words",
15547
+ "type": "array",
15548
+ "items": {
15549
+ "type": "string"
15550
+ }
15551
+ },
15552
+ "declaredBy": {
15553
+ "description": "Who or what made this declaration: a tool, a team, a person",
15554
+ "type": "string"
15555
+ },
15556
+ "verified": {
15557
+ "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",
15558
+ "type": "array",
15559
+ "items": {
15560
+ "type": "string"
15561
+ }
15562
+ },
15563
+ "verifiedBy": {
15564
+ "description": "What checked the `verified` fields",
15565
+ "type": "string"
15566
+ },
15567
+ "provenance": {
15568
+ "description": "Where the declaration comes from and how to check it: a document, a CI step, a device log",
15569
+ "type": "array",
15570
+ "items": {
15571
+ "type": "object",
15572
+ "properties": {
15573
+ "url": {
15574
+ "type": "string",
15575
+ "minLength": 1
15576
+ },
15577
+ "name": {
15578
+ "type": "string"
15579
+ },
15580
+ "rel": {
15581
+ "description": "Why it is linked, in an open vocabulary: issue, run, trace, docs, source…",
15582
+ "type": "string"
15583
+ }
15584
+ },
15585
+ "required": [
15586
+ "url"
15587
+ ],
15588
+ "additionalProperties": {}
15589
+ }
15590
+ },
15591
+ "extensions": {
15592
+ "type": "object",
15593
+ "propertyNames": {
15594
+ "type": "string",
15595
+ "minLength": 1
15596
+ },
15597
+ "additionalProperties": {}
15598
+ }
15599
+ },
15600
+ "additionalProperties": {}
15601
+ },
13662
15602
  "tags": {
13663
15603
  "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",
13664
15604
  "type": "array",
@@ -13825,7 +15765,103 @@
13825
15765
  "type": "object",
13826
15766
  "properties": {},
13827
15767
  "additionalProperties": {},
13828
- "description": "What the run as a whole carries: its logs, links, labels, annotations and extensions"
15768
+ "description": "What the run as a whole carries: its logs, links, labels, annotations, scope and extensions"
15769
+ },
15770
+ "inheritedScope": {
15771
+ "description": "The scope the check inherits: its part's declaration, else its layer's. Absent when neither declared one: unknown, not live or physical",
15772
+ "type": "object",
15773
+ "properties": {
15774
+ "surface": {
15775
+ "description": "Where the product ran, in an open vocabulary: `browser`, `native-app`, `api`, `cli`…",
15776
+ "type": "string",
15777
+ "minLength": 1
15778
+ },
15779
+ "deviceKind": {
15780
+ "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",
15781
+ "type": "string",
15782
+ "minLength": 1
15783
+ },
15784
+ "syntheticData": {
15785
+ "description": "True: the data was made up for the run. False: real data. Absent: unknown",
15786
+ "type": "boolean"
15787
+ },
15788
+ "dependencies": {
15789
+ "description": "Whether what the product talks to was `scripted` (replies fixed in advance), `live` or `mixed`. An open vocabulary; absent is unknown",
15790
+ "type": "string",
15791
+ "minLength": 1
15792
+ },
15793
+ "audioCaptured": {
15794
+ "description": "True: the recording has real audio. False: it is silent. Absent: unknown",
15795
+ "type": "boolean"
15796
+ },
15797
+ "pacing": {
15798
+ "description": "How time ran, in an open vocabulary: `paced` (slowed or scripted for a viewer), `real-time`. Absent: unknown",
15799
+ "type": "string",
15800
+ "minLength": 1
15801
+ },
15802
+ "asserted": {
15803
+ "description": "The boundaries the result actually asserts. Activity visible in a recording beyond them is not verified behavior",
15804
+ "type": "array",
15805
+ "items": {
15806
+ "type": "string"
15807
+ }
15808
+ },
15809
+ "limitations": {
15810
+ "description": "Known limits of what this evidence shows, in the producer's words",
15811
+ "type": "array",
15812
+ "items": {
15813
+ "type": "string"
15814
+ }
15815
+ },
15816
+ "declaredBy": {
15817
+ "description": "Who or what made this declaration: a tool, a team, a person",
15818
+ "type": "string"
15819
+ },
15820
+ "verified": {
15821
+ "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",
15822
+ "type": "array",
15823
+ "items": {
15824
+ "type": "string"
15825
+ }
15826
+ },
15827
+ "verifiedBy": {
15828
+ "description": "What checked the `verified` fields",
15829
+ "type": "string"
15830
+ },
15831
+ "provenance": {
15832
+ "description": "Where the declaration comes from and how to check it: a document, a CI step, a device log",
15833
+ "type": "array",
15834
+ "items": {
15835
+ "type": "object",
15836
+ "properties": {
15837
+ "url": {
15838
+ "type": "string",
15839
+ "minLength": 1
15840
+ },
15841
+ "name": {
15842
+ "type": "string"
15843
+ },
15844
+ "rel": {
15845
+ "description": "Why it is linked, in an open vocabulary: issue, run, trace, docs, source…",
15846
+ "type": "string"
15847
+ }
15848
+ },
15849
+ "required": [
15850
+ "url"
15851
+ ],
15852
+ "additionalProperties": {}
15853
+ }
15854
+ },
15855
+ "extensions": {
15856
+ "type": "object",
15857
+ "propertyNames": {
15858
+ "type": "string",
15859
+ "minLength": 1
15860
+ },
15861
+ "additionalProperties": {}
15862
+ }
15863
+ },
15864
+ "additionalProperties": {}
13829
15865
  }
13830
15866
  },
13831
15867
  "required": [
@@ -14665,6 +16701,28 @@
14665
16701
  "additionalProperties": {}
14666
16702
  }
14667
16703
  },
16704
+ "scopes": {
16705
+ "description": "Scope tokens of recordings (`device:simulator`, `unknown`) with the number of tests that have a recording stating each",
16706
+ "type": "array",
16707
+ "items": {
16708
+ "type": "object",
16709
+ "properties": {
16710
+ "value": {
16711
+ "type": "string"
16712
+ },
16713
+ "count": {
16714
+ "type": "integer",
16715
+ "minimum": 0,
16716
+ "maximum": 9007199254740991
16717
+ }
16718
+ },
16719
+ "required": [
16720
+ "value",
16721
+ "count"
16722
+ ],
16723
+ "additionalProperties": {}
16724
+ }
16725
+ },
14668
16726
  "branches": {
14669
16727
  "type": "array",
14670
16728
  "items": {
@@ -14991,6 +17049,102 @@
14991
17049
  "available": {
14992
17050
  "type": "boolean",
14993
17051
  "description": "False when the reference names no bytes (no bundle key, address or inline text)"
17052
+ },
17053
+ "scope": {
17054
+ "description": "What this recording shows as its producer declared it: its own `scope`, else its attempt's, check's, part's or layer's. Absent: the scope is unknown, never live, physical or audible",
17055
+ "type": "object",
17056
+ "properties": {
17057
+ "surface": {
17058
+ "description": "Where the product ran, in an open vocabulary: `browser`, `native-app`, `api`, `cli`…",
17059
+ "type": "string",
17060
+ "minLength": 1
17061
+ },
17062
+ "deviceKind": {
17063
+ "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",
17064
+ "type": "string",
17065
+ "minLength": 1
17066
+ },
17067
+ "syntheticData": {
17068
+ "description": "True: the data was made up for the run. False: real data. Absent: unknown",
17069
+ "type": "boolean"
17070
+ },
17071
+ "dependencies": {
17072
+ "description": "Whether what the product talks to was `scripted` (replies fixed in advance), `live` or `mixed`. An open vocabulary; absent is unknown",
17073
+ "type": "string",
17074
+ "minLength": 1
17075
+ },
17076
+ "audioCaptured": {
17077
+ "description": "True: the recording has real audio. False: it is silent. Absent: unknown",
17078
+ "type": "boolean"
17079
+ },
17080
+ "pacing": {
17081
+ "description": "How time ran, in an open vocabulary: `paced` (slowed or scripted for a viewer), `real-time`. Absent: unknown",
17082
+ "type": "string",
17083
+ "minLength": 1
17084
+ },
17085
+ "asserted": {
17086
+ "description": "The boundaries the result actually asserts. Activity visible in a recording beyond them is not verified behavior",
17087
+ "type": "array",
17088
+ "items": {
17089
+ "type": "string"
17090
+ }
17091
+ },
17092
+ "limitations": {
17093
+ "description": "Known limits of what this evidence shows, in the producer's words",
17094
+ "type": "array",
17095
+ "items": {
17096
+ "type": "string"
17097
+ }
17098
+ },
17099
+ "declaredBy": {
17100
+ "description": "Who or what made this declaration: a tool, a team, a person",
17101
+ "type": "string"
17102
+ },
17103
+ "verified": {
17104
+ "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",
17105
+ "type": "array",
17106
+ "items": {
17107
+ "type": "string"
17108
+ }
17109
+ },
17110
+ "verifiedBy": {
17111
+ "description": "What checked the `verified` fields",
17112
+ "type": "string"
17113
+ },
17114
+ "provenance": {
17115
+ "description": "Where the declaration comes from and how to check it: a document, a CI step, a device log",
17116
+ "type": "array",
17117
+ "items": {
17118
+ "type": "object",
17119
+ "properties": {
17120
+ "url": {
17121
+ "type": "string",
17122
+ "minLength": 1
17123
+ },
17124
+ "name": {
17125
+ "type": "string"
17126
+ },
17127
+ "rel": {
17128
+ "description": "Why it is linked, in an open vocabulary: issue, run, trace, docs, source…",
17129
+ "type": "string"
17130
+ }
17131
+ },
17132
+ "required": [
17133
+ "url"
17134
+ ],
17135
+ "additionalProperties": {}
17136
+ }
17137
+ },
17138
+ "extensions": {
17139
+ "type": "object",
17140
+ "propertyNames": {
17141
+ "type": "string",
17142
+ "minLength": 1
17143
+ },
17144
+ "additionalProperties": {}
17145
+ }
17146
+ },
17147
+ "additionalProperties": {}
14994
17148
  }
14995
17149
  },
14996
17150
  "required": [
@@ -15194,6 +17348,16 @@
15194
17348
  "type": "string"
15195
17349
  }
15196
17350
  },
17351
+ "scopeProfiles": {
17352
+ "description": "The scope tokens each distinct playable recording of its current results declares (`device:physical`, `audio:silent`); `[\"unknown\"]` for a recording that declared none. What `?scope=` matches, one recording at a time. Absent when it has no playable recording",
17353
+ "type": "array",
17354
+ "items": {
17355
+ "type": "array",
17356
+ "items": {
17357
+ "type": "string"
17358
+ }
17359
+ }
17360
+ },
15197
17361
  "labels": {
15198
17362
  "type": "object",
15199
17363
  "propertyNames": {
@@ -15932,6 +18096,102 @@
15932
18096
  "available": {
15933
18097
  "type": "boolean",
15934
18098
  "description": "False when the reference names no bytes (no bundle key, address or inline text)"
18099
+ },
18100
+ "scope": {
18101
+ "description": "What this recording shows as its producer declared it: its own `scope`, else its attempt's, check's, part's or layer's. Absent: the scope is unknown, never live, physical or audible",
18102
+ "type": "object",
18103
+ "properties": {
18104
+ "surface": {
18105
+ "description": "Where the product ran, in an open vocabulary: `browser`, `native-app`, `api`, `cli`…",
18106
+ "type": "string",
18107
+ "minLength": 1
18108
+ },
18109
+ "deviceKind": {
18110
+ "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",
18111
+ "type": "string",
18112
+ "minLength": 1
18113
+ },
18114
+ "syntheticData": {
18115
+ "description": "True: the data was made up for the run. False: real data. Absent: unknown",
18116
+ "type": "boolean"
18117
+ },
18118
+ "dependencies": {
18119
+ "description": "Whether what the product talks to was `scripted` (replies fixed in advance), `live` or `mixed`. An open vocabulary; absent is unknown",
18120
+ "type": "string",
18121
+ "minLength": 1
18122
+ },
18123
+ "audioCaptured": {
18124
+ "description": "True: the recording has real audio. False: it is silent. Absent: unknown",
18125
+ "type": "boolean"
18126
+ },
18127
+ "pacing": {
18128
+ "description": "How time ran, in an open vocabulary: `paced` (slowed or scripted for a viewer), `real-time`. Absent: unknown",
18129
+ "type": "string",
18130
+ "minLength": 1
18131
+ },
18132
+ "asserted": {
18133
+ "description": "The boundaries the result actually asserts. Activity visible in a recording beyond them is not verified behavior",
18134
+ "type": "array",
18135
+ "items": {
18136
+ "type": "string"
18137
+ }
18138
+ },
18139
+ "limitations": {
18140
+ "description": "Known limits of what this evidence shows, in the producer's words",
18141
+ "type": "array",
18142
+ "items": {
18143
+ "type": "string"
18144
+ }
18145
+ },
18146
+ "declaredBy": {
18147
+ "description": "Who or what made this declaration: a tool, a team, a person",
18148
+ "type": "string"
18149
+ },
18150
+ "verified": {
18151
+ "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",
18152
+ "type": "array",
18153
+ "items": {
18154
+ "type": "string"
18155
+ }
18156
+ },
18157
+ "verifiedBy": {
18158
+ "description": "What checked the `verified` fields",
18159
+ "type": "string"
18160
+ },
18161
+ "provenance": {
18162
+ "description": "Where the declaration comes from and how to check it: a document, a CI step, a device log",
18163
+ "type": "array",
18164
+ "items": {
18165
+ "type": "object",
18166
+ "properties": {
18167
+ "url": {
18168
+ "type": "string",
18169
+ "minLength": 1
18170
+ },
18171
+ "name": {
18172
+ "type": "string"
18173
+ },
18174
+ "rel": {
18175
+ "description": "Why it is linked, in an open vocabulary: issue, run, trace, docs, source…",
18176
+ "type": "string"
18177
+ }
18178
+ },
18179
+ "required": [
18180
+ "url"
18181
+ ],
18182
+ "additionalProperties": {}
18183
+ }
18184
+ },
18185
+ "extensions": {
18186
+ "type": "object",
18187
+ "propertyNames": {
18188
+ "type": "string",
18189
+ "minLength": 1
18190
+ },
18191
+ "additionalProperties": {}
18192
+ }
18193
+ },
18194
+ "additionalProperties": {}
15935
18195
  }
15936
18196
  },
15937
18197
  "required": [
@@ -16135,6 +18395,16 @@
16135
18395
  "type": "string"
16136
18396
  }
16137
18397
  },
18398
+ "scopeProfiles": {
18399
+ "description": "The scope tokens each distinct playable recording of its current results declares (`device:physical`, `audio:silent`); `[\"unknown\"]` for a recording that declared none. What `?scope=` matches, one recording at a time. Absent when it has no playable recording",
18400
+ "type": "array",
18401
+ "items": {
18402
+ "type": "array",
18403
+ "items": {
18404
+ "type": "string"
18405
+ }
18406
+ }
18407
+ },
16138
18408
  "labels": {
16139
18409
  "type": "object",
16140
18410
  "propertyNames": {
@@ -16377,6 +18647,102 @@
16377
18647
  "available": {
16378
18648
  "type": "boolean",
16379
18649
  "description": "False when the reference names no bytes (no bundle key, address or inline text)"
18650
+ },
18651
+ "scope": {
18652
+ "description": "What this recording shows as its producer declared it: its own `scope`, else its attempt's, check's, part's or layer's. Absent: the scope is unknown, never live, physical or audible",
18653
+ "type": "object",
18654
+ "properties": {
18655
+ "surface": {
18656
+ "description": "Where the product ran, in an open vocabulary: `browser`, `native-app`, `api`, `cli`…",
18657
+ "type": "string",
18658
+ "minLength": 1
18659
+ },
18660
+ "deviceKind": {
18661
+ "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",
18662
+ "type": "string",
18663
+ "minLength": 1
18664
+ },
18665
+ "syntheticData": {
18666
+ "description": "True: the data was made up for the run. False: real data. Absent: unknown",
18667
+ "type": "boolean"
18668
+ },
18669
+ "dependencies": {
18670
+ "description": "Whether what the product talks to was `scripted` (replies fixed in advance), `live` or `mixed`. An open vocabulary; absent is unknown",
18671
+ "type": "string",
18672
+ "minLength": 1
18673
+ },
18674
+ "audioCaptured": {
18675
+ "description": "True: the recording has real audio. False: it is silent. Absent: unknown",
18676
+ "type": "boolean"
18677
+ },
18678
+ "pacing": {
18679
+ "description": "How time ran, in an open vocabulary: `paced` (slowed or scripted for a viewer), `real-time`. Absent: unknown",
18680
+ "type": "string",
18681
+ "minLength": 1
18682
+ },
18683
+ "asserted": {
18684
+ "description": "The boundaries the result actually asserts. Activity visible in a recording beyond them is not verified behavior",
18685
+ "type": "array",
18686
+ "items": {
18687
+ "type": "string"
18688
+ }
18689
+ },
18690
+ "limitations": {
18691
+ "description": "Known limits of what this evidence shows, in the producer's words",
18692
+ "type": "array",
18693
+ "items": {
18694
+ "type": "string"
18695
+ }
18696
+ },
18697
+ "declaredBy": {
18698
+ "description": "Who or what made this declaration: a tool, a team, a person",
18699
+ "type": "string"
18700
+ },
18701
+ "verified": {
18702
+ "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",
18703
+ "type": "array",
18704
+ "items": {
18705
+ "type": "string"
18706
+ }
18707
+ },
18708
+ "verifiedBy": {
18709
+ "description": "What checked the `verified` fields",
18710
+ "type": "string"
18711
+ },
18712
+ "provenance": {
18713
+ "description": "Where the declaration comes from and how to check it: a document, a CI step, a device log",
18714
+ "type": "array",
18715
+ "items": {
18716
+ "type": "object",
18717
+ "properties": {
18718
+ "url": {
18719
+ "type": "string",
18720
+ "minLength": 1
18721
+ },
18722
+ "name": {
18723
+ "type": "string"
18724
+ },
18725
+ "rel": {
18726
+ "description": "Why it is linked, in an open vocabulary: issue, run, trace, docs, source…",
18727
+ "type": "string"
18728
+ }
18729
+ },
18730
+ "required": [
18731
+ "url"
18732
+ ],
18733
+ "additionalProperties": {}
18734
+ }
18735
+ },
18736
+ "extensions": {
18737
+ "type": "object",
18738
+ "propertyNames": {
18739
+ "type": "string",
18740
+ "minLength": 1
18741
+ },
18742
+ "additionalProperties": {}
18743
+ }
18744
+ },
18745
+ "additionalProperties": {}
16380
18746
  }
16381
18747
  },
16382
18748
  "required": [
@@ -17052,6 +19418,102 @@
17052
19418
  "available": {
17053
19419
  "type": "boolean",
17054
19420
  "description": "False when the reference names no bytes (no bundle key, address or inline text)"
19421
+ },
19422
+ "scope": {
19423
+ "description": "What this recording shows as its producer declared it: its own `scope`, else its attempt's, check's, part's or layer's. Absent: the scope is unknown, never live, physical or audible",
19424
+ "type": "object",
19425
+ "properties": {
19426
+ "surface": {
19427
+ "description": "Where the product ran, in an open vocabulary: `browser`, `native-app`, `api`, `cli`…",
19428
+ "type": "string",
19429
+ "minLength": 1
19430
+ },
19431
+ "deviceKind": {
19432
+ "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",
19433
+ "type": "string",
19434
+ "minLength": 1
19435
+ },
19436
+ "syntheticData": {
19437
+ "description": "True: the data was made up for the run. False: real data. Absent: unknown",
19438
+ "type": "boolean"
19439
+ },
19440
+ "dependencies": {
19441
+ "description": "Whether what the product talks to was `scripted` (replies fixed in advance), `live` or `mixed`. An open vocabulary; absent is unknown",
19442
+ "type": "string",
19443
+ "minLength": 1
19444
+ },
19445
+ "audioCaptured": {
19446
+ "description": "True: the recording has real audio. False: it is silent. Absent: unknown",
19447
+ "type": "boolean"
19448
+ },
19449
+ "pacing": {
19450
+ "description": "How time ran, in an open vocabulary: `paced` (slowed or scripted for a viewer), `real-time`. Absent: unknown",
19451
+ "type": "string",
19452
+ "minLength": 1
19453
+ },
19454
+ "asserted": {
19455
+ "description": "The boundaries the result actually asserts. Activity visible in a recording beyond them is not verified behavior",
19456
+ "type": "array",
19457
+ "items": {
19458
+ "type": "string"
19459
+ }
19460
+ },
19461
+ "limitations": {
19462
+ "description": "Known limits of what this evidence shows, in the producer's words",
19463
+ "type": "array",
19464
+ "items": {
19465
+ "type": "string"
19466
+ }
19467
+ },
19468
+ "declaredBy": {
19469
+ "description": "Who or what made this declaration: a tool, a team, a person",
19470
+ "type": "string"
19471
+ },
19472
+ "verified": {
19473
+ "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",
19474
+ "type": "array",
19475
+ "items": {
19476
+ "type": "string"
19477
+ }
19478
+ },
19479
+ "verifiedBy": {
19480
+ "description": "What checked the `verified` fields",
19481
+ "type": "string"
19482
+ },
19483
+ "provenance": {
19484
+ "description": "Where the declaration comes from and how to check it: a document, a CI step, a device log",
19485
+ "type": "array",
19486
+ "items": {
19487
+ "type": "object",
19488
+ "properties": {
19489
+ "url": {
19490
+ "type": "string",
19491
+ "minLength": 1
19492
+ },
19493
+ "name": {
19494
+ "type": "string"
19495
+ },
19496
+ "rel": {
19497
+ "description": "Why it is linked, in an open vocabulary: issue, run, trace, docs, source…",
19498
+ "type": "string"
19499
+ }
19500
+ },
19501
+ "required": [
19502
+ "url"
19503
+ ],
19504
+ "additionalProperties": {}
19505
+ }
19506
+ },
19507
+ "extensions": {
19508
+ "type": "object",
19509
+ "propertyNames": {
19510
+ "type": "string",
19511
+ "minLength": 1
19512
+ },
19513
+ "additionalProperties": {}
19514
+ }
19515
+ },
19516
+ "additionalProperties": {}
17055
19517
  }
17056
19518
  },
17057
19519
  "required": [
@@ -17604,6 +20066,102 @@
17604
20066
  "available": {
17605
20067
  "type": "boolean",
17606
20068
  "description": "False when the reference names no bytes (no bundle key, address or inline text)"
20069
+ },
20070
+ "scope": {
20071
+ "description": "What this recording shows as its producer declared it: its own `scope`, else its attempt's, check's, part's or layer's. Absent: the scope is unknown, never live, physical or audible",
20072
+ "type": "object",
20073
+ "properties": {
20074
+ "surface": {
20075
+ "description": "Where the product ran, in an open vocabulary: `browser`, `native-app`, `api`, `cli`…",
20076
+ "type": "string",
20077
+ "minLength": 1
20078
+ },
20079
+ "deviceKind": {
20080
+ "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",
20081
+ "type": "string",
20082
+ "minLength": 1
20083
+ },
20084
+ "syntheticData": {
20085
+ "description": "True: the data was made up for the run. False: real data. Absent: unknown",
20086
+ "type": "boolean"
20087
+ },
20088
+ "dependencies": {
20089
+ "description": "Whether what the product talks to was `scripted` (replies fixed in advance), `live` or `mixed`. An open vocabulary; absent is unknown",
20090
+ "type": "string",
20091
+ "minLength": 1
20092
+ },
20093
+ "audioCaptured": {
20094
+ "description": "True: the recording has real audio. False: it is silent. Absent: unknown",
20095
+ "type": "boolean"
20096
+ },
20097
+ "pacing": {
20098
+ "description": "How time ran, in an open vocabulary: `paced` (slowed or scripted for a viewer), `real-time`. Absent: unknown",
20099
+ "type": "string",
20100
+ "minLength": 1
20101
+ },
20102
+ "asserted": {
20103
+ "description": "The boundaries the result actually asserts. Activity visible in a recording beyond them is not verified behavior",
20104
+ "type": "array",
20105
+ "items": {
20106
+ "type": "string"
20107
+ }
20108
+ },
20109
+ "limitations": {
20110
+ "description": "Known limits of what this evidence shows, in the producer's words",
20111
+ "type": "array",
20112
+ "items": {
20113
+ "type": "string"
20114
+ }
20115
+ },
20116
+ "declaredBy": {
20117
+ "description": "Who or what made this declaration: a tool, a team, a person",
20118
+ "type": "string"
20119
+ },
20120
+ "verified": {
20121
+ "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",
20122
+ "type": "array",
20123
+ "items": {
20124
+ "type": "string"
20125
+ }
20126
+ },
20127
+ "verifiedBy": {
20128
+ "description": "What checked the `verified` fields",
20129
+ "type": "string"
20130
+ },
20131
+ "provenance": {
20132
+ "description": "Where the declaration comes from and how to check it: a document, a CI step, a device log",
20133
+ "type": "array",
20134
+ "items": {
20135
+ "type": "object",
20136
+ "properties": {
20137
+ "url": {
20138
+ "type": "string",
20139
+ "minLength": 1
20140
+ },
20141
+ "name": {
20142
+ "type": "string"
20143
+ },
20144
+ "rel": {
20145
+ "description": "Why it is linked, in an open vocabulary: issue, run, trace, docs, source…",
20146
+ "type": "string"
20147
+ }
20148
+ },
20149
+ "required": [
20150
+ "url"
20151
+ ],
20152
+ "additionalProperties": {}
20153
+ }
20154
+ },
20155
+ "extensions": {
20156
+ "type": "object",
20157
+ "propertyNames": {
20158
+ "type": "string",
20159
+ "minLength": 1
20160
+ },
20161
+ "additionalProperties": {}
20162
+ }
20163
+ },
20164
+ "additionalProperties": {}
17607
20165
  }
17608
20166
  },
17609
20167
  "required": [