okstra 0.207.0 → 0.208.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 (134) hide show
  1. package/README.md +3 -2
  2. package/dist/cli-registry.mjs +6 -0
  3. package/dist/cli-registry.mjs.map +1 -1
  4. package/dist/commands/execute/render-bundle.mjs +1 -1
  5. package/dist/commands/lifecycle/doctor.mjs +1 -1
  6. package/dist/lib/skill-catalog.mjs +1 -0
  7. package/dist/lib/skill-catalog.mjs.map +1 -1
  8. package/docs/architecture/storage-model.md +14 -0
  9. package/docs/architecture.md +30 -9
  10. package/docs/cli.md +26 -22
  11. package/docs/contributor-change-matrix.md +1 -1
  12. package/docs/project-structure-overview.md +15 -8
  13. package/package.json +1 -1
  14. package/runtime/BUILD.json +2 -2
  15. package/runtime/agents/operations/explain-flow.json +6 -0
  16. package/runtime/bin/lib/okstra/cli.sh +1 -5
  17. package/runtime/bin/lib/okstra/globals.sh +0 -2
  18. package/runtime/bin/lib/okstra/usage.sh +5 -3
  19. package/runtime/bin/okstra.sh +0 -2
  20. package/runtime/prompts/duties/business-flow-investigator.json +14 -0
  21. package/runtime/prompts/lead/context-loader.md +1 -1
  22. package/runtime/prompts/lead/convergence.md +22 -7
  23. package/runtime/prompts/lead/okstra-lead-contract.md +10 -6
  24. package/runtime/prompts/lead/report-writer.md +1 -1
  25. package/runtime/prompts/lead/team-contract.md +12 -17
  26. package/runtime/prompts/profiles/_common-contract.md +3 -3
  27. package/runtime/prompts/wizard/prompts.ko.json +0 -91
  28. package/runtime/python/okstra_ctl/adapters/providers/claude/adapter.py +6 -0
  29. package/runtime/python/okstra_ctl/agent/invocation.py +1 -1
  30. package/runtime/python/okstra_ctl/agent/prompt_cli/batch.py +1 -0
  31. package/runtime/python/okstra_ctl/agent/prompt_cli/cli.py +1 -0
  32. package/runtime/python/okstra_ctl/agent/prompt_cli/materialize.py +11 -125
  33. package/runtime/python/okstra_ctl/agent/standalone.py +183 -0
  34. package/runtime/python/okstra_ctl/analysis_packet.py +39 -8
  35. package/runtime/python/okstra_ctl/assignment_resolver.py +7 -1
  36. package/runtime/python/okstra_ctl/brief_frontmatter.py +10 -0
  37. package/runtime/python/okstra_ctl/business_flow/__init__.py +4 -0
  38. package/runtime/python/okstra_ctl/business_flow/cli.py +134 -0
  39. package/runtime/python/okstra_ctl/business_flow/contracts.py +268 -0
  40. package/runtime/python/okstra_ctl/business_flow/engine.py +518 -0
  41. package/runtime/python/okstra_ctl/business_flow/hooks.py +221 -0
  42. package/runtime/python/okstra_ctl/business_flow/invocation.py +170 -0
  43. package/runtime/python/okstra_ctl/business_flow/report.py +49 -0
  44. package/runtime/python/okstra_ctl/business_flow/source.py +206 -0
  45. package/runtime/python/okstra_ctl/business_flow/store.py +388 -0
  46. package/runtime/python/okstra_ctl/convergence.py +173 -2
  47. package/runtime/python/okstra_ctl/convergence_critic_verify_prompt.py +18 -0
  48. package/runtime/python/okstra_ctl/convergence_provenance.py +8 -0
  49. package/runtime/python/okstra_ctl/coverage_census.py +596 -0
  50. package/runtime/python/okstra_ctl/design_surfaces.py +4 -0
  51. package/runtime/python/okstra_ctl/direct_work.py +1 -1
  52. package/runtime/python/okstra_ctl/dispatch_core.py +7 -3
  53. package/runtime/python/okstra_ctl/doctor.py +12 -6
  54. package/runtime/python/okstra_ctl/domain/role.py +1 -0
  55. package/runtime/python/okstra_ctl/group_context.py +5 -4
  56. package/runtime/python/okstra_ctl/legacy_model_selection.py +7 -51
  57. package/runtime/python/okstra_ctl/manager_split.py +4 -1
  58. package/runtime/python/okstra_ctl/manager_view.py +9 -3
  59. package/runtime/python/okstra_ctl/model_io/lines.py +1 -24
  60. package/runtime/python/okstra_ctl/model_io/renderers.py +54 -41
  61. package/runtime/python/okstra_ctl/phases/change_impact_analysis/profile.json +1 -1
  62. package/runtime/python/okstra_ctl/phases/change_impact_analysis/profile.md +0 -8
  63. package/runtime/python/okstra_ctl/phases/error_analysis/profile.json +1 -1
  64. package/runtime/python/okstra_ctl/phases/error_analysis/profile.md +6 -8
  65. package/runtime/python/okstra_ctl/phases/feature_analysis/profile.json +1 -1
  66. package/runtime/python/okstra_ctl/phases/feature_analysis/profile.md +0 -8
  67. package/runtime/python/okstra_ctl/phases/final_verification/profile.json +1 -1
  68. package/runtime/python/okstra_ctl/phases/final_verification/profile.md +2 -8
  69. package/runtime/python/okstra_ctl/phases/implementation/boundary.json +1 -1
  70. package/runtime/python/okstra_ctl/phases/implementation/profile.json +1 -1
  71. package/runtime/python/okstra_ctl/phases/implementation/profile.md +0 -6
  72. package/runtime/python/okstra_ctl/phases/implementation/report_assets/implementation-input.template.md +1 -1
  73. package/runtime/python/okstra_ctl/phases/implementation_option_selection/authoring.py +4 -3
  74. package/runtime/python/okstra_ctl/phases/implementation_option_selection/entry.py +1 -14
  75. package/runtime/python/okstra_ctl/phases/implementation_option_selection/profile.json +1 -1
  76. package/runtime/python/okstra_ctl/phases/implementation_option_selection/profile.md +5 -8
  77. package/runtime/python/okstra_ctl/phases/implementation_option_selection/spec.md +3 -3
  78. package/runtime/python/okstra_ctl/phases/implementation_option_selection/validation.py +15 -5
  79. package/runtime/python/okstra_ctl/phases/implementation_planning/authoring.py +9 -1
  80. package/runtime/python/okstra_ctl/phases/implementation_planning/boundary.json +1 -1
  81. package/runtime/python/okstra_ctl/phases/implementation_planning/instructions/plan-body-verification.md +4 -2
  82. package/runtime/python/okstra_ctl/phases/implementation_planning/plan_body.py +25 -9
  83. package/runtime/python/okstra_ctl/phases/implementation_planning/profile.json +1 -1
  84. package/runtime/python/okstra_ctl/phases/implementation_planning/profile.md +7 -10
  85. package/runtime/python/okstra_ctl/phases/improvement_discovery/profile.json +1 -1
  86. package/runtime/python/okstra_ctl/phases/improvement_discovery/profile.md +4 -11
  87. package/runtime/python/okstra_ctl/phases/project_analysis/profile.json +1 -1
  88. package/runtime/python/okstra_ctl/phases/project_analysis/profile.md +0 -8
  89. package/runtime/python/okstra_ctl/phases/release_handoff/profile.md +1 -1
  90. package/runtime/python/okstra_ctl/phases/release_handoff/spec.md +1 -1
  91. package/runtime/python/okstra_ctl/phases/requirements_discovery/profile.json +1 -1
  92. package/runtime/python/okstra_ctl/phases/requirements_discovery/profile.md +10 -8
  93. package/runtime/python/okstra_ctl/phases/requirements_discovery/spec.md +3 -3
  94. package/runtime/python/okstra_ctl/phases/technical_verification/profile.json +1 -1
  95. package/runtime/python/okstra_ctl/phases/technical_verification/profile.md +0 -4
  96. package/runtime/python/okstra_ctl/plan_items.py +1 -1
  97. package/runtime/python/okstra_ctl/render.py +10 -43
  98. package/runtime/python/okstra_ctl/render_final_report.py +3 -0
  99. package/runtime/python/okstra_ctl/report_assembly.py +15 -1
  100. package/runtime/python/okstra_ctl/report_finalize.py +40 -0
  101. package/runtime/python/okstra_ctl/report_html/render.py +3 -0
  102. package/runtime/python/okstra_ctl/report_synthesis_packet.py +1 -2
  103. package/runtime/python/okstra_ctl/run.py +78 -409
  104. package/runtime/python/okstra_ctl/wizard/__init__.py +2 -24
  105. package/runtime/python/okstra_ctl/wizard/cli.py +3 -6
  106. package/runtime/python/okstra_ctl/wizard/confirmation.py +3 -35
  107. package/runtime/python/okstra_ctl/wizard/engine.py +2 -4
  108. package/runtime/python/okstra_ctl/wizard/ids.py +1 -88
  109. package/runtime/python/okstra_ctl/wizard/registry.py +36 -228
  110. package/runtime/python/okstra_ctl/wizard/render.py +2 -2
  111. package/runtime/python/okstra_ctl/wizard/roles.py +1 -3
  112. package/runtime/python/okstra_ctl/wizard/sources.py +9 -40
  113. package/runtime/python/okstra_ctl/wizard/state.py +36 -145
  114. package/runtime/python/okstra_ctl/wizard/statefile.py +27 -128
  115. package/runtime/python/okstra_ctl/wizard/steps_identity.py +22 -10
  116. package/runtime/python/okstra_ctl/wizard/steps_options.py +5 -4
  117. package/runtime/python/okstra_ctl/wizard/steps_roles.py +15 -565
  118. package/runtime/python/okstra_ctl/worker_prompt_policy.py +9 -2
  119. package/runtime/schemas/business-flow-v1.schema.json +847 -0
  120. package/runtime/schemas/convergence-groups-v2.0.schema.json +7 -0
  121. package/runtime/skills/okstra-explain-flow/SKILL.md +42 -0
  122. package/runtime/skills/okstra-inspect/facets/history.md +5 -5
  123. package/runtime/skills/okstra-run/SKILL.md +2 -2
  124. package/runtime/templates/manager/view.template.html +7 -4
  125. package/runtime/templates/reports/business-flow.template.md +106 -0
  126. package/runtime/templates/reports/html/base.template.html +14 -1
  127. package/runtime/templates/reports/html/business-flow.template.html +31 -0
  128. package/runtime/templates/reports/html/i18n/en.json +1 -0
  129. package/runtime/templates/reports/html/i18n/ko.json +1 -0
  130. package/runtime/templates/worker-prompt-preamble.md +11 -2
  131. package/runtime/validators/checks/validate-prompt-metadata-01.py +10 -10
  132. package/runtime/validators/validate-run.py +70 -21
  133. package/runtime/validators/validate_analysis_report.py +21 -21
  134. package/runtime/python/okstra_ctl/workers.py +0 -133
@@ -0,0 +1,847 @@
1
+ {
2
+ "$defs": {
3
+ "evidence": {
4
+ "type": "object",
5
+ "additionalProperties": false,
6
+ "required": [
7
+ "projectId",
8
+ "path",
9
+ "line",
10
+ "endLine",
11
+ "excerpt"
12
+ ],
13
+ "properties": {
14
+ "projectId": {
15
+ "type": "string",
16
+ "minLength": 1
17
+ },
18
+ "path": {
19
+ "type": "string",
20
+ "minLength": 1
21
+ },
22
+ "line": {
23
+ "type": "integer",
24
+ "minimum": 1
25
+ },
26
+ "endLine": {
27
+ "type": "integer",
28
+ "minimum": 1
29
+ },
30
+ "excerpt": {
31
+ "type": "string",
32
+ "minLength": 1
33
+ }
34
+ }
35
+ },
36
+ "fact": {
37
+ "type": "object",
38
+ "additionalProperties": false,
39
+ "required": [
40
+ "key",
41
+ "business",
42
+ "value",
43
+ "level",
44
+ "evidence"
45
+ ],
46
+ "properties": {
47
+ "key": {
48
+ "type": "string",
49
+ "minLength": 1
50
+ },
51
+ "business": {
52
+ "type": "string",
53
+ "minLength": 1
54
+ },
55
+ "value": {
56
+ "type": "string",
57
+ "minLength": 1
58
+ },
59
+ "level": {
60
+ "enum": [
61
+ "static",
62
+ "execution-verified",
63
+ "expected",
64
+ "unknown"
65
+ ]
66
+ },
67
+ "evidence": {
68
+ "type": "array",
69
+ "items": {
70
+ "$ref": "#/$defs/evidence"
71
+ }
72
+ },
73
+ "executionEvidence": {
74
+ "type": "array",
75
+ "items": {
76
+ "type": "string"
77
+ }
78
+ },
79
+ "relatedKeys": {
80
+ "type": "array",
81
+ "items": {
82
+ "type": "string"
83
+ }
84
+ },
85
+ "aliases": {
86
+ "type": "array",
87
+ "items": {
88
+ "type": "string"
89
+ }
90
+ }
91
+ }
92
+ },
93
+ "step": {
94
+ "type": "object",
95
+ "additionalProperties": false,
96
+ "required": [
97
+ "id",
98
+ "title",
99
+ "purpose",
100
+ "projectIds",
101
+ "inputs",
102
+ "outputs",
103
+ "rules",
104
+ "states",
105
+ "failures",
106
+ "retries",
107
+ "recovery",
108
+ "factKeys",
109
+ "before",
110
+ "after",
111
+ "risks",
112
+ "sideEffects"
113
+ ],
114
+ "properties": {
115
+ "id": {
116
+ "type": "string",
117
+ "minLength": 1
118
+ },
119
+ "title": {
120
+ "type": "string",
121
+ "minLength": 1
122
+ },
123
+ "purpose": {
124
+ "type": "string",
125
+ "minLength": 1
126
+ },
127
+ "projectIds": {
128
+ "type": "array",
129
+ "minItems": 1,
130
+ "items": {
131
+ "type": "string"
132
+ }
133
+ },
134
+ "inputs": {
135
+ "type": "array",
136
+ "items": {
137
+ "type": "string"
138
+ }
139
+ },
140
+ "outputs": {
141
+ "type": "array",
142
+ "items": {
143
+ "type": "string"
144
+ }
145
+ },
146
+ "rules": {
147
+ "type": "array",
148
+ "items": {
149
+ "type": "string"
150
+ }
151
+ },
152
+ "states": {
153
+ "type": "array",
154
+ "items": {
155
+ "type": "string"
156
+ }
157
+ },
158
+ "failures": {
159
+ "type": "array",
160
+ "items": {
161
+ "type": "string"
162
+ }
163
+ },
164
+ "retries": {
165
+ "type": "array",
166
+ "items": {
167
+ "type": "string"
168
+ }
169
+ },
170
+ "recovery": {
171
+ "type": "array",
172
+ "items": {
173
+ "type": "string"
174
+ }
175
+ },
176
+ "factKeys": {
177
+ "type": "array",
178
+ "minItems": 1,
179
+ "items": {
180
+ "type": "string"
181
+ }
182
+ },
183
+ "before": {
184
+ "type": "string"
185
+ },
186
+ "after": {
187
+ "type": "string"
188
+ },
189
+ "risks": {
190
+ "type": "array",
191
+ "items": {
192
+ "type": "string"
193
+ }
194
+ },
195
+ "sideEffects": {
196
+ "type": "array",
197
+ "items": {
198
+ "type": "string"
199
+ }
200
+ }
201
+ }
202
+ },
203
+ "relationship": {
204
+ "type": "object",
205
+ "additionalProperties": false,
206
+ "required": [
207
+ "from",
208
+ "to",
209
+ "kind",
210
+ "data",
211
+ "factKeys"
212
+ ],
213
+ "properties": {
214
+ "from": {
215
+ "type": "string",
216
+ "minLength": 1
217
+ },
218
+ "to": {
219
+ "type": "string",
220
+ "minLength": 1
221
+ },
222
+ "kind": {
223
+ "enum": [
224
+ "call",
225
+ "event",
226
+ "queue",
227
+ "shared-data",
228
+ "file",
229
+ "batch"
230
+ ]
231
+ },
232
+ "data": {
233
+ "type": "string",
234
+ "minLength": 1
235
+ },
236
+ "factKeys": {
237
+ "type": "array",
238
+ "minItems": 1,
239
+ "items": {
240
+ "type": "string"
241
+ }
242
+ }
243
+ }
244
+ },
245
+ "resolution": {
246
+ "type": "object",
247
+ "additionalProperties": false,
248
+ "required": [
249
+ "claimIds",
250
+ "acceptedClaimId",
251
+ "reason"
252
+ ],
253
+ "properties": {
254
+ "claimIds": {
255
+ "type": "array",
256
+ "minItems": 2,
257
+ "uniqueItems": true,
258
+ "items": {
259
+ "type": "string"
260
+ }
261
+ },
262
+ "acceptedClaimId": {
263
+ "type": "string"
264
+ },
265
+ "reason": {
266
+ "type": "string",
267
+ "minLength": 1
268
+ }
269
+ }
270
+ },
271
+ "result": {
272
+ "type": "object",
273
+ "additionalProperties": false,
274
+ "required": [
275
+ "title",
276
+ "summary",
277
+ "terms",
278
+ "steps",
279
+ "relationships",
280
+ "facts",
281
+ "inspectedProjects",
282
+ "gaps",
283
+ "questions",
284
+ "resolutions"
285
+ ],
286
+ "properties": {
287
+ "title": {
288
+ "type": "string",
289
+ "minLength": 1
290
+ },
291
+ "summary": {
292
+ "type": "string",
293
+ "minLength": 1
294
+ },
295
+ "terms": {
296
+ "type": "array",
297
+ "items": {
298
+ "type": "object",
299
+ "additionalProperties": false,
300
+ "required": [
301
+ "term",
302
+ "meaning"
303
+ ],
304
+ "properties": {
305
+ "term": {
306
+ "type": "string"
307
+ },
308
+ "meaning": {
309
+ "type": "string"
310
+ }
311
+ }
312
+ }
313
+ },
314
+ "steps": {
315
+ "type": "array",
316
+ "items": {
317
+ "$ref": "#/$defs/step"
318
+ }
319
+ },
320
+ "relationships": {
321
+ "type": "array",
322
+ "items": {
323
+ "$ref": "#/$defs/relationship"
324
+ }
325
+ },
326
+ "facts": {
327
+ "type": "array",
328
+ "items": {
329
+ "$ref": "#/$defs/fact"
330
+ }
331
+ },
332
+ "inspectedProjects": {
333
+ "type": "array",
334
+ "uniqueItems": true,
335
+ "items": {
336
+ "type": "string"
337
+ }
338
+ },
339
+ "gaps": {
340
+ "type": "array",
341
+ "items": {
342
+ "type": "string"
343
+ }
344
+ },
345
+ "questions": {
346
+ "type": "array",
347
+ "items": {
348
+ "type": "string"
349
+ }
350
+ },
351
+ "resolutions": {
352
+ "type": "array",
353
+ "items": {
354
+ "$ref": "#/$defs/resolution"
355
+ }
356
+ }
357
+ }
358
+ },
359
+ "knowledge": {
360
+ "type": "object",
361
+ "required": [
362
+ "schemaVersion",
363
+ "claims",
364
+ "resolutions"
365
+ ],
366
+ "additionalProperties": false,
367
+ "properties": {
368
+ "schemaVersion": {
369
+ "const": 1
370
+ },
371
+ "claims": {
372
+ "type": "array",
373
+ "items": {
374
+ "$ref": "#/$defs/claim"
375
+ }
376
+ },
377
+ "resolutions": {
378
+ "type": "array",
379
+ "items": {
380
+ "$ref": "#/$defs/storedResolution"
381
+ }
382
+ }
383
+ }
384
+ },
385
+ "execution": {
386
+ "type": "object",
387
+ "required": [
388
+ "schemaVersion",
389
+ "id",
390
+ "createdAt",
391
+ "request",
392
+ "projects",
393
+ "status"
394
+ ],
395
+ "properties": {
396
+ "schemaVersion": {
397
+ "const": 1
398
+ },
399
+ "id": {
400
+ "type": "string"
401
+ },
402
+ "createdAt": {
403
+ "type": "string"
404
+ },
405
+ "request": {
406
+ "$ref": "#/$defs/flowRequest"
407
+ },
408
+ "projects": {
409
+ "type": "array",
410
+ "items": {
411
+ "$ref": "#/$defs/sourceSnapshot"
412
+ }
413
+ },
414
+ "status": {
415
+ "enum": [
416
+ "prepared",
417
+ "running",
418
+ "awaiting-native",
419
+ "complete",
420
+ "partial",
421
+ "failed"
422
+ ]
423
+ },
424
+ "result": {
425
+ "$ref": "#/$defs/result"
426
+ },
427
+ "reports": {
428
+ "type": "object",
429
+ "additionalProperties": false,
430
+ "properties": {
431
+ "markdown": {
432
+ "type": "string"
433
+ },
434
+ "html": {
435
+ "type": "string"
436
+ }
437
+ }
438
+ }
439
+ }
440
+ },
441
+ "taskLink": {
442
+ "type": "object",
443
+ "required": [
444
+ "schemaVersion",
445
+ "taskKey",
446
+ "executions"
447
+ ],
448
+ "properties": {
449
+ "schemaVersion": {
450
+ "const": 1
451
+ },
452
+ "taskKey": {
453
+ "type": "string"
454
+ },
455
+ "executions": {
456
+ "type": "array",
457
+ "items": {
458
+ "$ref": "#/$defs/taskLinkRow"
459
+ }
460
+ }
461
+ },
462
+ "additionalProperties": false
463
+ },
464
+ "claim": {
465
+ "type": "object",
466
+ "additionalProperties": false,
467
+ "required": [
468
+ "key",
469
+ "business",
470
+ "value",
471
+ "level",
472
+ "evidence",
473
+ "id",
474
+ "sourceStates",
475
+ "producer",
476
+ "producers",
477
+ "createdAt",
478
+ "status"
479
+ ],
480
+ "properties": {
481
+ "key": {
482
+ "type": "string",
483
+ "minLength": 1
484
+ },
485
+ "business": {
486
+ "type": "string",
487
+ "minLength": 1
488
+ },
489
+ "value": {
490
+ "type": "string",
491
+ "minLength": 1
492
+ },
493
+ "level": {
494
+ "enum": [
495
+ "static",
496
+ "execution-verified",
497
+ "expected",
498
+ "unknown"
499
+ ]
500
+ },
501
+ "evidence": {
502
+ "type": "array",
503
+ "items": {
504
+ "$ref": "#/$defs/evidence"
505
+ }
506
+ },
507
+ "executionEvidence": {
508
+ "type": "array",
509
+ "items": {
510
+ "type": "string"
511
+ }
512
+ },
513
+ "relatedKeys": {
514
+ "type": "array",
515
+ "items": {
516
+ "type": "string"
517
+ }
518
+ },
519
+ "aliases": {
520
+ "type": "array",
521
+ "items": {
522
+ "type": "string"
523
+ }
524
+ },
525
+ "id": {
526
+ "type": "string"
527
+ },
528
+ "sourceStates": {
529
+ "type": "object",
530
+ "additionalProperties": {
531
+ "type": "object",
532
+ "required": [
533
+ "root",
534
+ "digest",
535
+ "head"
536
+ ],
537
+ "additionalProperties": false,
538
+ "properties": {
539
+ "root": {
540
+ "type": "string"
541
+ },
542
+ "digest": {
543
+ "type": "string"
544
+ },
545
+ "head": {
546
+ "type": "string"
547
+ }
548
+ }
549
+ }
550
+ },
551
+ "producer": {
552
+ "type": "object"
553
+ },
554
+ "producers": {
555
+ "type": "array",
556
+ "items": {
557
+ "type": "object"
558
+ }
559
+ },
560
+ "createdAt": {
561
+ "type": "string"
562
+ },
563
+ "status": {
564
+ "enum": [
565
+ "accepted",
566
+ "conflict",
567
+ "superseded"
568
+ ]
569
+ }
570
+ }
571
+ },
572
+ "taskRequest": {
573
+ "type": "object",
574
+ "additionalProperties": false,
575
+ "required": [
576
+ "taskKey",
577
+ "taskType",
578
+ "question",
579
+ "sourceRoot",
580
+ "reportLanguage",
581
+ "hostRuntime"
582
+ ],
583
+ "properties": {
584
+ "taskKey": {
585
+ "type": "string",
586
+ "minLength": 1
587
+ },
588
+ "taskType": {
589
+ "type": "string",
590
+ "minLength": 1
591
+ },
592
+ "question": {
593
+ "type": "string",
594
+ "minLength": 1
595
+ },
596
+ "sourceRoot": {
597
+ "type": "string",
598
+ "minLength": 1
599
+ },
600
+ "reportLanguage": {
601
+ "type": "string",
602
+ "minLength": 1
603
+ },
604
+ "hostRuntime": {
605
+ "type": "string",
606
+ "minLength": 1
607
+ }
608
+ }
609
+ },
610
+ "taskLinkRow": {
611
+ "type": "object",
612
+ "additionalProperties": false,
613
+ "required": [
614
+ "id",
615
+ "mode",
616
+ "status",
617
+ "inputDigest",
618
+ "reports",
619
+ "summary",
620
+ "error"
621
+ ],
622
+ "properties": {
623
+ "id": {
624
+ "type": "string"
625
+ },
626
+ "mode": {
627
+ "type": "string"
628
+ },
629
+ "status": {
630
+ "type": "string"
631
+ },
632
+ "inputDigest": {
633
+ "type": "string"
634
+ },
635
+ "summary": {
636
+ "type": "string"
637
+ },
638
+ "error": {
639
+ "type": "string"
640
+ },
641
+ "reports": {
642
+ "type": "object",
643
+ "additionalProperties": false,
644
+ "properties": {
645
+ "markdown": {
646
+ "type": "string"
647
+ },
648
+ "html": {
649
+ "type": "string"
650
+ }
651
+ }
652
+ }
653
+ }
654
+ },
655
+ "verificationReceipt": {
656
+ "type": "object",
657
+ "required": [
658
+ "command",
659
+ "startedAt",
660
+ "endedAt",
661
+ "exitCode",
662
+ "sourceStates",
663
+ "output"
664
+ ],
665
+ "properties": {
666
+ "command": {
667
+ "type": "string",
668
+ "minLength": 1
669
+ },
670
+ "startedAt": {
671
+ "type": "string",
672
+ "minLength": 1
673
+ },
674
+ "endedAt": {
675
+ "type": "string",
676
+ "minLength": 1
677
+ },
678
+ "exitCode": {
679
+ "const": 0
680
+ },
681
+ "output": {
682
+ "type": "string",
683
+ "minLength": 1
684
+ },
685
+ "sourceStates": {
686
+ "type": "object",
687
+ "minProperties": 1,
688
+ "additionalProperties": {
689
+ "type": "string",
690
+ "minLength": 1
691
+ }
692
+ }
693
+ }
694
+ },
695
+ "flowRequest": {
696
+ "type": "object",
697
+ "required": [
698
+ "project_root",
699
+ "question",
700
+ "mode",
701
+ "task_key",
702
+ "baseline",
703
+ "source_root",
704
+ "report_language",
705
+ "source_artifacts",
706
+ "host_runtime"
707
+ ],
708
+ "additionalProperties": false,
709
+ "properties": {
710
+ "project_root": {
711
+ "type": "string",
712
+ "minLength": 1
713
+ },
714
+ "question": {
715
+ "type": "string",
716
+ "minLength": 1
717
+ },
718
+ "mode": {
719
+ "enum": [
720
+ "current",
721
+ "pre",
722
+ "post",
723
+ "contribute",
724
+ "reconcile"
725
+ ]
726
+ },
727
+ "task_key": {
728
+ "type": "string"
729
+ },
730
+ "baseline": {
731
+ "type": "string"
732
+ },
733
+ "source_root": {
734
+ "type": [
735
+ "string",
736
+ "null"
737
+ ]
738
+ },
739
+ "report_language": {
740
+ "type": "string",
741
+ "minLength": 1
742
+ },
743
+ "source_artifacts": {
744
+ "type": "array",
745
+ "items": {
746
+ "type": "string"
747
+ }
748
+ },
749
+ "host_runtime": {
750
+ "type": "string",
751
+ "minLength": 1
752
+ }
753
+ }
754
+ },
755
+ "sourceSnapshot": {
756
+ "type": "object",
757
+ "required": [
758
+ "projectId",
759
+ "root",
760
+ "head",
761
+ "digest",
762
+ "files",
763
+ "dirty",
764
+ "gaps"
765
+ ],
766
+ "additionalProperties": false,
767
+ "properties": {
768
+ "projectId": {
769
+ "type": "string",
770
+ "minLength": 1
771
+ },
772
+ "root": {
773
+ "type": "string",
774
+ "minLength": 1
775
+ },
776
+ "head": {
777
+ "type": "string"
778
+ },
779
+ "digest": {
780
+ "type": "string"
781
+ },
782
+ "files": {
783
+ "type": "object",
784
+ "additionalProperties": {
785
+ "type": "string"
786
+ }
787
+ },
788
+ "dirty": {
789
+ "type": "object",
790
+ "additionalProperties": {
791
+ "type": "string"
792
+ }
793
+ },
794
+ "gaps": {
795
+ "type": "array",
796
+ "items": {
797
+ "type": "string"
798
+ }
799
+ },
800
+ "indexDigest": {
801
+ "type": "string"
802
+ },
803
+ "indexPatch": {
804
+ "type": "string"
805
+ },
806
+ "statusDigest": {
807
+ "type": "string"
808
+ }
809
+ }
810
+ },
811
+ "storedResolution": {
812
+ "type": "object",
813
+ "additionalProperties": false,
814
+ "required": [
815
+ "claimIds",
816
+ "acceptedClaimId",
817
+ "reason",
818
+ "producer",
819
+ "createdAt"
820
+ ],
821
+ "properties": {
822
+ "claimIds": {
823
+ "type": "array",
824
+ "minItems": 2,
825
+ "uniqueItems": true,
826
+ "items": {
827
+ "type": "string"
828
+ }
829
+ },
830
+ "acceptedClaimId": {
831
+ "type": "string"
832
+ },
833
+ "reason": {
834
+ "type": "string",
835
+ "minLength": 1
836
+ },
837
+ "producer": {
838
+ "type": "object"
839
+ },
840
+ "createdAt": {
841
+ "type": "string",
842
+ "minLength": 1
843
+ }
844
+ }
845
+ }
846
+ }
847
+ }