frangelbarrera commited on
Commit
0048c40
·
verified ·
1 Parent(s): 3c88135

Publish Ling-3 evaluation explorer dashboard

Browse files
Files changed (4) hide show
  1. app.js +60 -0
  2. dashboard_data.json +110 -0
  3. index.html +67 -17
  4. styles.css +1 -0
app.js ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ const pretty = {
2
+ phase1_reasoning_bug: 'Reasoning budget',
3
+ phase2_benchmarks: 'Capability probes',
4
+ phase6_security: 'Security behavior',
5
+ phase7_codereview: 'Code review',
6
+ phase8_comparison: 'Head-to-head',
7
+ phase11_hallucination: 'Hallucination',
8
+ phase12_formats: 'Format following',
9
+ phase13_variance: 'Variance',
10
+ phase16_edge_cases: 'Edge cases',
11
+ v6_tool_calling: 'Tool calling',
12
+ v6_long_context: 'Long context',
13
+ v6_multiturn: 'Multi-turn coding',
14
+ completed: 'Completed',
15
+ truncated_response: 'Truncated',
16
+ empty_length: 'Empty / length',
17
+ empty_response: 'Empty response',
18
+ api_error: 'API error',
19
+ standard: 'Standard schema',
20
+ v6_messages: 'v6 message schema',
21
+ v6_messages_tools: 'v6 message + tools'
22
+ };
23
+
24
+ const $ = (selector) => document.querySelector(selector);
25
+ const label = (value) => pretty[value] || value.replaceAll('_', ' ');
26
+ const percent = (value, total) => `${Math.round((value / total) * 100)}%`;
27
+
28
+ function renderBars(target, items, total) {
29
+ const max = Math.max(...items.map(item => item.count));
30
+ $(target).innerHTML = items.map(item => `
31
+ <div class="bar-row">
32
+ <span class="bar-label" title="${label(item.name)}">${label(item.name)}</span>
33
+ <span class="bar-track"><span class="bar-fill" style="width:${(item.count / max) * 100}%"></span></span>
34
+ <span class="bar-value">${item.count}</span>
35
+ </div>`).join('');
36
+ }
37
+
38
+ function renderPhases(items) {
39
+ $('#phases').innerHTML = items.map(item => `
40
+ <div class="phase-card"><strong>${item.count}</strong><span>${label(item.name)}</span></div>`).join('');
41
+ }
42
+
43
+ fetch('dashboard_data.json')
44
+ .then(response => {
45
+ if (!response.ok) throw new Error('dashboard_data.json unavailable');
46
+ return response.json();
47
+ })
48
+ .then(data => {
49
+ $('#records').textContent = data.records;
50
+ renderBars('#results', data.results, data.records);
51
+ renderBars('#schemas', data.schemas, data.records);
52
+ renderPhases(data.phases);
53
+ })
54
+ .catch(error => {
55
+ console.error(error);
56
+ $('#records').textContent = '—';
57
+ document.querySelectorAll('.bar-list, .phase-grid').forEach(node => {
58
+ node.innerHTML = '<p class="note">Unable to load the local aggregate summary.</p>';
59
+ });
60
+ });
dashboard_data.json ADDED
@@ -0,0 +1,110 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "records": 845,
3
+ "phases": [
4
+ {
5
+ "name": "phase11_hallucination",
6
+ "count": 50
7
+ },
8
+ {
9
+ "name": "phase12_formats",
10
+ "count": 32
11
+ },
12
+ {
13
+ "name": "phase13_variance",
14
+ "count": 50
15
+ },
16
+ {
17
+ "name": "phase16_edge_cases",
18
+ "count": 20
19
+ },
20
+ {
21
+ "name": "phase1_reasoning_bug",
22
+ "count": 288
23
+ },
24
+ {
25
+ "name": "phase2_benchmarks",
26
+ "count": 75
27
+ },
28
+ {
29
+ "name": "phase6_security",
30
+ "count": 50
31
+ },
32
+ {
33
+ "name": "phase7_codereview",
34
+ "count": 70
35
+ },
36
+ {
37
+ "name": "phase8_comparison",
38
+ "count": 57
39
+ },
40
+ {
41
+ "name": "v6_long_context",
42
+ "count": 66
43
+ },
44
+ {
45
+ "name": "v6_multiturn",
46
+ "count": 35
47
+ },
48
+ {
49
+ "name": "v6_tool_calling",
50
+ "count": 52
51
+ }
52
+ ],
53
+ "results": [
54
+ {
55
+ "name": "api_error",
56
+ "count": 63
57
+ },
58
+ {
59
+ "name": "completed",
60
+ "count": 680
61
+ },
62
+ {
63
+ "name": "empty_length",
64
+ "count": 52
65
+ },
66
+ {
67
+ "name": "empty_response",
68
+ "count": 25
69
+ },
70
+ {
71
+ "name": "truncated_response",
72
+ "count": 25
73
+ }
74
+ ],
75
+ "schemas": [
76
+ {
77
+ "name": "standard",
78
+ "count": 692
79
+ },
80
+ {
81
+ "name": "v6_messages",
82
+ "count": 101
83
+ },
84
+ {
85
+ "name": "v6_messages_tools",
86
+ "count": 52
87
+ }
88
+ ],
89
+ "errors_by_status": [
90
+ {
91
+ "name": "200",
92
+ "count": 1
93
+ },
94
+ {
95
+ "name": "400",
96
+ "count": 7
97
+ },
98
+ {
99
+ "name": "429",
100
+ "count": 55
101
+ }
102
+ ],
103
+ "privacy": {
104
+ "raw_prompts": false,
105
+ "raw_responses": false,
106
+ "reasoning_traces": false,
107
+ "tool_payloads": false,
108
+ "raw_errors": false
109
+ }
110
+ }
index.html CHANGED
@@ -1,19 +1,69 @@
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>Ling-3.0-flash Evaluation Explorer</title>
7
+ <link rel="stylesheet" href="styles.css">
8
+ </head>
9
+ <body>
10
+ <header class="hero">
11
+ <div class="eyebrow">INDEPENDENT MODEL EVALUATION · SANITIZED EVALUATION RELEASE</div>
12
+ <h1>Ling-3.0-flash<br><span>Evaluation Explorer</span></h1>
13
+ <p class="lede">A transparent view of 845 structured evaluation records across reasoning, security, tool calling, long context, multilingual behavior, and reliability.</p>
14
+ <div class="hero-meta"><span>Target: inclusionai/ling-3.0-flash:free</span><span>Provider: OpenRouter</span><span>Release: v1 · v3 + v6 sessions</span></div>
15
+ </header>
16
+
17
+ <main class="container">
18
+ <section class="metrics" aria-label="Evaluation summary">
19
+ <article class="metric-card"><strong id="records">—</strong><span>evaluation records</span></article>
20
+ <article class="metric-card"><strong>12</strong><span>test phases</span></article>
21
+ <article class="metric-card"><strong>680</strong><span>completed responses</span></article>
22
+ <article class="metric-card accent"><strong>100%</strong><span>payload-free public release</span></article>
23
+ </section>
24
+
25
+ <section class="grid two-col">
26
+ <article class="panel">
27
+ <div class="panel-kicker">OUTCOME DISTRIBUTION</div>
28
+ <h2>What happened in the API runs?</h2>
29
+ <div id="results" class="bar-list"></div>
30
+ </article>
31
+ <article class="panel">
32
+ <div class="panel-kicker">SCHEMA COVERAGE</div>
33
+ <h2>Three source schemas, one public view</h2>
34
+ <div id="schemas" class="bar-list"></div>
35
+ <p class="note">The release normalizes the historical standard schema and the v6 message/tool schemas without publishing the original message content.</p>
36
+ </article>
37
+ </section>
38
+
39
+ <section class="panel">
40
+ <div class="panel-kicker">PHASE COVERAGE</div>
41
+ <h2>Evaluation surface</h2>
42
+ <p class="subtle">The largest controlled sweep is the reasoning-budget characterization. Security, context, multi-turn, and tool-calling phases remain separately identifiable.</p>
43
+ <div id="phases" class="phase-grid"></div>
44
+ </section>
45
+
46
+ <section class="grid two-col">
47
+ <article class="panel dark-panel">
48
+ <div class="panel-kicker">PUBLICATION SAFETY</div>
49
+ <h2>What this release intentionally omits</h2>
50
+ <div class="safety-list">
51
+ <div><span class="check">✓</span><span>Raw prompts and system messages</span></div>
52
+ <div><span class="check">✓</span><span>Visible model responses</span></div>
53
+ <div><span class="check">✓</span><span>Reasoning traces</span></div>
54
+ <div><span class="check">✓</span><span>Tool payloads and raw errors</span></div>
55
+ </div>
56
+ </article>
57
+ <article class="panel">
58
+ <div class="panel-kicker">INTERPRETATION</div>
59
+ <h2>Research artifact, not a leaderboard</h2>
60
+ <p class="body-copy">These records support transparent analysis of behavior under stated conditions. They do not constitute an official benchmark, safety certification, or production guarantee. The source report remains the canonical reference for methodology and semantic judgments.</p>
61
+ <div class="link-row"><a class="source-link" href="https://huggingface.co/datasets/frangelbarrera/ling-3-flash-evaluation" target="_blank" rel="noreferrer">View public dataset ↗</a><a class="source-link" href="https://github.com/frangelbarrera/Ling-3-flash-evaluation" target="_blank" rel="noreferrer">View source repository ↗</a></div>
62
+ </article>
63
+ </section>
64
+
65
+ <footer><span>Ling-3.0-flash Evaluation</span><span>Sanitized public release · v1.0.0</span></footer>
66
+ </main>
67
+ <script src="app.js"></script>
68
+ </body>
69
  </html>
styles.css ADDED
@@ -0,0 +1 @@
 
 
1
+ :root{--ink:#142126;--muted:#65757a;--line:#dbe4e3;--paper:#f6f8f7;--card:#fff;--mint:#b9f2d0;--teal:#19736d;--navy:#112c35;--orange:#f0a36a}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;line-height:1.5}.hero{background:var(--navy);color:#f5faf7;padding:72px max(24px,calc((100% - 1180px)/2)) 58px;position:relative;overflow:hidden}.hero:after{content:"";position:absolute;width:420px;height:420px;border-radius:50%;right:-110px;top:-170px;background:rgba(185,242,208,.12)}.eyebrow,.panel-kicker{font-size:11px;letter-spacing:.16em;font-weight:800;color:var(--teal)}.hero .eyebrow{color:var(--mint)}h1{font-size:clamp(42px,7vw,78px);line-height:.98;letter-spacing:-.06em;margin:18px 0 26px;max-width:760px}h1 span{color:var(--mint)}.lede{font-size:18px;max-width:690px;color:#cbd9d8;margin:0 0 28px}.hero-meta{display:flex;flex-wrap:wrap;gap:10px;color:#9fb5b4;font-size:12px}.hero-meta span{border:1px solid #34505a;border-radius:999px;padding:7px 11px}.container{max-width:1180px;margin:0 auto;padding:30px 24px 60px}.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:-58px;position:relative}.metric-card{background:var(--card);border:1px solid var(--line);padding:20px 18px;border-radius:16px;box-shadow:0 12px 30px rgba(17,44,53,.08)}.metric-card strong{display:block;font-size:34px;letter-spacing:-.05em}.metric-card span{color:var(--muted);font-size:13px}.metric-card.accent{background:var(--mint);border-color:var(--mint)}.grid{display:grid;gap:18px;margin-top:18px}.two-col{grid-template-columns:1fr 1fr}.panel{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:26px}.panel h2{font-size:24px;letter-spacing:-.04em;margin:7px 0 18px}.panel-kicker{color:var(--teal)}.subtle,.note{color:var(--muted);font-size:14px}.bar-list{display:grid;gap:14px}.bar-row{display:grid;grid-template-columns:145px 1fr 44px;align-items:center;gap:10px;font-size:13px}.bar-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bar-track{height:9px;background:#edf2f1;border-radius:20px;overflow:hidden}.bar-fill{height:100%;background:var(--teal);border-radius:20px}.bar-value{text-align:right;font-weight:750}.phase-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.phase-card{border:1px solid var(--line);border-radius:12px;padding:13px;background:#fbfcfc}.phase-card strong{font-size:25px;display:block;letter-spacing:-.05em}.phase-card span{font-size:12px;color:var(--muted)}.dark-panel{background:var(--navy);color:#edf7f2;border-color:var(--navy)}.dark-panel .panel-kicker{color:var(--mint)}.safety-list{display:grid;gap:12px;margin-top:18px}.safety-list div{display:flex;align-items:center;gap:10px;color:#cbd9d8}.check{display:grid;place-items:center;width:24px;height:24px;border-radius:50%;background:var(--mint);color:var(--navy);font-weight:900}.body-copy{color:var(--muted);font-size:14px}.source-link{display:inline-block;margin-top:8px;color:var(--teal);font-weight:800;text-decoration:none}.source-link:hover{text-decoration:underline}footer{display:flex;justify-content:space-between;border-top:1px solid var(--line);padding-top:20px;margin-top:34px;color:var(--muted);font-size:12px}@media(max-width:760px){.metrics,.two-col{grid-template-columns:1fr 1fr}.phase-grid{grid-template-columns:1fr 1fr}.bar-row{grid-template-columns:105px 1fr 35px}.hero{padding-top:52px}}@media(max-width:500px){.metrics,.two-col,.phase-grid{grid-template-columns:1fr}.container{padding-left:16px;padding-right:16px}.panel{padding:20px}.hero{padding-left:20px;padding-right:20px}footer{display:grid;gap:5px}}