davanstrien HF Staff commited on
Commit
e80c254
·
verified ·
1 Parent(s): 73440a0

Upload folder using huggingface_hub

Browse files
Files changed (3) hide show
  1. README.md +4 -6
  2. data.json +1051 -0
  3. index.html +596 -18
README.md CHANGED
@@ -1,10 +1,8 @@
1
  ---
2
- title: Benchmark Race
3
- emoji: 📚
4
- colorFrom: pink
5
- colorTo: blue
6
  sdk: static
7
  pinned: false
8
  ---
9
-
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
1
  ---
2
+ title: Benchmark Leaderboard Race
3
+ emoji: "\U0001F3C1"
4
+ colorFrom: indigo
5
+ colorTo: purple
6
  sdk: static
7
  pinned: false
8
  ---
 
 
data.json ADDED
@@ -0,0 +1,1051 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "benchmarks": {
3
+ "sweVerified": {
4
+ "name": "SWE-bench Verified",
5
+ "models": [
6
+ {
7
+ "model_id": "Qwen/Qwen3.5-397B-A17B",
8
+ "short_name": "Qwen3.5-397B-A17B",
9
+ "provider": "Qwen",
10
+ "score": 76.4,
11
+ "date": "2026-02-16"
12
+ },
13
+ {
14
+ "model_id": "MiniMaxAI/MiniMax-M2.5",
15
+ "short_name": "MiniMax-M2.5",
16
+ "provider": "MiniMaxAI",
17
+ "score": 75.8,
18
+ "date": "2026-02-12"
19
+ },
20
+ {
21
+ "model_id": "stepfun-ai/Step-3.5-Flash",
22
+ "short_name": "Step-3.5-Flash",
23
+ "provider": "stepfun-ai",
24
+ "score": 74.4,
25
+ "date": "2026-02-01"
26
+ },
27
+ {
28
+ "model_id": "MiniMaxAI/MiniMax-M2.1",
29
+ "short_name": "MiniMax-M2.1",
30
+ "provider": "MiniMaxAI",
31
+ "score": 74.0,
32
+ "date": "2025-12-20"
33
+ },
34
+ {
35
+ "model_id": "zai-org/GLM-4.7",
36
+ "short_name": "GLM-4.7",
37
+ "provider": "zai-org",
38
+ "score": 73.8,
39
+ "date": "2025-12-22"
40
+ },
41
+ {
42
+ "model_id": "zai-org/GLM-5",
43
+ "short_name": "GLM-5",
44
+ "provider": "zai-org",
45
+ "score": 72.8,
46
+ "date": "2026-02-11"
47
+ },
48
+ {
49
+ "model_id": "Qwen/Qwen3.5-27B",
50
+ "short_name": "Qwen3.5-27B",
51
+ "provider": "Qwen",
52
+ "score": 72.4,
53
+ "date": "2026-02-24"
54
+ },
55
+ {
56
+ "model_id": "Qwen/Qwen3.5-122B-A10B",
57
+ "short_name": "Qwen3.5-122B-A10B",
58
+ "provider": "Qwen",
59
+ "score": 72.0,
60
+ "date": "2026-02-24"
61
+ },
62
+ {
63
+ "model_id": "moonshotai/Kimi-K2-Thinking",
64
+ "short_name": "Kimi-K2-Thinking",
65
+ "provider": "moonshotai",
66
+ "score": 71.3,
67
+ "date": "2025-11-04"
68
+ },
69
+ {
70
+ "model_id": "moonshotai/Kimi-K2.5",
71
+ "short_name": "Kimi-K2.5",
72
+ "provider": "moonshotai",
73
+ "score": 70.8,
74
+ "date": "2026-01-01"
75
+ },
76
+ {
77
+ "model_id": "Qwen/Qwen3-Coder-Next",
78
+ "short_name": "Qwen3-Coder-Next",
79
+ "provider": "Qwen",
80
+ "score": 70.6,
81
+ "date": "2026-01-30"
82
+ },
83
+ {
84
+ "model_id": "deepseek-ai/DeepSeek-V3.2",
85
+ "short_name": "DeepSeek-V3.2",
86
+ "provider": "deepseek-ai",
87
+ "score": 70.0,
88
+ "date": "2025-12-01"
89
+ },
90
+ {
91
+ "model_id": "MiniMaxAI/MiniMax-M2",
92
+ "short_name": "MiniMax-M2",
93
+ "provider": "MiniMaxAI",
94
+ "score": 69.4,
95
+ "date": "2025-10-22"
96
+ },
97
+ {
98
+ "model_id": "Qwen/Qwen3.5-35B-A3B",
99
+ "short_name": "Qwen3.5-35B-A3B",
100
+ "provider": "Qwen",
101
+ "score": 69.2,
102
+ "date": "2026-02-24"
103
+ },
104
+ {
105
+ "model_id": "GAIR/OpenSWE-72B",
106
+ "short_name": "OpenSWE-72B",
107
+ "provider": "GAIR",
108
+ "score": 66.0,
109
+ "date": "2026-03-15"
110
+ },
111
+ {
112
+ "model_id": "openai/gpt-oss-120b",
113
+ "short_name": "gpt-oss-120b",
114
+ "provider": "openai",
115
+ "score": 62.4,
116
+ "date": "2025-08-04"
117
+ },
118
+ {
119
+ "model_id": "GAIR/OpenSWE-32B",
120
+ "short_name": "OpenSWE-32B",
121
+ "provider": "GAIR",
122
+ "score": 62.4,
123
+ "date": "2026-03-15"
124
+ },
125
+ {
126
+ "model_id": "openai/gpt-oss-20b",
127
+ "short_name": "gpt-oss-20b",
128
+ "provider": "openai",
129
+ "score": 60.7,
130
+ "date": "2025-08-04"
131
+ },
132
+ {
133
+ "model_id": "nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-BF16",
134
+ "short_name": "NVIDIA-Nemotron-3-Super-120B-A12B-BF16",
135
+ "provider": "nvidia",
136
+ "score": 60.47,
137
+ "date": "2026-03-10"
138
+ },
139
+ {
140
+ "model_id": "zai-org/GLM-4.7-Flash",
141
+ "short_name": "GLM-4.7-Flash",
142
+ "provider": "zai-org",
143
+ "score": 59.2,
144
+ "date": "2026-01-19"
145
+ },
146
+ {
147
+ "model_id": "facebook/cwm",
148
+ "short_name": "cwm",
149
+ "provider": "facebook",
150
+ "score": 53.9,
151
+ "date": "2025-08-25"
152
+ },
153
+ {
154
+ "model_id": "SWE-Lego/SWE-Lego-Qwen3-32B",
155
+ "short_name": "SWE-Lego-Qwen3-32B",
156
+ "provider": "SWE-Lego",
157
+ "score": 52.6,
158
+ "date": "2026-01-05"
159
+ },
160
+ {
161
+ "model_id": "SWE-Lego/SWE-Lego-Qwen3-8B",
162
+ "short_name": "SWE-Lego-Qwen3-8B",
163
+ "provider": "SWE-Lego",
164
+ "score": 42.2,
165
+ "date": "2025-12-29"
166
+ }
167
+ ]
168
+ },
169
+ "swePro": {
170
+ "name": "SWE-bench Pro",
171
+ "models": [
172
+ {
173
+ "model_id": "MiniMaxAI/MiniMax-M2.5",
174
+ "short_name": "MiniMax-M2.5",
175
+ "provider": "MiniMaxAI",
176
+ "score": 55.4,
177
+ "date": "2026-02-12"
178
+ },
179
+ {
180
+ "model_id": "moonshotai/Kimi-K2.5",
181
+ "short_name": "Kimi-K2.5",
182
+ "provider": "moonshotai",
183
+ "score": 50.7,
184
+ "date": "2026-01-01"
185
+ },
186
+ {
187
+ "model_id": "Qwen/Qwen3-Coder-Next",
188
+ "short_name": "Qwen3-Coder-Next",
189
+ "provider": "Qwen",
190
+ "score": 44.3,
191
+ "date": "2026-01-30"
192
+ },
193
+ {
194
+ "model_id": "Qwen/Qwen3-Coder-480B-A35B-Instruct",
195
+ "short_name": "Qwen3-Coder-480B-A35B-Instruct",
196
+ "provider": "Qwen",
197
+ "score": 38.7,
198
+ "date": "2025-07-22"
199
+ },
200
+ {
201
+ "model_id": "MiniMaxAI/MiniMax-M2.1",
202
+ "short_name": "MiniMax-M2.1",
203
+ "provider": "MiniMaxAI",
204
+ "score": 36.81,
205
+ "date": "2025-12-20"
206
+ },
207
+ {
208
+ "model_id": "moonshotai/Kimi-K2-Instruct",
209
+ "short_name": "Kimi-K2-Instruct",
210
+ "provider": "moonshotai",
211
+ "score": 27.67,
212
+ "date": "2025-07-11"
213
+ },
214
+ {
215
+ "model_id": "Qwen/Qwen3-235B-A22B",
216
+ "short_name": "Qwen3-235B-A22B",
217
+ "provider": "Qwen",
218
+ "score": 21.41,
219
+ "date": "2025-04-27"
220
+ },
221
+ {
222
+ "model_id": "openai/gpt-oss-120b",
223
+ "short_name": "gpt-oss-120b",
224
+ "provider": "openai",
225
+ "score": 16.2,
226
+ "date": "2025-08-04"
227
+ },
228
+ {
229
+ "model_id": "deepseek-ai/DeepSeek-V3.2",
230
+ "short_name": "DeepSeek-V3.2",
231
+ "provider": "deepseek-ai",
232
+ "score": 15.56,
233
+ "date": "2025-12-01"
234
+ },
235
+ {
236
+ "model_id": "google/gemma-3-27b-it",
237
+ "short_name": "gemma-3-27b-it",
238
+ "provider": "google",
239
+ "score": 11.38,
240
+ "date": "2025-03-01"
241
+ },
242
+ {
243
+ "model_id": "meta-llama/Llama-3.1-405B-Instruct",
244
+ "short_name": "Llama-3.1-405B-Instruct",
245
+ "provider": "meta-llama",
246
+ "score": 11.18,
247
+ "date": "2024-07-16"
248
+ },
249
+ {
250
+ "model_id": "zai-org/GLM-4.6",
251
+ "short_name": "GLM-4.6",
252
+ "provider": "zai-org",
253
+ "score": 9.67,
254
+ "date": "2025-09-29"
255
+ },
256
+ {
257
+ "model_id": "meta-llama/Llama-4-Maverick-17B-128E-Instruct",
258
+ "short_name": "Llama-4-Maverick-17B-128E-Instruct",
259
+ "provider": "meta-llama",
260
+ "score": 5.24,
261
+ "date": "2025-04-01"
262
+ }
263
+ ]
264
+ },
265
+ "mmluPro": {
266
+ "name": "MMLU-Pro",
267
+ "models": [
268
+ {
269
+ "model_id": "MiniMaxAI/MiniMax-M2.1",
270
+ "short_name": "MiniMax-M2.1",
271
+ "provider": "MiniMaxAI",
272
+ "score": 88.0,
273
+ "date": "2025-12-20"
274
+ },
275
+ {
276
+ "model_id": "Qwen/Qwen3.5-397B-A17B",
277
+ "short_name": "Qwen3.5-397B-A17B",
278
+ "provider": "Qwen",
279
+ "score": 87.8,
280
+ "date": "2026-02-16"
281
+ },
282
+ {
283
+ "model_id": "moonshotai/Kimi-K2.5",
284
+ "short_name": "Kimi-K2.5",
285
+ "provider": "moonshotai",
286
+ "score": 87.1,
287
+ "date": "2026-01-01"
288
+ },
289
+ {
290
+ "model_id": "Qwen/Qwen3.5-122B-A10B",
291
+ "short_name": "Qwen3.5-122B-A10B",
292
+ "provider": "Qwen",
293
+ "score": 86.7,
294
+ "date": "2026-02-24"
295
+ },
296
+ {
297
+ "model_id": "Qwen/Qwen3.5-27B",
298
+ "short_name": "Qwen3.5-27B",
299
+ "provider": "Qwen",
300
+ "score": 86.1,
301
+ "date": "2026-02-24"
302
+ },
303
+ {
304
+ "model_id": "Qwen/Qwen3.5-35B-A3B",
305
+ "short_name": "Qwen3.5-35B-A3B",
306
+ "provider": "Qwen",
307
+ "score": 85.3,
308
+ "date": "2026-02-24"
309
+ },
310
+ {
311
+ "model_id": "deepseek-ai/DeepSeek-R1-0528",
312
+ "short_name": "DeepSeek-R1-0528",
313
+ "provider": "deepseek-ai",
314
+ "score": 85.0,
315
+ "date": "2025-05-28"
316
+ },
317
+ {
318
+ "model_id": "deepseek-ai/DeepSeek-V3.2",
319
+ "short_name": "DeepSeek-V3.2",
320
+ "provider": "deepseek-ai",
321
+ "score": 85.0,
322
+ "date": "2025-12-01"
323
+ },
324
+ {
325
+ "model_id": "moonshotai/Kimi-K2-Thinking",
326
+ "short_name": "Kimi-K2-Thinking",
327
+ "provider": "moonshotai",
328
+ "score": 84.6,
329
+ "date": "2025-11-04"
330
+ },
331
+ {
332
+ "model_id": "Qwen/Qwen3-235B-A22B-Thinking-2507",
333
+ "short_name": "Qwen3-235B-A22B-Thinking-2507",
334
+ "provider": "Qwen",
335
+ "score": 84.4,
336
+ "date": "2025-07-25"
337
+ },
338
+ {
339
+ "model_id": "stepfun-ai/Step-3.5-Flash",
340
+ "short_name": "Step-3.5-Flash",
341
+ "provider": "stepfun-ai",
342
+ "score": 84.4,
343
+ "date": "2026-02-01"
344
+ },
345
+ {
346
+ "model_id": "zai-org/GLM-4.7",
347
+ "short_name": "GLM-4.7",
348
+ "provider": "zai-org",
349
+ "score": 84.3,
350
+ "date": "2025-12-22"
351
+ },
352
+ {
353
+ "model_id": "deepseek-ai/DeepSeek-R1",
354
+ "short_name": "DeepSeek-R1",
355
+ "provider": "deepseek-ai",
356
+ "score": 84.0,
357
+ "date": "2025-01-20"
358
+ },
359
+ {
360
+ "model_id": "LGAI-EXAONE/K-EXAONE-236B-A23B",
361
+ "short_name": "K-EXAONE-236B-A23B",
362
+ "provider": "LGAI-EXAONE",
363
+ "score": 83.8,
364
+ "date": "2025-12-26"
365
+ },
366
+ {
367
+ "model_id": "nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-BF16",
368
+ "short_name": "NVIDIA-Nemotron-3-Super-120B-A12B-BF16",
369
+ "provider": "nvidia",
370
+ "score": 83.73,
371
+ "date": "2026-03-10"
372
+ },
373
+ {
374
+ "model_id": "Qwen/Qwen3.5-9B",
375
+ "short_name": "Qwen3.5-9B",
376
+ "provider": "Qwen",
377
+ "score": 82.5,
378
+ "date": "2026-02-27"
379
+ },
380
+ {
381
+ "model_id": "MiniMaxAI/MiniMax-M2",
382
+ "short_name": "MiniMax-M2",
383
+ "provider": "MiniMaxAI",
384
+ "score": 82.0,
385
+ "date": "2025-10-22"
386
+ },
387
+ {
388
+ "model_id": "deepseek-ai/DeepSeek-V3-0324",
389
+ "short_name": "DeepSeek-V3-0324",
390
+ "provider": "deepseek-ai",
391
+ "score": 81.2,
392
+ "date": "2025-03-24"
393
+ },
394
+ {
395
+ "model_id": "jdopensource/JoyAI-LLM-Flash",
396
+ "short_name": "JoyAI-LLM-Flash",
397
+ "provider": "jdopensource",
398
+ "score": 81.02,
399
+ "date": "2026-02-14"
400
+ },
401
+ {
402
+ "model_id": "Qwen/Qwen3-Next-80B-A3B-Instruct",
403
+ "short_name": "Qwen3-Next-80B-A3B-Instruct",
404
+ "provider": "Qwen",
405
+ "score": 80.6,
406
+ "date": "2025-09-09"
407
+ },
408
+ {
409
+ "model_id": "Qwen/Qwen3.5-4B",
410
+ "short_name": "Qwen3.5-4B",
411
+ "provider": "Qwen",
412
+ "score": 79.1,
413
+ "date": "2026-02-27"
414
+ },
415
+ {
416
+ "model_id": "nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16",
417
+ "short_name": "NVIDIA-Nemotron-3-Nano-30B-A3B-BF16",
418
+ "provider": "nvidia",
419
+ "score": 78.3,
420
+ "date": "2025-12-04"
421
+ },
422
+ {
423
+ "model_id": "meituan-longcat/LongCat-Flash-Lite",
424
+ "short_name": "LongCat-Flash-Lite",
425
+ "provider": "meituan-longcat",
426
+ "score": 78.29,
427
+ "date": "2026-01-27"
428
+ },
429
+ {
430
+ "model_id": "nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-FP8",
431
+ "short_name": "NVIDIA-Nemotron-3-Nano-30B-A3B-FP8",
432
+ "provider": "nvidia",
433
+ "score": 78.1,
434
+ "date": "2025-12-06"
435
+ },
436
+ {
437
+ "model_id": "mistralai/Mistral-Small-4-119B-2603",
438
+ "short_name": "Mistral-Small-4-119B-2603",
439
+ "provider": "mistralai",
440
+ "score": 78.0,
441
+ "date": "2026-01-23"
442
+ },
443
+ {
444
+ "model_id": "arcee-ai/Trinity-Large-Preview",
445
+ "short_name": "Trinity-Large-Preview",
446
+ "provider": "arcee-ai",
447
+ "score": 75.2,
448
+ "date": "2026-01-27"
449
+ },
450
+ {
451
+ "model_id": "Qwen/Qwen3-4B-Thinking-2507",
452
+ "short_name": "Qwen3-4B-Thinking-2507",
453
+ "provider": "Qwen",
454
+ "score": 74.0,
455
+ "date": "2025-08-05"
456
+ },
457
+ {
458
+ "model_id": "tiiuae/Falcon-H1R-7B",
459
+ "short_name": "Falcon-H1R-7B",
460
+ "provider": "tiiuae",
461
+ "score": 72.1,
462
+ "date": "2025-10-29"
463
+ },
464
+ {
465
+ "model_id": "Qwen/Qwen3-4B-Instruct-2507",
466
+ "short_name": "Qwen3-4B-Instruct-2507",
467
+ "provider": "Qwen",
468
+ "score": 69.6,
469
+ "date": "2025-08-05"
470
+ },
471
+ {
472
+ "model_id": "deepseek-ai/DeepSeek-V3",
473
+ "short_name": "DeepSeek-V3",
474
+ "provider": "deepseek-ai",
475
+ "score": 64.4,
476
+ "date": "2024-12-25"
477
+ },
478
+ {
479
+ "model_id": "Qwen/Qwen3.5-2B",
480
+ "short_name": "Qwen3.5-2B",
481
+ "provider": "Qwen",
482
+ "score": 55.3,
483
+ "date": "2026-02-28"
484
+ },
485
+ {
486
+ "model_id": "meta-llama/Llama-3.1-8B-Instruct",
487
+ "short_name": "Llama-3.1-8B-Instruct",
488
+ "provider": "meta-llama",
489
+ "score": 48.3,
490
+ "date": "2024-07-18"
491
+ },
492
+ {
493
+ "model_id": "LiquidAI/LFM2.5-1.2B-Instruct",
494
+ "short_name": "LFM2.5-1.2B-Instruct",
495
+ "provider": "LiquidAI",
496
+ "score": 44.35,
497
+ "date": "2026-01-06"
498
+ },
499
+ {
500
+ "model_id": "Qwen/Qwen3.5-0.8B",
501
+ "short_name": "Qwen3.5-0.8B",
502
+ "provider": "Qwen",
503
+ "score": 29.7,
504
+ "date": "2026-02-28"
505
+ }
506
+ ]
507
+ },
508
+ "aime2026": {
509
+ "name": "AIME 2026",
510
+ "models": [
511
+ {
512
+ "model_id": "stepfun-ai/Step-3.5-Flash",
513
+ "short_name": "Step-3.5-Flash",
514
+ "provider": "stepfun-ai",
515
+ "score": 96.67,
516
+ "date": "2026-02-01"
517
+ },
518
+ {
519
+ "model_id": "moonshotai/Kimi-K2.5",
520
+ "short_name": "Kimi-K2.5",
521
+ "provider": "moonshotai",
522
+ "score": 95.83,
523
+ "date": "2026-01-01"
524
+ },
525
+ {
526
+ "model_id": "zai-org/GLM-5",
527
+ "short_name": "GLM-5",
528
+ "provider": "zai-org",
529
+ "score": 95.83,
530
+ "date": "2026-02-11"
531
+ },
532
+ {
533
+ "model_id": "deepseek-ai/DeepSeek-V3.2",
534
+ "short_name": "DeepSeek-V3.2",
535
+ "provider": "deepseek-ai",
536
+ "score": 94.17,
537
+ "date": "2025-12-01"
538
+ },
539
+ {
540
+ "model_id": "Qwen/Qwen3.5-397B-A17B",
541
+ "short_name": "Qwen3.5-397B-A17B",
542
+ "provider": "Qwen",
543
+ "score": 93.33,
544
+ "date": "2026-02-16"
545
+ },
546
+ {
547
+ "model_id": "Qwen/Qwen3.5-35B-A3B",
548
+ "short_name": "Qwen3.5-35B-A3B",
549
+ "provider": "Qwen",
550
+ "score": 93.33,
551
+ "date": "2026-02-24"
552
+ },
553
+ {
554
+ "model_id": "Qwen/Qwen3.5-9B",
555
+ "short_name": "Qwen3.5-9B",
556
+ "provider": "Qwen",
557
+ "score": 92.5,
558
+ "date": "2026-02-27"
559
+ },
560
+ {
561
+ "model_id": "Qwen/Qwen3.5-27B",
562
+ "short_name": "Qwen3.5-27B",
563
+ "provider": "Qwen",
564
+ "score": 90.83,
565
+ "date": "2026-02-24"
566
+ },
567
+ {
568
+ "model_id": "nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-BF16",
569
+ "short_name": "NVIDIA-Nemotron-3-Super-120B-A12B-BF16",
570
+ "provider": "nvidia",
571
+ "score": 90.0,
572
+ "date": "2026-03-10"
573
+ },
574
+ {
575
+ "model_id": "Qwen/Qwen3-30B-A3B-Thinking-2507",
576
+ "short_name": "Qwen3-30B-A3B-Thinking-2507",
577
+ "provider": "Qwen",
578
+ "score": 87.5,
579
+ "date": "2025-07-29"
580
+ },
581
+ {
582
+ "model_id": "Qwen/Qwen3-4B-Thinking-2507",
583
+ "short_name": "Qwen3-4B-Thinking-2507",
584
+ "provider": "Qwen",
585
+ "score": 82.5,
586
+ "date": "2025-08-05"
587
+ },
588
+ {
589
+ "model_id": "lm-provers/QED-Nano",
590
+ "short_name": "QED-Nano",
591
+ "provider": "lm-provers",
592
+ "score": 82.5,
593
+ "date": "2026-02-12"
594
+ }
595
+ ]
596
+ },
597
+ "hmmt2026": {
598
+ "name": "HMMT Feb 2026",
599
+ "models": [
600
+ {
601
+ "model_id": "Qwen/Qwen3.5-397B-A17B",
602
+ "short_name": "Qwen3.5-397B-A17B",
603
+ "provider": "Qwen",
604
+ "score": 87.88,
605
+ "date": "2026-02-16"
606
+ },
607
+ {
608
+ "model_id": "moonshotai/Kimi-K2.5",
609
+ "short_name": "Kimi-K2.5",
610
+ "provider": "moonshotai",
611
+ "score": 87.12,
612
+ "date": "2026-01-01"
613
+ },
614
+ {
615
+ "model_id": "stepfun-ai/Step-3.5-Flash",
616
+ "short_name": "Step-3.5-Flash",
617
+ "provider": "stepfun-ai",
618
+ "score": 86.36,
619
+ "date": "2026-02-01"
620
+ },
621
+ {
622
+ "model_id": "zai-org/GLM-5",
623
+ "short_name": "GLM-5",
624
+ "provider": "zai-org",
625
+ "score": 86.36,
626
+ "date": "2026-02-11"
627
+ },
628
+ {
629
+ "model_id": "nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-BF16",
630
+ "short_name": "NVIDIA-Nemotron-3-Super-120B-A12B-BF16",
631
+ "provider": "nvidia",
632
+ "score": 84.85,
633
+ "date": "2026-03-10"
634
+ },
635
+ {
636
+ "model_id": "deepseek-ai/DeepSeek-V3.2",
637
+ "short_name": "DeepSeek-V3.2",
638
+ "provider": "deepseek-ai",
639
+ "score": 84.09,
640
+ "date": "2025-12-01"
641
+ },
642
+ {
643
+ "model_id": "Qwen/Qwen3.5-35B-A3B",
644
+ "short_name": "Qwen3.5-35B-A3B",
645
+ "provider": "Qwen",
646
+ "score": 81.82,
647
+ "date": "2026-02-24"
648
+ },
649
+ {
650
+ "model_id": "Qwen/Qwen3.5-27B",
651
+ "short_name": "Qwen3.5-27B",
652
+ "provider": "Qwen",
653
+ "score": 81.06,
654
+ "date": "2026-02-24"
655
+ },
656
+ {
657
+ "model_id": "Qwen/Qwen3-30B-A3B-Thinking-2507",
658
+ "short_name": "Qwen3-30B-A3B-Thinking-2507",
659
+ "provider": "Qwen",
660
+ "score": 78.79,
661
+ "date": "2025-07-29"
662
+ },
663
+ {
664
+ "model_id": "Qwen/Qwen3.5-9B",
665
+ "short_name": "Qwen3.5-9B",
666
+ "provider": "Qwen",
667
+ "score": 71.21,
668
+ "date": "2026-02-27"
669
+ },
670
+ {
671
+ "model_id": "lm-provers/QED-Nano",
672
+ "short_name": "QED-Nano",
673
+ "provider": "lm-provers",
674
+ "score": 62.88,
675
+ "date": "2026-02-12"
676
+ },
677
+ {
678
+ "model_id": "Qwen/Qwen3-4B-Thinking-2507",
679
+ "short_name": "Qwen3-4B-Thinking-2507",
680
+ "provider": "Qwen",
681
+ "score": 53.03,
682
+ "date": "2025-08-05"
683
+ }
684
+ ]
685
+ },
686
+ "olmOcr": {
687
+ "name": "olmOCR-bench",
688
+ "models": [
689
+ {
690
+ "model_id": "rednote-dots-ocr-community/dots.ocr-1.5",
691
+ "short_name": "dots.ocr-1.5",
692
+ "provider": "rednote-dots-ocr-community",
693
+ "score": 83.9,
694
+ "date": "2026-03-16"
695
+ },
696
+ {
697
+ "model_id": "lightonai/LightOnOCR-2-1B",
698
+ "short_name": "LightOnOCR-2-1B",
699
+ "provider": "lightonai",
700
+ "score": 83.2,
701
+ "date": "2026-01-16"
702
+ },
703
+ {
704
+ "model_id": "datalab-to/chandra",
705
+ "short_name": "chandra",
706
+ "provider": "datalab-to",
707
+ "score": 83.1,
708
+ "date": "2025-10-21"
709
+ },
710
+ {
711
+ "model_id": "infly/Infinity-Parser-7B",
712
+ "short_name": "Infinity-Parser-7B",
713
+ "provider": "infly",
714
+ "score": 82.5,
715
+ "date": "2025-10-17"
716
+ },
717
+ {
718
+ "model_id": "allenai/olmOCR-2-7B-1025-FP8",
719
+ "short_name": "olmOCR-2-7B-1025-FP8",
720
+ "provider": "allenai",
721
+ "score": 82.4,
722
+ "date": "2025-10-06"
723
+ },
724
+ {
725
+ "model_id": "PaddlePaddle/PaddleOCR-VL",
726
+ "short_name": "PaddleOCR-VL",
727
+ "provider": "PaddlePaddle",
728
+ "score": 80.0,
729
+ "date": "2025-10-16"
730
+ },
731
+ {
732
+ "model_id": "baidu/Qianfan-OCR",
733
+ "short_name": "Qianfan-OCR",
734
+ "provider": "baidu",
735
+ "score": 79.8,
736
+ "date": "2026-03-18"
737
+ },
738
+ {
739
+ "model_id": "rednote-hilab/dots.ocr",
740
+ "short_name": "dots.ocr",
741
+ "provider": "rednote-hilab",
742
+ "score": 79.1,
743
+ "date": "2025-07-30"
744
+ },
745
+ {
746
+ "model_id": "deepseek-ai/DeepSeek-OCR-2",
747
+ "short_name": "DeepSeek-OCR-2",
748
+ "provider": "deepseek-ai",
749
+ "score": 76.3,
750
+ "date": "2026-01-27"
751
+ },
752
+ {
753
+ "model_id": "lightonai/LightOnOCR-1B-1025",
754
+ "short_name": "LightOnOCR-1B-1025",
755
+ "provider": "lightonai",
756
+ "score": 76.1,
757
+ "date": "2025-10-20"
758
+ },
759
+ {
760
+ "model_id": "deepseek-ai/DeepSeek-OCR",
761
+ "short_name": "DeepSeek-OCR",
762
+ "provider": "deepseek-ai",
763
+ "score": 75.7,
764
+ "date": "2025-10-17"
765
+ },
766
+ {
767
+ "model_id": "opendatalab/MinerU2.5-2509-1.2B",
768
+ "short_name": "MinerU2.5-2509-1.2B",
769
+ "provider": "opendatalab",
770
+ "score": 75.2,
771
+ "date": "2025-09-17"
772
+ },
773
+ {
774
+ "model_id": "zai-org/GLM-OCR",
775
+ "short_name": "GLM-OCR",
776
+ "provider": "zai-org",
777
+ "score": 75.2,
778
+ "date": "2026-01-30"
779
+ },
780
+ {
781
+ "model_id": "FireRedTeam/FireRed-OCR",
782
+ "short_name": "FireRed-OCR",
783
+ "provider": "FireRedTeam",
784
+ "score": 70.2,
785
+ "date": "2026-02-28"
786
+ },
787
+ {
788
+ "model_id": "nanonets/Nanonets-OCR2-3B",
789
+ "short_name": "Nanonets-OCR2-3B",
790
+ "provider": "nanonets",
791
+ "score": 69.5,
792
+ "date": "2025-10-13"
793
+ }
794
+ ]
795
+ },
796
+ "terminalBench": {
797
+ "name": "Terminal-Bench 2.0",
798
+ "models": [
799
+ {
800
+ "model_id": "Qwen/Qwen3.5-397B-A17B",
801
+ "short_name": "Qwen3.5-397B-A17B",
802
+ "provider": "Qwen",
803
+ "score": 52.5,
804
+ "date": "2026-02-16"
805
+ },
806
+ {
807
+ "model_id": "zai-org/GLM-5",
808
+ "short_name": "GLM-5",
809
+ "provider": "zai-org",
810
+ "score": 52.4,
811
+ "date": "2026-02-11"
812
+ },
813
+ {
814
+ "model_id": "stepfun-ai/Step-3.5-Flash",
815
+ "short_name": "Step-3.5-Flash",
816
+ "provider": "stepfun-ai",
817
+ "score": 51.0,
818
+ "date": "2026-02-01"
819
+ },
820
+ {
821
+ "model_id": "Qwen/Qwen3.5-122B-A10B",
822
+ "short_name": "Qwen3.5-122B-A10B",
823
+ "provider": "Qwen",
824
+ "score": 49.4,
825
+ "date": "2026-02-24"
826
+ },
827
+ {
828
+ "model_id": "moonshotai/Kimi-K2.5",
829
+ "short_name": "Kimi-K2.5",
830
+ "provider": "moonshotai",
831
+ "score": 43.2,
832
+ "date": "2026-01-01"
833
+ },
834
+ {
835
+ "model_id": "Qwen/Qwen3.5-27B",
836
+ "short_name": "Qwen3.5-27B",
837
+ "provider": "Qwen",
838
+ "score": 41.6,
839
+ "date": "2026-02-24"
840
+ },
841
+ {
842
+ "model_id": "Qwen/Qwen3.5-35B-A3B",
843
+ "short_name": "Qwen3.5-35B-A3B",
844
+ "provider": "Qwen",
845
+ "score": 40.5,
846
+ "date": "2026-02-24"
847
+ },
848
+ {
849
+ "model_id": "deepseek-ai/DeepSeek-V3.2",
850
+ "short_name": "DeepSeek-V3.2",
851
+ "provider": "deepseek-ai",
852
+ "score": 39.6,
853
+ "date": "2025-12-01"
854
+ },
855
+ {
856
+ "model_id": "Qwen/Qwen3-Coder-Next",
857
+ "short_name": "Qwen3-Coder-Next",
858
+ "provider": "Qwen",
859
+ "score": 36.2,
860
+ "date": "2026-01-30"
861
+ },
862
+ {
863
+ "model_id": "moonshotai/Kimi-K2-Thinking",
864
+ "short_name": "Kimi-K2-Thinking",
865
+ "provider": "moonshotai",
866
+ "score": 35.7,
867
+ "date": "2025-11-04"
868
+ },
869
+ {
870
+ "model_id": "zai-org/GLM-4.7",
871
+ "short_name": "GLM-4.7",
872
+ "provider": "zai-org",
873
+ "score": 33.4,
874
+ "date": "2025-12-22"
875
+ },
876
+ {
877
+ "model_id": "nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-BF16",
878
+ "short_name": "NVIDIA-Nemotron-3-Super-120B-A12B-BF16",
879
+ "provider": "nvidia",
880
+ "score": 31.0,
881
+ "date": "2026-03-10"
882
+ },
883
+ {
884
+ "model_id": "MiniMaxAI/MiniMax-M2",
885
+ "short_name": "MiniMax-M2",
886
+ "provider": "MiniMaxAI",
887
+ "score": 30.0,
888
+ "date": "2025-10-22"
889
+ },
890
+ {
891
+ "model_id": "MiniMaxAI/MiniMax-M2.1",
892
+ "short_name": "MiniMax-M2.1",
893
+ "provider": "MiniMaxAI",
894
+ "score": 29.2,
895
+ "date": "2025-12-20"
896
+ },
897
+ {
898
+ "model_id": "moonshotai/Kimi-K2-Instruct",
899
+ "short_name": "Kimi-K2-Instruct",
900
+ "provider": "moonshotai",
901
+ "score": 27.8,
902
+ "date": "2025-07-11"
903
+ },
904
+ {
905
+ "model_id": "nvidia/Nemotron-Terminal-32B",
906
+ "short_name": "Nemotron-Terminal-32B",
907
+ "provider": "nvidia",
908
+ "score": 27.4,
909
+ "date": "2026-02-17"
910
+ },
911
+ {
912
+ "model_id": "zai-org/GLM-4.6",
913
+ "short_name": "GLM-4.6",
914
+ "provider": "zai-org",
915
+ "score": 24.5,
916
+ "date": "2025-09-29"
917
+ },
918
+ {
919
+ "model_id": "Qwen/Qwen3-Coder-480B-A35B-Instruct",
920
+ "short_name": "Qwen3-Coder-480B-A35B-Instruct",
921
+ "provider": "Qwen",
922
+ "score": 23.9,
923
+ "date": "2025-07-22"
924
+ },
925
+ {
926
+ "model_id": "nvidia/Nemotron-Terminal-14B",
927
+ "short_name": "Nemotron-Terminal-14B",
928
+ "provider": "nvidia",
929
+ "score": 20.2,
930
+ "date": "2026-02-17"
931
+ },
932
+ {
933
+ "model_id": "nvidia/Nemotron-Terminal-8B",
934
+ "short_name": "Nemotron-Terminal-8B",
935
+ "provider": "nvidia",
936
+ "score": 13.0,
937
+ "date": "2026-02-17"
938
+ }
939
+ ]
940
+ },
941
+ "evasionBench": {
942
+ "name": "EvasionBench",
943
+ "models": [
944
+ {
945
+ "model_id": "zai-org/GLM-4.7",
946
+ "short_name": "GLM-4.7",
947
+ "provider": "zai-org",
948
+ "score": 82.91,
949
+ "date": "2025-12-22"
950
+ },
951
+ {
952
+ "model_id": "Qwen/Qwen3-Coder-480B-A35B-Instruct",
953
+ "short_name": "Qwen3-Coder-480B-A35B-Instruct",
954
+ "provider": "Qwen",
955
+ "score": 78.16,
956
+ "date": "2025-07-22"
957
+ },
958
+ {
959
+ "model_id": "MiniMaxAI/MiniMax-M2.1",
960
+ "short_name": "MiniMax-M2.1",
961
+ "provider": "MiniMaxAI",
962
+ "score": 71.31,
963
+ "date": "2025-12-20"
964
+ },
965
+ {
966
+ "model_id": "deepseek-ai/DeepSeek-V3.2",
967
+ "short_name": "DeepSeek-V3.2",
968
+ "provider": "deepseek-ai",
969
+ "score": 66.88,
970
+ "date": "2025-12-01"
971
+ },
972
+ {
973
+ "model_id": "moonshotai/Kimi-K2-Instruct-0905",
974
+ "short_name": "Kimi-K2-Instruct-0905",
975
+ "provider": "moonshotai",
976
+ "score": 66.68,
977
+ "date": "2025-09-03"
978
+ }
979
+ ]
980
+ }
981
+ },
982
+ "logos": {
983
+ "lm-provers": "https://cdn-avatars.huggingface.co/v1/production/uploads/5f0c746619cb630495b814fd/Td4sH4W-LIdR89AqHCuw3.jpeg",
984
+ "zai-org": "https://cdn-avatars.huggingface.co/v1/production/uploads/62dc173789b4cf157d36ebee/i_pxzM2ZDo3Ub-BEgIkE9.png",
985
+ "rednote-dots-ocr-community": "https://www.gravatar.com/avatar/dcdda2399a2245a76ca3ee4bb5f6f6cb?d=retro&size=100",
986
+ "datalab-to": "https://cdn-avatars.huggingface.co/v1/production/uploads/67ab6afe315e622f597bf9e8/YOgg0gVYVXZC1PDIHFTWK.png",
987
+ "tiiuae": "https://cdn-avatars.huggingface.co/v1/production/uploads/61a8d1aac664736898ffc84f/AT6cAB5ZNwCcqFMal71WD.jpeg",
988
+ "nanonets": "https://cdn-avatars.huggingface.co/v1/production/uploads/641fc216a390e539522d511f/Xtxh40e8zSzkuKtCr58DH.jpeg",
989
+ "jdopensource": "https://cdn-avatars.huggingface.co/v1/production/uploads/68c0e2ab44ea28a974e3074b/g-4gTubd16qUtwmGZ0n4h.png",
990
+ "google": "https://cdn-avatars.huggingface.co/v1/production/uploads/5dd96eb166059660ed1ee413/WtA3YYitedOr9n02eHfJe.png",
991
+ "mistralai": "https://cdn-avatars.huggingface.co/v1/production/uploads/634c17653d11eaedd88b314d/9OgyfKstSZtbmsmuG8MbU.png",
992
+ "GAIR": "https://cdn-avatars.huggingface.co/v1/production/uploads/6144a0c4ff1146bbd84d9865/NqAuVddq2ci-AsFcFNbav.png",
993
+ "PaddlePaddle": "https://cdn-avatars.huggingface.co/v1/production/uploads/1654942635336-5f3ff69679c1ba4c353d0c5a.png",
994
+ "stepfun-ai": "https://cdn-avatars.huggingface.co/v1/production/uploads/66935cee39002fc0569c2943/Qv8QPbkgoKE3wR4jTzHiy.png",
995
+ "MiniMaxAI": "https://cdn-avatars.huggingface.co/v1/production/uploads/676e38ad04af5bec20bc9faf/dUd-LsZEX0H_d4qefO_g6.jpeg",
996
+ "deepseek-ai": "https://cdn-avatars.huggingface.co/v1/production/uploads/6538815d1bdb3c40db94fbfa/xMBly9PUMphrFVMxLX4kq.png",
997
+ "allenai": "https://cdn-avatars.huggingface.co/v1/production/uploads/652db071b62cf1f8463221e2/CxxwFiaomTa1MCX_B7-pT.png",
998
+ "nvidia": "https://cdn-avatars.huggingface.co/v1/production/uploads/1613114437487-60262a8e0703121c822a80b6.png",
999
+ "arcee-ai": "https://cdn-avatars.huggingface.co/v1/production/uploads/6435718aaaef013d1aec3b8b/GZPnGkfMn8Ino6JbkL4fJ.png",
1000
+ "FireRedTeam": "https://cdn-avatars.huggingface.co/v1/production/uploads/66ec07ef12bd743cfe91004e/PK3bgl6aF2RzW1QFKkq8R.png",
1001
+ "LiquidAI": "https://cdn-avatars.huggingface.co/v1/production/uploads/61b8e2ba285851687028d395/EsTgVtnM2IqVRKgPdfqcB.png",
1002
+ "moonshotai": "https://cdn-avatars.huggingface.co/v1/production/uploads/641c1e77c3983aa9490f8121/X1yT2rsaIbR9cdYGEVu0X.jpeg",
1003
+ "opendatalab": "https://cdn-avatars.huggingface.co/v1/production/uploads/639c3afa7432f2f5d16b7296/yqxxBknyeqkGnYsjoaR4M.png",
1004
+ "openai": "https://cdn-avatars.huggingface.co/v1/production/uploads/68783facef79a05727260de3/UPX5RQxiPGA-ZbBmArIKq.png",
1005
+ "baidu": "https://cdn-avatars.huggingface.co/v1/production/uploads/64f187a2cc1c03340ac30498/TYYUxK8xD1AxExFMWqbZD.png",
1006
+ "infly": "https://cdn-avatars.huggingface.co/v1/production/uploads/63ed9862679c2cc40abb55d2/0n6g0jngiKkRjaEoAvPmM.png",
1007
+ "Qwen": "https://cdn-avatars.huggingface.co/v1/production/uploads/620760a26e3b7210c2ff1943/-s1gyJfvbE1RgO5iBeNOi.png",
1008
+ "facebook": "https://cdn-avatars.huggingface.co/v1/production/uploads/1592839207516-noauth.png",
1009
+ "meta-llama": "https://cdn-avatars.huggingface.co/v1/production/uploads/646cf8084eefb026fb8fd8bc/oCTqufkdTkjyGodsx1vo1.png",
1010
+ "meituan-longcat": "https://cdn-avatars.huggingface.co/v1/production/uploads/68a2a29ab9d4c5698e02c747/CDCAx7X7rXDt7xjI-DoxG.png",
1011
+ "LGAI-EXAONE": "https://cdn-avatars.huggingface.co/v1/production/uploads/66a899a72f11aaf66001a8dc/UfdrP3GMo9pNT62BaMnhw.png",
1012
+ "lightonai": "https://cdn-avatars.huggingface.co/v1/production/uploads/1651597775471-62715572ab9243b5d40cbb1d.png",
1013
+ "rednote-hilab": "https://cdn-avatars.huggingface.co/v1/production/uploads/6807a1d6504547b3554b9c73/WgnnQDsz7FqnyTtv8mmRO.png",
1014
+ "SWE-Lego": "https://cdn-avatars.huggingface.co/v1/production/uploads/60fc2fcca6bdebbe52dfdaf4/AeuYwUH-CQCt893qnmAGa.png"
1015
+ },
1016
+ "colors": {
1017
+ "FireRedTeam": "#6366f1",
1018
+ "GAIR": "#0d9488",
1019
+ "LGAI-EXAONE": "#d97706",
1020
+ "LiquidAI": "#e11d48",
1021
+ "MiniMaxAI": "#7c3aed",
1022
+ "PaddlePaddle": "#16a34a",
1023
+ "Qwen": "#2563eb",
1024
+ "SWE-Lego": "#ea580c",
1025
+ "allenai": "#8b5cf6",
1026
+ "arcee-ai": "#0891b2",
1027
+ "baidu": "#c026d3",
1028
+ "datalab-to": "#65a30d",
1029
+ "deepseek-ai": "#dc2626",
1030
+ "facebook": "#0284c7",
1031
+ "google": "#a21caf",
1032
+ "infly": "#059669",
1033
+ "jdopensource": "#9333ea",
1034
+ "lightonai": "#ca8a04",
1035
+ "lm-provers": "#be185d",
1036
+ "meituan-longcat": "#0369a1",
1037
+ "meta-llama": "#6366f1",
1038
+ "mistralai": "#0d9488",
1039
+ "moonshotai": "#d97706",
1040
+ "nanonets": "#e11d48",
1041
+ "nvidia": "#7c3aed",
1042
+ "openai": "#16a34a",
1043
+ "opendatalab": "#2563eb",
1044
+ "rednote-dots-ocr-community": "#ea580c",
1045
+ "rednote-hilab": "#8b5cf6",
1046
+ "stepfun-ai": "#0891b2",
1047
+ "tiiuae": "#c026d3",
1048
+ "zai-org": "#65a30d"
1049
+ },
1050
+ "generated_at": "2026-03-18T16:12:56.965635+00:00"
1051
+ }
index.html CHANGED
@@ -1,19 +1,597 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19
  </html>
 
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">
6
+ <title>Benchmark Leaderboard Race</title>
7
+ <script src="https://d3js.org/d3.v7.min.js"></script>
8
+ <style>
9
+ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap');
10
+
11
+ * { margin: 0; padding: 0; box-sizing: border-box; }
12
+
13
+ body {
14
+ font-family: Inter, system-ui, -apple-system, sans-serif;
15
+ background: #fafafa;
16
+ color: #1a1a2e;
17
+ }
18
+
19
+ header {
20
+ max-width: 1100px;
21
+ margin: 0 auto;
22
+ padding: 24px 24px 0;
23
+ }
24
+
25
+ header h1 {
26
+ font-size: 24px;
27
+ font-weight: 700;
28
+ margin-bottom: 4px;
29
+ }
30
+
31
+ header p {
32
+ font-size: 14px;
33
+ color: #666;
34
+ margin-bottom: 16px;
35
+ }
36
+
37
+ header a { color: #6366f1; text-decoration: none; }
38
+ header a:hover { text-decoration: underline; }
39
+
40
+ #controls {
41
+ max-width: 1100px;
42
+ margin: 0 auto;
43
+ padding: 0 24px 16px;
44
+ display: flex;
45
+ gap: 16px;
46
+ align-items: center;
47
+ flex-wrap: wrap;
48
+ }
49
+
50
+ #controls label {
51
+ font-size: 13px;
52
+ font-weight: 500;
53
+ color: #555;
54
+ }
55
+
56
+ #benchmark-select {
57
+ font-family: inherit;
58
+ font-size: 14px;
59
+ padding: 6px 12px;
60
+ border: 1px solid #ddd;
61
+ border-radius: 6px;
62
+ background: white;
63
+ cursor: pointer;
64
+ }
65
+
66
+ .btn {
67
+ font-family: inherit;
68
+ font-size: 14px;
69
+ font-weight: 600;
70
+ padding: 7px 18px;
71
+ border: none;
72
+ border-radius: 6px;
73
+ cursor: pointer;
74
+ transition: background 0.15s;
75
+ }
76
+
77
+ #play-btn {
78
+ background: #6366f1;
79
+ color: white;
80
+ }
81
+ #play-btn:hover { background: #4f46e5; }
82
+
83
+ #reset-btn {
84
+ background: #e5e7eb;
85
+ color: #374151;
86
+ }
87
+ #reset-btn:hover { background: #d1d5db; }
88
+
89
+ .speed-group {
90
+ display: flex;
91
+ align-items: center;
92
+ gap: 8px;
93
+ }
94
+
95
+ #speed-slider {
96
+ width: 120px;
97
+ accent-color: #6366f1;
98
+ }
99
+
100
+ #speed-label {
101
+ font-size: 12px;
102
+ color: #888;
103
+ min-width: 40px;
104
+ }
105
+
106
+ #frame-info {
107
+ font-size: 12px;
108
+ color: #aaa;
109
+ margin-left: auto;
110
+ }
111
+
112
+ #chart-container {
113
+ max-width: 1100px;
114
+ margin: 0 auto;
115
+ padding: 0 24px 16px;
116
+ }
117
+
118
+ svg {
119
+ width: 100%;
120
+ height: auto;
121
+ display: block;
122
+ }
123
+
124
+ .bar-name {
125
+ font-weight: 600;
126
+ fill: white;
127
+ pointer-events: none;
128
+ }
129
+
130
+ .bar-name-link {
131
+ cursor: default;
132
+ pointer-events: none;
133
+ }
134
+
135
+ .clickable .bar-name-link {
136
+ cursor: pointer;
137
+ pointer-events: auto;
138
+ }
139
+
140
+ .clickable .bar-name-link:hover text {
141
+ text-decoration: underline;
142
+ fill: #eef;
143
+ }
144
+
145
+ .bar-score {
146
+ font-weight: 500;
147
+ fill: #333;
148
+ pointer-events: none;
149
+ }
150
+
151
+ .date-watermark {
152
+ fill: rgba(0, 0, 0, 0.06);
153
+ font-size: 64px;
154
+ font-weight: 700;
155
+ pointer-events: none;
156
+ font-family: Inter, system-ui, sans-serif;
157
+ }
158
+
159
+ .axis text {
160
+ font-size: 11px;
161
+ fill: #888;
162
+ }
163
+
164
+ .axis .domain { stroke: #ddd; }
165
+ .axis .tick line { stroke: #eee; }
166
+ </style>
167
+ </head>
168
+ <body>
169
+
170
+ <header>
171
+ <h1>Benchmark Leaderboard Race</h1>
172
+ <p>Watch how AI model rankings evolve over time. Scores from
173
+ <a href="https://huggingface.co/docs/hub/en/datasets-leaderboard">HuggingFace Dataset Leaderboards</a>,
174
+ release dates from model repo metadata.</p>
175
+ </header>
176
+
177
+ <div id="controls">
178
+ <label for="benchmark-select">Benchmark:</label>
179
+ <select id="benchmark-select"></select>
180
+ <button class="btn" id="play-btn">&#9654; Play</button>
181
+ <button class="btn" id="reset-btn">&#8634; Reset</button>
182
+ <div class="speed-group">
183
+ <label for="speed-slider">Speed:</label>
184
+ <input type="range" id="speed-slider" min="100" max="2000" value="600" step="50">
185
+ <span id="speed-label">600ms</span>
186
+ </div>
187
+ <span id="frame-info"></span>
188
+ </div>
189
+
190
+ <div id="chart-container">
191
+ <svg id="chart"></svg>
192
+ </div>
193
+
194
+ <script>
195
+ (async function () {
196
+ // ---- Load data ----
197
+ const raw = await d3.json("data.json");
198
+ const logos = raw.logos || {};
199
+ const colors = raw.colors || {};
200
+
201
+ // ---- Config ----
202
+ const topN = 15;
203
+ const margin = { top: 30, right: 90, bottom: 10, left: 6 };
204
+ const width = 1050;
205
+
206
+ // Fit all bars in viewport: subtract header/controls (~140px) from window height
207
+ const availableHeight = Math.max(400, window.innerHeight - 160);
208
+ const barHeight = Math.min(38, Math.floor((availableHeight - margin.top - margin.bottom) / topN));
209
+ const height = margin.top + barHeight * topN + margin.bottom;
210
+
211
+ // ---- Populate dropdown ----
212
+ const select = d3.select("#benchmark-select");
213
+ const benchmarkKeys = Object.keys(raw.benchmarks);
214
+ select.selectAll("option")
215
+ .data(benchmarkKeys)
216
+ .join("option")
217
+ .attr("value", d => d)
218
+ .text(d => raw.benchmarks[d].name);
219
+
220
+ // Default to sweVerified if available
221
+ if (benchmarkKeys.includes("sweVerified")) {
222
+ select.property("value", "sweVerified");
223
+ }
224
+
225
+ // ---- SVG setup ----
226
+ const svg = d3.select("#chart")
227
+ .attr("viewBox", [0, 0, width, height]);
228
+
229
+ const x = d3.scaleLinear().range([margin.left, width - margin.right]);
230
+ const y = d3.scaleBand()
231
+ .domain(d3.range(topN))
232
+ .range([margin.top, margin.top + barHeight * topN])
233
+ .padding(0.12);
234
+
235
+ // Safe y position — returns off-screen bottom for ranks >= topN
236
+ function yPos(rank) {
237
+ if (rank >= topN) return margin.top + barHeight * topN;
238
+ return y(rank) ?? margin.top + barHeight * topN;
239
+ }
240
+
241
+ // Groups (layered bottom to top)
242
+ const watermarkG = svg.append("g");
243
+ const axisG = svg.append("g").attr("class", "axis");
244
+ const barG = svg.append("g");
245
+ const logoG = svg.append("g");
246
+ const nameG = svg.append("g");
247
+ const scoreG = svg.append("g");
248
+
249
+ // Dynamic sizes based on bar height
250
+ const nameFontSize = Math.max(9, Math.min(13, barHeight * 0.36));
251
+ const scoreFontSize = Math.max(8, Math.min(12, barHeight * 0.33));
252
+ const watermarkSize = Math.max(36, Math.min(64, height * 0.11));
253
+
254
+ // Date watermark
255
+ const ticker = watermarkG.append("text")
256
+ .attr("class", "date-watermark")
257
+ .style("font-size", watermarkSize + "px")
258
+ .attr("x", width - margin.right - 10)
259
+ .attr("y", height - 20)
260
+ .attr("text-anchor", "end");
261
+
262
+ // ---- Build keyframes for a benchmark ----
263
+ function buildKeyframes(benchmarkKey) {
264
+ const bm = raw.benchmarks[benchmarkKey];
265
+ if (!bm) return [];
266
+
267
+ const models = bm.models
268
+ .map(m => ({ ...m, dateObj: new Date(m.date) }))
269
+ .sort((a, b) => a.dateObj - b.dateObj);
270
+
271
+ const dateSet = [...new Set(models.map(m => m.date))];
272
+ // dateSet is already sorted because models were sorted
273
+
274
+ const keyframes = [];
275
+ const pool = new Map(); // model_id -> best entry
276
+
277
+ for (const dateStr of dateSet) {
278
+ const newModels = models.filter(m => m.date === dateStr);
279
+ for (const m of newModels) {
280
+ if (!pool.has(m.model_id) || m.score > pool.get(m.model_id).score) {
281
+ pool.set(m.model_id, m);
282
+ }
283
+ }
284
+
285
+ const ranked = [...pool.values()]
286
+ .sort((a, b) => b.score - a.score)
287
+ .slice(0, topN)
288
+ .map((m, i) => ({ ...m, rank: i }));
289
+
290
+ keyframes.push({ date: dateStr, ranked });
291
+ }
292
+
293
+ return keyframes;
294
+ }
295
+
296
+ // ---- State ----
297
+ let keyframes = [];
298
+ let currentFrame = 0;
299
+ let playing = false;
300
+ let frameDuration = 600;
301
+
302
+ function getPrev(frameIdx) {
303
+ if (frameIdx <= 0) return new Map();
304
+ const map = new Map();
305
+ for (const m of keyframes[frameIdx - 1].ranked) {
306
+ map.set(m.model_id, m);
307
+ }
308
+ return map;
309
+ }
310
+
311
+ function getNext(frameIdx) {
312
+ if (frameIdx >= keyframes.length - 1) return new Map();
313
+ const map = new Map();
314
+ for (const m of keyframes[frameIdx + 1].ranked) {
315
+ map.set(m.model_id, m);
316
+ }
317
+ return map;
318
+ }
319
+
320
+ // ---- Render a single frame ----
321
+ function renderFrame(frameIdx, duration) {
322
+ const kf = keyframes[frameIdx];
323
+ if (!kf) return Promise.resolve();
324
+
325
+ const { date, ranked } = kf;
326
+ const prevMap = getPrev(frameIdx);
327
+ const nextMap = getNext(frameIdx);
328
+ const bw = y.bandwidth();
329
+
330
+ // Update x scale
331
+ const maxScore = d3.max(ranked, d => d.score) || 1;
332
+ x.domain([0, maxScore * 1.12]);
333
+
334
+ // Axis
335
+ const t = svg.transition().duration(duration).ease(d3.easeLinear);
336
+
337
+ axisG.transition(t)
338
+ .call(d3.axisTop(x).ticks(6).tickSize(-(height - margin.top - margin.bottom)))
339
+ .attr("transform", `translate(0,${margin.top})`)
340
+ .call(g => g.select(".domain").remove());
341
+
342
+ // Date watermark
343
+ const dateObj = new Date(date);
344
+ const dateLabel = dateObj.toLocaleDateString("en-US", {
345
+ year: "numeric", month: "short", day: "numeric"
346
+ });
347
+ ticker.text(dateLabel);
348
+
349
+ // Frame info
350
+ d3.select("#frame-info").text(`${frameIdx + 1} / ${keyframes.length}`);
351
+
352
+ // Helper: get enter y (from previous frame or off-screen)
353
+ function enterY(d) {
354
+ const p = prevMap.get(d.model_id);
355
+ return yPos(p ? p.rank : topN);
356
+ }
357
+ // Helper: get exit y (to next frame or off-screen)
358
+ function exitY(d) {
359
+ const n = nextMap.get(d.model_id);
360
+ return yPos(n ? n.rank : topN);
361
+ }
362
+
363
+ // ---- Bars ----
364
+ const bars = barG.selectAll("rect").data(ranked, d => d.model_id);
365
+
366
+ bars.join(
367
+ enter => enter.append("rect")
368
+ .attr("fill", d => colors[d.provider] || "#999")
369
+ .attr("rx", 3)
370
+ .attr("height", bw)
371
+ .attr("x", x(0))
372
+ .attr("y", d => enterY(d))
373
+ .attr("width", d => {
374
+ const p = prevMap.get(d.model_id);
375
+ return Math.max(0, x(p ? p.score : 0) - x(0));
376
+ })
377
+ .call(enter => enter.transition(t)
378
+ .attr("y", d => yPos(d.rank))
379
+ .attr("width", d => Math.max(0, x(d.score) - x(0)))
380
+ ),
381
+ update => update.call(update => update.transition(t)
382
+ .attr("y", d => yPos(d.rank))
383
+ .attr("width", d => Math.max(0, x(d.score) - x(0)))
384
+ ),
385
+ exit => exit.call(exit => exit.transition(t)
386
+ .attr("y", d => exitY(d))
387
+ .attr("width", d => {
388
+ const n = nextMap.get(d.model_id);
389
+ return Math.max(0, x(n ? n.score : 0) - x(0));
390
+ })
391
+ .remove()
392
+ )
393
+ );
394
+
395
+ // ---- Model name labels (inside bar, wrapped in <a> for clickability) ----
396
+ const names = nameG.selectAll("a").data(ranked, d => d.model_id);
397
+
398
+ names.join(
399
+ enter => {
400
+ const a = enter.append("a")
401
+ .attr("class", "bar-name-link")
402
+ .attr("href", d => `https://huggingface.co/${d.model_id}`)
403
+ .attr("target", "_blank");
404
+ a.append("text")
405
+ .attr("class", "bar-name")
406
+ .style("font-size", nameFontSize + "px")
407
+ .attr("x", x(0) + 8)
408
+ .attr("y", d => enterY(d) + bw / 2)
409
+ .attr("dy", "0.35em")
410
+ .text(d => d.short_name);
411
+ a.select("text").call(enter => enter.transition(t)
412
+ .attr("y", d => yPos(d.rank) + bw / 2)
413
+ );
414
+ return a;
415
+ },
416
+ update => update.call(update => {
417
+ update.attr("href", d => `https://huggingface.co/${d.model_id}`);
418
+ update.select("text").transition(t)
419
+ .attr("y", d => yPos(d.rank) + bw / 2);
420
+ }),
421
+ exit => exit.call(exit => {
422
+ exit.select("text").transition(t)
423
+ .attr("y", d => exitY(d) + bw / 2);
424
+ exit.transition(t).remove();
425
+ })
426
+ );
427
+
428
+ // ---- Score labels (at end of bar) ----
429
+ const scores = scoreG.selectAll("text").data(ranked, d => d.model_id);
430
+
431
+ scores.join(
432
+ enter => enter.append("text")
433
+ .attr("class", "bar-score")
434
+ .style("font-size", scoreFontSize + "px")
435
+ .attr("x", d => {
436
+ const p = prevMap.get(d.model_id);
437
+ return x(p ? p.score : 0) + 4;
438
+ })
439
+ .attr("y", d => enterY(d) + bw / 2)
440
+ .attr("dy", "0.35em")
441
+ .text(d => d.score.toFixed(1))
442
+ .call(enter => enter.transition(t)
443
+ .attr("x", d => x(d.score) + 4)
444
+ .attr("y", d => yPos(d.rank) + bw / 2)
445
+ .tween("text", function (d) {
446
+ const p = prevMap.get(d.model_id);
447
+ const i = d3.interpolateNumber(p ? p.score : 0, d.score);
448
+ return function (t) { this.textContent = i(t).toFixed(1); };
449
+ })
450
+ ),
451
+ update => update.call(update => update.transition(t)
452
+ .attr("x", d => x(d.score) + 4)
453
+ .attr("y", d => yPos(d.rank) + bw / 2)
454
+ .tween("text", function (d) {
455
+ const prevScore = parseFloat(this.textContent) || 0;
456
+ const i = d3.interpolateNumber(prevScore, d.score);
457
+ return function (t) { this.textContent = i(t).toFixed(1); };
458
+ })
459
+ ),
460
+ exit => exit.call(exit => exit.transition(t)
461
+ .attr("x", d => {
462
+ const n = nextMap.get(d.model_id);
463
+ return x(n ? n.score : 0) + 4;
464
+ })
465
+ .attr("y", d => exitY(d) + bw / 2)
466
+ .remove()
467
+ )
468
+ );
469
+
470
+ // ---- Provider logos (at end of bar, after score) ----
471
+ const logoSize = bw * 0.65;
472
+ const logosData = ranked.filter(d => logos[d.provider]);
473
+
474
+ const logoEls = logoG.selectAll("image").data(logosData, d => d.model_id);
475
+
476
+ logoEls.join(
477
+ enter => enter.append("image")
478
+ .attr("href", d => logos[d.provider])
479
+ .attr("width", logoSize)
480
+ .attr("height", logoSize)
481
+ .attr("x", d => {
482
+ const p = prevMap.get(d.model_id);
483
+ return x(p ? p.score : 0) + 40;
484
+ })
485
+ .attr("y", d => enterY(d) + (bw - logoSize) / 2)
486
+ .call(enter => enter.transition(t)
487
+ .attr("x", d => x(d.score) + 40)
488
+ .attr("y", d => yPos(d.rank) + (bw - logoSize) / 2)
489
+ ),
490
+ update => update.call(update => update.transition(t)
491
+ .attr("x", d => x(d.score) + 40)
492
+ .attr("y", d => yPos(d.rank) + (bw - logoSize) / 2)
493
+ ),
494
+ exit => exit.call(exit => exit.transition(t)
495
+ .attr("x", d => {
496
+ const n = nextMap.get(d.model_id);
497
+ return x(n ? n.score : 0) + 40;
498
+ })
499
+ .attr("y", d => exitY(d) + (bw - logoSize) / 2)
500
+ .remove()
501
+ )
502
+ );
503
+
504
+ return t.end().catch(() => {});
505
+ }
506
+
507
+ // ---- Animation ----
508
+ function setClickable(enabled) {
509
+ nameG.classed("clickable", enabled);
510
+ }
511
+
512
+ async function play() {
513
+ if (playing) return;
514
+ playing = true;
515
+ setClickable(false);
516
+ d3.select("#play-btn").html("&#9646;&#9646; Pause");
517
+
518
+ for (let i = currentFrame; i < keyframes.length; i++) {
519
+ if (!playing) break;
520
+ currentFrame = i;
521
+ await renderFrame(i, frameDuration);
522
+ }
523
+
524
+ playing = false;
525
+ setClickable(true);
526
+ d3.select("#play-btn").html("&#9654; Play");
527
+ }
528
+
529
+ function pause() {
530
+ playing = false;
531
+ d3.select("#play-btn").html("&#9654; Play");
532
+ }
533
+
534
+ function clearChart() {
535
+ barG.selectAll("*").remove();
536
+ nameG.selectAll("*").remove();
537
+ scoreG.selectAll("*").remove();
538
+ logoG.selectAll("*").remove();
539
+ ticker.text("");
540
+ setClickable(false);
541
+ }
542
+
543
+ function reset() {
544
+ pause();
545
+ currentFrame = 0;
546
+ clearChart();
547
+ d3.select("#frame-info").text("");
548
+ if (keyframes.length > 0) {
549
+ renderFrame(0, 0);
550
+ }
551
+ }
552
+
553
+ function loadBenchmark(key) {
554
+ pause();
555
+ keyframes = buildKeyframes(key);
556
+ currentFrame = 0;
557
+ clearChart();
558
+ if (keyframes.length > 0) {
559
+ renderFrame(0, 0);
560
+ }
561
+ d3.select("#frame-info").text(keyframes.length > 0 ? `1 / ${keyframes.length}` : "No data");
562
+ }
563
+
564
+ // ---- Event listeners ----
565
+ d3.select("#play-btn").on("click", () => {
566
+ if (playing) {
567
+ pause();
568
+ } else {
569
+ if (currentFrame >= keyframes.length - 1) {
570
+ currentFrame = 0;
571
+ }
572
+ play();
573
+ }
574
+ });
575
+
576
+ d3.select("#reset-btn").on("click", reset);
577
+
578
+ d3.select("#benchmark-select").on("change", function () {
579
+ loadBenchmark(this.value);
580
+ });
581
+
582
+ d3.select("#speed-slider").on("input", function () {
583
+ frameDuration = +this.value;
584
+ d3.select("#speed-label").text(this.value + "ms");
585
+ });
586
+
587
+ // ---- Initialize: load default benchmark and auto-play ----
588
+ const defaultKey = benchmarkKeys.includes("sweVerified") ? "sweVerified" : benchmarkKeys[0];
589
+ if (defaultKey) {
590
+ loadBenchmark(defaultKey);
591
+ // Auto-start animation after a brief delay for the page to settle
592
+ setTimeout(() => play(), 400);
593
+ }
594
+ })();
595
+ </script>
596
+ </body>
597
  </html>