@orkastery/cli 0.2.0 → 0.3.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.
Files changed (242) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +86 -65
  3. package/adapters/README.md +30 -15
  4. package/adapters/claude-code/.claude-plugin/plugin.json +11 -5
  5. package/adapters/claude-code/README.md +110 -8
  6. package/adapters/claude-code/commands/onboarding.md +21 -0
  7. package/adapters/claude-code/commands/ork.md +99 -27
  8. package/adapters/claude-code/hooks/hooks.json +6 -1
  9. package/adapters/claude-code/hooks/ork-sensor.js +66 -0
  10. package/adapters/codex/skills/ork/SKILL.md +57 -0
  11. package/adapters/hermes/README.md +163 -0
  12. package/adapters/hermes/bin/ork-abrir-thread.sh +2 -0
  13. package/adapters/hermes/bin/ork-brain.sh +4 -0
  14. package/adapters/hermes/bin/ork-hitl-answer.py +82 -0
  15. package/adapters/hermes/bin/ork-maestro.sh +6 -0
  16. package/adapters/hermes/bin/ork-master-enviar.py +84 -0
  17. package/adapters/hermes/bin/ork-objective-message.sh +17 -0
  18. package/adapters/hermes/bin/ork-objective-status.sh +12 -0
  19. package/adapters/hermes/bin/ork-pulse-enviar.py +47 -0
  20. package/adapters/hermes/hermes.plugin.json +26 -4
  21. package/adapters/hermes/hitl-ingress/__init__.py +356 -0
  22. package/adapters/hermes/hitl-ingress/plugin.yaml +4 -0
  23. package/adapters/hermes/skills/orkastery-devmaster/SKILL.md +75 -22
  24. package/adapters/openclaw/README.md +135 -26
  25. package/adapters/openclaw/bin/ork-brain.sh +4 -0
  26. package/adapters/openclaw/construir.sh +19 -0
  27. package/adapters/openclaw/dist/hitl-ingress.js +199 -0
  28. package/adapters/openclaw/dist/index.js +437 -0
  29. package/adapters/openclaw/openclaw.plugin.json +39 -134
  30. package/adapters/openclaw/package.json +26 -0
  31. package/adapters/openclaw/src/hitl-ingress.ts +180 -0
  32. package/adapters/openclaw/src/index.ts +458 -0
  33. package/adapters/openclaw/src/tipos-openclaw.d.ts +58 -0
  34. package/adapters/openclaw/tsconfig.json +15 -0
  35. package/assets/docs/markdownlint-cli2.jsonc +22 -0
  36. package/assets/docs/padroes/documentacao-de-produto.md +133 -0
  37. package/assets/docs/padroes/roadmap-de-produto.md +98 -0
  38. package/assets/docs/produto/README.md +14 -0
  39. package/assets/docs/produto/_modelo-feature.md +59 -0
  40. package/assets/docs/roadmap/README.md +14 -0
  41. package/assets/docs/roadmap/_modelo-item.md +73 -0
  42. package/assets/orkmind-native-schema.json +32 -0
  43. package/assets/orkmind_bridge.py +357 -0
  44. package/assets/orkmind_fixture.py +67 -0
  45. package/assets/orkmind_prospective.py +138 -0
  46. package/assets/reference-tariffs-i07.json +23 -0
  47. package/dist/adapters/claude-bg.js +488 -39
  48. package/dist/adapters/codex-controller-sensor.js +449 -0
  49. package/dist/adapters/codex-controller-worker.js +361 -0
  50. package/dist/adapters/codex-controller.js +252 -0
  51. package/dist/adapters/codex-events.js +205 -0
  52. package/dist/adapters/codex-question.js +26 -0
  53. package/dist/adapters/codex-runner.js +133 -0
  54. package/dist/adapters/codex.js +394 -0
  55. package/dist/agents-md.js +84 -0
  56. package/dist/auditoria.js +11 -8
  57. package/dist/auditrun.js +5 -4
  58. package/dist/board.js +173 -22
  59. package/dist/branch-de-estado.js +136 -0
  60. package/dist/canarios-hitl.js +177 -0
  61. package/dist/canarios-i43.js +543 -0
  62. package/dist/canarios-pulse.js +147 -0
  63. package/dist/canarios-sensores.js +129 -0
  64. package/dist/canarios.js +111 -2
  65. package/dist/catalogo.js +9 -0
  66. package/dist/ci.js +216 -0
  67. package/dist/ciclos.js +2 -1
  68. package/dist/claim-lint.js +64 -0
  69. package/dist/claims.js +60 -0
  70. package/dist/company-brain-capture.js +195 -0
  71. package/dist/company-brain-cli.js +123 -0
  72. package/dist/company-brain-client.js +61 -0
  73. package/dist/company-brain-contract.js +166 -0
  74. package/dist/company-brain-journal.js +192 -0
  75. package/dist/company-brain-mcp.js +33 -0
  76. package/dist/company-brain-migration.js +60 -0
  77. package/dist/company-brain-source.js +177 -0
  78. package/dist/company-brain-worker.js +18 -0
  79. package/dist/conducao-texto.js +61 -0
  80. package/dist/conducao.js +876 -0
  81. package/dist/contrato-publico.js +39 -0
  82. package/dist/creation-operation-store.js +251 -0
  83. package/dist/creation-operation.js +148 -0
  84. package/dist/decisao-autonoma.js +183 -0
  85. package/dist/delegation.js +79 -0
  86. package/dist/demo.js +120 -0
  87. package/dist/docs.js +828 -0
  88. package/dist/doctor.js +183 -24
  89. package/dist/entrega-pr.js +117 -0
  90. package/dist/escopo-escrita.js +71 -0
  91. package/dist/estado-thread.js +222 -0
  92. package/dist/evalrunner.js +12 -0
  93. package/dist/fabrica-estado.js +329 -0
  94. package/dist/fabrica-publicar.js +76 -0
  95. package/dist/fix.js +21 -0
  96. package/dist/gates.js +55 -9
  97. package/dist/handoff.js +39 -23
  98. package/dist/hitl-canais.js +333 -0
  99. package/dist/hitl-classificacao.js +131 -0
  100. package/dist/hitl-contract.js +465 -0
  101. package/dist/hitl-estado.js +136 -0
  102. package/dist/hitl-gates.js +554 -0
  103. package/dist/hitl-ingress-receipt.js +382 -0
  104. package/dist/hitl-local-atestado.js +57 -0
  105. package/dist/hitl-local-receipt.js +328 -0
  106. package/dist/hitl-local.js +143 -0
  107. package/dist/hitl-lock.js +139 -0
  108. package/dist/hitl-lote.js +223 -0
  109. package/dist/hitl-native-offer.js +97 -0
  110. package/dist/hitl-native.js +65 -0
  111. package/dist/hitl-presentation.js +209 -0
  112. package/dist/hitl-public-receipt.js +176 -0
  113. package/dist/hitl-resumo.js +209 -0
  114. package/dist/hitl-sessions.js +475 -0
  115. package/dist/hitl.js +711 -0
  116. package/dist/horario.js +269 -0
  117. package/dist/hosts.js +198 -22
  118. package/dist/index.js +1736 -93
  119. package/dist/indice.js +99 -0
  120. package/dist/init.js +28 -3
  121. package/dist/integracoes-locais.js +17 -0
  122. package/dist/leases.js +65 -21
  123. package/dist/ledger-stats.js +272 -0
  124. package/dist/ledger.js +107 -2
  125. package/dist/licoes.js +215 -0
  126. package/dist/liveness.js +218 -0
  127. package/dist/maestro-actions.js +51 -0
  128. package/dist/maestro-authority.js +152 -0
  129. package/dist/maestro-cli.js +97 -0
  130. package/dist/maestro-contract.js +55 -0
  131. package/dist/maestro-discovery.js +132 -0
  132. package/dist/maestro-runtime.js +268 -0
  133. package/dist/maestro-snapshot.js +86 -0
  134. package/dist/maestro-sources.js +224 -0
  135. package/dist/manifest.js +165 -6
  136. package/dist/maquina.js +102 -0
  137. package/dist/master-audit.js +101 -0
  138. package/dist/master-batch.js +43 -0
  139. package/dist/master-digest.js +149 -0
  140. package/dist/master-migracao.js +155 -0
  141. package/dist/master.js +361 -77
  142. package/dist/mcp-artifacts.js +234 -0
  143. package/dist/mcp-git.js +433 -0
  144. package/dist/mcp-install.js +310 -0
  145. package/dist/mcp-maestro.js +25 -0
  146. package/dist/mcp-server.js +469 -0
  147. package/dist/mcp-ship.js +436 -0
  148. package/dist/mcp-verify.js +173 -0
  149. package/dist/memoria-humana.js +207 -0
  150. package/dist/memoria.js +314 -78
  151. package/dist/memory-migration.js +279 -0
  152. package/dist/memory-prospective.js +148 -0
  153. package/dist/modos-migracao.js +191 -0
  154. package/dist/modos.js +151 -15
  155. package/dist/monitor-lock.js +110 -0
  156. package/dist/objective.js +449 -0
  157. package/dist/ocupacao.js +267 -0
  158. package/dist/onboarding.js +303 -0
  159. package/dist/orkmind.js +389 -90
  160. package/dist/orquestracao.js +96 -69
  161. package/dist/phase.js +596 -150
  162. package/dist/playbook-capabilities.js +150 -0
  163. package/dist/playbook-contracts.js +188 -0
  164. package/dist/portfolio-context.js +61 -0
  165. package/dist/portfolio.js +180 -0
  166. package/dist/preflight.js +207 -0
  167. package/dist/process-audit.js +112 -0
  168. package/dist/project-state.js +93 -0
  169. package/dist/prompts.js +25 -5
  170. package/dist/prova-minima.js +112 -0
  171. package/dist/pulse-cadencia.js +163 -0
  172. package/dist/pulse-consentimento.js +260 -0
  173. package/dist/pulse-delivery.js +323 -0
  174. package/dist/pulse-resposta.js +542 -0
  175. package/dist/pulse.js +262 -0
  176. package/dist/ratelimit.js +35 -2
  177. package/dist/recall.js +80 -3
  178. package/dist/redacao-saida.js +45 -0
  179. package/dist/redacao-url.js +66 -0
  180. package/dist/retry.js +637 -115
  181. package/dist/roadmap-reservas.js +243 -0
  182. package/dist/runtime-ambiente.js +38 -0
  183. package/dist/runtime-context.js +215 -0
  184. package/dist/runtime-profiles.js +869 -0
  185. package/dist/runtimes.js +103 -0
  186. package/dist/sandbox.js +9 -0
  187. package/dist/session-events.js +203 -0
  188. package/dist/session-watcher-claude.js +637 -0
  189. package/dist/session-watcher.js +683 -0
  190. package/dist/sessoes-adopt.js +154 -0
  191. package/dist/sessoes-inventario.js +159 -0
  192. package/dist/sessoes.js +16 -35
  193. package/dist/setup.js +691 -0
  194. package/dist/ship.js +150 -15
  195. package/dist/slug.js +1 -1
  196. package/dist/thread-close.js +115 -0
  197. package/dist/thread.js +142 -28
  198. package/dist/tokens.js +1 -1
  199. package/dist/util.js +4 -2
  200. package/dist/verify-sandbox.js +265 -0
  201. package/dist/verify.js +270 -25
  202. package/dist/versao.js +60 -0
  203. package/dist/worktree.js +31 -2
  204. package/dist/write-activation.js +291 -0
  205. package/dist/yaml.js +2 -0
  206. package/eval/casos/onboarding.json +102 -0
  207. package/eval/casos/orkastery-bootstrap.json +35 -1
  208. package/eval/casos/scope-check-capability-map.json +45 -7
  209. package/eval/casos/ship-release.json +2 -2
  210. package/eval/fixtures/b0-slug-e-modos/caso.json +35 -22
  211. package/eval/fixtures/b2-master-log/caso.json +1 -1
  212. package/eval/fixtures/fx-adapter-editado-detectado/caso.json +19 -0
  213. package/eval/fixtures/fx-auto-quiet/caso.json +11 -0
  214. package/eval/fixtures/fx-blanket-approve/caso.json +10 -0
  215. package/eval/fixtures/fx-check-runtime-cruzado/caso.json +20 -0
  216. package/eval/fixtures/fx-codex-dry/caso.json +18 -0
  217. package/eval/fixtures/fx-donewhen-executavel/caso.json +15 -0
  218. package/eval/fixtures/fx-estado-dividido/caso.json +15 -0
  219. package/eval/fixtures/fx-fase-orfa/caso.json +116 -0
  220. package/eval/fixtures/fx-happy/caso.json +6 -4
  221. package/eval/fixtures/fx-hitl-latency/caso.json +20 -0
  222. package/eval/fixtures/fx-indice-reversao/caso.json +25 -0
  223. package/eval/fixtures/fx-listagem-abertas/caso.json +16 -0
  224. package/eval/fixtures/fx-maestro-bootstrap/caso.json +21 -0
  225. package/eval/fixtures/fx-modo-aposentado-escritor/caso.json +21 -0
  226. package/eval/fixtures/fx-modo-aposentado-leitor/caso.json +16 -0
  227. package/eval/fixtures/fx-objective-oscillation/caso.json +14 -0
  228. package/eval/fixtures/fx-omnicanal/caso.json +17 -0
  229. package/eval/fixtures/fx-sensores-runtime/caso.json +17 -0
  230. package/monitor/company-brain.cjs +17 -0
  231. package/monitor/pulse-scope.cjs +45 -0
  232. package/monitor/pulse.cron +18 -0
  233. package/monitor/varredura-pulse.sh +27 -0
  234. package/package.json +25 -4
  235. package/schemas/claims.schema.json +25 -0
  236. package/schemas/company-brain.schema.json +1158 -0
  237. package/schemas/creation-operation.schema.json +365 -0
  238. package/schemas/maestro-snapshot.schema.json +2716 -0
  239. package/skills/core/onboarding/SKILL.md +50 -0
  240. package/skills/core/orkastery-bootstrap/SKILL.md +95 -65
  241. package/skills/core/thread-state/SKILL.md +3 -1
  242. package/skills/governance/scope-check-capability-map/SKILL.md +17 -7
@@ -0,0 +1,2716 @@
1
+ {
2
+ "$ref": "#/definitions/MaestroSnapshot",
3
+ "definitions": {
4
+ "MaestroSnapshot": {
5
+ "type": "object",
6
+ "properties": {
7
+ "schema": {
8
+ "type": "string",
9
+ "const": "ork.maestro-snapshot/v1"
10
+ },
11
+ "observedAt": {
12
+ "type": "string",
13
+ "format": "date-time"
14
+ },
15
+ "fingerprint": {
16
+ "type": "string",
17
+ "pattern": "^[a-f0-9]{64}$"
18
+ },
19
+ "project": {
20
+ "type": "object",
21
+ "properties": {
22
+ "id": {
23
+ "type": "string",
24
+ "minLength": 1,
25
+ "maxLength": 160
26
+ },
27
+ "name": {
28
+ "type": "string",
29
+ "maxLength": 512
30
+ },
31
+ "origin": {
32
+ "type": "string",
33
+ "enum": [
34
+ "installation",
35
+ "cwd",
36
+ "worktree",
37
+ "selection"
38
+ ]
39
+ },
40
+ "fingerprint": {
41
+ "type": "string",
42
+ "pattern": "^[a-f0-9]{64}$"
43
+ }
44
+ },
45
+ "required": [
46
+ "id",
47
+ "name",
48
+ "origin",
49
+ "fingerprint"
50
+ ],
51
+ "additionalProperties": false
52
+ },
53
+ "limits": {
54
+ "type": "object",
55
+ "properties": {
56
+ "items": {
57
+ "type": "number",
58
+ "const": 50
59
+ },
60
+ "bytes": {
61
+ "type": "number",
62
+ "const": 65536
63
+ },
64
+ "sourceMs": {
65
+ "type": "number",
66
+ "const": 2000
67
+ },
68
+ "totalMs": {
69
+ "type": "number",
70
+ "const": 10000
71
+ }
72
+ },
73
+ "required": [
74
+ "items",
75
+ "bytes",
76
+ "sourceMs",
77
+ "totalMs"
78
+ ],
79
+ "additionalProperties": false
80
+ },
81
+ "sections": {
82
+ "type": "object",
83
+ "properties": {
84
+ "portfolio": {
85
+ "type": "object",
86
+ "properties": {
87
+ "state": {
88
+ "type": "string",
89
+ "enum": [
90
+ "available",
91
+ "empty",
92
+ "unavailable",
93
+ "stale",
94
+ "conflict"
95
+ ]
96
+ },
97
+ "source": {
98
+ "type": "string",
99
+ "minLength": 1,
100
+ "maxLength": 160
101
+ },
102
+ "observedAt": {
103
+ "type": "string",
104
+ "format": "date-time"
105
+ },
106
+ "fingerprint": {
107
+ "anyOf": [
108
+ {
109
+ "type": "string",
110
+ "pattern": "^[a-f0-9]{64}$"
111
+ },
112
+ {
113
+ "type": "null"
114
+ }
115
+ ]
116
+ },
117
+ "coverage": {
118
+ "type": "object",
119
+ "properties": {
120
+ "total": {
121
+ "anyOf": [
122
+ {
123
+ "type": "integer",
124
+ "minimum": 0
125
+ },
126
+ {
127
+ "type": "null"
128
+ }
129
+ ]
130
+ },
131
+ "offset": {
132
+ "type": "integer",
133
+ "minimum": 0
134
+ },
135
+ "returned": {
136
+ "type": "integer",
137
+ "minimum": 0,
138
+ "maximum": 50
139
+ },
140
+ "omitted": {
141
+ "anyOf": [
142
+ {
143
+ "type": "integer",
144
+ "minimum": 0
145
+ },
146
+ {
147
+ "type": "null"
148
+ }
149
+ ]
150
+ },
151
+ "nextOffset": {
152
+ "anyOf": [
153
+ {
154
+ "type": "integer",
155
+ "minimum": 0
156
+ },
157
+ {
158
+ "type": "null"
159
+ }
160
+ ]
161
+ },
162
+ "limit": {
163
+ "type": "number",
164
+ "const": 50
165
+ }
166
+ },
167
+ "required": [
168
+ "total",
169
+ "offset",
170
+ "returned",
171
+ "omitted",
172
+ "nextOffset",
173
+ "limit"
174
+ ],
175
+ "additionalProperties": false
176
+ },
177
+ "items": {
178
+ "type": "array",
179
+ "items": {
180
+ "type": "object",
181
+ "properties": {
182
+ "id": {
183
+ "type": "string",
184
+ "minLength": 1,
185
+ "maxLength": 160
186
+ },
187
+ "title": {
188
+ "type": "string",
189
+ "maxLength": 512
190
+ },
191
+ "status": {
192
+ "type": "string",
193
+ "maxLength": 512
194
+ },
195
+ "refs": {
196
+ "type": "array",
197
+ "items": {
198
+ "type": "object",
199
+ "properties": {
200
+ "kind": {
201
+ "type": "string",
202
+ "minLength": 1,
203
+ "maxLength": 160
204
+ },
205
+ "id": {
206
+ "type": "string",
207
+ "minLength": 1,
208
+ "maxLength": 160
209
+ }
210
+ },
211
+ "required": [
212
+ "kind",
213
+ "id"
214
+ ],
215
+ "additionalProperties": false
216
+ },
217
+ "maxItems": 16
218
+ },
219
+ "facts": {
220
+ "type": "object",
221
+ "additionalProperties": {
222
+ "anyOf": [
223
+ {
224
+ "type": "string",
225
+ "maxLength": 512
226
+ },
227
+ {
228
+ "type": "number"
229
+ },
230
+ {
231
+ "type": "boolean"
232
+ },
233
+ {
234
+ "type": "null"
235
+ }
236
+ ]
237
+ }
238
+ },
239
+ "action": {
240
+ "type": "object",
241
+ "properties": {
242
+ "operation": {
243
+ "type": "string",
244
+ "enum": [
245
+ "thread.status",
246
+ "thread.observe",
247
+ "hitl.decide",
248
+ "git.status",
249
+ "git.commit",
250
+ "verify",
251
+ "ship",
252
+ "retry",
253
+ "master",
254
+ "phase",
255
+ "creation"
256
+ ]
257
+ },
258
+ "available": {
259
+ "type": "boolean"
260
+ },
261
+ "reason": {
262
+ "type": "string",
263
+ "maxLength": 512
264
+ },
265
+ "preconditions": {
266
+ "type": "array",
267
+ "items": {
268
+ "type": "string",
269
+ "maxLength": 512
270
+ },
271
+ "maxItems": 10
272
+ },
273
+ "readback": {
274
+ "type": "string",
275
+ "maxLength": 512
276
+ }
277
+ },
278
+ "required": [
279
+ "operation",
280
+ "available",
281
+ "reason",
282
+ "preconditions",
283
+ "readback"
284
+ ],
285
+ "additionalProperties": false
286
+ }
287
+ },
288
+ "required": [
289
+ "id",
290
+ "title",
291
+ "status",
292
+ "refs",
293
+ "facts"
294
+ ],
295
+ "additionalProperties": false
296
+ },
297
+ "maxItems": 50
298
+ },
299
+ "gaps": {
300
+ "type": "array",
301
+ "items": {
302
+ "type": "string",
303
+ "maxLength": 512
304
+ },
305
+ "maxItems": 50
306
+ }
307
+ },
308
+ "required": [
309
+ "state",
310
+ "source",
311
+ "observedAt",
312
+ "fingerprint",
313
+ "coverage",
314
+ "items",
315
+ "gaps"
316
+ ],
317
+ "additionalProperties": false
318
+ },
319
+ "demands": {
320
+ "type": "object",
321
+ "properties": {
322
+ "state": {
323
+ "type": "string",
324
+ "enum": [
325
+ "available",
326
+ "empty",
327
+ "unavailable",
328
+ "stale",
329
+ "conflict"
330
+ ]
331
+ },
332
+ "source": {
333
+ "type": "string",
334
+ "minLength": 1,
335
+ "maxLength": 160
336
+ },
337
+ "observedAt": {
338
+ "type": "string",
339
+ "format": "date-time"
340
+ },
341
+ "fingerprint": {
342
+ "anyOf": [
343
+ {
344
+ "type": "string",
345
+ "pattern": "^[a-f0-9]{64}$"
346
+ },
347
+ {
348
+ "type": "null"
349
+ }
350
+ ]
351
+ },
352
+ "coverage": {
353
+ "type": "object",
354
+ "properties": {
355
+ "total": {
356
+ "anyOf": [
357
+ {
358
+ "type": "integer",
359
+ "minimum": 0
360
+ },
361
+ {
362
+ "type": "null"
363
+ }
364
+ ]
365
+ },
366
+ "offset": {
367
+ "type": "integer",
368
+ "minimum": 0
369
+ },
370
+ "returned": {
371
+ "type": "integer",
372
+ "minimum": 0,
373
+ "maximum": 50
374
+ },
375
+ "omitted": {
376
+ "anyOf": [
377
+ {
378
+ "type": "integer",
379
+ "minimum": 0
380
+ },
381
+ {
382
+ "type": "null"
383
+ }
384
+ ]
385
+ },
386
+ "nextOffset": {
387
+ "anyOf": [
388
+ {
389
+ "type": "integer",
390
+ "minimum": 0
391
+ },
392
+ {
393
+ "type": "null"
394
+ }
395
+ ]
396
+ },
397
+ "limit": {
398
+ "type": "number",
399
+ "const": 50
400
+ }
401
+ },
402
+ "required": [
403
+ "total",
404
+ "offset",
405
+ "returned",
406
+ "omitted",
407
+ "nextOffset",
408
+ "limit"
409
+ ],
410
+ "additionalProperties": false
411
+ },
412
+ "items": {
413
+ "type": "array",
414
+ "items": {
415
+ "type": "object",
416
+ "properties": {
417
+ "id": {
418
+ "type": "string",
419
+ "minLength": 1,
420
+ "maxLength": 160
421
+ },
422
+ "title": {
423
+ "type": "string",
424
+ "maxLength": 512
425
+ },
426
+ "status": {
427
+ "type": "string",
428
+ "maxLength": 512
429
+ },
430
+ "refs": {
431
+ "type": "array",
432
+ "items": {
433
+ "type": "object",
434
+ "properties": {
435
+ "kind": {
436
+ "type": "string",
437
+ "minLength": 1,
438
+ "maxLength": 160
439
+ },
440
+ "id": {
441
+ "type": "string",
442
+ "minLength": 1,
443
+ "maxLength": 160
444
+ }
445
+ },
446
+ "required": [
447
+ "kind",
448
+ "id"
449
+ ],
450
+ "additionalProperties": false
451
+ },
452
+ "maxItems": 16
453
+ },
454
+ "facts": {
455
+ "type": "object",
456
+ "additionalProperties": {
457
+ "anyOf": [
458
+ {
459
+ "type": "string",
460
+ "maxLength": 512
461
+ },
462
+ {
463
+ "type": "number"
464
+ },
465
+ {
466
+ "type": "boolean"
467
+ },
468
+ {
469
+ "type": "null"
470
+ }
471
+ ]
472
+ }
473
+ },
474
+ "action": {
475
+ "type": "object",
476
+ "properties": {
477
+ "operation": {
478
+ "type": "string",
479
+ "enum": [
480
+ "thread.status",
481
+ "thread.observe",
482
+ "hitl.decide",
483
+ "git.status",
484
+ "git.commit",
485
+ "verify",
486
+ "ship",
487
+ "retry",
488
+ "master",
489
+ "phase",
490
+ "creation"
491
+ ]
492
+ },
493
+ "available": {
494
+ "type": "boolean"
495
+ },
496
+ "reason": {
497
+ "type": "string",
498
+ "maxLength": 512
499
+ },
500
+ "preconditions": {
501
+ "type": "array",
502
+ "items": {
503
+ "type": "string",
504
+ "maxLength": 512
505
+ },
506
+ "maxItems": 10
507
+ },
508
+ "readback": {
509
+ "type": "string",
510
+ "maxLength": 512
511
+ }
512
+ },
513
+ "required": [
514
+ "operation",
515
+ "available",
516
+ "reason",
517
+ "preconditions",
518
+ "readback"
519
+ ],
520
+ "additionalProperties": false
521
+ }
522
+ },
523
+ "required": [
524
+ "id",
525
+ "title",
526
+ "status",
527
+ "refs",
528
+ "facts"
529
+ ],
530
+ "additionalProperties": false
531
+ },
532
+ "maxItems": 50
533
+ },
534
+ "gaps": {
535
+ "type": "array",
536
+ "items": {
537
+ "type": "string",
538
+ "maxLength": 512
539
+ },
540
+ "maxItems": 50
541
+ }
542
+ },
543
+ "required": [
544
+ "state",
545
+ "source",
546
+ "observedAt",
547
+ "fingerprint",
548
+ "coverage",
549
+ "items",
550
+ "gaps"
551
+ ],
552
+ "additionalProperties": false
553
+ },
554
+ "threads": {
555
+ "type": "object",
556
+ "properties": {
557
+ "state": {
558
+ "type": "string",
559
+ "enum": [
560
+ "available",
561
+ "empty",
562
+ "unavailable",
563
+ "stale",
564
+ "conflict"
565
+ ]
566
+ },
567
+ "source": {
568
+ "type": "string",
569
+ "minLength": 1,
570
+ "maxLength": 160
571
+ },
572
+ "observedAt": {
573
+ "type": "string",
574
+ "format": "date-time"
575
+ },
576
+ "fingerprint": {
577
+ "anyOf": [
578
+ {
579
+ "type": "string",
580
+ "pattern": "^[a-f0-9]{64}$"
581
+ },
582
+ {
583
+ "type": "null"
584
+ }
585
+ ]
586
+ },
587
+ "coverage": {
588
+ "type": "object",
589
+ "properties": {
590
+ "total": {
591
+ "anyOf": [
592
+ {
593
+ "type": "integer",
594
+ "minimum": 0
595
+ },
596
+ {
597
+ "type": "null"
598
+ }
599
+ ]
600
+ },
601
+ "offset": {
602
+ "type": "integer",
603
+ "minimum": 0
604
+ },
605
+ "returned": {
606
+ "type": "integer",
607
+ "minimum": 0,
608
+ "maximum": 50
609
+ },
610
+ "omitted": {
611
+ "anyOf": [
612
+ {
613
+ "type": "integer",
614
+ "minimum": 0
615
+ },
616
+ {
617
+ "type": "null"
618
+ }
619
+ ]
620
+ },
621
+ "nextOffset": {
622
+ "anyOf": [
623
+ {
624
+ "type": "integer",
625
+ "minimum": 0
626
+ },
627
+ {
628
+ "type": "null"
629
+ }
630
+ ]
631
+ },
632
+ "limit": {
633
+ "type": "number",
634
+ "const": 50
635
+ }
636
+ },
637
+ "required": [
638
+ "total",
639
+ "offset",
640
+ "returned",
641
+ "omitted",
642
+ "nextOffset",
643
+ "limit"
644
+ ],
645
+ "additionalProperties": false
646
+ },
647
+ "items": {
648
+ "type": "array",
649
+ "items": {
650
+ "type": "object",
651
+ "properties": {
652
+ "id": {
653
+ "type": "string",
654
+ "minLength": 1,
655
+ "maxLength": 160
656
+ },
657
+ "title": {
658
+ "type": "string",
659
+ "maxLength": 512
660
+ },
661
+ "status": {
662
+ "type": "string",
663
+ "maxLength": 512
664
+ },
665
+ "refs": {
666
+ "type": "array",
667
+ "items": {
668
+ "type": "object",
669
+ "properties": {
670
+ "kind": {
671
+ "type": "string",
672
+ "minLength": 1,
673
+ "maxLength": 160
674
+ },
675
+ "id": {
676
+ "type": "string",
677
+ "minLength": 1,
678
+ "maxLength": 160
679
+ }
680
+ },
681
+ "required": [
682
+ "kind",
683
+ "id"
684
+ ],
685
+ "additionalProperties": false
686
+ },
687
+ "maxItems": 16
688
+ },
689
+ "facts": {
690
+ "type": "object",
691
+ "additionalProperties": {
692
+ "anyOf": [
693
+ {
694
+ "type": "string",
695
+ "maxLength": 512
696
+ },
697
+ {
698
+ "type": "number"
699
+ },
700
+ {
701
+ "type": "boolean"
702
+ },
703
+ {
704
+ "type": "null"
705
+ }
706
+ ]
707
+ }
708
+ },
709
+ "action": {
710
+ "type": "object",
711
+ "properties": {
712
+ "operation": {
713
+ "type": "string",
714
+ "enum": [
715
+ "thread.status",
716
+ "thread.observe",
717
+ "hitl.decide",
718
+ "git.status",
719
+ "git.commit",
720
+ "verify",
721
+ "ship",
722
+ "retry",
723
+ "master",
724
+ "phase",
725
+ "creation"
726
+ ]
727
+ },
728
+ "available": {
729
+ "type": "boolean"
730
+ },
731
+ "reason": {
732
+ "type": "string",
733
+ "maxLength": 512
734
+ },
735
+ "preconditions": {
736
+ "type": "array",
737
+ "items": {
738
+ "type": "string",
739
+ "maxLength": 512
740
+ },
741
+ "maxItems": 10
742
+ },
743
+ "readback": {
744
+ "type": "string",
745
+ "maxLength": 512
746
+ }
747
+ },
748
+ "required": [
749
+ "operation",
750
+ "available",
751
+ "reason",
752
+ "preconditions",
753
+ "readback"
754
+ ],
755
+ "additionalProperties": false
756
+ }
757
+ },
758
+ "required": [
759
+ "id",
760
+ "title",
761
+ "status",
762
+ "refs",
763
+ "facts"
764
+ ],
765
+ "additionalProperties": false
766
+ },
767
+ "maxItems": 50
768
+ },
769
+ "gaps": {
770
+ "type": "array",
771
+ "items": {
772
+ "type": "string",
773
+ "maxLength": 512
774
+ },
775
+ "maxItems": 50
776
+ }
777
+ },
778
+ "required": [
779
+ "state",
780
+ "source",
781
+ "observedAt",
782
+ "fingerprint",
783
+ "coverage",
784
+ "items",
785
+ "gaps"
786
+ ],
787
+ "additionalProperties": false
788
+ },
789
+ "sessions": {
790
+ "type": "object",
791
+ "properties": {
792
+ "state": {
793
+ "type": "string",
794
+ "enum": [
795
+ "available",
796
+ "empty",
797
+ "unavailable",
798
+ "stale",
799
+ "conflict"
800
+ ]
801
+ },
802
+ "source": {
803
+ "type": "string",
804
+ "minLength": 1,
805
+ "maxLength": 160
806
+ },
807
+ "observedAt": {
808
+ "type": "string",
809
+ "format": "date-time"
810
+ },
811
+ "fingerprint": {
812
+ "anyOf": [
813
+ {
814
+ "type": "string",
815
+ "pattern": "^[a-f0-9]{64}$"
816
+ },
817
+ {
818
+ "type": "null"
819
+ }
820
+ ]
821
+ },
822
+ "coverage": {
823
+ "type": "object",
824
+ "properties": {
825
+ "total": {
826
+ "anyOf": [
827
+ {
828
+ "type": "integer",
829
+ "minimum": 0
830
+ },
831
+ {
832
+ "type": "null"
833
+ }
834
+ ]
835
+ },
836
+ "offset": {
837
+ "type": "integer",
838
+ "minimum": 0
839
+ },
840
+ "returned": {
841
+ "type": "integer",
842
+ "minimum": 0,
843
+ "maximum": 50
844
+ },
845
+ "omitted": {
846
+ "anyOf": [
847
+ {
848
+ "type": "integer",
849
+ "minimum": 0
850
+ },
851
+ {
852
+ "type": "null"
853
+ }
854
+ ]
855
+ },
856
+ "nextOffset": {
857
+ "anyOf": [
858
+ {
859
+ "type": "integer",
860
+ "minimum": 0
861
+ },
862
+ {
863
+ "type": "null"
864
+ }
865
+ ]
866
+ },
867
+ "limit": {
868
+ "type": "number",
869
+ "const": 50
870
+ }
871
+ },
872
+ "required": [
873
+ "total",
874
+ "offset",
875
+ "returned",
876
+ "omitted",
877
+ "nextOffset",
878
+ "limit"
879
+ ],
880
+ "additionalProperties": false
881
+ },
882
+ "items": {
883
+ "type": "array",
884
+ "items": {
885
+ "type": "object",
886
+ "properties": {
887
+ "id": {
888
+ "type": "string",
889
+ "minLength": 1,
890
+ "maxLength": 160
891
+ },
892
+ "title": {
893
+ "type": "string",
894
+ "maxLength": 512
895
+ },
896
+ "status": {
897
+ "type": "string",
898
+ "maxLength": 512
899
+ },
900
+ "refs": {
901
+ "type": "array",
902
+ "items": {
903
+ "type": "object",
904
+ "properties": {
905
+ "kind": {
906
+ "type": "string",
907
+ "minLength": 1,
908
+ "maxLength": 160
909
+ },
910
+ "id": {
911
+ "type": "string",
912
+ "minLength": 1,
913
+ "maxLength": 160
914
+ }
915
+ },
916
+ "required": [
917
+ "kind",
918
+ "id"
919
+ ],
920
+ "additionalProperties": false
921
+ },
922
+ "maxItems": 16
923
+ },
924
+ "facts": {
925
+ "type": "object",
926
+ "additionalProperties": {
927
+ "anyOf": [
928
+ {
929
+ "type": "string",
930
+ "maxLength": 512
931
+ },
932
+ {
933
+ "type": "number"
934
+ },
935
+ {
936
+ "type": "boolean"
937
+ },
938
+ {
939
+ "type": "null"
940
+ }
941
+ ]
942
+ }
943
+ },
944
+ "action": {
945
+ "type": "object",
946
+ "properties": {
947
+ "operation": {
948
+ "type": "string",
949
+ "enum": [
950
+ "thread.status",
951
+ "thread.observe",
952
+ "hitl.decide",
953
+ "git.status",
954
+ "git.commit",
955
+ "verify",
956
+ "ship",
957
+ "retry",
958
+ "master",
959
+ "phase",
960
+ "creation"
961
+ ]
962
+ },
963
+ "available": {
964
+ "type": "boolean"
965
+ },
966
+ "reason": {
967
+ "type": "string",
968
+ "maxLength": 512
969
+ },
970
+ "preconditions": {
971
+ "type": "array",
972
+ "items": {
973
+ "type": "string",
974
+ "maxLength": 512
975
+ },
976
+ "maxItems": 10
977
+ },
978
+ "readback": {
979
+ "type": "string",
980
+ "maxLength": 512
981
+ }
982
+ },
983
+ "required": [
984
+ "operation",
985
+ "available",
986
+ "reason",
987
+ "preconditions",
988
+ "readback"
989
+ ],
990
+ "additionalProperties": false
991
+ }
992
+ },
993
+ "required": [
994
+ "id",
995
+ "title",
996
+ "status",
997
+ "refs",
998
+ "facts"
999
+ ],
1000
+ "additionalProperties": false
1001
+ },
1002
+ "maxItems": 50
1003
+ },
1004
+ "gaps": {
1005
+ "type": "array",
1006
+ "items": {
1007
+ "type": "string",
1008
+ "maxLength": 512
1009
+ },
1010
+ "maxItems": 50
1011
+ }
1012
+ },
1013
+ "required": [
1014
+ "state",
1015
+ "source",
1016
+ "observedAt",
1017
+ "fingerprint",
1018
+ "coverage",
1019
+ "items",
1020
+ "gaps"
1021
+ ],
1022
+ "additionalProperties": false
1023
+ },
1024
+ "blockers": {
1025
+ "type": "object",
1026
+ "properties": {
1027
+ "state": {
1028
+ "type": "string",
1029
+ "enum": [
1030
+ "available",
1031
+ "empty",
1032
+ "unavailable",
1033
+ "stale",
1034
+ "conflict"
1035
+ ]
1036
+ },
1037
+ "source": {
1038
+ "type": "string",
1039
+ "minLength": 1,
1040
+ "maxLength": 160
1041
+ },
1042
+ "observedAt": {
1043
+ "type": "string",
1044
+ "format": "date-time"
1045
+ },
1046
+ "fingerprint": {
1047
+ "anyOf": [
1048
+ {
1049
+ "type": "string",
1050
+ "pattern": "^[a-f0-9]{64}$"
1051
+ },
1052
+ {
1053
+ "type": "null"
1054
+ }
1055
+ ]
1056
+ },
1057
+ "coverage": {
1058
+ "type": "object",
1059
+ "properties": {
1060
+ "total": {
1061
+ "anyOf": [
1062
+ {
1063
+ "type": "integer",
1064
+ "minimum": 0
1065
+ },
1066
+ {
1067
+ "type": "null"
1068
+ }
1069
+ ]
1070
+ },
1071
+ "offset": {
1072
+ "type": "integer",
1073
+ "minimum": 0
1074
+ },
1075
+ "returned": {
1076
+ "type": "integer",
1077
+ "minimum": 0,
1078
+ "maximum": 50
1079
+ },
1080
+ "omitted": {
1081
+ "anyOf": [
1082
+ {
1083
+ "type": "integer",
1084
+ "minimum": 0
1085
+ },
1086
+ {
1087
+ "type": "null"
1088
+ }
1089
+ ]
1090
+ },
1091
+ "nextOffset": {
1092
+ "anyOf": [
1093
+ {
1094
+ "type": "integer",
1095
+ "minimum": 0
1096
+ },
1097
+ {
1098
+ "type": "null"
1099
+ }
1100
+ ]
1101
+ },
1102
+ "limit": {
1103
+ "type": "number",
1104
+ "const": 50
1105
+ }
1106
+ },
1107
+ "required": [
1108
+ "total",
1109
+ "offset",
1110
+ "returned",
1111
+ "omitted",
1112
+ "nextOffset",
1113
+ "limit"
1114
+ ],
1115
+ "additionalProperties": false
1116
+ },
1117
+ "items": {
1118
+ "type": "array",
1119
+ "items": {
1120
+ "type": "object",
1121
+ "properties": {
1122
+ "id": {
1123
+ "type": "string",
1124
+ "minLength": 1,
1125
+ "maxLength": 160
1126
+ },
1127
+ "title": {
1128
+ "type": "string",
1129
+ "maxLength": 512
1130
+ },
1131
+ "status": {
1132
+ "type": "string",
1133
+ "maxLength": 512
1134
+ },
1135
+ "refs": {
1136
+ "type": "array",
1137
+ "items": {
1138
+ "type": "object",
1139
+ "properties": {
1140
+ "kind": {
1141
+ "type": "string",
1142
+ "minLength": 1,
1143
+ "maxLength": 160
1144
+ },
1145
+ "id": {
1146
+ "type": "string",
1147
+ "minLength": 1,
1148
+ "maxLength": 160
1149
+ }
1150
+ },
1151
+ "required": [
1152
+ "kind",
1153
+ "id"
1154
+ ],
1155
+ "additionalProperties": false
1156
+ },
1157
+ "maxItems": 16
1158
+ },
1159
+ "facts": {
1160
+ "type": "object",
1161
+ "additionalProperties": {
1162
+ "anyOf": [
1163
+ {
1164
+ "type": "string",
1165
+ "maxLength": 512
1166
+ },
1167
+ {
1168
+ "type": "number"
1169
+ },
1170
+ {
1171
+ "type": "boolean"
1172
+ },
1173
+ {
1174
+ "type": "null"
1175
+ }
1176
+ ]
1177
+ }
1178
+ },
1179
+ "action": {
1180
+ "type": "object",
1181
+ "properties": {
1182
+ "operation": {
1183
+ "type": "string",
1184
+ "enum": [
1185
+ "thread.status",
1186
+ "thread.observe",
1187
+ "hitl.decide",
1188
+ "git.status",
1189
+ "git.commit",
1190
+ "verify",
1191
+ "ship",
1192
+ "retry",
1193
+ "master",
1194
+ "phase",
1195
+ "creation"
1196
+ ]
1197
+ },
1198
+ "available": {
1199
+ "type": "boolean"
1200
+ },
1201
+ "reason": {
1202
+ "type": "string",
1203
+ "maxLength": 512
1204
+ },
1205
+ "preconditions": {
1206
+ "type": "array",
1207
+ "items": {
1208
+ "type": "string",
1209
+ "maxLength": 512
1210
+ },
1211
+ "maxItems": 10
1212
+ },
1213
+ "readback": {
1214
+ "type": "string",
1215
+ "maxLength": 512
1216
+ }
1217
+ },
1218
+ "required": [
1219
+ "operation",
1220
+ "available",
1221
+ "reason",
1222
+ "preconditions",
1223
+ "readback"
1224
+ ],
1225
+ "additionalProperties": false
1226
+ }
1227
+ },
1228
+ "required": [
1229
+ "id",
1230
+ "title",
1231
+ "status",
1232
+ "refs",
1233
+ "facts"
1234
+ ],
1235
+ "additionalProperties": false
1236
+ },
1237
+ "maxItems": 50
1238
+ },
1239
+ "gaps": {
1240
+ "type": "array",
1241
+ "items": {
1242
+ "type": "string",
1243
+ "maxLength": 512
1244
+ },
1245
+ "maxItems": 50
1246
+ }
1247
+ },
1248
+ "required": [
1249
+ "state",
1250
+ "source",
1251
+ "observedAt",
1252
+ "fingerprint",
1253
+ "coverage",
1254
+ "items",
1255
+ "gaps"
1256
+ ],
1257
+ "additionalProperties": false
1258
+ },
1259
+ "leases": {
1260
+ "type": "object",
1261
+ "properties": {
1262
+ "state": {
1263
+ "type": "string",
1264
+ "enum": [
1265
+ "available",
1266
+ "empty",
1267
+ "unavailable",
1268
+ "stale",
1269
+ "conflict"
1270
+ ]
1271
+ },
1272
+ "source": {
1273
+ "type": "string",
1274
+ "minLength": 1,
1275
+ "maxLength": 160
1276
+ },
1277
+ "observedAt": {
1278
+ "type": "string",
1279
+ "format": "date-time"
1280
+ },
1281
+ "fingerprint": {
1282
+ "anyOf": [
1283
+ {
1284
+ "type": "string",
1285
+ "pattern": "^[a-f0-9]{64}$"
1286
+ },
1287
+ {
1288
+ "type": "null"
1289
+ }
1290
+ ]
1291
+ },
1292
+ "coverage": {
1293
+ "type": "object",
1294
+ "properties": {
1295
+ "total": {
1296
+ "anyOf": [
1297
+ {
1298
+ "type": "integer",
1299
+ "minimum": 0
1300
+ },
1301
+ {
1302
+ "type": "null"
1303
+ }
1304
+ ]
1305
+ },
1306
+ "offset": {
1307
+ "type": "integer",
1308
+ "minimum": 0
1309
+ },
1310
+ "returned": {
1311
+ "type": "integer",
1312
+ "minimum": 0,
1313
+ "maximum": 50
1314
+ },
1315
+ "omitted": {
1316
+ "anyOf": [
1317
+ {
1318
+ "type": "integer",
1319
+ "minimum": 0
1320
+ },
1321
+ {
1322
+ "type": "null"
1323
+ }
1324
+ ]
1325
+ },
1326
+ "nextOffset": {
1327
+ "anyOf": [
1328
+ {
1329
+ "type": "integer",
1330
+ "minimum": 0
1331
+ },
1332
+ {
1333
+ "type": "null"
1334
+ }
1335
+ ]
1336
+ },
1337
+ "limit": {
1338
+ "type": "number",
1339
+ "const": 50
1340
+ }
1341
+ },
1342
+ "required": [
1343
+ "total",
1344
+ "offset",
1345
+ "returned",
1346
+ "omitted",
1347
+ "nextOffset",
1348
+ "limit"
1349
+ ],
1350
+ "additionalProperties": false
1351
+ },
1352
+ "items": {
1353
+ "type": "array",
1354
+ "items": {
1355
+ "type": "object",
1356
+ "properties": {
1357
+ "id": {
1358
+ "type": "string",
1359
+ "minLength": 1,
1360
+ "maxLength": 160
1361
+ },
1362
+ "title": {
1363
+ "type": "string",
1364
+ "maxLength": 512
1365
+ },
1366
+ "status": {
1367
+ "type": "string",
1368
+ "maxLength": 512
1369
+ },
1370
+ "refs": {
1371
+ "type": "array",
1372
+ "items": {
1373
+ "type": "object",
1374
+ "properties": {
1375
+ "kind": {
1376
+ "type": "string",
1377
+ "minLength": 1,
1378
+ "maxLength": 160
1379
+ },
1380
+ "id": {
1381
+ "type": "string",
1382
+ "minLength": 1,
1383
+ "maxLength": 160
1384
+ }
1385
+ },
1386
+ "required": [
1387
+ "kind",
1388
+ "id"
1389
+ ],
1390
+ "additionalProperties": false
1391
+ },
1392
+ "maxItems": 16
1393
+ },
1394
+ "facts": {
1395
+ "type": "object",
1396
+ "additionalProperties": {
1397
+ "anyOf": [
1398
+ {
1399
+ "type": "string",
1400
+ "maxLength": 512
1401
+ },
1402
+ {
1403
+ "type": "number"
1404
+ },
1405
+ {
1406
+ "type": "boolean"
1407
+ },
1408
+ {
1409
+ "type": "null"
1410
+ }
1411
+ ]
1412
+ }
1413
+ },
1414
+ "action": {
1415
+ "type": "object",
1416
+ "properties": {
1417
+ "operation": {
1418
+ "type": "string",
1419
+ "enum": [
1420
+ "thread.status",
1421
+ "thread.observe",
1422
+ "hitl.decide",
1423
+ "git.status",
1424
+ "git.commit",
1425
+ "verify",
1426
+ "ship",
1427
+ "retry",
1428
+ "master",
1429
+ "phase",
1430
+ "creation"
1431
+ ]
1432
+ },
1433
+ "available": {
1434
+ "type": "boolean"
1435
+ },
1436
+ "reason": {
1437
+ "type": "string",
1438
+ "maxLength": 512
1439
+ },
1440
+ "preconditions": {
1441
+ "type": "array",
1442
+ "items": {
1443
+ "type": "string",
1444
+ "maxLength": 512
1445
+ },
1446
+ "maxItems": 10
1447
+ },
1448
+ "readback": {
1449
+ "type": "string",
1450
+ "maxLength": 512
1451
+ }
1452
+ },
1453
+ "required": [
1454
+ "operation",
1455
+ "available",
1456
+ "reason",
1457
+ "preconditions",
1458
+ "readback"
1459
+ ],
1460
+ "additionalProperties": false
1461
+ }
1462
+ },
1463
+ "required": [
1464
+ "id",
1465
+ "title",
1466
+ "status",
1467
+ "refs",
1468
+ "facts"
1469
+ ],
1470
+ "additionalProperties": false
1471
+ },
1472
+ "maxItems": 50
1473
+ },
1474
+ "gaps": {
1475
+ "type": "array",
1476
+ "items": {
1477
+ "type": "string",
1478
+ "maxLength": 512
1479
+ },
1480
+ "maxItems": 50
1481
+ }
1482
+ },
1483
+ "required": [
1484
+ "state",
1485
+ "source",
1486
+ "observedAt",
1487
+ "fingerprint",
1488
+ "coverage",
1489
+ "items",
1490
+ "gaps"
1491
+ ],
1492
+ "additionalProperties": false
1493
+ },
1494
+ "retries": {
1495
+ "type": "object",
1496
+ "properties": {
1497
+ "state": {
1498
+ "type": "string",
1499
+ "enum": [
1500
+ "available",
1501
+ "empty",
1502
+ "unavailable",
1503
+ "stale",
1504
+ "conflict"
1505
+ ]
1506
+ },
1507
+ "source": {
1508
+ "type": "string",
1509
+ "minLength": 1,
1510
+ "maxLength": 160
1511
+ },
1512
+ "observedAt": {
1513
+ "type": "string",
1514
+ "format": "date-time"
1515
+ },
1516
+ "fingerprint": {
1517
+ "anyOf": [
1518
+ {
1519
+ "type": "string",
1520
+ "pattern": "^[a-f0-9]{64}$"
1521
+ },
1522
+ {
1523
+ "type": "null"
1524
+ }
1525
+ ]
1526
+ },
1527
+ "coverage": {
1528
+ "type": "object",
1529
+ "properties": {
1530
+ "total": {
1531
+ "anyOf": [
1532
+ {
1533
+ "type": "integer",
1534
+ "minimum": 0
1535
+ },
1536
+ {
1537
+ "type": "null"
1538
+ }
1539
+ ]
1540
+ },
1541
+ "offset": {
1542
+ "type": "integer",
1543
+ "minimum": 0
1544
+ },
1545
+ "returned": {
1546
+ "type": "integer",
1547
+ "minimum": 0,
1548
+ "maximum": 50
1549
+ },
1550
+ "omitted": {
1551
+ "anyOf": [
1552
+ {
1553
+ "type": "integer",
1554
+ "minimum": 0
1555
+ },
1556
+ {
1557
+ "type": "null"
1558
+ }
1559
+ ]
1560
+ },
1561
+ "nextOffset": {
1562
+ "anyOf": [
1563
+ {
1564
+ "type": "integer",
1565
+ "minimum": 0
1566
+ },
1567
+ {
1568
+ "type": "null"
1569
+ }
1570
+ ]
1571
+ },
1572
+ "limit": {
1573
+ "type": "number",
1574
+ "const": 50
1575
+ }
1576
+ },
1577
+ "required": [
1578
+ "total",
1579
+ "offset",
1580
+ "returned",
1581
+ "omitted",
1582
+ "nextOffset",
1583
+ "limit"
1584
+ ],
1585
+ "additionalProperties": false
1586
+ },
1587
+ "items": {
1588
+ "type": "array",
1589
+ "items": {
1590
+ "type": "object",
1591
+ "properties": {
1592
+ "id": {
1593
+ "type": "string",
1594
+ "minLength": 1,
1595
+ "maxLength": 160
1596
+ },
1597
+ "title": {
1598
+ "type": "string",
1599
+ "maxLength": 512
1600
+ },
1601
+ "status": {
1602
+ "type": "string",
1603
+ "maxLength": 512
1604
+ },
1605
+ "refs": {
1606
+ "type": "array",
1607
+ "items": {
1608
+ "type": "object",
1609
+ "properties": {
1610
+ "kind": {
1611
+ "type": "string",
1612
+ "minLength": 1,
1613
+ "maxLength": 160
1614
+ },
1615
+ "id": {
1616
+ "type": "string",
1617
+ "minLength": 1,
1618
+ "maxLength": 160
1619
+ }
1620
+ },
1621
+ "required": [
1622
+ "kind",
1623
+ "id"
1624
+ ],
1625
+ "additionalProperties": false
1626
+ },
1627
+ "maxItems": 16
1628
+ },
1629
+ "facts": {
1630
+ "type": "object",
1631
+ "additionalProperties": {
1632
+ "anyOf": [
1633
+ {
1634
+ "type": "string",
1635
+ "maxLength": 512
1636
+ },
1637
+ {
1638
+ "type": "number"
1639
+ },
1640
+ {
1641
+ "type": "boolean"
1642
+ },
1643
+ {
1644
+ "type": "null"
1645
+ }
1646
+ ]
1647
+ }
1648
+ },
1649
+ "action": {
1650
+ "type": "object",
1651
+ "properties": {
1652
+ "operation": {
1653
+ "type": "string",
1654
+ "enum": [
1655
+ "thread.status",
1656
+ "thread.observe",
1657
+ "hitl.decide",
1658
+ "git.status",
1659
+ "git.commit",
1660
+ "verify",
1661
+ "ship",
1662
+ "retry",
1663
+ "master",
1664
+ "phase",
1665
+ "creation"
1666
+ ]
1667
+ },
1668
+ "available": {
1669
+ "type": "boolean"
1670
+ },
1671
+ "reason": {
1672
+ "type": "string",
1673
+ "maxLength": 512
1674
+ },
1675
+ "preconditions": {
1676
+ "type": "array",
1677
+ "items": {
1678
+ "type": "string",
1679
+ "maxLength": 512
1680
+ },
1681
+ "maxItems": 10
1682
+ },
1683
+ "readback": {
1684
+ "type": "string",
1685
+ "maxLength": 512
1686
+ }
1687
+ },
1688
+ "required": [
1689
+ "operation",
1690
+ "available",
1691
+ "reason",
1692
+ "preconditions",
1693
+ "readback"
1694
+ ],
1695
+ "additionalProperties": false
1696
+ }
1697
+ },
1698
+ "required": [
1699
+ "id",
1700
+ "title",
1701
+ "status",
1702
+ "refs",
1703
+ "facts"
1704
+ ],
1705
+ "additionalProperties": false
1706
+ },
1707
+ "maxItems": 50
1708
+ },
1709
+ "gaps": {
1710
+ "type": "array",
1711
+ "items": {
1712
+ "type": "string",
1713
+ "maxLength": 512
1714
+ },
1715
+ "maxItems": 50
1716
+ }
1717
+ },
1718
+ "required": [
1719
+ "state",
1720
+ "source",
1721
+ "observedAt",
1722
+ "fingerprint",
1723
+ "coverage",
1724
+ "items",
1725
+ "gaps"
1726
+ ],
1727
+ "additionalProperties": false
1728
+ },
1729
+ "hitl": {
1730
+ "type": "object",
1731
+ "properties": {
1732
+ "state": {
1733
+ "type": "string",
1734
+ "enum": [
1735
+ "available",
1736
+ "empty",
1737
+ "unavailable",
1738
+ "stale",
1739
+ "conflict"
1740
+ ]
1741
+ },
1742
+ "source": {
1743
+ "type": "string",
1744
+ "minLength": 1,
1745
+ "maxLength": 160
1746
+ },
1747
+ "observedAt": {
1748
+ "type": "string",
1749
+ "format": "date-time"
1750
+ },
1751
+ "fingerprint": {
1752
+ "anyOf": [
1753
+ {
1754
+ "type": "string",
1755
+ "pattern": "^[a-f0-9]{64}$"
1756
+ },
1757
+ {
1758
+ "type": "null"
1759
+ }
1760
+ ]
1761
+ },
1762
+ "coverage": {
1763
+ "type": "object",
1764
+ "properties": {
1765
+ "total": {
1766
+ "anyOf": [
1767
+ {
1768
+ "type": "integer",
1769
+ "minimum": 0
1770
+ },
1771
+ {
1772
+ "type": "null"
1773
+ }
1774
+ ]
1775
+ },
1776
+ "offset": {
1777
+ "type": "integer",
1778
+ "minimum": 0
1779
+ },
1780
+ "returned": {
1781
+ "type": "integer",
1782
+ "minimum": 0,
1783
+ "maximum": 50
1784
+ },
1785
+ "omitted": {
1786
+ "anyOf": [
1787
+ {
1788
+ "type": "integer",
1789
+ "minimum": 0
1790
+ },
1791
+ {
1792
+ "type": "null"
1793
+ }
1794
+ ]
1795
+ },
1796
+ "nextOffset": {
1797
+ "anyOf": [
1798
+ {
1799
+ "type": "integer",
1800
+ "minimum": 0
1801
+ },
1802
+ {
1803
+ "type": "null"
1804
+ }
1805
+ ]
1806
+ },
1807
+ "limit": {
1808
+ "type": "number",
1809
+ "const": 50
1810
+ }
1811
+ },
1812
+ "required": [
1813
+ "total",
1814
+ "offset",
1815
+ "returned",
1816
+ "omitted",
1817
+ "nextOffset",
1818
+ "limit"
1819
+ ],
1820
+ "additionalProperties": false
1821
+ },
1822
+ "items": {
1823
+ "type": "array",
1824
+ "items": {
1825
+ "type": "object",
1826
+ "properties": {
1827
+ "id": {
1828
+ "type": "string",
1829
+ "minLength": 1,
1830
+ "maxLength": 160
1831
+ },
1832
+ "title": {
1833
+ "type": "string",
1834
+ "maxLength": 512
1835
+ },
1836
+ "status": {
1837
+ "type": "string",
1838
+ "maxLength": 512
1839
+ },
1840
+ "refs": {
1841
+ "type": "array",
1842
+ "items": {
1843
+ "type": "object",
1844
+ "properties": {
1845
+ "kind": {
1846
+ "type": "string",
1847
+ "minLength": 1,
1848
+ "maxLength": 160
1849
+ },
1850
+ "id": {
1851
+ "type": "string",
1852
+ "minLength": 1,
1853
+ "maxLength": 160
1854
+ }
1855
+ },
1856
+ "required": [
1857
+ "kind",
1858
+ "id"
1859
+ ],
1860
+ "additionalProperties": false
1861
+ },
1862
+ "maxItems": 16
1863
+ },
1864
+ "facts": {
1865
+ "type": "object",
1866
+ "additionalProperties": {
1867
+ "anyOf": [
1868
+ {
1869
+ "type": "string",
1870
+ "maxLength": 512
1871
+ },
1872
+ {
1873
+ "type": "number"
1874
+ },
1875
+ {
1876
+ "type": "boolean"
1877
+ },
1878
+ {
1879
+ "type": "null"
1880
+ }
1881
+ ]
1882
+ }
1883
+ },
1884
+ "action": {
1885
+ "type": "object",
1886
+ "properties": {
1887
+ "operation": {
1888
+ "type": "string",
1889
+ "enum": [
1890
+ "thread.status",
1891
+ "thread.observe",
1892
+ "hitl.decide",
1893
+ "git.status",
1894
+ "git.commit",
1895
+ "verify",
1896
+ "ship",
1897
+ "retry",
1898
+ "master",
1899
+ "phase",
1900
+ "creation"
1901
+ ]
1902
+ },
1903
+ "available": {
1904
+ "type": "boolean"
1905
+ },
1906
+ "reason": {
1907
+ "type": "string",
1908
+ "maxLength": 512
1909
+ },
1910
+ "preconditions": {
1911
+ "type": "array",
1912
+ "items": {
1913
+ "type": "string",
1914
+ "maxLength": 512
1915
+ },
1916
+ "maxItems": 10
1917
+ },
1918
+ "readback": {
1919
+ "type": "string",
1920
+ "maxLength": 512
1921
+ }
1922
+ },
1923
+ "required": [
1924
+ "operation",
1925
+ "available",
1926
+ "reason",
1927
+ "preconditions",
1928
+ "readback"
1929
+ ],
1930
+ "additionalProperties": false
1931
+ }
1932
+ },
1933
+ "required": [
1934
+ "id",
1935
+ "title",
1936
+ "status",
1937
+ "refs",
1938
+ "facts"
1939
+ ],
1940
+ "additionalProperties": false
1941
+ },
1942
+ "maxItems": 50
1943
+ },
1944
+ "gaps": {
1945
+ "type": "array",
1946
+ "items": {
1947
+ "type": "string",
1948
+ "maxLength": 512
1949
+ },
1950
+ "maxItems": 50
1951
+ }
1952
+ },
1953
+ "required": [
1954
+ "state",
1955
+ "source",
1956
+ "observedAt",
1957
+ "fingerprint",
1958
+ "coverage",
1959
+ "items",
1960
+ "gaps"
1961
+ ],
1962
+ "additionalProperties": false
1963
+ },
1964
+ "ship": {
1965
+ "type": "object",
1966
+ "properties": {
1967
+ "state": {
1968
+ "type": "string",
1969
+ "enum": [
1970
+ "available",
1971
+ "empty",
1972
+ "unavailable",
1973
+ "stale",
1974
+ "conflict"
1975
+ ]
1976
+ },
1977
+ "source": {
1978
+ "type": "string",
1979
+ "minLength": 1,
1980
+ "maxLength": 160
1981
+ },
1982
+ "observedAt": {
1983
+ "type": "string",
1984
+ "format": "date-time"
1985
+ },
1986
+ "fingerprint": {
1987
+ "anyOf": [
1988
+ {
1989
+ "type": "string",
1990
+ "pattern": "^[a-f0-9]{64}$"
1991
+ },
1992
+ {
1993
+ "type": "null"
1994
+ }
1995
+ ]
1996
+ },
1997
+ "coverage": {
1998
+ "type": "object",
1999
+ "properties": {
2000
+ "total": {
2001
+ "anyOf": [
2002
+ {
2003
+ "type": "integer",
2004
+ "minimum": 0
2005
+ },
2006
+ {
2007
+ "type": "null"
2008
+ }
2009
+ ]
2010
+ },
2011
+ "offset": {
2012
+ "type": "integer",
2013
+ "minimum": 0
2014
+ },
2015
+ "returned": {
2016
+ "type": "integer",
2017
+ "minimum": 0,
2018
+ "maximum": 50
2019
+ },
2020
+ "omitted": {
2021
+ "anyOf": [
2022
+ {
2023
+ "type": "integer",
2024
+ "minimum": 0
2025
+ },
2026
+ {
2027
+ "type": "null"
2028
+ }
2029
+ ]
2030
+ },
2031
+ "nextOffset": {
2032
+ "anyOf": [
2033
+ {
2034
+ "type": "integer",
2035
+ "minimum": 0
2036
+ },
2037
+ {
2038
+ "type": "null"
2039
+ }
2040
+ ]
2041
+ },
2042
+ "limit": {
2043
+ "type": "number",
2044
+ "const": 50
2045
+ }
2046
+ },
2047
+ "required": [
2048
+ "total",
2049
+ "offset",
2050
+ "returned",
2051
+ "omitted",
2052
+ "nextOffset",
2053
+ "limit"
2054
+ ],
2055
+ "additionalProperties": false
2056
+ },
2057
+ "items": {
2058
+ "type": "array",
2059
+ "items": {
2060
+ "type": "object",
2061
+ "properties": {
2062
+ "id": {
2063
+ "type": "string",
2064
+ "minLength": 1,
2065
+ "maxLength": 160
2066
+ },
2067
+ "title": {
2068
+ "type": "string",
2069
+ "maxLength": 512
2070
+ },
2071
+ "status": {
2072
+ "type": "string",
2073
+ "maxLength": 512
2074
+ },
2075
+ "refs": {
2076
+ "type": "array",
2077
+ "items": {
2078
+ "type": "object",
2079
+ "properties": {
2080
+ "kind": {
2081
+ "type": "string",
2082
+ "minLength": 1,
2083
+ "maxLength": 160
2084
+ },
2085
+ "id": {
2086
+ "type": "string",
2087
+ "minLength": 1,
2088
+ "maxLength": 160
2089
+ }
2090
+ },
2091
+ "required": [
2092
+ "kind",
2093
+ "id"
2094
+ ],
2095
+ "additionalProperties": false
2096
+ },
2097
+ "maxItems": 16
2098
+ },
2099
+ "facts": {
2100
+ "type": "object",
2101
+ "additionalProperties": {
2102
+ "anyOf": [
2103
+ {
2104
+ "type": "string",
2105
+ "maxLength": 512
2106
+ },
2107
+ {
2108
+ "type": "number"
2109
+ },
2110
+ {
2111
+ "type": "boolean"
2112
+ },
2113
+ {
2114
+ "type": "null"
2115
+ }
2116
+ ]
2117
+ }
2118
+ },
2119
+ "action": {
2120
+ "type": "object",
2121
+ "properties": {
2122
+ "operation": {
2123
+ "type": "string",
2124
+ "enum": [
2125
+ "thread.status",
2126
+ "thread.observe",
2127
+ "hitl.decide",
2128
+ "git.status",
2129
+ "git.commit",
2130
+ "verify",
2131
+ "ship",
2132
+ "retry",
2133
+ "master",
2134
+ "phase",
2135
+ "creation"
2136
+ ]
2137
+ },
2138
+ "available": {
2139
+ "type": "boolean"
2140
+ },
2141
+ "reason": {
2142
+ "type": "string",
2143
+ "maxLength": 512
2144
+ },
2145
+ "preconditions": {
2146
+ "type": "array",
2147
+ "items": {
2148
+ "type": "string",
2149
+ "maxLength": 512
2150
+ },
2151
+ "maxItems": 10
2152
+ },
2153
+ "readback": {
2154
+ "type": "string",
2155
+ "maxLength": 512
2156
+ }
2157
+ },
2158
+ "required": [
2159
+ "operation",
2160
+ "available",
2161
+ "reason",
2162
+ "preconditions",
2163
+ "readback"
2164
+ ],
2165
+ "additionalProperties": false
2166
+ }
2167
+ },
2168
+ "required": [
2169
+ "id",
2170
+ "title",
2171
+ "status",
2172
+ "refs",
2173
+ "facts"
2174
+ ],
2175
+ "additionalProperties": false
2176
+ },
2177
+ "maxItems": 50
2178
+ },
2179
+ "gaps": {
2180
+ "type": "array",
2181
+ "items": {
2182
+ "type": "string",
2183
+ "maxLength": 512
2184
+ },
2185
+ "maxItems": 50
2186
+ }
2187
+ },
2188
+ "required": [
2189
+ "state",
2190
+ "source",
2191
+ "observedAt",
2192
+ "fingerprint",
2193
+ "coverage",
2194
+ "items",
2195
+ "gaps"
2196
+ ],
2197
+ "additionalProperties": false
2198
+ },
2199
+ "master": {
2200
+ "type": "object",
2201
+ "properties": {
2202
+ "state": {
2203
+ "type": "string",
2204
+ "enum": [
2205
+ "available",
2206
+ "empty",
2207
+ "unavailable",
2208
+ "stale",
2209
+ "conflict"
2210
+ ]
2211
+ },
2212
+ "source": {
2213
+ "type": "string",
2214
+ "minLength": 1,
2215
+ "maxLength": 160
2216
+ },
2217
+ "observedAt": {
2218
+ "type": "string",
2219
+ "format": "date-time"
2220
+ },
2221
+ "fingerprint": {
2222
+ "anyOf": [
2223
+ {
2224
+ "type": "string",
2225
+ "pattern": "^[a-f0-9]{64}$"
2226
+ },
2227
+ {
2228
+ "type": "null"
2229
+ }
2230
+ ]
2231
+ },
2232
+ "coverage": {
2233
+ "type": "object",
2234
+ "properties": {
2235
+ "total": {
2236
+ "anyOf": [
2237
+ {
2238
+ "type": "integer",
2239
+ "minimum": 0
2240
+ },
2241
+ {
2242
+ "type": "null"
2243
+ }
2244
+ ]
2245
+ },
2246
+ "offset": {
2247
+ "type": "integer",
2248
+ "minimum": 0
2249
+ },
2250
+ "returned": {
2251
+ "type": "integer",
2252
+ "minimum": 0,
2253
+ "maximum": 50
2254
+ },
2255
+ "omitted": {
2256
+ "anyOf": [
2257
+ {
2258
+ "type": "integer",
2259
+ "minimum": 0
2260
+ },
2261
+ {
2262
+ "type": "null"
2263
+ }
2264
+ ]
2265
+ },
2266
+ "nextOffset": {
2267
+ "anyOf": [
2268
+ {
2269
+ "type": "integer",
2270
+ "minimum": 0
2271
+ },
2272
+ {
2273
+ "type": "null"
2274
+ }
2275
+ ]
2276
+ },
2277
+ "limit": {
2278
+ "type": "number",
2279
+ "const": 50
2280
+ }
2281
+ },
2282
+ "required": [
2283
+ "total",
2284
+ "offset",
2285
+ "returned",
2286
+ "omitted",
2287
+ "nextOffset",
2288
+ "limit"
2289
+ ],
2290
+ "additionalProperties": false
2291
+ },
2292
+ "items": {
2293
+ "type": "array",
2294
+ "items": {
2295
+ "type": "object",
2296
+ "properties": {
2297
+ "id": {
2298
+ "type": "string",
2299
+ "minLength": 1,
2300
+ "maxLength": 160
2301
+ },
2302
+ "title": {
2303
+ "type": "string",
2304
+ "maxLength": 512
2305
+ },
2306
+ "status": {
2307
+ "type": "string",
2308
+ "maxLength": 512
2309
+ },
2310
+ "refs": {
2311
+ "type": "array",
2312
+ "items": {
2313
+ "type": "object",
2314
+ "properties": {
2315
+ "kind": {
2316
+ "type": "string",
2317
+ "minLength": 1,
2318
+ "maxLength": 160
2319
+ },
2320
+ "id": {
2321
+ "type": "string",
2322
+ "minLength": 1,
2323
+ "maxLength": 160
2324
+ }
2325
+ },
2326
+ "required": [
2327
+ "kind",
2328
+ "id"
2329
+ ],
2330
+ "additionalProperties": false
2331
+ },
2332
+ "maxItems": 16
2333
+ },
2334
+ "facts": {
2335
+ "type": "object",
2336
+ "additionalProperties": {
2337
+ "anyOf": [
2338
+ {
2339
+ "type": "string",
2340
+ "maxLength": 512
2341
+ },
2342
+ {
2343
+ "type": "number"
2344
+ },
2345
+ {
2346
+ "type": "boolean"
2347
+ },
2348
+ {
2349
+ "type": "null"
2350
+ }
2351
+ ]
2352
+ }
2353
+ },
2354
+ "action": {
2355
+ "type": "object",
2356
+ "properties": {
2357
+ "operation": {
2358
+ "type": "string",
2359
+ "enum": [
2360
+ "thread.status",
2361
+ "thread.observe",
2362
+ "hitl.decide",
2363
+ "git.status",
2364
+ "git.commit",
2365
+ "verify",
2366
+ "ship",
2367
+ "retry",
2368
+ "master",
2369
+ "phase",
2370
+ "creation"
2371
+ ]
2372
+ },
2373
+ "available": {
2374
+ "type": "boolean"
2375
+ },
2376
+ "reason": {
2377
+ "type": "string",
2378
+ "maxLength": 512
2379
+ },
2380
+ "preconditions": {
2381
+ "type": "array",
2382
+ "items": {
2383
+ "type": "string",
2384
+ "maxLength": 512
2385
+ },
2386
+ "maxItems": 10
2387
+ },
2388
+ "readback": {
2389
+ "type": "string",
2390
+ "maxLength": 512
2391
+ }
2392
+ },
2393
+ "required": [
2394
+ "operation",
2395
+ "available",
2396
+ "reason",
2397
+ "preconditions",
2398
+ "readback"
2399
+ ],
2400
+ "additionalProperties": false
2401
+ }
2402
+ },
2403
+ "required": [
2404
+ "id",
2405
+ "title",
2406
+ "status",
2407
+ "refs",
2408
+ "facts"
2409
+ ],
2410
+ "additionalProperties": false
2411
+ },
2412
+ "maxItems": 50
2413
+ },
2414
+ "gaps": {
2415
+ "type": "array",
2416
+ "items": {
2417
+ "type": "string",
2418
+ "maxLength": 512
2419
+ },
2420
+ "maxItems": 50
2421
+ }
2422
+ },
2423
+ "required": [
2424
+ "state",
2425
+ "source",
2426
+ "observedAt",
2427
+ "fingerprint",
2428
+ "coverage",
2429
+ "items",
2430
+ "gaps"
2431
+ ],
2432
+ "additionalProperties": false
2433
+ },
2434
+ "nextActions": {
2435
+ "type": "object",
2436
+ "properties": {
2437
+ "state": {
2438
+ "type": "string",
2439
+ "enum": [
2440
+ "available",
2441
+ "empty",
2442
+ "unavailable",
2443
+ "stale",
2444
+ "conflict"
2445
+ ]
2446
+ },
2447
+ "source": {
2448
+ "type": "string",
2449
+ "minLength": 1,
2450
+ "maxLength": 160
2451
+ },
2452
+ "observedAt": {
2453
+ "type": "string",
2454
+ "format": "date-time"
2455
+ },
2456
+ "fingerprint": {
2457
+ "anyOf": [
2458
+ {
2459
+ "type": "string",
2460
+ "pattern": "^[a-f0-9]{64}$"
2461
+ },
2462
+ {
2463
+ "type": "null"
2464
+ }
2465
+ ]
2466
+ },
2467
+ "coverage": {
2468
+ "type": "object",
2469
+ "properties": {
2470
+ "total": {
2471
+ "anyOf": [
2472
+ {
2473
+ "type": "integer",
2474
+ "minimum": 0
2475
+ },
2476
+ {
2477
+ "type": "null"
2478
+ }
2479
+ ]
2480
+ },
2481
+ "offset": {
2482
+ "type": "integer",
2483
+ "minimum": 0
2484
+ },
2485
+ "returned": {
2486
+ "type": "integer",
2487
+ "minimum": 0,
2488
+ "maximum": 50
2489
+ },
2490
+ "omitted": {
2491
+ "anyOf": [
2492
+ {
2493
+ "type": "integer",
2494
+ "minimum": 0
2495
+ },
2496
+ {
2497
+ "type": "null"
2498
+ }
2499
+ ]
2500
+ },
2501
+ "nextOffset": {
2502
+ "anyOf": [
2503
+ {
2504
+ "type": "integer",
2505
+ "minimum": 0
2506
+ },
2507
+ {
2508
+ "type": "null"
2509
+ }
2510
+ ]
2511
+ },
2512
+ "limit": {
2513
+ "type": "number",
2514
+ "const": 50
2515
+ }
2516
+ },
2517
+ "required": [
2518
+ "total",
2519
+ "offset",
2520
+ "returned",
2521
+ "omitted",
2522
+ "nextOffset",
2523
+ "limit"
2524
+ ],
2525
+ "additionalProperties": false
2526
+ },
2527
+ "items": {
2528
+ "type": "array",
2529
+ "items": {
2530
+ "type": "object",
2531
+ "properties": {
2532
+ "id": {
2533
+ "type": "string",
2534
+ "minLength": 1,
2535
+ "maxLength": 160
2536
+ },
2537
+ "title": {
2538
+ "type": "string",
2539
+ "maxLength": 512
2540
+ },
2541
+ "status": {
2542
+ "type": "string",
2543
+ "maxLength": 512
2544
+ },
2545
+ "refs": {
2546
+ "type": "array",
2547
+ "items": {
2548
+ "type": "object",
2549
+ "properties": {
2550
+ "kind": {
2551
+ "type": "string",
2552
+ "minLength": 1,
2553
+ "maxLength": 160
2554
+ },
2555
+ "id": {
2556
+ "type": "string",
2557
+ "minLength": 1,
2558
+ "maxLength": 160
2559
+ }
2560
+ },
2561
+ "required": [
2562
+ "kind",
2563
+ "id"
2564
+ ],
2565
+ "additionalProperties": false
2566
+ },
2567
+ "maxItems": 16
2568
+ },
2569
+ "facts": {
2570
+ "type": "object",
2571
+ "additionalProperties": {
2572
+ "anyOf": [
2573
+ {
2574
+ "type": "string",
2575
+ "maxLength": 512
2576
+ },
2577
+ {
2578
+ "type": "number"
2579
+ },
2580
+ {
2581
+ "type": "boolean"
2582
+ },
2583
+ {
2584
+ "type": "null"
2585
+ }
2586
+ ]
2587
+ }
2588
+ },
2589
+ "action": {
2590
+ "type": "object",
2591
+ "properties": {
2592
+ "operation": {
2593
+ "type": "string",
2594
+ "enum": [
2595
+ "thread.status",
2596
+ "thread.observe",
2597
+ "hitl.decide",
2598
+ "git.status",
2599
+ "git.commit",
2600
+ "verify",
2601
+ "ship",
2602
+ "retry",
2603
+ "master",
2604
+ "phase",
2605
+ "creation"
2606
+ ]
2607
+ },
2608
+ "available": {
2609
+ "type": "boolean"
2610
+ },
2611
+ "reason": {
2612
+ "type": "string",
2613
+ "maxLength": 512
2614
+ },
2615
+ "preconditions": {
2616
+ "type": "array",
2617
+ "items": {
2618
+ "type": "string",
2619
+ "maxLength": 512
2620
+ },
2621
+ "maxItems": 10
2622
+ },
2623
+ "readback": {
2624
+ "type": "string",
2625
+ "maxLength": 512
2626
+ }
2627
+ },
2628
+ "required": [
2629
+ "operation",
2630
+ "available",
2631
+ "reason",
2632
+ "preconditions",
2633
+ "readback"
2634
+ ],
2635
+ "additionalProperties": false
2636
+ }
2637
+ },
2638
+ "required": [
2639
+ "id",
2640
+ "title",
2641
+ "status",
2642
+ "refs",
2643
+ "facts"
2644
+ ],
2645
+ "additionalProperties": false
2646
+ },
2647
+ "maxItems": 50
2648
+ },
2649
+ "gaps": {
2650
+ "type": "array",
2651
+ "items": {
2652
+ "type": "string",
2653
+ "maxLength": 512
2654
+ },
2655
+ "maxItems": 50
2656
+ }
2657
+ },
2658
+ "required": [
2659
+ "state",
2660
+ "source",
2661
+ "observedAt",
2662
+ "fingerprint",
2663
+ "coverage",
2664
+ "items",
2665
+ "gaps"
2666
+ ],
2667
+ "additionalProperties": false
2668
+ }
2669
+ },
2670
+ "required": [
2671
+ "portfolio",
2672
+ "demands",
2673
+ "threads",
2674
+ "sessions",
2675
+ "blockers",
2676
+ "leases",
2677
+ "retries",
2678
+ "hitl",
2679
+ "ship",
2680
+ "master",
2681
+ "nextActions"
2682
+ ],
2683
+ "additionalProperties": false
2684
+ },
2685
+ "gaps": {
2686
+ "type": "array",
2687
+ "items": {
2688
+ "type": "string",
2689
+ "maxLength": 512
2690
+ },
2691
+ "maxItems": 100
2692
+ },
2693
+ "conflicts": {
2694
+ "type": "array",
2695
+ "items": {
2696
+ "type": "string",
2697
+ "maxLength": 512
2698
+ },
2699
+ "maxItems": 100
2700
+ }
2701
+ },
2702
+ "required": [
2703
+ "schema",
2704
+ "observedAt",
2705
+ "fingerprint",
2706
+ "project",
2707
+ "limits",
2708
+ "sections",
2709
+ "gaps",
2710
+ "conflicts"
2711
+ ],
2712
+ "additionalProperties": false
2713
+ }
2714
+ },
2715
+ "$schema": "http://json-schema.org/draft-07/schema#"
2716
+ }