florian-chutes commited on
Commit
0a347b6
·
verified ·
1 Parent(s): 8ffff45

Initial JevBench leaderboard Space

Browse files
Files changed (1) hide show
  1. index.html +147 -17
index.html CHANGED
@@ -1,19 +1,149 @@
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" data-theme="dark">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <title>JevBench — the open benchmark for Jev-class decision models</title>
7
+ <meta name="description" content="Live leaderboard for JevBench: an open benchmark for Jev-class decision models, scored on intelligence, calibration, speed, and cost.">
8
+ <link rel="stylesheet" href="style.css">
9
+ </head>
10
+ <body>
11
+ <main>
12
+ <header class="top">
13
+ <span class="wordmark">Benchmark Heaven</span>
14
+ <button class="theme-toggle" id="themeToggle" type="button">Toggle light / dark</button>
15
+ </header>
16
+
17
+ <div class="tag">Open benchmark</div>
18
+ <h1>JevBench</h1>
19
+ <p class="lede">The open benchmark for Jev-class decision models. One bounded rubric in, one answer distribution out — measured on intelligence above chance, calibration, speed, and cost.</p>
20
+
21
+ <div class="actions">
22
+ <a class="btn primary" href="https://benchmarkheaven.com/jev-models" target="_blank" rel="noopener">Explore the full interactive board</a>
23
+ <a class="btn" href="https://github.com/fstandhartinger/jevbench" target="_blank" rel="noopener">Code &amp; method</a>
24
+ <a class="btn" href="https://github.com/fstandhartinger/jevbench/issues" target="_blank" rel="noopener">Submit a system</a>
25
+ </div>
26
+
27
+ <div class="facts">
28
+ <div class="fact"><b id="systemsCount">—</b><span>ranked systems</span></div>
29
+ <div class="fact"><b>534</b><span>decisions per complete run</span></div>
30
+ <div class="fact"><b>4</b><span>equally weighted axes</span></div>
31
+ <div class="fact"><b id="revision">—</b><span>current revision</span></div>
32
+ </div>
33
+
34
+ <h2>How the score works</h2>
35
+ <div class="method">
36
+ <div class="method-card"><b>Intelligence</b><span>Accuracy above chance, per tier (easy, standard, judge, hard), clipped at 0 and tier-weighted.</span></div>
37
+ <div class="method-card"><b>Calibration</b><span>Hard-tier expected calibration error plus fidelity to the exact gold probability distribution.</span></div>
38
+ <div class="method-card"><b>Speed</b><span>Serial p50 and p95 latency on a logarithmic scale, self-hosted endpoints adjusted for production load.</span></div>
39
+ <div class="method-card"><b>Cost</b><span>USD per 1,000 complete decisions — a whole question, not per 1,000 tokens.</span></div>
40
+ </div>
41
+ <p class="formula" id="formula">JevBench Score (v1.3): geometric mean of Intelligence, Calibration, Speed and Cost, 25% each. If chance-corrected Intelligence is below 50, the composite gets a growing <code>(Intelligence / 50)²</code> penalty; at or above 50 there is no penalty.</p>
42
+
43
+ <h2>Current leaderboard</h2>
44
+ <p class="note" id="sourceNote">Loading the live public results…</p>
45
+ <div class="table-wrap">
46
+ <table>
47
+ <thead>
48
+ <tr>
49
+ <th>Rank &amp; system</th>
50
+ <th>Class</th>
51
+ <th>Score</th>
52
+ <th>Intelligence</th>
53
+ <th>Calibration</th>
54
+ <th>Speed</th>
55
+ <th>Cost</th>
56
+ <th>USD / 1k decisions</th>
57
+ <th>Licence</th>
58
+ </tr>
59
+ </thead>
60
+ <tbody id="board"><tr><td colspan="9">Loading current results…</td></tr></tbody>
61
+ </table>
62
+ </div>
63
+
64
+ <h2>Submit a system</h2>
65
+ <p class="lede">Open an issue in the <a href="https://github.com/fstandhartinger/jevbench/issues" style="color:var(--accent)">JevBench repository</a> with a public endpoint or reproducible serving instructions. Mappings and evaluation conditions are documented before aggregation; held-out tasks are never sent to submitter-operated endpoints.</p>
66
+
67
+ <footer class="foot">
68
+ JevBench is maintained by <a href="https://benchmarkheaven.com" target="_blank" rel="noopener">Benchmark Heaven</a> and is not affiliated with or endorsed by TypeSafe AI.
69
+ Jev is one of the systems evaluated, not the benchmark owner. See the full board at
70
+ <a href="https://benchmarkheaven.com/jev-models" target="_blank" rel="noopener">benchmarkheaven.com/jev-models</a> and the method at
71
+ <a href="https://github.com/fstandhartinger/jevbench" target="_blank" rel="noopener">github.com/fstandhartinger/jevbench</a>.
72
+ </footer>
73
+ </main>
74
+
75
+ <script>
76
+ (function () {
77
+ var root = document.documentElement;
78
+ var saved = localStorage.getItem('jevbench-theme');
79
+ if (saved) root.setAttribute('data-theme', saved);
80
+ else if (window.matchMedia && window.matchMedia('(prefers-color-scheme: light)').matches) root.setAttribute('data-theme', 'light');
81
+ document.getElementById('themeToggle').addEventListener('click', function () {
82
+ var next = root.getAttribute('data-theme') === 'dark' ? 'light' : 'dark';
83
+ root.setAttribute('data-theme', next);
84
+ localStorage.setItem('jevbench-theme', next);
85
+ });
86
+ })();
87
+
88
+ const LIVE_URL = 'https://benchmarkheaven.com/api/jevbench/v1.2';
89
+ const SNAPSHOT_URL = 'snapshot.json';
90
+ const f = n => Number.isFinite(+n) ? (+n).toFixed(1) : '—';
91
+ const money = v => (v == null ? '—' : 'USD ' + Number(v).toPrecision(3));
92
+
93
+ function bar(v) {
94
+ const pct = Math.max(0, Math.min(100, +v || 0));
95
+ return '<span class="bar-cell"><span class="bar-track"><span class="bar-fill" style="width:' + pct + '%"></span></span><span class="bar-num">' + f(v) + '</span></span>';
96
+ }
97
+
98
+ function render(rows, meta) {
99
+ document.getElementById('systemsCount').textContent = rows.length;
100
+ document.getElementById('revision').textContent = meta.revision || '—';
101
+ document.getElementById('board').innerHTML = rows.map(function (x, i) {
102
+ const rank = x.rank || (i + 1);
103
+ const name = x.repo ? '<a class="sys-name" href="' + x.repo + '" target="_blank" rel="noopener">' + x.display + '</a>' : '<span class="sys-name">' + x.display + '</span>';
104
+ return '<tr>' +
105
+ '<td><span class="rank">' + rank + '.</span>' + name + '</td>' +
106
+ '<td><span class="badge">' + (x.class || '—') + '</span></td>' +
107
+ '<td class="score">' + f(x.jevbench_score) + '</td>' +
108
+ '<td>' + bar(x.axes && x.axes.intelligence) + '</td>' +
109
+ '<td>' + bar(x.axes && x.axes.calibration) + '</td>' +
110
+ '<td>' + bar(x.axes && x.axes.speed) + '</td>' +
111
+ '<td>' + bar(x.axes && x.axes.cost) + '</td>' +
112
+ '<td>' + money(x.cost_usd_per_1000 != null ? x.cost_usd_per_1000 : (x.cost && x.cost.usd_per_1000)) + '</td>' +
113
+ '<td>' + (x.licence || '—') + '</td>' +
114
+ '</tr>';
115
+ }).join('');
116
+ }
117
+
118
+ function fromLive(d) {
119
+ const rows = (d.systems || [])
120
+ .filter(x => x.ranked && !x.partial)
121
+ .sort((a, b) => (b.jevbench_score || 0) - (a.jevbench_score || 0));
122
+ render(rows, d);
123
+ document.getElementById('sourceNote').textContent =
124
+ 'Live from benchmarkheaven.com — revision ' + (d.revision || '—') + ', generated ' + (d.generated_utc ? d.generated_utc.slice(0, 10) : '—') + '. Partial runs and honorable mentions are omitted here; the full site preserves them.';
125
+ document.getElementById('sourceNote').className = 'note';
126
+ }
127
+
128
+ function fromSnapshot(d) {
129
+ render(d.systems || [], d);
130
+ document.getElementById('sourceNote').textContent =
131
+ 'Live fetch was blocked by the browser, so this is a dated snapshot committed in this Space — revision ' + (d.revision || '—') + ', generated ' + (d.generated_utc ? d.generated_utc.slice(0, 10) : '—') + '. For the live board, use the link above.';
132
+ document.getElementById('sourceNote').className = 'note warn';
133
+ }
134
+
135
+ fetch(LIVE_URL, { cache: 'no-store' })
136
+ .then(r => { if (!r.ok) throw new Error('HTTP ' + r.status); return r.json(); })
137
+ .then(fromLive)
138
+ .catch(function () {
139
+ fetch(SNAPSHOT_URL)
140
+ .then(r => r.json())
141
+ .then(fromSnapshot)
142
+ .catch(function (e) {
143
+ document.getElementById('board').innerHTML = '<tr><td class="error" colspan="9">Could not load results. Use the full leaderboard link above. (' + e.message + ')</td></tr>';
144
+ document.getElementById('sourceNote').textContent = 'Could not load any leaderboard data.';
145
+ });
146
+ });
147
+ </script>
148
+ </body>
149
  </html>