runlist 0.0.0 → 0.94.2

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 (167) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1112 -6
  3. package/assets/app/app.css +283 -0
  4. package/assets/app/app.mjs +381 -0
  5. package/assets/app/block-editor.mjs +182 -0
  6. package/assets/app/block-model.mjs +52 -0
  7. package/assets/app/document-create.mjs +86 -0
  8. package/assets/app/document-lifecycle.mjs +36 -0
  9. package/assets/app/document-stages.mjs +22 -0
  10. package/assets/app/document-views.mjs +33 -0
  11. package/assets/app/document-yardstick.mjs +258 -0
  12. package/assets/app/editor-navigation.mjs +51 -0
  13. package/assets/app/filing-navigation.mjs +138 -0
  14. package/assets/app/git-changes.mjs +80 -0
  15. package/assets/app/git-commit.mjs +46 -0
  16. package/assets/app/index.html +70 -0
  17. package/assets/app/library-navigation.mjs +93 -0
  18. package/assets/app/outline.mjs +18 -0
  19. package/assets/app/quick-navigation.mjs +52 -0
  20. package/assets/app/record-navigation.mjs +78 -0
  21. package/assets/app/recovery-center.mjs +53 -0
  22. package/assets/app/semantic-search.mjs +14 -0
  23. package/assets/app/settings.mjs +15 -0
  24. package/assets/app/shared.mjs +104 -0
  25. package/assets/app/stage-source.mjs +75 -0
  26. package/assets/app/template-editor.mjs +47 -0
  27. package/assets/app/theme.mjs +25 -0
  28. package/assets/app/transport.mjs +43 -0
  29. package/assets/contracts/source-editing-v1.md +232 -0
  30. package/assets/opencode/plugin.js +162 -0
  31. package/assets/schemas/runlist-record-v1.schema.json +912 -0
  32. package/bin/dotmd.mjs +5 -0
  33. package/bin/runlist.mjs +2714 -0
  34. package/package.json +53 -6
  35. package/plugins/runlist-codex/.codex-plugin/plugin.json +18 -0
  36. package/plugins/runlist-codex/bin/runlist-hook +86 -0
  37. package/plugins/runlist-codex/hooks/hooks.json +16 -0
  38. package/plugins/runlist-codex/skills/runlist/SKILL.md +25 -0
  39. package/runlist.config.example.mjs +370 -0
  40. package/scripts/postinstall.mjs +56 -0
  41. package/src/agent-context.mjs +201 -0
  42. package/src/ai.mjs +30 -0
  43. package/src/app-create.mjs +169 -0
  44. package/src/app-filing.mjs +139 -0
  45. package/src/app-git-commits.mjs +48 -0
  46. package/src/app-git.mjs +180 -0
  47. package/src/app-library.mjs +152 -0
  48. package/src/app-lifecycle-worker.mjs +12 -0
  49. package/src/app-lifecycle.mjs +79 -0
  50. package/src/app-records.mjs +134 -0
  51. package/src/app-search.mjs +80 -0
  52. package/src/app-semantic-search.mjs +105 -0
  53. package/src/app-service.mjs +208 -0
  54. package/src/app-yardstick.mjs +269 -0
  55. package/src/app.mjs +102 -0
  56. package/src/atomic-mutation.mjs +1736 -0
  57. package/src/baton.mjs +435 -0
  58. package/src/body-link.mjs +48 -0
  59. package/src/bulk-tag.mjs +174 -0
  60. package/src/check-collapse.mjs +75 -0
  61. package/src/claude-commands.mjs +75 -0
  62. package/src/cli-editor.mjs +8 -0
  63. package/src/code-refs.mjs +545 -0
  64. package/src/codex-integration.mjs +81 -0
  65. package/src/color.mjs +14 -0
  66. package/src/commands.mjs +374 -0
  67. package/src/completions.mjs +93 -0
  68. package/src/config-edit.mjs +606 -0
  69. package/src/config.mjs +705 -0
  70. package/src/decision-action.mjs +58 -0
  71. package/src/decision.mjs +220 -0
  72. package/src/decisions.mjs +787 -0
  73. package/src/deps.mjs +317 -0
  74. package/src/desktop-install.mjs +158 -0
  75. package/src/desktop-runtime.mjs +4 -0
  76. package/src/desktop.mjs +25 -0
  77. package/src/diff.mjs +101 -0
  78. package/src/doctor.mjs +591 -0
  79. package/src/durable-rename.mjs +55 -0
  80. package/src/errors-read.mjs +44 -0
  81. package/src/export.mjs +496 -0
  82. package/src/extractors.mjs +101 -0
  83. package/src/filing.mjs +255 -0
  84. package/src/fix-membership.mjs +134 -0
  85. package/src/fix-refs.mjs +174 -0
  86. package/src/flags.mjs +318 -0
  87. package/src/frontmatter-fix.mjs +195 -0
  88. package/src/frontmatter.mjs +252 -0
  89. package/src/git-commit-filters.mjs +32 -0
  90. package/src/git-commit-protocol.mjs +198 -0
  91. package/src/git-commit-signing.mjs +75 -0
  92. package/src/git-commit-store.mjs +26 -0
  93. package/src/git-commit-support.mjs +16 -0
  94. package/src/git-commit-worker.mjs +32 -0
  95. package/src/git.mjs +909 -0
  96. package/src/glossary-check.mjs +35 -0
  97. package/src/glossary.mjs +243 -0
  98. package/src/graph.mjs +298 -0
  99. package/src/guard.mjs +488 -0
  100. package/src/health.mjs +212 -0
  101. package/src/hints.mjs +129 -0
  102. package/src/host-integration.mjs +339 -0
  103. package/src/hub-membership.mjs +284 -0
  104. package/src/hub.mjs +296 -0
  105. package/src/hud.mjs +436 -0
  106. package/src/index-file.mjs +163 -0
  107. package/src/index.mjs +478 -0
  108. package/src/init.mjs +512 -0
  109. package/src/install.mjs +222 -0
  110. package/src/journal-read.mjs +116 -0
  111. package/src/journal.mjs +472 -0
  112. package/src/lifecycle.mjs +1444 -0
  113. package/src/lint.mjs +386 -0
  114. package/src/managed-path.mjs +192 -0
  115. package/src/markdown-code-spans.mjs +58 -0
  116. package/src/migrate-prompts.mjs +171 -0
  117. package/src/migrate-template.mjs +170 -0
  118. package/src/migrate.mjs +90 -0
  119. package/src/misuse-read.mjs +61 -0
  120. package/src/model-request.mjs +33 -0
  121. package/src/model.mjs +523 -0
  122. package/src/modules.mjs +355 -0
  123. package/src/naming.mjs +55 -0
  124. package/src/native-action.mjs +59 -0
  125. package/src/native-record.mjs +244 -0
  126. package/src/new.mjs +1321 -0
  127. package/src/output-identity.mjs +111 -0
  128. package/src/parent-plan.mjs +58 -0
  129. package/src/parse-cache.mjs +99 -0
  130. package/src/path-containment.mjs +15 -0
  131. package/src/pickup-card.mjs +293 -0
  132. package/src/pickup.mjs +671 -0
  133. package/src/prompt.mjs +25 -0
  134. package/src/prompts.mjs +585 -0
  135. package/src/public-inspection.mjs +19 -0
  136. package/src/query.mjs +977 -0
  137. package/src/record-action.mjs +11 -0
  138. package/src/record-create.mjs +82 -0
  139. package/src/reference-planner.mjs +388 -0
  140. package/src/reference-values.mjs +11 -0
  141. package/src/rename.mjs +107 -0
  142. package/src/render.mjs +678 -0
  143. package/src/roadmap.mjs +184 -0
  144. package/src/runlist.mjs +944 -0
  145. package/src/section.mjs +225 -0
  146. package/src/semantic-search-client.mjs +58 -0
  147. package/src/ship.mjs +166 -0
  148. package/src/show.mjs +101 -0
  149. package/src/skill-drift.mjs +98 -0
  150. package/src/source-editor.mjs +491 -0
  151. package/src/stages.mjs +73 -0
  152. package/src/state-migration.mjs +123 -0
  153. package/src/stats.mjs +200 -0
  154. package/src/status-metadata.mjs +87 -0
  155. package/src/statuses.mjs +721 -0
  156. package/src/summary.mjs +74 -0
  157. package/src/surfaces.mjs +28 -0
  158. package/src/sync-status.mjs +316 -0
  159. package/src/template-store.mjs +62 -0
  160. package/src/update.mjs +338 -0
  161. package/src/use.mjs +58 -0
  162. package/src/util.mjs +337 -0
  163. package/src/validate.mjs +795 -0
  164. package/src/watch.mjs +56 -0
  165. package/src/xref.mjs +406 -0
  166. package/src/yardstick-command.mjs +178 -0
  167. package/src/yardstick.mjs +112 -0
@@ -0,0 +1,912 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "urn:runlist:record:v1",
4
+ "title": "Runlist native record v1 (normalized frontmatter)",
5
+ "type": "object",
6
+ "properties": {
7
+ "record_schema": {
8
+ "const": "runlist.record/v1"
9
+ },
10
+ "id": {
11
+ "type": "string",
12
+ "pattern": "^(plan|flag|decision):[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
13
+ },
14
+ "type": {
15
+ "enum": [
16
+ "plan",
17
+ "flag",
18
+ "decision"
19
+ ]
20
+ },
21
+ "status": {
22
+ "type": "string",
23
+ "minLength": 1,
24
+ "pattern": "\\S"
25
+ },
26
+ "created": {
27
+ "type": "string",
28
+ "format": "date-time",
29
+ "pattern": "^\\d{4}-\\d\\d-\\d\\dT\\d\\d:\\d\\d:\\d\\d(?:\\.\\d{1,3})?Z$"
30
+ },
31
+ "updated": {
32
+ "type": "string",
33
+ "format": "date-time",
34
+ "pattern": "^\\d{4}-\\d\\d-\\d\\dT\\d\\d:\\d\\d:\\d\\d(?:\\.\\d{1,3})?Z$"
35
+ },
36
+ "finding": {
37
+ "type": "string",
38
+ "minLength": 1,
39
+ "pattern": "\\S"
40
+ },
41
+ "question": {
42
+ "type": "string",
43
+ "minLength": 1,
44
+ "pattern": "\\S"
45
+ },
46
+ "record_data": {
47
+ "$ref": "#/$defs/commonData"
48
+ }
49
+ },
50
+ "required": [
51
+ "record_schema",
52
+ "id",
53
+ "type",
54
+ "status",
55
+ "created",
56
+ "updated",
57
+ "record_data"
58
+ ],
59
+ "additionalProperties": true,
60
+ "oneOf": [
61
+ {
62
+ "type": "object",
63
+ "properties": {
64
+ "type": {
65
+ "const": "flag"
66
+ },
67
+ "id": {
68
+ "type": "string",
69
+ "pattern": "^(flag):[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
70
+ },
71
+ "status": {
72
+ "enum": [
73
+ "open",
74
+ "resolved",
75
+ "rejected"
76
+ ]
77
+ },
78
+ "record_data": {
79
+ "$ref": "#/$defs/flagData"
80
+ }
81
+ },
82
+ "required": [
83
+ "finding"
84
+ ],
85
+ "additionalProperties": true
86
+ },
87
+ {
88
+ "type": "object",
89
+ "properties": {
90
+ "type": {
91
+ "const": "decision"
92
+ },
93
+ "id": {
94
+ "type": "string",
95
+ "pattern": "^(decision):[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
96
+ },
97
+ "status": {
98
+ "enum": [
99
+ "open",
100
+ "held",
101
+ "ruled",
102
+ "closed"
103
+ ]
104
+ },
105
+ "record_data": {
106
+ "$ref": "#/$defs/decisionData"
107
+ }
108
+ },
109
+ "required": [
110
+ "question"
111
+ ],
112
+ "additionalProperties": true
113
+ },
114
+ {
115
+ "type": "object",
116
+ "properties": {
117
+ "type": {
118
+ "const": "plan"
119
+ },
120
+ "id": {
121
+ "type": "string",
122
+ "pattern": "^(plan):[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
123
+ }
124
+ },
125
+ "required": [],
126
+ "additionalProperties": true
127
+ }
128
+ ],
129
+ "$defs": {
130
+ "actor": {
131
+ "type": "object",
132
+ "properties": {
133
+ "kind": {
134
+ "enum": [
135
+ "human",
136
+ "agent",
137
+ "check",
138
+ "imported"
139
+ ]
140
+ },
141
+ "id": {
142
+ "type": "string",
143
+ "minLength": 1,
144
+ "pattern": "\\S"
145
+ },
146
+ "label": {
147
+ "type": "string",
148
+ "minLength": 1,
149
+ "pattern": "\\S"
150
+ },
151
+ "session_id": {
152
+ "type": "string",
153
+ "minLength": 1,
154
+ "pattern": "\\S"
155
+ }
156
+ },
157
+ "required": [
158
+ "kind",
159
+ "id"
160
+ ],
161
+ "additionalProperties": true
162
+ },
163
+ "target": {
164
+ "type": "object",
165
+ "properties": {
166
+ "repository_id": {
167
+ "type": "string",
168
+ "pattern": "^(repo):[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
169
+ },
170
+ "id": {
171
+ "type": "string",
172
+ "pattern": "^(plan|item|flag|decision|evidence):[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
173
+ },
174
+ "path": {
175
+ "type": "string",
176
+ "minLength": 1,
177
+ "pattern": "\\S"
178
+ }
179
+ },
180
+ "required": [
181
+ "repository_id",
182
+ "id"
183
+ ],
184
+ "additionalProperties": true
185
+ },
186
+ "alias": {
187
+ "type": "object",
188
+ "properties": {
189
+ "value": {
190
+ "type": "string",
191
+ "minLength": 1,
192
+ "pattern": "\\S"
193
+ },
194
+ "namespace": {
195
+ "type": "string",
196
+ "minLength": 1,
197
+ "pattern": "\\S"
198
+ }
199
+ },
200
+ "required": [
201
+ "value",
202
+ "namespace"
203
+ ],
204
+ "additionalProperties": true
205
+ },
206
+ "revision": {
207
+ "type": "object",
208
+ "properties": {
209
+ "kind": {
210
+ "enum": [
211
+ "git",
212
+ "content",
213
+ "unknown"
214
+ ]
215
+ },
216
+ "value": {
217
+ "type": "string",
218
+ "minLength": 1,
219
+ "pattern": "\\S"
220
+ },
221
+ "dirty": {
222
+ "type": "boolean"
223
+ },
224
+ "reason": {
225
+ "type": "string",
226
+ "minLength": 1,
227
+ "pattern": "\\S"
228
+ }
229
+ },
230
+ "required": [
231
+ "kind"
232
+ ],
233
+ "additionalProperties": true
234
+ },
235
+ "anchor": {
236
+ "type": "object",
237
+ "properties": {
238
+ "symbol": {
239
+ "type": "string",
240
+ "minLength": 1,
241
+ "pattern": "\\S"
242
+ },
243
+ "start_line": {
244
+ "type": "integer",
245
+ "minimum": 1
246
+ },
247
+ "end_line": {
248
+ "type": "integer",
249
+ "minimum": 1
250
+ },
251
+ "quote": {
252
+ "type": "string",
253
+ "minLength": 1,
254
+ "pattern": "\\S"
255
+ },
256
+ "sha256": {
257
+ "type": "string",
258
+ "pattern": "^[0-9a-f]{64}$"
259
+ }
260
+ },
261
+ "required": [],
262
+ "additionalProperties": true
263
+ },
264
+ "evidence": {
265
+ "type": "object",
266
+ "properties": {
267
+ "id": {
268
+ "type": "string",
269
+ "pattern": "^(evidence):[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
270
+ },
271
+ "kind": {
272
+ "enum": [
273
+ "code",
274
+ "document",
275
+ "command",
276
+ "test",
277
+ "url"
278
+ ]
279
+ },
280
+ "observed_at": {
281
+ "type": "string",
282
+ "format": "date-time",
283
+ "pattern": "^\\d{4}-\\d\\d-\\d\\dT\\d\\d:\\d\\d:\\d\\d(?:\\.\\d{1,3})?Z$"
284
+ },
285
+ "by": {
286
+ "$ref": "#/$defs/actor"
287
+ },
288
+ "repository_id": {
289
+ "type": "string",
290
+ "pattern": "^(repo):[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
291
+ },
292
+ "path": {
293
+ "type": "string",
294
+ "minLength": 1,
295
+ "pattern": "\\S"
296
+ },
297
+ "revision": {
298
+ "$ref": "#/$defs/revision"
299
+ },
300
+ "anchor": {
301
+ "$ref": "#/$defs/anchor"
302
+ },
303
+ "uri": {
304
+ "type": "string",
305
+ "minLength": 1,
306
+ "pattern": "\\S"
307
+ },
308
+ "argv": {
309
+ "type": "array",
310
+ "items": {
311
+ "type": "string"
312
+ }
313
+ },
314
+ "exit": {
315
+ "type": "integer"
316
+ },
317
+ "result_sha256": {
318
+ "type": "string",
319
+ "pattern": "^[0-9a-f]{64}$"
320
+ },
321
+ "rule_id": {
322
+ "type": "string",
323
+ "minLength": 1,
324
+ "pattern": "\\S"
325
+ },
326
+ "coverage": {
327
+ "type": "object",
328
+ "properties": {
329
+ "complete": {
330
+ "type": "boolean"
331
+ },
332
+ "repository_id": {
333
+ "type": "string",
334
+ "pattern": "^(repo):[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
335
+ },
336
+ "kind": {
337
+ "enum": [
338
+ "repository",
339
+ "files"
340
+ ]
341
+ },
342
+ "paths": {
343
+ "type": "array",
344
+ "items": {
345
+ "type": "string",
346
+ "minLength": 1,
347
+ "pattern": "\\S"
348
+ }
349
+ }
350
+ },
351
+ "required": [
352
+ "complete",
353
+ "repository_id",
354
+ "kind",
355
+ "paths"
356
+ ],
357
+ "additionalProperties": true
358
+ }
359
+ },
360
+ "required": [
361
+ "id",
362
+ "kind",
363
+ "observed_at",
364
+ "by"
365
+ ],
366
+ "additionalProperties": true
367
+ },
368
+ "relation": {
369
+ "type": "object",
370
+ "properties": {
371
+ "id": {
372
+ "type": "string",
373
+ "pattern": "^(relation):[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
374
+ },
375
+ "source_id": {
376
+ "type": "string",
377
+ "pattern": "^(plan|item|flag|decision):[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
378
+ },
379
+ "kind": {
380
+ "enum": [
381
+ "about",
382
+ "affects",
383
+ "blocks",
384
+ "resolved-by",
385
+ "supersedes",
386
+ "verified-by"
387
+ ]
388
+ },
389
+ "target": {
390
+ "$ref": "#/$defs/target"
391
+ },
392
+ "by": {
393
+ "$ref": "#/$defs/actor"
394
+ },
395
+ "at": {
396
+ "type": "string",
397
+ "format": "date-time",
398
+ "pattern": "^\\d{4}-\\d\\d-\\d\\dT\\d\\d:\\d\\d:\\d\\d(?:\\.\\d{1,3})?Z$"
399
+ },
400
+ "reason": {
401
+ "type": "string",
402
+ "minLength": 1,
403
+ "pattern": "\\S"
404
+ }
405
+ },
406
+ "required": [
407
+ "id",
408
+ "source_id",
409
+ "kind",
410
+ "target",
411
+ "by",
412
+ "at"
413
+ ],
414
+ "additionalProperties": true
415
+ },
416
+ "event": {
417
+ "type": "object",
418
+ "properties": {
419
+ "id": {
420
+ "type": "string",
421
+ "pattern": "^(event):[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
422
+ },
423
+ "kind": {
424
+ "type": "string",
425
+ "minLength": 1,
426
+ "pattern": "\\S"
427
+ },
428
+ "by": {
429
+ "$ref": "#/$defs/actor"
430
+ },
431
+ "at": {
432
+ "type": "string",
433
+ "format": "date-time",
434
+ "pattern": "^\\d{4}-\\d\\d-\\d\\dT\\d\\d:\\d\\d:\\d\\d(?:\\.\\d{1,3})?Z$"
435
+ },
436
+ "reason": {
437
+ "type": "string",
438
+ "minLength": 1,
439
+ "pattern": "\\S"
440
+ },
441
+ "evidence_ids": {
442
+ "type": "array",
443
+ "items": {
444
+ "type": "string",
445
+ "pattern": "^(evidence):[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
446
+ }
447
+ }
448
+ },
449
+ "required": [
450
+ "id",
451
+ "kind",
452
+ "by",
453
+ "at"
454
+ ],
455
+ "additionalProperties": true
456
+ },
457
+ "commonData": {
458
+ "type": "object",
459
+ "properties": {
460
+ "repository_id": {
461
+ "type": "string",
462
+ "pattern": "^(repo):[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
463
+ },
464
+ "created_by": {
465
+ "$ref": "#/$defs/actor"
466
+ },
467
+ "aliases": {
468
+ "type": "array",
469
+ "items": {
470
+ "$ref": "#/$defs/alias"
471
+ }
472
+ },
473
+ "evidence": {
474
+ "type": "array",
475
+ "items": {
476
+ "$ref": "#/$defs/evidence"
477
+ }
478
+ },
479
+ "relations": {
480
+ "type": "array",
481
+ "items": {
482
+ "$ref": "#/$defs/relation"
483
+ }
484
+ },
485
+ "history": {
486
+ "type": "array",
487
+ "items": {
488
+ "$ref": "#/$defs/event"
489
+ }
490
+ },
491
+ "requires": {
492
+ "type": "array",
493
+ "items": {
494
+ "type": "string",
495
+ "minLength": 1,
496
+ "pattern": "\\S"
497
+ }
498
+ },
499
+ "extensions": {
500
+ "type": "object"
501
+ }
502
+ },
503
+ "required": [
504
+ "repository_id",
505
+ "created_by",
506
+ "aliases",
507
+ "evidence",
508
+ "relations",
509
+ "history"
510
+ ],
511
+ "additionalProperties": true
512
+ },
513
+ "source": {
514
+ "type": "object",
515
+ "properties": {
516
+ "kind": {
517
+ "enum": [
518
+ "manual",
519
+ "check",
520
+ "import"
521
+ ]
522
+ },
523
+ "name": {
524
+ "type": "string",
525
+ "minLength": 1,
526
+ "pattern": "\\S"
527
+ },
528
+ "rule_id": {
529
+ "type": "string",
530
+ "minLength": 1,
531
+ "pattern": "\\S"
532
+ },
533
+ "version": {
534
+ "type": "string",
535
+ "minLength": 1,
536
+ "pattern": "\\S"
537
+ },
538
+ "finding_key": {
539
+ "type": "string",
540
+ "minLength": 1,
541
+ "pattern": "\\S"
542
+ }
543
+ },
544
+ "required": [
545
+ "kind",
546
+ "name",
547
+ "finding_key"
548
+ ],
549
+ "additionalProperties": true
550
+ },
551
+ "triage": {
552
+ "type": "object",
553
+ "properties": {
554
+ "disposition": {
555
+ "enum": [
556
+ "unreviewed",
557
+ "accepted",
558
+ "rejected"
559
+ ]
560
+ },
561
+ "by": {
562
+ "$ref": "#/$defs/actor"
563
+ },
564
+ "at": {
565
+ "type": "string",
566
+ "format": "date-time",
567
+ "pattern": "^\\d{4}-\\d\\d-\\d\\dT\\d\\d:\\d\\d:\\d\\d(?:\\.\\d{1,3})?Z$"
568
+ },
569
+ "reason": {
570
+ "type": "string",
571
+ "minLength": 1,
572
+ "pattern": "\\S"
573
+ }
574
+ },
575
+ "required": [
576
+ "disposition"
577
+ ],
578
+ "additionalProperties": true
579
+ },
580
+ "resolution": {
581
+ "type": "object",
582
+ "properties": {
583
+ "id": {
584
+ "type": "string",
585
+ "pattern": "^(resolution):[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
586
+ },
587
+ "by": {
588
+ "$ref": "#/$defs/actor"
589
+ },
590
+ "at": {
591
+ "type": "string",
592
+ "format": "date-time",
593
+ "pattern": "^\\d{4}-\\d\\d-\\d\\dT\\d\\d:\\d\\d:\\d\\d(?:\\.\\d{1,3})?Z$"
594
+ },
595
+ "method": {
596
+ "enum": [
597
+ "manual",
598
+ "check",
599
+ "test"
600
+ ]
601
+ },
602
+ "reason": {
603
+ "type": "string",
604
+ "minLength": 1,
605
+ "pattern": "\\S"
606
+ },
607
+ "evidence_ids": {
608
+ "type": "array",
609
+ "items": {
610
+ "type": "string",
611
+ "pattern": "^(evidence):[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
612
+ }
613
+ }
614
+ },
615
+ "required": [
616
+ "id",
617
+ "by",
618
+ "at",
619
+ "method",
620
+ "reason",
621
+ "evidence_ids"
622
+ ],
623
+ "additionalProperties": true
624
+ },
625
+ "flagData": {
626
+ "allOf": [
627
+ {
628
+ "$ref": "#/$defs/commonData"
629
+ },
630
+ {
631
+ "type": "object",
632
+ "properties": {
633
+ "severity": {
634
+ "enum": [
635
+ "problem",
636
+ "warn",
637
+ "info"
638
+ ]
639
+ },
640
+ "source": {
641
+ "$ref": "#/$defs/source"
642
+ },
643
+ "occurrence": {
644
+ "type": "integer",
645
+ "minimum": 1
646
+ },
647
+ "triage": {
648
+ "$ref": "#/$defs/triage"
649
+ },
650
+ "resolutions": {
651
+ "type": "array",
652
+ "items": {
653
+ "$ref": "#/$defs/resolution"
654
+ }
655
+ },
656
+ "active_resolution_id": {
657
+ "type": "string",
658
+ "pattern": "^(resolution):[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
659
+ }
660
+ },
661
+ "required": [
662
+ "severity",
663
+ "source",
664
+ "occurrence",
665
+ "triage",
666
+ "resolutions"
667
+ ],
668
+ "additionalProperties": true
669
+ }
670
+ ]
671
+ },
672
+ "consequence": {
673
+ "type": "object",
674
+ "properties": {
675
+ "kind": {
676
+ "enum": [
677
+ "benefit",
678
+ "cost",
679
+ "risk",
680
+ "follow-up"
681
+ ]
682
+ },
683
+ "text": {
684
+ "type": "string",
685
+ "minLength": 1,
686
+ "pattern": "\\S"
687
+ },
688
+ "affects": {
689
+ "type": "array",
690
+ "items": {
691
+ "$ref": "#/$defs/target"
692
+ }
693
+ }
694
+ },
695
+ "required": [
696
+ "kind",
697
+ "text"
698
+ ],
699
+ "additionalProperties": true
700
+ },
701
+ "option": {
702
+ "type": "object",
703
+ "properties": {
704
+ "id": {
705
+ "type": "string",
706
+ "pattern": "^(option):[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
707
+ },
708
+ "label": {
709
+ "type": "string",
710
+ "minLength": 1,
711
+ "pattern": "\\S"
712
+ },
713
+ "description": {
714
+ "type": "string",
715
+ "minLength": 1,
716
+ "pattern": "\\S"
717
+ },
718
+ "consequences": {
719
+ "type": "array",
720
+ "items": {
721
+ "$ref": "#/$defs/consequence"
722
+ }
723
+ }
724
+ },
725
+ "required": [
726
+ "id",
727
+ "label",
728
+ "description",
729
+ "consequences"
730
+ ],
731
+ "additionalProperties": true
732
+ },
733
+ "authority": {
734
+ "type": "object",
735
+ "properties": {
736
+ "basis": {
737
+ "enum": [
738
+ "human",
739
+ "delegated"
740
+ ]
741
+ },
742
+ "grant_ref": {
743
+ "$ref": "#/$defs/target"
744
+ }
745
+ },
746
+ "required": [
747
+ "basis"
748
+ ],
749
+ "additionalProperties": true
750
+ },
751
+ "ruling": {
752
+ "type": "object",
753
+ "properties": {
754
+ "id": {
755
+ "type": "string",
756
+ "pattern": "^(ruling):[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
757
+ },
758
+ "by": {
759
+ "$ref": "#/$defs/actor"
760
+ },
761
+ "at": {
762
+ "type": "string",
763
+ "format": "date-time",
764
+ "pattern": "^\\d{4}-\\d\\d-\\d\\dT\\d\\d:\\d\\d:\\d\\d(?:\\.\\d{1,3})?Z$"
765
+ },
766
+ "kind": {
767
+ "enum": [
768
+ "select",
769
+ "withdraw"
770
+ ]
771
+ },
772
+ "option_id": {
773
+ "type": "string",
774
+ "pattern": "^(option):[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
775
+ },
776
+ "reason": {
777
+ "type": "string",
778
+ "minLength": 1,
779
+ "pattern": "\\S"
780
+ },
781
+ "authority": {
782
+ "$ref": "#/$defs/authority"
783
+ },
784
+ "evidence_ids": {
785
+ "type": "array",
786
+ "items": {
787
+ "type": "string",
788
+ "pattern": "^(evidence):[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
789
+ }
790
+ },
791
+ "supersedes_ruling_id": {
792
+ "type": "string",
793
+ "pattern": "^(ruling):[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
794
+ }
795
+ },
796
+ "required": [
797
+ "id",
798
+ "by",
799
+ "at",
800
+ "kind",
801
+ "reason",
802
+ "authority",
803
+ "evidence_ids"
804
+ ],
805
+ "additionalProperties": true
806
+ },
807
+ "recommendation": {
808
+ "type": "object",
809
+ "properties": {
810
+ "by": {
811
+ "$ref": "#/$defs/actor"
812
+ },
813
+ "at": {
814
+ "type": "string",
815
+ "format": "date-time",
816
+ "pattern": "^\\d{4}-\\d\\d-\\d\\dT\\d\\d:\\d\\d:\\d\\d(?:\\.\\d{1,3})?Z$"
817
+ },
818
+ "option_id": {
819
+ "type": "string",
820
+ "pattern": "^(option):[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
821
+ },
822
+ "reason": {
823
+ "type": "string",
824
+ "minLength": 1,
825
+ "pattern": "\\S"
826
+ },
827
+ "evidence_ids": {
828
+ "type": "array",
829
+ "items": {
830
+ "type": "string",
831
+ "pattern": "^(evidence):[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
832
+ }
833
+ }
834
+ },
835
+ "required": [
836
+ "by",
837
+ "at",
838
+ "option_id",
839
+ "reason",
840
+ "evidence_ids"
841
+ ],
842
+ "additionalProperties": true
843
+ },
844
+ "hold": {
845
+ "type": "object",
846
+ "properties": {
847
+ "by": {
848
+ "$ref": "#/$defs/actor"
849
+ },
850
+ "at": {
851
+ "type": "string",
852
+ "format": "date-time",
853
+ "pattern": "^\\d{4}-\\d\\d-\\d\\dT\\d\\d:\\d\\d:\\d\\d(?:\\.\\d{1,3})?Z$"
854
+ },
855
+ "reason": {
856
+ "type": "string",
857
+ "minLength": 1,
858
+ "pattern": "\\S"
859
+ }
860
+ },
861
+ "required": [
862
+ "by",
863
+ "at",
864
+ "reason"
865
+ ],
866
+ "additionalProperties": true
867
+ },
868
+ "decisionData": {
869
+ "allOf": [
870
+ {
871
+ "$ref": "#/$defs/commonData"
872
+ },
873
+ {
874
+ "type": "object",
875
+ "properties": {
876
+ "options": {
877
+ "type": "array",
878
+ "items": {
879
+ "$ref": "#/$defs/option"
880
+ }
881
+ },
882
+ "recommendations": {
883
+ "type": "array",
884
+ "items": {
885
+ "$ref": "#/$defs/recommendation"
886
+ }
887
+ },
888
+ "rulings": {
889
+ "type": "array",
890
+ "items": {
891
+ "$ref": "#/$defs/ruling"
892
+ }
893
+ },
894
+ "active_ruling_id": {
895
+ "type": "string",
896
+ "pattern": "^(ruling):[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
897
+ },
898
+ "hold": {
899
+ "$ref": "#/$defs/hold"
900
+ }
901
+ },
902
+ "required": [
903
+ "options",
904
+ "recommendations",
905
+ "rulings"
906
+ ],
907
+ "additionalProperties": true
908
+ }
909
+ ]
910
+ }
911
+ }
912
+ }