@crvouga/atlas 0.10.0 → 0.10.2

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 (51) hide show
  1. package/CHANGELOG.md +13 -1
  2. package/dist/reports/src/layer-merge.d.ts +5 -1
  3. package/dist/reports/src/layer-merge.js +17 -2
  4. package/dist/schema/src/common.d.ts +2 -2
  5. package/dist/schema/src/manifest.d.ts +4 -4
  6. package/dist/schema/src/spec.d.ts +6 -6
  7. package/docs/agents.md +25 -0
  8. package/docs/reference/reports.md +2 -0
  9. package/docs/report-contract.md +3 -0
  10. package/llms-full.txt +28 -0
  11. package/package.json +3 -3
  12. package/packages/schema/schemas/check-detail.schema.json +15 -15
  13. package/packages/schema/schemas/checks-result.schema.json +2 -2
  14. package/packages/schema/schemas/command-error.schema.json +4 -4
  15. package/packages/schema/schemas/doctor-result.schema.json +4 -4
  16. package/packages/schema/schemas/effective-delta.schema.json +69 -95
  17. package/packages/schema/schemas/effective-evidence.schema.json +63 -89
  18. package/packages/schema/schemas/evidence-page.schema.json +41 -59
  19. package/packages/schema/schemas/init-plan.schema.json +58 -90
  20. package/packages/schema/schemas/layer-rows.schema.json +17 -29
  21. package/packages/schema/schemas/layer.schema.json +54 -70
  22. package/packages/schema/schemas/live-run-start.schema.json +1 -1
  23. package/packages/schema/schemas/live-run.schema.json +1 -1
  24. package/packages/schema/schemas/merge-result.schema.json +6 -6
  25. package/packages/schema/schemas/outline.schema.json +7 -11
  26. package/packages/schema/schemas/path-record.schema.json +12 -28
  27. package/packages/schema/schemas/problem.schema.json +9 -9
  28. package/packages/schema/schemas/publish-checks.schema.json +27 -43
  29. package/packages/schema/schemas/publish-result.schema.json +16 -24
  30. package/packages/schema/schemas/ready.schema.json +12 -12
  31. package/packages/schema/schemas/report-event.schema.json +22 -28
  32. package/packages/schema/schemas/report-run.schema.json +33 -59
  33. package/packages/schema/schemas/report-runs.schema.json +24 -38
  34. package/packages/schema/schemas/report-status.schema.json +30 -54
  35. package/packages/schema/schemas/run-info.schema.json +9 -21
  36. package/packages/schema/schemas/run-summary.schema.json +6 -14
  37. package/packages/schema/schemas/server-config.schema.json +21 -21
  38. package/packages/schema/schemas/server-editable-settings.schema.json +14 -14
  39. package/packages/schema/schemas/server-info.schema.json +15 -19
  40. package/packages/schema/schemas/server-settings-snapshot.schema.json +28 -28
  41. package/packages/schema/schemas/spec-set.schema.json +16 -24
  42. package/packages/schema/schemas/state-node.schema.json +16 -16
  43. package/packages/schema/schemas/state-record.schema.json +5 -9
  44. package/packages/schema/schemas/store-listing.schema.json +3 -7
  45. package/packages/schema/schemas/store-write-result.schema.json +2 -2
  46. package/packages/schema/schemas/stream-result.schema.json +13 -17
  47. package/packages/schema/schemas/test-catalog.schema.json +109 -151
  48. package/packages/schema/schemas/test-history.schema.json +72 -136
  49. package/packages/schema/schemas/timeline-entry.schema.json +2 -2
  50. package/packages/schema/schemas/transition-record.schema.json +9 -21
  51. package/packages/server/openapi.json +620 -910
@@ -6120,7 +6120,7 @@
6120
6120
  "id": {
6121
6121
  "type": "string",
6122
6122
  "format": "uuid",
6123
- "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$"
6123
+ "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
6124
6124
  },
6125
6125
  "producer": {
6126
6126
  "type": "string",
@@ -6350,7 +6350,7 @@
6350
6350
  "id": {
6351
6351
  "type": "string",
6352
6352
  "format": "uuid",
6353
- "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$"
6353
+ "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
6354
6354
  },
6355
6355
  "producer": {
6356
6356
  "type": "string",
@@ -6479,29 +6479,29 @@
6479
6479
  "type": "object",
6480
6480
  "properties": {
6481
6481
  "data": {
6482
- "description": "The folder that is the default backend and the default write target: layers, specs and runs live here",
6483
6482
  "default": "./atlas-data",
6483
+ "description": "The folder that is the default backend and the default write target: layers, specs and runs live here",
6484
6484
  "type": "string"
6485
6485
  },
6486
6486
  "backends": {
6487
- "description": "Further backends, read together with the data folder: S3, another server, a device lab",
6488
6487
  "default": [],
6488
+ "description": "Further backends, read together with the data folder: S3, another server, a device lab",
6489
6489
  "type": "array",
6490
6490
  "items": {
6491
6491
  "type": "object",
6492
6492
  "properties": {
6493
6493
  "id": {
6494
- "description": "Lowercase letters, digits and hyphens. Names where a result came from",
6495
6494
  "type": "string",
6496
- "pattern": "^[a-z0-9-]+$"
6495
+ "pattern": "^[a-z0-9-]+$",
6496
+ "description": "Lowercase letters, digits and hyphens. Names where a result came from"
6497
6497
  },
6498
6498
  "label": {
6499
6499
  "type": "string"
6500
6500
  },
6501
6501
  "url": {
6502
- "description": "A folder, s3://bucket/prefix, r2://, gs://, or another Atlas server (https://…)",
6503
6502
  "type": "string",
6504
- "minLength": 1
6503
+ "minLength": 1,
6504
+ "description": "A folder, s3://bucket/prefix, r2://, gs://, or another Atlas server (https://…)"
6505
6505
  },
6506
6506
  "write": {
6507
6507
  "description": "Uploads go here instead of the data folder. At most one backend is the write target",
@@ -6542,8 +6542,8 @@
6542
6542
  "additionalProperties": false
6543
6543
  },
6544
6544
  "refreshSeconds": {
6545
- "description": "How often the backends are looked at for layers written by something other than this server",
6546
6545
  "default": 10,
6546
+ "description": "How often the backends are looked at for layers written by something other than this server",
6547
6547
  "type": "number",
6548
6548
  "minimum": 1
6549
6549
  },
@@ -6556,20 +6556,20 @@
6556
6556
  "type": "object",
6557
6557
  "properties": {
6558
6558
  "maxObjectMiB": {
6559
- "description": "The largest object an upload may be",
6560
6559
  "default": 256,
6560
+ "description": "The largest object an upload may be",
6561
6561
  "type": "number",
6562
6562
  "exclusiveMinimum": 0
6563
6563
  },
6564
6564
  "maxJsonMiB": {
6565
- "description": "The largest JSON body (a manifest, a checks request)",
6566
6565
  "default": 32,
6566
+ "description": "The largest JSON body (a manifest, a checks request)",
6567
6567
  "type": "number",
6568
6568
  "exclusiveMinimum": 0
6569
6569
  },
6570
6570
  "maxStreams": {
6571
- "description": "Viewers that may be connected for live updates at once",
6572
6571
  "default": 500,
6572
+ "description": "Viewers that may be connected for live updates at once",
6573
6573
  "type": "integer",
6574
6574
  "exclusiveMinimum": 0,
6575
6575
  "maximum": 9007199254740991
@@ -6578,28 +6578,28 @@
6578
6578
  "additionalProperties": false
6579
6579
  },
6580
6580
  "heartbeatSeconds": {
6581
- "description": "How often a live connection is touched, so proxies keep it open",
6582
6581
  "default": 15,
6582
+ "description": "How often a live connection is touched, so proxies keep it open",
6583
6583
  "type": "number",
6584
6584
  "minimum": 1
6585
6585
  },
6586
6586
  "runTimeoutSeconds": {
6587
- "description": "Interrupt a live run after this many seconds without a producer heartbeat",
6588
6587
  "default": 30,
6588
+ "description": "Interrupt a live run after this many seconds without a producer heartbeat",
6589
6589
  "type": "number",
6590
6590
  "minimum": 10,
6591
6591
  "maximum": 3600
6592
6592
  },
6593
6593
  "runStallSeconds": {
6594
- "description": "Interrupt after this many seconds without test progress; 0 disables progress expiry",
6595
6594
  "default": 900,
6595
+ "description": "Interrupt after this many seconds without test progress; 0 disables progress expiry",
6596
6596
  "type": "number",
6597
6597
  "minimum": 0,
6598
6598
  "maximum": 86400
6599
6599
  },
6600
6600
  "log": {
6601
- "description": "One JSON line per request",
6602
6601
  "default": true,
6602
+ "description": "One JSON line per request",
6603
6603
  "type": "boolean"
6604
6604
  }
6605
6605
  },
@@ -6616,29 +6616,29 @@
6616
6616
  "type": "object",
6617
6617
  "properties": {
6618
6618
  "data": {
6619
- "description": "The folder that is the default backend and the default write target: layers, specs and runs live here",
6620
6619
  "default": "./atlas-data",
6620
+ "description": "The folder that is the default backend and the default write target: layers, specs and runs live here",
6621
6621
  "type": "string"
6622
6622
  },
6623
6623
  "backends": {
6624
- "description": "Further backends, read together with the data folder: S3, another server, a device lab",
6625
6624
  "default": [],
6625
+ "description": "Further backends, read together with the data folder: S3, another server, a device lab",
6626
6626
  "type": "array",
6627
6627
  "items": {
6628
6628
  "type": "object",
6629
6629
  "properties": {
6630
6630
  "id": {
6631
- "description": "Lowercase letters, digits and hyphens. Names where a result came from",
6632
6631
  "type": "string",
6633
- "pattern": "^[a-z0-9-]+$"
6632
+ "pattern": "^[a-z0-9-]+$",
6633
+ "description": "Lowercase letters, digits and hyphens. Names where a result came from"
6634
6634
  },
6635
6635
  "label": {
6636
6636
  "type": "string"
6637
6637
  },
6638
6638
  "url": {
6639
- "description": "A folder, s3://bucket/prefix, r2://, gs://, or another Atlas server (https://…)",
6640
6639
  "type": "string",
6641
- "minLength": 1
6640
+ "minLength": 1,
6641
+ "description": "A folder, s3://bucket/prefix, r2://, gs://, or another Atlas server (https://…)"
6642
6642
  },
6643
6643
  "write": {
6644
6644
  "description": "Uploads go here instead of the data folder. At most one backend is the write target",
@@ -6679,8 +6679,8 @@
6679
6679
  "additionalProperties": false
6680
6680
  },
6681
6681
  "refreshSeconds": {
6682
- "description": "How often the backends are looked at for layers written by something other than this server",
6683
6682
  "default": 10,
6683
+ "description": "How often the backends are looked at for layers written by something other than this server",
6684
6684
  "type": "number",
6685
6685
  "minimum": 1
6686
6686
  },
@@ -6693,20 +6693,20 @@
6693
6693
  "type": "object",
6694
6694
  "properties": {
6695
6695
  "maxObjectMiB": {
6696
- "description": "The largest object an upload may be",
6697
6696
  "default": 256,
6697
+ "description": "The largest object an upload may be",
6698
6698
  "type": "number",
6699
6699
  "exclusiveMinimum": 0
6700
6700
  },
6701
6701
  "maxJsonMiB": {
6702
- "description": "The largest JSON body (a manifest, a checks request)",
6703
6702
  "default": 32,
6703
+ "description": "The largest JSON body (a manifest, a checks request)",
6704
6704
  "type": "number",
6705
6705
  "exclusiveMinimum": 0
6706
6706
  },
6707
6707
  "maxStreams": {
6708
- "description": "Viewers that may be connected for live updates at once",
6709
6708
  "default": 500,
6709
+ "description": "Viewers that may be connected for live updates at once",
6710
6710
  "type": "integer",
6711
6711
  "exclusiveMinimum": 0,
6712
6712
  "maximum": 9007199254740991
@@ -6720,28 +6720,28 @@
6720
6720
  "additionalProperties": false
6721
6721
  },
6722
6722
  "heartbeatSeconds": {
6723
- "description": "How often a live connection is touched, so proxies keep it open",
6724
6723
  "default": 15,
6724
+ "description": "How often a live connection is touched, so proxies keep it open",
6725
6725
  "type": "number",
6726
6726
  "minimum": 1
6727
6727
  },
6728
6728
  "runTimeoutSeconds": {
6729
- "description": "Interrupt a live run after this many seconds without a producer heartbeat",
6730
6729
  "default": 30,
6730
+ "description": "Interrupt a live run after this many seconds without a producer heartbeat",
6731
6731
  "type": "number",
6732
6732
  "minimum": 10,
6733
6733
  "maximum": 3600
6734
6734
  },
6735
6735
  "runStallSeconds": {
6736
- "description": "Interrupt after this many seconds without test progress; 0 disables progress expiry",
6737
6736
  "default": 900,
6737
+ "description": "Interrupt after this many seconds without test progress; 0 disables progress expiry",
6738
6738
  "type": "number",
6739
6739
  "minimum": 0,
6740
6740
  "maximum": 86400
6741
6741
  },
6742
6742
  "log": {
6743
- "description": "One JSON line per request",
6744
6743
  "default": true,
6744
+ "description": "One JSON line per request",
6745
6745
  "type": "boolean"
6746
6746
  }
6747
6747
  },
@@ -6751,29 +6751,29 @@
6751
6751
  "type": "object",
6752
6752
  "properties": {
6753
6753
  "data": {
6754
- "description": "The folder that is the default backend and the default write target: layers, specs and runs live here",
6755
6754
  "default": "./atlas-data",
6755
+ "description": "The folder that is the default backend and the default write target: layers, specs and runs live here",
6756
6756
  "type": "string"
6757
6757
  },
6758
6758
  "backends": {
6759
- "description": "Further backends, read together with the data folder: S3, another server, a device lab",
6760
6759
  "default": [],
6760
+ "description": "Further backends, read together with the data folder: S3, another server, a device lab",
6761
6761
  "type": "array",
6762
6762
  "items": {
6763
6763
  "type": "object",
6764
6764
  "properties": {
6765
6765
  "id": {
6766
- "description": "Lowercase letters, digits and hyphens. Names where a result came from",
6767
6766
  "type": "string",
6768
- "pattern": "^[a-z0-9-]+$"
6767
+ "pattern": "^[a-z0-9-]+$",
6768
+ "description": "Lowercase letters, digits and hyphens. Names where a result came from"
6769
6769
  },
6770
6770
  "label": {
6771
6771
  "type": "string"
6772
6772
  },
6773
6773
  "url": {
6774
- "description": "A folder, s3://bucket/prefix, r2://, gs://, or another Atlas server (https://…)",
6775
6774
  "type": "string",
6776
- "minLength": 1
6775
+ "minLength": 1,
6776
+ "description": "A folder, s3://bucket/prefix, r2://, gs://, or another Atlas server (https://…)"
6777
6777
  },
6778
6778
  "write": {
6779
6779
  "description": "Uploads go here instead of the data folder. At most one backend is the write target",
@@ -6814,8 +6814,8 @@
6814
6814
  "additionalProperties": false
6815
6815
  },
6816
6816
  "refreshSeconds": {
6817
- "description": "How often the backends are looked at for layers written by something other than this server",
6818
6817
  "default": 10,
6818
+ "description": "How often the backends are looked at for layers written by something other than this server",
6819
6819
  "type": "number",
6820
6820
  "minimum": 1
6821
6821
  },
@@ -6828,20 +6828,20 @@
6828
6828
  "type": "object",
6829
6829
  "properties": {
6830
6830
  "maxObjectMiB": {
6831
- "description": "The largest object an upload may be",
6832
6831
  "default": 256,
6832
+ "description": "The largest object an upload may be",
6833
6833
  "type": "number",
6834
6834
  "exclusiveMinimum": 0
6835
6835
  },
6836
6836
  "maxJsonMiB": {
6837
- "description": "The largest JSON body (a manifest, a checks request)",
6838
6837
  "default": 32,
6838
+ "description": "The largest JSON body (a manifest, a checks request)",
6839
6839
  "type": "number",
6840
6840
  "exclusiveMinimum": 0
6841
6841
  },
6842
6842
  "maxStreams": {
6843
- "description": "Viewers that may be connected for live updates at once",
6844
6843
  "default": 500,
6844
+ "description": "Viewers that may be connected for live updates at once",
6845
6845
  "type": "integer",
6846
6846
  "exclusiveMinimum": 0,
6847
6847
  "maximum": 9007199254740991
@@ -6855,28 +6855,28 @@
6855
6855
  "additionalProperties": false
6856
6856
  },
6857
6857
  "heartbeatSeconds": {
6858
- "description": "How often a live connection is touched, so proxies keep it open",
6859
6858
  "default": 15,
6859
+ "description": "How often a live connection is touched, so proxies keep it open",
6860
6860
  "type": "number",
6861
6861
  "minimum": 1
6862
6862
  },
6863
6863
  "runTimeoutSeconds": {
6864
- "description": "Interrupt a live run after this many seconds without a producer heartbeat",
6865
6864
  "default": 30,
6865
+ "description": "Interrupt a live run after this many seconds without a producer heartbeat",
6866
6866
  "type": "number",
6867
6867
  "minimum": 10,
6868
6868
  "maximum": 3600
6869
6869
  },
6870
6870
  "runStallSeconds": {
6871
- "description": "Interrupt after this many seconds without test progress; 0 disables progress expiry",
6872
6871
  "default": 900,
6872
+ "description": "Interrupt after this many seconds without test progress; 0 disables progress expiry",
6873
6873
  "type": "number",
6874
6874
  "minimum": 0,
6875
6875
  "maximum": 86400
6876
6876
  },
6877
6877
  "log": {
6878
- "description": "One JSON line per request",
6879
6878
  "default": true,
6879
+ "description": "One JSON line per request",
6880
6880
  "type": "boolean"
6881
6881
  }
6882
6882
  },
@@ -6902,27 +6902,27 @@
6902
6902
  "type": "object",
6903
6903
  "properties": {
6904
6904
  "type": {
6905
- "description": "A URI naming the kind of problem. `about:blank` means the status code says it all",
6906
6905
  "default": "about:blank",
6906
+ "description": "A URI naming the kind of problem. `about:blank` means the status code says it all",
6907
6907
  "type": "string"
6908
6908
  },
6909
6909
  "title": {
6910
- "description": "The status in words, such as \"Unauthorized\"",
6911
- "type": "string"
6910
+ "type": "string",
6911
+ "description": "The status in words, such as \"Unauthorized\""
6912
6912
  },
6913
6913
  "status": {
6914
- "description": "The HTTP status code",
6915
6914
  "type": "integer",
6916
6915
  "minimum": -9007199254740991,
6917
- "maximum": 9007199254740991
6916
+ "maximum": 9007199254740991,
6917
+ "description": "The HTTP status code"
6918
6918
  },
6919
6919
  "detail": {
6920
- "description": "What went wrong and what to do about it, in a sentence an agent or a person can act on",
6921
- "type": "string"
6920
+ "type": "string",
6921
+ "description": "What went wrong and what to do about it, in a sentence an agent or a person can act on"
6922
6922
  },
6923
6923
  "error": {
6924
- "description": "The same as `detail`. Kept for clients that read `error`",
6925
- "type": "string"
6924
+ "type": "string",
6925
+ "description": "The same as `detail`. Kept for clients that read `error`"
6926
6926
  }
6927
6927
  },
6928
6928
  "required": [
@@ -6951,36 +6951,36 @@
6951
6951
  "type": "object",
6952
6952
  "properties": {
6953
6953
  "ready": {
6954
- "description": "True once the first pass over the backends is done and at least one backend answers",
6955
- "type": "boolean"
6954
+ "type": "boolean",
6955
+ "description": "True once the first pass over the backends is done and at least one backend answers"
6956
6956
  },
6957
6957
  "layers": {
6958
- "description": "Distinct layers read",
6959
6958
  "type": "integer",
6960
6959
  "minimum": 0,
6961
- "maximum": 9007199254740991
6960
+ "maximum": 9007199254740991,
6961
+ "description": "Distinct layers read"
6962
6962
  },
6963
6963
  "slots": {
6964
- "description": "Distinct checks (slots) the report holds a winner for",
6965
6964
  "type": "integer",
6966
6965
  "minimum": 0,
6967
- "maximum": 9007199254740991
6966
+ "maximum": 9007199254740991,
6967
+ "description": "Distinct checks (slots) the report holds a winner for"
6968
6968
  },
6969
6969
  "holding": {
6970
- "description": "Layers that still hold at least one winner",
6971
6970
  "type": "integer",
6972
6971
  "minimum": 0,
6973
- "maximum": 9007199254740991
6972
+ "maximum": 9007199254740991,
6973
+ "description": "Layers that still hold at least one winner"
6974
6974
  },
6975
6975
  "failed": {
6976
- "description": "Layers or backends that could not be read right now",
6977
6976
  "type": "integer",
6978
6977
  "minimum": 0,
6979
- "maximum": 9007199254740991
6978
+ "maximum": 9007199254740991,
6979
+ "description": "Layers or backends that could not be read right now"
6980
6980
  },
6981
6981
  "refreshedAt": {
6982
- "description": "When a pass over the backends last finished, epoch milliseconds; 0 before the first",
6983
- "type": "number"
6982
+ "type": "number",
6983
+ "description": "When a pass over the backends last finished, epoch milliseconds; 0 before the first"
6984
6984
  },
6985
6985
  "backends": {
6986
6986
  "type": "array",
@@ -7022,44 +7022,40 @@
7022
7022
  },
7023
7023
  "version": {
7024
7024
  "description": "The @crvouga/atlas version the server runs, or null when it does not know",
7025
- "anyOf": [
7026
- {
7027
- "type": "string"
7028
- },
7029
- {
7030
- "type": "null"
7031
- }
7025
+ "type": [
7026
+ "string",
7027
+ "null"
7032
7028
  ]
7033
7029
  },
7034
7030
  "role": {
7035
- "description": "What the token of this request may do. A server with no tokens treats everyone as admin",
7036
7031
  "type": "string",
7037
7032
  "enum": [
7038
7033
  "read",
7039
7034
  "publish",
7040
7035
  "admin"
7041
- ]
7036
+ ],
7037
+ "description": "What the token of this request may do. A server with no tokens treats everyone as admin"
7042
7038
  },
7043
7039
  "open": {
7044
- "description": "True when the server has no tokens at all",
7045
- "type": "boolean"
7040
+ "type": "boolean",
7041
+ "description": "True when the server has no tokens at all"
7046
7042
  },
7047
7043
  "write": {
7048
- "description": "The id of the backend uploads go to",
7049
- "type": "string"
7044
+ "type": "string",
7045
+ "description": "The id of the backend uploads go to"
7050
7046
  },
7051
7047
  "ready": {
7052
7048
  "type": "boolean"
7053
7049
  },
7054
7050
  "viewers": {
7055
- "description": "Viewers connected to /api/events right now",
7056
7051
  "type": "integer",
7057
7052
  "minimum": 0,
7058
- "maximum": 9007199254740991
7053
+ "maximum": 9007199254740991,
7054
+ "description": "Viewers connected to /api/events right now"
7059
7055
  },
7060
7056
  "time": {
7061
- "description": "The server clock, epoch milliseconds",
7062
- "type": "number"
7057
+ "type": "number",
7058
+ "description": "The server clock, epoch milliseconds"
7063
7059
  },
7064
7060
  "backends": {
7065
7061
  "type": "array",
@@ -7099,14 +7095,14 @@
7099
7095
  "maximum": 9007199254740991
7100
7096
  },
7101
7097
  "capabilities": {
7102
- "description": "Features this server has, by name: `events`, `ingest`, `store`, `checks`, `status`, `effective`. A client checks a name before using what it names",
7103
7098
  "type": "object",
7104
7099
  "propertyNames": {
7105
7100
  "type": "string"
7106
7101
  },
7107
7102
  "additionalProperties": {
7108
7103
  "type": "boolean"
7109
- }
7104
+ },
7105
+ "description": "Features this server has, by name: `events`, `ingest`, `store`, `checks`, `status`, `effective`. A client checks a name before using what it names"
7110
7106
  }
7111
7107
  },
7112
7108
  "required": [
@@ -7129,8 +7125,8 @@
7129
7125
  "type": "object",
7130
7126
  "properties": {
7131
7127
  "version": {
7132
- "description": "Changes exactly when the report does",
7133
- "type": "string"
7128
+ "type": "string",
7129
+ "description": "Changes exactly when the report does"
7134
7130
  },
7135
7131
  "layers": {
7136
7132
  "type": "array",
@@ -7146,12 +7142,12 @@
7146
7142
  "type": "object",
7147
7143
  "properties": {
7148
7144
  "kind": {
7149
- "description": "The kind of the part holding the check. Part of the slot",
7150
- "type": "string"
7145
+ "type": "string",
7146
+ "description": "The kind of the part holding the check. Part of the slot"
7151
7147
  },
7152
7148
  "id": {
7153
- "description": "The check id. Part of the slot",
7154
- "type": "string"
7149
+ "type": "string",
7150
+ "description": "The check id. Part of the slot"
7155
7151
  },
7156
7152
  "title": {
7157
7153
  "type": "string"
@@ -7167,18 +7163,14 @@
7167
7163
  },
7168
7164
  "specPath": {
7169
7165
  "description": "The spec the check belongs to, `specs/<path>`, or null",
7170
- "anyOf": [
7171
- {
7172
- "type": "string"
7173
- },
7174
- {
7175
- "type": "null"
7176
- }
7166
+ "type": [
7167
+ "string",
7168
+ "null"
7177
7169
  ]
7178
7170
  },
7179
7171
  "detail": {
7180
- "description": "Why it has this status; empty when there is nothing to add",
7181
- "type": "string"
7172
+ "type": "string",
7173
+ "description": "Why it has this status; empty when there is nothing to add"
7182
7174
  },
7183
7175
  "measurements": {
7184
7176
  "type": "array",
@@ -7207,13 +7199,9 @@
7207
7199
  }
7208
7200
  },
7209
7201
  "testId": {
7210
- "anyOf": [
7211
- {
7212
- "type": "string"
7213
- },
7214
- {
7215
- "type": "null"
7216
- }
7202
+ "type": [
7203
+ "string",
7204
+ "null"
7217
7205
  ]
7218
7206
  },
7219
7207
  "variant": {
@@ -7226,13 +7214,9 @@
7226
7214
  }
7227
7215
  },
7228
7216
  "durationMs": {
7229
- "anyOf": [
7230
- {
7231
- "type": "number"
7232
- },
7233
- {
7234
- "type": "null"
7235
- }
7217
+ "type": [
7218
+ "number",
7219
+ "null"
7236
7220
  ]
7237
7221
  },
7238
7222
  "evidence": {
@@ -7314,96 +7298,76 @@
7314
7298
  }
7315
7299
  },
7316
7300
  "fingerprints": {
7317
- "description": "Spec path to the fingerprint the layer recorded for it",
7318
7301
  "type": "object",
7319
7302
  "propertyNames": {
7320
7303
  "type": "string"
7321
7304
  },
7322
7305
  "additionalProperties": {
7323
7306
  "type": "string"
7324
- }
7307
+ },
7308
+ "description": "Spec path to the fingerprint the layer recorded for it"
7325
7309
  },
7326
7310
  "layer": {
7327
7311
  "type": "object",
7328
7312
  "properties": {
7329
7313
  "id": {
7330
- "description": "The layer id: 64 lowercase hex digits, the SHA-256 of its content",
7331
- "type": "string"
7314
+ "type": "string",
7315
+ "description": "The layer id: 64 lowercase hex digits, the SHA-256 of its content"
7332
7316
  },
7333
7317
  "backend": {
7334
- "description": "The backend it was read from; the one that sorts first when several hold it",
7335
- "type": "string"
7318
+ "type": "string",
7319
+ "description": "The backend it was read from; the one that sorts first when several hold it"
7336
7320
  },
7337
7321
  "producer": {
7338
- "description": "The suite or tool that made it. Part of the slot",
7339
- "type": "string"
7322
+ "type": "string",
7323
+ "description": "The suite or tool that made it. Part of the slot"
7340
7324
  },
7341
7325
  "packageDir": {
7342
- "anyOf": [
7343
- {
7344
- "type": "string"
7345
- },
7346
- {
7347
- "type": "null"
7348
- }
7326
+ "type": [
7327
+ "string",
7328
+ "null"
7349
7329
  ]
7350
7330
  },
7351
7331
  "recordedAtMs": {
7352
- "description": "When the checks ran, epoch milliseconds. The newest completed result wins its slot",
7353
- "type": "number"
7332
+ "type": "number",
7333
+ "description": "When the checks ran, epoch milliseconds. The newest completed result wins its slot"
7354
7334
  },
7355
7335
  "sha": {
7356
7336
  "description": "The commit it was recorded at. Provenance only",
7357
- "anyOf": [
7358
- {
7359
- "type": "string"
7360
- },
7361
- {
7362
- "type": "null"
7363
- }
7337
+ "type": [
7338
+ "string",
7339
+ "null"
7364
7340
  ]
7365
7341
  },
7366
7342
  "branch": {
7367
7343
  "description": "The branch it was recorded on. Provenance only",
7368
- "anyOf": [
7369
- {
7370
- "type": "string"
7371
- },
7372
- {
7373
- "type": "null"
7374
- }
7344
+ "type": [
7345
+ "string",
7346
+ "null"
7375
7347
  ]
7376
7348
  },
7377
7349
  "environment": {
7378
7350
  "description": "The client it checked, such as `ios`. Part of the slot",
7379
- "anyOf": [
7380
- {
7381
- "type": "string"
7382
- },
7383
- {
7384
- "type": "null"
7385
- }
7351
+ "type": [
7352
+ "string",
7353
+ "null"
7386
7354
  ]
7387
7355
  },
7388
7356
  "runUrl": {
7389
- "anyOf": [
7390
- {
7391
- "type": "string"
7392
- },
7393
- {
7394
- "type": "null"
7395
- }
7357
+ "type": [
7358
+ "string",
7359
+ "null"
7396
7360
  ]
7397
7361
  },
7398
7362
  "parameters": {
7399
- "description": "Other choices that make a result its own slot",
7400
7363
  "type": "object",
7401
7364
  "propertyNames": {
7402
7365
  "type": "string"
7403
7366
  },
7404
7367
  "additionalProperties": {
7405
7368
  "type": "string"
7406
- }
7369
+ },
7370
+ "description": "Other choices that make a result its own slot"
7407
7371
  },
7408
7372
  "freshness": {
7409
7373
  "description": "`modified`: recorded from a checkout with uncommitted changes. `unknown`: origin not captured. Absent: clean",
@@ -7414,13 +7378,13 @@
7414
7378
  ]
7415
7379
  },
7416
7380
  "recording": {
7417
- "description": "Where recorded timelines are read from, or null",
7418
7381
  "anyOf": [
7419
7382
  {},
7420
7383
  {
7421
7384
  "type": "null"
7422
7385
  }
7423
- ]
7386
+ ],
7387
+ "description": "Where recorded timelines are read from, or null"
7424
7388
  },
7425
7389
  "live": {
7426
7390
  "type": "boolean"
@@ -7440,7 +7404,13 @@
7440
7404
  "type": "integer",
7441
7405
  "minimum": 0,
7442
7406
  "maximum": 9007199254740991
7443
- }
7407
+ },
7408
+ "required": [
7409
+ "passed",
7410
+ "failed",
7411
+ "running",
7412
+ "not-run"
7413
+ ]
7444
7414
  },
7445
7415
  "execution": {
7446
7416
  "type": "string"
@@ -7548,12 +7518,12 @@
7548
7518
  "type": "string"
7549
7519
  },
7550
7520
  "live": {
7551
- "description": "Always false on a server",
7552
- "type": "boolean"
7521
+ "type": "boolean",
7522
+ "description": "Always false on a server"
7553
7523
  },
7554
7524
  "available": {
7555
- "description": "False when the backend could not be read; its results are then unknown, never passed",
7556
- "type": "boolean"
7525
+ "type": "boolean",
7526
+ "description": "False when the backend could not be read; its results are then unknown, never passed"
7557
7527
  }
7558
7528
  },
7559
7529
  "required": [
@@ -7566,22 +7536,22 @@
7566
7536
  }
7567
7537
  },
7568
7538
  "notices": {
7569
- "description": "What could not be read. A gate treats any notice as unknown, never as passed",
7570
7539
  "type": "array",
7571
7540
  "items": {
7572
7541
  "type": "string"
7573
- }
7542
+ },
7543
+ "description": "What could not be read. A gate treats any notice as unknown, never as passed"
7574
7544
  },
7575
7545
  "totalLayers": {
7576
- "description": "Every layer read, whether or not it still wins anything",
7577
7546
  "type": "integer",
7578
7547
  "minimum": 0,
7579
- "maximum": 9007199254740991
7548
+ "maximum": 9007199254740991,
7549
+ "description": "Every layer read, whether or not it still wins anything"
7580
7550
  },
7581
7551
  "active": {
7582
- "description": "Always empty on a server; kept for viewers written for live spec runs",
7583
7552
  "type": "array",
7584
- "items": {}
7553
+ "items": {},
7554
+ "description": "Always empty on a server; kept for viewers written for live spec runs"
7585
7555
  }
7586
7556
  },
7587
7557
  "required": [
@@ -7598,11 +7568,10 @@
7598
7568
  "type": "object",
7599
7569
  "properties": {
7600
7570
  "version": {
7601
- "description": "Changes exactly when the report does",
7602
- "type": "string"
7571
+ "type": "string",
7572
+ "description": "Changes exactly when the report does"
7603
7573
  },
7604
7574
  "layers": {
7605
- "description": "Layers that are new or changed since `base`, whole",
7606
7575
  "type": "array",
7607
7576
  "items": {
7608
7577
  "type": "object",
@@ -7616,12 +7585,12 @@
7616
7585
  "type": "object",
7617
7586
  "properties": {
7618
7587
  "kind": {
7619
- "description": "The kind of the part holding the check. Part of the slot",
7620
- "type": "string"
7588
+ "type": "string",
7589
+ "description": "The kind of the part holding the check. Part of the slot"
7621
7590
  },
7622
7591
  "id": {
7623
- "description": "The check id. Part of the slot",
7624
- "type": "string"
7592
+ "type": "string",
7593
+ "description": "The check id. Part of the slot"
7625
7594
  },
7626
7595
  "title": {
7627
7596
  "type": "string"
@@ -7637,18 +7606,14 @@
7637
7606
  },
7638
7607
  "specPath": {
7639
7608
  "description": "The spec the check belongs to, `specs/<path>`, or null",
7640
- "anyOf": [
7641
- {
7642
- "type": "string"
7643
- },
7644
- {
7645
- "type": "null"
7646
- }
7609
+ "type": [
7610
+ "string",
7611
+ "null"
7647
7612
  ]
7648
7613
  },
7649
7614
  "detail": {
7650
- "description": "Why it has this status; empty when there is nothing to add",
7651
- "type": "string"
7615
+ "type": "string",
7616
+ "description": "Why it has this status; empty when there is nothing to add"
7652
7617
  },
7653
7618
  "measurements": {
7654
7619
  "type": "array",
@@ -7677,13 +7642,9 @@
7677
7642
  }
7678
7643
  },
7679
7644
  "testId": {
7680
- "anyOf": [
7681
- {
7682
- "type": "string"
7683
- },
7684
- {
7685
- "type": "null"
7686
- }
7645
+ "type": [
7646
+ "string",
7647
+ "null"
7687
7648
  ]
7688
7649
  },
7689
7650
  "variant": {
@@ -7696,13 +7657,9 @@
7696
7657
  }
7697
7658
  },
7698
7659
  "durationMs": {
7699
- "anyOf": [
7700
- {
7701
- "type": "number"
7702
- },
7703
- {
7704
- "type": "null"
7705
- }
7660
+ "type": [
7661
+ "number",
7662
+ "null"
7706
7663
  ]
7707
7664
  },
7708
7665
  "evidence": {
@@ -7784,96 +7741,76 @@
7784
7741
  }
7785
7742
  },
7786
7743
  "fingerprints": {
7787
- "description": "Spec path to the fingerprint the layer recorded for it",
7788
7744
  "type": "object",
7789
7745
  "propertyNames": {
7790
7746
  "type": "string"
7791
7747
  },
7792
7748
  "additionalProperties": {
7793
7749
  "type": "string"
7794
- }
7750
+ },
7751
+ "description": "Spec path to the fingerprint the layer recorded for it"
7795
7752
  },
7796
7753
  "layer": {
7797
7754
  "type": "object",
7798
7755
  "properties": {
7799
7756
  "id": {
7800
- "description": "The layer id: 64 lowercase hex digits, the SHA-256 of its content",
7801
- "type": "string"
7757
+ "type": "string",
7758
+ "description": "The layer id: 64 lowercase hex digits, the SHA-256 of its content"
7802
7759
  },
7803
7760
  "backend": {
7804
- "description": "The backend it was read from; the one that sorts first when several hold it",
7805
- "type": "string"
7761
+ "type": "string",
7762
+ "description": "The backend it was read from; the one that sorts first when several hold it"
7806
7763
  },
7807
7764
  "producer": {
7808
- "description": "The suite or tool that made it. Part of the slot",
7809
- "type": "string"
7765
+ "type": "string",
7766
+ "description": "The suite or tool that made it. Part of the slot"
7810
7767
  },
7811
7768
  "packageDir": {
7812
- "anyOf": [
7813
- {
7814
- "type": "string"
7815
- },
7816
- {
7817
- "type": "null"
7818
- }
7769
+ "type": [
7770
+ "string",
7771
+ "null"
7819
7772
  ]
7820
7773
  },
7821
7774
  "recordedAtMs": {
7822
- "description": "When the checks ran, epoch milliseconds. The newest completed result wins its slot",
7823
- "type": "number"
7775
+ "type": "number",
7776
+ "description": "When the checks ran, epoch milliseconds. The newest completed result wins its slot"
7824
7777
  },
7825
7778
  "sha": {
7826
7779
  "description": "The commit it was recorded at. Provenance only",
7827
- "anyOf": [
7828
- {
7829
- "type": "string"
7830
- },
7831
- {
7832
- "type": "null"
7833
- }
7780
+ "type": [
7781
+ "string",
7782
+ "null"
7834
7783
  ]
7835
7784
  },
7836
7785
  "branch": {
7837
7786
  "description": "The branch it was recorded on. Provenance only",
7838
- "anyOf": [
7839
- {
7840
- "type": "string"
7841
- },
7842
- {
7843
- "type": "null"
7844
- }
7787
+ "type": [
7788
+ "string",
7789
+ "null"
7845
7790
  ]
7846
7791
  },
7847
7792
  "environment": {
7848
7793
  "description": "The client it checked, such as `ios`. Part of the slot",
7849
- "anyOf": [
7850
- {
7851
- "type": "string"
7852
- },
7853
- {
7854
- "type": "null"
7855
- }
7794
+ "type": [
7795
+ "string",
7796
+ "null"
7856
7797
  ]
7857
7798
  },
7858
7799
  "runUrl": {
7859
- "anyOf": [
7860
- {
7861
- "type": "string"
7862
- },
7863
- {
7864
- "type": "null"
7865
- }
7800
+ "type": [
7801
+ "string",
7802
+ "null"
7866
7803
  ]
7867
7804
  },
7868
7805
  "parameters": {
7869
- "description": "Other choices that make a result its own slot",
7870
7806
  "type": "object",
7871
7807
  "propertyNames": {
7872
7808
  "type": "string"
7873
7809
  },
7874
7810
  "additionalProperties": {
7875
7811
  "type": "string"
7876
- }
7812
+ },
7813
+ "description": "Other choices that make a result its own slot"
7877
7814
  },
7878
7815
  "freshness": {
7879
7816
  "description": "`modified`: recorded from a checkout with uncommitted changes. `unknown`: origin not captured. Absent: clean",
@@ -7884,13 +7821,13 @@
7884
7821
  ]
7885
7822
  },
7886
7823
  "recording": {
7887
- "description": "Where recorded timelines are read from, or null",
7888
7824
  "anyOf": [
7889
7825
  {},
7890
7826
  {
7891
7827
  "type": "null"
7892
7828
  }
7893
- ]
7829
+ ],
7830
+ "description": "Where recorded timelines are read from, or null"
7894
7831
  },
7895
7832
  "live": {
7896
7833
  "type": "boolean"
@@ -7910,7 +7847,13 @@
7910
7847
  "type": "integer",
7911
7848
  "minimum": 0,
7912
7849
  "maximum": 9007199254740991
7913
- }
7850
+ },
7851
+ "required": [
7852
+ "passed",
7853
+ "failed",
7854
+ "running",
7855
+ "not-run"
7856
+ ]
7914
7857
  },
7915
7858
  "execution": {
7916
7859
  "type": "string"
@@ -8004,7 +7947,8 @@
8004
7947
  "layer"
8005
7948
  ],
8006
7949
  "additionalProperties": {}
8007
- }
7950
+ },
7951
+ "description": "Layers that are new or changed since `base`, whole"
8008
7952
  },
8009
7953
  "backends": {
8010
7954
  "type": "array",
@@ -8018,12 +7962,12 @@
8018
7962
  "type": "string"
8019
7963
  },
8020
7964
  "live": {
8021
- "description": "Always false on a server",
8022
- "type": "boolean"
7965
+ "type": "boolean",
7966
+ "description": "Always false on a server"
8023
7967
  },
8024
7968
  "available": {
8025
- "description": "False when the backend could not be read; its results are then unknown, never passed",
8026
- "type": "boolean"
7969
+ "type": "boolean",
7970
+ "description": "False when the backend could not be read; its results are then unknown, never passed"
8027
7971
  }
8028
7972
  },
8029
7973
  "required": [
@@ -8036,37 +7980,37 @@
8036
7980
  }
8037
7981
  },
8038
7982
  "notices": {
8039
- "description": "What could not be read. A gate treats any notice as unknown, never as passed",
8040
7983
  "type": "array",
8041
7984
  "items": {
8042
7985
  "type": "string"
8043
- }
7986
+ },
7987
+ "description": "What could not be read. A gate treats any notice as unknown, never as passed"
8044
7988
  },
8045
7989
  "totalLayers": {
8046
- "description": "Every layer read, whether or not it still wins anything",
8047
7990
  "type": "integer",
8048
7991
  "minimum": 0,
8049
- "maximum": 9007199254740991
7992
+ "maximum": 9007199254740991,
7993
+ "description": "Every layer read, whether or not it still wins anything"
8050
7994
  },
8051
7995
  "active": {
8052
- "description": "Always empty on a server; kept for viewers written for live spec runs",
8053
7996
  "type": "array",
8054
- "items": {}
7997
+ "items": {},
7998
+ "description": "Always empty on a server; kept for viewers written for live spec runs"
8055
7999
  },
8056
8000
  "delta": {
8057
8001
  "type": "boolean",
8058
8002
  "const": true
8059
8003
  },
8060
8004
  "base": {
8061
- "description": "The version this applies to",
8062
- "type": "string"
8005
+ "type": "string",
8006
+ "description": "The version this applies to"
8063
8007
  },
8064
8008
  "removed": {
8065
- "description": "Ids of layers that no longer hold a winner",
8066
8009
  "type": "array",
8067
8010
  "items": {
8068
8011
  "type": "string"
8069
- }
8012
+ },
8013
+ "description": "Ids of layers that no longer hold a winner"
8070
8014
  }
8071
8015
  },
8072
8016
  "required": [
@@ -8093,11 +8037,11 @@
8093
8037
  "type": "boolean"
8094
8038
  },
8095
8039
  "reasons": {
8096
- "description": "Why `ok` is false, in words. Empty when it is true",
8097
8040
  "type": "array",
8098
8041
  "items": {
8099
8042
  "type": "string"
8100
- }
8043
+ },
8044
+ "description": "Why `ok` is false, in words. Empty when it is true"
8101
8045
  },
8102
8046
  "checks": {
8103
8047
  "type": "object",
@@ -8182,10 +8126,10 @@
8182
8126
  }
8183
8127
  },
8184
8128
  "layers": {
8185
- "description": "Distinct layers read, across all backends",
8186
8129
  "type": "integer",
8187
8130
  "minimum": 0,
8188
- "maximum": 9007199254740991
8131
+ "maximum": 9007199254740991,
8132
+ "description": "Distinct layers read, across all backends"
8189
8133
  },
8190
8134
  "backends": {
8191
8135
  "type": "array",
@@ -8211,34 +8155,29 @@
8211
8155
  }
8212
8156
  },
8213
8157
  "notices": {
8214
- "description": "What could not be read. Any notice fails the gate: unknown is not passed",
8215
8158
  "type": "array",
8216
8159
  "items": {
8217
8160
  "type": "string"
8218
- }
8161
+ },
8162
+ "description": "What could not be read. Any notice fails the gate: unknown is not passed"
8219
8163
  },
8220
8164
  "specsWithoutEvidence": {
8221
- "description": "Specs of the outline with no result at all. The outline is `--specs <dir>`, or else the specs the layers recorded",
8222
8165
  "type": "array",
8223
8166
  "items": {
8224
8167
  "type": "string"
8225
- }
8168
+ },
8169
+ "description": "Specs of the outline with no result at all. The outline is `--specs <dir>`, or else the specs the layers recorded"
8226
8170
  },
8227
8171
  "specs": {
8228
- "description": "The outcome of each spec, so a dashboard needs nothing else",
8229
8172
  "type": "array",
8230
8173
  "items": {
8231
8174
  "type": "object",
8232
8175
  "properties": {
8233
8176
  "path": {
8234
8177
  "description": "Null for checks that name no spec in the outline",
8235
- "anyOf": [
8236
- {
8237
- "type": "string"
8238
- },
8239
- {
8240
- "type": "null"
8241
- }
8178
+ "type": [
8179
+ "string",
8180
+ "null"
8242
8181
  ]
8243
8182
  },
8244
8183
  "title": {
@@ -8338,22 +8277,18 @@
8338
8277
  "byEnvironment"
8339
8278
  ],
8340
8279
  "additionalProperties": {}
8341
- }
8280
+ },
8281
+ "description": "The outcome of each spec, so a dashboard needs nothing else"
8342
8282
  },
8343
8283
  "failing": {
8344
- "description": "Each slot whose newest completed result failed, or that is still running",
8345
8284
  "type": "array",
8346
8285
  "items": {
8347
8286
  "type": "object",
8348
8287
  "properties": {
8349
8288
  "spec": {
8350
- "anyOf": [
8351
- {
8352
- "type": "string"
8353
- },
8354
- {
8355
- "type": "null"
8356
- }
8289
+ "type": [
8290
+ "string",
8291
+ "null"
8357
8292
  ]
8358
8293
  },
8359
8294
  "check": {
@@ -8370,36 +8305,24 @@
8370
8305
  ]
8371
8306
  },
8372
8307
  "environment": {
8373
- "anyOf": [
8374
- {
8375
- "type": "string"
8376
- },
8377
- {
8378
- "type": "null"
8379
- }
8308
+ "type": [
8309
+ "string",
8310
+ "null"
8380
8311
  ]
8381
8312
  },
8382
8313
  "producer": {
8383
8314
  "type": "string"
8384
8315
  },
8385
8316
  "branch": {
8386
- "anyOf": [
8387
- {
8388
- "type": "string"
8389
- },
8390
- {
8391
- "type": "null"
8392
- }
8317
+ "type": [
8318
+ "string",
8319
+ "null"
8393
8320
  ]
8394
8321
  },
8395
8322
  "sha": {
8396
- "anyOf": [
8397
- {
8398
- "type": "string"
8399
- },
8400
- {
8401
- "type": "null"
8402
- }
8323
+ "type": [
8324
+ "string",
8325
+ "null"
8403
8326
  ]
8404
8327
  },
8405
8328
  "layer": {
@@ -8409,13 +8332,9 @@
8409
8332
  "type": "string"
8410
8333
  },
8411
8334
  "runUrl": {
8412
- "anyOf": [
8413
- {
8414
- "type": "string"
8415
- },
8416
- {
8417
- "type": "null"
8418
- }
8335
+ "type": [
8336
+ "string",
8337
+ "null"
8419
8338
  ]
8420
8339
  },
8421
8340
  "detail": {
@@ -8437,7 +8356,8 @@
8437
8356
  "detail"
8438
8357
  ],
8439
8358
  "additionalProperties": {}
8440
- }
8359
+ },
8360
+ "description": "Each slot whose newest completed result failed, or that is still running"
8441
8361
  }
8442
8362
  },
8443
8363
  "required": [
@@ -8468,9 +8388,9 @@
8468
8388
  "type": "object",
8469
8389
  "properties": {
8470
8390
  "id": {
8471
- "description": "The check's stable identity within its producer. The same check must keep the same id in every layer, or layers cannot replace one another",
8472
8391
  "type": "string",
8473
- "minLength": 1
8392
+ "minLength": 1,
8393
+ "description": "The check's stable identity within its producer. The same check must keep the same id in every layer, or layers cannot replace one another"
8474
8394
  },
8475
8395
  "title": {
8476
8396
  "type": "string"
@@ -8485,8 +8405,8 @@
8485
8405
  ]
8486
8406
  },
8487
8407
  "detail": {
8488
- "description": "Why it failed, or what was measured",
8489
8408
  "default": "",
8409
+ "description": "Why it failed, or what was measured",
8490
8410
  "type": "string"
8491
8411
  },
8492
8412
  "specPath": {
@@ -8504,8 +8424,8 @@
8504
8424
  "minLength": 1
8505
8425
  },
8506
8426
  "value": {
8507
- "description": "A finite number",
8508
- "type": "number"
8427
+ "type": "number",
8428
+ "description": "A finite number"
8509
8429
  },
8510
8430
  "unit": {
8511
8431
  "type": "string"
@@ -8680,9 +8600,9 @@
8680
8600
  "type": "object",
8681
8601
  "properties": {
8682
8602
  "type": {
8683
- "description": "An open vocabulary: note, warning, deprecation, issue, accessibility, coverage…",
8684
8603
  "type": "string",
8685
- "minLength": 1
8604
+ "minLength": 1,
8605
+ "description": "An open vocabulary: note, warning, deprecation, issue, accessibility, coverage…"
8686
8606
  },
8687
8607
  "message": {
8688
8608
  "type": "string"
@@ -8917,9 +8837,9 @@
8917
8837
  "type": "object",
8918
8838
  "properties": {
8919
8839
  "type": {
8920
- "description": "An open vocabulary: note, warning, deprecation, issue, accessibility, coverage…",
8921
8840
  "type": "string",
8922
- "minLength": 1
8841
+ "minLength": 1,
8842
+ "description": "An open vocabulary: note, warning, deprecation, issue, accessibility, coverage…"
8923
8843
  },
8924
8844
  "message": {
8925
8845
  "type": "string"
@@ -9191,9 +9111,9 @@
9191
9111
  "type": "object",
9192
9112
  "properties": {
9193
9113
  "type": {
9194
- "description": "An open vocabulary: note, warning, deprecation, issue, accessibility, coverage…",
9195
9114
  "type": "string",
9196
- "minLength": 1
9115
+ "minLength": 1,
9116
+ "description": "An open vocabulary: note, warning, deprecation, issue, accessibility, coverage…"
9197
9117
  },
9198
9118
  "message": {
9199
9119
  "type": "string"
@@ -9401,9 +9321,9 @@
9401
9321
  "type": "object",
9402
9322
  "properties": {
9403
9323
  "type": {
9404
- "description": "An open vocabulary: note, warning, deprecation, issue, accessibility, coverage…",
9405
9324
  "type": "string",
9406
- "minLength": 1
9325
+ "minLength": 1,
9326
+ "description": "An open vocabulary: note, warning, deprecation, issue, accessibility, coverage…"
9407
9327
  },
9408
9328
  "message": {
9409
9329
  "type": "string"
@@ -9523,45 +9443,29 @@
9523
9443
  },
9524
9444
  "sha": {
9525
9445
  "default": null,
9526
- "anyOf": [
9527
- {
9528
- "type": "string"
9529
- },
9530
- {
9531
- "type": "null"
9532
- }
9446
+ "type": [
9447
+ "string",
9448
+ "null"
9533
9449
  ]
9534
9450
  },
9535
9451
  "branch": {
9536
9452
  "default": null,
9537
- "anyOf": [
9538
- {
9539
- "type": "string"
9540
- },
9541
- {
9542
- "type": "null"
9543
- }
9453
+ "type": [
9454
+ "string",
9455
+ "null"
9544
9456
  ]
9545
9457
  },
9546
9458
  "runUrl": {
9547
9459
  "default": null,
9548
- "anyOf": [
9549
- {
9550
- "type": "string"
9551
- },
9552
- {
9553
- "type": "null"
9554
- }
9460
+ "type": [
9461
+ "string",
9462
+ "null"
9555
9463
  ]
9556
9464
  },
9557
9465
  "environment": {
9558
- "anyOf": [
9559
- {
9560
- "type": "string"
9561
- },
9562
- {
9563
- "type": "null"
9564
- }
9466
+ "type": [
9467
+ "string",
9468
+ "null"
9565
9469
  ]
9566
9470
  },
9567
9471
  "parameters": {
@@ -9767,9 +9671,9 @@
9767
9671
  "type": "object",
9768
9672
  "properties": {
9769
9673
  "type": {
9770
- "description": "An open vocabulary: note, warning, deprecation, issue, accessibility, coverage…",
9771
9674
  "type": "string",
9772
- "minLength": 1
9675
+ "minLength": 1,
9676
+ "description": "An open vocabulary: note, warning, deprecation, issue, accessibility, coverage…"
9773
9677
  },
9774
9678
  "message": {
9775
9679
  "type": "string"
@@ -9873,8 +9777,8 @@
9873
9777
  "const": true
9874
9778
  },
9875
9779
  "id": {
9876
- "description": "The layer id",
9877
- "type": "string"
9780
+ "type": "string",
9781
+ "description": "The layer id"
9878
9782
  },
9879
9783
  "checks": {
9880
9784
  "type": "integer",
@@ -9900,13 +9804,9 @@
9900
9804
  },
9901
9805
  "next": {
9902
9806
  "description": "Pass as `?after=` for the next page; null when there are no more",
9903
- "anyOf": [
9904
- {
9905
- "type": "string"
9906
- },
9907
- {
9908
- "type": "null"
9909
- }
9807
+ "type": [
9808
+ "string",
9809
+ "null"
9910
9810
  ]
9911
9811
  }
9912
9812
  },
@@ -9927,8 +9827,8 @@
9927
9827
  "type": "string"
9928
9828
  },
9929
9829
  "kind": {
9930
- "description": "What the server recognised the key as: `layer`, `layer-catalog`, `blob`, `spec-body`, `spec-set`, `spec-catalog`, `run-manifest`, `run-catalog`, `run-file` or `scratch`",
9931
- "type": "string"
9830
+ "type": "string",
9831
+ "description": "What the server recognised the key as: `layer`, `layer-catalog`, `blob`, `spec-body`, `spec-set`, `spec-catalog`, `run-manifest`, `run-catalog`, `run-file` or `scratch`"
9932
9832
  },
9933
9833
  "created": {
9934
9834
  "type": "boolean"
@@ -9951,15 +9851,15 @@
9951
9851
  "type": "object",
9952
9852
  "properties": {
9953
9853
  "path": {
9954
- "description": "`specs/<path>`",
9955
- "type": "string"
9854
+ "type": "string",
9855
+ "description": "`specs/<path>`"
9956
9856
  },
9957
9857
  "domain": {
9958
9858
  "type": "string"
9959
9859
  },
9960
9860
  "kind": {
9961
- "description": "The kind of spec: `gherkin`, `quint`, `dmn`, …",
9962
- "type": "string"
9861
+ "type": "string",
9862
+ "description": "The kind of spec: `gherkin`, `quint`, `dmn`, …"
9963
9863
  },
9964
9864
  "title": {
9965
9865
  "type": "string"
@@ -9979,13 +9879,9 @@
9979
9879
  }
9980
9880
  },
9981
9881
  "sha": {
9982
- "anyOf": [
9983
- {
9984
- "type": "string"
9985
- },
9986
- {
9987
- "type": "null"
9988
- }
9882
+ "type": [
9883
+ "string",
9884
+ "null"
9989
9885
  ]
9990
9886
  },
9991
9887
  "changedFiles": {
@@ -10011,83 +9907,63 @@
10011
9907
  "type": "object",
10012
9908
  "properties": {
10013
9909
  "id": {
10014
- "description": "The layer id: 64 lowercase hex digits, the SHA-256 of its content",
10015
- "type": "string"
9910
+ "type": "string",
9911
+ "description": "The layer id: 64 lowercase hex digits, the SHA-256 of its content"
10016
9912
  },
10017
9913
  "backend": {
10018
- "description": "The backend it was read from; the one that sorts first when several hold it",
10019
- "type": "string"
9914
+ "type": "string",
9915
+ "description": "The backend it was read from; the one that sorts first when several hold it"
10020
9916
  },
10021
9917
  "producer": {
10022
- "description": "The suite or tool that made it. Part of the slot",
10023
- "type": "string"
9918
+ "type": "string",
9919
+ "description": "The suite or tool that made it. Part of the slot"
10024
9920
  },
10025
9921
  "packageDir": {
10026
- "anyOf": [
10027
- {
10028
- "type": "string"
10029
- },
10030
- {
10031
- "type": "null"
10032
- }
9922
+ "type": [
9923
+ "string",
9924
+ "null"
10033
9925
  ]
10034
9926
  },
10035
9927
  "recordedAtMs": {
10036
- "description": "When the checks ran, epoch milliseconds. The newest completed result wins its slot",
10037
- "type": "number"
9928
+ "type": "number",
9929
+ "description": "When the checks ran, epoch milliseconds. The newest completed result wins its slot"
10038
9930
  },
10039
9931
  "sha": {
10040
9932
  "description": "The commit it was recorded at. Provenance only",
10041
- "anyOf": [
10042
- {
10043
- "type": "string"
10044
- },
10045
- {
10046
- "type": "null"
10047
- }
9933
+ "type": [
9934
+ "string",
9935
+ "null"
10048
9936
  ]
10049
9937
  },
10050
9938
  "branch": {
10051
9939
  "description": "The branch it was recorded on. Provenance only",
10052
- "anyOf": [
10053
- {
10054
- "type": "string"
10055
- },
10056
- {
10057
- "type": "null"
10058
- }
9940
+ "type": [
9941
+ "string",
9942
+ "null"
10059
9943
  ]
10060
9944
  },
10061
9945
  "environment": {
10062
9946
  "description": "The client it checked, such as `ios`. Part of the slot",
10063
- "anyOf": [
10064
- {
10065
- "type": "string"
10066
- },
10067
- {
10068
- "type": "null"
10069
- }
9947
+ "type": [
9948
+ "string",
9949
+ "null"
10070
9950
  ]
10071
9951
  },
10072
9952
  "runUrl": {
10073
- "anyOf": [
10074
- {
10075
- "type": "string"
10076
- },
10077
- {
10078
- "type": "null"
10079
- }
9953
+ "type": [
9954
+ "string",
9955
+ "null"
10080
9956
  ]
10081
9957
  },
10082
9958
  "parameters": {
10083
- "description": "Other choices that make a result its own slot",
10084
9959
  "type": "object",
10085
9960
  "propertyNames": {
10086
9961
  "type": "string"
10087
9962
  },
10088
9963
  "additionalProperties": {
10089
9964
  "type": "string"
10090
- }
9965
+ },
9966
+ "description": "Other choices that make a result its own slot"
10091
9967
  },
10092
9968
  "freshness": {
10093
9969
  "description": "`modified`: recorded from a checkout with uncommitted changes. `unknown`: origin not captured. Absent: clean",
@@ -10098,13 +9974,13 @@
10098
9974
  ]
10099
9975
  },
10100
9976
  "recording": {
10101
- "description": "Where recorded timelines are read from, or null",
10102
9977
  "anyOf": [
10103
9978
  {},
10104
9979
  {
10105
9980
  "type": "null"
10106
9981
  }
10107
- ]
9982
+ ],
9983
+ "description": "Where recorded timelines are read from, or null"
10108
9984
  },
10109
9985
  "live": {
10110
9986
  "type": "boolean"
@@ -10124,7 +10000,13 @@
10124
10000
  "type": "integer",
10125
10001
  "minimum": 0,
10126
10002
  "maximum": 9007199254740991
10127
- }
10003
+ },
10004
+ "required": [
10005
+ "passed",
10006
+ "failed",
10007
+ "running",
10008
+ "not-run"
10009
+ ]
10128
10010
  },
10129
10011
  "execution": {
10130
10012
  "type": "string"
@@ -10213,13 +10095,9 @@
10213
10095
  },
10214
10096
  "cursor": {
10215
10097
  "description": "Pass as `?cursor=` for the next page; null at the end",
10216
- "anyOf": [
10217
- {
10218
- "type": "string"
10219
- },
10220
- {
10221
- "type": "null"
10222
- }
10098
+ "type": [
10099
+ "string",
10100
+ "null"
10223
10101
  ]
10224
10102
  },
10225
10103
  "notices": {
@@ -10240,12 +10118,12 @@
10240
10118
  "type": "string"
10241
10119
  },
10242
10120
  "live": {
10243
- "description": "Always false on a server",
10244
- "type": "boolean"
10121
+ "type": "boolean",
10122
+ "description": "Always false on a server"
10245
10123
  },
10246
10124
  "available": {
10247
- "description": "False when the backend could not be read; its results are then unknown, never passed",
10248
- "type": "boolean"
10125
+ "type": "boolean",
10126
+ "description": "False when the backend could not be read; its results are then unknown, never passed"
10249
10127
  }
10250
10128
  },
10251
10129
  "required": [
@@ -10283,12 +10161,12 @@
10283
10161
  "type": "object",
10284
10162
  "properties": {
10285
10163
  "kind": {
10286
- "description": "The kind of the part holding the check. Part of the slot",
10287
- "type": "string"
10164
+ "type": "string",
10165
+ "description": "The kind of the part holding the check. Part of the slot"
10288
10166
  },
10289
10167
  "id": {
10290
- "description": "The check id. Part of the slot",
10291
- "type": "string"
10168
+ "type": "string",
10169
+ "description": "The check id. Part of the slot"
10292
10170
  },
10293
10171
  "title": {
10294
10172
  "type": "string"
@@ -10304,18 +10182,14 @@
10304
10182
  },
10305
10183
  "specPath": {
10306
10184
  "description": "The spec the check belongs to, `specs/<path>`, or null",
10307
- "anyOf": [
10308
- {
10309
- "type": "string"
10310
- },
10311
- {
10312
- "type": "null"
10313
- }
10185
+ "type": [
10186
+ "string",
10187
+ "null"
10314
10188
  ]
10315
10189
  },
10316
10190
  "detail": {
10317
- "description": "Why it has this status; empty when there is nothing to add",
10318
- "type": "string"
10191
+ "type": "string",
10192
+ "description": "Why it has this status; empty when there is nothing to add"
10319
10193
  },
10320
10194
  "measurements": {
10321
10195
  "type": "array",
@@ -10344,13 +10218,9 @@
10344
10218
  }
10345
10219
  },
10346
10220
  "testId": {
10347
- "anyOf": [
10348
- {
10349
- "type": "string"
10350
- },
10351
- {
10352
- "type": "null"
10353
- }
10221
+ "type": [
10222
+ "string",
10223
+ "null"
10354
10224
  ]
10355
10225
  },
10356
10226
  "variant": {
@@ -10363,13 +10233,9 @@
10363
10233
  }
10364
10234
  },
10365
10235
  "durationMs": {
10366
- "anyOf": [
10367
- {
10368
- "type": "number"
10369
- },
10370
- {
10371
- "type": "null"
10372
- }
10236
+ "type": [
10237
+ "number",
10238
+ "null"
10373
10239
  ]
10374
10240
  },
10375
10241
  "evidence": {
@@ -10451,14 +10317,14 @@
10451
10317
  }
10452
10318
  },
10453
10319
  "fingerprints": {
10454
- "description": "Spec path to the fingerprint the layer recorded for it",
10455
10320
  "type": "object",
10456
10321
  "propertyNames": {
10457
10322
  "type": "string"
10458
10323
  },
10459
10324
  "additionalProperties": {
10460
10325
  "type": "string"
10461
- }
10326
+ },
10327
+ "description": "Spec path to the fingerprint the layer recorded for it"
10462
10328
  }
10463
10329
  },
10464
10330
  "required": [
@@ -10481,9 +10347,9 @@
10481
10347
  "type": "object",
10482
10348
  "properties": {
10483
10349
  "id": {
10484
- "description": "The check's stable identity within its producer. The same check must keep the same id in every layer, or layers cannot replace one another",
10485
10350
  "type": "string",
10486
- "minLength": 1
10351
+ "minLength": 1,
10352
+ "description": "The check's stable identity within its producer. The same check must keep the same id in every layer, or layers cannot replace one another"
10487
10353
  },
10488
10354
  "title": {
10489
10355
  "type": "string"
@@ -10498,8 +10364,8 @@
10498
10364
  ]
10499
10365
  },
10500
10366
  "detail": {
10501
- "description": "Why it failed, or what was measured",
10502
10367
  "default": "",
10368
+ "description": "Why it failed, or what was measured",
10503
10369
  "type": "string"
10504
10370
  },
10505
10371
  "specPath": {
@@ -10517,8 +10383,8 @@
10517
10383
  "minLength": 1
10518
10384
  },
10519
10385
  "value": {
10520
- "description": "A finite number",
10521
- "type": "number"
10386
+ "type": "number",
10387
+ "description": "A finite number"
10522
10388
  },
10523
10389
  "unit": {
10524
10390
  "type": "string"
@@ -10683,9 +10549,9 @@
10683
10549
  "type": "object",
10684
10550
  "properties": {
10685
10551
  "type": {
10686
- "description": "An open vocabulary: note, warning, deprecation, issue, accessibility, coverage…",
10687
10552
  "type": "string",
10688
- "minLength": 1
10553
+ "minLength": 1,
10554
+ "description": "An open vocabulary: note, warning, deprecation, issue, accessibility, coverage…"
10689
10555
  },
10690
10556
  "message": {
10691
10557
  "type": "string"
@@ -10911,9 +10777,9 @@
10911
10777
  "type": "object",
10912
10778
  "properties": {
10913
10779
  "type": {
10914
- "description": "An open vocabulary: note, warning, deprecation, issue, accessibility, coverage…",
10915
10780
  "type": "string",
10916
- "minLength": 1
10781
+ "minLength": 1,
10782
+ "description": "An open vocabulary: note, warning, deprecation, issue, accessibility, coverage…"
10917
10783
  },
10918
10784
  "message": {
10919
10785
  "type": "string"
@@ -11176,9 +11042,9 @@
11176
11042
  "type": "object",
11177
11043
  "properties": {
11178
11044
  "type": {
11179
- "description": "An open vocabulary: note, warning, deprecation, issue, accessibility, coverage…",
11180
11045
  "type": "string",
11181
- "minLength": 1
11046
+ "minLength": 1,
11047
+ "description": "An open vocabulary: note, warning, deprecation, issue, accessibility, coverage…"
11182
11048
  },
11183
11049
  "message": {
11184
11050
  "type": "string"
@@ -11376,9 +11242,9 @@
11376
11242
  "type": "object",
11377
11243
  "properties": {
11378
11244
  "type": {
11379
- "description": "An open vocabulary: note, warning, deprecation, issue, accessibility, coverage…",
11380
11245
  "type": "string",
11381
- "minLength": 1
11246
+ "minLength": 1,
11247
+ "description": "An open vocabulary: note, warning, deprecation, issue, accessibility, coverage…"
11382
11248
  },
11383
11249
  "message": {
11384
11250
  "type": "string"
@@ -11486,10 +11352,10 @@
11486
11352
  "additionalProperties": {}
11487
11353
  },
11488
11354
  "run": {
11489
- "description": "What the run as a whole carries: its logs, links, labels, annotations and extensions",
11490
11355
  "type": "object",
11491
11356
  "properties": {},
11492
- "additionalProperties": {}
11357
+ "additionalProperties": {},
11358
+ "description": "What the run as a whole carries: its logs, links, labels, annotations and extensions"
11493
11359
  }
11494
11360
  },
11495
11361
  "required": [
@@ -11508,8 +11374,8 @@
11508
11374
  "const": 1
11509
11375
  },
11510
11376
  "version": {
11511
- "description": "Changes whenever the report or its history does",
11512
- "type": "string"
11377
+ "type": "string",
11378
+ "description": "Changes whenever the report or its history does"
11513
11379
  },
11514
11380
  "generatedAtMs": {
11515
11381
  "type": "number"
@@ -11537,7 +11403,13 @@
11537
11403
  "type": "integer",
11538
11404
  "minimum": 0,
11539
11405
  "maximum": 9007199254740991
11540
- }
11406
+ },
11407
+ "required": [
11408
+ "passed",
11409
+ "failed",
11410
+ "running",
11411
+ "not-run"
11412
+ ]
11541
11413
  },
11542
11414
  "outcomes": {
11543
11415
  "type": "integer",
@@ -11636,16 +11508,18 @@
11636
11508
  "type": "integer",
11637
11509
  "minimum": 0,
11638
11510
  "maximum": 9007199254740991
11639
- }
11511
+ },
11512
+ "required": [
11513
+ "passed",
11514
+ "failed",
11515
+ "running",
11516
+ "not-run"
11517
+ ]
11640
11518
  },
11641
11519
  "avgMs": {
11642
- "anyOf": [
11643
- {
11644
- "type": "number"
11645
- },
11646
- {
11647
- "type": "null"
11648
- }
11520
+ "type": [
11521
+ "number",
11522
+ "null"
11649
11523
  ]
11650
11524
  }
11651
11525
  },
@@ -11686,16 +11560,18 @@
11686
11560
  "type": "integer",
11687
11561
  "minimum": 0,
11688
11562
  "maximum": 9007199254740991
11689
- }
11563
+ },
11564
+ "required": [
11565
+ "passed",
11566
+ "failed",
11567
+ "running",
11568
+ "not-run"
11569
+ ]
11690
11570
  },
11691
11571
  "avgMs": {
11692
- "anyOf": [
11693
- {
11694
- "type": "number"
11695
- },
11696
- {
11697
- "type": "null"
11698
- }
11572
+ "type": [
11573
+ "number",
11574
+ "null"
11699
11575
  ]
11700
11576
  }
11701
11577
  },
@@ -11736,16 +11612,18 @@
11736
11612
  "type": "integer",
11737
11613
  "minimum": 0,
11738
11614
  "maximum": 9007199254740991
11739
- }
11615
+ },
11616
+ "required": [
11617
+ "passed",
11618
+ "failed",
11619
+ "running",
11620
+ "not-run"
11621
+ ]
11740
11622
  },
11741
11623
  "avgMs": {
11742
- "anyOf": [
11743
- {
11744
- "type": "number"
11745
- },
11746
- {
11747
- "type": "null"
11748
- }
11624
+ "type": [
11625
+ "number",
11626
+ "null"
11749
11627
  ]
11750
11628
  }
11751
11629
  },
@@ -11770,13 +11648,9 @@
11770
11648
  "type": "string"
11771
11649
  },
11772
11650
  "specPath": {
11773
- "anyOf": [
11774
- {
11775
- "type": "string"
11776
- },
11777
- {
11778
- "type": "null"
11779
- }
11651
+ "type": [
11652
+ "string",
11653
+ "null"
11780
11654
  ]
11781
11655
  },
11782
11656
  "status": {
@@ -11814,13 +11688,9 @@
11814
11688
  "type": "string"
11815
11689
  },
11816
11690
  "specPath": {
11817
- "anyOf": [
11818
- {
11819
- "type": "string"
11820
- },
11821
- {
11822
- "type": "null"
11823
- }
11691
+ "type": [
11692
+ "string",
11693
+ "null"
11824
11694
  ]
11825
11695
  },
11826
11696
  "status": {
@@ -11858,13 +11728,9 @@
11858
11728
  "type": "string"
11859
11729
  },
11860
11730
  "specPath": {
11861
- "anyOf": [
11862
- {
11863
- "type": "string"
11864
- },
11865
- {
11866
- "type": "null"
11867
- }
11731
+ "type": [
11732
+ "string",
11733
+ "null"
11868
11734
  ]
11869
11735
  },
11870
11736
  "status": {
@@ -11896,13 +11762,9 @@
11896
11762
  "maximum": 9007199254740991
11897
11763
  },
11898
11764
  "lastRecordedAtMs": {
11899
- "anyOf": [
11900
- {
11901
- "type": "number"
11902
- },
11903
- {
11904
- "type": "null"
11905
- }
11765
+ "type": [
11766
+ "number",
11767
+ "null"
11906
11768
  ]
11907
11769
  },
11908
11770
  "history": {
@@ -12053,7 +11915,13 @@
12053
11915
  "type": "integer",
12054
11916
  "minimum": 0,
12055
11917
  "maximum": 9007199254740991
12056
- }
11918
+ },
11919
+ "required": [
11920
+ "passed",
11921
+ "failed",
11922
+ "running",
11923
+ "not-run"
11924
+ ]
12057
11925
  }
12058
11926
  },
12059
11927
  "required": [
@@ -12150,10 +12018,10 @@
12150
12018
  "additionalProperties": {}
12151
12019
  },
12152
12020
  "total": {
12153
- "description": "Tests the query matched, before offset and limit",
12154
12021
  "type": "integer",
12155
12022
  "minimum": 0,
12156
- "maximum": 9007199254740991
12023
+ "maximum": 9007199254740991,
12024
+ "description": "Tests the query matched, before offset and limit"
12157
12025
  },
12158
12026
  "offset": {
12159
12027
  "type": "integer",
@@ -12171,8 +12039,8 @@
12171
12039
  "type": "object",
12172
12040
  "properties": {
12173
12041
  "key": {
12174
- "description": "The test's identity, `JSON.stringify([specPath, id])`. Pass it to `/api/reports/tests/history?key=`",
12175
- "type": "string"
12042
+ "type": "string",
12043
+ "description": "The test's identity, `JSON.stringify([specPath, id])`. Pass it to `/api/reports/tests/history?key=`"
12176
12044
  },
12177
12045
  "id": {
12178
12046
  "type": "string"
@@ -12181,17 +12049,12 @@
12181
12049
  "type": "string"
12182
12050
  },
12183
12051
  "specPath": {
12184
- "anyOf": [
12185
- {
12186
- "type": "string"
12187
- },
12188
- {
12189
- "type": "null"
12190
- }
12052
+ "type": [
12053
+ "string",
12054
+ "null"
12191
12055
  ]
12192
12056
  },
12193
12057
  "spec": {
12194
- "description": "The spec it belongs to: recorded by its layers, published in a spec set, or derived from the path",
12195
12058
  "anyOf": [
12196
12059
  {
12197
12060
  "type": "object",
@@ -12220,17 +12083,18 @@
12220
12083
  {
12221
12084
  "type": "null"
12222
12085
  }
12223
- ]
12086
+ ],
12087
+ "description": "The spec it belongs to: recorded by its layers, published in a spec set, or derived from the path"
12224
12088
  },
12225
12089
  "status": {
12226
- "description": "The worst current result across environments: failed, then running, then not-run, then passed",
12227
12090
  "type": "string",
12228
12091
  "enum": [
12229
12092
  "passed",
12230
12093
  "failed",
12231
12094
  "running",
12232
12095
  "not-run"
12233
- ]
12096
+ ],
12097
+ "description": "The worst current result across environments: failed, then running, then not-run, then passed"
12234
12098
  },
12235
12099
  "environments": {
12236
12100
  "type": "array",
@@ -12245,14 +12109,13 @@
12245
12109
  }
12246
12110
  },
12247
12111
  "outcomes": {
12248
- "description": "The current result per producer, environment and parameter set, newest first",
12249
12112
  "type": "array",
12250
12113
  "items": {
12251
12114
  "type": "object",
12252
12115
  "properties": {
12253
12116
  "at": {
12254
- "description": "When it was recorded, epoch milliseconds",
12255
- "type": "number"
12117
+ "type": "number",
12118
+ "description": "When it was recorded, epoch milliseconds"
12256
12119
  },
12257
12120
  "status": {
12258
12121
  "type": "string",
@@ -12265,24 +12128,16 @@
12265
12128
  },
12266
12129
  "durationMs": {
12267
12130
  "description": "How long it took, or null when the producer did not measure it",
12268
- "anyOf": [
12269
- {
12270
- "type": "number"
12271
- },
12272
- {
12273
- "type": "null"
12274
- }
12131
+ "type": [
12132
+ "number",
12133
+ "null"
12275
12134
  ]
12276
12135
  },
12277
12136
  "environment": {
12278
12137
  "description": "The client it checked, such as `desktop-web` or `ios`",
12279
- "anyOf": [
12280
- {
12281
- "type": "string"
12282
- },
12283
- {
12284
- "type": "null"
12285
- }
12138
+ "type": [
12139
+ "string",
12140
+ "null"
12286
12141
  ]
12287
12142
  },
12288
12143
  "producer": {
@@ -12301,49 +12156,37 @@
12301
12156
  }
12302
12157
  },
12303
12158
  "branch": {
12304
- "anyOf": [
12305
- {
12306
- "type": "string"
12307
- },
12308
- {
12309
- "type": "null"
12310
- }
12159
+ "type": [
12160
+ "string",
12161
+ "null"
12311
12162
  ]
12312
12163
  },
12313
12164
  "sha": {
12314
- "anyOf": [
12315
- {
12316
- "type": "string"
12317
- },
12318
- {
12319
- "type": "null"
12320
- }
12165
+ "type": [
12166
+ "string",
12167
+ "null"
12321
12168
  ]
12322
12169
  },
12323
12170
  "runUrl": {
12324
- "anyOf": [
12325
- {
12326
- "type": "string"
12327
- },
12328
- {
12329
- "type": "null"
12330
- }
12171
+ "type": [
12172
+ "string",
12173
+ "null"
12331
12174
  ]
12332
12175
  },
12333
12176
  "run": {
12334
- "description": "The key of the run it belongs to, as `GET /api/reports/runs` lists it",
12335
- "type": "string"
12177
+ "type": "string",
12178
+ "description": "The key of the run it belongs to, as `GET /api/reports/runs` lists it"
12336
12179
  },
12337
12180
  "layer": {
12338
- "description": "The id of the layer that recorded it",
12339
- "type": "string"
12181
+ "type": "string",
12182
+ "description": "The id of the layer that recorded it"
12340
12183
  },
12341
12184
  "backend": {
12342
12185
  "type": "string"
12343
12186
  },
12344
12187
  "detail": {
12345
- "description": "Why it has its status, at most 500 characters",
12346
- "type": "string"
12188
+ "type": "string",
12189
+ "description": "Why it has its status, at most 500 characters"
12347
12190
  },
12348
12191
  "evidence": {
12349
12192
  "type": "object",
@@ -12425,7 +12268,8 @@
12425
12268
  "detail"
12426
12269
  ],
12427
12270
  "additionalProperties": {}
12428
- }
12271
+ },
12272
+ "description": "The current result per producer, environment and parameter set, newest first"
12429
12273
  },
12430
12274
  "stats": {
12431
12275
  "type": "object",
@@ -12447,13 +12291,9 @@
12447
12291
  },
12448
12292
  "passRate": {
12449
12293
  "description": "passed / (passed + failed), or null with no completed result",
12450
- "anyOf": [
12451
- {
12452
- "type": "number"
12453
- },
12454
- {
12455
- "type": "null"
12456
- }
12294
+ "type": [
12295
+ "number",
12296
+ "null"
12457
12297
  ]
12458
12298
  },
12459
12299
  "flaky": {
@@ -12517,43 +12357,27 @@
12517
12357
  ]
12518
12358
  },
12519
12359
  "firstSeenMs": {
12520
- "anyOf": [
12521
- {
12522
- "type": "number"
12523
- },
12524
- {
12525
- "type": "null"
12526
- }
12360
+ "type": [
12361
+ "number",
12362
+ "null"
12527
12363
  ]
12528
12364
  },
12529
12365
  "lastSeenMs": {
12530
- "anyOf": [
12531
- {
12532
- "type": "number"
12533
- },
12534
- {
12535
- "type": "null"
12536
- }
12366
+ "type": [
12367
+ "number",
12368
+ "null"
12537
12369
  ]
12538
12370
  },
12539
12371
  "lastPassedAtMs": {
12540
- "anyOf": [
12541
- {
12542
- "type": "number"
12543
- },
12544
- {
12545
- "type": "null"
12546
- }
12372
+ "type": [
12373
+ "number",
12374
+ "null"
12547
12375
  ]
12548
12376
  },
12549
12377
  "lastFailedAtMs": {
12550
- "anyOf": [
12551
- {
12552
- "type": "number"
12553
- },
12554
- {
12555
- "type": "null"
12556
- }
12378
+ "type": [
12379
+ "number",
12380
+ "null"
12557
12381
  ]
12558
12382
  },
12559
12383
  "runs": {
@@ -12689,8 +12513,8 @@
12689
12513
  "type": "object",
12690
12514
  "properties": {
12691
12515
  "key": {
12692
- "description": "The test's identity, `JSON.stringify([specPath, id])`. Pass it to `/api/reports/tests/history?key=`",
12693
- "type": "string"
12516
+ "type": "string",
12517
+ "description": "The test's identity, `JSON.stringify([specPath, id])`. Pass it to `/api/reports/tests/history?key=`"
12694
12518
  },
12695
12519
  "id": {
12696
12520
  "type": "string"
@@ -12699,17 +12523,12 @@
12699
12523
  "type": "string"
12700
12524
  },
12701
12525
  "specPath": {
12702
- "anyOf": [
12703
- {
12704
- "type": "string"
12705
- },
12706
- {
12707
- "type": "null"
12708
- }
12526
+ "type": [
12527
+ "string",
12528
+ "null"
12709
12529
  ]
12710
12530
  },
12711
12531
  "spec": {
12712
- "description": "The spec it belongs to: recorded by its layers, published in a spec set, or derived from the path",
12713
12532
  "anyOf": [
12714
12533
  {
12715
12534
  "type": "object",
@@ -12738,17 +12557,18 @@
12738
12557
  {
12739
12558
  "type": "null"
12740
12559
  }
12741
- ]
12560
+ ],
12561
+ "description": "The spec it belongs to: recorded by its layers, published in a spec set, or derived from the path"
12742
12562
  },
12743
12563
  "status": {
12744
- "description": "The worst current result across environments: failed, then running, then not-run, then passed",
12745
12564
  "type": "string",
12746
12565
  "enum": [
12747
12566
  "passed",
12748
12567
  "failed",
12749
12568
  "running",
12750
12569
  "not-run"
12751
- ]
12570
+ ],
12571
+ "description": "The worst current result across environments: failed, then running, then not-run, then passed"
12752
12572
  },
12753
12573
  "environments": {
12754
12574
  "type": "array",
@@ -12763,14 +12583,13 @@
12763
12583
  }
12764
12584
  },
12765
12585
  "outcomes": {
12766
- "description": "The current result per producer, environment and parameter set, newest first",
12767
12586
  "type": "array",
12768
12587
  "items": {
12769
12588
  "type": "object",
12770
12589
  "properties": {
12771
12590
  "at": {
12772
- "description": "When it was recorded, epoch milliseconds",
12773
- "type": "number"
12591
+ "type": "number",
12592
+ "description": "When it was recorded, epoch milliseconds"
12774
12593
  },
12775
12594
  "status": {
12776
12595
  "type": "string",
@@ -12783,24 +12602,16 @@
12783
12602
  },
12784
12603
  "durationMs": {
12785
12604
  "description": "How long it took, or null when the producer did not measure it",
12786
- "anyOf": [
12787
- {
12788
- "type": "number"
12789
- },
12790
- {
12791
- "type": "null"
12792
- }
12605
+ "type": [
12606
+ "number",
12607
+ "null"
12793
12608
  ]
12794
12609
  },
12795
12610
  "environment": {
12796
12611
  "description": "The client it checked, such as `desktop-web` or `ios`",
12797
- "anyOf": [
12798
- {
12799
- "type": "string"
12800
- },
12801
- {
12802
- "type": "null"
12803
- }
12612
+ "type": [
12613
+ "string",
12614
+ "null"
12804
12615
  ]
12805
12616
  },
12806
12617
  "producer": {
@@ -12819,49 +12630,37 @@
12819
12630
  }
12820
12631
  },
12821
12632
  "branch": {
12822
- "anyOf": [
12823
- {
12824
- "type": "string"
12825
- },
12826
- {
12827
- "type": "null"
12828
- }
12633
+ "type": [
12634
+ "string",
12635
+ "null"
12829
12636
  ]
12830
12637
  },
12831
12638
  "sha": {
12832
- "anyOf": [
12833
- {
12834
- "type": "string"
12835
- },
12836
- {
12837
- "type": "null"
12838
- }
12639
+ "type": [
12640
+ "string",
12641
+ "null"
12839
12642
  ]
12840
12643
  },
12841
12644
  "runUrl": {
12842
- "anyOf": [
12843
- {
12844
- "type": "string"
12845
- },
12846
- {
12847
- "type": "null"
12848
- }
12645
+ "type": [
12646
+ "string",
12647
+ "null"
12849
12648
  ]
12850
12649
  },
12851
12650
  "run": {
12852
- "description": "The key of the run it belongs to, as `GET /api/reports/runs` lists it",
12853
- "type": "string"
12651
+ "type": "string",
12652
+ "description": "The key of the run it belongs to, as `GET /api/reports/runs` lists it"
12854
12653
  },
12855
12654
  "layer": {
12856
- "description": "The id of the layer that recorded it",
12857
- "type": "string"
12655
+ "type": "string",
12656
+ "description": "The id of the layer that recorded it"
12858
12657
  },
12859
12658
  "backend": {
12860
12659
  "type": "string"
12861
12660
  },
12862
12661
  "detail": {
12863
- "description": "Why it has its status, at most 500 characters",
12864
- "type": "string"
12662
+ "type": "string",
12663
+ "description": "Why it has its status, at most 500 characters"
12865
12664
  },
12866
12665
  "evidence": {
12867
12666
  "type": "object",
@@ -12943,7 +12742,8 @@
12943
12742
  "detail"
12944
12743
  ],
12945
12744
  "additionalProperties": {}
12946
- }
12745
+ },
12746
+ "description": "The current result per producer, environment and parameter set, newest first"
12947
12747
  },
12948
12748
  "stats": {
12949
12749
  "type": "object",
@@ -12965,13 +12765,9 @@
12965
12765
  },
12966
12766
  "passRate": {
12967
12767
  "description": "passed / (passed + failed), or null with no completed result",
12968
- "anyOf": [
12969
- {
12970
- "type": "number"
12971
- },
12972
- {
12973
- "type": "null"
12974
- }
12768
+ "type": [
12769
+ "number",
12770
+ "null"
12975
12771
  ]
12976
12772
  },
12977
12773
  "flaky": {
@@ -13035,43 +12831,27 @@
13035
12831
  ]
13036
12832
  },
13037
12833
  "firstSeenMs": {
13038
- "anyOf": [
13039
- {
13040
- "type": "number"
13041
- },
13042
- {
13043
- "type": "null"
13044
- }
12834
+ "type": [
12835
+ "number",
12836
+ "null"
13045
12837
  ]
13046
12838
  },
13047
12839
  "lastSeenMs": {
13048
- "anyOf": [
13049
- {
13050
- "type": "number"
13051
- },
13052
- {
13053
- "type": "null"
13054
- }
12840
+ "type": [
12841
+ "number",
12842
+ "null"
13055
12843
  ]
13056
12844
  },
13057
12845
  "lastPassedAtMs": {
13058
- "anyOf": [
13059
- {
13060
- "type": "number"
13061
- },
13062
- {
13063
- "type": "null"
13064
- }
12846
+ "type": [
12847
+ "number",
12848
+ "null"
13065
12849
  ]
13066
12850
  },
13067
12851
  "lastFailedAtMs": {
13068
- "anyOf": [
13069
- {
13070
- "type": "number"
13071
- },
13072
- {
13073
- "type": "null"
13074
- }
12852
+ "type": [
12853
+ "number",
12854
+ "null"
13075
12855
  ]
13076
12856
  },
13077
12857
  "runs": {
@@ -13184,8 +12964,8 @@
13184
12964
  "type": "object",
13185
12965
  "properties": {
13186
12966
  "at": {
13187
- "description": "When it was recorded, epoch milliseconds",
13188
- "type": "number"
12967
+ "type": "number",
12968
+ "description": "When it was recorded, epoch milliseconds"
13189
12969
  },
13190
12970
  "status": {
13191
12971
  "type": "string",
@@ -13198,24 +12978,16 @@
13198
12978
  },
13199
12979
  "durationMs": {
13200
12980
  "description": "How long it took, or null when the producer did not measure it",
13201
- "anyOf": [
13202
- {
13203
- "type": "number"
13204
- },
13205
- {
13206
- "type": "null"
13207
- }
12981
+ "type": [
12982
+ "number",
12983
+ "null"
13208
12984
  ]
13209
12985
  },
13210
12986
  "environment": {
13211
12987
  "description": "The client it checked, such as `desktop-web` or `ios`",
13212
- "anyOf": [
13213
- {
13214
- "type": "string"
13215
- },
13216
- {
13217
- "type": "null"
13218
- }
12988
+ "type": [
12989
+ "string",
12990
+ "null"
13219
12991
  ]
13220
12992
  },
13221
12993
  "producer": {
@@ -13234,49 +13006,37 @@
13234
13006
  }
13235
13007
  },
13236
13008
  "branch": {
13237
- "anyOf": [
13238
- {
13239
- "type": "string"
13240
- },
13241
- {
13242
- "type": "null"
13243
- }
13009
+ "type": [
13010
+ "string",
13011
+ "null"
13244
13012
  ]
13245
13013
  },
13246
13014
  "sha": {
13247
- "anyOf": [
13248
- {
13249
- "type": "string"
13250
- },
13251
- {
13252
- "type": "null"
13253
- }
13015
+ "type": [
13016
+ "string",
13017
+ "null"
13254
13018
  ]
13255
13019
  },
13256
13020
  "runUrl": {
13257
- "anyOf": [
13258
- {
13259
- "type": "string"
13260
- },
13261
- {
13262
- "type": "null"
13263
- }
13021
+ "type": [
13022
+ "string",
13023
+ "null"
13264
13024
  ]
13265
13025
  },
13266
13026
  "run": {
13267
- "description": "The key of the run it belongs to, as `GET /api/reports/runs` lists it",
13268
- "type": "string"
13027
+ "type": "string",
13028
+ "description": "The key of the run it belongs to, as `GET /api/reports/runs` lists it"
13269
13029
  },
13270
13030
  "layer": {
13271
- "description": "The id of the layer that recorded it",
13272
- "type": "string"
13031
+ "type": "string",
13032
+ "description": "The id of the layer that recorded it"
13273
13033
  },
13274
13034
  "backend": {
13275
13035
  "type": "string"
13276
13036
  },
13277
13037
  "detail": {
13278
- "description": "Why it has its status, at most 500 characters",
13279
- "type": "string"
13038
+ "type": "string",
13039
+ "description": "Why it has its status, at most 500 characters"
13280
13040
  },
13281
13041
  "evidence": {
13282
13042
  "type": "object",
@@ -13390,37 +13150,25 @@
13390
13150
  "type": "object",
13391
13151
  "properties": {
13392
13152
  "key": {
13393
- "description": "The run URL, or `branch@sha`. Pass it to `/api/reports/runs/detail?key=` or `/api/reports/tests?run=`",
13394
- "type": "string"
13153
+ "type": "string",
13154
+ "description": "The run URL, or `branch@sha`. Pass it to `/api/reports/runs/detail?key=` or `/api/reports/tests?run=`"
13395
13155
  },
13396
13156
  "runUrl": {
13397
- "anyOf": [
13398
- {
13399
- "type": "string"
13400
- },
13401
- {
13402
- "type": "null"
13403
- }
13157
+ "type": [
13158
+ "string",
13159
+ "null"
13404
13160
  ]
13405
13161
  },
13406
13162
  "branch": {
13407
- "anyOf": [
13408
- {
13409
- "type": "string"
13410
- },
13411
- {
13412
- "type": "null"
13413
- }
13163
+ "type": [
13164
+ "string",
13165
+ "null"
13414
13166
  ]
13415
13167
  },
13416
13168
  "sha": {
13417
- "anyOf": [
13418
- {
13419
- "type": "string"
13420
- },
13421
- {
13422
- "type": "null"
13423
- }
13169
+ "type": [
13170
+ "string",
13171
+ "null"
13424
13172
  ]
13425
13173
  },
13426
13174
  "startedAtMs": {
@@ -13469,16 +13217,18 @@
13469
13217
  "type": "integer",
13470
13218
  "minimum": 0,
13471
13219
  "maximum": 9007199254740991
13472
- }
13220
+ },
13221
+ "required": [
13222
+ "passed",
13223
+ "failed",
13224
+ "running",
13225
+ "not-run"
13226
+ ]
13473
13227
  },
13474
13228
  "totalDurationMs": {
13475
- "anyOf": [
13476
- {
13477
- "type": "number"
13478
- },
13479
- {
13480
- "type": "null"
13481
- }
13229
+ "type": [
13230
+ "number",
13231
+ "null"
13482
13232
  ]
13483
13233
  },
13484
13234
  "failing": {
@@ -13493,13 +13243,9 @@
13493
13243
  "type": "string"
13494
13244
  },
13495
13245
  "environment": {
13496
- "anyOf": [
13497
- {
13498
- "type": "string"
13499
- },
13500
- {
13501
- "type": "null"
13502
- }
13246
+ "type": [
13247
+ "string",
13248
+ "null"
13503
13249
  ]
13504
13250
  },
13505
13251
  "detail": {
@@ -13558,37 +13304,25 @@
13558
13304
  "type": "object",
13559
13305
  "properties": {
13560
13306
  "key": {
13561
- "description": "The run URL, or `branch@sha`. Pass it to `/api/reports/runs/detail?key=` or `/api/reports/tests?run=`",
13562
- "type": "string"
13307
+ "type": "string",
13308
+ "description": "The run URL, or `branch@sha`. Pass it to `/api/reports/runs/detail?key=` or `/api/reports/tests?run=`"
13563
13309
  },
13564
13310
  "runUrl": {
13565
- "anyOf": [
13566
- {
13567
- "type": "string"
13568
- },
13569
- {
13570
- "type": "null"
13571
- }
13311
+ "type": [
13312
+ "string",
13313
+ "null"
13572
13314
  ]
13573
13315
  },
13574
13316
  "branch": {
13575
- "anyOf": [
13576
- {
13577
- "type": "string"
13578
- },
13579
- {
13580
- "type": "null"
13581
- }
13317
+ "type": [
13318
+ "string",
13319
+ "null"
13582
13320
  ]
13583
13321
  },
13584
13322
  "sha": {
13585
- "anyOf": [
13586
- {
13587
- "type": "string"
13588
- },
13589
- {
13590
- "type": "null"
13591
- }
13323
+ "type": [
13324
+ "string",
13325
+ "null"
13592
13326
  ]
13593
13327
  },
13594
13328
  "startedAtMs": {
@@ -13637,16 +13371,18 @@
13637
13371
  "type": "integer",
13638
13372
  "minimum": 0,
13639
13373
  "maximum": 9007199254740991
13640
- }
13374
+ },
13375
+ "required": [
13376
+ "passed",
13377
+ "failed",
13378
+ "running",
13379
+ "not-run"
13380
+ ]
13641
13381
  },
13642
13382
  "totalDurationMs": {
13643
- "anyOf": [
13644
- {
13645
- "type": "number"
13646
- },
13647
- {
13648
- "type": "null"
13649
- }
13383
+ "type": [
13384
+ "number",
13385
+ "null"
13650
13386
  ]
13651
13387
  },
13652
13388
  "failing": {
@@ -13661,13 +13397,9 @@
13661
13397
  "type": "string"
13662
13398
  },
13663
13399
  "environment": {
13664
- "anyOf": [
13665
- {
13666
- "type": "string"
13667
- },
13668
- {
13669
- "type": "null"
13670
- }
13400
+ "type": [
13401
+ "string",
13402
+ "null"
13671
13403
  ]
13672
13404
  },
13673
13405
  "detail": {
@@ -13717,23 +13449,15 @@
13717
13449
  "type": "string"
13718
13450
  },
13719
13451
  "specPath": {
13720
- "anyOf": [
13721
- {
13722
- "type": "string"
13723
- },
13724
- {
13725
- "type": "null"
13726
- }
13452
+ "type": [
13453
+ "string",
13454
+ "null"
13727
13455
  ]
13728
13456
  },
13729
13457
  "environment": {
13730
- "anyOf": [
13731
- {
13732
- "type": "string"
13733
- },
13734
- {
13735
- "type": "null"
13736
- }
13458
+ "type": [
13459
+ "string",
13460
+ "null"
13737
13461
  ]
13738
13462
  },
13739
13463
  "producer": {
@@ -13749,13 +13473,9 @@
13749
13473
  ]
13750
13474
  },
13751
13475
  "durationMs": {
13752
- "anyOf": [
13753
- {
13754
- "type": "number"
13755
- },
13756
- {
13757
- "type": "null"
13758
- }
13476
+ "type": [
13477
+ "number",
13478
+ "null"
13759
13479
  ]
13760
13480
  },
13761
13481
  "at": {
@@ -13804,13 +13524,9 @@
13804
13524
  "type": "string"
13805
13525
  },
13806
13526
  "ref": {
13807
- "anyOf": [
13808
- {
13809
- "type": "string"
13810
- },
13811
- {
13812
- "type": "null"
13813
- }
13527
+ "type": [
13528
+ "string",
13529
+ "null"
13814
13530
  ]
13815
13531
  },
13816
13532
  "files": {
@@ -13951,7 +13667,7 @@
13951
13667
  "id": {
13952
13668
  "type": "string",
13953
13669
  "format": "uuid",
13954
- "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$"
13670
+ "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
13955
13671
  },
13956
13672
  "producer": {
13957
13673
  "type": "string",
@@ -14203,8 +13919,8 @@
14203
13919
  "type": "object",
14204
13920
  "properties": {
14205
13921
  "version": {
14206
- "description": "The report version after these layers",
14207
- "type": "string"
13922
+ "type": "string",
13923
+ "description": "The report version after these layers"
14208
13924
  },
14209
13925
  "totalLayers": {
14210
13926
  "type": "integer",
@@ -14212,7 +13928,6 @@
14212
13928
  "maximum": 9007199254740991
14213
13929
  },
14214
13930
  "added": {
14215
- "description": "At most the 20 newest of the layers that arrived",
14216
13931
  "type": "array",
14217
13932
  "items": {
14218
13933
  "type": "object",
@@ -14224,33 +13939,21 @@
14224
13939
  "type": "string"
14225
13940
  },
14226
13941
  "environment": {
14227
- "anyOf": [
14228
- {
14229
- "type": "string"
14230
- },
14231
- {
14232
- "type": "null"
14233
- }
13942
+ "type": [
13943
+ "string",
13944
+ "null"
14234
13945
  ]
14235
13946
  },
14236
13947
  "branch": {
14237
- "anyOf": [
14238
- {
14239
- "type": "string"
14240
- },
14241
- {
14242
- "type": "null"
14243
- }
13948
+ "type": [
13949
+ "string",
13950
+ "null"
14244
13951
  ]
14245
13952
  },
14246
13953
  "sha": {
14247
- "anyOf": [
14248
- {
14249
- "type": "string"
14250
- },
14251
- {
14252
- "type": "null"
14253
- }
13954
+ "type": [
13955
+ "string",
13956
+ "null"
14254
13957
  ]
14255
13958
  },
14256
13959
  "recordedAtMs": {
@@ -14271,7 +13974,13 @@
14271
13974
  "type": "integer",
14272
13975
  "minimum": 0,
14273
13976
  "maximum": 9007199254740991
14274
- }
13977
+ },
13978
+ "required": [
13979
+ "passed",
13980
+ "failed",
13981
+ "running",
13982
+ "not-run"
13983
+ ]
14275
13984
  }
14276
13985
  },
14277
13986
  "required": [
@@ -14280,13 +13989,14 @@
14280
13989
  "recordedAtMs"
14281
13990
  ],
14282
13991
  "additionalProperties": {}
14283
- }
13992
+ },
13993
+ "description": "At most the 20 newest of the layers that arrived"
14284
13994
  },
14285
13995
  "addedTotal": {
14286
- "description": "How many layers arrived, including those not listed",
14287
13996
  "type": "integer",
14288
13997
  "minimum": 0,
14289
- "maximum": 9007199254740991
13998
+ "maximum": 9007199254740991,
13999
+ "description": "How many layers arrived, including those not listed"
14290
14000
  }
14291
14001
  },
14292
14002
  "required": [