gnumanth commited on
Commit
22dab59
·
verified ·
1 Parent(s): 29449b8

feat: add NullspanBench 14-system JevBench-style leaderboard (bench.html + bench-data.json)

Browse files
Files changed (4) hide show
  1. bench-data.json +2111 -0
  2. bench.html +1016 -0
  3. engine.py +14 -4
  4. index.html +1 -0
bench-data.json ADDED
@@ -0,0 +1,2111 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "benchmark_name": "NullspanBench (JevBench-Compatible Decision & Extraction Leaderboard)",
3
+ "benchmark_version": "3.0.0-jevbench",
4
+ "draw_id": "S+P (draw v3.0-nullspan-20261019)",
5
+ "timestamp": "2026-10-19T21:55:00Z",
6
+ "n_total_observations": 404,
7
+ "n_open_observations": 336,
8
+ "n_sealed_observations": 68,
9
+ "environment": {
10
+ "os": "Darwin 25.5.0 (arm64)",
11
+ "python": "3.14.8",
12
+ "pytorch": "2.12.1",
13
+ "onnxruntime": "1.31.0",
14
+ "accelerator": "Apple Silicon MPS + CPU"
15
+ },
16
+ "systems": [
17
+ {
18
+ "id": "nullspan-hybrid-router",
19
+ "name": "nullspan-Hybrid (Fast + ONNX Int8)",
20
+ "author": "gnumanth",
21
+ "system_type": "Hybrid System One Router",
22
+ "open_weights": true,
23
+ "params_m": 67.0,
24
+ "footprint_mb": 64.3,
25
+ "base_model": "Zero-Dep Router + gnumanth/nullspan Int8",
26
+ "runtime": "Tiered JS/Python + ONNX Runtime",
27
+ "input_rate_per_1m_usd": 0.0025,
28
+ "output_rate_per_1m_usd": 0.0,
29
+ "n_observations": 404,
30
+ "input_tokens_total": 40812,
31
+ "output_tokens_total": 0,
32
+ "usd_per_1k_decisions": 0.0003,
33
+ "axes": {
34
+ "intelligence": 98.0,
35
+ "intelligence_ci95": [
36
+ 96.5,
37
+ 99.3
38
+ ],
39
+ "calibration": 99.3,
40
+ "speed": 99.8,
41
+ "cost": 93.8
42
+ },
43
+ "capability_score": 98.7,
44
+ "composite_score": 97.7,
45
+ "open_set_score": 100.0,
46
+ "sealed_set_score": 88.2,
47
+ "calibration_details": {
48
+ "null_auroc": 0.99975,
49
+ "null_ece": 0.00809,
50
+ "null_brier": 0.00413
51
+ },
52
+ "latency": {
53
+ "mean_ms": 2.1114,
54
+ "p50_ms": 0.0049,
55
+ "p95_ms": 13.962,
56
+ "p99_ms": 17.1333
57
+ },
58
+ "by_request_type": {
59
+ "span_open": {
60
+ "score": 100.0,
61
+ "n": 181
62
+ },
63
+ "math": {
64
+ "score": 100.0,
65
+ "n": 50
66
+ },
67
+ "choice": {
68
+ "score": 100.0,
69
+ "n": 33
70
+ },
71
+ "noul_open": {
72
+ "score": 100.0,
73
+ "n": 27
74
+ },
75
+ "score": {
76
+ "score": 100.0,
77
+ "n": 48
78
+ },
79
+ "span_sealed": {
80
+ "score": 84.8,
81
+ "n": 33
82
+ },
83
+ "noul_sealed": {
84
+ "score": 90.6,
85
+ "n": 32
86
+ }
87
+ },
88
+ "by_tier_open": {
89
+ "Easy": {
90
+ "score": 100.0,
91
+ "n": 176
92
+ },
93
+ "Judge": {
94
+ "score": 100.0,
95
+ "n": 96
96
+ },
97
+ "Standard": {
98
+ "score": 100.0,
99
+ "n": 64
100
+ }
101
+ },
102
+ "by_tier_sealed": {
103
+ "Standard": {
104
+ "score": 83.3,
105
+ "n": 30
106
+ },
107
+ "Hard": {
108
+ "score": 92.1,
109
+ "n": 38
110
+ }
111
+ },
112
+ "by_domain": {
113
+ "incident_report": {
114
+ "score": 100.0,
115
+ "n": 160
116
+ },
117
+ "compute_ledger": {
118
+ "score": 100.0,
119
+ "n": 144
120
+ },
121
+ "cluster_throughput_comps": {
122
+ "score": 100.0,
123
+ "n": 16
124
+ },
125
+ "edge_traffic_forecast": {
126
+ "score": 100.0,
127
+ "n": 16
128
+ },
129
+ "squad_v2_open_qa": {
130
+ "score": 86.7,
131
+ "n": 60
132
+ },
133
+ "adversarial_stress": {
134
+ "score": 100.0,
135
+ "n": 8
136
+ }
137
+ },
138
+ "official_rank": 1
139
+ },
140
+ {
141
+ "id": "nullspan-zerodep-fast",
142
+ "name": "nullspan-ZeroDep (Fast Engine)",
143
+ "author": "gnumanth",
144
+ "system_type": "Zero-Dep Algorithmic Engine",
145
+ "open_weights": true,
146
+ "params_m": 0.0,
147
+ "footprint_mb": 0.0,
148
+ "base_model": "Deterministic Rule + Lexical Pointer",
149
+ "runtime": "Pure Python / Node / Browser JS",
150
+ "input_rate_per_1m_usd": 0.0008,
151
+ "output_rate_per_1m_usd": 0.0,
152
+ "n_observations": 404,
153
+ "input_tokens_total": 40812,
154
+ "output_tokens_total": 0,
155
+ "usd_per_1k_decisions": 0.0001,
156
+ "axes": {
157
+ "intelligence": 88.6,
158
+ "intelligence_ci95": [
159
+ 85.6,
160
+ 91.6
161
+ ],
162
+ "calibration": 93.8,
163
+ "speed": 99.8,
164
+ "cost": 99.8
165
+ },
166
+ "capability_score": 91.2,
167
+ "composite_score": 95.3,
168
+ "open_set_score": 100.0,
169
+ "sealed_set_score": 32.4,
170
+ "calibration_details": {
171
+ "null_auroc": 0.97364,
172
+ "null_ece": 0.06061,
173
+ "null_brier": 0.06363
174
+ },
175
+ "latency": {
176
+ "mean_ms": 0.0123,
177
+ "p50_ms": 0.0049,
178
+ "p95_ms": 0.0344,
179
+ "p99_ms": 0.0978
180
+ },
181
+ "by_request_type": {
182
+ "span_open": {
183
+ "score": 100.0,
184
+ "n": 181
185
+ },
186
+ "math": {
187
+ "score": 100.0,
188
+ "n": 50
189
+ },
190
+ "choice": {
191
+ "score": 100.0,
192
+ "n": 33
193
+ },
194
+ "noul_open": {
195
+ "score": 100.0,
196
+ "n": 27
197
+ },
198
+ "score": {
199
+ "score": 100.0,
200
+ "n": 48
201
+ },
202
+ "span_sealed": {
203
+ "score": 30.3,
204
+ "n": 33
205
+ },
206
+ "noul_sealed": {
207
+ "score": 28.1,
208
+ "n": 32
209
+ }
210
+ },
211
+ "by_tier_open": {
212
+ "Easy": {
213
+ "score": 100.0,
214
+ "n": 176
215
+ },
216
+ "Judge": {
217
+ "score": 100.0,
218
+ "n": 96
219
+ },
220
+ "Standard": {
221
+ "score": 100.0,
222
+ "n": 64
223
+ }
224
+ },
225
+ "by_tier_sealed": {
226
+ "Standard": {
227
+ "score": 23.3,
228
+ "n": 30
229
+ },
230
+ "Hard": {
231
+ "score": 39.5,
232
+ "n": 38
233
+ }
234
+ },
235
+ "by_domain": {
236
+ "incident_report": {
237
+ "score": 100.0,
238
+ "n": 160
239
+ },
240
+ "compute_ledger": {
241
+ "score": 100.0,
242
+ "n": 144
243
+ },
244
+ "cluster_throughput_comps": {
245
+ "score": 100.0,
246
+ "n": 16
247
+ },
248
+ "edge_traffic_forecast": {
249
+ "score": 100.0,
250
+ "n": 16
251
+ },
252
+ "squad_v2_open_qa": {
253
+ "score": 23.3,
254
+ "n": 60
255
+ },
256
+ "adversarial_stress": {
257
+ "score": 100.0,
258
+ "n": 8
259
+ }
260
+ },
261
+ "official_rank": 2
262
+ },
263
+ {
264
+ "id": "nullspan-67m-fp32",
265
+ "name": "nullspan-67M (PyTorch FP32)",
266
+ "author": "gnumanth",
267
+ "system_type": "System One Encoder (5-Head)",
268
+ "open_weights": true,
269
+ "params_m": 67.0,
270
+ "footprint_mb": 255.8,
271
+ "base_model": "distilbert/distilbert-base-uncased",
272
+ "runtime": "PyTorch MPS/CPU FP32",
273
+ "input_rate_per_1m_usd": 0.015,
274
+ "output_rate_per_1m_usd": 0.0,
275
+ "n_observations": 404,
276
+ "input_tokens_total": 40812,
277
+ "output_tokens_total": 0,
278
+ "usd_per_1k_decisions": 0.0015,
279
+ "axes": {
280
+ "intelligence": 98.8,
281
+ "intelligence_ci95": [
282
+ 97.5,
283
+ 99.8
284
+ ],
285
+ "calibration": 99.7,
286
+ "speed": 66.5,
287
+ "cost": 78.0
288
+ },
289
+ "capability_score": 99.2,
290
+ "composite_score": 83.3,
291
+ "open_set_score": 100.0,
292
+ "sealed_set_score": 92.6,
293
+ "calibration_details": {
294
+ "null_auroc": 0.99995,
295
+ "null_ece": 0.00366,
296
+ "null_brier": 0.00217
297
+ },
298
+ "latency": {
299
+ "mean_ms": 9.6821,
300
+ "p50_ms": 5.5754,
301
+ "p95_ms": 18.0694,
302
+ "p99_ms": 73.0375
303
+ },
304
+ "by_request_type": {
305
+ "span_open": {
306
+ "score": 100.0,
307
+ "n": 181
308
+ },
309
+ "math": {
310
+ "score": 100.0,
311
+ "n": 50
312
+ },
313
+ "choice": {
314
+ "score": 100.0,
315
+ "n": 33
316
+ },
317
+ "noul_open": {
318
+ "score": 100.0,
319
+ "n": 27
320
+ },
321
+ "score": {
322
+ "score": 100.0,
323
+ "n": 48
324
+ },
325
+ "span_sealed": {
326
+ "score": 84.8,
327
+ "n": 33
328
+ },
329
+ "noul_sealed": {
330
+ "score": 100.0,
331
+ "n": 32
332
+ }
333
+ },
334
+ "by_tier_open": {
335
+ "Easy": {
336
+ "score": 100.0,
337
+ "n": 176
338
+ },
339
+ "Judge": {
340
+ "score": 100.0,
341
+ "n": 96
342
+ },
343
+ "Standard": {
344
+ "score": 100.0,
345
+ "n": 64
346
+ }
347
+ },
348
+ "by_tier_sealed": {
349
+ "Standard": {
350
+ "score": 83.3,
351
+ "n": 30
352
+ },
353
+ "Hard": {
354
+ "score": 100.0,
355
+ "n": 38
356
+ }
357
+ },
358
+ "by_domain": {
359
+ "incident_report": {
360
+ "score": 100.0,
361
+ "n": 160
362
+ },
363
+ "compute_ledger": {
364
+ "score": 100.0,
365
+ "n": 144
366
+ },
367
+ "cluster_throughput_comps": {
368
+ "score": 100.0,
369
+ "n": 16
370
+ },
371
+ "edge_traffic_forecast": {
372
+ "score": 100.0,
373
+ "n": 16
374
+ },
375
+ "squad_v2_open_qa": {
376
+ "score": 91.7,
377
+ "n": 60
378
+ },
379
+ "adversarial_stress": {
380
+ "score": 100.0,
381
+ "n": 8
382
+ }
383
+ },
384
+ "official_rank": 3
385
+ },
386
+ {
387
+ "id": "nullspan-67m-onnx-int8",
388
+ "name": "nullspan-67M-Int8 (ONNX WASM/CPU)",
389
+ "author": "gnumanth",
390
+ "system_type": "Quantized ONNX WASM/CPU",
391
+ "open_weights": true,
392
+ "params_m": 67.0,
393
+ "footprint_mb": 64.3,
394
+ "base_model": "gnumanth/nullspan (Int8 Dynamic)",
395
+ "runtime": "ONNX Runtime Int8 (Browser WASM / Edge)",
396
+ "input_rate_per_1m_usd": 0.008,
397
+ "output_rate_per_1m_usd": 0.0,
398
+ "n_observations": 404,
399
+ "input_tokens_total": 40812,
400
+ "output_tokens_total": 0,
401
+ "usd_per_1k_decisions": 0.0008,
402
+ "axes": {
403
+ "intelligence": 98.0,
404
+ "intelligence_ci95": [
405
+ 96.5,
406
+ 99.3
407
+ ],
408
+ "calibration": 99.3,
409
+ "speed": 62.3,
410
+ "cost": 84.2
411
+ },
412
+ "capability_score": 98.7,
413
+ "composite_score": 83.0,
414
+ "open_set_score": 100.0,
415
+ "sealed_set_score": 88.2,
416
+ "calibration_details": {
417
+ "null_auroc": 0.99975,
418
+ "null_ece": 0.00807,
419
+ "null_brier": 0.00413
420
+ },
421
+ "latency": {
422
+ "mean_ms": 13.2888,
423
+ "p50_ms": 12.2679,
424
+ "p95_ms": 18.3104,
425
+ "p99_ms": 22.3046
426
+ },
427
+ "by_request_type": {
428
+ "span_open": {
429
+ "score": 100.0,
430
+ "n": 181
431
+ },
432
+ "math": {
433
+ "score": 100.0,
434
+ "n": 50
435
+ },
436
+ "choice": {
437
+ "score": 100.0,
438
+ "n": 33
439
+ },
440
+ "noul_open": {
441
+ "score": 100.0,
442
+ "n": 27
443
+ },
444
+ "score": {
445
+ "score": 100.0,
446
+ "n": 48
447
+ },
448
+ "span_sealed": {
449
+ "score": 84.8,
450
+ "n": 33
451
+ },
452
+ "noul_sealed": {
453
+ "score": 90.6,
454
+ "n": 32
455
+ }
456
+ },
457
+ "by_tier_open": {
458
+ "Easy": {
459
+ "score": 100.0,
460
+ "n": 176
461
+ },
462
+ "Judge": {
463
+ "score": 100.0,
464
+ "n": 96
465
+ },
466
+ "Standard": {
467
+ "score": 100.0,
468
+ "n": 64
469
+ }
470
+ },
471
+ "by_tier_sealed": {
472
+ "Standard": {
473
+ "score": 83.3,
474
+ "n": 30
475
+ },
476
+ "Hard": {
477
+ "score": 92.1,
478
+ "n": 38
479
+ }
480
+ },
481
+ "by_domain": {
482
+ "incident_report": {
483
+ "score": 100.0,
484
+ "n": 160
485
+ },
486
+ "compute_ledger": {
487
+ "score": 100.0,
488
+ "n": 144
489
+ },
490
+ "cluster_throughput_comps": {
491
+ "score": 100.0,
492
+ "n": 16
493
+ },
494
+ "edge_traffic_forecast": {
495
+ "score": 100.0,
496
+ "n": 16
497
+ },
498
+ "squad_v2_open_qa": {
499
+ "score": 86.7,
500
+ "n": 60
501
+ },
502
+ "adversarial_stress": {
503
+ "score": 100.0,
504
+ "n": 8
505
+ }
506
+ },
507
+ "official_rank": 4
508
+ },
509
+ {
510
+ "id": "nullspan-67m-onnx-fp32",
511
+ "name": "nullspan-67M (ONNX FP32)",
512
+ "author": "gnumanth",
513
+ "system_type": "System One Encoder (ONNX)",
514
+ "open_weights": true,
515
+ "params_m": 67.0,
516
+ "footprint_mb": 255.9,
517
+ "base_model": "gnumanth/nullspan (ONNX Opset 17)",
518
+ "runtime": "ONNX Runtime FP32",
519
+ "input_rate_per_1m_usd": 0.014,
520
+ "output_rate_per_1m_usd": 0.0,
521
+ "n_observations": 404,
522
+ "input_tokens_total": 40812,
523
+ "output_tokens_total": 0,
524
+ "usd_per_1k_decisions": 0.0014,
525
+ "axes": {
526
+ "intelligence": 98.8,
527
+ "intelligence_ci95": [
528
+ 97.5,
529
+ 99.8
530
+ ],
531
+ "calibration": 99.7,
532
+ "speed": 63.0,
533
+ "cost": 78.7
534
+ },
535
+ "capability_score": 99.2,
536
+ "composite_score": 82.1,
537
+ "open_set_score": 100.0,
538
+ "sealed_set_score": 92.6,
539
+ "calibration_details": {
540
+ "null_auroc": 0.99995,
541
+ "null_ece": 0.00366,
542
+ "null_brier": 0.00217
543
+ },
544
+ "latency": {
545
+ "mean_ms": 11.191,
546
+ "p50_ms": 10.8325,
547
+ "p95_ms": 13.9877,
548
+ "p99_ms": 15.5029
549
+ },
550
+ "by_request_type": {
551
+ "span_open": {
552
+ "score": 100.0,
553
+ "n": 181
554
+ },
555
+ "math": {
556
+ "score": 100.0,
557
+ "n": 50
558
+ },
559
+ "choice": {
560
+ "score": 100.0,
561
+ "n": 33
562
+ },
563
+ "noul_open": {
564
+ "score": 100.0,
565
+ "n": 27
566
+ },
567
+ "score": {
568
+ "score": 100.0,
569
+ "n": 48
570
+ },
571
+ "span_sealed": {
572
+ "score": 84.8,
573
+ "n": 33
574
+ },
575
+ "noul_sealed": {
576
+ "score": 100.0,
577
+ "n": 32
578
+ }
579
+ },
580
+ "by_tier_open": {
581
+ "Easy": {
582
+ "score": 100.0,
583
+ "n": 176
584
+ },
585
+ "Judge": {
586
+ "score": 100.0,
587
+ "n": 96
588
+ },
589
+ "Standard": {
590
+ "score": 100.0,
591
+ "n": 64
592
+ }
593
+ },
594
+ "by_tier_sealed": {
595
+ "Standard": {
596
+ "score": 83.3,
597
+ "n": 30
598
+ },
599
+ "Hard": {
600
+ "score": 100.0,
601
+ "n": 38
602
+ }
603
+ },
604
+ "by_domain": {
605
+ "incident_report": {
606
+ "score": 100.0,
607
+ "n": 160
608
+ },
609
+ "compute_ledger": {
610
+ "score": 100.0,
611
+ "n": 144
612
+ },
613
+ "cluster_throughput_comps": {
614
+ "score": 100.0,
615
+ "n": 16
616
+ },
617
+ "edge_traffic_forecast": {
618
+ "score": 100.0,
619
+ "n": 16
620
+ },
621
+ "squad_v2_open_qa": {
622
+ "score": 91.7,
623
+ "n": 60
624
+ },
625
+ "adversarial_stress": {
626
+ "score": 100.0,
627
+ "n": 8
628
+ }
629
+ },
630
+ "official_rank": 5
631
+ },
632
+ {
633
+ "id": "gpt-5.4-nano-json",
634
+ "name": "gpt-5.4-nano (JSON Decoder \u00b7 API)",
635
+ "author": "OpenAI (Ref)",
636
+ "system_type": "Closed API \u00b7 LLM Decoder",
637
+ "open_weights": false,
638
+ "params_m": null,
639
+ "footprint_mb": null,
640
+ "base_model": "Autoregressive JSON Schema Decoder",
641
+ "runtime": "Hosted Cloud API ( ~38 output tokens/field )",
642
+ "input_rate_per_1m_usd": 0.15,
643
+ "output_rate_per_1m_usd": 0.6,
644
+ "n_observations": 404,
645
+ "input_tokens_total": 40812,
646
+ "output_tokens_total": 15352,
647
+ "usd_per_1k_decisions": 0.038,
648
+ "axes": {
649
+ "intelligence": 95.3,
650
+ "intelligence_ci95": [
651
+ 93.3,
652
+ 97.3
653
+ ],
654
+ "calibration": 87.7,
655
+ "speed": 43.6,
656
+ "cost": 46.5
657
+ },
658
+ "capability_score": 91.5,
659
+ "composite_score": 60.3,
660
+ "open_set_score": 98.2,
661
+ "sealed_set_score": 80.9,
662
+ "calibration_details": {
663
+ "null_auroc": 0.98305,
664
+ "null_ece": 0.16698,
665
+ "null_brier": 0.04202
666
+ },
667
+ "latency": {
668
+ "mean_ms": 420.6462,
669
+ "p50_ms": 415.927,
670
+ "p95_ms": 513.261,
671
+ "p99_ms": 523.846
672
+ },
673
+ "by_request_type": {
674
+ "span_open": {
675
+ "score": 100.0,
676
+ "n": 181
677
+ },
678
+ "math": {
679
+ "score": 100.0,
680
+ "n": 50
681
+ },
682
+ "choice": {
683
+ "score": 100.0,
684
+ "n": 33
685
+ },
686
+ "noul_open": {
687
+ "score": 77.8,
688
+ "n": 27
689
+ },
690
+ "score": {
691
+ "score": 100.0,
692
+ "n": 48
693
+ },
694
+ "span_sealed": {
695
+ "score": 84.8,
696
+ "n": 33
697
+ },
698
+ "noul_sealed": {
699
+ "score": 75.0,
700
+ "n": 32
701
+ }
702
+ },
703
+ "by_tier_open": {
704
+ "Easy": {
705
+ "score": 96.6,
706
+ "n": 176
707
+ },
708
+ "Judge": {
709
+ "score": 100.0,
710
+ "n": 96
711
+ },
712
+ "Standard": {
713
+ "score": 100.0,
714
+ "n": 64
715
+ }
716
+ },
717
+ "by_tier_sealed": {
718
+ "Standard": {
719
+ "score": 83.3,
720
+ "n": 30
721
+ },
722
+ "Hard": {
723
+ "score": 78.9,
724
+ "n": 38
725
+ }
726
+ },
727
+ "by_domain": {
728
+ "incident_report": {
729
+ "score": 98.8,
730
+ "n": 160
731
+ },
732
+ "compute_ledger": {
733
+ "score": 97.2,
734
+ "n": 144
735
+ },
736
+ "cluster_throughput_comps": {
737
+ "score": 100.0,
738
+ "n": 16
739
+ },
740
+ "edge_traffic_forecast": {
741
+ "score": 100.0,
742
+ "n": 16
743
+ },
744
+ "squad_v2_open_qa": {
745
+ "score": 80.0,
746
+ "n": 60
747
+ },
748
+ "adversarial_stress": {
749
+ "score": 87.5,
750
+ "n": 8
751
+ }
752
+ },
753
+ "official_rank": 6
754
+ },
755
+ {
756
+ "id": "claude-haiku-4.5-json",
757
+ "name": "claude-haiku-4.5 (JSON Decoder \u00b7 API)",
758
+ "author": "Anthropic (Ref)",
759
+ "system_type": "Closed API \u00b7 LLM Decoder",
760
+ "open_weights": false,
761
+ "params_m": null,
762
+ "footprint_mb": null,
763
+ "base_model": "Autoregressive JSON Schema Decoder",
764
+ "runtime": "Hosted Cloud API ( ~38 output tokens/field )",
765
+ "input_rate_per_1m_usd": 0.8,
766
+ "output_rate_per_1m_usd": 4.0,
767
+ "n_observations": 404,
768
+ "input_tokens_total": 40812,
769
+ "output_tokens_total": 15352,
770
+ "usd_per_1k_decisions": 0.2328,
771
+ "axes": {
772
+ "intelligence": 96.3,
773
+ "intelligence_ci95": [
774
+ 94.3,
775
+ 98.0
776
+ ],
777
+ "calibration": 88.3,
778
+ "speed": 41.8,
779
+ "cost": 28.7
780
+ },
781
+ "capability_score": 92.3,
782
+ "composite_score": 49.7,
783
+ "open_set_score": 98.8,
784
+ "sealed_set_score": 83.8,
785
+ "calibration_details": {
786
+ "null_auroc": 0.98305,
787
+ "null_ece": 0.16104,
788
+ "null_brier": 0.03632
789
+ },
790
+ "latency": {
791
+ "mean_ms": 586.9228,
792
+ "p50_ms": 588.0296,
793
+ "p95_ms": 715.62,
794
+ "p99_ms": 727.5494
795
+ },
796
+ "by_request_type": {
797
+ "span_open": {
798
+ "score": 100.0,
799
+ "n": 181
800
+ },
801
+ "math": {
802
+ "score": 100.0,
803
+ "n": 50
804
+ },
805
+ "choice": {
806
+ "score": 100.0,
807
+ "n": 33
808
+ },
809
+ "noul_open": {
810
+ "score": 85.2,
811
+ "n": 27
812
+ },
813
+ "score": {
814
+ "score": 100.0,
815
+ "n": 48
816
+ },
817
+ "span_sealed": {
818
+ "score": 84.8,
819
+ "n": 33
820
+ },
821
+ "noul_sealed": {
822
+ "score": 81.2,
823
+ "n": 32
824
+ }
825
+ },
826
+ "by_tier_open": {
827
+ "Easy": {
828
+ "score": 97.7,
829
+ "n": 176
830
+ },
831
+ "Judge": {
832
+ "score": 100.0,
833
+ "n": 96
834
+ },
835
+ "Standard": {
836
+ "score": 100.0,
837
+ "n": 64
838
+ }
839
+ },
840
+ "by_tier_sealed": {
841
+ "Standard": {
842
+ "score": 83.3,
843
+ "n": 30
844
+ },
845
+ "Hard": {
846
+ "score": 84.2,
847
+ "n": 38
848
+ }
849
+ },
850
+ "by_domain": {
851
+ "incident_report": {
852
+ "score": 98.8,
853
+ "n": 160
854
+ },
855
+ "compute_ledger": {
856
+ "score": 98.6,
857
+ "n": 144
858
+ },
859
+ "cluster_throughput_comps": {
860
+ "score": 100.0,
861
+ "n": 16
862
+ },
863
+ "edge_traffic_forecast": {
864
+ "score": 100.0,
865
+ "n": 16
866
+ },
867
+ "squad_v2_open_qa": {
868
+ "score": 83.3,
869
+ "n": 60
870
+ },
871
+ "adversarial_stress": {
872
+ "score": 87.5,
873
+ "n": 8
874
+ }
875
+ },
876
+ "official_rank": 7
877
+ },
878
+ {
879
+ "id": "bge-small-en-v1.5",
880
+ "name": "bge-small-en-v1.5 (Dense Span+Null)",
881
+ "author": "BAAI",
882
+ "system_type": "Open Weights \u00b7 Bi-Encoder",
883
+ "open_weights": true,
884
+ "params_m": 33.4,
885
+ "footprint_mb": 127.3,
886
+ "base_model": "BAAI/bge-small-en-v1.5",
887
+ "runtime": "PyTorch MPS/CPU",
888
+ "input_rate_per_1m_usd": 0.01,
889
+ "output_rate_per_1m_usd": 0.0,
890
+ "n_observations": 404,
891
+ "input_tokens_total": 22327,
892
+ "output_tokens_total": 0,
893
+ "usd_per_1k_decisions": 0.0006,
894
+ "axes": {
895
+ "intelligence": 17.5,
896
+ "intelligence_ci95": [
897
+ 14.3,
898
+ 20.8
899
+ ],
900
+ "calibration": 89.1,
901
+ "speed": 64.7,
902
+ "cost": 87.0
903
+ },
904
+ "capability_score": 53.3,
905
+ "composite_score": 42.0,
906
+ "open_set_score": 20.3,
907
+ "sealed_set_score": 3.7,
908
+ "calibration_details": {
909
+ "null_auroc": 0.69995,
910
+ "null_ece": 0.10648,
911
+ "null_brier": 0.11243
912
+ },
913
+ "latency": {
914
+ "mean_ms": 14.0067,
915
+ "p50_ms": 7.8551,
916
+ "p95_ms": 15.1423,
917
+ "p99_ms": 241.89
918
+ },
919
+ "by_request_type": {
920
+ "span_open": {
921
+ "score": 12.2,
922
+ "n": 181
923
+ },
924
+ "math": {
925
+ "score": 0.0,
926
+ "n": 50
927
+ },
928
+ "choice": {
929
+ "score": 71.2,
930
+ "n": 33
931
+ },
932
+ "noul_open": {
933
+ "score": 44.4,
934
+ "n": 27
935
+ },
936
+ "score": {
937
+ "score": 24.4,
938
+ "n": 48
939
+ },
940
+ "span_sealed": {
941
+ "score": 1.5,
942
+ "n": 33
943
+ },
944
+ "noul_sealed": {
945
+ "score": 3.1,
946
+ "n": 32
947
+ }
948
+ },
949
+ "by_tier_open": {
950
+ "Easy": {
951
+ "score": 19.3,
952
+ "n": 176
953
+ },
954
+ "Judge": {
955
+ "score": 12.2,
956
+ "n": 96
957
+ },
958
+ "Standard": {
959
+ "score": 35.2,
960
+ "n": 64
961
+ }
962
+ },
963
+ "by_tier_sealed": {
964
+ "Standard": {
965
+ "score": 0.0,
966
+ "n": 30
967
+ },
968
+ "Hard": {
969
+ "score": 6.6,
970
+ "n": 38
971
+ }
972
+ },
973
+ "by_domain": {
974
+ "incident_report": {
975
+ "score": 29.9,
976
+ "n": 160
977
+ },
978
+ "compute_ledger": {
979
+ "score": 9.7,
980
+ "n": 144
981
+ },
982
+ "cluster_throughput_comps": {
983
+ "score": 20.0,
984
+ "n": 16
985
+ },
986
+ "edge_traffic_forecast": {
987
+ "score": 20.1,
988
+ "n": 16
989
+ },
990
+ "squad_v2_open_qa": {
991
+ "score": 0.0,
992
+ "n": 60
993
+ },
994
+ "adversarial_stress": {
995
+ "score": 31.2,
996
+ "n": 8
997
+ }
998
+ },
999
+ "official_rank": 8
1000
+ },
1001
+ {
1002
+ "id": "distilbert-base-control",
1003
+ "name": "distilbert-base-control (Raw Control)",
1004
+ "author": "distilbert (control)",
1005
+ "system_type": "Base Model Control (Untuned)",
1006
+ "open_weights": true,
1007
+ "params_m": 66.4,
1008
+ "footprint_mb": 253.2,
1009
+ "base_model": "distilbert/distilbert-base-uncased",
1010
+ "runtime": "PyTorch MPS/CPU",
1011
+ "input_rate_per_1m_usd": 0.015,
1012
+ "output_rate_per_1m_usd": 0.0,
1013
+ "n_observations": 404,
1014
+ "input_tokens_total": 22327,
1015
+ "output_tokens_total": 0,
1016
+ "usd_per_1k_decisions": 0.0008,
1017
+ "axes": {
1018
+ "intelligence": 17.3,
1019
+ "intelligence_ci95": [
1020
+ 14.0,
1021
+ 20.6
1022
+ ],
1023
+ "calibration": 90.0,
1024
+ "speed": 65.3,
1025
+ "cost": 84.2
1026
+ },
1027
+ "capability_score": 53.6,
1028
+ "composite_score": 41.6,
1029
+ "open_set_score": 20.2,
1030
+ "sealed_set_score": 2.9,
1031
+ "calibration_details": {
1032
+ "null_auroc": 0.61378,
1033
+ "null_ece": 0.09306,
1034
+ "null_brier": 0.11257
1035
+ },
1036
+ "latency": {
1037
+ "mean_ms": 7.2241,
1038
+ "p50_ms": 6.9468,
1039
+ "p95_ms": 9.8813,
1040
+ "p99_ms": 17.762
1041
+ },
1042
+ "by_request_type": {
1043
+ "span_open": {
1044
+ "score": 16.0,
1045
+ "n": 181
1046
+ },
1047
+ "math": {
1048
+ "score": 0.0,
1049
+ "n": 50
1050
+ },
1051
+ "choice": {
1052
+ "score": 71.2,
1053
+ "n": 33
1054
+ },
1055
+ "noul_open": {
1056
+ "score": 0.0,
1057
+ "n": 27
1058
+ },
1059
+ "score": {
1060
+ "score": 34.2,
1061
+ "n": 48
1062
+ },
1063
+ "span_sealed": {
1064
+ "score": 3.0,
1065
+ "n": 33
1066
+ },
1067
+ "noul_sealed": {
1068
+ "score": 0.0,
1069
+ "n": 32
1070
+ }
1071
+ },
1072
+ "by_tier_open": {
1073
+ "Easy": {
1074
+ "score": 16.5,
1075
+ "n": 176
1076
+ },
1077
+ "Judge": {
1078
+ "score": 17.1,
1079
+ "n": 96
1080
+ },
1081
+ "Standard": {
1082
+ "score": 35.2,
1083
+ "n": 64
1084
+ }
1085
+ },
1086
+ "by_tier_sealed": {
1087
+ "Standard": {
1088
+ "score": 3.3,
1089
+ "n": 30
1090
+ },
1091
+ "Hard": {
1092
+ "score": 2.6,
1093
+ "n": 38
1094
+ }
1095
+ },
1096
+ "by_domain": {
1097
+ "incident_report": {
1098
+ "score": 24.2,
1099
+ "n": 160
1100
+ },
1101
+ "compute_ledger": {
1102
+ "score": 11.1,
1103
+ "n": 144
1104
+ },
1105
+ "cluster_throughput_comps": {
1106
+ "score": 27.4,
1107
+ "n": 16
1108
+ },
1109
+ "edge_traffic_forecast": {
1110
+ "score": 55.1,
1111
+ "n": 16
1112
+ },
1113
+ "squad_v2_open_qa": {
1114
+ "score": 1.7,
1115
+ "n": 60
1116
+ },
1117
+ "adversarial_stress": {
1118
+ "score": 12.5,
1119
+ "n": 8
1120
+ }
1121
+ },
1122
+ "official_rank": 9
1123
+ },
1124
+ {
1125
+ "id": "all-MiniLM-L12-v2",
1126
+ "name": "all-MiniLM-L12-v2 (Dense Span+Null)",
1127
+ "author": "sentence-transformers",
1128
+ "system_type": "Open Weights \u00b7 Bi-Encoder",
1129
+ "open_weights": true,
1130
+ "params_m": 33.4,
1131
+ "footprint_mb": 127.3,
1132
+ "base_model": "sentence-transformers/all-MiniLM-L12-v2",
1133
+ "runtime": "PyTorch MPS/CPU",
1134
+ "input_rate_per_1m_usd": 0.01,
1135
+ "output_rate_per_1m_usd": 0.0,
1136
+ "n_observations": 404,
1137
+ "input_tokens_total": 22327,
1138
+ "output_tokens_total": 0,
1139
+ "usd_per_1k_decisions": 0.0006,
1140
+ "axes": {
1141
+ "intelligence": 15.1,
1142
+ "intelligence_ci95": [
1143
+ 12.1,
1144
+ 18.5
1145
+ ],
1146
+ "calibration": 74.6,
1147
+ "speed": 65.4,
1148
+ "cost": 87.0
1149
+ },
1150
+ "capability_score": 44.8,
1151
+ "composite_score": 37.6,
1152
+ "open_set_score": 17.2,
1153
+ "sealed_set_score": 5.1,
1154
+ "calibration_details": {
1155
+ "null_auroc": 0.58359,
1156
+ "null_ece": 0.27499,
1157
+ "null_brier": 0.21417
1158
+ },
1159
+ "latency": {
1160
+ "mean_ms": 7.0192,
1161
+ "p50_ms": 6.8944,
1162
+ "p95_ms": 9.5936,
1163
+ "p99_ms": 13.4164
1164
+ },
1165
+ "by_request_type": {
1166
+ "span_open": {
1167
+ "score": 9.4,
1168
+ "n": 181
1169
+ },
1170
+ "math": {
1171
+ "score": 0.0,
1172
+ "n": 50
1173
+ },
1174
+ "choice": {
1175
+ "score": 31.8,
1176
+ "n": 33
1177
+ },
1178
+ "noul_open": {
1179
+ "score": 100.0,
1180
+ "n": 27
1181
+ },
1182
+ "score": {
1183
+ "score": 6.7,
1184
+ "n": 48
1185
+ },
1186
+ "span_sealed": {
1187
+ "score": 1.5,
1188
+ "n": 33
1189
+ },
1190
+ "noul_sealed": {
1191
+ "score": 9.4,
1192
+ "n": 32
1193
+ }
1194
+ },
1195
+ "by_tier_open": {
1196
+ "Easy": {
1197
+ "score": 25.0,
1198
+ "n": 176
1199
+ },
1200
+ "Judge": {
1201
+ "score": 3.3,
1202
+ "n": 96
1203
+ },
1204
+ "Standard": {
1205
+ "score": 16.4,
1206
+ "n": 64
1207
+ }
1208
+ },
1209
+ "by_tier_sealed": {
1210
+ "Standard": {
1211
+ "score": 0.0,
1212
+ "n": 30
1213
+ },
1214
+ "Hard": {
1215
+ "score": 9.2,
1216
+ "n": 38
1217
+ }
1218
+ },
1219
+ "by_domain": {
1220
+ "incident_report": {
1221
+ "score": 19.1,
1222
+ "n": 160
1223
+ },
1224
+ "compute_ledger": {
1225
+ "score": 16.7,
1226
+ "n": 144
1227
+ },
1228
+ "cluster_throughput_comps": {
1229
+ "score": 20.0,
1230
+ "n": 16
1231
+ },
1232
+ "edge_traffic_forecast": {
1233
+ "score": 0.0,
1234
+ "n": 16
1235
+ },
1236
+ "squad_v2_open_qa": {
1237
+ "score": 1.7,
1238
+ "n": 60
1239
+ },
1240
+ "adversarial_stress": {
1241
+ "score": 31.2,
1242
+ "n": 8
1243
+ }
1244
+ },
1245
+ "official_rank": 10
1246
+ },
1247
+ {
1248
+ "id": "all-mpnet-base-v2",
1249
+ "name": "all-mpnet-base-v2 (Dense Span+Null)",
1250
+ "author": "sentence-transformers",
1251
+ "system_type": "Open Weights \u00b7 Bi-Encoder",
1252
+ "open_weights": true,
1253
+ "params_m": 109.5,
1254
+ "footprint_mb": 417.7,
1255
+ "base_model": "sentence-transformers/all-mpnet-base-v2",
1256
+ "runtime": "PyTorch MPS/CPU",
1257
+ "input_rate_per_1m_usd": 0.022,
1258
+ "output_rate_per_1m_usd": 0.0,
1259
+ "n_observations": 404,
1260
+ "input_tokens_total": 22327,
1261
+ "output_tokens_total": 0,
1262
+ "usd_per_1k_decisions": 0.0012,
1263
+ "axes": {
1264
+ "intelligence": 14.1,
1265
+ "intelligence_ci95": [
1266
+ 10.9,
1267
+ 17.5
1268
+ ],
1269
+ "calibration": 72.2,
1270
+ "speed": 62.8,
1271
+ "cost": 80.2
1272
+ },
1273
+ "capability_score": 43.1,
1274
+ "composite_score": 35.3,
1275
+ "open_set_score": 16.2,
1276
+ "sealed_set_score": 3.7,
1277
+ "calibration_details": {
1278
+ "null_auroc": 0.5605,
1279
+ "null_ece": 0.28897,
1280
+ "null_brier": 0.25635
1281
+ },
1282
+ "latency": {
1283
+ "mean_ms": 17.6413,
1284
+ "p50_ms": 11.0976,
1285
+ "p95_ms": 22.5152,
1286
+ "p99_ms": 154.1558
1287
+ },
1288
+ "by_request_type": {
1289
+ "span_open": {
1290
+ "score": 9.4,
1291
+ "n": 181
1292
+ },
1293
+ "math": {
1294
+ "score": 0.0,
1295
+ "n": 50
1296
+ },
1297
+ "choice": {
1298
+ "score": 31.8,
1299
+ "n": 33
1300
+ },
1301
+ "noul_open": {
1302
+ "score": 100.0,
1303
+ "n": 27
1304
+ },
1305
+ "score": {
1306
+ "score": 0.0,
1307
+ "n": 48
1308
+ },
1309
+ "span_sealed": {
1310
+ "score": 1.5,
1311
+ "n": 33
1312
+ },
1313
+ "noul_sealed": {
1314
+ "score": 6.2,
1315
+ "n": 32
1316
+ }
1317
+ },
1318
+ "by_tier_open": {
1319
+ "Easy": {
1320
+ "score": 25.0,
1321
+ "n": 176
1322
+ },
1323
+ "Judge": {
1324
+ "score": 0.0,
1325
+ "n": 96
1326
+ },
1327
+ "Standard": {
1328
+ "score": 16.4,
1329
+ "n": 64
1330
+ }
1331
+ },
1332
+ "by_tier_sealed": {
1333
+ "Standard": {
1334
+ "score": 0.0,
1335
+ "n": 30
1336
+ },
1337
+ "Hard": {
1338
+ "score": 6.6,
1339
+ "n": 38
1340
+ }
1341
+ },
1342
+ "by_domain": {
1343
+ "incident_report": {
1344
+ "score": 19.1,
1345
+ "n": 160
1346
+ },
1347
+ "compute_ledger": {
1348
+ "score": 16.7,
1349
+ "n": 144
1350
+ },
1351
+ "cluster_throughput_comps": {
1352
+ "score": 0.0,
1353
+ "n": 16
1354
+ },
1355
+ "edge_traffic_forecast": {
1356
+ "score": 0.0,
1357
+ "n": 16
1358
+ },
1359
+ "squad_v2_open_qa": {
1360
+ "score": 0.0,
1361
+ "n": 60
1362
+ },
1363
+ "adversarial_stress": {
1364
+ "score": 31.2,
1365
+ "n": 8
1366
+ }
1367
+ },
1368
+ "official_rank": 11
1369
+ },
1370
+ {
1371
+ "id": "paraphrase-albert-small-v2",
1372
+ "name": "paraphrase-albert-small-v2 (Dense Span+Null)",
1373
+ "author": "sentence-transformers",
1374
+ "system_type": "Open Weights \u00b7 Bi-Encoder",
1375
+ "open_weights": true,
1376
+ "params_m": 11.7,
1377
+ "footprint_mb": 44.6,
1378
+ "base_model": "sentence-transformers/paraphrase-albert-small-v2",
1379
+ "runtime": "PyTorch MPS/CPU",
1380
+ "input_rate_per_1m_usd": 0.005,
1381
+ "output_rate_per_1m_usd": 0.0,
1382
+ "n_observations": 404,
1383
+ "input_tokens_total": 22327,
1384
+ "output_tokens_total": 0,
1385
+ "usd_per_1k_decisions": 0.0003,
1386
+ "axes": {
1387
+ "intelligence": 13.1,
1388
+ "intelligence_ci95": [
1389
+ 10.1,
1390
+ 16.1
1391
+ ],
1392
+ "calibration": 77.2,
1393
+ "speed": 66.8,
1394
+ "cost": 93.8
1395
+ },
1396
+ "capability_score": 45.1,
1397
+ "composite_score": 34.8,
1398
+ "open_set_score": 15.3,
1399
+ "sealed_set_score": 2.2,
1400
+ "calibration_details": {
1401
+ "null_auroc": 0.57696,
1402
+ "null_ece": 0.24095,
1403
+ "null_brier": 0.20335
1404
+ },
1405
+ "latency": {
1406
+ "mean_ms": 7.1812,
1407
+ "p50_ms": 5.2236,
1408
+ "p95_ms": 10.6213,
1409
+ "p99_ms": 61.0186
1410
+ },
1411
+ "by_request_type": {
1412
+ "span_open": {
1413
+ "score": 11.0,
1414
+ "n": 181
1415
+ },
1416
+ "math": {
1417
+ "score": 0.0,
1418
+ "n": 50
1419
+ },
1420
+ "choice": {
1421
+ "score": 40.9,
1422
+ "n": 33
1423
+ },
1424
+ "noul_open": {
1425
+ "score": 51.9,
1426
+ "n": 27
1427
+ },
1428
+ "score": {
1429
+ "score": 8.4,
1430
+ "n": 48
1431
+ },
1432
+ "span_sealed": {
1433
+ "score": 1.5,
1434
+ "n": 33
1435
+ },
1436
+ "noul_sealed": {
1437
+ "score": 3.1,
1438
+ "n": 32
1439
+ }
1440
+ },
1441
+ "by_tier_open": {
1442
+ "Easy": {
1443
+ "score": 19.3,
1444
+ "n": 176
1445
+ },
1446
+ "Judge": {
1447
+ "score": 4.2,
1448
+ "n": 96
1449
+ },
1450
+ "Standard": {
1451
+ "score": 21.1,
1452
+ "n": 64
1453
+ }
1454
+ },
1455
+ "by_tier_sealed": {
1456
+ "Standard": {
1457
+ "score": 0.0,
1458
+ "n": 30
1459
+ },
1460
+ "Hard": {
1461
+ "score": 3.9,
1462
+ "n": 38
1463
+ }
1464
+ },
1465
+ "by_domain": {
1466
+ "incident_report": {
1467
+ "score": 21.1,
1468
+ "n": 160
1469
+ },
1470
+ "compute_ledger": {
1471
+ "score": 9.7,
1472
+ "n": 144
1473
+ },
1474
+ "cluster_throughput_comps": {
1475
+ "score": 20.0,
1476
+ "n": 16
1477
+ },
1478
+ "edge_traffic_forecast": {
1479
+ "score": 3.4,
1480
+ "n": 16
1481
+ },
1482
+ "squad_v2_open_qa": {
1483
+ "score": 0.0,
1484
+ "n": 60
1485
+ },
1486
+ "adversarial_stress": {
1487
+ "score": 18.8,
1488
+ "n": 8
1489
+ }
1490
+ },
1491
+ "official_rank": 12
1492
+ },
1493
+ {
1494
+ "id": "paraphrase-MiniLM-L3-v2",
1495
+ "name": "paraphrase-MiniLM-L3-v2 (Dense Span+Null)",
1496
+ "author": "sentence-transformers",
1497
+ "system_type": "Open Weights \u00b7 Bi-Encoder",
1498
+ "open_weights": true,
1499
+ "params_m": 17.4,
1500
+ "footprint_mb": 66.3,
1501
+ "base_model": "sentence-transformers/paraphrase-MiniLM-L3-v2",
1502
+ "runtime": "PyTorch MPS/CPU",
1503
+ "input_rate_per_1m_usd": 0.005,
1504
+ "output_rate_per_1m_usd": 0.0,
1505
+ "n_observations": 404,
1506
+ "input_tokens_total": 22327,
1507
+ "output_tokens_total": 0,
1508
+ "usd_per_1k_decisions": 0.0003,
1509
+ "axes": {
1510
+ "intelligence": 11.3,
1511
+ "intelligence_ci95": [
1512
+ 8.4,
1513
+ 14.0
1514
+ ],
1515
+ "calibration": 73.1,
1516
+ "speed": 70.6,
1517
+ "cost": 93.8
1518
+ },
1519
+ "capability_score": 42.2,
1520
+ "composite_score": 31.5,
1521
+ "open_set_score": 12.9,
1522
+ "sealed_set_score": 3.7,
1523
+ "calibration_details": {
1524
+ "null_auroc": 0.58059,
1525
+ "null_ece": 0.28598,
1526
+ "null_brier": 0.23784
1527
+ },
1528
+ "latency": {
1529
+ "mean_ms": 2.9015,
1530
+ "p50_ms": 2.5864,
1531
+ "p95_ms": 4.2605,
1532
+ "p99_ms": 7.6042
1533
+ },
1534
+ "by_request_type": {
1535
+ "span_open": {
1536
+ "score": 9.7,
1537
+ "n": 181
1538
+ },
1539
+ "math": {
1540
+ "score": 0.0,
1541
+ "n": 50
1542
+ },
1543
+ "choice": {
1544
+ "score": 31.8,
1545
+ "n": 33
1546
+ },
1547
+ "noul_open": {
1548
+ "score": 44.4,
1549
+ "n": 27
1550
+ },
1551
+ "score": {
1552
+ "score": 6.7,
1553
+ "n": 48
1554
+ },
1555
+ "span_sealed": {
1556
+ "score": 1.5,
1557
+ "n": 33
1558
+ },
1559
+ "noul_sealed": {
1560
+ "score": 6.2,
1561
+ "n": 32
1562
+ }
1563
+ },
1564
+ "by_tier_open": {
1565
+ "Easy": {
1566
+ "score": 16.8,
1567
+ "n": 176
1568
+ },
1569
+ "Judge": {
1570
+ "score": 3.3,
1571
+ "n": 96
1572
+ },
1573
+ "Standard": {
1574
+ "score": 16.4,
1575
+ "n": 64
1576
+ }
1577
+ },
1578
+ "by_tier_sealed": {
1579
+ "Standard": {
1580
+ "score": 0.0,
1581
+ "n": 30
1582
+ },
1583
+ "Hard": {
1584
+ "score": 6.6,
1585
+ "n": 38
1586
+ }
1587
+ },
1588
+ "by_domain": {
1589
+ "incident_report": {
1590
+ "score": 17.5,
1591
+ "n": 160
1592
+ },
1593
+ "compute_ledger": {
1594
+ "score": 8.3,
1595
+ "n": 144
1596
+ },
1597
+ "cluster_throughput_comps": {
1598
+ "score": 20.0,
1599
+ "n": 16
1600
+ },
1601
+ "edge_traffic_forecast": {
1602
+ "score": 0.0,
1603
+ "n": 16
1604
+ },
1605
+ "squad_v2_open_qa": {
1606
+ "score": 1.7,
1607
+ "n": 60
1608
+ },
1609
+ "adversarial_stress": {
1610
+ "score": 18.8,
1611
+ "n": 8
1612
+ }
1613
+ },
1614
+ "official_rank": 13
1615
+ },
1616
+ {
1617
+ "id": "all-MiniLM-L6-v2",
1618
+ "name": "all-MiniLM-L6-v2 (Dense Span+Null)",
1619
+ "author": "sentence-transformers",
1620
+ "system_type": "Open Weights \u00b7 Bi-Encoder",
1621
+ "open_weights": true,
1622
+ "params_m": 22.7,
1623
+ "footprint_mb": 86.6,
1624
+ "base_model": "sentence-transformers/all-MiniLM-L6-v2",
1625
+ "runtime": "PyTorch MPS/CPU",
1626
+ "input_rate_per_1m_usd": 0.007,
1627
+ "output_rate_per_1m_usd": 0.0,
1628
+ "n_observations": 404,
1629
+ "input_tokens_total": 22327,
1630
+ "output_tokens_total": 0,
1631
+ "usd_per_1k_decisions": 0.0004,
1632
+ "axes": {
1633
+ "intelligence": 9.9,
1634
+ "intelligence_ci95": [
1635
+ 7.4,
1636
+ 12.6
1637
+ ],
1638
+ "calibration": 72.6,
1639
+ "speed": 68.0,
1640
+ "cost": 91.0
1641
+ },
1642
+ "capability_score": 41.2,
1643
+ "composite_score": 28.5,
1644
+ "open_set_score": 11.2,
1645
+ "sealed_set_score": 3.7,
1646
+ "calibration_details": {
1647
+ "null_auroc": 0.55308,
1648
+ "null_ece": 0.29013,
1649
+ "null_brier": 0.24496
1650
+ },
1651
+ "latency": {
1652
+ "mean_ms": 4.8128,
1653
+ "p50_ms": 4.2002,
1654
+ "p95_ms": 7.2722,
1655
+ "p99_ms": 14.2075
1656
+ },
1657
+ "by_request_type": {
1658
+ "span_open": {
1659
+ "score": 8.3,
1660
+ "n": 181
1661
+ },
1662
+ "math": {
1663
+ "score": 0.0,
1664
+ "n": 50
1665
+ },
1666
+ "choice": {
1667
+ "score": 31.8,
1668
+ "n": 33
1669
+ },
1670
+ "noul_open": {
1671
+ "score": 44.4,
1672
+ "n": 27
1673
+ },
1674
+ "score": {
1675
+ "score": 0.0,
1676
+ "n": 48
1677
+ },
1678
+ "span_sealed": {
1679
+ "score": 1.5,
1680
+ "n": 33
1681
+ },
1682
+ "noul_sealed": {
1683
+ "score": 6.2,
1684
+ "n": 32
1685
+ }
1686
+ },
1687
+ "by_tier_open": {
1688
+ "Easy": {
1689
+ "score": 15.3,
1690
+ "n": 176
1691
+ },
1692
+ "Judge": {
1693
+ "score": 0.0,
1694
+ "n": 96
1695
+ },
1696
+ "Standard": {
1697
+ "score": 16.4,
1698
+ "n": 64
1699
+ }
1700
+ },
1701
+ "by_tier_sealed": {
1702
+ "Standard": {
1703
+ "score": 0.0,
1704
+ "n": 30
1705
+ },
1706
+ "Hard": {
1707
+ "score": 6.6,
1708
+ "n": 38
1709
+ }
1710
+ },
1711
+ "by_domain": {
1712
+ "incident_report": {
1713
+ "score": 19.1,
1714
+ "n": 160
1715
+ },
1716
+ "compute_ledger": {
1717
+ "score": 4.9,
1718
+ "n": 144
1719
+ },
1720
+ "cluster_throughput_comps": {
1721
+ "score": 0.0,
1722
+ "n": 16
1723
+ },
1724
+ "edge_traffic_forecast": {
1725
+ "score": 0.0,
1726
+ "n": 16
1727
+ },
1728
+ "squad_v2_open_qa": {
1729
+ "score": 1.7,
1730
+ "n": 60
1731
+ },
1732
+ "adversarial_stress": {
1733
+ "score": 18.8,
1734
+ "n": 8
1735
+ }
1736
+ },
1737
+ "official_rank": 14
1738
+ }
1739
+ ],
1740
+ "tiers": {
1741
+ "tier_1a_pytorch_fp32": {
1742
+ "id": "nullspan-67m-fp32",
1743
+ "name": "nullspan-67M (PyTorch FP32)",
1744
+ "author": "gnumanth",
1745
+ "system_type": "System One Encoder (5-Head)",
1746
+ "open_weights": true,
1747
+ "params_m": 67.0,
1748
+ "footprint_mb": 255.8,
1749
+ "base_model": "distilbert/distilbert-base-uncased",
1750
+ "runtime": "PyTorch MPS/CPU FP32",
1751
+ "input_rate_per_1m_usd": 0.015,
1752
+ "output_rate_per_1m_usd": 0.0,
1753
+ "n_observations": 404,
1754
+ "input_tokens_total": 40812,
1755
+ "output_tokens_total": 0,
1756
+ "usd_per_1k_decisions": 0.0015,
1757
+ "axes": {
1758
+ "intelligence": 98.8,
1759
+ "intelligence_ci95": [
1760
+ 97.5,
1761
+ 99.8
1762
+ ],
1763
+ "calibration": 99.7,
1764
+ "speed": 66.5,
1765
+ "cost": 78.0
1766
+ },
1767
+ "capability_score": 99.2,
1768
+ "composite_score": 83.3,
1769
+ "open_set_score": 100.0,
1770
+ "sealed_set_score": 92.6,
1771
+ "calibration_details": {
1772
+ "null_auroc": 0.99995,
1773
+ "null_ece": 0.00366,
1774
+ "null_brier": 0.00217
1775
+ },
1776
+ "latency": {
1777
+ "mean_ms": 9.6821,
1778
+ "p50_ms": 5.5754,
1779
+ "p95_ms": 18.0694,
1780
+ "p99_ms": 73.0375
1781
+ },
1782
+ "by_request_type": {
1783
+ "span_open": {
1784
+ "score": 100.0,
1785
+ "n": 181
1786
+ },
1787
+ "math": {
1788
+ "score": 100.0,
1789
+ "n": 50
1790
+ },
1791
+ "choice": {
1792
+ "score": 100.0,
1793
+ "n": 33
1794
+ },
1795
+ "noul_open": {
1796
+ "score": 100.0,
1797
+ "n": 27
1798
+ },
1799
+ "score": {
1800
+ "score": 100.0,
1801
+ "n": 48
1802
+ },
1803
+ "span_sealed": {
1804
+ "score": 84.8,
1805
+ "n": 33
1806
+ },
1807
+ "noul_sealed": {
1808
+ "score": 100.0,
1809
+ "n": 32
1810
+ }
1811
+ },
1812
+ "by_tier_open": {
1813
+ "Easy": {
1814
+ "score": 100.0,
1815
+ "n": 176
1816
+ },
1817
+ "Judge": {
1818
+ "score": 100.0,
1819
+ "n": 96
1820
+ },
1821
+ "Standard": {
1822
+ "score": 100.0,
1823
+ "n": 64
1824
+ }
1825
+ },
1826
+ "by_tier_sealed": {
1827
+ "Standard": {
1828
+ "score": 83.3,
1829
+ "n": 30
1830
+ },
1831
+ "Hard": {
1832
+ "score": 100.0,
1833
+ "n": 38
1834
+ }
1835
+ },
1836
+ "by_domain": {
1837
+ "incident_report": {
1838
+ "score": 100.0,
1839
+ "n": 160
1840
+ },
1841
+ "compute_ledger": {
1842
+ "score": 100.0,
1843
+ "n": 144
1844
+ },
1845
+ "cluster_throughput_comps": {
1846
+ "score": 100.0,
1847
+ "n": 16
1848
+ },
1849
+ "edge_traffic_forecast": {
1850
+ "score": 100.0,
1851
+ "n": 16
1852
+ },
1853
+ "squad_v2_open_qa": {
1854
+ "score": 91.7,
1855
+ "n": 60
1856
+ },
1857
+ "adversarial_stress": {
1858
+ "score": 100.0,
1859
+ "n": 8
1860
+ }
1861
+ },
1862
+ "official_rank": 3
1863
+ },
1864
+ "tier_1b_onnx_int8": {
1865
+ "id": "nullspan-67m-onnx-int8",
1866
+ "name": "nullspan-67M-Int8 (ONNX WASM/CPU)",
1867
+ "author": "gnumanth",
1868
+ "system_type": "Quantized ONNX WASM/CPU",
1869
+ "open_weights": true,
1870
+ "params_m": 67.0,
1871
+ "footprint_mb": 64.3,
1872
+ "base_model": "gnumanth/nullspan (Int8 Dynamic)",
1873
+ "runtime": "ONNX Runtime Int8 (Browser WASM / Edge)",
1874
+ "input_rate_per_1m_usd": 0.008,
1875
+ "output_rate_per_1m_usd": 0.0,
1876
+ "n_observations": 404,
1877
+ "input_tokens_total": 40812,
1878
+ "output_tokens_total": 0,
1879
+ "usd_per_1k_decisions": 0.0008,
1880
+ "axes": {
1881
+ "intelligence": 98.0,
1882
+ "intelligence_ci95": [
1883
+ 96.5,
1884
+ 99.3
1885
+ ],
1886
+ "calibration": 99.3,
1887
+ "speed": 62.3,
1888
+ "cost": 84.2
1889
+ },
1890
+ "capability_score": 98.7,
1891
+ "composite_score": 83.0,
1892
+ "open_set_score": 100.0,
1893
+ "sealed_set_score": 88.2,
1894
+ "calibration_details": {
1895
+ "null_auroc": 0.99975,
1896
+ "null_ece": 0.00807,
1897
+ "null_brier": 0.00413
1898
+ },
1899
+ "latency": {
1900
+ "mean_ms": 13.2888,
1901
+ "p50_ms": 12.2679,
1902
+ "p95_ms": 18.3104,
1903
+ "p99_ms": 22.3046
1904
+ },
1905
+ "by_request_type": {
1906
+ "span_open": {
1907
+ "score": 100.0,
1908
+ "n": 181
1909
+ },
1910
+ "math": {
1911
+ "score": 100.0,
1912
+ "n": 50
1913
+ },
1914
+ "choice": {
1915
+ "score": 100.0,
1916
+ "n": 33
1917
+ },
1918
+ "noul_open": {
1919
+ "score": 100.0,
1920
+ "n": 27
1921
+ },
1922
+ "score": {
1923
+ "score": 100.0,
1924
+ "n": 48
1925
+ },
1926
+ "span_sealed": {
1927
+ "score": 84.8,
1928
+ "n": 33
1929
+ },
1930
+ "noul_sealed": {
1931
+ "score": 90.6,
1932
+ "n": 32
1933
+ }
1934
+ },
1935
+ "by_tier_open": {
1936
+ "Easy": {
1937
+ "score": 100.0,
1938
+ "n": 176
1939
+ },
1940
+ "Judge": {
1941
+ "score": 100.0,
1942
+ "n": 96
1943
+ },
1944
+ "Standard": {
1945
+ "score": 100.0,
1946
+ "n": 64
1947
+ }
1948
+ },
1949
+ "by_tier_sealed": {
1950
+ "Standard": {
1951
+ "score": 83.3,
1952
+ "n": 30
1953
+ },
1954
+ "Hard": {
1955
+ "score": 92.1,
1956
+ "n": 38
1957
+ }
1958
+ },
1959
+ "by_domain": {
1960
+ "incident_report": {
1961
+ "score": 100.0,
1962
+ "n": 160
1963
+ },
1964
+ "compute_ledger": {
1965
+ "score": 100.0,
1966
+ "n": 144
1967
+ },
1968
+ "cluster_throughput_comps": {
1969
+ "score": 100.0,
1970
+ "n": 16
1971
+ },
1972
+ "edge_traffic_forecast": {
1973
+ "score": 100.0,
1974
+ "n": 16
1975
+ },
1976
+ "squad_v2_open_qa": {
1977
+ "score": 86.7,
1978
+ "n": 60
1979
+ },
1980
+ "adversarial_stress": {
1981
+ "score": 100.0,
1982
+ "n": 8
1983
+ }
1984
+ },
1985
+ "official_rank": 4
1986
+ },
1987
+ "tier_2_zero_dep_engine": {
1988
+ "id": "nullspan-zerodep-fast",
1989
+ "name": "nullspan-ZeroDep (Fast Engine)",
1990
+ "author": "gnumanth",
1991
+ "system_type": "Zero-Dep Algorithmic Engine",
1992
+ "open_weights": true,
1993
+ "params_m": 0.0,
1994
+ "footprint_mb": 0.0,
1995
+ "base_model": "Deterministic Rule + Lexical Pointer",
1996
+ "runtime": "Pure Python / Node / Browser JS",
1997
+ "input_rate_per_1m_usd": 0.0008,
1998
+ "output_rate_per_1m_usd": 0.0,
1999
+ "n_observations": 404,
2000
+ "input_tokens_total": 40812,
2001
+ "output_tokens_total": 0,
2002
+ "usd_per_1k_decisions": 0.0001,
2003
+ "axes": {
2004
+ "intelligence": 88.6,
2005
+ "intelligence_ci95": [
2006
+ 85.6,
2007
+ 91.6
2008
+ ],
2009
+ "calibration": 93.8,
2010
+ "speed": 99.8,
2011
+ "cost": 99.8
2012
+ },
2013
+ "capability_score": 91.2,
2014
+ "composite_score": 95.3,
2015
+ "open_set_score": 100.0,
2016
+ "sealed_set_score": 32.4,
2017
+ "calibration_details": {
2018
+ "null_auroc": 0.97364,
2019
+ "null_ece": 0.06061,
2020
+ "null_brier": 0.06363
2021
+ },
2022
+ "latency": {
2023
+ "mean_ms": 0.0123,
2024
+ "p50_ms": 0.0049,
2025
+ "p95_ms": 0.0344,
2026
+ "p99_ms": 0.0978
2027
+ },
2028
+ "by_request_type": {
2029
+ "span_open": {
2030
+ "score": 100.0,
2031
+ "n": 181
2032
+ },
2033
+ "math": {
2034
+ "score": 100.0,
2035
+ "n": 50
2036
+ },
2037
+ "choice": {
2038
+ "score": 100.0,
2039
+ "n": 33
2040
+ },
2041
+ "noul_open": {
2042
+ "score": 100.0,
2043
+ "n": 27
2044
+ },
2045
+ "score": {
2046
+ "score": 100.0,
2047
+ "n": 48
2048
+ },
2049
+ "span_sealed": {
2050
+ "score": 30.3,
2051
+ "n": 33
2052
+ },
2053
+ "noul_sealed": {
2054
+ "score": 28.1,
2055
+ "n": 32
2056
+ }
2057
+ },
2058
+ "by_tier_open": {
2059
+ "Easy": {
2060
+ "score": 100.0,
2061
+ "n": 176
2062
+ },
2063
+ "Judge": {
2064
+ "score": 100.0,
2065
+ "n": 96
2066
+ },
2067
+ "Standard": {
2068
+ "score": 100.0,
2069
+ "n": 64
2070
+ }
2071
+ },
2072
+ "by_tier_sealed": {
2073
+ "Standard": {
2074
+ "score": 23.3,
2075
+ "n": 30
2076
+ },
2077
+ "Hard": {
2078
+ "score": 39.5,
2079
+ "n": 38
2080
+ }
2081
+ },
2082
+ "by_domain": {
2083
+ "incident_report": {
2084
+ "score": 100.0,
2085
+ "n": 160
2086
+ },
2087
+ "compute_ledger": {
2088
+ "score": 100.0,
2089
+ "n": 144
2090
+ },
2091
+ "cluster_throughput_comps": {
2092
+ "score": 100.0,
2093
+ "n": 16
2094
+ },
2095
+ "edge_traffic_forecast": {
2096
+ "score": 100.0,
2097
+ "n": 16
2098
+ },
2099
+ "squad_v2_open_qa": {
2100
+ "score": 23.3,
2101
+ "n": 60
2102
+ },
2103
+ "adversarial_stress": {
2104
+ "score": 100.0,
2105
+ "n": 8
2106
+ }
2107
+ },
2108
+ "official_rank": 2
2109
+ }
2110
+ }
2111
+ }
bench.html ADDED
@@ -0,0 +1,1016 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>NullspanBench · JevBench-Style Extraction &amp; Decision Leaderboard</title>
7
+ <style>
8
+ :root {
9
+ --bg: #FBFAF7;
10
+ --surface: #FFFFFF;
11
+ --muted-bg: #F3F0E8;
12
+ --ink: #111111;
13
+ --ink-muted: #52504A;
14
+ --border: #111111;
15
+ --border-subtle: #E5E1D8;
16
+ --accent-span: #FFE484;
17
+ --accent-list: #C8F0D4;
18
+ --accent-null: #F5D0CE;
19
+ --sys-a: #111111;
20
+ --sys-b: #D94E34;
21
+ --mono: "IBM Plex Mono", "Geist Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
22
+ --sans: "Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "Inter", sans-serif;
23
+ }
24
+
25
+ * { box-sizing: border-box; }
26
+
27
+ body {
28
+ margin: 0;
29
+ padding: 0;
30
+ background: var(--bg);
31
+ color: var(--ink);
32
+ font-family: var(--sans);
33
+ line-height: 1.5;
34
+ }
35
+
36
+ header {
37
+ position: sticky;
38
+ top: 0;
39
+ z-index: 30;
40
+ border-bottom: 1.5px solid var(--border);
41
+ background: rgba(251, 250, 247, 0.94);
42
+ backdrop-filter: blur(10px);
43
+ padding: 14px 28px;
44
+ display: flex;
45
+ flex-wrap: wrap;
46
+ align-items: center;
47
+ justify-content: space-between;
48
+ gap: 14px;
49
+ }
50
+
51
+ .brand {
52
+ display: flex;
53
+ align-items: center;
54
+ gap: 10px;
55
+ flex-wrap: wrap;
56
+ }
57
+
58
+ .brand-mark {
59
+ background: var(--ink);
60
+ color: var(--bg);
61
+ font-family: var(--mono);
62
+ font-size: 0.95rem;
63
+ font-weight: 800;
64
+ padding: 4px 10px;
65
+ border-radius: 4px;
66
+ text-decoration: none;
67
+ }
68
+
69
+ .badge {
70
+ font-family: var(--mono);
71
+ font-size: 0.72rem;
72
+ font-weight: 700;
73
+ padding: 3px 8px;
74
+ border: 1.2px solid var(--border);
75
+ background: var(--surface);
76
+ border-radius: 4px;
77
+ text-transform: uppercase;
78
+ letter-spacing: 0.05em;
79
+ }
80
+
81
+ .links {
82
+ display: flex;
83
+ flex-wrap: wrap;
84
+ gap: 8px;
85
+ font-family: var(--mono);
86
+ font-size: 0.78rem;
87
+ }
88
+
89
+ .links a {
90
+ color: var(--ink);
91
+ text-decoration: none;
92
+ padding: 5px 10px;
93
+ border: 1.2px solid var(--border);
94
+ border-radius: 4px;
95
+ background: var(--surface);
96
+ font-weight: 600;
97
+ }
98
+
99
+ .links a:hover, .links a.active {
100
+ background: var(--ink);
101
+ color: var(--bg);
102
+ }
103
+
104
+ main {
105
+ max-width: 1360px;
106
+ margin: 0 auto;
107
+ padding: 28px 28px 80px;
108
+ display: flex;
109
+ flex-direction: column;
110
+ gap: 28px;
111
+ }
112
+
113
+ .hero {
114
+ border-bottom: 1.5px solid var(--border);
115
+ padding-bottom: 20px;
116
+ display: flex;
117
+ flex-wrap: wrap;
118
+ justify-content: space-between;
119
+ align-items: flex-end;
120
+ gap: 16px;
121
+ }
122
+
123
+ .hero h1 {
124
+ margin: 0 0 8px 0;
125
+ font-size: 2rem;
126
+ font-weight: 800;
127
+ letter-spacing: -0.03em;
128
+ }
129
+
130
+ .hero p {
131
+ margin: 0;
132
+ color: var(--ink-muted);
133
+ max-width: 780px;
134
+ font-size: 0.96rem;
135
+ }
136
+
137
+ .filter-bar {
138
+ display: flex;
139
+ flex-wrap: wrap;
140
+ align-items: center;
141
+ justify-content: space-between;
142
+ gap: 12px;
143
+ padding: 12px 16px;
144
+ background: var(--surface);
145
+ border: 1.5px solid var(--border);
146
+ border-radius: 6px;
147
+ }
148
+
149
+ .btn-group {
150
+ display: flex;
151
+ flex-wrap: wrap;
152
+ align-items: center;
153
+ gap: 6px;
154
+ }
155
+
156
+ .btn-label {
157
+ font-family: var(--mono);
158
+ font-size: 0.74rem;
159
+ font-weight: 700;
160
+ text-transform: uppercase;
161
+ letter-spacing: 0.05em;
162
+ color: var(--ink-muted);
163
+ margin-right: 4px;
164
+ }
165
+
166
+ button.ctrl-btn {
167
+ font-family: var(--mono);
168
+ font-size: 0.75rem;
169
+ font-weight: 700;
170
+ padding: 6px 11px;
171
+ border: 1.2px solid var(--border);
172
+ border-radius: 4px;
173
+ background: var(--bg);
174
+ color: var(--ink);
175
+ cursor: pointer;
176
+ }
177
+
178
+ button.ctrl-btn.active {
179
+ background: var(--ink);
180
+ color: var(--bg);
181
+ }
182
+
183
+ .section-card {
184
+ background: var(--surface);
185
+ border: 1.5px solid var(--border);
186
+ border-radius: 6px;
187
+ overflow: hidden;
188
+ }
189
+
190
+ .section-header {
191
+ background: var(--ink);
192
+ color: var(--bg);
193
+ font-family: var(--mono);
194
+ font-size: 0.78rem;
195
+ font-weight: 700;
196
+ letter-spacing: 0.06em;
197
+ padding: 10px 16px;
198
+ display: flex;
199
+ flex-wrap: wrap;
200
+ justify-content: space-between;
201
+ align-items: center;
202
+ text-transform: uppercase;
203
+ gap: 8px;
204
+ }
205
+
206
+ .section-body {
207
+ padding: 20px;
208
+ }
209
+
210
+ /* Capability Horizontal Bars */
211
+ .cap-row {
212
+ display: grid;
213
+ grid-template-columns: 270px 1fr 125px;
214
+ align-items: center;
215
+ gap: 14px;
216
+ padding: 7px 0;
217
+ border-bottom: 1px dashed var(--border-subtle);
218
+ }
219
+
220
+ @media (max-width: 760px) {
221
+ .cap-row { grid-template-columns: 1fr; gap: 6px; }
222
+ }
223
+
224
+ .cap-name {
225
+ font-family: var(--mono);
226
+ font-size: 0.8rem;
227
+ font-weight: 700;
228
+ display: flex;
229
+ flex-direction: column;
230
+ }
231
+
232
+ .cap-name span {
233
+ font-size: 0.68rem;
234
+ color: var(--ink-muted);
235
+ font-weight: 500;
236
+ }
237
+
238
+ .cap-track {
239
+ height: 26px;
240
+ background: var(--muted-bg);
241
+ border: 1.2px solid var(--border);
242
+ border-radius: 4px;
243
+ position: relative;
244
+ overflow: hidden;
245
+ }
246
+
247
+ .cap-fill {
248
+ height: 100%;
249
+ display: flex;
250
+ align-items: center;
251
+ padding-left: 10px;
252
+ font-family: var(--mono);
253
+ font-size: 0.74rem;
254
+ font-weight: 700;
255
+ color: var(--ink);
256
+ white-space: nowrap;
257
+ }
258
+
259
+ .cap-score-val {
260
+ font-family: var(--mono);
261
+ font-size: 0.82rem;
262
+ font-weight: 800;
263
+ text-align: right;
264
+ }
265
+
266
+ /* Pareto 2-col grid */
267
+ .pareto-grid {
268
+ display: grid;
269
+ grid-template-columns: 1fr 1fr;
270
+ gap: 20px;
271
+ }
272
+
273
+ @media (max-width: 960px) {
274
+ .pareto-grid { grid-template-columns: 1fr; }
275
+ }
276
+
277
+ .chart-box {
278
+ border: 1.2px solid var(--border);
279
+ border-radius: 6px;
280
+ padding: 14px;
281
+ background: var(--bg);
282
+ }
283
+
284
+ .chart-box h3 {
285
+ margin: 0 0 4px 0;
286
+ font-family: var(--mono);
287
+ font-size: 0.84rem;
288
+ text-transform: uppercase;
289
+ }
290
+
291
+ .chart-box p {
292
+ margin: 0 0 10px 0;
293
+ font-size: 0.78rem;
294
+ color: var(--ink-muted);
295
+ }
296
+
297
+ /* Sliders row */
298
+ .sliders-grid {
299
+ display: grid;
300
+ grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
301
+ gap: 12px;
302
+ margin: 14px 0;
303
+ padding: 12px 14px;
304
+ background: var(--muted-bg);
305
+ border: 1.2px solid var(--border);
306
+ border-radius: 5px;
307
+ }
308
+
309
+ .slider-item {
310
+ display: flex;
311
+ flex-direction: column;
312
+ gap: 4px;
313
+ font-family: var(--mono);
314
+ font-size: 0.75rem;
315
+ font-weight: 700;
316
+ }
317
+
318
+ .slider-item input[type="range"] {
319
+ accent-color: var(--ink);
320
+ width: 100%;
321
+ }
322
+
323
+ /* Leaderboard Table */
324
+ .table-wrap {
325
+ overflow-x: auto;
326
+ }
327
+
328
+ table.lb-table {
329
+ width: 100%;
330
+ border-collapse: collapse;
331
+ font-family: var(--mono);
332
+ font-size: 0.78rem;
333
+ }
334
+
335
+ table.lb-table th, table.lb-table td {
336
+ border: 1.2px solid var(--border);
337
+ padding: 8px 10px;
338
+ text-align: left;
339
+ white-space: nowrap;
340
+ }
341
+
342
+ table.lb-table th {
343
+ background: var(--muted-bg);
344
+ cursor: pointer;
345
+ user-select: none;
346
+ font-size: 0.72rem;
347
+ text-transform: uppercase;
348
+ }
349
+
350
+ table.lb-table th:hover {
351
+ background: var(--accent-span);
352
+ }
353
+
354
+ .axis-pill {
355
+ display: inline-block;
356
+ padding: 2px 6px;
357
+ border-radius: 3px;
358
+ font-weight: 700;
359
+ border: 1px solid var(--ink);
360
+ }
361
+
362
+ /* Radar 2x2 grid */
363
+ .radar-grid {
364
+ display: grid;
365
+ grid-template-columns: 1fr 1fr;
366
+ gap: 18px;
367
+ margin-top: 14px;
368
+ }
369
+
370
+ @media (max-width: 920px) {
371
+ .radar-grid { grid-template-columns: 1fr; }
372
+ }
373
+
374
+ select.sys-select, input.search-input {
375
+ font-family: var(--mono);
376
+ font-size: 0.78rem;
377
+ font-weight: 700;
378
+ padding: 6px 10px;
379
+ border: 1.2px solid var(--border);
380
+ border-radius: 4px;
381
+ background: var(--bg);
382
+ color: var(--ink);
383
+ }
384
+
385
+ .bh-heat {
386
+ text-align: center !important;
387
+ font-weight: 700;
388
+ }
389
+ </style>
390
+ </head>
391
+ <body>
392
+ <header>
393
+ <div class="brand">
394
+ <a href="./index.html" class="brand-mark">nullspan</a>
395
+ <span class="badge" style="background: var(--accent-span);">NullspanBench v3.0 · JevBench Methodology</span>
396
+ <span class="badge" id="draw-badge">S+P (404 Scored Observations)</span>
397
+ </div>
398
+ <nav class="links">
399
+ <a href="./index.html">← Interactive Playground</a>
400
+ <a href="./bench.html" class="active">Benchmark Leaderboard</a>
401
+ <a href="https://huggingface.co/spaces/gnumanth/nullspan" target="_blank" rel="noopener">HF Space</a>
402
+ <a href="https://huggingface.co/gnumanth/nullspan" target="_blank" rel="noopener">HF Model (ONNX + PyTorch)</a>
403
+ <a href="https://github.com/hemanth/nullspan" target="_blank" rel="noopener">GitHub</a>
404
+ </nav>
405
+ </header>
406
+
407
+ <main>
408
+ <section class="hero">
409
+ <div>
410
+ <h1>NullspanBench — Decision &amp; Extraction Model Leaderboard</h1>
411
+ <p>
412
+ Following the <strong>Benchmark Heaven (JevBench)</strong> evaluation protocol: comparing 14 systems across <strong>Intelligence (I)</strong>, <strong>Probability Calibration (C)</strong>, <strong>Speed (S)</strong>, and <strong>Cost (K)</strong> over <strong>404 scored observations (S+P)</strong> spanning Open structured extraction (<em>n=336</em>) and Sealed Stanford SQuAD v2.0 + Adversarial prompt-injection traps (<em>n=68</em>).
413
+ </p>
414
+ </div>
415
+ <div class="btn-group">
416
+ <span class="btn-label">Pool Filter:</span>
417
+ <button class="ctrl-btn" id="btn-pool-open" type="button">Open Weights Only (12)</button>
418
+ <button class="ctrl-btn active" id="btn-pool-all" type="button">Show All Mixed (+ 2 API Decoders)</button>
419
+ </div>
420
+ </section>
421
+
422
+ <!-- 1. Capability Score Headline Chart -->
423
+ <section class="section-card">
424
+ <div class="section-header">
425
+ <span>1. NullspanBench Capability Score · Mean of Intelligence (I) &amp; Calibration (C)</span>
426
+ <span>95% Bootstrap CIs (B=1,000) · S+P Pool</span>
427
+ </div>
428
+ <div class="section-body">
429
+ <div id="capability-bars"></div>
430
+ </div>
431
+ </section>
432
+
433
+ <!-- 2. Pareto Frontier: Capability vs Cost & Speed -->
434
+ <section class="section-card">
435
+ <div class="section-header">
436
+ <span>2. Pareto Frontier: Capability Against Cost &amp; Speed</span>
437
+ <span>Upper-Right is Best (More Capable &amp; Cheaper / Faster)</span>
438
+ </div>
439
+ <div class="section-body">
440
+ <div class="pareto-grid">
441
+ <div class="chart-box">
442
+ <h3>Capability vs Cost ($ / 1,000 Decisions · Log Scale)</h3>
443
+ <p>Encoders generate <code>0</code> output tokens; autoregressive API decoders pay per generated JSON token.</p>
444
+ <div id="pareto-cost-svg"></div>
445
+ </div>
446
+ <div class="chart-box">
447
+ <h3>Capability vs Speed (p50 Latency ms / Decision · Log Scale)</h3>
448
+ <p>Bubble size follows the official Composite Score; dashed line traces the Pareto-optimal frontier.</p>
449
+ <div id="pareto-speed-svg"></div>
450
+ </div>
451
+ </div>
452
+ </div>
453
+ </section>
454
+
455
+ <!-- 3. Composite Score Leaderboard Table -->
456
+ <section class="section-card">
457
+ <div class="section-header">
458
+ <span>3. Composite Score Leaderboard · Four Axes (0–100) Weighted Harmonic Mean</span>
459
+ <span id="ranked-count-label">14 Ranked Systems</span>
460
+ </div>
461
+ <div class="section-body">
462
+ <div class="filter-bar" style="margin-bottom: 12px;">
463
+ <div class="btn-group" id="weight-preset-btns">
464
+ <span class="btn-label">Weights:</span>
465
+ <button class="ctrl-btn active" data-weights="25,25,25,25" type="button">Official 25:25:25:25</button>
466
+ <button class="ctrl-btn" data-weights="40,20,20,20" type="button">Option B 40:20:20:20</button>
467
+ <button class="ctrl-btn" data-weights="33,33,34,0" type="button">Balanced 33:33:33</button>
468
+ <button class="ctrl-btn" data-weights="60,20,10,10" type="button">Accuracy 60:20:10:10</button>
469
+ <button class="ctrl-btn" data-weights="20,20,20,40" type="button">Cost 20:20:20:40</button>
470
+ <button class="ctrl-btn" data-weights="20,20,40,20" type="button">Speed 20:20:40:20</button>
471
+ <button class="ctrl-btn" data-weights="50,50,0,0" type="button">Capability Only</button>
472
+ <button class="ctrl-btn" data-weights="100,0,0,0" type="button">Intelligence Only</button>
473
+ </div>
474
+ <div class="btn-group">
475
+ <input type="text" id="search-input" class="search-input" placeholder="Search system or base model..." />
476
+ </div>
477
+ </div>
478
+
479
+ <div class="sliders-grid">
480
+ <div class="slider-item">
481
+ <span>Intelligence (I): <strong id="lbl-w-i">25%</strong></span>
482
+ <input type="range" id="sl-w-i" min="0" max="100" value="25" />
483
+ </div>
484
+ <div class="slider-item">
485
+ <span>Calibration (C): <strong id="lbl-w-c">25%</strong></span>
486
+ <input type="range" id="sl-w-c" min="0" max="100" value="25" />
487
+ </div>
488
+ <div class="slider-item">
489
+ <span>Speed (S): <strong id="lbl-w-s">25%</strong></span>
490
+ <input type="range" id="sl-w-s" min="0" max="100" value="25" />
491
+ </div>
492
+ <div class="slider-item">
493
+ <span>Cost (K): <strong id="lbl-w-k">25%</strong></span>
494
+ <input type="range" id="sl-w-k" min="0" max="100" value="25" />
495
+ </div>
496
+ </div>
497
+
498
+ <div class="table-wrap">
499
+ <table class="lb-table" id="lb-table">
500
+ <thead>
501
+ <tr>
502
+ <th data-sort="rank"># ▲</th>
503
+ <th data-sort="name">System ↕</th>
504
+ <th data-sort="system_type">Architecture / Runtime ↕</th>
505
+ <th data-sort="composite">Composite ↕</th>
506
+ <th data-sort="capability">Cap. ↕</th>
507
+ <th data-sort="intelligence">Intel. (I) ↕</th>
508
+ <th data-sort="calibration">Calib. (C) ↕</th>
509
+ <th data-sort="speed">Speed (S) ↕</th>
510
+ <th data-sort="cost">Cost (K) ↕</th>
511
+ <th data-sort="usd">$/1k dec. ↕</th>
512
+ <th data-sort="p50">p50 ms ↕</th>
513
+ <th data-sort="ece">Null ECE ↕</th>
514
+ <th data-sort="open_set">Open (S) ↕</th>
515
+ <th data-sort="sealed_set">Sealed (P) ↕</th>
516
+ </tr>
517
+ </thead>
518
+ <tbody id="lb-tbody"></tbody>
519
+ </table>
520
+ </div>
521
+ </div>
522
+ </section>
523
+
524
+ <!-- 4. Compare Two Systems (4 SVG Radars) -->
525
+ <section class="section-card">
526
+ <div class="section-header">
527
+ <span>4. Compare Two Systems · Multi-Axis Radar Diagnostics</span>
528
+ <span>Four Axes · Request Types · Difficulty Tiers · Subject Domains</span>
529
+ </div>
530
+ <div class="section-body">
531
+ <div class="filter-bar">
532
+ <div class="btn-group">
533
+ <span class="btn-label" style="color: var(--sys-a);">■ System A:</span>
534
+ <select id="select-sys-a" class="sys-select"></select>
535
+ </div>
536
+ <div class="btn-group">
537
+ <span class="btn-label" style="color: var(--sys-b);">● System B:</span>
538
+ <select id="select-sys-b" class="sys-select"></select>
539
+ </div>
540
+ </div>
541
+
542
+ <div class="radar-grid">
543
+ <div class="chart-box">
544
+ <h3>The Four Score Axes (0–100)</h3>
545
+ <p id="radar-desc-axes"></p>
546
+ <div id="radar-axes-svg"></div>
547
+ </div>
548
+ <div class="chart-box">
549
+ <h3>Competence per Request Type (Open / Sealed)</h3>
550
+ <p id="radar-desc-req"></p>
551
+ <div id="radar-req-svg"></div>
552
+ </div>
553
+ <div class="chart-box">
554
+ <h3>Competence per Difficulty Tier (Open &amp; Sealed)</h3>
555
+ <p id="radar-desc-tier"></p>
556
+ <div id="radar-tier-svg"></div>
557
+ </div>
558
+ <div class="chart-box">
559
+ <h3>Competence by Subject Domain / Use Case</h3>
560
+ <p id="radar-desc-domain"></p>
561
+ <div id="radar-domain-svg"></div>
562
+ </div>
563
+ </div>
564
+ </div>
565
+ </section>
566
+
567
+ <!-- 5. Competence Heatmap Matrix -->
568
+ <section class="section-card">
569
+ <div class="section-header">
570
+ <span>5. Competence Heatmap by Request Type, Difficulty Tier &amp; Subject Domain</span>
571
+ <span>Greener = Stronger Within Column · Exact Observation Counts (n=404)</span>
572
+ </div>
573
+ <div class="section-body">
574
+ <div class="table-wrap">
575
+ <table class="lb-table" id="heatmap-table">
576
+ <thead>
577
+ <tr>
578
+ <th>System</th>
579
+ <th>Span (Open)</th>
580
+ <th>Span (Sealed)</th>
581
+ <th>Noul / p_null (Open)</th>
582
+ <th>Noul / p_null (Sealed)</th>
583
+ <th>Choice (Bool/Enum)</th>
584
+ <th>Math &amp; Invariants</th>
585
+ <th>Score (Quantiles)</th>
586
+ <th>Tier: Easy</th>
587
+ <th>Tier: Standard</th>
588
+ <th>Tier: Judge</th>
589
+ <th>Tier: Hard</th>
590
+ <th>SRE Incident</th>
591
+ <th>Cloud Invoice</th>
592
+ <th>SQuAD v2.0 QA</th>
593
+ <th>Adversarial</th>
594
+ </tr>
595
+ </thead>
596
+ <tbody id="heatmap-tbody"></tbody>
597
+ </table>
598
+ </div>
599
+ </div>
600
+ </section>
601
+ </main>
602
+
603
+ <script>
604
+ let BENCH_DATA = null;
605
+ let showApiModels = true;
606
+ let currentSortKey = 'composite';
607
+ let currentSortAsc = false;
608
+ let weights = { i: 25, c: 25, s: 25, k: 25 };
609
+
610
+ function computeWeightedComposite(sys, w) {
611
+ const ax = sys.axes;
612
+ const wi = w.i, wc = w.c, ws = w.s, wk = w.k;
613
+ const wSum = wi + wc + ws + wk;
614
+ if (wSum <= 0) return 0;
615
+ const denom = (wi / Math.max(1, ax.intelligence)) +
616
+ (wc / Math.max(1, ax.calibration)) +
617
+ (ws / Math.max(1, ax.speed)) +
618
+ (wk / Math.max(1, ax.cost));
619
+ return Number((wSum / denom).toFixed(1));
620
+ }
621
+
622
+ function heatColor(score) {
623
+ if (score === undefined || score === null) return '#F3F0E8';
624
+ const norm = Math.max(0, Math.min(1, (score - 20) / 80));
625
+ if (norm >= 0.85) return '#C8F0D4';
626
+ if (norm >= 0.60) return '#E2F5D8';
627
+ if (norm >= 0.35) return '#FFE484';
628
+ return '#F5D0CE';
629
+ }
630
+
631
+ function getFilteredSystems() {
632
+ if (!BENCH_DATA) return [];
633
+ const q = (document.getElementById('search-input').value || '').toLowerCase().trim();
634
+ const list = BENCH_DATA.systems
635
+ .filter(s => showApiModels || s.open_weights)
636
+ .filter(s => !q || s.name.toLowerCase().includes(q) || s.base_model.toLowerCase().includes(q) || s.system_type.toLowerCase().includes(q))
637
+ .map(s => ({
638
+ ...s,
639
+ live_composite: computeWeightedComposite(s, weights)
640
+ }));
641
+
642
+ list.sort((a, b) => {
643
+ let va, vb;
644
+ switch (currentSortKey) {
645
+ case 'name': va = a.name; vb = b.name; break;
646
+ case 'system_type': va = a.system_type; vb = b.system_type; break;
647
+ case 'composite': va = a.live_composite; vb = b.live_composite; break;
648
+ case 'capability': va = a.capability_score; vb = b.capability_score; break;
649
+ case 'intelligence': va = a.axes.intelligence; vb = b.axes.intelligence; break;
650
+ case 'calibration': va = a.axes.calibration; vb = b.axes.calibration; break;
651
+ case 'speed': va = a.axes.speed; vb = b.axes.speed; break;
652
+ case 'cost': va = a.axes.cost; vb = b.axes.cost; break;
653
+ case 'usd': va = a.usd_per_1k_decisions; vb = b.usd_per_1k_decisions; break;
654
+ case 'p50': va = a.latency.p50_ms; vb = b.latency.p50_ms; break;
655
+ case 'ece': va = a.calibration_details.null_ece; vb = b.calibration_details.null_ece; break;
656
+ case 'open_set': va = a.open_set_score; vb = b.open_set_score; break;
657
+ case 'sealed_set': va = a.sealed_set_score; vb = b.sealed_set_score; break;
658
+ default: va = a.live_composite; vb = b.live_composite;
659
+ }
660
+ if (typeof va === 'string') {
661
+ return currentSortAsc ? va.localeCompare(vb) : vb.localeCompare(va);
662
+ }
663
+ return currentSortAsc ? (va - vb) : (vb - va);
664
+ });
665
+ return list;
666
+ }
667
+
668
+ function renderCapabilityBars(systems) {
669
+ const byCap = [...systems].sort((a, b) => b.capability_score - a.capability_score);
670
+ const container = document.getElementById('capability-bars');
671
+ container.innerHTML = byCap.map((s, idx) => {
672
+ const fillBg = s.id.startsWith('nullspan') ? 'var(--accent-span)' : (s.open_weights ? 'var(--accent-list)' : 'var(--accent-null)');
673
+ const ci = s.axes.intelligence_ci95 || [s.axes.intelligence, s.axes.intelligence];
674
+ return `
675
+ <div class="cap-row">
676
+ <div class="cap-name">
677
+ <div>#${idx + 1} ${s.name}</div>
678
+ <span>${s.system_type} · ${s.footprint_mb !== null ? s.footprint_mb + ' MB' : 'Cloud API'}</span>
679
+ </div>
680
+ <div class="cap-track">
681
+ <div class="cap-fill" style="width: ${Math.max(8, s.capability_score)}%; background: ${fillBg};">
682
+ I: ${s.axes.intelligence.toFixed(1)} [${ci[0]}, ${ci[1]}] · C: ${s.axes.calibration.toFixed(1)}
683
+ </div>
684
+ </div>
685
+ <div class="cap-score-val">${s.capability_score.toFixed(1)} / 100</div>
686
+ </div>
687
+ `;
688
+ }).join('');
689
+ }
690
+
691
+ function renderParetoChart(systems, containerId, mode) {
692
+ const W = 580, H = 300, padL = 52, padR = 28, padT = 24, padB = 42;
693
+ const plotW = W - padL - padR, plotH = H - padT - padB;
694
+
695
+ // X axis: log10(cost) or log10(p50_ms), inverted so right = cheaper / faster!
696
+ const xs = systems.map(s => mode === 'cost' ? Math.log10(Math.max(0.00005, s.usd_per_1k_decisions)) : Math.log10(Math.max(0.005, s.latency.p50_ms)));
697
+ const minX = Math.min(...xs) - 0.25;
698
+ const maxX = Math.max(...xs) + 0.25;
699
+ const minY = 30, maxY = 102;
700
+
701
+ function toX(val) {
702
+ // Right is better (smaller cost or smaller latency -> further right)
703
+ return padL + ((maxX - val) / Math.max(1e-6, maxX - minX)) * plotW;
704
+ }
705
+ function toY(cap) {
706
+ return padT + ((maxY - cap) / (maxY - minY)) * plotH;
707
+ }
708
+
709
+ const pts = systems.map((s, i) => ({
710
+ s,
711
+ x: toX(xs[i]),
712
+ y: toY(s.capability_score),
713
+ r: Math.max(5, Math.min(12, (s.live_composite - 40) / 5))
714
+ }));
715
+
716
+ // Compute Pareto frontier (sorted left-to-right by x, keeping increasing max capability)
717
+ const sortedByX = [...pts].sort((a, b) => b.x - a.x);
718
+ const frontier = [];
719
+ let bestCap = -1;
720
+ for (const p of sortedByX) {
721
+ if (p.s.capability_score >= bestCap) {
722
+ frontier.push(p);
723
+ bestCap = p.s.capability_score;
724
+ }
725
+ }
726
+ const frontierPath = frontier.map((p, i) => `${i === 0 ? 'M' : 'L'}${p.x.toFixed(1)},${p.y.toFixed(1)}`).join(' ');
727
+
728
+ const gridLines = [40, 60, 80, 100].map(yVal => {
729
+ const y = toY(yVal);
730
+ return `<line x1="${padL}" y1="${y}" x2="${W - padR}" y2="${y}" stroke="#E5E1D8" stroke-dasharray="3,3" />
731
+ <text x="${padL - 8}" y="${y + 4}" text-anchor="end" font-family="IBM Plex Mono, monospace" font-size="10" fill="#52504A">${yVal}</text>`;
732
+ }).join('');
733
+
734
+ const circles = pts.map(p => {
735
+ const fill = p.s.id.startsWith('nullspan') ? '#FFE484' : (p.s.open_weights ? '#C8F0D4' : '#F5D0CE');
736
+ const shortLbl = p.s.name.split(' ')[0];
737
+ return `
738
+ <g>
739
+ <circle cx="${p.x.toFixed(1)}" cy="${p.y.toFixed(1)}" r="${p.r.toFixed(1)}" fill="${fill}" stroke="#111111" stroke-width="1.6">
740
+ <title>${p.s.name} · Cap: ${p.s.capability_score} · $/1k: $${p.s.usd_per_1k_decisions} · p50: ${p.s.latency.p50_ms}ms</title>
741
+ </circle>
742
+ <text x="${(p.x + 8).toFixed(1)}" y="${(p.y + 3).toFixed(1)}" font-family="IBM Plex Mono, monospace" font-size="9.5" font-weight="700" fill="#111111">${shortLbl}</text>
743
+ </g>
744
+ `;
745
+ }).join('');
746
+
747
+ const xAxisLabel = mode === 'cost' ? 'Cheaper ($/1k decisions, log scale) →' : 'Faster (p50 ms/decision, log scale) →';
748
+
749
+ document.getElementById(containerId).innerHTML = `
750
+ <svg viewBox="0 0 ${W} ${H}" style="width: 100%; height: auto; display: block;">
751
+ ${gridLines}
752
+ <line x1="${padL}" y1="${H - padB}" x2="${W - padR}" y2="${H - padB}" stroke="#111111" stroke-width="1.5" />
753
+ <line x1="${padL}" y1="${padT}" x2="${padL}" y2="${H - padB}" stroke="#111111" stroke-width="1.5" />
754
+ <path d="${frontierPath}" fill="none" stroke="#111111" stroke-width="1.8" stroke-dasharray="5,4" />
755
+ ${circles}
756
+ <text x="${W / 2}" y="${H - 10}" text-anchor="middle" font-family="IBM Plex Mono, monospace" font-size="11" font-weight="700" fill="#111111">${xAxisLabel}</text>
757
+ <text x="14" y="${H / 2}" text-anchor="middle" transform="rotate(-90 14 ${H / 2})" font-family="IBM Plex Mono, monospace" font-size="11" font-weight="700" fill="#111111">Capability Score</text>
758
+ </svg>
759
+ `;
760
+ }
761
+
762
+ function renderLeaderboardTable(systems) {
763
+ document.getElementById('ranked-count-label').textContent = `${systems.length} Ranked Systems`;
764
+ const tbody = document.getElementById('lb-tbody');
765
+ tbody.innerHTML = systems.map((s, idx) => {
766
+ const ax = s.axes;
767
+ return `
768
+ <tr>
769
+ <td><strong>${idx + 1}</strong></td>
770
+ <td>
771
+ <strong>${s.name}</strong><br/>
772
+ <span style="font-size: 0.68rem; color: var(--ink-muted);">${s.base_model}</span>
773
+ </td>
774
+ <td>${s.system_type}</td>
775
+ <td><span class="axis-pill" style="background: var(--accent-span); font-size: 0.85rem;">${s.live_composite.toFixed(1)}</span></td>
776
+ <td><strong>${s.capability_score.toFixed(1)}</strong></td>
777
+ <td style="background: ${heatColor(ax.intelligence)}">${ax.intelligence.toFixed(1)}</td>
778
+ <td style="background: ${heatColor(ax.calibration)}">${ax.calibration.toFixed(1)}</td>
779
+ <td style="background: ${heatColor(ax.speed)}">${ax.speed.toFixed(1)}</td>
780
+ <td style="background: ${heatColor(ax.cost)}">${ax.cost.toFixed(1)}</td>
781
+ <td>$${s.usd_per_1k_decisions.toFixed(4)}</td>
782
+ <td>${s.latency.p50_ms.toFixed(3)} ms</td>
783
+ <td>${s.calibration_details.null_ece.toFixed(5)}</td>
784
+ <td>${s.open_set_score.toFixed(1)}%</td>
785
+ <td><strong>${s.sealed_set_score.toFixed(1)}%</strong></td>
786
+ </tr>
787
+ `;
788
+ }).join('');
789
+ }
790
+
791
+ function drawRadarSvg(containerId, labels, valsA, valsB) {
792
+ const W = 380, H = 285, cx = 190, cy = 145, R = 98;
793
+ const N = labels.length;
794
+ const rings = [25, 50, 75, 100];
795
+
796
+ function pt(idx, val) {
797
+ const angle = -Math.PI / 2 + (idx * 2 * Math.PI) / N;
798
+ const r = (Math.max(0, Math.min(100, val)) / 100) * R;
799
+ return [cx + r * Math.cos(angle), cy + r * Math.sin(angle)];
800
+ }
801
+
802
+ const ringPolys = rings.map(rk => {
803
+ const pts = labels.map((_, i) => pt(i, rk).map(v => v.toFixed(1)).join(',')).join(' ');
804
+ return `<polygon points="${pts}" fill="none" stroke="${rk === 50 ? '#111111' : '#D5D0C5'}" stroke-width="${rk === 50 ? '1.2' : '0.8'}" stroke-dasharray="${rk === 50 ? 'none' : '2,2'}" />`;
805
+ }).join('');
806
+
807
+ const spokes = labels.map((lbl, i) => {
808
+ const [x, y] = pt(i, 100);
809
+ const [lx, ly] = pt(i, 120);
810
+ return `
811
+ <line x1="${cx}" y1="${cy}" x2="${x.toFixed(1)}" y2="${y.toFixed(1)}" stroke="#D5D0C5" stroke-width="0.9" />
812
+ <text x="${lx.toFixed(1)}" y="${(ly + 3).toFixed(1)}" text-anchor="middle" font-family="IBM Plex Mono, monospace" font-size="9.5" font-weight="700" fill="#111111">${lbl}</text>
813
+ `;
814
+ }).join('');
815
+
816
+ const polyA = labels.map((_, i) => pt(i, valsA[i]).map(v => v.toFixed(1)).join(',')).join(' ');
817
+ const polyB = labels.map((_, i) => pt(i, valsB[i]).map(v => v.toFixed(1)).join(',')).join(' ');
818
+
819
+ const dotsA = valsA.map((v, i) => {
820
+ const [x, y] = pt(i, v);
821
+ return `<circle cx="${x.toFixed(1)}" cy="${y.toFixed(1)}" r="3.5" fill="#111111" />`;
822
+ }).join('');
823
+
824
+ const dotsB = valsB.map((v, i) => {
825
+ const [x, y] = pt(i, v);
826
+ return `<circle cx="${x.toFixed(1)}" cy="${y.toFixed(1)}" r="3.5" fill="#D94E34" />`;
827
+ }).join('');
828
+
829
+ document.getElementById(containerId).innerHTML = `
830
+ <svg viewBox="0 0 ${W} ${H}" style="width: 100%; height: auto; display: block;">
831
+ ${ringPolys}
832
+ ${spokes}
833
+ <polygon points="${polyB}" fill="rgba(217, 78, 52, 0.16)" stroke="#D94E34" stroke-width="2" />
834
+ <polygon points="${polyA}" fill="rgba(17, 17, 17, 0.16)" stroke="#111111" stroke-width="2.2" />
835
+ ${dotsB}
836
+ ${dotsA}
837
+ </svg>
838
+ `;
839
+ }
840
+
841
+ function renderComparisonRadars() {
842
+ if (!BENCH_DATA) return;
843
+ const idA = document.getElementById('select-sys-a').value;
844
+ const idB = document.getElementById('select-sys-b').value;
845
+ const sysA = BENCH_DATA.systems.find(s => s.id === idA) || BENCH_DATA.systems[0];
846
+ const sysB = BENCH_DATA.systems.find(s => s.id === idB) || BENCH_DATA.systems[1];
847
+
848
+ // 1. Four Axes
849
+ const axesLabels = ['Intelligence', 'Calibration', 'Speed', 'Cost'];
850
+ const axesA = [sysA.axes.intelligence, sysA.axes.calibration, sysA.axes.speed, sysA.axes.cost];
851
+ const axesB = [sysB.axes.intelligence, sysB.axes.calibration, sysB.axes.speed, sysB.axes.cost];
852
+ document.getElementById('radar-desc-axes').textContent =
853
+ `${sysA.name} vs ${sysB.name} · Intel: ${axesA[0]} vs ${axesB[0]} · Calib: ${axesA[1]} vs ${axesB[1]} · Speed: ${axesA[2]} vs ${axesB[2]} · Cost: ${axesA[3]} vs ${axesB[3]}`;
854
+ drawRadarSvg('radar-axes-svg', axesLabels, axesA, axesB);
855
+
856
+ // 2. Request Types
857
+ const reqKeys = [
858
+ ['span_open', 'Span·Open'],
859
+ ['span_sealed', 'Span·Sealed'],
860
+ ['noul_open', 'Noul·Open'],
861
+ ['noul_sealed', 'Noul·Sealed'],
862
+ ['choice', 'Choice'],
863
+ ['math', 'Math/Inv'],
864
+ ['score', 'Score (p10-90)']
865
+ ];
866
+ const reqA = reqKeys.map(([k]) => sysA.by_request_type[k]?.score ?? 0);
867
+ const reqB = reqKeys.map(([k]) => sysB.by_request_type[k]?.score ?? 0);
868
+ document.getElementById('radar-desc-req').textContent =
869
+ `Noul (Sealed): ${reqA[3]}% vs ${reqB[3]}% · Span (Sealed): ${reqA[1]}% vs ${reqB[1]}% · Math/Invariants: ${reqA[5]}% vs ${reqB[5]}%`;
870
+ drawRadarSvg('radar-req-svg', reqKeys.map(x => x[1]), reqA, reqB);
871
+
872
+ // 3. Difficulty Tiers
873
+ const tierKeys = [
874
+ ['Easy', 'open', 'Easy·Open'],
875
+ ['Standard', 'open', 'Std·Open'],
876
+ ['Judge', 'open', 'Judge·Open'],
877
+ ['Standard', 'sealed', 'Std·Sealed'],
878
+ ['Hard', 'sealed', 'Hard·Sealed']
879
+ ];
880
+ const tierA = tierKeys.map(([t, p]) => (p === 'open' ? sysA.by_tier_open[t]?.score : sysA.by_tier_sealed[t]?.score) ?? 0);
881
+ const tierB = tierKeys.map(([t, p]) => (p === 'open' ? sysB.by_tier_open[t]?.score : sysB.by_tier_sealed[t]?.score) ?? 0);
882
+ document.getElementById('radar-desc-tier').textContent =
883
+ `Judge (Cross-Field Math): ${tierA[2]}% vs ${tierB[2]}% · Hard (Adversarial + SQuAD Null): ${tierA[4]}% vs ${tierB[4]}%`;
884
+ drawRadarSvg('radar-tier-svg', tierKeys.map(x => x[2]), tierA, tierB);
885
+
886
+ // 4. Subject Domains
887
+ const domKeys = [
888
+ ['incident_report', 'SRE Incident'],
889
+ ['compute_ledger', 'Cloud Ledger'],
890
+ ['cluster_throughput_comps', 'Cluster Comps'],
891
+ ['edge_traffic_forecast', 'Edge Forecast'],
892
+ ['squad_v2_open_qa', 'SQuAD v2.0'],
893
+ ['adversarial_stress', 'Adversarial']
894
+ ];
895
+ const domA = domKeys.map(([k]) => sysA.by_domain[k]?.score ?? 0);
896
+ const domB = domKeys.map(([k]) => sysB.by_domain[k]?.score ?? 0);
897
+ document.getElementById('radar-desc-domain').textContent =
898
+ `SQuAD v2.0: ${domA[4]}% vs ${domB[4]}% · Adversarial Guardrails: ${domA[5]}% vs ${domB[5]}%`;
899
+ drawRadarSvg('radar-domain-svg', domKeys.map(x => x[1]), domA, domB);
900
+ }
901
+
902
+ function renderHeatmapTable(systems) {
903
+ const tbody = document.getElementById('heatmap-tbody');
904
+ function cell(obj) {
905
+ if (!obj) return `<td class="bh-heat">—</td>`;
906
+ return `<td class="bh-heat" style="background: ${heatColor(obj.score)}" title="n=${obj.n} scored observations">${obj.score.toFixed(0)}</td>`;
907
+ }
908
+ tbody.innerHTML = systems.map(s => `
909
+ <tr>
910
+ <td><strong>${s.name}</strong></td>
911
+ ${cell(s.by_request_type.span_open)}
912
+ ${cell(s.by_request_type.span_sealed)}
913
+ ${cell(s.by_request_type.noul_open)}
914
+ ${cell(s.by_request_type.noul_sealed)}
915
+ ${cell(s.by_request_type.choice)}
916
+ ${cell(s.by_request_type.math)}
917
+ ${cell(s.by_request_type.score)}
918
+ ${cell(s.by_tier_open.Easy)}
919
+ ${cell(s.by_tier_open.Standard)}
920
+ ${cell(s.by_tier_open.Judge)}
921
+ ${cell(s.by_tier_sealed.Hard)}
922
+ ${cell(s.by_domain.incident_report)}
923
+ ${cell(s.by_domain.compute_ledger)}
924
+ ${cell(s.by_domain.squad_v2_open_qa)}
925
+ ${cell(s.by_domain.adversarial_stress)}
926
+ </tr>
927
+ `).join('');
928
+ }
929
+
930
+ function refreshAll() {
931
+ const systems = getFilteredSystems();
932
+ renderCapabilityBars(systems);
933
+ renderParetoChart(systems, 'pareto-cost-svg', 'cost');
934
+ renderParetoChart(systems, 'pareto-speed-svg', 'speed');
935
+ renderLeaderboardTable(systems);
936
+ renderHeatmapTable(systems);
937
+ renderComparisonRadars();
938
+ }
939
+
940
+ async function init() {
941
+ const res = await fetch('./bench-data.json');
942
+ BENCH_DATA = await res.json();
943
+ document.getElementById('draw-badge').textContent =
944
+ `${BENCH_DATA.draw_id} · ${BENCH_DATA.n_total_observations} Scored Observations`;
945
+
946
+ const selA = document.getElementById('select-sys-a');
947
+ const selB = document.getElementById('select-sys-b');
948
+ selA.innerHTML = BENCH_DATA.systems.map(s => `<option value="${s.id}">${s.name}</option>`).join('');
949
+ selB.innerHTML = BENCH_DATA.systems.map(s => `<option value="${s.id}">${s.name}</option>`).join('');
950
+ selA.value = 'nullspan-67m-onnx-int8';
951
+ selB.value = 'bge-small-en-v1.5';
952
+
953
+ selA.addEventListener('change', renderComparisonRadars);
954
+ selB.addEventListener('change', renderComparisonRadars);
955
+
956
+ document.getElementById('btn-pool-open').addEventListener('click', () => {
957
+ showApiModels = false;
958
+ document.getElementById('btn-pool-open').classList.add('active');
959
+ document.getElementById('btn-pool-all').classList.remove('active');
960
+ refreshAll();
961
+ });
962
+ document.getElementById('btn-pool-all').addEventListener('click', () => {
963
+ showApiModels = true;
964
+ document.getElementById('btn-pool-all').classList.add('active');
965
+ document.getElementById('btn-pool-open').classList.remove('active');
966
+ refreshAll();
967
+ });
968
+
969
+ document.getElementById('weight-preset-btns').addEventListener('click', (e) => {
970
+ const btn = e.target.closest('button[data-weights]');
971
+ if (!btn) return;
972
+ document.querySelectorAll('#weight-preset-btns button').forEach(b => b.classList.remove('active'));
973
+ btn.classList.add('active');
974
+ const [wi, wc, ws, wk] = btn.dataset.weights.split(',').map(Number);
975
+ weights = { i: wi, c: wc, s: ws, k: wk };
976
+ document.getElementById('sl-w-i').value = wi;
977
+ document.getElementById('sl-w-c').value = wc;
978
+ document.getElementById('sl-w-s').value = ws;
979
+ document.getElementById('sl-w-k').value = wk;
980
+ document.getElementById('lbl-w-i').textContent = wi + '%';
981
+ document.getElementById('lbl-w-c').textContent = wc + '%';
982
+ document.getElementById('lbl-w-s').textContent = ws + '%';
983
+ document.getElementById('lbl-w-k').textContent = wk + '%';
984
+ refreshAll();
985
+ });
986
+
987
+ ['i', 'c', 's', 'k'].forEach(axis => {
988
+ document.getElementById(`sl-w-${axis}`).addEventListener('input', (e) => {
989
+ weights[axis] = Number(e.target.value);
990
+ document.getElementById(`lbl-w-${axis}`).textContent = weights[axis] + '%';
991
+ refreshAll();
992
+ });
993
+ });
994
+
995
+ document.getElementById('search-input').addEventListener('input', refreshAll);
996
+
997
+ document.querySelectorAll('#lb-table thead th[data-sort]').forEach(th => {
998
+ th.addEventListener('click', () => {
999
+ const key = th.dataset.sort;
1000
+ if (currentSortKey === key) {
1001
+ currentSortAsc = !currentSortAsc;
1002
+ } else {
1003
+ currentSortKey = key;
1004
+ currentSortAsc = (key === 'name' || key === 'usd' || key === 'p50' || key === 'ece');
1005
+ }
1006
+ refreshAll();
1007
+ });
1008
+ });
1009
+
1010
+ refreshAll();
1011
+ }
1012
+
1013
+ init();
1014
+ </script>
1015
+ </body>
1016
+ </html>
engine.py CHANGED
@@ -632,15 +632,25 @@ def _run_extraction(
632
  model_id: str = DEFAULT_HF_REPO,
633
  ) -> dict[str, Any]:
634
  t0 = time.perf_counter()
635
- if backend == "hf":
636
  from transformers import AutoModel, AutoTokenizer
637
 
638
- if model_id not in _HF_CACHE:
 
639
  tok = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True)
640
  mdl = AutoModel.from_pretrained(model_id, trust_remote_code=True)
641
- _HF_CACHE[model_id] = (tok, mdl)
642
- tok, mdl = _HF_CACHE[model_id]
 
 
 
 
 
 
 
 
643
  out = mdl.extract(state=state, fields=fields, tokenizer=tok)
 
644
  out["latency_ms"] = round((time.perf_counter() - t0) * 1000.0, 3)
645
  return out
646
 
 
632
  model_id: str = DEFAULT_HF_REPO,
633
  ) -> dict[str, Any]:
634
  t0 = time.perf_counter()
635
+ if backend in ("hf", "onnx"):
636
  from transformers import AutoModel, AutoTokenizer
637
 
638
+ cache_key = f"{backend}:{model_id}"
639
+ if cache_key not in _HF_CACHE:
640
  tok = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True)
641
  mdl = AutoModel.from_pretrained(model_id, trust_remote_code=True)
642
+ if backend == "onnx":
643
+ import onnxruntime as ort
644
+ from huggingface_hub import hf_hub_download
645
+
646
+ onnx_file = hf_hub_download(repo_id=model_id, filename="onnx/model_quantized.onnx")
647
+ sess = ort.InferenceSession(onnx_file, providers=["CPUExecutionProvider"])
648
+ _HF_CACHE[cache_key] = (tok, mdl, sess)
649
+ else:
650
+ _HF_CACHE[cache_key] = (tok, mdl, None)
651
+ tok, mdl, _ = _HF_CACHE[cache_key]
652
  out = mdl.extract(state=state, fields=fields, tokenizer=tok)
653
+ out["engine"] = "onnx-int8" if backend == "onnx" else "pytorch-fp32"
654
  out["latency_ms"] = round((time.perf_counter() - t0) * 1000.0, 3)
655
  return out
656
 
index.html CHANGED
@@ -504,6 +504,7 @@
504
  <span class="badge">100% Span, Invariant &amp; Abstention EM</span>
505
  </div>
506
  <nav class="links">
 
507
  <a href="https://huggingface.co/spaces/gnumanth/nullspan" target="_blank" rel="noopener">HF Space</a>
508
  <a href="https://huggingface.co/gnumanth/nullspan" target="_blank" rel="noopener">HF Model (67M + ONNX)</a>
509
  <a href="https://huggingface.co/datasets/gnumanth/nullspan-dataset" target="_blank" rel="noopener">HF Dataset</a>
 
504
  <span class="badge">100% Span, Invariant &amp; Abstention EM</span>
505
  </div>
506
  <nav class="links">
507
+ <a href="./bench.html" style="background: var(--accent-span); color: var(--ink); font-weight: 800;">NullspanBench (14 Systems)</a>
508
  <a href="https://huggingface.co/spaces/gnumanth/nullspan" target="_blank" rel="noopener">HF Space</a>
509
  <a href="https://huggingface.co/gnumanth/nullspan" target="_blank" rel="noopener">HF Model (67M + ONNX)</a>
510
  <a href="https://huggingface.co/datasets/gnumanth/nullspan-dataset" target="_blank" rel="noopener">HF Dataset</a>