@crvouga/atlas 1.16.0 → 1.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -1
- package/dist/reports/src/artifact-query.d.ts +14 -2
- package/dist/reports/src/artifact-query.js +13 -4
- package/dist/reports/src/evidence-detail.js +7 -4
- package/dist/reports/src/evidence-types.d.ts +4 -0
- package/dist/reports/src/recording-receipt.d.ts +23 -0
- package/dist/reports/src/recording-receipt.js +16 -0
- package/dist/reports/src/recording-verify.d.ts +74 -0
- package/dist/reports/src/recording-verify.js +142 -0
- package/dist/reports/src/report-cli.d.ts +2 -2
- package/dist/reports/src/report-cli.js +53 -3
- package/dist/reports/src/test-catalog.d.ts +20 -1
- package/dist/reports/src/test-catalog.js +31 -9
- package/dist/schema/src/api.d.ts +113 -0
- package/dist/schema/src/api.js +17 -3
- package/dist/schema/src/cli-results.d.ts +51 -1
- package/dist/schema/src/cli-results.js +25 -1
- package/dist/server/src/openapi.js +1 -0
- package/docs/agents.md +1 -0
- package/docs/extending.md +1 -1
- package/docs/reference/cli.md +11 -2
- package/docs/reference/http-api.md +2 -0
- package/docs/reference/reports.md +202 -9
- package/docs/reference/schema.md +19 -1
- package/docs/rich-evidence.md +32 -5
- package/docs/server.md +1 -1
- package/docs/ui.md +8 -0
- package/llms-full.txt +56 -9
- package/package.json +1 -1
- package/packages/schema/schemas/effective-delta.schema.json +8 -0
- package/packages/schema/schemas/effective-evidence.schema.json +8 -0
- package/packages/schema/schemas/evidence-page.schema.json +4 -0
- package/packages/schema/schemas/layer-rows.schema.json +4 -0
- package/packages/schema/schemas/report-run.schema.json +74 -0
- package/packages/schema/schemas/report-runs.schema.json +86 -0
- package/packages/schema/schemas/review-collection.schema.json +4 -0
- package/packages/schema/schemas/review-manifest.schema.json +4 -0
- package/packages/schema/schemas/test-catalog.schema.json +30 -0
- package/packages/schema/schemas/test-history.schema.json +48 -0
- package/packages/schema/schemas/verify-recordings-result.schema.json +97 -0
- package/packages/server/openapi.json +318 -0
- package/packages/visualizer/src/evidence/applicability-view.tsx +46 -20
- package/packages/visualizer/src/evidence/applicability.test.ts +68 -1
- package/packages/visualizer/src/evidence/applicability.ts +121 -26
- package/packages/visualizer/src/explorer/ArtifactsView.tsx +3 -2
- package/packages/visualizer/src/explorer/Explorer.tsx +96 -8
- package/packages/visualizer/src/explorer/RunsView.tsx +28 -3
- package/packages/visualizer/src/explorer/TestDetail.tsx +14 -1
- package/packages/visualizer/src/explorer/applicability.ts +43 -0
- package/packages/visualizer/src/explorer/filters.tsx +11 -3
- package/packages/visualizer/src/explorer/search.ts +20 -6
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$id": "https://github.com/crvouga/atlas/schemas/verify-recordings-result.schema.json",
|
|
3
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"properties": {
|
|
6
|
+
"ok": {
|
|
7
|
+
"type": "boolean",
|
|
8
|
+
"description": "True when no layer has a gap and every layer could be read (otherwise the exit code is 1). Test results are unaffected either way"
|
|
9
|
+
},
|
|
10
|
+
"layers": {
|
|
11
|
+
"type": "integer",
|
|
12
|
+
"minimum": 0,
|
|
13
|
+
"maximum": 9007199254740991,
|
|
14
|
+
"description": "Layers examined"
|
|
15
|
+
},
|
|
16
|
+
"checked": {
|
|
17
|
+
"type": "integer",
|
|
18
|
+
"minimum": 0,
|
|
19
|
+
"maximum": 9007199254740991,
|
|
20
|
+
"description": "Videos read back from the store (those that name a bundle key)"
|
|
21
|
+
},
|
|
22
|
+
"verified": {
|
|
23
|
+
"type": "integer",
|
|
24
|
+
"minimum": 0,
|
|
25
|
+
"maximum": 9007199254740991,
|
|
26
|
+
"description": "Of those, the ones that passed every check"
|
|
27
|
+
},
|
|
28
|
+
"referenced": {
|
|
29
|
+
"type": "integer",
|
|
30
|
+
"minimum": 0,
|
|
31
|
+
"maximum": 9007199254740991,
|
|
32
|
+
"description": "Videos given only by address, which Atlas holds no bytes for and does not check"
|
|
33
|
+
},
|
|
34
|
+
"gaps": {
|
|
35
|
+
"type": "array",
|
|
36
|
+
"items": {
|
|
37
|
+
"type": "object",
|
|
38
|
+
"properties": {
|
|
39
|
+
"layer": {
|
|
40
|
+
"type": "string",
|
|
41
|
+
"description": "The layer that holds the video"
|
|
42
|
+
},
|
|
43
|
+
"check": {
|
|
44
|
+
"description": "The check that holds it, or null for a video attached to the layer or a part",
|
|
45
|
+
"type": [
|
|
46
|
+
"string",
|
|
47
|
+
"null"
|
|
48
|
+
]
|
|
49
|
+
},
|
|
50
|
+
"name": {
|
|
51
|
+
"type": "string",
|
|
52
|
+
"description": "The attachment's name"
|
|
53
|
+
},
|
|
54
|
+
"bundleKey": {
|
|
55
|
+
"type": "string",
|
|
56
|
+
"description": "Its key in the layer's bundle (`attachments/<sha256>`)"
|
|
57
|
+
},
|
|
58
|
+
"problem": {
|
|
59
|
+
"type": "string",
|
|
60
|
+
"description": "`not-in-bundle` (the layer names a file its bundle does not list), `blob-missing` (a blob holding it is gone: a 404 when played), `unreadable` (the store could not be read: not proof it is gone), `size-mismatch`, `checksum-mismatch` or `undecodable` (empty, or not the container its media type names). An open vocabulary: treat an unknown problem as a gap"
|
|
61
|
+
},
|
|
62
|
+
"reason": {
|
|
63
|
+
"type": "string",
|
|
64
|
+
"description": "A short explanation without tokens, paths or payload"
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
"required": [
|
|
68
|
+
"layer",
|
|
69
|
+
"check",
|
|
70
|
+
"name",
|
|
71
|
+
"bundleKey",
|
|
72
|
+
"problem",
|
|
73
|
+
"reason"
|
|
74
|
+
],
|
|
75
|
+
"additionalProperties": {}
|
|
76
|
+
},
|
|
77
|
+
"description": "Every video that is missing, unreadable, corrupt or not the container it claims. Re-publish the layer's recordings to repair them"
|
|
78
|
+
},
|
|
79
|
+
"notices": {
|
|
80
|
+
"type": "array",
|
|
81
|
+
"items": {
|
|
82
|
+
"type": "string"
|
|
83
|
+
},
|
|
84
|
+
"description": "Layers that could not be read at all: their recordings are unknown, never verified"
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
"required": [
|
|
88
|
+
"ok",
|
|
89
|
+
"layers",
|
|
90
|
+
"checked",
|
|
91
|
+
"verified",
|
|
92
|
+
"referenced",
|
|
93
|
+
"gaps",
|
|
94
|
+
"notices"
|
|
95
|
+
],
|
|
96
|
+
"additionalProperties": {}
|
|
97
|
+
}
|
|
@@ -5856,6 +5856,15 @@
|
|
|
5856
5856
|
"type": "string"
|
|
5857
5857
|
}
|
|
5858
5858
|
},
|
|
5859
|
+
{
|
|
5860
|
+
"required": false,
|
|
5861
|
+
"name": "recordings",
|
|
5862
|
+
"in": "query",
|
|
5863
|
+
"description": "Recording completeness of the run, apart from its outcome: `complete`, `incomplete`, `none-expected` or `unknown` (a run whose layers declared no recording expectations is `unknown`, never `complete`). Repeatable or comma-separated. Answered from the layers' receipts; no recording is read. A server that does not know it ignores it and does not name it in `filters`.",
|
|
5864
|
+
"schema": {
|
|
5865
|
+
"type": "string"
|
|
5866
|
+
}
|
|
5867
|
+
},
|
|
5859
5868
|
{
|
|
5860
5869
|
"required": false,
|
|
5861
5870
|
"name": "q",
|
|
@@ -6076,6 +6085,15 @@
|
|
|
6076
6085
|
"type": "string"
|
|
6077
6086
|
}
|
|
6078
6087
|
},
|
|
6088
|
+
{
|
|
6089
|
+
"required": false,
|
|
6090
|
+
"name": "recordings",
|
|
6091
|
+
"in": "query",
|
|
6092
|
+
"description": "Recording completeness of the run, apart from its outcome: `complete`, `incomplete`, `none-expected` or `unknown` (a run whose layers declared no recording expectations is `unknown`, never `complete`). Repeatable or comma-separated. Answered from the layers' receipts; no recording is read. A server that does not know it ignores it and does not name it in `filters`.",
|
|
6093
|
+
"schema": {
|
|
6094
|
+
"type": "string"
|
|
6095
|
+
}
|
|
6096
|
+
},
|
|
6079
6097
|
{
|
|
6080
6098
|
"required": false,
|
|
6081
6099
|
"name": "q",
|
|
@@ -10730,6 +10748,10 @@
|
|
|
10730
10748
|
"type": "boolean",
|
|
10731
10749
|
"description": "False when the reference names no bytes: no bundle key, address or inline text, or a bundle key that the layer's own bundle does not hold"
|
|
10732
10750
|
},
|
|
10751
|
+
"reason": {
|
|
10752
|
+
"description": "Why it is unavailable, when the report can tell: `not-in-bundle` is a file the layer names but does not hold (stored, then gone). An open vocabulary: treat an unknown reason as plain unavailable",
|
|
10753
|
+
"type": "string"
|
|
10754
|
+
},
|
|
10733
10755
|
"scope": {
|
|
10734
10756
|
"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",
|
|
10735
10757
|
"type": "object",
|
|
@@ -11209,6 +11231,10 @@
|
|
|
11209
11231
|
"type": "boolean",
|
|
11210
11232
|
"description": "False when the reference names no bytes: no bundle key, address or inline text, or a bundle key that the layer's own bundle does not hold"
|
|
11211
11233
|
},
|
|
11234
|
+
"reason": {
|
|
11235
|
+
"description": "Why it is unavailable, when the report can tell: `not-in-bundle` is a file the layer names but does not hold (stored, then gone). An open vocabulary: treat an unknown reason as plain unavailable",
|
|
11236
|
+
"type": "string"
|
|
11237
|
+
},
|
|
11212
11238
|
"scope": {
|
|
11213
11239
|
"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",
|
|
11214
11240
|
"type": "object",
|
|
@@ -11723,6 +11749,10 @@
|
|
|
11723
11749
|
"type": "boolean",
|
|
11724
11750
|
"description": "False when the reference names no bytes: no bundle key, address or inline text, or a bundle key that the layer's own bundle does not hold"
|
|
11725
11751
|
},
|
|
11752
|
+
"reason": {
|
|
11753
|
+
"description": "Why it is unavailable, when the report can tell: `not-in-bundle` is a file the layer names but does not hold (stored, then gone). An open vocabulary: treat an unknown reason as plain unavailable",
|
|
11754
|
+
"type": "string"
|
|
11755
|
+
},
|
|
11726
11756
|
"scope": {
|
|
11727
11757
|
"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",
|
|
11728
11758
|
"type": "object",
|
|
@@ -12202,6 +12232,10 @@
|
|
|
12202
12232
|
"type": "boolean",
|
|
12203
12233
|
"description": "False when the reference names no bytes: no bundle key, address or inline text, or a bundle key that the layer's own bundle does not hold"
|
|
12204
12234
|
},
|
|
12235
|
+
"reason": {
|
|
12236
|
+
"description": "Why it is unavailable, when the report can tell: `not-in-bundle` is a file the layer names but does not hold (stored, then gone). An open vocabulary: treat an unknown reason as plain unavailable",
|
|
12237
|
+
"type": "string"
|
|
12238
|
+
},
|
|
12205
12239
|
"scope": {
|
|
12206
12240
|
"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",
|
|
12207
12241
|
"type": "object",
|
|
@@ -15610,6 +15644,10 @@
|
|
|
15610
15644
|
"type": "boolean",
|
|
15611
15645
|
"description": "False when the reference names no bytes: no bundle key, address or inline text, or a bundle key that the layer's own bundle does not hold"
|
|
15612
15646
|
},
|
|
15647
|
+
"reason": {
|
|
15648
|
+
"description": "Why it is unavailable, when the report can tell: `not-in-bundle` is a file the layer names but does not hold (stored, then gone). An open vocabulary: treat an unknown reason as plain unavailable",
|
|
15649
|
+
"type": "string"
|
|
15650
|
+
},
|
|
15613
15651
|
"scope": {
|
|
15614
15652
|
"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",
|
|
15615
15653
|
"type": "object",
|
|
@@ -16104,6 +16142,10 @@
|
|
|
16104
16142
|
"type": "boolean",
|
|
16105
16143
|
"description": "False when the reference names no bytes: no bundle key, address or inline text, or a bundle key that the layer's own bundle does not hold"
|
|
16106
16144
|
},
|
|
16145
|
+
"reason": {
|
|
16146
|
+
"description": "Why it is unavailable, when the report can tell: `not-in-bundle` is a file the layer names but does not hold (stored, then gone). An open vocabulary: treat an unknown reason as plain unavailable",
|
|
16147
|
+
"type": "string"
|
|
16148
|
+
},
|
|
16107
16149
|
"scope": {
|
|
16108
16150
|
"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",
|
|
16109
16151
|
"type": "object",
|
|
@@ -18714,6 +18756,10 @@
|
|
|
18714
18756
|
"type": "boolean",
|
|
18715
18757
|
"description": "False when the reference names no bytes: no bundle key, address or inline text, or a bundle key that the layer's own bundle does not hold"
|
|
18716
18758
|
},
|
|
18759
|
+
"reason": {
|
|
18760
|
+
"description": "Why it is unavailable, when the report can tell: `not-in-bundle` is a file the layer names but does not hold (stored, then gone). An open vocabulary: treat an unknown reason as plain unavailable",
|
|
18761
|
+
"type": "string"
|
|
18762
|
+
},
|
|
18717
18763
|
"scope": {
|
|
18718
18764
|
"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",
|
|
18719
18765
|
"type": "object",
|
|
@@ -19196,6 +19242,10 @@
|
|
|
19196
19242
|
"type": "boolean",
|
|
19197
19243
|
"description": "False when the reference names no bytes: no bundle key, address or inline text, or a bundle key that the layer's own bundle does not hold"
|
|
19198
19244
|
},
|
|
19245
|
+
"reason": {
|
|
19246
|
+
"description": "Why it is unavailable, when the report can tell: `not-in-bundle` is a file the layer names but does not hold (stored, then gone). An open vocabulary: treat an unknown reason as plain unavailable",
|
|
19247
|
+
"type": "string"
|
|
19248
|
+
},
|
|
19199
19249
|
"scope": {
|
|
19200
19250
|
"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",
|
|
19201
19251
|
"type": "object",
|
|
@@ -19838,6 +19888,10 @@
|
|
|
19838
19888
|
"type": "boolean",
|
|
19839
19889
|
"description": "False when the reference names no bytes: no bundle key, address or inline text, or a bundle key that the layer's own bundle does not hold"
|
|
19840
19890
|
},
|
|
19891
|
+
"reason": {
|
|
19892
|
+
"description": "Why it is unavailable, when the report can tell: `not-in-bundle` is a file the layer names but does not hold (stored, then gone). An open vocabulary: treat an unknown reason as plain unavailable",
|
|
19893
|
+
"type": "string"
|
|
19894
|
+
},
|
|
19841
19895
|
"scope": {
|
|
19842
19896
|
"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",
|
|
19843
19897
|
"type": "object",
|
|
@@ -20619,6 +20673,10 @@
|
|
|
20619
20673
|
"kind": {
|
|
20620
20674
|
"type": "string"
|
|
20621
20675
|
},
|
|
20676
|
+
"fingerprint": {
|
|
20677
|
+
"description": "The fingerprint of the spec text now (the promise). Compare it with a result's `specRevision`: different means the promise changed after the result was recorded. Absent: unknown, never \"the same\". Absent from an older server",
|
|
20678
|
+
"type": "string"
|
|
20679
|
+
},
|
|
20622
20680
|
"tests": {
|
|
20623
20681
|
"type": "integer",
|
|
20624
20682
|
"minimum": 0,
|
|
@@ -20837,6 +20895,10 @@
|
|
|
20837
20895
|
},
|
|
20838
20896
|
"kind": {
|
|
20839
20897
|
"type": "string"
|
|
20898
|
+
},
|
|
20899
|
+
"fingerprint": {
|
|
20900
|
+
"description": "The fingerprint of the spec text now (the promise). Compare it with a result's `specRevision`: different means the promise changed after the result was recorded. Absent: unknown, never \"the same\". Absent from an older server",
|
|
20901
|
+
"type": "string"
|
|
20840
20902
|
}
|
|
20841
20903
|
},
|
|
20842
20904
|
"required": [
|
|
@@ -20959,6 +21021,24 @@
|
|
|
20959
21021
|
"description": "The fingerprint of its spec text that the layer recorded, when it recorded one. Two results with different revisions were recorded against different promises. Absent: not recorded, never assumed to match",
|
|
20960
21022
|
"type": "string"
|
|
20961
21023
|
},
|
|
21024
|
+
"freshness": {
|
|
21025
|
+
"description": "`modified`: recorded from a checkout with uncommitted changes. `unknown`: origin not captured. Absent for a clean checkout, on results other than a test's current ones, and from an older server. Advisory; never changes a status",
|
|
21026
|
+
"type": "string",
|
|
21027
|
+
"enum": [
|
|
21028
|
+
"modified",
|
|
21029
|
+
"unknown"
|
|
21030
|
+
]
|
|
21031
|
+
},
|
|
21032
|
+
"provenance": {
|
|
21033
|
+
"description": "The labels of its layer and check that say what it ran against and who vouches for it: `build`, `platform`, `applies-to`, `applies-to-by`, `published-at`, `enriched-at`. Present on a test's current results when it has any, and absent from an older server. Never decides a result",
|
|
21034
|
+
"type": "object",
|
|
21035
|
+
"propertyNames": {
|
|
21036
|
+
"type": "string"
|
|
21037
|
+
},
|
|
21038
|
+
"additionalProperties": {
|
|
21039
|
+
"type": "string"
|
|
21040
|
+
}
|
|
21041
|
+
},
|
|
20962
21042
|
"evidence": {
|
|
20963
21043
|
"type": "object",
|
|
20964
21044
|
"properties": {
|
|
@@ -21067,6 +21147,10 @@
|
|
|
21067
21147
|
"type": "boolean",
|
|
21068
21148
|
"description": "False when the reference names no bytes: no bundle key, address or inline text, or a bundle key that the layer's own bundle does not hold"
|
|
21069
21149
|
},
|
|
21150
|
+
"reason": {
|
|
21151
|
+
"description": "Why it is unavailable, when the report can tell: `not-in-bundle` is a file the layer names but does not hold (stored, then gone). An open vocabulary: treat an unknown reason as plain unavailable",
|
|
21152
|
+
"type": "string"
|
|
21153
|
+
},
|
|
21070
21154
|
"scope": {
|
|
21071
21155
|
"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",
|
|
21072
21156
|
"type": "object",
|
|
@@ -22006,6 +22090,10 @@
|
|
|
22006
22090
|
},
|
|
22007
22091
|
"kind": {
|
|
22008
22092
|
"type": "string"
|
|
22093
|
+
},
|
|
22094
|
+
"fingerprint": {
|
|
22095
|
+
"description": "The fingerprint of the spec text now (the promise). Compare it with a result's `specRevision`: different means the promise changed after the result was recorded. Absent: unknown, never \"the same\". Absent from an older server",
|
|
22096
|
+
"type": "string"
|
|
22009
22097
|
}
|
|
22010
22098
|
},
|
|
22011
22099
|
"required": [
|
|
@@ -22128,6 +22216,24 @@
|
|
|
22128
22216
|
"description": "The fingerprint of its spec text that the layer recorded, when it recorded one. Two results with different revisions were recorded against different promises. Absent: not recorded, never assumed to match",
|
|
22129
22217
|
"type": "string"
|
|
22130
22218
|
},
|
|
22219
|
+
"freshness": {
|
|
22220
|
+
"description": "`modified`: recorded from a checkout with uncommitted changes. `unknown`: origin not captured. Absent for a clean checkout, on results other than a test's current ones, and from an older server. Advisory; never changes a status",
|
|
22221
|
+
"type": "string",
|
|
22222
|
+
"enum": [
|
|
22223
|
+
"modified",
|
|
22224
|
+
"unknown"
|
|
22225
|
+
]
|
|
22226
|
+
},
|
|
22227
|
+
"provenance": {
|
|
22228
|
+
"description": "The labels of its layer and check that say what it ran against and who vouches for it: `build`, `platform`, `applies-to`, `applies-to-by`, `published-at`, `enriched-at`. Present on a test's current results when it has any, and absent from an older server. Never decides a result",
|
|
22229
|
+
"type": "object",
|
|
22230
|
+
"propertyNames": {
|
|
22231
|
+
"type": "string"
|
|
22232
|
+
},
|
|
22233
|
+
"additionalProperties": {
|
|
22234
|
+
"type": "string"
|
|
22235
|
+
}
|
|
22236
|
+
},
|
|
22131
22237
|
"evidence": {
|
|
22132
22238
|
"type": "object",
|
|
22133
22239
|
"properties": {
|
|
@@ -22236,6 +22342,10 @@
|
|
|
22236
22342
|
"type": "boolean",
|
|
22237
22343
|
"description": "False when the reference names no bytes: no bundle key, address or inline text, or a bundle key that the layer's own bundle does not hold"
|
|
22238
22344
|
},
|
|
22345
|
+
"reason": {
|
|
22346
|
+
"description": "Why it is unavailable, when the report can tell: `not-in-bundle` is a file the layer names but does not hold (stored, then gone). An open vocabulary: treat an unknown reason as plain unavailable",
|
|
22347
|
+
"type": "string"
|
|
22348
|
+
},
|
|
22239
22349
|
"scope": {
|
|
22240
22350
|
"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",
|
|
22241
22351
|
"type": "object",
|
|
@@ -22781,6 +22891,24 @@
|
|
|
22781
22891
|
"description": "The fingerprint of its spec text that the layer recorded, when it recorded one. Two results with different revisions were recorded against different promises. Absent: not recorded, never assumed to match",
|
|
22782
22892
|
"type": "string"
|
|
22783
22893
|
},
|
|
22894
|
+
"freshness": {
|
|
22895
|
+
"description": "`modified`: recorded from a checkout with uncommitted changes. `unknown`: origin not captured. Absent for a clean checkout, on results other than a test's current ones, and from an older server. Advisory; never changes a status",
|
|
22896
|
+
"type": "string",
|
|
22897
|
+
"enum": [
|
|
22898
|
+
"modified",
|
|
22899
|
+
"unknown"
|
|
22900
|
+
]
|
|
22901
|
+
},
|
|
22902
|
+
"provenance": {
|
|
22903
|
+
"description": "The labels of its layer and check that say what it ran against and who vouches for it: `build`, `platform`, `applies-to`, `applies-to-by`, `published-at`, `enriched-at`. Present on a test's current results when it has any, and absent from an older server. Never decides a result",
|
|
22904
|
+
"type": "object",
|
|
22905
|
+
"propertyNames": {
|
|
22906
|
+
"type": "string"
|
|
22907
|
+
},
|
|
22908
|
+
"additionalProperties": {
|
|
22909
|
+
"type": "string"
|
|
22910
|
+
}
|
|
22911
|
+
},
|
|
22784
22912
|
"evidence": {
|
|
22785
22913
|
"type": "object",
|
|
22786
22914
|
"properties": {
|
|
@@ -22889,6 +23017,10 @@
|
|
|
22889
23017
|
"type": "boolean",
|
|
22890
23018
|
"description": "False when the reference names no bytes: no bundle key, address or inline text, or a bundle key that the layer's own bundle does not hold"
|
|
22891
23019
|
},
|
|
23020
|
+
"reason": {
|
|
23021
|
+
"description": "Why it is unavailable, when the report can tell: `not-in-bundle` is a file the layer names but does not hold (stored, then gone). An open vocabulary: treat an unknown reason as plain unavailable",
|
|
23022
|
+
"type": "string"
|
|
23023
|
+
},
|
|
22892
23024
|
"scope": {
|
|
22893
23025
|
"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",
|
|
22894
23026
|
"type": "object",
|
|
@@ -23918,6 +24050,12 @@
|
|
|
23918
24050
|
"minimum": 0,
|
|
23919
24051
|
"maximum": 9007199254740991,
|
|
23920
24052
|
"description": "References that name no bytes, or bytes the layer does not hold"
|
|
24053
|
+
},
|
|
24054
|
+
"missing": {
|
|
24055
|
+
"description": "Of `unavailable`, those that name a file the layer's bundle does not hold (stored, then gone). Absent when there are none",
|
|
24056
|
+
"type": "integer",
|
|
24057
|
+
"exclusiveMinimum": 0,
|
|
24058
|
+
"maximum": 9007199254740991
|
|
23921
24059
|
}
|
|
23922
24060
|
},
|
|
23923
24061
|
"required": [
|
|
@@ -23927,6 +24065,64 @@
|
|
|
23927
24065
|
],
|
|
23928
24066
|
"additionalProperties": {}
|
|
23929
24067
|
},
|
|
24068
|
+
"recordings": {
|
|
24069
|
+
"description": "Whether the recordings its layers expected were published, apart from its outcomes. Absent when no layer declared an expectation: its completeness is unknown, never complete. Matched by the `recordings` filter",
|
|
24070
|
+
"type": "object",
|
|
24071
|
+
"properties": {
|
|
24072
|
+
"state": {
|
|
24073
|
+
"type": "string",
|
|
24074
|
+
"enum": [
|
|
24075
|
+
"complete",
|
|
24076
|
+
"incomplete",
|
|
24077
|
+
"none-expected",
|
|
24078
|
+
"unknown"
|
|
24079
|
+
],
|
|
24080
|
+
"description": "`incomplete` when an expected recording was skipped or unresolved; else `unknown` when a layer declared no expectations; else `complete` when something was expected and `none-expected` when nothing was"
|
|
24081
|
+
},
|
|
24082
|
+
"expected": {
|
|
24083
|
+
"type": "integer",
|
|
24084
|
+
"minimum": 0,
|
|
24085
|
+
"maximum": 9007199254740991
|
|
24086
|
+
},
|
|
24087
|
+
"published": {
|
|
24088
|
+
"type": "integer",
|
|
24089
|
+
"minimum": 0,
|
|
24090
|
+
"maximum": 9007199254740991,
|
|
24091
|
+
"description": "Of the expected recordings, uploaded or referenced by address"
|
|
24092
|
+
},
|
|
24093
|
+
"skipped": {
|
|
24094
|
+
"type": "integer",
|
|
24095
|
+
"minimum": 0,
|
|
24096
|
+
"maximum": 9007199254740991
|
|
24097
|
+
},
|
|
24098
|
+
"unresolved": {
|
|
24099
|
+
"type": "integer",
|
|
24100
|
+
"minimum": 0,
|
|
24101
|
+
"maximum": 9007199254740991
|
|
24102
|
+
},
|
|
24103
|
+
"notApplicable": {
|
|
24104
|
+
"type": "integer",
|
|
24105
|
+
"minimum": 0,
|
|
24106
|
+
"maximum": 9007199254740991
|
|
24107
|
+
},
|
|
24108
|
+
"layersWithoutReceipt": {
|
|
24109
|
+
"type": "integer",
|
|
24110
|
+
"minimum": 0,
|
|
24111
|
+
"maximum": 9007199254740991,
|
|
24112
|
+
"description": "Layers of the run that declared no recording expectations: nothing is claimed for them"
|
|
24113
|
+
}
|
|
24114
|
+
},
|
|
24115
|
+
"required": [
|
|
24116
|
+
"state",
|
|
24117
|
+
"expected",
|
|
24118
|
+
"published",
|
|
24119
|
+
"skipped",
|
|
24120
|
+
"unresolved",
|
|
24121
|
+
"notApplicable",
|
|
24122
|
+
"layersWithoutReceipt"
|
|
24123
|
+
],
|
|
24124
|
+
"additionalProperties": {}
|
|
24125
|
+
},
|
|
23930
24126
|
"attachments": {
|
|
23931
24127
|
"description": "Files attached to the run itself, in its layers, not to a check. Absent when there are none",
|
|
23932
24128
|
"type": "integer",
|
|
@@ -24167,6 +24363,28 @@
|
|
|
24167
24363
|
],
|
|
24168
24364
|
"additionalProperties": {}
|
|
24169
24365
|
}
|
|
24366
|
+
},
|
|
24367
|
+
"recordings": {
|
|
24368
|
+
"description": "Only for runs: `complete`, `incomplete`, `none-expected` and `unknown` with how many runs have each. Absent on servers that predate the filter",
|
|
24369
|
+
"type": "array",
|
|
24370
|
+
"items": {
|
|
24371
|
+
"type": "object",
|
|
24372
|
+
"properties": {
|
|
24373
|
+
"value": {
|
|
24374
|
+
"type": "string"
|
|
24375
|
+
},
|
|
24376
|
+
"count": {
|
|
24377
|
+
"type": "integer",
|
|
24378
|
+
"minimum": 0,
|
|
24379
|
+
"maximum": 9007199254740991
|
|
24380
|
+
}
|
|
24381
|
+
},
|
|
24382
|
+
"required": [
|
|
24383
|
+
"value",
|
|
24384
|
+
"count"
|
|
24385
|
+
],
|
|
24386
|
+
"additionalProperties": {}
|
|
24387
|
+
}
|
|
24170
24388
|
}
|
|
24171
24389
|
},
|
|
24172
24390
|
"required": [
|
|
@@ -24378,6 +24596,10 @@
|
|
|
24378
24596
|
"type": "boolean",
|
|
24379
24597
|
"description": "False when the reference names no bytes: no bundle key, address or inline text, or a bundle key that the layer's own bundle does not hold"
|
|
24380
24598
|
},
|
|
24599
|
+
"reason": {
|
|
24600
|
+
"description": "Why it is unavailable, when the report can tell: `not-in-bundle` is a file the layer names but does not hold (stored, then gone). An open vocabulary: treat an unknown reason as plain unavailable",
|
|
24601
|
+
"type": "string"
|
|
24602
|
+
},
|
|
24381
24603
|
"scope": {
|
|
24382
24604
|
"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",
|
|
24383
24605
|
"type": "object",
|
|
@@ -24703,6 +24925,28 @@
|
|
|
24703
24925
|
],
|
|
24704
24926
|
"additionalProperties": {}
|
|
24705
24927
|
}
|
|
24928
|
+
},
|
|
24929
|
+
"recordings": {
|
|
24930
|
+
"description": "Only for runs: `complete`, `incomplete`, `none-expected` and `unknown` with how many runs have each. Absent on servers that predate the filter",
|
|
24931
|
+
"type": "array",
|
|
24932
|
+
"items": {
|
|
24933
|
+
"type": "object",
|
|
24934
|
+
"properties": {
|
|
24935
|
+
"value": {
|
|
24936
|
+
"type": "string"
|
|
24937
|
+
},
|
|
24938
|
+
"count": {
|
|
24939
|
+
"type": "integer",
|
|
24940
|
+
"minimum": 0,
|
|
24941
|
+
"maximum": 9007199254740991
|
|
24942
|
+
}
|
|
24943
|
+
},
|
|
24944
|
+
"required": [
|
|
24945
|
+
"value",
|
|
24946
|
+
"count"
|
|
24947
|
+
],
|
|
24948
|
+
"additionalProperties": {}
|
|
24949
|
+
}
|
|
24706
24950
|
}
|
|
24707
24951
|
},
|
|
24708
24952
|
"required": [
|
|
@@ -25670,6 +25914,12 @@
|
|
|
25670
25914
|
"minimum": 0,
|
|
25671
25915
|
"maximum": 9007199254740991,
|
|
25672
25916
|
"description": "References that name no bytes, or bytes the layer does not hold"
|
|
25917
|
+
},
|
|
25918
|
+
"missing": {
|
|
25919
|
+
"description": "Of `unavailable`, those that name a file the layer's bundle does not hold (stored, then gone). Absent when there are none",
|
|
25920
|
+
"type": "integer",
|
|
25921
|
+
"exclusiveMinimum": 0,
|
|
25922
|
+
"maximum": 9007199254740991
|
|
25673
25923
|
}
|
|
25674
25924
|
},
|
|
25675
25925
|
"required": [
|
|
@@ -25679,6 +25929,64 @@
|
|
|
25679
25929
|
],
|
|
25680
25930
|
"additionalProperties": {}
|
|
25681
25931
|
},
|
|
25932
|
+
"recordings": {
|
|
25933
|
+
"description": "Whether the recordings its layers expected were published, apart from its outcomes. Absent when no layer declared an expectation: its completeness is unknown, never complete. Matched by the `recordings` filter",
|
|
25934
|
+
"type": "object",
|
|
25935
|
+
"properties": {
|
|
25936
|
+
"state": {
|
|
25937
|
+
"type": "string",
|
|
25938
|
+
"enum": [
|
|
25939
|
+
"complete",
|
|
25940
|
+
"incomplete",
|
|
25941
|
+
"none-expected",
|
|
25942
|
+
"unknown"
|
|
25943
|
+
],
|
|
25944
|
+
"description": "`incomplete` when an expected recording was skipped or unresolved; else `unknown` when a layer declared no expectations; else `complete` when something was expected and `none-expected` when nothing was"
|
|
25945
|
+
},
|
|
25946
|
+
"expected": {
|
|
25947
|
+
"type": "integer",
|
|
25948
|
+
"minimum": 0,
|
|
25949
|
+
"maximum": 9007199254740991
|
|
25950
|
+
},
|
|
25951
|
+
"published": {
|
|
25952
|
+
"type": "integer",
|
|
25953
|
+
"minimum": 0,
|
|
25954
|
+
"maximum": 9007199254740991,
|
|
25955
|
+
"description": "Of the expected recordings, uploaded or referenced by address"
|
|
25956
|
+
},
|
|
25957
|
+
"skipped": {
|
|
25958
|
+
"type": "integer",
|
|
25959
|
+
"minimum": 0,
|
|
25960
|
+
"maximum": 9007199254740991
|
|
25961
|
+
},
|
|
25962
|
+
"unresolved": {
|
|
25963
|
+
"type": "integer",
|
|
25964
|
+
"minimum": 0,
|
|
25965
|
+
"maximum": 9007199254740991
|
|
25966
|
+
},
|
|
25967
|
+
"notApplicable": {
|
|
25968
|
+
"type": "integer",
|
|
25969
|
+
"minimum": 0,
|
|
25970
|
+
"maximum": 9007199254740991
|
|
25971
|
+
},
|
|
25972
|
+
"layersWithoutReceipt": {
|
|
25973
|
+
"type": "integer",
|
|
25974
|
+
"minimum": 0,
|
|
25975
|
+
"maximum": 9007199254740991,
|
|
25976
|
+
"description": "Layers of the run that declared no recording expectations: nothing is claimed for them"
|
|
25977
|
+
}
|
|
25978
|
+
},
|
|
25979
|
+
"required": [
|
|
25980
|
+
"state",
|
|
25981
|
+
"expected",
|
|
25982
|
+
"published",
|
|
25983
|
+
"skipped",
|
|
25984
|
+
"unresolved",
|
|
25985
|
+
"notApplicable",
|
|
25986
|
+
"layersWithoutReceipt"
|
|
25987
|
+
],
|
|
25988
|
+
"additionalProperties": {}
|
|
25989
|
+
},
|
|
25682
25990
|
"attachments": {
|
|
25683
25991
|
"description": "Files attached to the run itself, in its layers, not to a check. Absent when there are none",
|
|
25684
25992
|
"type": "integer",
|
|
@@ -25824,6 +26132,10 @@
|
|
|
25824
26132
|
"type": "boolean",
|
|
25825
26133
|
"description": "False when the reference names no bytes: no bundle key, address or inline text, or a bundle key that the layer's own bundle does not hold"
|
|
25826
26134
|
},
|
|
26135
|
+
"reason": {
|
|
26136
|
+
"description": "Why it is unavailable, when the report can tell: `not-in-bundle` is a file the layer names but does not hold (stored, then gone). An open vocabulary: treat an unknown reason as plain unavailable",
|
|
26137
|
+
"type": "string"
|
|
26138
|
+
},
|
|
25827
26139
|
"scope": {
|
|
25828
26140
|
"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",
|
|
25829
26141
|
"type": "object",
|
|
@@ -26025,6 +26337,12 @@
|
|
|
26025
26337
|
"minimum": 0,
|
|
26026
26338
|
"maximum": 9007199254740991,
|
|
26027
26339
|
"description": "References that name no bytes, or bytes the layer does not hold"
|
|
26340
|
+
},
|
|
26341
|
+
"missing": {
|
|
26342
|
+
"description": "Of `unavailable`, those that name a file the layer's bundle does not hold (stored, then gone). Absent when there are none",
|
|
26343
|
+
"type": "integer",
|
|
26344
|
+
"exclusiveMinimum": 0,
|
|
26345
|
+
"maximum": 9007199254740991
|
|
26028
26346
|
}
|
|
26029
26347
|
},
|
|
26030
26348
|
"required": [
|