valtrion 0.7.4__py3-none-any.whl
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.
- valtrion/__init__.py +3 -0
- valtrion/__main__.py +5 -0
- valtrion/_compat.json +7 -0
- valtrion/_license.txt +21 -0
- valtrion/_schemas/baseline.schema.json +38 -0
- valtrion/_schemas/checks.schema.json +48 -0
- valtrion/_schemas/common.schema.json +48 -0
- valtrion/_schemas/event.schema.json +24 -0
- valtrion/_schemas/heartbeat.schema.json +29 -0
- valtrion/_schemas/hosts.schema.json +64 -0
- valtrion/_schemas/job.schema.json +38 -0
- valtrion/_schemas/lease.schema.json +21 -0
- valtrion/_schemas/pipeline.schema.json +62 -0
- valtrion/_schemas/plan.schema.json +54 -0
- valtrion/_schemas/registry.schema.json +42 -0
- valtrion/_schemas/result.schema.json +131 -0
- valtrion/adapter.py +161 -0
- valtrion/artifacts.py +266 -0
- valtrion/cli.py +159 -0
- valtrion/commands.py +1047 -0
- valtrion/compare.py +404 -0
- valtrion/config.py +275 -0
- valtrion/constants.py +79 -0
- valtrion/core.py +217 -0
- valtrion/doctor.py +296 -0
- valtrion/gitstate.py +107 -0
- valtrion/hostsync.py +162 -0
- valtrion/jobs.py +959 -0
- valtrion/lease.py +481 -0
- valtrion/pipeline.py +908 -0
- valtrion/project.py +218 -0
- valtrion/providers/__init__.py +55 -0
- valtrion/providers/android.py +695 -0
- valtrion/providers/editor.py +495 -0
- valtrion/providers/ios.py +664 -0
- valtrion/providers/macos.py +684 -0
- valtrion/providers/unity/__init__.py +1 -0
- valtrion/providers/unity/support.py +239 -0
- valtrion/providers/windows.py +423 -0
- valtrion/remote.py +289 -0
- valtrion/report.py +272 -0
- valtrion/resolver.py +164 -0
- valtrion/retention.py +63 -0
- valtrion/schema.py +336 -0
- valtrion/select.py +598 -0
- valtrion/submit.py +221 -0
- valtrion/supervise.py +548 -0
- valtrion/transport.py +295 -0
- valtrion/wheel.py +78 -0
- valtrion/workroot.py +649 -0
- valtrion-0.7.4.dist-info/METADATA +40 -0
- valtrion-0.7.4.dist-info/RECORD +55 -0
- valtrion-0.7.4.dist-info/WHEEL +4 -0
- valtrion-0.7.4.dist-info/entry_points.txt +2 -0
- valtrion-0.7.4.dist-info/licenses/LICENSE +21 -0
valtrion/__init__.py
ADDED
valtrion/__main__.py
ADDED
valtrion/_compat.json
ADDED
valtrion/_license.txt
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 GORYNED
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "gdv.baseline/1",
|
|
4
|
+
"title": "Baseline summary of one plan on one comparability key",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": ["schema", "planId", "key", "createdUtc", "source", "metrics"],
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"properties": {
|
|
9
|
+
"schema": { "const": "gdv.baseline/1" },
|
|
10
|
+
"planId": { "$ref": "common.schema.json#/$defs/identifier" },
|
|
11
|
+
"key": { "$ref": "common.schema.json#/$defs/comparabilityKey" },
|
|
12
|
+
"createdUtc": { "$ref": "common.schema.json#/$defs/utc" },
|
|
13
|
+
"source": {
|
|
14
|
+
"type": "object",
|
|
15
|
+
"required": ["runId", "repo", "sha", "evidence"],
|
|
16
|
+
"additionalProperties": false,
|
|
17
|
+
"properties": {
|
|
18
|
+
"runId": { "$ref": "common.schema.json#/$defs/identifier" },
|
|
19
|
+
"repo": { "type": "string", "minLength": 1 },
|
|
20
|
+
"sha": { "$ref": "common.schema.json#/$defs/gitSha" },
|
|
21
|
+
"evidence": { "enum": ["physical", "emulator", "host"] }
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"metrics": {
|
|
25
|
+
"type": "object",
|
|
26
|
+
"additionalProperties": {
|
|
27
|
+
"type": "object",
|
|
28
|
+
"required": ["unit", "direction", "stats"],
|
|
29
|
+
"additionalProperties": false,
|
|
30
|
+
"properties": {
|
|
31
|
+
"unit": { "type": "string", "minLength": 1 },
|
|
32
|
+
"direction": { "$ref": "common.schema.json#/$defs/direction" },
|
|
33
|
+
"stats": { "$ref": "common.schema.json#/$defs/stats" }
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "gdv.checks/1",
|
|
4
|
+
"title": "Project check map: changed paths to kinds, kinds to checks per level",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": ["schema", "platforms", "areas", "kinds", "unclassified"],
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"properties": {
|
|
9
|
+
"schema": { "const": "gdv.checks/1" },
|
|
10
|
+
"platforms": {
|
|
11
|
+
"type": "object",
|
|
12
|
+
"required": ["required"],
|
|
13
|
+
"additionalProperties": false,
|
|
14
|
+
"properties": {
|
|
15
|
+
"required": { "type": "array", "items": { "$ref": "common.schema.json#/$defs/platform" } },
|
|
16
|
+
"dev": { "type": "array", "items": { "$ref": "common.schema.json#/$defs/platform" } }
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"unityEditorSlots": { "$ref": "common.schema.json#/$defs/int32", "minimum": 1 },
|
|
20
|
+
"areas": {
|
|
21
|
+
"type": "array",
|
|
22
|
+
"items": {
|
|
23
|
+
"type": "object",
|
|
24
|
+
"required": ["glob", "kind"],
|
|
25
|
+
"additionalProperties": false,
|
|
26
|
+
"properties": {
|
|
27
|
+
"glob": { "type": "string", "minLength": 1 },
|
|
28
|
+
"kind": { "$ref": "common.schema.json#/$defs/identifier" }
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
"kinds": { "type": "object", "additionalProperties": { "$ref": "#/$defs/levels" } },
|
|
33
|
+
"unclassified": { "enum": ["widest", "fail"] }
|
|
34
|
+
},
|
|
35
|
+
"$defs": {
|
|
36
|
+
"levels": {
|
|
37
|
+
"type": "object",
|
|
38
|
+
"additionalProperties": false,
|
|
39
|
+
"properties": {
|
|
40
|
+
"L0": { "$ref": "common.schema.json#/$defs/stringList" },
|
|
41
|
+
"L1": { "$ref": "common.schema.json#/$defs/stringList" },
|
|
42
|
+
"L2": { "$ref": "common.schema.json#/$defs/stringList" },
|
|
43
|
+
"L3": { "$ref": "common.schema.json#/$defs/stringList" },
|
|
44
|
+
"L4": { "$ref": "common.schema.json#/$defs/stringList" }
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "gdv.common/1",
|
|
4
|
+
"title": "Shared definitions of the Valtrion contracts",
|
|
5
|
+
"$defs": {
|
|
6
|
+
"status": { "enum": ["PASS", "FAIL", "BLOCKED", "NEEDS_PERMISSION", "STALL", "TIMEOUT"] },
|
|
7
|
+
"layerStatus": { "$ref": "#/$defs/status" },
|
|
8
|
+
"evidence": { "enum": ["physical", "emulator", "editor", "host"] },
|
|
9
|
+
"platform": { "enum": ["ios", "android", "windows", "macos", "editor"] },
|
|
10
|
+
"int32": { "type": "integer", "maximum": 2147483647 },
|
|
11
|
+
"hostOs": { "enum": ["windows", "macos", "linux"] },
|
|
12
|
+
"transportKind": { "enum": ["local", "ssh"] },
|
|
13
|
+
"hostSelection": { "enum": ["local", "capability", "pinned"] },
|
|
14
|
+
"planKind": { "enum": ["functional", "performance", "soak", "smoke"] },
|
|
15
|
+
"dataPolicy": { "enum": ["isolated", "devdata", "clean-install"] },
|
|
16
|
+
"direction": { "enum": ["lower", "higher"] },
|
|
17
|
+
"verdict": { "enum": ["PASS", "REGRESSION", "IMPROVED", "NOISY", "NOT_COMPARABLE"] },
|
|
18
|
+
"identifier": { "type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]*$", "maxLength": 200 },
|
|
19
|
+
"gitSha": { "type": "string", "pattern": "^[0-9a-f]{40}$" },
|
|
20
|
+
"sha256": { "type": "string", "pattern": "^[0-9a-f]{64}$" },
|
|
21
|
+
"utc": { "type": "string", "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(\\.[0-9]+)?Z$" },
|
|
22
|
+
"stringList": { "type": "array", "items": { "type": "string", "minLength": 1 } },
|
|
23
|
+
"stats": {
|
|
24
|
+
"type": "object",
|
|
25
|
+
"required": ["n", "median", "p90", "max"],
|
|
26
|
+
"additionalProperties": false,
|
|
27
|
+
"properties": {
|
|
28
|
+
"n": { "type": "integer", "minimum": 0 },
|
|
29
|
+
"median": { "type": "number" },
|
|
30
|
+
"p90": { "type": "number" },
|
|
31
|
+
"max": { "type": "number" },
|
|
32
|
+
"stdev": { "type": "number", "minimum": 0 }
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
"comparabilityKey": {
|
|
36
|
+
"type": "object",
|
|
37
|
+
"required": ["planSha256", "deviceClass", "osMajor", "buildProfile", "unityVersion"],
|
|
38
|
+
"additionalProperties": false,
|
|
39
|
+
"properties": {
|
|
40
|
+
"planSha256": { "$ref": "#/$defs/sha256" },
|
|
41
|
+
"deviceClass": { "$ref": "#/$defs/identifier" },
|
|
42
|
+
"osMajor": { "$ref": "#/$defs/int32", "minimum": 0 },
|
|
43
|
+
"buildProfile": { "$ref": "#/$defs/identifier" },
|
|
44
|
+
"unityVersion": { "type": "string", "minLength": 1 }
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "gdv.event/1",
|
|
4
|
+
"title": "One line of events.jsonl (append-only job log)",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": ["schema", "seq", "utc", "jobId", "type"],
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"properties": {
|
|
9
|
+
"schema": { "const": "gdv.event/1" },
|
|
10
|
+
"seq": { "type": "integer", "minimum": 0 },
|
|
11
|
+
"utc": { "$ref": "common.schema.json#/$defs/utc" },
|
|
12
|
+
"jobId": { "$ref": "common.schema.json#/$defs/identifier" },
|
|
13
|
+
"type": {
|
|
14
|
+
"enum": [
|
|
15
|
+
"job.started", "job.finished", "step.started", "step.finished", "progress",
|
|
16
|
+
"stall.detected", "timeout.detected", "lease.acquired", "lease.released", "log"
|
|
17
|
+
]
|
|
18
|
+
},
|
|
19
|
+
"step": { "type": "string" },
|
|
20
|
+
"status": { "$ref": "common.schema.json#/$defs/status" },
|
|
21
|
+
"message": { "type": "string" },
|
|
22
|
+
"data": { "type": "object" }
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "gdv.heartbeat/1",
|
|
4
|
+
"title": "Heartbeat written by the Runtime every few seconds",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": ["schema", "runId", "seq", "utc", "state", "stepIndex", "stepType", "elapsedMs"],
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"properties": {
|
|
9
|
+
"schema": { "const": "gdv.heartbeat/1" },
|
|
10
|
+
"runId": { "$ref": "common.schema.json#/$defs/identifier" },
|
|
11
|
+
"seq": { "type": "integer", "minimum": 0 },
|
|
12
|
+
"utc": { "$ref": "common.schema.json#/$defs/utc" },
|
|
13
|
+
"state": { "enum": ["starting", "running", "waiting-host", "finishing", "done"] },
|
|
14
|
+
"stepIndex": { "$ref": "common.schema.json#/$defs/int32", "minimum": -1 },
|
|
15
|
+
"stepType": { "type": "string" },
|
|
16
|
+
"elapsedMs": { "type": "integer", "minimum": 0 },
|
|
17
|
+
"message": { "type": "string" },
|
|
18
|
+
"request": {
|
|
19
|
+
"type": "object",
|
|
20
|
+
"required": ["id", "action"],
|
|
21
|
+
"additionalProperties": false,
|
|
22
|
+
"properties": {
|
|
23
|
+
"id": { "$ref": "common.schema.json#/$defs/identifier" },
|
|
24
|
+
"action": { "type": "string", "minLength": 1 },
|
|
25
|
+
"args": { "type": "object" }
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "gdv.hosts/1",
|
|
4
|
+
"title": "Host inventory of one machine (machine-local, outside git): where Valtrion may run work",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": ["schema", "hosts"],
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"properties": {
|
|
9
|
+
"schema": { "const": "gdv.hosts/1" },
|
|
10
|
+
"hosts": { "type": "array", "items": { "$ref": "#/$defs/host" }, "minItems": 1 }
|
|
11
|
+
},
|
|
12
|
+
"$defs": {
|
|
13
|
+
"host": {
|
|
14
|
+
"type": "object",
|
|
15
|
+
"required": ["id", "transport", "os", "artifactsRoot"],
|
|
16
|
+
"additionalProperties": false,
|
|
17
|
+
"properties": {
|
|
18
|
+
"id": { "$ref": "common.schema.json#/$defs/identifier" },
|
|
19
|
+
"transport": { "$ref": "#/$defs/transport" },
|
|
20
|
+
"os": { "$ref": "common.schema.json#/$defs/hostOs" },
|
|
21
|
+
"roles": { "$ref": "common.schema.json#/$defs/stringList" },
|
|
22
|
+
"capabilities": { "$ref": "#/$defs/capabilities" },
|
|
23
|
+
"projectsRoot": { "type": "string", "minLength": 1 },
|
|
24
|
+
"worktreePolicy": { "enum": ["per-task", "shared"] },
|
|
25
|
+
"artifactsRoot": { "type": "string", "minLength": 1 },
|
|
26
|
+
"python": { "type": "string", "minLength": 1, "description": "Absolute path of the Python (3.10 or newer) that valtrion hosts sync uses on an SSH host; recorded by valtrion hosts add --python or found by valtrion hosts sync." },
|
|
27
|
+
"valtrionCommand": { "type": "string", "minLength": 1, "description": "Absolute path of the valtrion command on an SSH host; recorded by valtrion hosts sync, used instead of PATH lookup." }
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"transport": {
|
|
31
|
+
"type": "object",
|
|
32
|
+
"required": ["kind"],
|
|
33
|
+
"additionalProperties": false,
|
|
34
|
+
"properties": {
|
|
35
|
+
"kind": { "$ref": "common.schema.json#/$defs/transportKind" },
|
|
36
|
+
"sshTarget": { "type": "string", "pattern": "^[^-\\x00-\\x1f][^\\x00-\\x1f]*" },
|
|
37
|
+
"connectTimeoutSec": { "$ref": "common.schema.json#/$defs/int32", "minimum": 1 }
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
"capabilities": {
|
|
41
|
+
"description": "What the host declares; valtrion doctor verifies it. Devices attached to the host are discovered, not declared.",
|
|
42
|
+
"type": "object",
|
|
43
|
+
"additionalProperties": false,
|
|
44
|
+
"properties": {
|
|
45
|
+
"unityEditors": {
|
|
46
|
+
"type": "array",
|
|
47
|
+
"items": {
|
|
48
|
+
"type": "object",
|
|
49
|
+
"required": ["version", "modules"],
|
|
50
|
+
"additionalProperties": false,
|
|
51
|
+
"properties": {
|
|
52
|
+
"version": { "type": "string", "minLength": 1 },
|
|
53
|
+
"modules": { "$ref": "common.schema.json#/$defs/stringList" }
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
"buildPlatforms": { "type": "array", "items": { "$ref": "common.schema.json#/$defs/platform" } },
|
|
58
|
+
"xcode": { "type": "string", "minLength": 1 },
|
|
59
|
+
"iosSigning": { "type": "boolean" },
|
|
60
|
+
"adb": { "type": "boolean" }
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "gdv.job/1",
|
|
4
|
+
"title": "State of a detached host job (job.json, rewritten atomically)",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": ["schema", "jobId", "kind", "state", "status", "reason", "createdUtc", "updatedUtc", "host", "command", "watchdog", "eventsOffset"],
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"properties": {
|
|
9
|
+
"schema": { "const": "gdv.job/1" },
|
|
10
|
+
"jobId": { "$ref": "common.schema.json#/$defs/identifier" },
|
|
11
|
+
"kind": { "enum": ["run", "pipeline", "build", "install", "collect"] },
|
|
12
|
+
"state": { "enum": ["queued", "running", "finished", "cancelled"] },
|
|
13
|
+
"status": {
|
|
14
|
+
"anyOf": [
|
|
15
|
+
{ "type": "null" },
|
|
16
|
+
{ "$ref": "common.schema.json#/$defs/status" }
|
|
17
|
+
]
|
|
18
|
+
},
|
|
19
|
+
"reason": { "type": ["string", "null"] },
|
|
20
|
+
"createdUtc": { "$ref": "common.schema.json#/$defs/utc" },
|
|
21
|
+
"updatedUtc": { "$ref": "common.schema.json#/$defs/utc" },
|
|
22
|
+
"host": { "$ref": "common.schema.json#/$defs/identifier" },
|
|
23
|
+
"pid": { "$ref": "common.schema.json#/$defs/int32", "minimum": 1 },
|
|
24
|
+
"command": { "$ref": "common.schema.json#/$defs/stringList" },
|
|
25
|
+
"resultPath": { "type": "string", "minLength": 1 },
|
|
26
|
+
"watchdog": {
|
|
27
|
+
"type": "object",
|
|
28
|
+
"required": ["stallSec", "timeoutSec", "lastProgressUtc"],
|
|
29
|
+
"additionalProperties": false,
|
|
30
|
+
"properties": {
|
|
31
|
+
"stallSec": { "$ref": "common.schema.json#/$defs/int32", "minimum": 1 },
|
|
32
|
+
"timeoutSec": { "$ref": "common.schema.json#/$defs/int32", "minimum": 1 },
|
|
33
|
+
"lastProgressUtc": { "$ref": "common.schema.json#/$defs/utc" }
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"eventsOffset": { "type": "integer", "minimum": 0 }
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "gdv.lease/1",
|
|
4
|
+
"title": "Lease on an exclusive resource (device, editor slot, signing, worktree)",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": ["schema", "resource", "owner", "session", "pid", "host", "acquiredUtc", "renewedUtc", "ttlSec", "purpose"],
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"properties": {
|
|
9
|
+
"schema": { "const": "gdv.lease/1" },
|
|
10
|
+
"resource": { "$ref": "common.schema.json#/$defs/identifier" },
|
|
11
|
+
"owner": { "type": "string", "minLength": 1 },
|
|
12
|
+
"session": { "type": "string", "minLength": 1 },
|
|
13
|
+
"worktree": { "type": "string" },
|
|
14
|
+
"pid": { "$ref": "common.schema.json#/$defs/int32", "minimum": 1 },
|
|
15
|
+
"host": { "$ref": "common.schema.json#/$defs/identifier" },
|
|
16
|
+
"acquiredUtc": { "$ref": "common.schema.json#/$defs/utc" },
|
|
17
|
+
"renewedUtc": { "$ref": "common.schema.json#/$defs/utc" },
|
|
18
|
+
"ttlSec": { "$ref": "common.schema.json#/$defs/int32", "minimum": 1 },
|
|
19
|
+
"purpose": { "type": "string" }
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "gdv.pipeline/1",
|
|
4
|
+
"title": "Validation pipeline: build, install, run series, collect, compare",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": ["schema", "id", "candidate", "device", "stages"],
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"properties": {
|
|
9
|
+
"schema": { "const": "gdv.pipeline/1" },
|
|
10
|
+
"id": { "$ref": "common.schema.json#/$defs/identifier" },
|
|
11
|
+
"candidate": {
|
|
12
|
+
"type": "object",
|
|
13
|
+
"required": ["repo", "profile"],
|
|
14
|
+
"additionalProperties": false,
|
|
15
|
+
"properties": {
|
|
16
|
+
"repo": { "type": "string", "minLength": 1 },
|
|
17
|
+
"sha": { "$ref": "common.schema.json#/$defs/gitSha", "description": "Optional, or all zeros: the commit of the checkout is used and recorded." },
|
|
18
|
+
"profile": { "$ref": "common.schema.json#/$defs/identifier" }
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
"device": {
|
|
22
|
+
"type": "object",
|
|
23
|
+
"additionalProperties": false,
|
|
24
|
+
"properties": {
|
|
25
|
+
"class": { "$ref": "common.schema.json#/$defs/identifier" },
|
|
26
|
+
"id": { "$ref": "common.schema.json#/$defs/identifier" },
|
|
27
|
+
"platform": { "$ref": "common.schema.json#/$defs/platform" }
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"stages": { "type": "array", "items": { "$ref": "#/$defs/stage" }, "minItems": 1 },
|
|
31
|
+
"compare": { "type": "string", "minLength": 1 }
|
|
32
|
+
},
|
|
33
|
+
"$defs": {
|
|
34
|
+
"stage": {
|
|
35
|
+
"type": "object",
|
|
36
|
+
"required": ["stage"],
|
|
37
|
+
"additionalProperties": false,
|
|
38
|
+
"properties": {
|
|
39
|
+
"stage": { "enum": ["build", "install", "run", "collect"] },
|
|
40
|
+
"plan": { "type": "string", "minLength": 1 },
|
|
41
|
+
"variant": { "type": "string", "minLength": 1 },
|
|
42
|
+
"repeat": { "$ref": "common.schema.json#/$defs/int32", "minimum": 1 },
|
|
43
|
+
"coldLaunch": { "type": "boolean" },
|
|
44
|
+
"timeoutSec": { "$ref": "common.schema.json#/$defs/int32", "minimum": 1 },
|
|
45
|
+
"args": { "type": "object" },
|
|
46
|
+
"prelaunchFiles": {
|
|
47
|
+
"type": "array",
|
|
48
|
+
"description": "Files pushed into the application's data root before it starts (read before the first scene): local is absolute or relative to the pipeline file, remote is relative to the data root.",
|
|
49
|
+
"items": {
|
|
50
|
+
"type": "object",
|
|
51
|
+
"required": ["local", "remote"],
|
|
52
|
+
"additionalProperties": false,
|
|
53
|
+
"properties": {
|
|
54
|
+
"local": { "type": "string", "minLength": 1 },
|
|
55
|
+
"remote": { "type": "string", "minLength": 1 }
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "gdv.plan/1",
|
|
4
|
+
"title": "Validation plan",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": ["schema", "id", "kind", "dataPolicy", "budgetSeconds", "steps"],
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"properties": {
|
|
9
|
+
"schema": { "const": "gdv.plan/1" },
|
|
10
|
+
"id": { "$ref": "common.schema.json#/$defs/identifier" },
|
|
11
|
+
"kind": { "$ref": "common.schema.json#/$defs/planKind" },
|
|
12
|
+
"requires": {
|
|
13
|
+
"type": "object",
|
|
14
|
+
"additionalProperties": false,
|
|
15
|
+
"properties": {
|
|
16
|
+
"platforms": { "type": "array", "items": { "$ref": "common.schema.json#/$defs/platform" }, "minItems": 1 },
|
|
17
|
+
"capabilities": { "$ref": "common.schema.json#/$defs/stringList" },
|
|
18
|
+
"profile": { "$ref": "common.schema.json#/$defs/identifier" },
|
|
19
|
+
"evidence": { "type": "array", "items": { "$ref": "common.schema.json#/$defs/evidence" }, "minItems": 1 }
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"dataPolicy": { "$ref": "common.schema.json#/$defs/dataPolicy" },
|
|
23
|
+
"budgetSeconds": { "$ref": "common.schema.json#/$defs/int32", "minimum": 1 },
|
|
24
|
+
"repeat": { "$ref": "common.schema.json#/$defs/int32", "minimum": 1 },
|
|
25
|
+
"warmup": { "$ref": "common.schema.json#/$defs/int32", "minimum": 0 },
|
|
26
|
+
"continueOnFail": { "type": "boolean" },
|
|
27
|
+
"setup": { "type": "array", "items": { "$ref": "#/$defs/step" } },
|
|
28
|
+
"steps": { "type": "array", "items": { "$ref": "#/$defs/step" }, "minItems": 1 },
|
|
29
|
+
"metrics": { "type": "object", "additionalProperties": { "$ref": "#/$defs/metricSpec" } },
|
|
30
|
+
"cleanup": { "enum": ["ledger", "none"] }
|
|
31
|
+
},
|
|
32
|
+
"$defs": {
|
|
33
|
+
"step": {
|
|
34
|
+
"type": "object",
|
|
35
|
+
"required": ["type", "timeoutSec"],
|
|
36
|
+
"properties": {
|
|
37
|
+
"type": { "$ref": "common.schema.json#/$defs/identifier" },
|
|
38
|
+
"timeoutSec": { "$ref": "common.schema.json#/$defs/int32", "minimum": 1 }
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
"metricSpec": {
|
|
42
|
+
"type": "object",
|
|
43
|
+
"required": ["unit", "direction"],
|
|
44
|
+
"additionalProperties": false,
|
|
45
|
+
"properties": {
|
|
46
|
+
"unit": { "type": "string", "minLength": 1 },
|
|
47
|
+
"direction": { "$ref": "common.schema.json#/$defs/direction" },
|
|
48
|
+
"budget": { "type": "number" },
|
|
49
|
+
"regressionPct": { "type": "number", "minimum": 0 },
|
|
50
|
+
"minSamples": { "$ref": "common.schema.json#/$defs/int32", "minimum": 1 }
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "gdv.registry/1",
|
|
4
|
+
"title": "Host device registry (outside git)",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": ["schema", "host", "devices"],
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"properties": {
|
|
9
|
+
"schema": { "const": "gdv.registry/1" },
|
|
10
|
+
"host": {
|
|
11
|
+
"type": "object",
|
|
12
|
+
"required": ["id", "os", "roles"],
|
|
13
|
+
"additionalProperties": false,
|
|
14
|
+
"properties": {
|
|
15
|
+
"id": { "$ref": "common.schema.json#/$defs/identifier" },
|
|
16
|
+
"os": { "$ref": "common.schema.json#/$defs/hostOs" },
|
|
17
|
+
"roles": { "$ref": "common.schema.json#/$defs/stringList" }
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
"devices": {
|
|
21
|
+
"type": "array",
|
|
22
|
+
"items": {
|
|
23
|
+
"type": "object",
|
|
24
|
+
"required": ["id", "hostId", "platform", "class", "capabilities", "exclusive"],
|
|
25
|
+
"additionalProperties": false,
|
|
26
|
+
"properties": {
|
|
27
|
+
"id": { "$ref": "common.schema.json#/$defs/identifier" },
|
|
28
|
+
"hostId": { "$ref": "common.schema.json#/$defs/identifier" },
|
|
29
|
+
"alias": { "$ref": "common.schema.json#/$defs/identifier" },
|
|
30
|
+
"platform": { "$ref": "common.schema.json#/$defs/platform" },
|
|
31
|
+
"class": { "$ref": "common.schema.json#/$defs/identifier" },
|
|
32
|
+
"model": { "type": "string" },
|
|
33
|
+
"os": { "type": "string" },
|
|
34
|
+
"evidence": { "$ref": "common.schema.json#/$defs/evidence" },
|
|
35
|
+
"capabilities": { "$ref": "common.schema.json#/$defs/stringList" },
|
|
36
|
+
"exclusive": { "type": "boolean" },
|
|
37
|
+
"notes": { "type": "string" }
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|