-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrun_manifest.schema.json
More file actions
138 lines (137 loc) · 4.15 KB
/
run_manifest.schema.json
File metadata and controls
138 lines (137 loc) · 4.15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://keon.systems/schemas/run_manifest.schema.json",
"title": "RunManifest",
"description": "Canonical evidence record emitted per test run. Schema v1.0.0.",
"type": "object",
"required": [
"schemaVersion",
"runId",
"timestamp",
"env",
"layer",
"suite",
"scenarioId",
"status",
"source",
"evidence"
],
"properties": {
"schemaVersion": {
"type": "string",
"const": "1.0.0",
"description": "Schema version – always 1.0.0 for this revision."
},
"runId": {
"type": "string",
"description": "UUIDv4 uniquely identifying this run attempt.",
"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
},
"timestamp": {
"type": "string",
"format": "date-time",
"description": "ISO-8601 UTC timestamp of run start."
},
"env": {
"type": "string",
"enum": ["local", "ci", "staging", "production"],
"description": "Target environment under test."
},
"layer": {
"type": "string",
"description": "Architectural layer under test (e.g. forgepilot.ai, keon.systems)."
},
"suite": {
"type": "string",
"enum": ["smoke", "unit", "contract", "integration", "e2e", "chaos", "perf", "obs"],
"description": "Test suite tier."
},
"scenarioId": {
"type": "string",
"description": "Stable identifier for this test scenario (slug format).",
"pattern": "^[a-z0-9][a-z0-9-]*[a-z0-9]$"
},
"status": {
"type": "string",
"enum": ["pass", "fail", "skip", "abort"],
"description": "Terminal status of this run."
},
"durationMs": {
"type": "integer",
"minimum": 0,
"description": "Wall-clock duration of the run in milliseconds."
},
"source": {
"type": "object",
"required": ["file"],
"description": "Origin of the test.",
"properties": {
"file": { "type": "string", "description": "Source file path relative to repo root." },
"line": { "type": "integer", "minimum": 1 },
"commit": { "type": "string", "description": "Git commit SHA (short or full)." },
"branch": { "type": "string" },
"ci": { "type": "string", "description": "CI run URL or job ID if available." }
},
"additionalProperties": false
},
"assertions": {
"type": "array",
"description": "Canonical assertion IDs evaluated during this run.",
"items": {
"type": "object",
"required": ["id", "status"],
"properties": {
"id": {
"type": "string",
"description": "Canonical assertion ID e.g. INV-IDEMPOTENCY.",
"enum": [
"INV-IDEMPOTENCY",
"INV-DETERMINISM",
"INV-ISOLATION",
"INV-TRUTHFULNESS",
"INV-OBSERVABILITY",
"INV-RESILIENCE",
"INV-CONTRACT",
"INV-CORRELATION"
]
},
"status": { "type": "string", "enum": ["pass", "fail", "skip"] },
"message": { "type": "string" }
},
"additionalProperties": false
}
},
"evidence": {
"type": "object",
"required": ["spoolDir"],
"description": "Evidence artifact locations.",
"properties": {
"spoolDir": {
"type": "string",
"description": "Local path to the spool directory containing artifacts."
},
"blobPrefix": {
"type": "string",
"description": "Azure Blob Storage path prefix for this run."
},
"traceUrl": { "type": "string", "format": "uri" },
"screenshotUrls": {
"type": "array",
"items": { "type": "string", "format": "uri" }
}
},
"additionalProperties": false
},
"tags": {
"type": "array",
"items": { "type": "string" },
"description": "Free-form tags for filtering."
},
"meta": {
"type": "object",
"description": "Arbitrary key-value metadata.",
"additionalProperties": { "type": "string" }
}
},
"additionalProperties": false
}