rohitsar567 commited on
Commit
853868a
Β·
verified Β·
1 Parent(s): 4fa18fc

Deploy: Stack A (NIM brain + Maverick judge + Sarvam voice). D-019.

Browse files
Files changed (2) hide show
  1. 40-data/llm_health.json +132 -132
  2. backend/main.py +52 -22
40-data/llm_health.json CHANGED
@@ -1,22 +1,16 @@
1
  {
2
- "updated_at": "2026-05-15T01:46:37Z",
3
  "models": {
4
  "qwen/qwen3-next-80b-a3b-instruct": {
5
  "model": "qwen/qwen3-next-80b-a3b-instruct",
6
  "status": "healthy",
7
- "last_success_at": "2026-05-15T01:46:37Z",
8
  "last_failure_at": null,
9
  "last_error": null,
10
- "latency_ms": 2573,
11
  "consecutive_failures": 0,
12
- "tested_at": "2026-05-15T01:46:37Z",
13
  "probe_history": [
14
- {
15
- "ok": true,
16
- "latency_ms": 282,
17
- "ts": "2026-05-15T01:33:21Z",
18
- "src": "probe"
19
- },
20
  {
21
  "ok": true,
22
  "latency_ms": 458,
@@ -40,6 +34,12 @@
40
  "latency_ms": 2573,
41
  "ts": "2026-05-15T01:46:37Z",
42
  "src": "probe"
 
 
 
 
 
 
43
  }
44
  ],
45
  "degraded_until_monotonic": 0.0,
@@ -53,18 +53,12 @@
53
  "model": "qwen/qwen3.5-122b-a10b",
54
  "status": "down",
55
  "last_success_at": null,
56
- "last_failure_at": "2026-05-15T01:46:37Z",
57
  "last_error": "timeout",
58
  "latency_ms": null,
59
- "consecutive_failures": 16,
60
- "tested_at": "2026-05-15T01:46:37Z",
61
  "probe_history": [
62
- {
63
- "ok": false,
64
- "latency_ms": 8001,
65
- "ts": "2026-05-15T01:33:21Z",
66
- "src": "probe"
67
- },
68
  {
69
  "ok": false,
70
  "latency_ms": 8003,
@@ -88,6 +82,12 @@
88
  "latency_ms": 8001,
89
  "ts": "2026-05-15T01:46:37Z",
90
  "src": "probe"
 
 
 
 
 
 
91
  }
92
  ],
93
  "degraded_until_monotonic": 0.0,
@@ -101,18 +101,12 @@
101
  "model": "openai/gpt-oss-120b",
102
  "status": "down",
103
  "last_success_at": null,
104
- "last_failure_at": "2026-05-15T01:46:37Z",
105
  "last_error": "empty_content",
106
  "latency_ms": null,
107
- "consecutive_failures": 16,
108
- "tested_at": "2026-05-15T01:46:37Z",
109
  "probe_history": [
110
- {
111
- "ok": false,
112
- "latency_ms": 269,
113
- "ts": "2026-05-15T01:33:21Z",
114
- "src": "probe"
115
- },
116
  {
117
  "ok": false,
118
  "latency_ms": 399,
@@ -136,6 +130,12 @@
136
  "latency_ms": 473,
137
  "ts": "2026-05-15T01:46:37Z",
138
  "src": "probe"
 
 
 
 
 
 
139
  }
140
  ],
141
  "degraded_until_monotonic": 0.0,
@@ -147,20 +147,14 @@
147
  },
148
  "mistralai/mistral-large-3-675b-instruct-2512": {
149
  "model": "mistralai/mistral-large-3-675b-instruct-2512",
150
- "status": "healthy",
151
  "last_success_at": "2026-05-15T01:46:37Z",
152
- "last_failure_at": "2026-05-15T01:27:51Z",
153
- "last_error": null,
154
  "latency_ms": 449,
155
- "consecutive_failures": 0,
156
- "tested_at": "2026-05-15T01:46:37Z",
157
  "probe_history": [
158
- {
159
- "ok": true,
160
- "latency_ms": 378,
161
- "ts": "2026-05-15T01:33:21Z",
162
- "src": "probe"
163
- },
164
  {
165
  "ok": true,
166
  "latency_ms": 709,
@@ -184,6 +178,12 @@
184
  "latency_ms": 449,
185
  "ts": "2026-05-15T01:46:37Z",
186
  "src": "probe"
 
 
 
 
 
 
187
  }
188
  ],
189
  "degraded_until_monotonic": 0.0,
@@ -196,19 +196,13 @@
196
  "nvidia/llama-3.3-nemotron-super-49b-v1.5": {
197
  "model": "nvidia/llama-3.3-nemotron-super-49b-v1.5",
198
  "status": "healthy",
199
- "last_success_at": "2026-05-15T01:46:37Z",
200
  "last_failure_at": "2026-05-15T01:24:45Z",
201
  "last_error": null,
202
- "latency_ms": 307,
203
  "consecutive_failures": 0,
204
- "tested_at": "2026-05-15T01:46:37Z",
205
  "probe_history": [
206
- {
207
- "ok": true,
208
- "latency_ms": 359,
209
- "ts": "2026-05-15T01:33:21Z",
210
- "src": "probe"
211
- },
212
  {
213
  "ok": true,
214
  "latency_ms": 4820,
@@ -232,6 +226,12 @@
232
  "latency_ms": 307,
233
  "ts": "2026-05-15T01:46:37Z",
234
  "src": "probe"
 
 
 
 
 
 
235
  }
236
  ],
237
  "degraded_until_monotonic": 0.0,
@@ -244,19 +244,13 @@
244
  "meta/llama-3.3-70b-instruct": {
245
  "model": "meta/llama-3.3-70b-instruct",
246
  "status": "healthy",
247
- "last_success_at": "2026-05-15T01:46:37Z",
248
  "last_failure_at": "2026-05-15T01:41:07Z",
249
  "last_error": null,
250
- "latency_ms": 210,
251
  "consecutive_failures": 0,
252
- "tested_at": "2026-05-15T01:46:37Z",
253
  "probe_history": [
254
- {
255
- "ok": true,
256
- "latency_ms": 1223,
257
- "ts": "2026-05-15T01:33:21Z",
258
- "src": "probe"
259
- },
260
  {
261
  "ok": true,
262
  "latency_ms": 511,
@@ -280,6 +274,12 @@
280
  "latency_ms": 210,
281
  "ts": "2026-05-15T01:46:37Z",
282
  "src": "probe"
 
 
 
 
 
 
283
  }
284
  ],
285
  "degraded_until_monotonic": 0.0,
@@ -293,18 +293,12 @@
293
  "model": "deepseek-ai/deepseek-v4-pro",
294
  "status": "down",
295
  "last_success_at": null,
296
- "last_failure_at": "2026-05-15T01:46:37Z",
297
  "last_error": "timeout",
298
  "latency_ms": null,
299
- "consecutive_failures": 16,
300
- "tested_at": "2026-05-15T01:46:37Z",
301
  "probe_history": [
302
- {
303
- "ok": false,
304
- "latency_ms": 8001,
305
- "ts": "2026-05-15T01:33:21Z",
306
- "src": "probe"
307
- },
308
  {
309
  "ok": false,
310
  "latency_ms": 8002,
@@ -328,6 +322,12 @@
328
  "latency_ms": 8001,
329
  "ts": "2026-05-15T01:46:37Z",
330
  "src": "probe"
 
 
 
 
 
 
331
  }
332
  ],
333
  "degraded_until_monotonic": 0.0,
@@ -341,18 +341,12 @@
341
  "model": "nvidia/nemotron-3-nano-30b-a3b",
342
  "status": "down",
343
  "last_success_at": null,
344
- "last_failure_at": "2026-05-15T01:46:37Z",
345
  "last_error": "empty_content",
346
  "latency_ms": null,
347
- "consecutive_failures": 16,
348
- "tested_at": "2026-05-15T01:46:37Z",
349
  "probe_history": [
350
- {
351
- "ok": false,
352
- "latency_ms": 1730,
353
- "ts": "2026-05-15T01:33:21Z",
354
- "src": "probe"
355
- },
356
  {
357
  "ok": false,
358
  "latency_ms": 267,
@@ -376,6 +370,12 @@
376
  "latency_ms": 268,
377
  "ts": "2026-05-15T01:46:37Z",
378
  "src": "probe"
 
 
 
 
 
 
379
  }
380
  ],
381
  "degraded_until_monotonic": 0.0,
@@ -389,18 +389,12 @@
389
  "model": "deepseek-ai/deepseek-v4-flash",
390
  "status": "down",
391
  "last_success_at": null,
392
- "last_failure_at": "2026-05-15T01:46:37Z",
393
  "last_error": "timeout",
394
  "latency_ms": null,
395
- "consecutive_failures": 16,
396
- "tested_at": "2026-05-15T01:46:37Z",
397
  "probe_history": [
398
- {
399
- "ok": false,
400
- "latency_ms": 8002,
401
- "ts": "2026-05-15T01:33:21Z",
402
- "src": "probe"
403
- },
404
  {
405
  "ok": false,
406
  "latency_ms": 8002,
@@ -424,6 +418,12 @@
424
  "latency_ms": 8002,
425
  "ts": "2026-05-15T01:46:37Z",
426
  "src": "probe"
 
 
 
 
 
 
427
  }
428
  ],
429
  "degraded_until_monotonic": 0.0,
@@ -437,18 +437,12 @@
437
  "model": "moonshotai/kimi-k2-instruct-0905",
438
  "status": "down",
439
  "last_success_at": null,
440
- "last_failure_at": "2026-05-15T01:46:37Z",
441
  "last_error": "http_404",
442
  "latency_ms": null,
443
- "consecutive_failures": 16,
444
- "tested_at": "2026-05-15T01:46:37Z",
445
  "probe_history": [
446
- {
447
- "ok": false,
448
- "latency_ms": 92,
449
- "ts": "2026-05-15T01:33:21Z",
450
- "src": "probe"
451
- },
452
  {
453
  "ok": false,
454
  "latency_ms": 82,
@@ -472,6 +466,12 @@
472
  "latency_ms": 84,
473
  "ts": "2026-05-15T01:46:37Z",
474
  "src": "probe"
 
 
 
 
 
 
475
  }
476
  ],
477
  "degraded_until_monotonic": 0.0,
@@ -485,18 +485,12 @@
485
  "model": "minimaxai/minimax-m2.5",
486
  "status": "down",
487
  "last_success_at": null,
488
- "last_failure_at": "2026-05-15T01:46:37Z",
489
  "last_error": "http_410",
490
  "latency_ms": null,
491
- "consecutive_failures": 16,
492
- "tested_at": "2026-05-15T01:46:37Z",
493
  "probe_history": [
494
- {
495
- "ok": false,
496
- "latency_ms": 32,
497
- "ts": "2026-05-15T01:33:21Z",
498
- "src": "probe"
499
- },
500
  {
501
  "ok": false,
502
  "latency_ms": 30,
@@ -520,6 +514,12 @@
520
  "latency_ms": 31,
521
  "ts": "2026-05-15T01:46:37Z",
522
  "src": "probe"
 
 
 
 
 
 
523
  }
524
  ],
525
  "degraded_until_monotonic": 0.0,
@@ -532,19 +532,13 @@
532
  "meta/llama-4-maverick-17b-128e-instruct": {
533
  "model": "meta/llama-4-maverick-17b-128e-instruct",
534
  "status": "healthy",
535
- "last_success_at": "2026-05-15T01:46:37Z",
536
  "last_failure_at": "2026-05-14T01:03:07Z",
537
  "last_error": null,
538
- "latency_ms": 309,
539
  "consecutive_failures": 0,
540
- "tested_at": "2026-05-15T01:46:37Z",
541
  "probe_history": [
542
- {
543
- "ok": true,
544
- "latency_ms": 1087,
545
- "ts": "2026-05-15T01:33:21Z",
546
- "src": "probe"
547
- },
548
  {
549
  "ok": true,
550
  "latency_ms": 282,
@@ -568,6 +562,12 @@
568
  "latency_ms": 309,
569
  "ts": "2026-05-15T01:46:37Z",
570
  "src": "probe"
 
 
 
 
 
 
571
  }
572
  ],
573
  "degraded_until_monotonic": 0.0,
@@ -579,20 +579,14 @@
579
  },
580
  "openrouter:openai/gpt-oss-120b": {
581
  "model": "openrouter:openai/gpt-oss-120b",
582
- "status": "healthy",
583
  "last_success_at": "2026-05-15T01:46:37Z",
584
- "last_failure_at": "2026-05-15T01:38:54Z",
585
- "last_error": null,
586
  "latency_ms": 1349,
587
- "consecutive_failures": 0,
588
- "tested_at": "2026-05-15T01:46:37Z",
589
  "probe_history": [
590
- {
591
- "ok": false,
592
- "latency_ms": 912,
593
- "ts": "2026-05-15T01:33:21Z",
594
- "src": "probe"
595
- },
596
  {
597
  "ok": false,
598
  "latency_ms": 891,
@@ -616,31 +610,31 @@
616
  "latency_ms": 1349,
617
  "ts": "2026-05-15T01:46:37Z",
618
  "src": "probe"
 
 
 
 
 
 
619
  }
620
  ],
621
  "degraded_until_monotonic": 0.0,
622
  "credits_remaining": 0.0,
623
  "credits_unit": "usd_balance",
624
  "credits_reset_at": null,
625
- "credits_observed_at": 4360.7749065,
626
  "credits_low_water": 0.05
627
  },
628
  "groq:llama-3.3-70b-versatile": {
629
  "model": "groq:llama-3.3-70b-versatile",
630
  "status": "healthy",
631
- "last_success_at": "2026-05-15T01:46:37Z",
632
  "last_failure_at": null,
633
  "last_error": null,
634
- "latency_ms": 157,
635
  "consecutive_failures": 0,
636
- "tested_at": "2026-05-15T01:46:37Z",
637
  "probe_history": [
638
- {
639
- "ok": true,
640
- "latency_ms": 332,
641
- "ts": "2026-05-15T01:33:21Z",
642
- "src": "probe"
643
- },
644
  {
645
  "ok": true,
646
  "latency_ms": 154,
@@ -664,6 +658,12 @@
664
  "latency_ms": 157,
665
  "ts": "2026-05-15T01:46:37Z",
666
  "src": "probe"
 
 
 
 
 
 
667
  }
668
  ],
669
  "degraded_until_monotonic": 0.0,
 
1
  {
2
+ "updated_at": "2026-05-15T01:52:30Z",
3
  "models": {
4
  "qwen/qwen3-next-80b-a3b-instruct": {
5
  "model": "qwen/qwen3-next-80b-a3b-instruct",
6
  "status": "healthy",
7
+ "last_success_at": "2026-05-15T01:52:30Z",
8
  "last_failure_at": null,
9
  "last_error": null,
10
+ "latency_ms": 1208,
11
  "consecutive_failures": 0,
12
+ "tested_at": "2026-05-15T01:52:30Z",
13
  "probe_history": [
 
 
 
 
 
 
14
  {
15
  "ok": true,
16
  "latency_ms": 458,
 
34
  "latency_ms": 2573,
35
  "ts": "2026-05-15T01:46:37Z",
36
  "src": "probe"
37
+ },
38
+ {
39
+ "ok": true,
40
+ "latency_ms": 1208,
41
+ "ts": "2026-05-15T01:52:30Z",
42
+ "src": "probe"
43
  }
44
  ],
45
  "degraded_until_monotonic": 0.0,
 
53
  "model": "qwen/qwen3.5-122b-a10b",
54
  "status": "down",
55
  "last_success_at": null,
56
+ "last_failure_at": "2026-05-15T01:52:30Z",
57
  "last_error": "timeout",
58
  "latency_ms": null,
59
+ "consecutive_failures": 17,
60
+ "tested_at": "2026-05-15T01:52:30Z",
61
  "probe_history": [
 
 
 
 
 
 
62
  {
63
  "ok": false,
64
  "latency_ms": 8003,
 
82
  "latency_ms": 8001,
83
  "ts": "2026-05-15T01:46:37Z",
84
  "src": "probe"
85
+ },
86
+ {
87
+ "ok": false,
88
+ "latency_ms": 8001,
89
+ "ts": "2026-05-15T01:52:30Z",
90
+ "src": "probe"
91
  }
92
  ],
93
  "degraded_until_monotonic": 0.0,
 
101
  "model": "openai/gpt-oss-120b",
102
  "status": "down",
103
  "last_success_at": null,
104
+ "last_failure_at": "2026-05-15T01:52:30Z",
105
  "last_error": "empty_content",
106
  "latency_ms": null,
107
+ "consecutive_failures": 17,
108
+ "tested_at": "2026-05-15T01:52:30Z",
109
  "probe_history": [
 
 
 
 
 
 
110
  {
111
  "ok": false,
112
  "latency_ms": 399,
 
130
  "latency_ms": 473,
131
  "ts": "2026-05-15T01:46:37Z",
132
  "src": "probe"
133
+ },
134
+ {
135
+ "ok": false,
136
+ "latency_ms": 253,
137
+ "ts": "2026-05-15T01:52:30Z",
138
+ "src": "probe"
139
  }
140
  ],
141
  "degraded_until_monotonic": 0.0,
 
147
  },
148
  "mistralai/mistral-large-3-675b-instruct-2512": {
149
  "model": "mistralai/mistral-large-3-675b-instruct-2512",
150
+ "status": "degraded",
151
  "last_success_at": "2026-05-15T01:46:37Z",
152
+ "last_failure_at": "2026-05-15T01:52:30Z",
153
+ "last_error": "timeout",
154
  "latency_ms": 449,
155
+ "consecutive_failures": 1,
156
+ "tested_at": "2026-05-15T01:52:30Z",
157
  "probe_history": [
 
 
 
 
 
 
158
  {
159
  "ok": true,
160
  "latency_ms": 709,
 
178
  "latency_ms": 449,
179
  "ts": "2026-05-15T01:46:37Z",
180
  "src": "probe"
181
+ },
182
+ {
183
+ "ok": false,
184
+ "latency_ms": 8002,
185
+ "ts": "2026-05-15T01:52:30Z",
186
+ "src": "probe"
187
  }
188
  ],
189
  "degraded_until_monotonic": 0.0,
 
196
  "nvidia/llama-3.3-nemotron-super-49b-v1.5": {
197
  "model": "nvidia/llama-3.3-nemotron-super-49b-v1.5",
198
  "status": "healthy",
199
+ "last_success_at": "2026-05-15T01:52:30Z",
200
  "last_failure_at": "2026-05-15T01:24:45Z",
201
  "last_error": null,
202
+ "latency_ms": 349,
203
  "consecutive_failures": 0,
204
+ "tested_at": "2026-05-15T01:52:30Z",
205
  "probe_history": [
 
 
 
 
 
 
206
  {
207
  "ok": true,
208
  "latency_ms": 4820,
 
226
  "latency_ms": 307,
227
  "ts": "2026-05-15T01:46:37Z",
228
  "src": "probe"
229
+ },
230
+ {
231
+ "ok": true,
232
+ "latency_ms": 349,
233
+ "ts": "2026-05-15T01:52:30Z",
234
+ "src": "probe"
235
  }
236
  ],
237
  "degraded_until_monotonic": 0.0,
 
244
  "meta/llama-3.3-70b-instruct": {
245
  "model": "meta/llama-3.3-70b-instruct",
246
  "status": "healthy",
247
+ "last_success_at": "2026-05-15T01:52:30Z",
248
  "last_failure_at": "2026-05-15T01:41:07Z",
249
  "last_error": null,
250
+ "latency_ms": 212,
251
  "consecutive_failures": 0,
252
+ "tested_at": "2026-05-15T01:52:30Z",
253
  "probe_history": [
 
 
 
 
 
 
254
  {
255
  "ok": true,
256
  "latency_ms": 511,
 
274
  "latency_ms": 210,
275
  "ts": "2026-05-15T01:46:37Z",
276
  "src": "probe"
277
+ },
278
+ {
279
+ "ok": true,
280
+ "latency_ms": 212,
281
+ "ts": "2026-05-15T01:52:30Z",
282
+ "src": "probe"
283
  }
284
  ],
285
  "degraded_until_monotonic": 0.0,
 
293
  "model": "deepseek-ai/deepseek-v4-pro",
294
  "status": "down",
295
  "last_success_at": null,
296
+ "last_failure_at": "2026-05-15T01:52:30Z",
297
  "last_error": "timeout",
298
  "latency_ms": null,
299
+ "consecutive_failures": 17,
300
+ "tested_at": "2026-05-15T01:52:30Z",
301
  "probe_history": [
 
 
 
 
 
 
302
  {
303
  "ok": false,
304
  "latency_ms": 8002,
 
322
  "latency_ms": 8001,
323
  "ts": "2026-05-15T01:46:37Z",
324
  "src": "probe"
325
+ },
326
+ {
327
+ "ok": false,
328
+ "latency_ms": 8003,
329
+ "ts": "2026-05-15T01:52:30Z",
330
+ "src": "probe"
331
  }
332
  ],
333
  "degraded_until_monotonic": 0.0,
 
341
  "model": "nvidia/nemotron-3-nano-30b-a3b",
342
  "status": "down",
343
  "last_success_at": null,
344
+ "last_failure_at": "2026-05-15T01:52:30Z",
345
  "last_error": "empty_content",
346
  "latency_ms": null,
347
+ "consecutive_failures": 17,
348
+ "tested_at": "2026-05-15T01:52:30Z",
349
  "probe_history": [
 
 
 
 
 
 
350
  {
351
  "ok": false,
352
  "latency_ms": 267,
 
370
  "latency_ms": 268,
371
  "ts": "2026-05-15T01:46:37Z",
372
  "src": "probe"
373
+ },
374
+ {
375
+ "ok": false,
376
+ "latency_ms": 263,
377
+ "ts": "2026-05-15T01:52:30Z",
378
+ "src": "probe"
379
  }
380
  ],
381
  "degraded_until_monotonic": 0.0,
 
389
  "model": "deepseek-ai/deepseek-v4-flash",
390
  "status": "down",
391
  "last_success_at": null,
392
+ "last_failure_at": "2026-05-15T01:52:30Z",
393
  "last_error": "timeout",
394
  "latency_ms": null,
395
+ "consecutive_failures": 17,
396
+ "tested_at": "2026-05-15T01:52:30Z",
397
  "probe_history": [
 
 
 
 
 
 
398
  {
399
  "ok": false,
400
  "latency_ms": 8002,
 
418
  "latency_ms": 8002,
419
  "ts": "2026-05-15T01:46:37Z",
420
  "src": "probe"
421
+ },
422
+ {
423
+ "ok": false,
424
+ "latency_ms": 8004,
425
+ "ts": "2026-05-15T01:52:30Z",
426
+ "src": "probe"
427
  }
428
  ],
429
  "degraded_until_monotonic": 0.0,
 
437
  "model": "moonshotai/kimi-k2-instruct-0905",
438
  "status": "down",
439
  "last_success_at": null,
440
+ "last_failure_at": "2026-05-15T01:52:30Z",
441
  "last_error": "http_404",
442
  "latency_ms": null,
443
+ "consecutive_failures": 17,
444
+ "tested_at": "2026-05-15T01:52:30Z",
445
  "probe_history": [
 
 
 
 
 
 
446
  {
447
  "ok": false,
448
  "latency_ms": 82,
 
466
  "latency_ms": 84,
467
  "ts": "2026-05-15T01:46:37Z",
468
  "src": "probe"
469
+ },
470
+ {
471
+ "ok": false,
472
+ "latency_ms": 84,
473
+ "ts": "2026-05-15T01:52:30Z",
474
+ "src": "probe"
475
  }
476
  ],
477
  "degraded_until_monotonic": 0.0,
 
485
  "model": "minimaxai/minimax-m2.5",
486
  "status": "down",
487
  "last_success_at": null,
488
+ "last_failure_at": "2026-05-15T01:52:30Z",
489
  "last_error": "http_410",
490
  "latency_ms": null,
491
+ "consecutive_failures": 17,
492
+ "tested_at": "2026-05-15T01:52:30Z",
493
  "probe_history": [
 
 
 
 
 
 
494
  {
495
  "ok": false,
496
  "latency_ms": 30,
 
514
  "latency_ms": 31,
515
  "ts": "2026-05-15T01:46:37Z",
516
  "src": "probe"
517
+ },
518
+ {
519
+ "ok": false,
520
+ "latency_ms": 29,
521
+ "ts": "2026-05-15T01:52:30Z",
522
+ "src": "probe"
523
  }
524
  ],
525
  "degraded_until_monotonic": 0.0,
 
532
  "meta/llama-4-maverick-17b-128e-instruct": {
533
  "model": "meta/llama-4-maverick-17b-128e-instruct",
534
  "status": "healthy",
535
+ "last_success_at": "2026-05-15T01:52:30Z",
536
  "last_failure_at": "2026-05-14T01:03:07Z",
537
  "last_error": null,
538
+ "latency_ms": 205,
539
  "consecutive_failures": 0,
540
+ "tested_at": "2026-05-15T01:52:30Z",
541
  "probe_history": [
 
 
 
 
 
 
542
  {
543
  "ok": true,
544
  "latency_ms": 282,
 
562
  "latency_ms": 309,
563
  "ts": "2026-05-15T01:46:37Z",
564
  "src": "probe"
565
+ },
566
+ {
567
+ "ok": true,
568
+ "latency_ms": 205,
569
+ "ts": "2026-05-15T01:52:30Z",
570
+ "src": "probe"
571
  }
572
  ],
573
  "degraded_until_monotonic": 0.0,
 
579
  },
580
  "openrouter:openai/gpt-oss-120b": {
581
  "model": "openrouter:openai/gpt-oss-120b",
582
+ "status": "degraded",
583
  "last_success_at": "2026-05-15T01:46:37Z",
584
+ "last_failure_at": "2026-05-15T01:52:30Z",
585
+ "last_error": "empty_content",
586
  "latency_ms": 1349,
587
+ "consecutive_failures": 1,
588
+ "tested_at": "2026-05-15T01:52:30Z",
589
  "probe_history": [
 
 
 
 
 
 
590
  {
591
  "ok": false,
592
  "latency_ms": 891,
 
610
  "latency_ms": 1349,
611
  "ts": "2026-05-15T01:46:37Z",
612
  "src": "probe"
613
+ },
614
+ {
615
+ "ok": false,
616
+ "latency_ms": 1635,
617
+ "ts": "2026-05-15T01:52:30Z",
618
+ "src": "probe"
619
  }
620
  ],
621
  "degraded_until_monotonic": 0.0,
622
  "credits_remaining": 0.0,
623
  "credits_unit": "usd_balance",
624
  "credits_reset_at": null,
625
+ "credits_observed_at": 5039.664027625,
626
  "credits_low_water": 0.05
627
  },
628
  "groq:llama-3.3-70b-versatile": {
629
  "model": "groq:llama-3.3-70b-versatile",
630
  "status": "healthy",
631
+ "last_success_at": "2026-05-15T01:52:30Z",
632
  "last_failure_at": null,
633
  "last_error": null,
634
+ "latency_ms": 247,
635
  "consecutive_failures": 0,
636
+ "tested_at": "2026-05-15T01:52:30Z",
637
  "probe_history": [
 
 
 
 
 
 
638
  {
639
  "ok": true,
640
  "latency_ms": 154,
 
658
  "latency_ms": 157,
659
  "ts": "2026-05-15T01:46:37Z",
660
  "src": "probe"
661
+ },
662
+ {
663
+ "ok": true,
664
+ "latency_ms": 247,
665
+ "ts": "2026-05-15T01:52:30Z",
666
+ "src": "probe"
667
  }
668
  ],
669
  "degraded_until_monotonic": 0.0,
backend/main.py CHANGED
@@ -540,19 +540,30 @@ async def coverage():
540
  total = 0
541
 
542
  # Insurer metadata β€” names + home URLs are curated + verified
543
- # (see eval/verified_urls.json + tools/verify_urls.py)
 
 
544
  insurer_meta = {
545
- "aditya-birla": ("Aditya Birla Health Insurance", "https://www.adityabirlacapital.com/healthinsurance"),
546
- "bajaj-allianz": ("Bajaj Allianz General Insurance", "https://www.bajajallianz.com/"),
547
- "care-health": ("Care Health Insurance", "https://www.careinsurance.com/"),
548
- "hdfc-ergo": ("HDFC ERGO General Insurance", "https://www.hdfcergo.com/"),
549
- "icici-lombard": ("ICICI Lombard General Insurance", "https://www.icicilombard.com/"),
550
- "manipalcigna": ("ManipalCigna Health Insurance", "https://www.manipalcigna.com/"),
551
- "new-india": ("New India Assurance", "https://www.newindia.co.in/"),
552
- "niva-bupa": ("Niva Bupa Health Insurance", "https://www.nivabupa.com/"),
553
- "star-health": ("Star Health & Allied Insurance", "https://www.starhealth.in/"),
554
- "tata-aig": ("Tata AIG General Insurance", "https://www.tataaig.com/"),
555
- "user-upload": ("Your uploaded policies", ""),
 
 
 
 
 
 
 
 
 
556
  }
557
 
558
  # policy -> source_url (verified at download time)
@@ -1154,17 +1165,31 @@ async def policies_all(session_id: Optional[str] = None):
1154
  corpus_url_index = _build_corpus_url_index()
1155
  curated_facts = _load_curated_facts()
1156
 
 
 
 
 
 
1157
  insurer_meta = {
1158
- "aditya-birla": ("Aditya Birla Health Insurance", "https://www.adityabirlacapital.com/healthinsurance"),
1159
- "bajaj-allianz": ("Bajaj Allianz General Insurance", "https://www.bajajallianz.com/"),
1160
- "care-health": ("Care Health Insurance", "https://www.careinsurance.com/"),
1161
- "hdfc-ergo": ("HDFC ERGO General Insurance", "https://www.hdfcergo.com/"),
1162
- "icici-lombard": ("ICICI Lombard General Insurance", "https://www.icicilombard.com/"),
1163
- "manipalcigna": ("ManipalCigna Health Insurance", "https://www.manipalcigna.com/"),
1164
- "new-india": ("New India Assurance", "https://www.newindia.co.in/"),
1165
- "niva-bupa": ("Niva Bupa Health Insurance", "https://www.nivabupa.com/"),
1166
- "star-health": ("Star Health & Allied Insurance", "https://www.starhealth.in/"),
1167
- "tata-aig": ("Tata AIG General Insurance", "https://www.tataaig.com/"),
 
 
 
 
 
 
 
 
 
1168
  }
1169
 
1170
  def _coerce_bool(v):
@@ -1190,6 +1215,11 @@ async def policies_all(session_id: Optional[str] = None):
1190
  data = _merge_curated(data, curated_for_this)
1191
  seen_policy_ids.add(policy_id_local)
1192
  slug = data.get("insurer_slug", "")
 
 
 
 
 
1193
  name, home = insurer_meta.get(slug, (slug, ""))
1194
  # Get insurer reviews if available for the scorecard
1195
  ir = None
 
540
  total = 0
541
 
542
  # Insurer metadata β€” names + home URLs are curated + verified
543
+ # (see eval/verified_urls.json + tools/verify_urls.py).
544
+ # KI-132 (2026-05-15) β€” expanded to all 19 real insurers so /api/coverage
545
+ # also returns proper display names (was 10 of 19).
546
  insurer_meta = {
547
+ "acko": ("Acko Health Insurance", "https://www.acko.com/health-insurance/"),
548
+ "aditya-birla": ("Aditya Birla Health Insurance", "https://www.adityabirlacapital.com/healthinsurance"),
549
+ "bajaj-allianz": ("Bajaj Allianz General Insurance", "https://www.bajajallianz.com/"),
550
+ "care-health": ("Care Health Insurance", "https://www.careinsurance.com/"),
551
+ "cholamandalam": ("Cholamandalam MS General Insurance", "https://www.cholainsurance.com/"),
552
+ "go-digit": ("Go Digit General Insurance", "https://www.godigit.com/"),
553
+ "hdfc-ergo": ("HDFC ERGO General Insurance", "https://www.hdfcergo.com/"),
554
+ "icici-lombard": ("ICICI Lombard General Insurance", "https://www.icicilombard.com/"),
555
+ "iffco-tokio": ("IFFCO Tokio General Insurance", "https://www.iffcotokio.co.in/"),
556
+ "manipalcigna": ("ManipalCigna Health Insurance", "https://www.manipalcigna.com/"),
557
+ "national-insurance": ("National Insurance Company", "https://nationalinsurance.nic.co.in/"),
558
+ "new-india": ("New India Assurance", "https://www.newindia.co.in/"),
559
+ "niva-bupa": ("Niva Bupa Health Insurance", "https://www.nivabupa.com/"),
560
+ "oriental-insurance": ("Oriental Insurance Company", "https://orientalinsurance.org.in/"),
561
+ "reliance-general": ("Reliance General Insurance", "https://www.reliancegeneral.co.in/"),
562
+ "royal-sundaram": ("Royal Sundaram General Insurance", "https://www.royalsundaram.in/"),
563
+ "sbi-general": ("SBI General Insurance", "https://www.sbigeneral.in/"),
564
+ "star-health": ("Star Health & Allied Insurance", "https://www.starhealth.in/"),
565
+ "tata-aig": ("Tata AIG General Insurance", "https://www.tataaig.com/"),
566
+ "user-upload": ("Your uploaded policies", ""),
567
  }
568
 
569
  # policy -> source_url (verified at download time)
 
1165
  corpus_url_index = _build_corpus_url_index()
1166
  curated_facts = _load_curated_facts()
1167
 
1168
+ # KI-132 (2026-05-15) β€” expanded insurer_meta to cover all 19 real
1169
+ # insurers. Previously only 10 had curated display-names + home URLs,
1170
+ # so 9 insurers rendered as raw slugs in the marketplace dropdown
1171
+ # (acko, cholamandalam, go-digit, iffco-tokio, national-insurance,
1172
+ # oriental-insurance, reliance-general, royal-sundaram, sbi-general).
1173
  insurer_meta = {
1174
+ "acko": ("Acko Health Insurance", "https://www.acko.com/health-insurance/"),
1175
+ "aditya-birla": ("Aditya Birla Health Insurance", "https://www.adityabirlacapital.com/healthinsurance"),
1176
+ "bajaj-allianz": ("Bajaj Allianz General Insurance", "https://www.bajajallianz.com/"),
1177
+ "care-health": ("Care Health Insurance", "https://www.careinsurance.com/"),
1178
+ "cholamandalam": ("Cholamandalam MS General Insurance", "https://www.cholainsurance.com/"),
1179
+ "go-digit": ("Go Digit General Insurance", "https://www.godigit.com/"),
1180
+ "hdfc-ergo": ("HDFC ERGO General Insurance", "https://www.hdfcergo.com/"),
1181
+ "icici-lombard": ("ICICI Lombard General Insurance", "https://www.icicilombard.com/"),
1182
+ "iffco-tokio": ("IFFCO Tokio General Insurance", "https://www.iffcotokio.co.in/"),
1183
+ "manipalcigna": ("ManipalCigna Health Insurance", "https://www.manipalcigna.com/"),
1184
+ "national-insurance": ("National Insurance Company", "https://nationalinsurance.nic.co.in/"),
1185
+ "new-india": ("New India Assurance", "https://www.newindia.co.in/"),
1186
+ "niva-bupa": ("Niva Bupa Health Insurance", "https://www.nivabupa.com/"),
1187
+ "oriental-insurance": ("Oriental Insurance Company", "https://orientalinsurance.org.in/"),
1188
+ "reliance-general": ("Reliance General Insurance", "https://www.reliancegeneral.co.in/"),
1189
+ "royal-sundaram": ("Royal Sundaram General Insurance", "https://www.royalsundaram.in/"),
1190
+ "sbi-general": ("SBI General Insurance", "https://www.sbigeneral.in/"),
1191
+ "star-health": ("Star Health & Allied Insurance", "https://www.starhealth.in/"),
1192
+ "tata-aig": ("Tata AIG General Insurance", "https://www.tataaig.com/"),
1193
  }
1194
 
1195
  def _coerce_bool(v):
 
1215
  data = _merge_curated(data, curated_for_this)
1216
  seen_policy_ids.add(policy_id_local)
1217
  slug = data.get("insurer_slug", "")
1218
+ # KI-132 (2026-05-15) β€” regulatory is not an insurer; drop entirely
1219
+ # from the marketplace. IRDAI/NHA docs are still retrieved and cited
1220
+ # in chat answers, they just don't appear as marketplace cards.
1221
+ if slug == "regulatory":
1222
+ continue
1223
  name, home = insurer_meta.get(slug, (slug, ""))
1224
  # Get insurer reviews if available for the scorecard
1225
  ir = None