great-cto 3.75.10 → 3.76.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.
@@ -0,0 +1,2996 @@
1
+ {
2
+ "openapi": "3.1.0",
3
+ "info": {
4
+ "title": "great_cto board API",
5
+ "version": "0.0.1",
6
+ "description": "Local board API (127.0.0.1). Generated by scripts/board-openapi.mjs from a fresh board; checked by packages/board/openapi-contract.test.mjs."
7
+ },
8
+ "paths": {
9
+ "/api/agent-budgets": {
10
+ "post": {
11
+ "summary": "",
12
+ "x-methods-declared": "explicit",
13
+ "responses": {
14
+ "default": {
15
+ "description": "not probed: a write needs a request body the contract does not invent"
16
+ }
17
+ }
18
+ }
19
+ },
20
+ "/api/agent-events": {
21
+ "get": {
22
+ "summary": "",
23
+ "x-methods-declared": "any",
24
+ "x-probe": "/api/agent-events",
25
+ "responses": {
26
+ "200": {
27
+ "description": "observed on a fresh project",
28
+ "content": {
29
+ "application/json": {
30
+ "schema": {
31
+ "type": "object",
32
+ "required": [
33
+ "attention",
34
+ "bad",
35
+ "events",
36
+ "state",
37
+ "why"
38
+ ],
39
+ "properties": {
40
+ "attention": {
41
+ "type": "array"
42
+ },
43
+ "bad": {
44
+ "type": "number"
45
+ },
46
+ "events": {
47
+ "type": "array"
48
+ },
49
+ "state": {
50
+ "type": "string"
51
+ },
52
+ "why": {}
53
+ }
54
+ }
55
+ }
56
+ }
57
+ }
58
+ }
59
+ },
60
+ "post": {
61
+ "summary": "",
62
+ "x-methods-declared": "any",
63
+ "responses": {
64
+ "default": {
65
+ "description": "not probed: a write needs a request body the contract does not invent"
66
+ }
67
+ }
68
+ }
69
+ },
70
+ "/api/agent-usage": {
71
+ "get": {
72
+ "summary": "",
73
+ "x-methods-declared": "any",
74
+ "x-probe": "/api/agent-usage",
75
+ "responses": {
76
+ "200": {
77
+ "description": "observed on a fresh project",
78
+ "content": {
79
+ "application/json": {
80
+ "schema": {
81
+ "type": "object",
82
+ "required": [
83
+ "state",
84
+ "why"
85
+ ],
86
+ "properties": {
87
+ "state": {
88
+ "type": "string"
89
+ },
90
+ "why": {
91
+ "type": "string"
92
+ }
93
+ }
94
+ }
95
+ }
96
+ }
97
+ }
98
+ }
99
+ },
100
+ "post": {
101
+ "summary": "",
102
+ "x-methods-declared": "any",
103
+ "responses": {
104
+ "default": {
105
+ "description": "not probed: a write needs a request body the contract does not invent"
106
+ }
107
+ }
108
+ }
109
+ },
110
+ "/api/agents-installed": {
111
+ "get": {
112
+ "summary": "",
113
+ "x-methods-declared": "any",
114
+ "x-probe": "/api/agents-installed",
115
+ "responses": {
116
+ "200": {
117
+ "description": "observed on a fresh project",
118
+ "content": {
119
+ "application/json": {
120
+ "schema": {
121
+ "type": "object",
122
+ "required": [
123
+ "agents",
124
+ "summary",
125
+ "total"
126
+ ],
127
+ "properties": {
128
+ "agents": {
129
+ "type": "array"
130
+ },
131
+ "summary": {
132
+ "type": "object",
133
+ "required": [
134
+ "active_30d",
135
+ "failing_7d",
136
+ "installed",
137
+ "llm_usd_30d",
138
+ "llm_usd_30d_agents_with_runs",
139
+ "llm_usd_30d_measured_for",
140
+ "retire_candidates"
141
+ ],
142
+ "properties": {
143
+ "active_30d": {
144
+ "type": "number"
145
+ },
146
+ "failing_7d": {
147
+ "type": "number"
148
+ },
149
+ "installed": {
150
+ "type": "number"
151
+ },
152
+ "llm_usd_30d": {},
153
+ "llm_usd_30d_agents_with_runs": {
154
+ "type": "number"
155
+ },
156
+ "llm_usd_30d_measured_for": {
157
+ "type": "number"
158
+ },
159
+ "retire_candidates": {
160
+ "type": "number"
161
+ }
162
+ }
163
+ },
164
+ "total": {
165
+ "type": "number"
166
+ }
167
+ }
168
+ }
169
+ }
170
+ }
171
+ }
172
+ }
173
+ },
174
+ "post": {
175
+ "summary": "",
176
+ "x-methods-declared": "any",
177
+ "responses": {
178
+ "default": {
179
+ "description": "not probed: a write needs a request body the contract does not invent"
180
+ }
181
+ }
182
+ }
183
+ },
184
+ "/api/agents/{rest}": {
185
+ "get": {
186
+ "summary": "",
187
+ "x-methods-declared": "explicit",
188
+ "x-probe": "/api/agents/x",
189
+ "responses": {
190
+ "404": {
191
+ "description": "observed on a fresh project",
192
+ "content": {
193
+ "application/json": {
194
+ "schema": {
195
+ "type": "object",
196
+ "required": [
197
+ "error",
198
+ "slug"
199
+ ],
200
+ "properties": {
201
+ "error": {
202
+ "type": "string"
203
+ },
204
+ "slug": {
205
+ "type": "string"
206
+ }
207
+ }
208
+ }
209
+ }
210
+ }
211
+ }
212
+ }
213
+ },
214
+ "post": {
215
+ "summary": "",
216
+ "x-methods-declared": "explicit",
217
+ "responses": {
218
+ "default": {
219
+ "description": "not probed: a write needs a request body the contract does not invent"
220
+ }
221
+ }
222
+ }
223
+ },
224
+ "/api/change-tier": {
225
+ "get": {
226
+ "summary": "",
227
+ "x-methods-declared": "any",
228
+ "x-probe": "/api/change-tier",
229
+ "responses": {
230
+ "200": {
231
+ "description": "observed on a fresh project",
232
+ "content": {
233
+ "application/json": {
234
+ "schema": {
235
+ "type": "object",
236
+ "required": [
237
+ "escalatedFromLabel",
238
+ "gateRegimes",
239
+ "gates",
240
+ "judge",
241
+ "r2Share",
242
+ "reasons",
243
+ "tier"
244
+ ],
245
+ "properties": {
246
+ "escalatedFromLabel": {},
247
+ "gateRegimes": {
248
+ "type": "object",
249
+ "required": [
250
+ "plan"
251
+ ],
252
+ "properties": {
253
+ "plan": {
254
+ "type": "string"
255
+ }
256
+ }
257
+ },
258
+ "gates": {
259
+ "type": "array",
260
+ "items": {
261
+ "type": "string"
262
+ }
263
+ },
264
+ "judge": {
265
+ "type": "object",
266
+ "required": [
267
+ "human",
268
+ "model",
269
+ "reason",
270
+ "tier"
271
+ ],
272
+ "properties": {
273
+ "human": {
274
+ "type": "boolean"
275
+ },
276
+ "model": {
277
+ "type": "string"
278
+ },
279
+ "reason": {
280
+ "type": "string"
281
+ },
282
+ "tier": {
283
+ "type": "string"
284
+ }
285
+ }
286
+ },
287
+ "r2Share": {
288
+ "type": "number"
289
+ },
290
+ "reasons": {
291
+ "type": "array",
292
+ "items": {
293
+ "type": "string"
294
+ }
295
+ },
296
+ "tier": {
297
+ "type": "string"
298
+ }
299
+ }
300
+ }
301
+ }
302
+ }
303
+ }
304
+ }
305
+ },
306
+ "post": {
307
+ "summary": "",
308
+ "x-methods-declared": "any",
309
+ "responses": {
310
+ "default": {
311
+ "description": "not probed: a write needs a request body the contract does not invent"
312
+ }
313
+ }
314
+ }
315
+ },
316
+ "/api/codex-runs": {
317
+ "get": {
318
+ "summary": "",
319
+ "x-methods-declared": "any",
320
+ "x-probe": "/api/codex-runs",
321
+ "responses": {
322
+ "200": {
323
+ "description": "observed on a fresh project",
324
+ "content": {
325
+ "application/json": {
326
+ "schema": {
327
+ "type": "object",
328
+ "required": [
329
+ "orphaned",
330
+ "runs",
331
+ "state",
332
+ "unreadable"
333
+ ],
334
+ "properties": {
335
+ "orphaned": {
336
+ "type": "number"
337
+ },
338
+ "runs": {
339
+ "type": "array"
340
+ },
341
+ "state": {
342
+ "type": "string"
343
+ },
344
+ "unreadable": {
345
+ "type": "number"
346
+ }
347
+ }
348
+ }
349
+ }
350
+ }
351
+ }
352
+ }
353
+ },
354
+ "post": {
355
+ "summary": "",
356
+ "x-methods-declared": "any",
357
+ "responses": {
358
+ "default": {
359
+ "description": "not probed: a write needs a request body the contract does not invent"
360
+ }
361
+ }
362
+ }
363
+ },
364
+ "/api/cost": {
365
+ "get": {
366
+ "summary": "",
367
+ "x-methods-declared": "any",
368
+ "x-probe": "/api/cost",
369
+ "responses": {
370
+ "200": {
371
+ "description": "observed on a fresh project",
372
+ "content": {
373
+ "application/json": {
374
+ "schema": {
375
+ "type": "object",
376
+ "required": [
377
+ "by_feature",
378
+ "daily_avg",
379
+ "days",
380
+ "monthly_budget",
381
+ "over_budget",
382
+ "plans_human_suppressed",
383
+ "plans_with_cost",
384
+ "plans_without_cost",
385
+ "projected_monthly",
386
+ "savings_x",
387
+ "series",
388
+ "total_agent_runs",
389
+ "total_human",
390
+ "total_llm",
391
+ "total_plans",
392
+ "total_task_estimates"
393
+ ],
394
+ "properties": {
395
+ "by_feature": {
396
+ "type": "array"
397
+ },
398
+ "daily_avg": {
399
+ "type": "number"
400
+ },
401
+ "days": {
402
+ "type": "number"
403
+ },
404
+ "monthly_budget": {},
405
+ "over_budget": {
406
+ "type": "boolean"
407
+ },
408
+ "plans_human_suppressed": {
409
+ "type": "number"
410
+ },
411
+ "plans_with_cost": {
412
+ "type": "number"
413
+ },
414
+ "plans_without_cost": {
415
+ "type": "number"
416
+ },
417
+ "projected_monthly": {
418
+ "type": "number"
419
+ },
420
+ "savings_x": {},
421
+ "series": {
422
+ "type": "array",
423
+ "items": {
424
+ "type": "object"
425
+ }
426
+ },
427
+ "total_agent_runs": {
428
+ "type": "number"
429
+ },
430
+ "total_human": {
431
+ "type": "number"
432
+ },
433
+ "total_llm": {
434
+ "type": "number"
435
+ },
436
+ "total_plans": {
437
+ "type": "number"
438
+ },
439
+ "total_task_estimates": {
440
+ "type": "number"
441
+ }
442
+ }
443
+ }
444
+ }
445
+ }
446
+ }
447
+ }
448
+ },
449
+ "post": {
450
+ "summary": "",
451
+ "x-methods-declared": "any",
452
+ "responses": {
453
+ "default": {
454
+ "description": "not probed: a write needs a request body the contract does not invent"
455
+ }
456
+ }
457
+ }
458
+ },
459
+ "/api/decisions": {
460
+ "get": {
461
+ "summary": "",
462
+ "x-methods-declared": "any",
463
+ "x-probe": "/api/decisions",
464
+ "responses": {
465
+ "200": {
466
+ "description": "observed on a fresh project",
467
+ "content": {
468
+ "application/json": {
469
+ "schema": {
470
+ "type": "array"
471
+ }
472
+ }
473
+ }
474
+ }
475
+ }
476
+ },
477
+ "post": {
478
+ "summary": "",
479
+ "x-methods-declared": "any",
480
+ "responses": {
481
+ "default": {
482
+ "description": "not probed: a write needs a request body the contract does not invent"
483
+ }
484
+ }
485
+ }
486
+ },
487
+ "/api/doc": {
488
+ "get": {
489
+ "summary": "",
490
+ "x-methods-declared": "any",
491
+ "x-probe": "/api/doc",
492
+ "responses": {
493
+ "400": {
494
+ "description": "observed on a fresh project",
495
+ "content": {
496
+ "application/json": {
497
+ "schema": {
498
+ "type": "object",
499
+ "required": [
500
+ "error"
501
+ ],
502
+ "properties": {
503
+ "error": {
504
+ "type": "string"
505
+ }
506
+ }
507
+ }
508
+ }
509
+ }
510
+ }
511
+ }
512
+ },
513
+ "post": {
514
+ "summary": "",
515
+ "x-methods-declared": "any",
516
+ "responses": {
517
+ "default": {
518
+ "description": "not probed: a write needs a request body the contract does not invent"
519
+ }
520
+ }
521
+ }
522
+ },
523
+ "/api/docs": {
524
+ "get": {
525
+ "summary": "",
526
+ "x-methods-declared": "any",
527
+ "x-probe": "/api/docs",
528
+ "responses": {
529
+ "200": {
530
+ "description": "observed on a fresh project",
531
+ "content": {
532
+ "application/json": {
533
+ "schema": {
534
+ "type": "object",
535
+ "required": [
536
+ "groups",
537
+ "map",
538
+ "pipeline",
539
+ "total",
540
+ "truncated"
541
+ ],
542
+ "properties": {
543
+ "groups": {
544
+ "type": "array"
545
+ },
546
+ "map": {
547
+ "type": "object",
548
+ "required": [
549
+ "edges",
550
+ "generatedAt",
551
+ "mermaid",
552
+ "nodes",
553
+ "state"
554
+ ],
555
+ "properties": {
556
+ "edges": {
557
+ "type": "array"
558
+ },
559
+ "generatedAt": {
560
+ "type": "string"
561
+ },
562
+ "mermaid": {
563
+ "type": "string"
564
+ },
565
+ "nodes": {
566
+ "type": "array"
567
+ },
568
+ "state": {
569
+ "type": "string"
570
+ }
571
+ }
572
+ },
573
+ "pipeline": {},
574
+ "total": {
575
+ "type": "number"
576
+ },
577
+ "truncated": {
578
+ "type": "boolean"
579
+ }
580
+ }
581
+ }
582
+ }
583
+ }
584
+ }
585
+ }
586
+ },
587
+ "post": {
588
+ "summary": "",
589
+ "x-methods-declared": "any",
590
+ "responses": {
591
+ "default": {
592
+ "description": "not probed: a write needs a request body the contract does not invent"
593
+ }
594
+ }
595
+ }
596
+ },
597
+ "/api/docs/search": {
598
+ "get": {
599
+ "summary": "",
600
+ "x-methods-declared": "any",
601
+ "x-probe": "/api/docs/search",
602
+ "responses": {
603
+ "400": {
604
+ "description": "observed on a fresh project",
605
+ "content": {
606
+ "application/json": {
607
+ "schema": {
608
+ "type": "object",
609
+ "required": [
610
+ "error"
611
+ ],
612
+ "properties": {
613
+ "error": {
614
+ "type": "string"
615
+ }
616
+ }
617
+ }
618
+ }
619
+ }
620
+ }
621
+ }
622
+ },
623
+ "post": {
624
+ "summary": "",
625
+ "x-methods-declared": "any",
626
+ "responses": {
627
+ "default": {
628
+ "description": "not probed: a write needs a request body the contract does not invent"
629
+ }
630
+ }
631
+ }
632
+ },
633
+ "/api/gate-tiers": {
634
+ "get": {
635
+ "summary": "",
636
+ "x-methods-declared": "any",
637
+ "x-probe": "/api/gate-tiers",
638
+ "responses": {
639
+ "200": {
640
+ "description": "observed on a fresh project",
641
+ "content": {
642
+ "application/json": {
643
+ "schema": {
644
+ "type": "object",
645
+ "required": [
646
+ "agents",
647
+ "enabled",
648
+ "measured"
649
+ ],
650
+ "properties": {
651
+ "agents": {
652
+ "type": "object",
653
+ "required": [],
654
+ "properties": {}
655
+ },
656
+ "enabled": {
657
+ "type": "boolean"
658
+ },
659
+ "measured": {
660
+ "type": "boolean"
661
+ }
662
+ }
663
+ }
664
+ }
665
+ }
666
+ }
667
+ }
668
+ },
669
+ "post": {
670
+ "summary": "",
671
+ "x-methods-declared": "any",
672
+ "responses": {
673
+ "default": {
674
+ "description": "not probed: a write needs a request body the contract does not invent"
675
+ }
676
+ }
677
+ }
678
+ },
679
+ "/api/gates/{rest}": {
680
+ "post": {
681
+ "summary": "",
682
+ "x-methods-declared": "explicit",
683
+ "responses": {
684
+ "default": {
685
+ "description": "not probed: a write needs a request body the contract does not invent"
686
+ }
687
+ }
688
+ }
689
+ },
690
+ "/api/harnesses": {
691
+ "get": {
692
+ "summary": "",
693
+ "x-methods-declared": "explicit",
694
+ "x-probe": "/api/harnesses",
695
+ "responses": {
696
+ "200": {
697
+ "description": "observed on a fresh project",
698
+ "content": {
699
+ "application/json": {
700
+ "schema": {
701
+ "type": "object",
702
+ "required": [
703
+ "claude_code",
704
+ "codex",
705
+ "evidence",
706
+ "second_opinion"
707
+ ],
708
+ "properties": {
709
+ "claude_code": {
710
+ "type": "object",
711
+ "required": [
712
+ "state",
713
+ "version"
714
+ ],
715
+ "properties": {
716
+ "state": {
717
+ "type": "string"
718
+ },
719
+ "version": {
720
+ "type": "string"
721
+ }
722
+ }
723
+ },
724
+ "codex": {
725
+ "type": "object",
726
+ "required": [
727
+ "auth",
728
+ "model",
729
+ "state",
730
+ "version",
731
+ "why"
732
+ ],
733
+ "properties": {
734
+ "auth": {},
735
+ "model": {},
736
+ "state": {
737
+ "type": "string"
738
+ },
739
+ "version": {
740
+ "type": "string"
741
+ },
742
+ "why": {
743
+ "type": "string"
744
+ }
745
+ }
746
+ },
747
+ "evidence": {
748
+ "type": "object",
749
+ "required": [
750
+ "recent",
751
+ "state",
752
+ "summary"
753
+ ],
754
+ "properties": {
755
+ "recent": {
756
+ "type": "array"
757
+ },
758
+ "state": {
759
+ "type": "string"
760
+ },
761
+ "summary": {
762
+ "type": "object"
763
+ }
764
+ }
765
+ },
766
+ "second_opinion": {
767
+ "type": "object",
768
+ "required": [
769
+ "declared",
770
+ "provider",
771
+ "providers",
772
+ "state",
773
+ "why"
774
+ ],
775
+ "properties": {
776
+ "declared": {
777
+ "type": "object"
778
+ },
779
+ "provider": {},
780
+ "providers": {
781
+ "type": "array"
782
+ },
783
+ "state": {
784
+ "type": "string"
785
+ },
786
+ "why": {
787
+ "type": "string"
788
+ }
789
+ }
790
+ }
791
+ }
792
+ }
793
+ }
794
+ }
795
+ }
796
+ }
797
+ }
798
+ },
799
+ "/api/harnesses/second-opinion": {
800
+ "post": {
801
+ "summary": "",
802
+ "x-methods-declared": "explicit",
803
+ "responses": {
804
+ "default": {
805
+ "description": "not probed: a write needs a request body the contract does not invent"
806
+ }
807
+ }
808
+ }
809
+ },
810
+ "/api/heartbeat": {
811
+ "get": {
812
+ "summary": "",
813
+ "x-methods-declared": "any",
814
+ "x-probe": "/api/heartbeat",
815
+ "responses": {
816
+ "200": {
817
+ "description": "observed on a fresh project",
818
+ "content": {
819
+ "application/json": {
820
+ "schema": {
821
+ "type": "object",
822
+ "required": [
823
+ "budgets",
824
+ "budgets_deprecated_key",
825
+ "budgets_malformed",
826
+ "budgets_read",
827
+ "budgets_why",
828
+ "goal_ancestry",
829
+ "stuck",
830
+ "stuck_in_progress",
831
+ "stuck_unmeasurable",
832
+ "tool_failure_rate_1h",
833
+ "tool_failures_measured",
834
+ "tool_failures_why"
835
+ ],
836
+ "properties": {
837
+ "budgets": {
838
+ "type": "object",
839
+ "required": [],
840
+ "properties": {}
841
+ },
842
+ "budgets_deprecated_key": {},
843
+ "budgets_malformed": {
844
+ "type": "array"
845
+ },
846
+ "budgets_read": {
847
+ "type": "boolean"
848
+ },
849
+ "budgets_why": {},
850
+ "goal_ancestry": {
851
+ "type": "string"
852
+ },
853
+ "stuck": {
854
+ "type": "array"
855
+ },
856
+ "stuck_in_progress": {
857
+ "type": "number"
858
+ },
859
+ "stuck_unmeasurable": {
860
+ "type": "number"
861
+ },
862
+ "tool_failure_rate_1h": {
863
+ "type": "number"
864
+ },
865
+ "tool_failures_measured": {
866
+ "type": "boolean"
867
+ },
868
+ "tool_failures_why": {
869
+ "type": "string"
870
+ }
871
+ }
872
+ }
873
+ }
874
+ }
875
+ }
876
+ }
877
+ },
878
+ "post": {
879
+ "summary": "",
880
+ "x-methods-declared": "any",
881
+ "responses": {
882
+ "default": {
883
+ "description": "not probed: a write needs a request body the contract does not invent"
884
+ }
885
+ }
886
+ }
887
+ },
888
+ "/api/host-graph": {
889
+ "get": {
890
+ "summary": "",
891
+ "x-methods-declared": "any",
892
+ "x-probe": "/api/host-graph",
893
+ "responses": {
894
+ "404": {
895
+ "description": "observed on a fresh project",
896
+ "content": {
897
+ "application/json": {
898
+ "schema": {
899
+ "type": "object",
900
+ "required": [
901
+ "error"
902
+ ],
903
+ "properties": {
904
+ "error": {
905
+ "type": "string"
906
+ }
907
+ }
908
+ }
909
+ }
910
+ }
911
+ }
912
+ }
913
+ },
914
+ "post": {
915
+ "summary": "",
916
+ "x-methods-declared": "any",
917
+ "responses": {
918
+ "default": {
919
+ "description": "not probed: a write needs a request body the contract does not invent"
920
+ }
921
+ }
922
+ }
923
+ },
924
+ "/api/inbox": {
925
+ "get": {
926
+ "summary": "",
927
+ "x-methods-declared": "any",
928
+ "x-probe": "/api/inbox",
929
+ "responses": {
930
+ "200": {
931
+ "description": "observed on a fresh project",
932
+ "content": {
933
+ "application/json": {
934
+ "schema": {
935
+ "type": "object",
936
+ "required": [
937
+ "approval_tokens",
938
+ "blocked",
939
+ "elsewhere",
940
+ "p0_open",
941
+ "pending_gates",
942
+ "second_opinion",
943
+ "security",
944
+ "stale_in_progress",
945
+ "summary"
946
+ ],
947
+ "properties": {
948
+ "approval_tokens": {
949
+ "type": "object",
950
+ "required": [
951
+ "state"
952
+ ],
953
+ "properties": {
954
+ "state": {
955
+ "type": "string"
956
+ }
957
+ }
958
+ },
959
+ "blocked": {
960
+ "type": "array"
961
+ },
962
+ "elsewhere": {
963
+ "type": "object",
964
+ "required": [
965
+ "gates",
966
+ "p0",
967
+ "projects",
968
+ "unreadable"
969
+ ],
970
+ "properties": {
971
+ "gates": {
972
+ "type": "number"
973
+ },
974
+ "p0": {
975
+ "type": "number"
976
+ },
977
+ "projects": {
978
+ "type": "array"
979
+ },
980
+ "unreadable": {
981
+ "type": "array"
982
+ }
983
+ }
984
+ },
985
+ "p0_open": {
986
+ "type": "array"
987
+ },
988
+ "pending_gates": {
989
+ "type": "array",
990
+ "items": {
991
+ "type": "object"
992
+ }
993
+ },
994
+ "second_opinion": {
995
+ "type": "object",
996
+ "required": [
997
+ "declared",
998
+ "findings",
999
+ "head",
1000
+ "p0",
1001
+ "sha",
1002
+ "state",
1003
+ "tool",
1004
+ "ts",
1005
+ "verdict",
1006
+ "why"
1007
+ ],
1008
+ "properties": {
1009
+ "declared": {
1010
+ "type": "string"
1011
+ },
1012
+ "findings": {},
1013
+ "head": {
1014
+ "type": "string"
1015
+ },
1016
+ "p0": {},
1017
+ "sha": {},
1018
+ "state": {
1019
+ "type": "string"
1020
+ },
1021
+ "tool": {},
1022
+ "ts": {},
1023
+ "verdict": {},
1024
+ "why": {
1025
+ "type": "string"
1026
+ }
1027
+ }
1028
+ },
1029
+ "security": {
1030
+ "type": "object",
1031
+ "required": [
1032
+ "approved",
1033
+ "blocked"
1034
+ ],
1035
+ "properties": {
1036
+ "approved": {
1037
+ "type": "number"
1038
+ },
1039
+ "blocked": {
1040
+ "type": "number"
1041
+ }
1042
+ }
1043
+ },
1044
+ "stale_in_progress": {
1045
+ "type": "array"
1046
+ },
1047
+ "summary": {
1048
+ "type": "object",
1049
+ "required": [
1050
+ "blocked",
1051
+ "gates",
1052
+ "needs_you",
1053
+ "p0",
1054
+ "stale"
1055
+ ],
1056
+ "properties": {
1057
+ "blocked": {
1058
+ "type": "number"
1059
+ },
1060
+ "gates": {
1061
+ "type": "number"
1062
+ },
1063
+ "needs_you": {
1064
+ "type": "number"
1065
+ },
1066
+ "p0": {
1067
+ "type": "number"
1068
+ },
1069
+ "stale": {
1070
+ "type": "number"
1071
+ }
1072
+ }
1073
+ }
1074
+ }
1075
+ }
1076
+ }
1077
+ }
1078
+ }
1079
+ }
1080
+ },
1081
+ "post": {
1082
+ "summary": "",
1083
+ "x-methods-declared": "any",
1084
+ "responses": {
1085
+ "default": {
1086
+ "description": "not probed: a write needs a request body the contract does not invent"
1087
+ }
1088
+ }
1089
+ }
1090
+ },
1091
+ "/api/logs": {
1092
+ "get": {
1093
+ "summary": "",
1094
+ "x-methods-declared": "any",
1095
+ "x-probe": "/api/logs",
1096
+ "responses": {
1097
+ "200": {
1098
+ "description": "observed on a fresh project",
1099
+ "content": {
1100
+ "application/json": {
1101
+ "schema": {
1102
+ "type": "object",
1103
+ "required": [
1104
+ "logs"
1105
+ ],
1106
+ "properties": {
1107
+ "logs": {
1108
+ "type": "array"
1109
+ }
1110
+ }
1111
+ }
1112
+ }
1113
+ }
1114
+ }
1115
+ }
1116
+ },
1117
+ "post": {
1118
+ "summary": "",
1119
+ "x-methods-declared": "any",
1120
+ "responses": {
1121
+ "default": {
1122
+ "description": "not probed: a write needs a request body the contract does not invent"
1123
+ }
1124
+ }
1125
+ }
1126
+ },
1127
+ "/api/memory": {
1128
+ "get": {
1129
+ "summary": "",
1130
+ "x-methods-declared": "any",
1131
+ "x-probe": "/api/memory",
1132
+ "responses": {
1133
+ "200": {
1134
+ "description": "observed on a fresh project",
1135
+ "content": {
1136
+ "application/json": {
1137
+ "schema": {
1138
+ "type": "object",
1139
+ "required": [
1140
+ "cwd",
1141
+ "layers",
1142
+ "patterns"
1143
+ ],
1144
+ "properties": {
1145
+ "cwd": {
1146
+ "type": "string"
1147
+ },
1148
+ "layers": {
1149
+ "type": "array",
1150
+ "items": {
1151
+ "type": "object"
1152
+ }
1153
+ },
1154
+ "patterns": {
1155
+ "type": "array"
1156
+ }
1157
+ }
1158
+ }
1159
+ }
1160
+ }
1161
+ }
1162
+ }
1163
+ },
1164
+ "post": {
1165
+ "summary": "",
1166
+ "x-methods-declared": "any",
1167
+ "responses": {
1168
+ "default": {
1169
+ "description": "not probed: a write needs a request body the contract does not invent"
1170
+ }
1171
+ }
1172
+ }
1173
+ },
1174
+ "/api/memory-pattern": {
1175
+ "get": {
1176
+ "summary": "",
1177
+ "x-methods-declared": "any",
1178
+ "x-probe": "/api/memory-pattern",
1179
+ "responses": {
1180
+ "400": {
1181
+ "description": "observed on a fresh project",
1182
+ "content": {
1183
+ "application/json": {
1184
+ "schema": {
1185
+ "type": "object",
1186
+ "required": [
1187
+ "error"
1188
+ ],
1189
+ "properties": {
1190
+ "error": {
1191
+ "type": "string"
1192
+ }
1193
+ }
1194
+ }
1195
+ }
1196
+ }
1197
+ }
1198
+ }
1199
+ },
1200
+ "post": {
1201
+ "summary": "",
1202
+ "x-methods-declared": "any",
1203
+ "responses": {
1204
+ "default": {
1205
+ "description": "not probed: a write needs a request body the contract does not invent"
1206
+ }
1207
+ }
1208
+ }
1209
+ },
1210
+ "/api/metrics": {
1211
+ "get": {
1212
+ "summary": "",
1213
+ "x-methods-declared": "any",
1214
+ "x-probe": "/api/metrics",
1215
+ "responses": {
1216
+ "200": {
1217
+ "description": "observed on a fresh project",
1218
+ "content": {
1219
+ "application/json": {
1220
+ "schema": {
1221
+ "type": "object",
1222
+ "required": [
1223
+ "acceptance",
1224
+ "agents",
1225
+ "agents_cost",
1226
+ "avg_completion_min",
1227
+ "cost",
1228
+ "cycle_time_stat",
1229
+ "legacy_agent_count",
1230
+ "legacy_agent_runs",
1231
+ "previous",
1232
+ "qa",
1233
+ "recent_done",
1234
+ "security",
1235
+ "server",
1236
+ "tasks",
1237
+ "velocity",
1238
+ "verdicts",
1239
+ "window_days"
1240
+ ],
1241
+ "properties": {
1242
+ "acceptance": {
1243
+ "type": "object",
1244
+ "required": [
1245
+ "accepted",
1246
+ "cost_per_accepted",
1247
+ "decisions",
1248
+ "rework_rounds",
1249
+ "undeclared_blocks"
1250
+ ],
1251
+ "properties": {
1252
+ "accepted": {
1253
+ "type": "number"
1254
+ },
1255
+ "cost_per_accepted": {},
1256
+ "decisions": {
1257
+ "type": "number"
1258
+ },
1259
+ "rework_rounds": {
1260
+ "type": "number"
1261
+ },
1262
+ "undeclared_blocks": {
1263
+ "type": "number"
1264
+ }
1265
+ }
1266
+ },
1267
+ "agents": {
1268
+ "type": "object",
1269
+ "required": [],
1270
+ "properties": {}
1271
+ },
1272
+ "agents_cost": {
1273
+ "type": "array"
1274
+ },
1275
+ "avg_completion_min": {
1276
+ "type": "number"
1277
+ },
1278
+ "cost": {
1279
+ "type": "object",
1280
+ "required": [
1281
+ "count",
1282
+ "human_usd",
1283
+ "llm_usd",
1284
+ "real_llm_usd",
1285
+ "savings_x",
1286
+ "source"
1287
+ ],
1288
+ "properties": {
1289
+ "count": {
1290
+ "type": "number"
1291
+ },
1292
+ "human_usd": {
1293
+ "type": "number"
1294
+ },
1295
+ "llm_usd": {
1296
+ "type": "number"
1297
+ },
1298
+ "real_llm_usd": {},
1299
+ "savings_x": {
1300
+ "type": "number"
1301
+ },
1302
+ "source": {
1303
+ "type": "string"
1304
+ }
1305
+ }
1306
+ },
1307
+ "cycle_time_stat": {
1308
+ "type": "string"
1309
+ },
1310
+ "legacy_agent_count": {
1311
+ "type": "number"
1312
+ },
1313
+ "legacy_agent_runs": {
1314
+ "type": "object",
1315
+ "required": [],
1316
+ "properties": {}
1317
+ },
1318
+ "previous": {
1319
+ "type": "object",
1320
+ "required": [
1321
+ "comparable",
1322
+ "done",
1323
+ "llm_usd"
1324
+ ],
1325
+ "properties": {
1326
+ "comparable": {
1327
+ "type": "boolean"
1328
+ },
1329
+ "done": {
1330
+ "type": "number"
1331
+ },
1332
+ "llm_usd": {
1333
+ "type": "number"
1334
+ }
1335
+ }
1336
+ },
1337
+ "qa": {
1338
+ "type": "object",
1339
+ "required": [
1340
+ "failed",
1341
+ "pass_rate",
1342
+ "passed"
1343
+ ],
1344
+ "properties": {
1345
+ "failed": {
1346
+ "type": "number"
1347
+ },
1348
+ "pass_rate": {},
1349
+ "passed": {
1350
+ "type": "number"
1351
+ }
1352
+ }
1353
+ },
1354
+ "recent_done": {
1355
+ "type": "array"
1356
+ },
1357
+ "security": {
1358
+ "type": "object",
1359
+ "required": [
1360
+ "approved",
1361
+ "blocked"
1362
+ ],
1363
+ "properties": {
1364
+ "approved": {
1365
+ "type": "number"
1366
+ },
1367
+ "blocked": {
1368
+ "type": "number"
1369
+ }
1370
+ }
1371
+ },
1372
+ "server": {
1373
+ "type": "object",
1374
+ "required": [
1375
+ "bd_cache_entries",
1376
+ "sse_clients"
1377
+ ],
1378
+ "properties": {
1379
+ "bd_cache_entries": {
1380
+ "type": "number"
1381
+ },
1382
+ "sse_clients": {
1383
+ "type": "number"
1384
+ }
1385
+ }
1386
+ },
1387
+ "tasks": {
1388
+ "type": "object",
1389
+ "required": [
1390
+ "backlog",
1391
+ "done",
1392
+ "done_in_window",
1393
+ "in_progress",
1394
+ "total"
1395
+ ],
1396
+ "properties": {
1397
+ "backlog": {
1398
+ "type": "number"
1399
+ },
1400
+ "done": {
1401
+ "type": "number"
1402
+ },
1403
+ "done_in_window": {
1404
+ "type": "number"
1405
+ },
1406
+ "in_progress": {
1407
+ "type": "number"
1408
+ },
1409
+ "total": {
1410
+ "type": "number"
1411
+ }
1412
+ }
1413
+ },
1414
+ "velocity": {
1415
+ "type": "object",
1416
+ "required": [
1417
+ "last_30d",
1418
+ "last_7d",
1419
+ "this_month",
1420
+ "this_week"
1421
+ ],
1422
+ "properties": {
1423
+ "last_30d": {
1424
+ "type": "number"
1425
+ },
1426
+ "last_7d": {
1427
+ "type": "number"
1428
+ },
1429
+ "this_month": {
1430
+ "type": "number"
1431
+ },
1432
+ "this_week": {
1433
+ "type": "number"
1434
+ }
1435
+ }
1436
+ },
1437
+ "verdicts": {
1438
+ "type": "array"
1439
+ },
1440
+ "window_days": {
1441
+ "type": "number"
1442
+ }
1443
+ }
1444
+ }
1445
+ }
1446
+ }
1447
+ }
1448
+ }
1449
+ },
1450
+ "post": {
1451
+ "summary": "",
1452
+ "x-methods-declared": "any",
1453
+ "responses": {
1454
+ "default": {
1455
+ "description": "not probed: a write needs a request body the contract does not invent"
1456
+ }
1457
+ }
1458
+ }
1459
+ },
1460
+ "/api/notif-history": {
1461
+ "get": {
1462
+ "summary": "",
1463
+ "x-methods-declared": "explicit",
1464
+ "x-probe": "/api/notif-history",
1465
+ "responses": {
1466
+ "200": {
1467
+ "description": "observed on a fresh project",
1468
+ "content": {
1469
+ "application/json": {
1470
+ "schema": {
1471
+ "type": "array"
1472
+ }
1473
+ }
1474
+ }
1475
+ }
1476
+ }
1477
+ }
1478
+ },
1479
+ "/api/notif-history/read": {
1480
+ "post": {
1481
+ "summary": "",
1482
+ "x-methods-declared": "explicit",
1483
+ "responses": {
1484
+ "default": {
1485
+ "description": "not probed: a write needs a request body the contract does not invent"
1486
+ }
1487
+ }
1488
+ }
1489
+ },
1490
+ "/api/notifications": {
1491
+ "get": {
1492
+ "summary": "",
1493
+ "x-methods-declared": "any",
1494
+ "x-probe": "/api/notifications",
1495
+ "responses": {
1496
+ "200": {
1497
+ "description": "observed on a fresh project",
1498
+ "content": {
1499
+ "application/json": {
1500
+ "schema": {
1501
+ "type": "object",
1502
+ "required": [
1503
+ "enabled",
1504
+ "known_triggers",
1505
+ "relay",
1506
+ "to",
1507
+ "triggers",
1508
+ "verified"
1509
+ ],
1510
+ "properties": {
1511
+ "enabled": {
1512
+ "type": "boolean"
1513
+ },
1514
+ "known_triggers": {
1515
+ "type": "array",
1516
+ "items": {
1517
+ "type": "string"
1518
+ }
1519
+ },
1520
+ "relay": {
1521
+ "type": "string"
1522
+ },
1523
+ "to": {
1524
+ "type": "string"
1525
+ },
1526
+ "triggers": {
1527
+ "type": "array"
1528
+ },
1529
+ "verified": {
1530
+ "type": "boolean"
1531
+ }
1532
+ }
1533
+ }
1534
+ }
1535
+ }
1536
+ }
1537
+ }
1538
+ },
1539
+ "post": {
1540
+ "summary": "",
1541
+ "x-methods-declared": "any",
1542
+ "responses": {
1543
+ "default": {
1544
+ "description": "not probed: a write needs a request body the contract does not invent"
1545
+ }
1546
+ }
1547
+ }
1548
+ },
1549
+ "/api/outcomes": {
1550
+ "get": {
1551
+ "summary": "",
1552
+ "x-methods-declared": "any",
1553
+ "x-probe": "/api/outcomes",
1554
+ "responses": {
1555
+ "200": {
1556
+ "description": "observed on a fresh project",
1557
+ "content": {
1558
+ "application/json": {
1559
+ "schema": {
1560
+ "type": "object",
1561
+ "required": [
1562
+ "state",
1563
+ "why"
1564
+ ],
1565
+ "properties": {
1566
+ "state": {
1567
+ "type": "string"
1568
+ },
1569
+ "why": {
1570
+ "type": "string"
1571
+ }
1572
+ }
1573
+ }
1574
+ }
1575
+ }
1576
+ }
1577
+ }
1578
+ },
1579
+ "post": {
1580
+ "summary": "",
1581
+ "x-methods-declared": "any",
1582
+ "responses": {
1583
+ "default": {
1584
+ "description": "not probed: a write needs a request body the contract does not invent"
1585
+ }
1586
+ }
1587
+ }
1588
+ },
1589
+ "/api/pipeline": {
1590
+ "get": {
1591
+ "summary": "",
1592
+ "x-methods-declared": "any",
1593
+ "x-probe": "/api/pipeline",
1594
+ "responses": {
1595
+ "200": {
1596
+ "description": "observed on a fresh project",
1597
+ "content": {
1598
+ "application/json": {
1599
+ "schema": {
1600
+ "type": "array",
1601
+ "items": {
1602
+ "type": "object",
1603
+ "required": [
1604
+ "age_min",
1605
+ "last_message",
1606
+ "stage",
1607
+ "status",
1608
+ "ts",
1609
+ "verdict"
1610
+ ],
1611
+ "properties": {
1612
+ "age_min": {},
1613
+ "blocked": {
1614
+ "type": "number"
1615
+ },
1616
+ "is_human_gate": {
1617
+ "type": "boolean"
1618
+ },
1619
+ "last_message": {},
1620
+ "pending": {
1621
+ "type": "number"
1622
+ },
1623
+ "stage": {
1624
+ "type": "string"
1625
+ },
1626
+ "status": {
1627
+ "type": "string"
1628
+ },
1629
+ "ts": {},
1630
+ "verdict": {}
1631
+ }
1632
+ }
1633
+ }
1634
+ }
1635
+ }
1636
+ }
1637
+ }
1638
+ },
1639
+ "post": {
1640
+ "summary": "",
1641
+ "x-methods-declared": "any",
1642
+ "responses": {
1643
+ "default": {
1644
+ "description": "not probed: a write needs a request body the contract does not invent"
1645
+ }
1646
+ }
1647
+ }
1648
+ },
1649
+ "/api/portfolio": {
1650
+ "get": {
1651
+ "summary": "",
1652
+ "x-methods-declared": "explicit",
1653
+ "x-probe": "/api/portfolio",
1654
+ "responses": {
1655
+ "200": {
1656
+ "description": "observed on a fresh project",
1657
+ "content": {
1658
+ "application/json": {
1659
+ "schema": {
1660
+ "type": "object",
1661
+ "required": [
1662
+ "needsYou",
1663
+ "projects",
1664
+ "spend",
1665
+ "spendCoveredProjects",
1666
+ "total",
1667
+ "unreadable"
1668
+ ],
1669
+ "properties": {
1670
+ "needsYou": {
1671
+ "type": "number"
1672
+ },
1673
+ "projects": {
1674
+ "type": "array"
1675
+ },
1676
+ "spend": {},
1677
+ "spendCoveredProjects": {
1678
+ "type": "number"
1679
+ },
1680
+ "total": {
1681
+ "type": "number"
1682
+ },
1683
+ "unreadable": {
1684
+ "type": "number"
1685
+ }
1686
+ }
1687
+ }
1688
+ }
1689
+ }
1690
+ }
1691
+ }
1692
+ }
1693
+ },
1694
+ "/api/projects": {
1695
+ "get": {
1696
+ "summary": "",
1697
+ "x-methods-declared": "any",
1698
+ "x-probe": "/api/projects",
1699
+ "responses": {
1700
+ "200": {
1701
+ "description": "observed on a fresh project",
1702
+ "content": {
1703
+ "application/json": {
1704
+ "schema": {
1705
+ "type": "array"
1706
+ }
1707
+ }
1708
+ }
1709
+ }
1710
+ }
1711
+ },
1712
+ "post": {
1713
+ "summary": "",
1714
+ "x-methods-declared": "any",
1715
+ "responses": {
1716
+ "default": {
1717
+ "description": "not probed: a write needs a request body the contract does not invent"
1718
+ }
1719
+ }
1720
+ }
1721
+ },
1722
+ "/api/projects/register": {
1723
+ "post": {
1724
+ "summary": "",
1725
+ "x-methods-declared": "explicit",
1726
+ "responses": {
1727
+ "default": {
1728
+ "description": "not probed: a write needs a request body the contract does not invent"
1729
+ }
1730
+ }
1731
+ }
1732
+ },
1733
+ "/api/push/subscribe": {
1734
+ "delete": {
1735
+ "summary": "",
1736
+ "x-methods-declared": "explicit",
1737
+ "responses": {
1738
+ "default": {
1739
+ "description": "not probed: a write needs a request body the contract does not invent"
1740
+ }
1741
+ }
1742
+ },
1743
+ "post": {
1744
+ "summary": "",
1745
+ "x-methods-declared": "explicit",
1746
+ "responses": {
1747
+ "default": {
1748
+ "description": "not probed: a write needs a request body the contract does not invent"
1749
+ }
1750
+ }
1751
+ }
1752
+ },
1753
+ "/api/push/vapid-key": {
1754
+ "get": {
1755
+ "summary": "",
1756
+ "x-methods-declared": "explicit",
1757
+ "x-probe": "/api/push/vapid-key",
1758
+ "responses": {
1759
+ "200": {
1760
+ "description": "observed on a fresh project",
1761
+ "content": {
1762
+ "application/json": {
1763
+ "schema": {
1764
+ "type": "object",
1765
+ "required": [
1766
+ "publicKey"
1767
+ ],
1768
+ "properties": {
1769
+ "publicKey": {
1770
+ "type": "string"
1771
+ }
1772
+ }
1773
+ }
1774
+ }
1775
+ }
1776
+ }
1777
+ }
1778
+ }
1779
+ },
1780
+ "/api/receipt": {
1781
+ "get": {
1782
+ "summary": "",
1783
+ "x-methods-declared": "any",
1784
+ "x-probe": "/api/receipt",
1785
+ "responses": {
1786
+ "200": {
1787
+ "description": "observed on a fresh project",
1788
+ "content": {
1789
+ "application/json": {
1790
+ "schema": {
1791
+ "type": "object",
1792
+ "required": [
1793
+ "agent",
1794
+ "state",
1795
+ "ts",
1796
+ "why"
1797
+ ],
1798
+ "properties": {
1799
+ "agent": {},
1800
+ "state": {
1801
+ "type": "string"
1802
+ },
1803
+ "ts": {},
1804
+ "why": {
1805
+ "type": "string"
1806
+ }
1807
+ }
1808
+ }
1809
+ }
1810
+ }
1811
+ }
1812
+ }
1813
+ },
1814
+ "post": {
1815
+ "summary": "",
1816
+ "x-methods-declared": "any",
1817
+ "responses": {
1818
+ "default": {
1819
+ "description": "not probed: a write needs a request body the contract does not invent"
1820
+ }
1821
+ }
1822
+ }
1823
+ },
1824
+ "/api/required-reviewers": {
1825
+ "get": {
1826
+ "summary": "",
1827
+ "x-methods-declared": "any",
1828
+ "x-probe": "/api/required-reviewers",
1829
+ "responses": {
1830
+ "200": {
1831
+ "description": "observed on a fresh project",
1832
+ "content": {
1833
+ "application/json": {
1834
+ "schema": {
1835
+ "type": "object",
1836
+ "required": [
1837
+ "reviewers",
1838
+ "state"
1839
+ ],
1840
+ "properties": {
1841
+ "reviewers": {
1842
+ "type": "array"
1843
+ },
1844
+ "state": {
1845
+ "type": "string"
1846
+ }
1847
+ }
1848
+ }
1849
+ }
1850
+ }
1851
+ }
1852
+ }
1853
+ },
1854
+ "post": {
1855
+ "summary": "",
1856
+ "x-methods-declared": "any",
1857
+ "responses": {
1858
+ "default": {
1859
+ "description": "not probed: a write needs a request body the contract does not invent"
1860
+ }
1861
+ }
1862
+ }
1863
+ },
1864
+ "/api/resume": {
1865
+ "get": {
1866
+ "summary": "",
1867
+ "x-methods-declared": "any",
1868
+ "x-probe": "/api/resume",
1869
+ "responses": {
1870
+ "200": {
1871
+ "description": "observed on a fresh project",
1872
+ "content": {
1873
+ "application/json": {
1874
+ "schema": {
1875
+ "type": "object",
1876
+ "required": [
1877
+ "decisions",
1878
+ "open_gates",
1879
+ "recent_verdicts",
1880
+ "wip_tasks"
1881
+ ],
1882
+ "properties": {
1883
+ "decisions": {
1884
+ "type": "array"
1885
+ },
1886
+ "open_gates": {
1887
+ "type": "array",
1888
+ "items": {
1889
+ "type": "object"
1890
+ }
1891
+ },
1892
+ "recent_verdicts": {
1893
+ "type": "array"
1894
+ },
1895
+ "wip_tasks": {
1896
+ "type": "array"
1897
+ }
1898
+ }
1899
+ }
1900
+ }
1901
+ }
1902
+ }
1903
+ }
1904
+ },
1905
+ "post": {
1906
+ "summary": "",
1907
+ "x-methods-declared": "any",
1908
+ "responses": {
1909
+ "default": {
1910
+ "description": "not probed: a write needs a request body the contract does not invent"
1911
+ }
1912
+ }
1913
+ }
1914
+ },
1915
+ "/api/router-key": {
1916
+ "get": {
1917
+ "summary": "",
1918
+ "x-methods-declared": "explicit",
1919
+ "x-probe": "/api/router-key",
1920
+ "responses": {
1921
+ "200": {
1922
+ "description": "observed on a fresh project",
1923
+ "content": {
1924
+ "application/json": {
1925
+ "schema": {
1926
+ "type": "object",
1927
+ "required": [
1928
+ "fingerprint",
1929
+ "from",
1930
+ "model",
1931
+ "problems",
1932
+ "state",
1933
+ "verification"
1934
+ ],
1935
+ "properties": {
1936
+ "fingerprint": {},
1937
+ "from": {},
1938
+ "model": {},
1939
+ "problems": {
1940
+ "type": "array"
1941
+ },
1942
+ "state": {
1943
+ "type": "string"
1944
+ },
1945
+ "verification": {}
1946
+ }
1947
+ }
1948
+ }
1949
+ }
1950
+ }
1951
+ }
1952
+ },
1953
+ "post": {
1954
+ "summary": "",
1955
+ "x-methods-declared": "explicit",
1956
+ "responses": {
1957
+ "default": {
1958
+ "description": "not probed: a write needs a request body the contract does not invent"
1959
+ }
1960
+ }
1961
+ }
1962
+ },
1963
+ "/api/router-key/verify": {
1964
+ "post": {
1965
+ "summary": "",
1966
+ "x-methods-declared": "explicit",
1967
+ "responses": {
1968
+ "default": {
1969
+ "description": "not probed: a write needs a request body the contract does not invent"
1970
+ }
1971
+ }
1972
+ }
1973
+ },
1974
+ "/api/scores": {
1975
+ "get": {
1976
+ "summary": "",
1977
+ "x-methods-declared": "any",
1978
+ "x-probe": "/api/scores",
1979
+ "responses": {
1980
+ "200": {
1981
+ "description": "observed on a fresh project",
1982
+ "content": {
1983
+ "application/json": {
1984
+ "schema": {
1985
+ "type": "object",
1986
+ "required": [
1987
+ "agent",
1988
+ "name",
1989
+ "scores",
1990
+ "summary",
1991
+ "unreadable_lines"
1992
+ ],
1993
+ "properties": {
1994
+ "agent": {},
1995
+ "name": {
1996
+ "type": "string"
1997
+ },
1998
+ "scores": {
1999
+ "type": "array"
2000
+ },
2001
+ "summary": {
2002
+ "type": "object",
2003
+ "required": [
2004
+ "assessed",
2005
+ "byState",
2006
+ "rate",
2007
+ "rejected",
2008
+ "total",
2009
+ "unassessed"
2010
+ ],
2011
+ "properties": {
2012
+ "assessed": {
2013
+ "type": "number"
2014
+ },
2015
+ "byState": {
2016
+ "type": "object"
2017
+ },
2018
+ "rate": {},
2019
+ "rejected": {
2020
+ "type": "number"
2021
+ },
2022
+ "total": {
2023
+ "type": "number"
2024
+ },
2025
+ "unassessed": {
2026
+ "type": "number"
2027
+ }
2028
+ }
2029
+ },
2030
+ "unreadable_lines": {
2031
+ "type": "number"
2032
+ }
2033
+ }
2034
+ }
2035
+ }
2036
+ }
2037
+ }
2038
+ }
2039
+ },
2040
+ "post": {
2041
+ "summary": "",
2042
+ "x-methods-declared": "any",
2043
+ "responses": {
2044
+ "default": {
2045
+ "description": "not probed: a write needs a request body the contract does not invent"
2046
+ }
2047
+ }
2048
+ }
2049
+ },
2050
+ "/api/session-search": {
2051
+ "get": {
2052
+ "summary": "",
2053
+ "x-methods-declared": "any",
2054
+ "x-probe": "/api/session-search",
2055
+ "responses": {
2056
+ "200": {
2057
+ "description": "observed on a fresh project",
2058
+ "content": {
2059
+ "application/json": {
2060
+ "schema": {
2061
+ "type": "object",
2062
+ "required": [
2063
+ "hits",
2064
+ "note",
2065
+ "query"
2066
+ ],
2067
+ "properties": {
2068
+ "hits": {
2069
+ "type": "array"
2070
+ },
2071
+ "note": {
2072
+ "type": "string"
2073
+ },
2074
+ "query": {
2075
+ "type": "string"
2076
+ }
2077
+ }
2078
+ }
2079
+ }
2080
+ }
2081
+ }
2082
+ }
2083
+ },
2084
+ "post": {
2085
+ "summary": "",
2086
+ "x-methods-declared": "any",
2087
+ "responses": {
2088
+ "default": {
2089
+ "description": "not probed: a write needs a request body the contract does not invent"
2090
+ }
2091
+ }
2092
+ }
2093
+ },
2094
+ "/api/session-status": {
2095
+ "get": {
2096
+ "summary": "",
2097
+ "x-methods-declared": "any",
2098
+ "x-probe": "/api/session-status",
2099
+ "responses": {
2100
+ "200": {
2101
+ "description": "observed on a fresh project",
2102
+ "content": {
2103
+ "application/json": {
2104
+ "schema": {
2105
+ "type": "object",
2106
+ "required": [
2107
+ "sessions"
2108
+ ],
2109
+ "properties": {
2110
+ "sessions": {
2111
+ "type": "array"
2112
+ }
2113
+ }
2114
+ }
2115
+ }
2116
+ }
2117
+ }
2118
+ }
2119
+ },
2120
+ "post": {
2121
+ "summary": "",
2122
+ "x-methods-declared": "any",
2123
+ "responses": {
2124
+ "default": {
2125
+ "description": "not probed: a write needs a request body the contract does not invent"
2126
+ }
2127
+ }
2128
+ }
2129
+ },
2130
+ "/api/sessions": {
2131
+ "get": {
2132
+ "summary": "",
2133
+ "x-methods-declared": "any",
2134
+ "x-probe": "/api/sessions",
2135
+ "responses": {
2136
+ "200": {
2137
+ "description": "observed on a fresh project",
2138
+ "content": {
2139
+ "application/json": {
2140
+ "schema": {
2141
+ "type": "object",
2142
+ "required": [
2143
+ "count",
2144
+ "project",
2145
+ "sessions"
2146
+ ],
2147
+ "properties": {
2148
+ "count": {
2149
+ "type": "number"
2150
+ },
2151
+ "project": {
2152
+ "type": "string"
2153
+ },
2154
+ "sessions": {
2155
+ "type": "array"
2156
+ }
2157
+ }
2158
+ }
2159
+ }
2160
+ }
2161
+ }
2162
+ }
2163
+ },
2164
+ "post": {
2165
+ "summary": "",
2166
+ "x-methods-declared": "any",
2167
+ "responses": {
2168
+ "default": {
2169
+ "description": "not probed: a write needs a request body the contract does not invent"
2170
+ }
2171
+ }
2172
+ }
2173
+ },
2174
+ "/api/sessions/{rest}": {
2175
+ "get": {
2176
+ "summary": "",
2177
+ "x-methods-declared": "any",
2178
+ "x-probe": "/api/sessions/x",
2179
+ "responses": {
2180
+ "404": {
2181
+ "description": "observed on a fresh project",
2182
+ "content": {
2183
+ "application/json": {
2184
+ "schema": {
2185
+ "type": "object",
2186
+ "required": [
2187
+ "error"
2188
+ ],
2189
+ "properties": {
2190
+ "error": {
2191
+ "type": "string"
2192
+ }
2193
+ }
2194
+ }
2195
+ }
2196
+ }
2197
+ }
2198
+ }
2199
+ },
2200
+ "post": {
2201
+ "summary": "",
2202
+ "x-methods-declared": "any",
2203
+ "responses": {
2204
+ "default": {
2205
+ "description": "not probed: a write needs a request body the contract does not invent"
2206
+ }
2207
+ }
2208
+ }
2209
+ },
2210
+ "/api/share": {
2211
+ "get": {
2212
+ "summary": "",
2213
+ "x-methods-declared": "any",
2214
+ "x-probe": "/api/share",
2215
+ "responses": {
2216
+ "200": {
2217
+ "description": "observed on a fresh project",
2218
+ "content": {
2219
+ "application/json": {
2220
+ "schema": {
2221
+ "type": "object",
2222
+ "required": [
2223
+ "enabled",
2224
+ "hash",
2225
+ "published_at",
2226
+ "url"
2227
+ ],
2228
+ "properties": {
2229
+ "enabled": {
2230
+ "type": "boolean"
2231
+ },
2232
+ "hash": {},
2233
+ "published_at": {},
2234
+ "url": {}
2235
+ }
2236
+ }
2237
+ }
2238
+ }
2239
+ }
2240
+ }
2241
+ },
2242
+ "post": {
2243
+ "summary": "",
2244
+ "x-methods-declared": "any",
2245
+ "responses": {
2246
+ "default": {
2247
+ "description": "not probed: a write needs a request body the contract does not invent"
2248
+ }
2249
+ }
2250
+ }
2251
+ },
2252
+ "/api/skills": {
2253
+ "get": {
2254
+ "summary": "",
2255
+ "x-methods-declared": "any",
2256
+ "x-probe": "/api/skills",
2257
+ "responses": {
2258
+ "200": {
2259
+ "description": "observed on a fresh project",
2260
+ "content": {
2261
+ "application/json": {
2262
+ "schema": {
2263
+ "type": "object",
2264
+ "required": [
2265
+ "duration_ms",
2266
+ "observed_at",
2267
+ "registry",
2268
+ "schema",
2269
+ "skills",
2270
+ "sources",
2271
+ "state",
2272
+ "truncated"
2273
+ ],
2274
+ "properties": {
2275
+ "duration_ms": {
2276
+ "type": "number"
2277
+ },
2278
+ "observed_at": {
2279
+ "type": "string"
2280
+ },
2281
+ "registry": {
2282
+ "type": "object",
2283
+ "required": [
2284
+ "declared_at",
2285
+ "plugin_version",
2286
+ "state"
2287
+ ],
2288
+ "properties": {
2289
+ "declared_at": {},
2290
+ "plugin_version": {},
2291
+ "state": {
2292
+ "type": "string"
2293
+ }
2294
+ }
2295
+ },
2296
+ "schema": {
2297
+ "type": "number"
2298
+ },
2299
+ "skills": {
2300
+ "type": "array"
2301
+ },
2302
+ "sources": {
2303
+ "type": "array",
2304
+ "items": {
2305
+ "type": "object"
2306
+ }
2307
+ },
2308
+ "state": {
2309
+ "type": "string"
2310
+ },
2311
+ "truncated": {
2312
+ "type": "boolean"
2313
+ }
2314
+ }
2315
+ }
2316
+ }
2317
+ }
2318
+ }
2319
+ }
2320
+ },
2321
+ "post": {
2322
+ "summary": "",
2323
+ "x-methods-declared": "any",
2324
+ "responses": {
2325
+ "default": {
2326
+ "description": "not probed: a write needs a request body the contract does not invent"
2327
+ }
2328
+ }
2329
+ }
2330
+ },
2331
+ "/api/sse": {
2332
+ "get": {
2333
+ "summary": "",
2334
+ "x-methods-declared": "any",
2335
+ "x-probe": "/api/sse",
2336
+ "responses": {
2337
+ "200": {
2338
+ "description": "observed on a fresh project",
2339
+ "content": {
2340
+ "text/event-stream": {}
2341
+ }
2342
+ }
2343
+ }
2344
+ },
2345
+ "post": {
2346
+ "summary": "",
2347
+ "x-methods-declared": "any",
2348
+ "responses": {
2349
+ "default": {
2350
+ "description": "not probed: a write needs a request body the contract does not invent"
2351
+ }
2352
+ }
2353
+ }
2354
+ },
2355
+ "/api/stand-downs": {
2356
+ "get": {
2357
+ "summary": "",
2358
+ "x-methods-declared": "any",
2359
+ "x-probe": "/api/stand-downs",
2360
+ "responses": {
2361
+ "200": {
2362
+ "description": "observed on a fresh project",
2363
+ "content": {
2364
+ "application/json": {
2365
+ "schema": {
2366
+ "type": "object",
2367
+ "required": [
2368
+ "rows",
2369
+ "state",
2370
+ "why"
2371
+ ],
2372
+ "properties": {
2373
+ "rows": {
2374
+ "type": "array"
2375
+ },
2376
+ "state": {
2377
+ "type": "string"
2378
+ },
2379
+ "why": {
2380
+ "type": "string"
2381
+ }
2382
+ }
2383
+ }
2384
+ }
2385
+ }
2386
+ }
2387
+ }
2388
+ },
2389
+ "post": {
2390
+ "summary": "",
2391
+ "x-methods-declared": "any",
2392
+ "responses": {
2393
+ "default": {
2394
+ "description": "not probed: a write needs a request body the contract does not invent"
2395
+ }
2396
+ }
2397
+ }
2398
+ },
2399
+ "/api/tasks": {
2400
+ "get": {
2401
+ "summary": "",
2402
+ "x-methods-declared": "explicit",
2403
+ "x-probe": "/api/tasks",
2404
+ "responses": {
2405
+ "200": {
2406
+ "description": "observed on a fresh project",
2407
+ "content": {
2408
+ "application/json": {
2409
+ "schema": {
2410
+ "type": "array",
2411
+ "items": {
2412
+ "type": "object",
2413
+ "required": [
2414
+ "acceptance",
2415
+ "agent",
2416
+ "close_reason",
2417
+ "closed_at",
2418
+ "comment_count",
2419
+ "created_at",
2420
+ "description",
2421
+ "design",
2422
+ "estimated_minutes",
2423
+ "id",
2424
+ "is_gate",
2425
+ "labels",
2426
+ "notes",
2427
+ "owner",
2428
+ "priority",
2429
+ "raw_status",
2430
+ "source",
2431
+ "status",
2432
+ "title",
2433
+ "updated_at"
2434
+ ],
2435
+ "properties": {
2436
+ "acceptance": {
2437
+ "type": "string"
2438
+ },
2439
+ "agent": {
2440
+ "type": "string"
2441
+ },
2442
+ "close_reason": {
2443
+ "type": "string"
2444
+ },
2445
+ "closed_at": {},
2446
+ "comment_count": {
2447
+ "type": "number"
2448
+ },
2449
+ "created_at": {},
2450
+ "description": {
2451
+ "type": "string"
2452
+ },
2453
+ "design": {
2454
+ "type": "string"
2455
+ },
2456
+ "estimated_minutes": {},
2457
+ "id": {
2458
+ "type": "string"
2459
+ },
2460
+ "is_gate": {
2461
+ "type": "boolean"
2462
+ },
2463
+ "labels": {
2464
+ "type": "array"
2465
+ },
2466
+ "notes": {
2467
+ "type": "string"
2468
+ },
2469
+ "owner": {
2470
+ "type": "string"
2471
+ },
2472
+ "priority": {
2473
+ "type": "number"
2474
+ },
2475
+ "raw_status": {
2476
+ "type": "string"
2477
+ },
2478
+ "source": {
2479
+ "type": "string"
2480
+ },
2481
+ "status": {
2482
+ "type": "string"
2483
+ },
2484
+ "title": {
2485
+ "type": "string"
2486
+ },
2487
+ "updated_at": {}
2488
+ }
2489
+ }
2490
+ }
2491
+ }
2492
+ }
2493
+ }
2494
+ }
2495
+ },
2496
+ "post": {
2497
+ "summary": "",
2498
+ "x-methods-declared": "explicit",
2499
+ "responses": {
2500
+ "default": {
2501
+ "description": "not probed: a write needs a request body the contract does not invent"
2502
+ }
2503
+ }
2504
+ }
2505
+ },
2506
+ "/api/turns": {
2507
+ "get": {
2508
+ "summary": "",
2509
+ "x-methods-declared": "any",
2510
+ "x-probe": "/api/turns",
2511
+ "responses": {
2512
+ "200": {
2513
+ "description": "observed on a fresh project",
2514
+ "content": {
2515
+ "application/json": {
2516
+ "schema": {
2517
+ "type": "object",
2518
+ "required": [
2519
+ "sessions",
2520
+ "state"
2521
+ ],
2522
+ "properties": {
2523
+ "sessions": {
2524
+ "type": "array"
2525
+ },
2526
+ "state": {
2527
+ "type": "string"
2528
+ }
2529
+ }
2530
+ }
2531
+ }
2532
+ }
2533
+ }
2534
+ }
2535
+ },
2536
+ "post": {
2537
+ "summary": "",
2538
+ "x-methods-declared": "any",
2539
+ "responses": {
2540
+ "default": {
2541
+ "description": "not probed: a write needs a request body the contract does not invent"
2542
+ }
2543
+ }
2544
+ }
2545
+ },
2546
+ "/api/turns/diff": {
2547
+ "get": {
2548
+ "summary": "",
2549
+ "x-methods-declared": "any",
2550
+ "x-probe": "/api/turns/diff",
2551
+ "responses": {
2552
+ "400": {
2553
+ "description": "observed on a fresh project",
2554
+ "content": {
2555
+ "application/json": {
2556
+ "schema": {
2557
+ "type": "object",
2558
+ "required": [
2559
+ "state",
2560
+ "why"
2561
+ ],
2562
+ "properties": {
2563
+ "state": {
2564
+ "type": "string"
2565
+ },
2566
+ "why": {
2567
+ "type": "string"
2568
+ }
2569
+ }
2570
+ }
2571
+ }
2572
+ }
2573
+ }
2574
+ }
2575
+ },
2576
+ "post": {
2577
+ "summary": "",
2578
+ "x-methods-declared": "any",
2579
+ "responses": {
2580
+ "default": {
2581
+ "description": "not probed: a write needs a request body the contract does not invent"
2582
+ }
2583
+ }
2584
+ }
2585
+ },
2586
+ "/api/usage": {
2587
+ "get": {
2588
+ "summary": "",
2589
+ "x-methods-declared": "any",
2590
+ "x-probe": "/api/usage",
2591
+ "responses": {
2592
+ "200": {
2593
+ "description": "observed on a fresh project",
2594
+ "content": {
2595
+ "application/json": {
2596
+ "schema": {
2597
+ "type": "object",
2598
+ "required": [
2599
+ "state",
2600
+ "why"
2601
+ ],
2602
+ "properties": {
2603
+ "state": {
2604
+ "type": "string"
2605
+ },
2606
+ "why": {
2607
+ "type": "string"
2608
+ }
2609
+ }
2610
+ }
2611
+ }
2612
+ }
2613
+ }
2614
+ }
2615
+ },
2616
+ "post": {
2617
+ "summary": "",
2618
+ "x-methods-declared": "any",
2619
+ "responses": {
2620
+ "default": {
2621
+ "description": "not probed: a write needs a request body the contract does not invent"
2622
+ }
2623
+ }
2624
+ }
2625
+ },
2626
+ "/api/version": {
2627
+ "get": {
2628
+ "summary": "",
2629
+ "x-methods-declared": "any",
2630
+ "x-probe": "/api/version",
2631
+ "responses": {
2632
+ "200": {
2633
+ "description": "observed on a fresh project",
2634
+ "content": {
2635
+ "application/json": {
2636
+ "schema": {
2637
+ "type": "object",
2638
+ "required": [
2639
+ "installed",
2640
+ "node",
2641
+ "stale",
2642
+ "surface",
2643
+ "version"
2644
+ ],
2645
+ "properties": {
2646
+ "installed": {},
2647
+ "node": {
2648
+ "type": "string"
2649
+ },
2650
+ "stale": {
2651
+ "type": "string"
2652
+ },
2653
+ "surface": {
2654
+ "type": "string"
2655
+ },
2656
+ "version": {
2657
+ "type": "string"
2658
+ }
2659
+ }
2660
+ }
2661
+ }
2662
+ }
2663
+ }
2664
+ }
2665
+ },
2666
+ "post": {
2667
+ "summary": "",
2668
+ "x-methods-declared": "any",
2669
+ "responses": {
2670
+ "default": {
2671
+ "description": "not probed: a write needs a request body the contract does not invent"
2672
+ }
2673
+ }
2674
+ }
2675
+ },
2676
+ "/api/view": {
2677
+ "post": {
2678
+ "summary": "",
2679
+ "x-methods-declared": "explicit",
2680
+ "responses": {
2681
+ "default": {
2682
+ "description": "not probed: a write needs a request body the contract does not invent"
2683
+ }
2684
+ }
2685
+ }
2686
+ },
2687
+ "/api/views": {
2688
+ "get": {
2689
+ "summary": "",
2690
+ "x-methods-declared": "explicit",
2691
+ "x-probe": "/api/views",
2692
+ "responses": {
2693
+ "200": {
2694
+ "description": "observed on a fresh project",
2695
+ "content": {
2696
+ "application/json": {
2697
+ "schema": {
2698
+ "type": "object",
2699
+ "required": [
2700
+ "state"
2701
+ ],
2702
+ "properties": {
2703
+ "state": {
2704
+ "type": "string"
2705
+ }
2706
+ }
2707
+ }
2708
+ }
2709
+ }
2710
+ }
2711
+ }
2712
+ }
2713
+ },
2714
+ "/api/work": {
2715
+ "get": {
2716
+ "summary": "",
2717
+ "x-methods-declared": "any",
2718
+ "x-probe": "/api/work",
2719
+ "responses": {
2720
+ "200": {
2721
+ "description": "observed on a fresh project",
2722
+ "content": {
2723
+ "application/json": {
2724
+ "schema": {
2725
+ "type": "object",
2726
+ "required": [
2727
+ "decisions",
2728
+ "entries",
2729
+ "execution",
2730
+ "health",
2731
+ "measurement",
2732
+ "observedAt",
2733
+ "projectId",
2734
+ "projectName",
2735
+ "revision",
2736
+ "schemaVersion",
2737
+ "sessions",
2738
+ "simplification",
2739
+ "sources",
2740
+ "tasks"
2741
+ ],
2742
+ "properties": {
2743
+ "decisions": {
2744
+ "type": "array",
2745
+ "items": {
2746
+ "type": "object"
2747
+ }
2748
+ },
2749
+ "entries": {
2750
+ "type": "array",
2751
+ "items": {
2752
+ "type": "object"
2753
+ }
2754
+ },
2755
+ "execution": {
2756
+ "type": "object",
2757
+ "required": [
2758
+ "enabled",
2759
+ "reason"
2760
+ ],
2761
+ "properties": {
2762
+ "enabled": {
2763
+ "type": "boolean"
2764
+ },
2765
+ "reason": {
2766
+ "type": "string"
2767
+ }
2768
+ }
2769
+ },
2770
+ "health": {
2771
+ "type": "string"
2772
+ },
2773
+ "measurement": {
2774
+ "type": "object",
2775
+ "required": [
2776
+ "cohorts",
2777
+ "observation",
2778
+ "schemaVersion"
2779
+ ],
2780
+ "properties": {
2781
+ "cohorts": {
2782
+ "type": "array"
2783
+ },
2784
+ "observation": {
2785
+ "type": "string"
2786
+ },
2787
+ "schemaVersion": {
2788
+ "type": "number"
2789
+ }
2790
+ }
2791
+ },
2792
+ "observedAt": {
2793
+ "type": "string"
2794
+ },
2795
+ "projectId": {
2796
+ "type": "string"
2797
+ },
2798
+ "projectName": {
2799
+ "type": "string"
2800
+ },
2801
+ "revision": {
2802
+ "type": "string"
2803
+ },
2804
+ "schemaVersion": {
2805
+ "type": "number"
2806
+ },
2807
+ "sessions": {
2808
+ "type": "array"
2809
+ },
2810
+ "simplification": {
2811
+ "type": "object",
2812
+ "required": [
2813
+ "automaticAuthorityChanges",
2814
+ "cohorts"
2815
+ ],
2816
+ "properties": {
2817
+ "automaticAuthorityChanges": {
2818
+ "type": "boolean"
2819
+ },
2820
+ "cohorts": {
2821
+ "type": "array"
2822
+ }
2823
+ }
2824
+ },
2825
+ "sources": {
2826
+ "type": "array",
2827
+ "items": {
2828
+ "type": "object"
2829
+ }
2830
+ },
2831
+ "tasks": {
2832
+ "type": "array"
2833
+ }
2834
+ }
2835
+ }
2836
+ }
2837
+ }
2838
+ }
2839
+ }
2840
+ },
2841
+ "post": {
2842
+ "summary": "",
2843
+ "x-methods-declared": "any",
2844
+ "responses": {
2845
+ "default": {
2846
+ "description": "not probed: a write needs a request body the contract does not invent"
2847
+ }
2848
+ }
2849
+ }
2850
+ },
2851
+ "/api/work/publication": {
2852
+ "get": {
2853
+ "summary": "",
2854
+ "x-methods-declared": "any",
2855
+ "x-probe": "/api/work/publication",
2856
+ "responses": {
2857
+ "405": {
2858
+ "description": "observed on a fresh project",
2859
+ "content": {
2860
+ "application/json": {
2861
+ "schema": {
2862
+ "type": "object",
2863
+ "required": [
2864
+ "error"
2865
+ ],
2866
+ "properties": {
2867
+ "error": {
2868
+ "type": "string"
2869
+ }
2870
+ }
2871
+ }
2872
+ }
2873
+ }
2874
+ }
2875
+ }
2876
+ },
2877
+ "post": {
2878
+ "summary": "",
2879
+ "x-methods-declared": "any",
2880
+ "responses": {
2881
+ "default": {
2882
+ "description": "not probed: a write needs a request body the contract does not invent"
2883
+ }
2884
+ }
2885
+ }
2886
+ },
2887
+ "/api/work/publication-preview": {
2888
+ "get": {
2889
+ "summary": "",
2890
+ "x-methods-declared": "any",
2891
+ "x-probe": "/api/work/publication-preview",
2892
+ "responses": {
2893
+ "409": {
2894
+ "description": "observed on a fresh project",
2895
+ "content": {
2896
+ "application/json": {
2897
+ "schema": {
2898
+ "type": "object",
2899
+ "required": [
2900
+ "error"
2901
+ ],
2902
+ "properties": {
2903
+ "error": {
2904
+ "type": "string"
2905
+ }
2906
+ }
2907
+ }
2908
+ }
2909
+ }
2910
+ }
2911
+ }
2912
+ },
2913
+ "post": {
2914
+ "summary": "",
2915
+ "x-methods-declared": "any",
2916
+ "responses": {
2917
+ "default": {
2918
+ "description": "not probed: a write needs a request body the contract does not invent"
2919
+ }
2920
+ }
2921
+ }
2922
+ },
2923
+ "/api/work/readiness": {
2924
+ "get": {
2925
+ "summary": "",
2926
+ "x-methods-declared": "any",
2927
+ "x-probe": "/api/work/readiness",
2928
+ "responses": {
2929
+ "404": {
2930
+ "description": "observed on a fresh project",
2931
+ "content": {
2932
+ "application/json": {
2933
+ "schema": {
2934
+ "type": "object",
2935
+ "required": [
2936
+ "error"
2937
+ ],
2938
+ "properties": {
2939
+ "error": {
2940
+ "type": "string"
2941
+ }
2942
+ }
2943
+ }
2944
+ }
2945
+ }
2946
+ }
2947
+ }
2948
+ },
2949
+ "post": {
2950
+ "summary": "",
2951
+ "x-methods-declared": "any",
2952
+ "responses": {
2953
+ "default": {
2954
+ "description": "not probed: a write needs a request body the contract does not invent"
2955
+ }
2956
+ }
2957
+ }
2958
+ },
2959
+ "/api/work/readiness/run-gate": {
2960
+ "get": {
2961
+ "summary": "",
2962
+ "x-methods-declared": "any",
2963
+ "x-probe": "/api/work/readiness/run-gate",
2964
+ "responses": {
2965
+ "405": {
2966
+ "description": "observed on a fresh project",
2967
+ "content": {
2968
+ "application/json": {
2969
+ "schema": {
2970
+ "type": "object",
2971
+ "required": [
2972
+ "error"
2973
+ ],
2974
+ "properties": {
2975
+ "error": {
2976
+ "type": "string"
2977
+ }
2978
+ }
2979
+ }
2980
+ }
2981
+ }
2982
+ }
2983
+ }
2984
+ },
2985
+ "post": {
2986
+ "summary": "",
2987
+ "x-methods-declared": "any",
2988
+ "responses": {
2989
+ "default": {
2990
+ "description": "not probed: a write needs a request body the contract does not invent"
2991
+ }
2992
+ }
2993
+ }
2994
+ }
2995
+ }
2996
+ }