alphabell-research's picture
Publish alphaBell Qwen Open research release
394e701 verified
Raw History Blame Contribute Delete
3.79 kB
"use strict";
let records = null;
let outcomeFilter = "all";
const $ = id => document.getElementById(id);
const percent = (passed, total) => `${(100 * passed / total).toFixed(2)}%`;
function render() {
if (!records) return;
const dataset = $("dataset").value;
const field = $("suite").value;
const runs = records.results.filter(run => run.dataset === dataset);
const parent = runs.find(run => run.model.startsWith("Qwen/"));
const final = runs.find(run => run.model.includes("alphaBell"));
if (!parent || !final) throw new Error("Missing evaluation comparison");
const parentTasks = new Map(parent.tasks.map(task => [task.task_id, task]));
const rows = final.tasks.map(task => {
const original = parentTasks.get(task.task_id);
if (!original) throw new Error("Missing paired task");
const before = original[field] === "pass";
const after = task[field] === "pass";
return { id: task.task_id, before, after, outcome: before === after ? "unchanged" : after ? "improvement" : "regression" };
}).sort((a, b) => a.id.localeCompare(b.id, undefined, { numeric: true }));
const total = rows.length;
const basePassed = rows.filter(row => row.before).length;
const finalPassed = rows.filter(row => row.after).length;
const improvements = rows.filter(row => row.outcome === "improvement").length;
const regressions = rows.filter(row => row.outcome === "regression").length;
const delta = 100 * (finalPassed - basePassed) / total;
$("base-score").textContent = percent(basePassed, total);
$("final-score").textContent = percent(finalPassed, total);
$("base-count").textContent = `${basePassed} / ${total} tasks passed`;
$("final-count").textContent = `${finalPassed} / ${total} tasks passed`;
$("delta").textContent = `${delta > 0 ? "+" : ""}${delta.toFixed(2)} pp`;
$("change-count").textContent = `${improvements} improved · ${regressions} regressed`;
const query = $("search").value.trim().toLowerCase();
const visible = rows.filter(row => (outcomeFilter === "all" || row.outcome === outcomeFilter) && row.id.toLowerCase().includes(query));
const fragment = document.createDocumentFragment();
for (const row of visible) {
const tr = document.createElement("tr");
const id = document.createElement("th");
id.scope = "row";
id.textContent = row.id;
tr.append(id);
for (const passed of [row.before, row.after]) {
const td = document.createElement("td");
td.className = `status ${passed ? "pass" : "fail"}`;
td.textContent = passed ? "Pass" : "Fail";
tr.append(td);
}
const td = document.createElement("td");
const badge = document.createElement("span");
badge.className = `outcome ${row.outcome}`;
badge.textContent = { improvement: "Improved", regression: "Regressed", unchanged: "Unchanged" }[row.outcome];
td.append(badge);
tr.append(td);
fragment.append(tr);
}
$("tasks").replaceChildren(fragment);
$("row-count").textContent = `${visible.length} of ${total} tasks`;
$("empty").hidden = visible.length !== 0;
}
for (const id of ["dataset", "suite"]) $(id).addEventListener("change", render);
$("search").addEventListener("input", render);
for (const button of document.querySelectorAll("[data-filter]")) {
button.addEventListener("click", () => {
outcomeFilter = button.dataset.filter;
for (const filter of document.querySelectorAll("[data-filter]")) filter.setAttribute("aria-pressed", String(filter === button));
render();
});
}
fetch("data/results.json")
.then(response => { if (!response.ok) throw new Error("Evaluation request failed"); return response.json(); })
.then(data => { records = data; render(); })
.catch(() => { $("error").hidden = false; $("row-count").textContent = "Evaluation unavailable"; });