omp-conductor 0.14.0 → 0.15.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/README.md +336 -169
- package/package.json +8 -5
- package/schema/config.schema.json +609 -0
- package/src/board.ts +19 -32
- package/src/brief-upgrade.ts +1 -1
- package/src/briefs/orchestrator.md +9 -5
- package/src/briefs/policy.md +4 -4
- package/src/briefs/probes/gates.md +51 -0
- package/src/briefs/probes/project-context.md +59 -0
- package/src/briefs/probes/release-procedure.md +81 -0
- package/src/cli.ts +235 -199
- package/src/config-schema.ts +352 -0
- package/src/config.ts +1046 -796
- package/src/confinement.ts +54 -0
- package/src/daemon.ts +442 -374
- package/src/escalate.ts +43 -3
- package/src/fleet.ts +317 -43
- package/src/generate-schema.ts +21 -0
- package/src/graph.ts +3 -3
- package/src/host.ts +16 -0
- package/src/omp.ts +21 -1
- package/src/orchestrator-tick.ts +298 -39
- package/src/privileged.ts +264 -0
- package/src/reports.ts +1 -1
- package/src/session-host.ts +3 -0
- package/src/setup-host.ts +209 -24
- package/src/setup-install.ts +320 -0
- package/src/setup-probe.ts +412 -0
- package/src/{plugin.ts → setup-wizard.ts} +790 -465
- package/src/setup.ts +264 -20
- package/src/types.ts +2 -2
- package/src/upgrade.ts +44 -10
- package/src/verbs/server.ts +32 -9
- package/src/wizard-ui.ts +249 -0
- package/src/worker.ts +6 -1
- package/skills/conductor-onboarding/SKILL.md +0 -748
- package/skills/conductor-update/SKILL.md +0 -51
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "omp-conductor",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.15.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"description": "A 24/7 dispatcher that takes ready GitHub issues to green, mergeable PRs using omp coding sessions, with tiered escalation first to an orchestrator session and then to a human.",
|
|
@@ -9,10 +9,9 @@
|
|
|
9
9
|
"url": "git+https://github.com/TerrifiedBug/conductor.git",
|
|
10
10
|
"directory": "omp"
|
|
11
11
|
},
|
|
12
|
-
"main": "./src/
|
|
12
|
+
"main": "./src/orchestrator-tick.ts",
|
|
13
13
|
"omp": {
|
|
14
14
|
"extensions": [
|
|
15
|
-
"./src/plugin.ts",
|
|
16
15
|
"./src/orchestrator-tick.ts"
|
|
17
16
|
]
|
|
18
17
|
},
|
|
@@ -22,14 +21,18 @@
|
|
|
22
21
|
"files": [
|
|
23
22
|
"src",
|
|
24
23
|
"!src/**/*.test.ts",
|
|
25
|
-
"skills",
|
|
26
24
|
"systemd",
|
|
25
|
+
"schema",
|
|
27
26
|
"README.md",
|
|
28
27
|
"LICENSE"
|
|
29
28
|
],
|
|
30
29
|
"scripts": {
|
|
31
30
|
"check": "tsc --noEmit",
|
|
32
|
-
"test": "bun test"
|
|
31
|
+
"test": "bun test",
|
|
32
|
+
"schema": "bun run src/generate-schema.ts"
|
|
33
|
+
},
|
|
34
|
+
"dependencies": {
|
|
35
|
+
"zod": "^4"
|
|
33
36
|
},
|
|
34
37
|
"peerDependencies": {
|
|
35
38
|
"@oh-my-pi/pi-coding-agent": ">=17.1.4"
|
|
@@ -0,0 +1,609 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"type": "object",
|
|
4
|
+
"properties": {
|
|
5
|
+
"$schema": {
|
|
6
|
+
"description": "Path to the shipped config.schema.json",
|
|
7
|
+
"type": "string"
|
|
8
|
+
},
|
|
9
|
+
"version": {
|
|
10
|
+
"type": "number",
|
|
11
|
+
"description": "The config format version (1 or 2)"
|
|
12
|
+
},
|
|
13
|
+
"defaults": {
|
|
14
|
+
"type": "object",
|
|
15
|
+
"properties": {
|
|
16
|
+
"maxConcurrentWorkers": {
|
|
17
|
+
"type": "number",
|
|
18
|
+
"minimum": 0,
|
|
19
|
+
"description": "Parallel omp sessions (default 2)"
|
|
20
|
+
},
|
|
21
|
+
"maxConcurrentWorkersPerRepo": {
|
|
22
|
+
"type": "number",
|
|
23
|
+
"minimum": 0,
|
|
24
|
+
"description": "Max live workers per repository (default 1)"
|
|
25
|
+
},
|
|
26
|
+
"dailySpendUsd": {
|
|
27
|
+
"anyOf": [
|
|
28
|
+
{
|
|
29
|
+
"type": "number",
|
|
30
|
+
"minimum": 0
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"type": "null"
|
|
34
|
+
}
|
|
35
|
+
],
|
|
36
|
+
"description": "Rolling-day spend ceiling; null means no spend gate (default 25)"
|
|
37
|
+
},
|
|
38
|
+
"planUsage": {
|
|
39
|
+
"anyOf": [
|
|
40
|
+
{
|
|
41
|
+
"type": "object",
|
|
42
|
+
"properties": {
|
|
43
|
+
"windowId": {
|
|
44
|
+
"type": "string",
|
|
45
|
+
"minLength": 1,
|
|
46
|
+
"description": "The allowance window this threshold guards"
|
|
47
|
+
},
|
|
48
|
+
"maxUsedFraction": {
|
|
49
|
+
"type": "number",
|
|
50
|
+
"minimum": 0,
|
|
51
|
+
"maximum": 1,
|
|
52
|
+
"description": "Consumed share, 0–1, at which new claims stop"
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
"required": [
|
|
56
|
+
"windowId",
|
|
57
|
+
"maxUsedFraction"
|
|
58
|
+
],
|
|
59
|
+
"additionalProperties": false,
|
|
60
|
+
"description": "An allowance-window spend guard, or null for unmetered"
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"type": "null"
|
|
64
|
+
}
|
|
65
|
+
],
|
|
66
|
+
"description": "Plan-allowance guard, or null for unmetered"
|
|
67
|
+
},
|
|
68
|
+
"workerMaxTurns": {
|
|
69
|
+
"type": "number",
|
|
70
|
+
"minimum": 0,
|
|
71
|
+
"description": "Turn ceiling for one worker (default 120)"
|
|
72
|
+
},
|
|
73
|
+
"workerMaxTurnsCeiling": {
|
|
74
|
+
"type": "number",
|
|
75
|
+
"minimum": 0,
|
|
76
|
+
"description": "Maximum turn budget assignable to one issue's next attempt"
|
|
77
|
+
},
|
|
78
|
+
"workerWallClockMs": {
|
|
79
|
+
"type": "number",
|
|
80
|
+
"minimum": 0,
|
|
81
|
+
"description": "Wall-clock ceiling for one worker (default 5400000)"
|
|
82
|
+
},
|
|
83
|
+
"maxAttemptsPerIssue": {
|
|
84
|
+
"type": "number",
|
|
85
|
+
"minimum": 0,
|
|
86
|
+
"description": "Failed attempts allowed before escalation (default 2)"
|
|
87
|
+
},
|
|
88
|
+
"maxContinuationsPerIssue": {
|
|
89
|
+
"type": "number",
|
|
90
|
+
"minimum": 0,
|
|
91
|
+
"description": "Operational continuations allowed before crash/resume escalation (default 2)"
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
"additionalProperties": {},
|
|
95
|
+
"description": "Per-fleet or per-project hard limits"
|
|
96
|
+
},
|
|
97
|
+
"projects": {
|
|
98
|
+
"minItems": 1,
|
|
99
|
+
"type": "array",
|
|
100
|
+
"items": {
|
|
101
|
+
"type": "object",
|
|
102
|
+
"properties": {
|
|
103
|
+
"name": {
|
|
104
|
+
"type": "string",
|
|
105
|
+
"minLength": 1
|
|
106
|
+
},
|
|
107
|
+
"tracker": {
|
|
108
|
+
"type": "object",
|
|
109
|
+
"properties": {
|
|
110
|
+
"kind": {
|
|
111
|
+
"type": "string",
|
|
112
|
+
"const": "github"
|
|
113
|
+
},
|
|
114
|
+
"repo": {
|
|
115
|
+
"type": "string",
|
|
116
|
+
"pattern": "^[A-Za-z0-9._-]+\\/[A-Za-z0-9._-]+$"
|
|
117
|
+
}
|
|
118
|
+
},
|
|
119
|
+
"required": [
|
|
120
|
+
"repo"
|
|
121
|
+
],
|
|
122
|
+
"additionalProperties": false
|
|
123
|
+
},
|
|
124
|
+
"queueLabel": {
|
|
125
|
+
"type": "string",
|
|
126
|
+
"minLength": 1
|
|
127
|
+
},
|
|
128
|
+
"groomBelow": {},
|
|
129
|
+
"stateLabels": {
|
|
130
|
+
"type": "object",
|
|
131
|
+
"properties": {
|
|
132
|
+
"inProgress": {},
|
|
133
|
+
"blocked": {},
|
|
134
|
+
"failed": {}
|
|
135
|
+
},
|
|
136
|
+
"additionalProperties": false
|
|
137
|
+
},
|
|
138
|
+
"routing": {
|
|
139
|
+
"type": "object",
|
|
140
|
+
"properties": {
|
|
141
|
+
"labelPrefix": {},
|
|
142
|
+
"repos": {
|
|
143
|
+
"type": "object",
|
|
144
|
+
"propertyNames": {
|
|
145
|
+
"type": "string"
|
|
146
|
+
},
|
|
147
|
+
"additionalProperties": {
|
|
148
|
+
"type": "object",
|
|
149
|
+
"properties": {
|
|
150
|
+
"name": {},
|
|
151
|
+
"cloneUrl": {
|
|
152
|
+
"type": "string",
|
|
153
|
+
"minLength": 1
|
|
154
|
+
},
|
|
155
|
+
"defaultBranch": {
|
|
156
|
+
"default": "main"
|
|
157
|
+
},
|
|
158
|
+
"gates": {
|
|
159
|
+
"type": "array",
|
|
160
|
+
"items": {
|
|
161
|
+
"type": "object",
|
|
162
|
+
"properties": {
|
|
163
|
+
"cmd": {
|
|
164
|
+
"type": "string"
|
|
165
|
+
},
|
|
166
|
+
"cwd": {
|
|
167
|
+
"default": "."
|
|
168
|
+
}
|
|
169
|
+
},
|
|
170
|
+
"required": [
|
|
171
|
+
"cwd"
|
|
172
|
+
],
|
|
173
|
+
"additionalProperties": false
|
|
174
|
+
}
|
|
175
|
+
},
|
|
176
|
+
"graphProject": {
|
|
177
|
+
"type": "string"
|
|
178
|
+
},
|
|
179
|
+
"migrations": {
|
|
180
|
+
"type": "object",
|
|
181
|
+
"properties": {
|
|
182
|
+
"dir": {
|
|
183
|
+
"type": "string",
|
|
184
|
+
"minLength": 1
|
|
185
|
+
}
|
|
186
|
+
},
|
|
187
|
+
"required": [
|
|
188
|
+
"dir"
|
|
189
|
+
],
|
|
190
|
+
"additionalProperties": false
|
|
191
|
+
}
|
|
192
|
+
},
|
|
193
|
+
"required": [
|
|
194
|
+
"cloneUrl"
|
|
195
|
+
],
|
|
196
|
+
"additionalProperties": false
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
},
|
|
200
|
+
"required": [
|
|
201
|
+
"repos"
|
|
202
|
+
],
|
|
203
|
+
"additionalProperties": false
|
|
204
|
+
},
|
|
205
|
+
"caps": {
|
|
206
|
+
"type": "object",
|
|
207
|
+
"properties": {
|
|
208
|
+
"maxConcurrentWorkers": {
|
|
209
|
+
"type": "number",
|
|
210
|
+
"minimum": 0,
|
|
211
|
+
"description": "Parallel omp sessions (default 2)"
|
|
212
|
+
},
|
|
213
|
+
"maxConcurrentWorkersPerRepo": {
|
|
214
|
+
"type": "number",
|
|
215
|
+
"minimum": 0,
|
|
216
|
+
"description": "Max live workers per repository (default 1)"
|
|
217
|
+
},
|
|
218
|
+
"dailySpendUsd": {
|
|
219
|
+
"anyOf": [
|
|
220
|
+
{
|
|
221
|
+
"type": "number",
|
|
222
|
+
"minimum": 0
|
|
223
|
+
},
|
|
224
|
+
{
|
|
225
|
+
"type": "null"
|
|
226
|
+
}
|
|
227
|
+
],
|
|
228
|
+
"description": "Rolling-day spend ceiling; null means no spend gate (default 25)"
|
|
229
|
+
},
|
|
230
|
+
"planUsage": {
|
|
231
|
+
"anyOf": [
|
|
232
|
+
{
|
|
233
|
+
"type": "object",
|
|
234
|
+
"properties": {
|
|
235
|
+
"windowId": {
|
|
236
|
+
"type": "string",
|
|
237
|
+
"minLength": 1,
|
|
238
|
+
"description": "The allowance window this threshold guards"
|
|
239
|
+
},
|
|
240
|
+
"maxUsedFraction": {
|
|
241
|
+
"type": "number",
|
|
242
|
+
"minimum": 0,
|
|
243
|
+
"maximum": 1,
|
|
244
|
+
"description": "Consumed share, 0–1, at which new claims stop"
|
|
245
|
+
}
|
|
246
|
+
},
|
|
247
|
+
"required": [
|
|
248
|
+
"windowId",
|
|
249
|
+
"maxUsedFraction"
|
|
250
|
+
],
|
|
251
|
+
"additionalProperties": false,
|
|
252
|
+
"description": "An allowance-window spend guard, or null for unmetered"
|
|
253
|
+
},
|
|
254
|
+
{
|
|
255
|
+
"type": "null"
|
|
256
|
+
}
|
|
257
|
+
],
|
|
258
|
+
"description": "Plan-allowance guard, or null for unmetered"
|
|
259
|
+
},
|
|
260
|
+
"workerMaxTurns": {
|
|
261
|
+
"type": "number",
|
|
262
|
+
"minimum": 0,
|
|
263
|
+
"description": "Turn ceiling for one worker (default 120)"
|
|
264
|
+
},
|
|
265
|
+
"workerMaxTurnsCeiling": {
|
|
266
|
+
"type": "number",
|
|
267
|
+
"minimum": 0,
|
|
268
|
+
"description": "Maximum turn budget assignable to one issue's next attempt"
|
|
269
|
+
},
|
|
270
|
+
"workerWallClockMs": {
|
|
271
|
+
"type": "number",
|
|
272
|
+
"minimum": 0,
|
|
273
|
+
"description": "Wall-clock ceiling for one worker (default 5400000)"
|
|
274
|
+
},
|
|
275
|
+
"maxAttemptsPerIssue": {
|
|
276
|
+
"type": "number",
|
|
277
|
+
"minimum": 0,
|
|
278
|
+
"description": "Failed attempts allowed before escalation (default 2)"
|
|
279
|
+
},
|
|
280
|
+
"maxContinuationsPerIssue": {
|
|
281
|
+
"type": "number",
|
|
282
|
+
"minimum": 0,
|
|
283
|
+
"description": "Operational continuations allowed before crash/resume escalation (default 2)"
|
|
284
|
+
}
|
|
285
|
+
},
|
|
286
|
+
"additionalProperties": {},
|
|
287
|
+
"description": "Per-fleet or per-project hard limits"
|
|
288
|
+
},
|
|
289
|
+
"workerModel": {},
|
|
290
|
+
"escalation": {
|
|
291
|
+
"type": "object",
|
|
292
|
+
"properties": {
|
|
293
|
+
"telegramChatId": {},
|
|
294
|
+
"telegramTopicId": {},
|
|
295
|
+
"fallbackToIssueComment": {
|
|
296
|
+
"default": true
|
|
297
|
+
},
|
|
298
|
+
"orchestrator": {
|
|
299
|
+
"default": "embedded",
|
|
300
|
+
"type": "string",
|
|
301
|
+
"enum": [
|
|
302
|
+
"embedded",
|
|
303
|
+
"external"
|
|
304
|
+
]
|
|
305
|
+
}
|
|
306
|
+
},
|
|
307
|
+
"required": [
|
|
308
|
+
"fallbackToIssueComment",
|
|
309
|
+
"orchestrator"
|
|
310
|
+
],
|
|
311
|
+
"additionalProperties": false
|
|
312
|
+
},
|
|
313
|
+
"authority": {
|
|
314
|
+
"type": "object",
|
|
315
|
+
"properties": {
|
|
316
|
+
"merge": {
|
|
317
|
+
"default": "human",
|
|
318
|
+
"type": "string",
|
|
319
|
+
"enum": [
|
|
320
|
+
"human",
|
|
321
|
+
"orchestrator"
|
|
322
|
+
]
|
|
323
|
+
},
|
|
324
|
+
"release": {
|
|
325
|
+
"default": "human",
|
|
326
|
+
"type": "string",
|
|
327
|
+
"enum": [
|
|
328
|
+
"human",
|
|
329
|
+
"orchestrator"
|
|
330
|
+
]
|
|
331
|
+
}
|
|
332
|
+
},
|
|
333
|
+
"required": [
|
|
334
|
+
"merge",
|
|
335
|
+
"release"
|
|
336
|
+
],
|
|
337
|
+
"additionalProperties": false
|
|
338
|
+
},
|
|
339
|
+
"releasePolicy": {
|
|
340
|
+
"anyOf": [
|
|
341
|
+
{
|
|
342
|
+
"type": "string",
|
|
343
|
+
"enum": [
|
|
344
|
+
"none",
|
|
345
|
+
"operator-brief"
|
|
346
|
+
]
|
|
347
|
+
},
|
|
348
|
+
{
|
|
349
|
+
"type": "object",
|
|
350
|
+
"propertyNames": {
|
|
351
|
+
"type": "string"
|
|
352
|
+
},
|
|
353
|
+
"additionalProperties": {
|
|
354
|
+
"type": "string",
|
|
355
|
+
"enum": [
|
|
356
|
+
"human",
|
|
357
|
+
"orchestrator"
|
|
358
|
+
]
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
]
|
|
362
|
+
},
|
|
363
|
+
"policy": {
|
|
364
|
+
"type": "object",
|
|
365
|
+
"properties": {
|
|
366
|
+
"merge": {
|
|
367
|
+
"type": "object",
|
|
368
|
+
"properties": {
|
|
369
|
+
"requiredChecks": {
|
|
370
|
+
"default": [],
|
|
371
|
+
"type": "array",
|
|
372
|
+
"items": {
|
|
373
|
+
"type": "string",
|
|
374
|
+
"minLength": 1
|
|
375
|
+
}
|
|
376
|
+
},
|
|
377
|
+
"baseFreshness": {
|
|
378
|
+
"default": "up-to-date",
|
|
379
|
+
"type": "string",
|
|
380
|
+
"enum": [
|
|
381
|
+
"up-to-date",
|
|
382
|
+
"any"
|
|
383
|
+
]
|
|
384
|
+
},
|
|
385
|
+
"drafts": {
|
|
386
|
+
"default": "block",
|
|
387
|
+
"type": "string",
|
|
388
|
+
"enum": [
|
|
389
|
+
"block",
|
|
390
|
+
"allow"
|
|
391
|
+
]
|
|
392
|
+
},
|
|
393
|
+
"whenBehindBase": {
|
|
394
|
+
"default": "update-branch",
|
|
395
|
+
"type": "string",
|
|
396
|
+
"enum": [
|
|
397
|
+
"update-branch",
|
|
398
|
+
"hold",
|
|
399
|
+
"escalate"
|
|
400
|
+
]
|
|
401
|
+
}
|
|
402
|
+
},
|
|
403
|
+
"required": [
|
|
404
|
+
"requiredChecks",
|
|
405
|
+
"baseFreshness",
|
|
406
|
+
"drafts",
|
|
407
|
+
"whenBehindBase"
|
|
408
|
+
],
|
|
409
|
+
"additionalProperties": false
|
|
410
|
+
},
|
|
411
|
+
"release": {
|
|
412
|
+
"type": "object",
|
|
413
|
+
"properties": {
|
|
414
|
+
"requires": {
|
|
415
|
+
"default": [
|
|
416
|
+
"runs-settled"
|
|
417
|
+
],
|
|
418
|
+
"type": "array",
|
|
419
|
+
"items": {
|
|
420
|
+
"type": "string",
|
|
421
|
+
"enum": [
|
|
422
|
+
"runs-settled",
|
|
423
|
+
"no-open-prs",
|
|
424
|
+
"queue-drained",
|
|
425
|
+
"base-branch-green",
|
|
426
|
+
"epic-children-closed"
|
|
427
|
+
]
|
|
428
|
+
}
|
|
429
|
+
},
|
|
430
|
+
"requiredChecks": {
|
|
431
|
+
"default": [],
|
|
432
|
+
"type": "array",
|
|
433
|
+
"items": {
|
|
434
|
+
"type": "string",
|
|
435
|
+
"minLength": 1
|
|
436
|
+
}
|
|
437
|
+
},
|
|
438
|
+
"artefacts": {
|
|
439
|
+
"default": [],
|
|
440
|
+
"type": "array",
|
|
441
|
+
"items": {
|
|
442
|
+
"type": "string",
|
|
443
|
+
"minLength": 1
|
|
444
|
+
}
|
|
445
|
+
},
|
|
446
|
+
"environments": {
|
|
447
|
+
"default": [],
|
|
448
|
+
"type": "array",
|
|
449
|
+
"items": {
|
|
450
|
+
"type": "string",
|
|
451
|
+
"minLength": 1
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
},
|
|
455
|
+
"required": [
|
|
456
|
+
"requires",
|
|
457
|
+
"requiredChecks",
|
|
458
|
+
"artefacts",
|
|
459
|
+
"environments"
|
|
460
|
+
],
|
|
461
|
+
"additionalProperties": false
|
|
462
|
+
}
|
|
463
|
+
},
|
|
464
|
+
"additionalProperties": false
|
|
465
|
+
},
|
|
466
|
+
"reporting": {
|
|
467
|
+
"type": "object",
|
|
468
|
+
"properties": {
|
|
469
|
+
"scope": {
|
|
470
|
+
"description": "Legacy reporting preset; mutually exclusive with the explicit form",
|
|
471
|
+
"type": "string",
|
|
472
|
+
"enum": [
|
|
473
|
+
"escalations",
|
|
474
|
+
"decisions",
|
|
475
|
+
"material"
|
|
476
|
+
]
|
|
477
|
+
},
|
|
478
|
+
"scopePreset": {
|
|
479
|
+
"description": "Back-annotation of the legacy preset this policy came from",
|
|
480
|
+
"type": "string",
|
|
481
|
+
"enum": [
|
|
482
|
+
"escalations",
|
|
483
|
+
"decisions",
|
|
484
|
+
"material"
|
|
485
|
+
]
|
|
486
|
+
},
|
|
487
|
+
"interruptOn": {
|
|
488
|
+
"description": "Which categories interrupt the operator's phone",
|
|
489
|
+
"type": "array",
|
|
490
|
+
"items": {
|
|
491
|
+
"type": "string",
|
|
492
|
+
"enum": [
|
|
493
|
+
"tier2",
|
|
494
|
+
"decision-needed",
|
|
495
|
+
"fleet-stopped",
|
|
496
|
+
"confirmed-failure",
|
|
497
|
+
"material"
|
|
498
|
+
]
|
|
499
|
+
}
|
|
500
|
+
},
|
|
501
|
+
"digest": {
|
|
502
|
+
"type": "object",
|
|
503
|
+
"properties": {
|
|
504
|
+
"cadence": {
|
|
505
|
+
"type": "string",
|
|
506
|
+
"enum": [
|
|
507
|
+
"none",
|
|
508
|
+
"per-tick",
|
|
509
|
+
"daily"
|
|
510
|
+
],
|
|
511
|
+
"description": "When the daily/report rollup is due"
|
|
512
|
+
},
|
|
513
|
+
"at": {
|
|
514
|
+
"description": "Daily rollup time",
|
|
515
|
+
"type": "string",
|
|
516
|
+
"pattern": "^([01]\\d|2[0-3]):[0-5]\\d$"
|
|
517
|
+
},
|
|
518
|
+
"timezone": {
|
|
519
|
+
"type": "string",
|
|
520
|
+
"description": "IANA timezone of the daily rollup"
|
|
521
|
+
}
|
|
522
|
+
},
|
|
523
|
+
"required": [
|
|
524
|
+
"cadence"
|
|
525
|
+
],
|
|
526
|
+
"additionalProperties": false,
|
|
527
|
+
"description": "The reporting digest/rollup schedule"
|
|
528
|
+
},
|
|
529
|
+
"availability": {
|
|
530
|
+
"type": "object",
|
|
531
|
+
"properties": {
|
|
532
|
+
"timezone": {
|
|
533
|
+
"type": "string",
|
|
534
|
+
"minLength": 1,
|
|
535
|
+
"description": "IANA timezone of the window"
|
|
536
|
+
},
|
|
537
|
+
"days": {
|
|
538
|
+
"minItems": 1,
|
|
539
|
+
"type": "array",
|
|
540
|
+
"items": {
|
|
541
|
+
"type": "string",
|
|
542
|
+
"enum": [
|
|
543
|
+
"mon",
|
|
544
|
+
"tue",
|
|
545
|
+
"wed",
|
|
546
|
+
"thu",
|
|
547
|
+
"fri",
|
|
548
|
+
"sat",
|
|
549
|
+
"sun"
|
|
550
|
+
]
|
|
551
|
+
},
|
|
552
|
+
"description": "Days the window is open"
|
|
553
|
+
},
|
|
554
|
+
"start": {
|
|
555
|
+
"type": "string",
|
|
556
|
+
"pattern": "^([01]\\d|2[0-3]):[0-5]\\d$",
|
|
557
|
+
"description": "Window open time, operator-local"
|
|
558
|
+
},
|
|
559
|
+
"end": {
|
|
560
|
+
"type": "string",
|
|
561
|
+
"pattern": "^([01]\\d|2[0-3]):[0-5]\\d$",
|
|
562
|
+
"description": "Window close time, operator-local"
|
|
563
|
+
},
|
|
564
|
+
"bypass": {
|
|
565
|
+
"type": "array",
|
|
566
|
+
"items": {
|
|
567
|
+
"type": "string",
|
|
568
|
+
"enum": [
|
|
569
|
+
"tier2",
|
|
570
|
+
"decision-needed",
|
|
571
|
+
"fleet-stopped",
|
|
572
|
+
"confirmed-failure",
|
|
573
|
+
"material"
|
|
574
|
+
]
|
|
575
|
+
},
|
|
576
|
+
"description": "Categories that may interrupt outside the window"
|
|
577
|
+
}
|
|
578
|
+
},
|
|
579
|
+
"required": [
|
|
580
|
+
"timezone",
|
|
581
|
+
"days",
|
|
582
|
+
"start",
|
|
583
|
+
"end"
|
|
584
|
+
],
|
|
585
|
+
"additionalProperties": false
|
|
586
|
+
}
|
|
587
|
+
},
|
|
588
|
+
"additionalProperties": false
|
|
589
|
+
},
|
|
590
|
+
"workspaceRoot": {},
|
|
591
|
+
"mirrorRoot": {}
|
|
592
|
+
},
|
|
593
|
+
"required": [
|
|
594
|
+
"name",
|
|
595
|
+
"tracker",
|
|
596
|
+
"queueLabel"
|
|
597
|
+
],
|
|
598
|
+
"additionalProperties": {},
|
|
599
|
+
"description": "One product this conductor services"
|
|
600
|
+
}
|
|
601
|
+
}
|
|
602
|
+
},
|
|
603
|
+
"required": [
|
|
604
|
+
"version",
|
|
605
|
+
"projects"
|
|
606
|
+
],
|
|
607
|
+
"additionalProperties": {},
|
|
608
|
+
"description": "On-disk configuration for omp-conductor"
|
|
609
|
+
}
|