@crvouga/atlas 1.17.0 → 1.19.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 +14 -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 +19 -6
- package/dist/reports/src/evidence-types.d.ts +8 -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 +7 -1
- package/dist/reports/src/test-catalog.js +10 -4
- package/dist/schema/src/api.d.ts +134 -0
- package/dist/schema/src/api.js +13 -2
- 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/reference/cli.md +11 -2
- package/docs/reference/http-api.md +2 -0
- package/docs/reference/reports.md +189 -9
- package/docs/reference/schema.md +19 -1
- package/docs/rich-evidence.md +33 -5
- package/docs/server.md +1 -1
- package/docs/ui.md +40 -1
- package/llms-full.txt +88 -9
- package/package.json +1 -1
- package/packages/schema/schemas/effective-delta.schema.json +26 -0
- package/packages/schema/schemas/effective-evidence.schema.json +26 -0
- package/packages/schema/schemas/evidence-page.schema.json +13 -0
- package/packages/schema/schemas/layer-rows.schema.json +13 -0
- package/packages/schema/schemas/report-run.schema.json +83 -0
- package/packages/schema/schemas/report-runs.schema.json +86 -0
- package/packages/schema/schemas/review-collection.schema.json +13 -0
- package/packages/schema/schemas/review-manifest.schema.json +13 -0
- package/packages/schema/schemas/test-catalog.schema.json +13 -0
- package/packages/schema/schemas/test-history.schema.json +26 -0
- package/packages/schema/schemas/verify-recordings-result.schema.json +97 -0
- package/packages/server/openapi.json +378 -0
- package/packages/visualizer/src/app/AppShell.tsx +2 -2
- package/packages/visualizer/src/app/router.tsx +25 -1
- package/packages/visualizer/src/components/Header.tsx +15 -4
- package/packages/visualizer/src/evidence/behavior-index.test.ts +119 -0
- package/packages/visualizer/src/evidence/behavior-index.ts +162 -0
- package/packages/visualizer/src/evidence/behavior-panel.tsx +36 -22
- package/packages/visualizer/src/evidence/behavior-return.test.ts +41 -0
- package/packages/visualizer/src/evidence/behavior-return.ts +59 -0
- package/packages/visualizer/src/evidence/behavior.ts +32 -1
- package/packages/visualizer/src/evidence/behaviors-page.tsx +465 -0
- package/packages/visualizer/src/evidence/feature-page.tsx +5 -26
- package/packages/visualizer/src/evidence/scoped-summary-view.tsx +110 -0
- package/packages/visualizer/src/evidence/scoped-summary.test.ts +62 -0
- package/packages/visualizer/src/evidence/scoped-summary.ts +118 -0
- package/packages/visualizer/src/evidence/spec-texts.ts +88 -0
- package/packages/visualizer/src/explorer/ArtifactsView.tsx +7 -6
- package/packages/visualizer/src/explorer/Explorer.tsx +1 -1
- package/packages/visualizer/src/explorer/RunsView.tsx +32 -7
- package/packages/visualizer/src/explorer/collections.tsx +5 -5
- package/packages/visualizer/src/explorer/filters.tsx +11 -3
- package/packages/visualizer/src/explorer/navigate.ts +17 -0
- package/packages/visualizer/src/explorer/playlist-entries.test.ts +10 -1
- package/packages/visualizer/src/explorer/playlist-entries.ts +10 -0
- package/packages/visualizer/src/explorer/playlist.tsx +43 -8
- package/packages/visualizer/src/explorer/search.ts +13 -3
- package/packages/visualizer/src/find/Finder.tsx +1 -62
|
@@ -297,6 +297,19 @@
|
|
|
297
297
|
"type": "boolean",
|
|
298
298
|
"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"
|
|
299
299
|
},
|
|
300
|
+
"reason": {
|
|
301
|
+
"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",
|
|
302
|
+
"type": "string"
|
|
303
|
+
},
|
|
304
|
+
"durationMs": {
|
|
305
|
+
"description": "How long the recording is, in milliseconds, as its producer declared it: a hint to show before the file is opened, never a latency. Absent when none was declared, and in documents of older servers",
|
|
306
|
+
"type": "number",
|
|
307
|
+
"minimum": 0
|
|
308
|
+
},
|
|
309
|
+
"poster": {
|
|
310
|
+
"description": "The bundle key, in the same layer, of the image the producer named as this recording's poster: a hint to show before the file is opened. Absent when there is none or the layer's bundle does not hold it, and in documents of older servers",
|
|
311
|
+
"type": "string"
|
|
312
|
+
},
|
|
300
313
|
"scope": {
|
|
301
314
|
"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",
|
|
302
315
|
"type": "object",
|
|
@@ -968,6 +981,19 @@
|
|
|
968
981
|
"type": "boolean",
|
|
969
982
|
"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"
|
|
970
983
|
},
|
|
984
|
+
"reason": {
|
|
985
|
+
"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",
|
|
986
|
+
"type": "string"
|
|
987
|
+
},
|
|
988
|
+
"durationMs": {
|
|
989
|
+
"description": "How long the recording is, in milliseconds, as its producer declared it: a hint to show before the file is opened, never a latency. Absent when none was declared, and in documents of older servers",
|
|
990
|
+
"type": "number",
|
|
991
|
+
"minimum": 0
|
|
992
|
+
},
|
|
993
|
+
"poster": {
|
|
994
|
+
"description": "The bundle key, in the same layer, of the image the producer named as this recording's poster: a hint to show before the file is opened. Absent when there is none or the layer's bundle does not hold it, and in documents of older servers",
|
|
995
|
+
"type": "string"
|
|
996
|
+
},
|
|
971
997
|
"scope": {
|
|
972
998
|
"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",
|
|
973
999
|
"type": "object",
|
|
@@ -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
|
+
}
|