from __future__ import annotations
import base64
import hashlib
import html
import json
import os
import shlex
import tempfile
from datetime import UTC, datetime
from pathlib import Path
from typing import Any
from urllib.parse import quote
import gradio as gr
import pandas as pd
try:
from lab_api import SpaceLabError, score_completion, score_payload
except ModuleNotFoundError: # repository-root imports used by CI
from hf.space.lab_api import SpaceLabError, score_completion, score_payload
HERE = Path(__file__).resolve().parent
BUNDLE_PATH = Path(
os.environ.get(
"FLAVOURBENCH_BUNDLE",
HERE / "data-complete-core" / "flavourbench-complete-core-space.json",
)
)
RUST = "#A83D34"
INK = "#161817"
PAPER_URL = "https://arxiv.org/abs/2608.20574"
DATASET_URL = "https://huggingface.co/datasets/josefchen/flavourbench"
SOURCE_URL = "https://github.com/josefchen/flavourbench"
DATASET_RESULTS_URL = (
"https://huggingface.co/datasets/josefchen/flavourbench/resolve/main/"
"data-complete-core/leaderboard.jsonl?download=true"
)
SUBMISSION_GUIDE_URL = (
"https://github.com/josefchen/flavourbench/blob/main/docs/submitting-results.md"
)
SUBMIT_RESULT_URL = (
"https://github.com/josefchen/flavourbench/issues/new?template=flavourbench-result.yml"
)
LAB_LOGO_FILES = {
"xAI": "xai.svg",
"Google": "google.svg",
"OpenAI": "openai.svg",
"Meta": "meta.svg",
"Anthropic": "anthropic.svg",
"Qwen": "qwen.svg",
"Kimi": "kimi.svg",
"DeepSeek": "deepseek.svg",
"Tencent": "tencent.svg",
"MiniMax": "minimax.svg",
}
def _asset_url(path: Path) -> str:
"""Serve one verified release asset through Gradio's allowlisted file route."""
if path.is_symlink() or not path.is_file():
raise FileNotFoundError(f"Space asset not found: {path}")
resolved = path.resolve()
if not resolved.is_relative_to((HERE / "assets").resolve()):
raise ValueError(f"Space asset is outside the public asset directory: {path}")
return f"/gradio_api/file={quote(str(resolved), safe='/')}"
def _font_data_url(path: Path) -> str:
"""Inline the small launch-font subsets before Gradio lays out the page."""
if path.is_symlink() or not path.is_file() or path.suffix.lower() != ".woff2":
raise FileNotFoundError(f"Space font not found: {path}")
resolved = path.resolve()
if not resolved.is_relative_to((HERE / "assets/fonts").resolve()):
raise ValueError(f"Space font is outside the public font directory: {path}")
return "data:font/woff2;base64," + base64.b64encode(path.read_bytes()).decode("ascii")
LAB_LOGO_URLS = {
lab: _asset_url(HERE / "assets" / "providers" / filename)
for lab, filename in LAB_LOGO_FILES.items()
}
ARCHITECTURE_URL = _asset_url(HERE / "assets" / "executable-judge.svg")
FONT_URLS = {
"lato_regular": _font_data_url(HERE / "assets/fonts/Lato-Regular.woff2"),
"lato_semibold": _font_data_url(HERE / "assets/fonts/Lato-Semibold.woff2"),
"lato_bold": _font_data_url(HERE / "assets/fonts/Lato-Bold.woff2"),
"lato_black": _font_data_url(HERE / "assets/fonts/Lato-Black.woff2"),
"mono_regular": _font_data_url(HERE / "assets/fonts/DejaVuSansMono-Regular.woff2"),
"mono_bold": _font_data_url(HERE / "assets/fonts/DejaVuSansMono-Bold.woff2"),
}
FONT_CSS = f"""
@font-face {{
font-family: "Lato";
font-style: normal;
font-weight: 400;
font-display: block;
src: url("{FONT_URLS["lato_regular"]}") format("woff2");
}}
@font-face {{
font-family: "Lato";
font-style: normal;
font-weight: 600;
font-display: block;
src: url("{FONT_URLS["lato_semibold"]}") format("woff2");
}}
@font-face {{
font-family: "Lato";
font-style: normal;
font-weight: 700;
font-display: block;
src: url("{FONT_URLS["lato_bold"]}") format("woff2");
}}
@font-face {{
font-family: "Lato";
font-style: normal;
font-weight: 900;
font-display: block;
src: url("{FONT_URLS["lato_black"]}") format("woff2");
}}
@font-face {{
font-family: "DejaVu Sans Mono";
font-style: normal;
font-weight: 400;
font-display: block;
src: url("{FONT_URLS["mono_regular"]}") format("woff2");
}}
@font-face {{
font-family: "DejaVu Sans Mono";
font-style: normal;
font-weight: 700;
font-display: block;
src: url("{FONT_URLS["mono_bold"]}") format("woff2");
}}
"""
CSS = """
:root {
--fb-accent: #A83D34;
--fb-accent-soft: #F1DFDC;
--fb-ink: #161817;
--fb-muted: #68706C;
--fb-line: #56605B;
--fb-paper: #F6F7F5;
--fb-paper-raised: #FBFCFA;
--fb-rule: #DDE1DE;
--fb-code: #ECEFEC;
--fb-z-nav: 20;
}
.dark {
--fb-accent: #EF796D;
--fb-accent-soft: #422723;
--fb-ink: #F0EFE9;
--fb-muted: #A9ACA3;
--fb-line: #B1B7B3;
--fb-paper: #171815;
--fb-paper-raised: #20211E;
--fb-rule: #41433D;
--fb-code: #2A2B27;
}
html { scroll-behavior: smooth; }
body, .gradio-container {
background: var(--fb-paper) !important;
color: var(--fb-ink) !important;
font-family: "Lato", "Avenir Next", system-ui, sans-serif !important;
}
#huggingface-space-header {
background: var(--fb-paper-raised) !important;
background-image: none !important;
border: 0 !important;
border-radius: 0 !important;
box-shadow: none !important;
display: none !important;
}
#huggingface-space-header a {
font-family: "Lato", "Avenir Next", system-ui, sans-serif !important;
}
.gradio-container {
max-width: none !important;
overflow: visible !important;
padding: 0 !important;
}
.gradio-container > main { padding: 0 !important; }
.fb-shell {
box-sizing: border-box;
margin: 0 auto;
max-width: 1440px;
padding-left: clamp(22px, 4vw, 62px);
padding-right: clamp(22px, 4vw, 62px);
}
.fb-masthead {
align-items: center;
display: flex;
justify-content: space-between;
padding-bottom: 7px;
padding-top: 18px;
}
.fb-masthead-brand {
align-items: baseline;
display: flex;
gap: 14px;
min-width: 0;
}
.fb-masthead-brand strong {
color: var(--fb-ink);
font-size: 15px;
font-weight: 900;
letter-spacing: -.03em;
}
.fb-masthead-brand span {
color: var(--fb-muted);
font-family: "DejaVu Sans Mono", ui-monospace, monospace;
font-size: 9px;
letter-spacing: .05em;
text-transform: uppercase;
}
.fb-masthead nav { display: flex; gap: 22px; }
.fb-masthead a {
color: var(--fb-muted) !important;
font-size: 12px;
font-weight: 700;
text-decoration: none;
}
.fb-masthead a:hover { color: var(--fb-accent) !important; }
.fb-hero {
display: grid;
gap: clamp(40px, 4vw, 64px);
grid-template-columns: minmax(560px, 1.05fr) minmax(500px, .95fr);
padding-bottom: clamp(28px, 3vw, 36px);
padding-top: clamp(24px, 3vw, 38px);
}
.fb-hero h1 {
color: var(--fb-ink);
font-size: clamp(56px, 5vw, 72px);
font-weight: 900;
letter-spacing: -.065em;
line-height: .91;
margin: 18px 0 23px;
max-width: 740px;
}
.fb-dek {
color: var(--fb-muted);
font-size: clamp(17px, 1.6vw, 21px);
line-height: 1.46;
margin: 0;
max-width: 570px;
}
.fb-stats {
display: grid;
gap: 20px;
grid-template-columns: repeat(4, minmax(88px, 1fr));
margin-top: 34px;
}
.fb-stat strong {
color: var(--fb-ink);
display: block;
font-size: 25px;
font-weight: 900;
letter-spacing: -.04em;
line-height: 1;
}
.fb-stat span {
color: var(--fb-muted);
display: block;
font-family: "DejaVu Sans Mono", ui-monospace, monospace;
font-size: 10px;
letter-spacing: .06em;
margin-top: 7px;
text-transform: uppercase;
}
.fb-frontier {
align-self: end;
min-width: 0;
}
.fb-frontier-head {
align-items: baseline;
display: flex;
gap: 16px;
justify-content: space-between;
margin-bottom: 15px;
}
.fb-frontier-head strong { font-size: 15px; font-weight: 620; }
.fb-mobile-label { display: none; }
.fb-frontier-head span {
color: var(--fb-muted);
font-family: "DejaVu Sans Mono", ui-monospace, monospace;
font-size: 10px;
text-align: right;
}
.fb-frontier-note {
align-items: baseline;
display: flex;
gap: 14px;
justify-content: space-between;
margin-top: 10px;
}
.fb-frontier-note span,
.fb-frontier-note strong {
font-family: "DejaVu Sans Mono", ui-monospace, monospace;
font-size: 9px;
line-height: 1.45;
}
.fb-frontier-note span { color: var(--fb-muted); }
.fb-frontier-note strong { color: var(--fb-ink); font-weight: 600; text-align: right; }
.fb-forest-row {
align-items: center;
display: grid;
gap: 12px;
grid-template-columns: 22px minmax(170px, 210px) 1fr 47px;
min-height: 36px;
}
.fb-place {
color: var(--fb-muted);
font-family: "DejaVu Sans Mono", ui-monospace, monospace;
font-size: 10px;
}
.fb-model {
align-items: center;
color: var(--fb-ink);
display: flex;
font-size: 12px;
font-weight: 700;
gap: 8px;
min-width: 0;
}
.fb-model-mark {
background: transparent;
box-sizing: border-box;
flex: 0 0 20px;
height: 20px;
object-fit: contain;
width: 20px;
}
.dark .fb-model-mark {
background: #F6F7F5;
border-radius: 50%;
padding: 2px;
}
.fb-model-text {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.fb-axis {
height: 10px;
position: relative;
}
.fb-axis::before {
background: var(--fb-rule);
content: "";
height: 2px;
left: 0;
position: absolute;
right: 0;
top: 4px;
}
.fb-bar {
background: var(--fb-line);
height: 4px;
left: 0;
position: absolute;
top: 3px;
}
.fb-point {
background: var(--fb-ink);
border-radius: 50%;
height: 10px;
position: absolute;
top: 0;
transform: translateX(-50%);
width: 10px;
}
.fb-forest-row:first-of-type .fb-bar,
.fb-forest-row:first-of-type .fb-point { background: var(--fb-accent); }
.fb-forest-row:first-of-type .fb-model,
.fb-forest-row:first-of-type .fb-number { color: var(--fb-accent); }
.fb-number {
color: var(--fb-ink);
font-family: "DejaVu Sans Mono", ui-monospace, monospace;
font-size: 12px;
font-weight: 600;
text-align: right;
}
.fb-chart-foot {
color: var(--fb-muted);
display: flex;
font-family: "DejaVu Sans Mono", ui-monospace, monospace;
font-size: 9px;
justify-content: space-between;
margin: 9px 59px 0 266px;
}
.tab-wrapper {
background: color-mix(in srgb, var(--fb-paper) 94%, transparent) !important;
backdrop-filter: blur(12px);
border: 0 !important;
padding-bottom: 0 !important;
position: sticky !important;
top: 0;
z-index: var(--fb-z-nav);
}
.tab-container[role="tablist"] {
margin: 0 auto !important;
max-width: 1316px !important;
padding-left: clamp(22px, 4vw, 62px) !important;
padding-right: clamp(22px, 4vw, 62px) !important;
}
.tab-container[role="tablist"]::after { display: none !important; }
.tab-container[role="tablist"] button {
border: 0 !important;
color: var(--fb-muted) !important;
font-size: 13px !important;
padding: 15px 0 13px !important;
margin-right: 30px !important;
}
.tab-container[role="tablist"] button.selected {
color: var(--fb-ink) !important;
}
.tab-container[role="tablist"] button.selected::after {
background: var(--fb-accent) !important;
height: 2px !important;
}
.overflow-menu { display: none !important; }
.tab-container.visually-hidden { display: none !important; }
.tabitem {
box-sizing: border-box;
margin: 0 auto !important;
max-width: 1440px !important;
padding: 0 clamp(22px, 4vw, 62px) !important;
}
.fb-section { margin: 36px 0 18px; }
.fb-section h2 {
color: var(--fb-ink);
font-size: clamp(30px, 3vw, 45px);
font-weight: 900;
letter-spacing: -.045em;
line-height: 1.02;
margin: 0 0 9px;
}
.fb-section p {
color: var(--fb-muted);
font-size: 15px;
line-height: 1.5;
margin: 0;
max-width: 72ch;
}
.fb-lab-path {
align-items: baseline;
display: grid;
gap: 14px clamp(28px, 5vw, 72px);
grid-template-columns: minmax(380px, 1.15fr) minmax(280px, .85fr);
margin: 10px 0 30px;
}
.fb-lab-path strong { color: var(--fb-ink); font-size: 18px; font-weight: 900; }
.fb-lab-path i { color: var(--fb-accent); font-style: normal; padding: 0 7px; }
.fb-lab-path span { color: var(--fb-muted); font-size: 13px; line-height: 1.5; }
.fb-choice-grid {
display: grid;
column-gap: 28px;
grid-template-columns: repeat(2, minmax(0, 1fr));
margin: 8px 0 20px;
}
.fb-data-heading {
color: var(--fb-muted);
font-family: "DejaVu Sans Mono", ui-monospace, monospace;
font-size: 10px;
font-weight: 600;
letter-spacing: .06em;
margin: 22px 0 8px;
text-transform: uppercase;
}
.fb-choice {
align-items: center;
border-bottom: 1px solid var(--fb-rule);
display: flex;
gap: 13px;
min-width: 0;
padding: 12px 20px 12px 0;
}
.fb-choice:nth-child(even) {
padding-left: 0;
}
.fb-choice:nth-last-child(-n+2) { border-bottom: 0; }
.fb-choice-label {
align-items: center;
background: var(--fb-ink);
border-radius: 50%;
color: var(--fb-paper);
display: inline-flex;
flex: 0 0 30px;
font-family: "DejaVu Sans Mono", ui-monospace, monospace;
font-size: 12px;
font-weight: 700;
height: 30px;
justify-content: center;
}
.fb-choice-name {
color: var(--fb-ink);
font-size: 14px;
font-weight: 700;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.fb-metric-grid {
display: grid;
gap: 20px clamp(22px, 4vw, 52px);
grid-template-columns: repeat(3, 1fr);
margin: 10px 0 22px;
}
.fb-metric { min-width: 0; padding: 12px 0 14px; }
.fb-metric:nth-child(3n+2), .fb-metric:nth-child(3n+3) {
padding-left: 0;
}
.fb-metric small {
color: var(--fb-muted);
display: block;
font-family: "DejaVu Sans Mono", ui-monospace, monospace;
font-size: 10px;
letter-spacing: .05em;
text-transform: uppercase;
}
.fb-metric strong {
color: var(--fb-ink);
display: block;
font-size: 24px;
font-weight: 900;
margin-top: 5px;
white-space: nowrap;
}
.fb-evidence {
color: var(--fb-ink);
line-height: 1.52;
padding: 12px 0;
}
.fb-evidence strong:first-child { color: var(--fb-accent); }
.fb-evidence code, .fb-hash {
background: var(--fb-code);
color: var(--fb-muted);
font-family: "DejaVu Sans Mono", ui-monospace, monospace;
font-size: 11px;
overflow-wrap: anywhere;
}
.fb-method {
display: grid;
gap: clamp(30px, 6vw, 86px);
grid-template-columns: 1.25fr .75fr;
}
.fb-method h3 { font-size: 19px; margin: 23px 0 6px; }
.fb-method p { color: var(--fb-muted); line-height: 1.55; }
.fb-method-visual {
align-items: start;
display: grid;
gap: clamp(34px, 5vw, 72px);
grid-template-columns: minmax(340px, .82fr) minmax(440px, 1.18fr);
}
.fb-architecture {
display: block;
height: auto;
width: 100%;
}
.fb-command-note {
color: var(--fb-muted);
font-family: "DejaVu Sans Mono", ui-monospace, monospace;
font-size: 10px;
line-height: 1.5;
}
.fb-table-wrap {
overflow-x: auto;
width: 100%;
}
.fb-leader-tools {
align-items: end;
display: grid;
gap: 18px;
grid-template-columns: minmax(220px, 1fr) auto auto;
padding: 4px 0 18px;
}
.fb-search-label {
color: var(--fb-muted);
display: block;
font-family: "DejaVu Sans Mono", ui-monospace, monospace;
font-size: 10px;
letter-spacing: .05em;
text-transform: uppercase;
}
.fb-search-label input {
background: transparent !important;
border: 0 !important;
border-bottom: 1px solid var(--fb-rule) !important;
color: var(--fb-ink) !important;
display: block;
font-family: "Lato", "Avenir Next", system-ui, sans-serif;
font-size: 15px;
margin-top: 5px;
min-height: 34px;
padding: 2px 0;
width: 100%;
}
.fb-filter-set { display: flex; }
.fb-filter-button {
background: transparent;
border: 1px solid var(--fb-rule);
border-radius: 0;
color: var(--fb-muted);
cursor: pointer;
font-family: "DejaVu Sans Mono", ui-monospace, monospace;
font-size: 10px;
min-height: 36px;
padding: 0 12px;
text-transform: uppercase;
}
.fb-filter-button + .fb-filter-button { border-left: 0; }
.fb-filter-button[aria-pressed="true"] {
background: var(--fb-ink);
border-color: var(--fb-ink);
color: var(--fb-paper);
}
.fb-leader-meta {
align-items: center;
display: flex;
gap: 16px;
justify-content: flex-end;
min-height: 36px;
}
.fb-metric-rail {
align-items: center;
display: grid;
gap: 10px 18px;
grid-template-columns: auto auto 1fr;
padding: 0 0 16px;
}
.fb-metric-rail-label,
.fb-metric-note {
color: var(--fb-muted);
font-family: "DejaVu Sans Mono", ui-monospace, monospace;
font-size: 9px;
}
.fb-metric-rail-label {
letter-spacing: .06em;
text-transform: uppercase;
}
.fb-metric-switch { display: flex; gap: 18px; }
.fb-metric-switch button {
background: transparent;
border: 0;
border-bottom: 2px solid transparent;
color: var(--fb-muted);
cursor: pointer;
font-family: "Lato", "Avenir Next", system-ui, sans-serif;
font-size: 12px;
font-weight: 700;
padding: 7px 0 5px;
white-space: nowrap;
}
.fb-metric-switch button[aria-pressed="true"] {
border-bottom-color: var(--fb-accent);
color: var(--fb-ink);
}
.fb-metric-switch button:hover { color: var(--fb-accent); }
.fb-metric-note { justify-self: end; text-align: right; }
.fb-result-count {
color: var(--fb-muted);
font-family: "DejaVu Sans Mono", ui-monospace, monospace;
font-size: 10px;
white-space: nowrap;
}
.fb-text-link,
.fb-action-link {
color: var(--fb-ink) !important;
font-size: 12px;
font-weight: 700;
text-decoration: underline;
text-decoration-color: var(--fb-rule);
text-underline-offset: 4px;
}
.fb-text-link:hover,
.fb-action-link:hover { color: var(--fb-accent) !important; text-decoration-color: currentColor; }
.fb-empty-row td {
color: var(--fb-muted);
padding: 28px 0 !important;
}
.fb-release-line {
align-items: center;
display: grid;
font-family: "DejaVu Sans Mono", ui-monospace, monospace;
font-size: 10px;
gap: 18px;
grid-template-columns: repeat(3, minmax(0, auto)) 1fr;
padding: 12px 0 0;
}
.fb-release-line span { color: var(--fb-muted); }
.fb-release-line strong { color: var(--fb-ink); font-weight: 700; }
.fb-release-line a { justify-self: end; }
.fb-insight-layout {
display: grid;
gap: clamp(34px, 5vw, 72px);
grid-template-columns: minmax(640px, 1.4fr) minmax(260px, .6fr);
}
.fb-panel-label {
color: var(--fb-muted);
font-family: "DejaVu Sans Mono", ui-monospace, monospace;
font-size: 10px;
font-weight: 600;
letter-spacing: .06em;
margin-bottom: 9px;
text-transform: uppercase;
}
.fb-ci-row {
align-items: center;
display: grid;
gap: 12px;
grid-template-columns: 24px minmax(180px, 240px) 1fr 48px;
min-height: 42px;
}
.fb-ci-track { height: 16px; position: relative; }
.fb-ci-track::before {
background: var(--fb-rule);
content: "";
height: 1px;
left: 0;
position: absolute;
right: 0;
top: 8px;
}
.fb-ci-band {
background: var(--fb-line);
height: 3px;
position: absolute;
top: 7px;
}
.fb-ci-band::before,
.fb-ci-band::after {
background: var(--fb-line);
content: "";
height: 9px;
position: absolute;
top: -3px;
width: 1px;
}
.fb-ci-band::before { left: 0; }
.fb-ci-band::after { right: 0; }
.fb-ci-point {
background: var(--fb-ink);
border-radius: 50%;
height: 9px;
position: absolute;
top: 4px;
transform: translateX(-50%);
width: 9px;
}
.fb-ci-row:first-child .fb-ci-band,
.fb-ci-row:first-child .fb-ci-band::before,
.fb-ci-row:first-child .fb-ci-band::after,
.fb-ci-row:first-child .fb-ci-point { background: var(--fb-accent); }
.fb-ci-axis-labels {
color: var(--fb-muted);
display: flex;
font-family: "DejaVu Sans Mono", ui-monospace, monospace;
font-size: 9px;
justify-content: space-between;
margin: 9px 60px 0 280px;
}
.fb-resolution-row {
padding: 0 0 25px;
}
.fb-resolution-row strong {
color: var(--fb-accent);
display: block;
font-size: clamp(30px, 3vw, 42px);
font-weight: 900;
letter-spacing: -.05em;
line-height: 1;
}
.fb-resolution-row span {
color: var(--fb-muted);
display: block;
font-size: 13px;
line-height: 1.4;
margin-top: 6px;
}
.fb-resolution-note { color: var(--fb-muted); font-size: 13px; line-height: 1.52; margin: 18px 0 0; }
.fb-family-insight { margin-top: 42px; }
.fb-family-insight h3 { color: var(--fb-ink); font-size: 22px; margin: 0 0 4px; }
.fb-family-insight > p { color: var(--fb-muted); font-size: 13px; margin: 0 0 14px; }
.fb-family-table { min-width: 760px; }
.fb-family-short { display: none; }
.fb-family-model {
align-items: center;
display: flex;
font-family: "Lato", "Avenir Next", system-ui, sans-serif;
font-weight: 700;
gap: 9px;
}
.fb-family-value {
align-items: center;
display: grid;
gap: 9px;
grid-template-columns: 44px 1fr;
}
.fb-family-mini-axis { height: 10px; position: relative; }
.fb-family-mini-axis::before {
background: var(--fb-rule);
content: "";
height: 1px;
left: 0;
position: absolute;
right: 0;
top: 5px;
}
.fb-family-dot {
background: var(--fb-ink);
border-radius: 50%;
height: 7px;
position: absolute;
top: 2px;
transform: translateX(-50%);
width: 7px;
}
.fb-family-best .fb-family-dot { background: var(--fb-accent); height: 9px; top: 1px; width: 9px; }
.fb-family-best > span { color: var(--fb-accent); font-weight: 700; }
.fb-publish-path {
align-items: center;
display: grid;
gap: 28px;
grid-template-columns: 1fr auto;
margin-top: 24px;
padding: 10px 0;
}
.fb-publish-path h3 { font-size: 19px; margin: 0 0 5px; }
.fb-publish-path p { color: var(--fb-muted); font-size: 13px; line-height: 1.5; margin: 0; max-width: 72ch; }
.fb-action-link {
border: 1px solid var(--fb-ink);
display: inline-flex;
padding: 11px 14px;
text-decoration: none;
white-space: nowrap;
}
.fb-action-link:hover { border-color: var(--fb-accent); }
.fb-table {
border: 0 !important;
border-collapse: separate !important;
border-spacing: 0 !important;
color: var(--fb-ink);
font-family: "DejaVu Sans Mono", ui-monospace, monospace;
font-size: 12px;
min-width: 860px;
width: 100%;
}
.fb-table tr { border: 0 !important; }
.fb-table--family { min-width: 100%; }
.fb-table--score { min-width: 760px; }
.fb-table--score td:nth-child(2) { white-space: nowrap; }
.fb-table caption {
height: 1px;
overflow: hidden;
position: absolute;
width: 1px;
}
.fb-table th {
border-left: 0 !important;
border-right: 0 !important;
border-top: 0 !important;
border-bottom: 1px solid var(--fb-rule) !important;
color: var(--fb-muted);
font-size: 10px;
font-weight: 600;
letter-spacing: .05em;
padding: 10px 12px 11px 0;
text-align: left;
text-transform: uppercase;
}
.fb-table td {
border-left: 0 !important;
border-right: 0 !important;
border-top: 0 !important;
border-bottom: 1px solid var(--fb-rule);
padding: 11px 12px 11px 0;
vertical-align: top;
}
.fb-table .fb-score-cell { font-weight: 600; }
.fb-table-model {
align-items: center;
display: flex;
font-family: "Lato", "Avenir Next", system-ui, sans-serif;
font-weight: 700;
gap: 9px;
min-width: 0;
}
.fb-table-model .fb-model-mark { flex-basis: 18px; height: 18px; width: 18px; }
.fb-table-model span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fb-score-head-short { display: none; }
.fb-table--leaderboard.fb-family-view .fb-overall-only { display: none; }
.fb-table tbody tr:first-child .fb-rank-cell,
.fb-table tbody tr:first-child .fb-score-cell { color: var(--fb-accent); }
.fb-table tbody tr:hover { background: color-mix(in srgb, var(--fb-ink) 3%, transparent); }
.fb-table .fb-selected-row td { color: var(--fb-accent); font-weight: 600; }
.fb-footer {
color: var(--fb-muted);
display: flex;
font-size: 12px;
justify-content: space-between;
margin-top: 54px;
padding-bottom: 30px;
padding-top: 18px;
}
.fb-footer-main,
.fb-footer-links {
align-items: center;
display: flex;
gap: 20px;
}
.fb-footer-main strong { color: var(--fb-ink); }
.fb-footer a { color: var(--fb-ink); text-decoration: none; }
.fb-footer a:hover { color: var(--fb-accent); text-decoration: underline; }
.gradio-container footer a, .gradio-container footer button { color: var(--fb-muted) !important; }
.gradio-container footer .built-with,
.gradio-container footer .divider,
.gradio-container footer button.settings { display: none !important; }
.gradio-container footer button.show-api img { display: none !important; }
.block, .form, .gradio-dataframe, .gradio-json, .gradio-textbox {
background: transparent !important;
border-radius: 0 !important;
box-shadow: none !important;
}
.block:not(.gradio-dataframe):not(.gradio-json):not(.gradio-textbox) {
border-color: transparent !important;
}
button.primary {
background: var(--fb-ink) !important;
border: 1px solid var(--fb-ink) !important;
border-radius: 0 !important;
color: var(--fb-paper) !important;
min-height: 44px !important;
white-space: nowrap !important;
}
button.primary:hover { background: var(--fb-accent) !important; border-color: var(--fb-accent) !important; }
button.primary:active,
.fb-filter-button:active,
.fb-metric-switch button:active,
.fb-action-link:active { transform: translateY(1px); }
.fb-download { max-width: 320px !important; }
.fb-download a,
.fb-download button {
background: transparent !important;
border: 1px solid var(--fb-ink) !important;
border-radius: 0 !important;
color: var(--fb-ink) !important;
}
input, textarea, select {
background: var(--fb-paper-raised) !important;
border-color: var(--fb-rule) !important;
border-radius: 0 !important;
box-shadow: none !important;
}
input:focus, textarea:focus, select:focus, button:focus-visible, a:focus-visible {
outline: 2px solid var(--fb-accent) !important;
outline-offset: 2px !important;
}
table { border-collapse: collapse !important; }
th { background: var(--fb-paper) !important; }
pre, code { border-radius: 0 !important; }
.prose pre,
.prose pre code,
.prose pre span {
background: var(--fb-code) !important;
color: var(--fb-ink) !important;
}
.gradio-dataframe table {
border-left: 0 !important;
border-right: 0 !important;
font-family: "DejaVu Sans Mono", ui-monospace, monospace !important;
}
.gradio-dataframe th,
.gradio-dataframe td {
border-left: 0 !important;
border-right: 0 !important;
}
@media (max-width: 1180px) {
.fb-hero { grid-template-columns: 1fr; }
.fb-frontier { max-width: 820px; }
.fb-method { grid-template-columns: 1fr; }
.fb-method-visual { grid-template-columns: minmax(300px, .85fr) minmax(390px, 1.15fr); }
.fb-insight-layout { grid-template-columns: 1fr; }
.fb-resolution { display: grid; grid-template-columns: repeat(3, 1fr); }
.fb-resolution-row { padding-right: 18px; }
.fb-resolution-row + .fb-resolution-row { padding-left: 18px; }
.fb-resolution-note { grid-column: 1 / -1; }
}
@media (max-width: 720px) {
.fb-hero { gap: 38px; padding-bottom: 32px; }
.fb-hero h1 { font-size: clamp(52px, 15vw, 72px); }
.fb-stats { gap: 16px 10px; grid-template-columns: repeat(2, 1fr); }
.fb-forest-row { gap: 8px; grid-template-columns: 19px minmax(122px, 164px) 1fr 42px; }
.fb-model { font-size: 11px; }
.fb-model-mark { flex-basis: 18px; height: 18px; width: 18px; }
.fb-chart-foot { margin-left: 163px; margin-right: 50px; }
.fb-chart-foot span:nth-child(2) { display: none; }
.fb-masthead-brand span { display: none; }
.fb-masthead nav { gap: 16px; }
.fb-masthead nav a:nth-child(2) { display: none; }
.fb-desktop-label { display: none; }
.fb-mobile-label { display: inline; }
.fb-frontier .fb-forest-row:nth-child(n+5) { display: none; }
.fb-frontier-note { justify-content: flex-end; }
.fb-frontier-note span { display: none; }
.fb-lab-path { grid-template-columns: 1fr; }
.fb-choice-grid { grid-template-columns: 1fr; }
.fb-choice,
.fb-choice:nth-child(even) { border-left: 0; padding-left: 0; }
.fb-choice:nth-last-child(-n+2) { border-bottom: 1px solid var(--fb-rule); }
.fb-choice:last-child { border-bottom: 0; }
.fb-table--score { min-width: 100%; }
.fb-table--score th:nth-child(2),
.fb-table--score td:nth-child(2) { display: none; }
.fb-table--leaderboard { min-width: 100%; table-layout: fixed; }
.fb-table--leaderboard th:nth-child(4),
.fb-table--leaderboard td:nth-child(4),
.fb-table--leaderboard th:nth-child(5),
.fb-table--leaderboard td:nth-child(5),
.fb-table--leaderboard th:nth-child(6),
.fb-table--leaderboard td:nth-child(6),
.fb-table--leaderboard th:nth-child(7),
.fb-table--leaderboard td:nth-child(7) { display: none; }
.fb-table--leaderboard th:nth-child(1),
.fb-table--leaderboard td:nth-child(1) { width: 12%; }
.fb-table--leaderboard th:nth-child(2),
.fb-table--leaderboard td:nth-child(2) { width: 64%; }
.fb-table--leaderboard th:nth-child(3),
.fb-table--leaderboard td:nth-child(3) { width: 24%; }
.fb-score-head-long { display: none; }
.fb-score-head-short { display: inline; }
.fb-table--leaderboard td:nth-child(2) {
overflow: hidden;
padding-left: 6px;
text-overflow: ellipsis;
white-space: nowrap;
}
.fb-table--leaderboard th:nth-child(2) { padding-left: 6px; }
.fb-family-table { min-width: 100%; table-layout: fixed; }
.fb-family-table th,
.fb-family-table td { font-size: 9px; padding-right: 4px; }
.fb-family-table th:first-child,
.fb-family-table td:first-child { width: 46%; }
.fb-family-model { gap: 5px; min-width: 0; }
.fb-family-model .fb-model-mark { flex-basis: 15px; height: 15px; width: 15px; }
.fb-family-model span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fb-family-value { display: block; }
.fb-family-mini-axis { display: none; }
.fb-family-long { display: none; }
.fb-family-short { display: inline; }
.fb-ci-axis-labels span:nth-child(2) { display: none; }
.fb-metric-grid { grid-template-columns: repeat(2, 1fr); }
.fb-metric:nth-child(3n+2), .fb-metric:nth-child(3n+3) { padding-left: 0; }
.fb-metric:nth-child(even) { padding-left: 0; }
.fb-metric strong { font-size: 21px; }
.fb-method-visual { grid-template-columns: 1fr; }
.fb-leader-tools { align-items: stretch; grid-template-columns: 1fr; gap: 11px; }
.fb-filter-set { width: 100%; }
.fb-filter-button { flex: 1; }
.fb-leader-meta { justify-content: space-between; }
.fb-metric-rail { display: block; }
.fb-metric-rail-label { display: block; margin-bottom: 4px; }
.fb-metric-switch {
gap: 19px;
overflow-x: auto;
padding-bottom: 4px;
scrollbar-width: none;
}
.fb-metric-switch::-webkit-scrollbar { display: none; }
.fb-metric-note { display: block; margin-top: 8px; text-align: left; }
.fb-release-line { grid-template-columns: repeat(2, 1fr); }
.fb-release-line a { justify-self: start; }
.fb-ci-row { gap: 8px; grid-template-columns: 20px minmax(128px, 168px) 1fr 43px; }
.fb-ci-axis-labels { margin-left: 196px; margin-right: 51px; }
.fb-resolution { grid-template-columns: 1fr; }
.fb-resolution-row + .fb-resolution-row { border-left: 0; padding-left: 0; }
.fb-publish-path { align-items: start; grid-template-columns: 1fr; }
.fb-action-link { justify-content: center; }
.tab-container[role="tablist"] { overflow-x: auto !important; }
.tab-container[role="tablist"] button { margin-right: 22px !important; white-space: nowrap !important; }
.fb-footer { display: block; }
.fb-footer-main,
.fb-footer-links { align-items: flex-start; flex-direction: column; gap: 6px; }
.fb-footer-links { margin-top: 14px; }
}
@media (prefers-reduced-transparency: reduce) {
.tab-wrapper { backdrop-filter: none; background: var(--fb-paper) !important; }
}
@media (max-width: 430px) {
.fb-forest-row { grid-template-columns: 18px minmax(112px, 140px) 1fr 39px; }
.fb-chart-foot { margin-left: 148px; margin-right: 47px; }
.fb-ci-row { grid-template-columns: 18px minmax(108px, 138px) 1fr 40px; }
.fb-ci-row .fb-model-mark { display: none; }
.fb-ci-axis-labels { margin-left: 164px; margin-right: 48px; }
}
@media (prefers-reduced-motion: reduce) {
html { scroll-behavior: auto; }
*, *::before, *::after { animation: none !important; transition: none !important; }
}
"""
HEAD = f""
class SpaceDataError(RuntimeError):
"""The public explorer bundle is invalid."""
def _canonical(value: object) -> bytes:
return json.dumps(
value,
ensure_ascii=False,
separators=(",", ":"),
sort_keys=True,
allow_nan=False,
).encode()
def _load_bundle() -> dict[str, Any]:
if BUNDLE_PATH.is_symlink() or not BUNDLE_PATH.is_file():
raise FileNotFoundError(
f"Complete-core Space bundle not found at {BUNDLE_PATH}. Set FLAVOURBENCH_BUNDLE."
)
value = json.loads(BUNDLE_PATH.read_text(encoding="utf-8"))
payload = dict(value)
recorded = str(payload.pop("artifact_sha256", ""))
if (
recorded != hashlib.sha256(_canonical(payload)).hexdigest()
or value.get("schema_version") != "flavourbench-complete-core-space-bundle-v1"
or value.get("status") != "final_complete_common_core"
):
raise SpaceDataError("complete-core Space bundle failed verification")
return value
BUNDLE = _load_bundle()
MODELS = BUNDLE["models"]
TASKS = BUNDLE["tasks"]
LAB_TASKS = BUNDLE.get("lab_tasks", [])
PAIRWISE = BUNDLE["pairwise_comparisons"]
STABILITY = BUNDLE["stability_analysis"]
MODEL_COUNT = len(MODELS)
TASK_COUNT = len(TASKS)
PAIR_COUNT = len(PAIRWISE)
DESIGN = BUNDLE["design"]
PANEL_COUNT = int(DESIGN.get("panel_count", 1))
INDEPENDENT_CLUSTER_COUNT = int(DESIGN.get("unique_anchor_clusters", TASK_COUNT))
PRIMARY_COUNT = MODEL_COUNT * TASK_COUNT
MODEL_BY_NAME = {str(row["model_name"]): row for row in MODELS}
MODEL_BY_ID = {str(row["model_id"]): row for row in MODELS}
TASK_BY_ID = {str(row["task_id"]): row for row in TASKS}
LAB_TASK_BY_ID = {str(row["task_id"]): row for row in LAB_TASKS}
if set(TASK_BY_ID) & set(LAB_TASK_BY_ID):
raise SpaceDataError("official and training task IDs overlap")
OBSERVATIONS = {
(str(row["model_id"]), str(row["task_id"])): row for row in BUNDLE["primary_observations"]
}
PAIR_INDEX: dict[tuple[str, str], dict[str, Any]] = {}
for _row in PAIRWISE:
PAIR_INDEX[(str(_row["left_model_id"]), str(_row["right_model_id"]))] = _row
def _rank_key(row: dict[str, Any]) -> tuple[bool, int, str]:
rank = row.get("point_estimate_rank")
return rank is None, int(rank or 10_000), str(row["model_id"])
DISPLAY_MODELS = sorted(MODELS, key=_rank_key)
MODEL_NAMES = [str(row["model_name"]) for row in DISPLAY_MODELS]
TASK_LABEL_TO_ID = {
f"{row['task_id']} | {str(row['family']).replace('_', ' ')}": str(row["task_id"])
for row in TASKS
}
LAB_TASK_LABEL_TO_ID = {
f"{row['task_id']} | {str(row['family']).replace('_', ' ')} | {row['lab_split']}": str(
row["task_id"]
)
for row in LAB_TASKS
}
def _lab_name(row: dict[str, Any]) -> str:
model_name = str(row["model_name"])
prefixes = (
("SpaceXAI:", "xAI"),
("Anthropic:", "Anthropic"),
("Claude ", "Anthropic"),
("MoonshotAI:", "Kimi"),
("ByteDance Seed:", "ByteDance"),
("Thinking Machines:", "Thinking Machines"),
("MiniMax:", "MiniMax"),
("DeepSeek:", "DeepSeek"),
("OpenAI:", "OpenAI"),
("Google:", "Google"),
("Meta:", "Meta"),
("Qwen:", "Qwen"),
("Tencent:", "Tencent"),
("Z.ai:", "Z.ai"),
("NVIDIA:", "NVIDIA"),
("Cohere:", "Cohere"),
("Mistral:", "Mistral"),
)
for prefix, lab in prefixes:
if model_name.startswith(prefix):
return lab
return str(row.get("provider_name") or model_name.split(":", 1)[0])
def _model_label(model_name: str) -> str:
label = model_name.split(":", 1)[-1].strip()
return (
label.replace("GPT-5.6 ", "5.6 ")
.replace("Claude ", "")
.replace("DeepSeek ", "")
.replace("Command ", "")
)
_seen_labs: set[str] = set()
LAB_CHAMPIONS: list[dict[str, Any]] = []
for _model in DISPLAY_MODELS:
_lab = _lab_name(_model)
if _lab not in _seen_labs:
_seen_labs.add(_lab)
LAB_CHAMPIONS.append(_model)
LEADERBOARD_METRICS = (
("overall", "Overall", "FlavourBench Score", "Score"),
("substitution", "Substitution", "Substitution score", "Sub"),
("pairing", "Pairing", "Pairing score", "Pair"),
("constraint", "Constraints", "Constraint score", "Rules"),
)
def _leaderboard_metric_score(model: dict[str, Any], metric: str) -> float:
if metric == "overall":
return float(model["flavourbench_score"])
return float(model["family_scores"][metric])
LEADERBOARD_RANKS: dict[tuple[str, str], int] = {}
LEADERBOARD_CHAMPIONS: set[tuple[str, str]] = set()
for _metric, _, _, _ in LEADERBOARD_METRICS:
_ordered = sorted(
DISPLAY_MODELS,
key=lambda row, metric=_metric: (
-_leaderboard_metric_score(row, metric),
str(row["model_id"]),
),
)
_previous_score: float | None = None
_rank = 0
_metric_labs: set[str] = set()
for _position, _model in enumerate(_ordered, start=1):
_score = _leaderboard_metric_score(_model, _metric)
if _previous_score is None or _score != _previous_score:
_rank = _position
_previous_score = _score
_model_id = str(_model["model_id"])
LEADERBOARD_RANKS[(_metric, _model_id)] = _rank
_lab = _lab_name(_model)
if _lab not in _metric_labs:
_metric_labs.add(_lab)
LEADERBOARD_CHAMPIONS.add((_metric, _model_id))
LEADERBOARD_JS = """
if (element.dataset.fbReady !== "true") {
element.dataset.fbReady = "true";
const search = element.querySelector("[data-fb-search]");
const rows = Array.from(element.querySelectorAll("tbody tr[data-model]"));
const modeButtons = Array.from(element.querySelectorAll("[data-fb-mode]"));
const metricButtons = Array.from(element.querySelectorAll("[data-fb-metric]"));
const count = element.querySelector("[data-fb-count]");
const empty = element.querySelector("[data-fb-empty]");
const table = element.querySelector("[data-fb-leaderboard]");
const body = table?.querySelector("tbody");
const scoreHead = table?.querySelector("[data-fb-score-head]");
const scoreHeadLong = scoreHead?.querySelector("[data-fb-score-long]");
const scoreHeadShort = scoreHead?.querySelector("[data-fb-score-short]");
const metricNote = element.querySelector("[data-fb-metric-note]");
let mode = "all";
let metric = "overall";
const dataKey = (prefix) =>
prefix + metric.charAt(0).toUpperCase() + metric.slice(1);
const apply = () => {
const rankKey = dataKey("rank");
const scoreKey = dataKey("score");
const championKey = dataKey("champion");
rows.sort((left, right) => {
const rankGap = Number(left.dataset[rankKey]) - Number(right.dataset[rankKey]);
return rankGap || left.dataset.search.localeCompare(right.dataset.search);
});
for (const row of rows) body?.insertBefore(row, empty);
const query = (search?.value || "").trim().toLocaleLowerCase();
let visible = 0;
for (const row of rows) {
const matchesText = !query || row.dataset.search.includes(query);
const matchesMode = mode === "all" || row.dataset[championKey] === "true";
row.hidden = !(matchesText && matchesMode);
const rankCell = row.querySelector("[data-fb-rank]");
const scoreCell = row.querySelector("[data-fb-score]");
if (rankCell) rankCell.textContent = String(row.dataset[rankKey]).padStart(2, "0");
if (scoreCell) scoreCell.textContent = Number(row.dataset[scoreKey]).toFixed(2);
if (!row.hidden) visible += 1;
}
table?.classList.toggle("fb-family-view", metric !== "overall");
if (count) count.textContent = `${visible} model${visible === 1 ? "" : "s"}`;
if (empty) empty.hidden = visible !== 0;
};
search?.addEventListener("input", apply);
for (const button of modeButtons) {
button.addEventListener("click", () => {
mode = button.dataset.fbMode;
for (const peer of modeButtons) {
peer.setAttribute("aria-pressed", String(peer === button));
}
apply();
});
}
for (const button of metricButtons) {
button.addEventListener("click", () => {
metric = button.dataset.fbMetric;
for (const peer of metricButtons) {
peer.setAttribute("aria-pressed", String(peer === button));
}
if (scoreHeadLong) scoreHeadLong.textContent = button.dataset.fbScoreLabel;
if (scoreHeadShort) scoreHeadShort.textContent = button.dataset.fbScoreShort;
if (metricNote) metricNote.textContent = button.dataset.fbNote;
apply();
});
}
apply();
}
"""
def _completion_diagnostic(model_id: str) -> dict[str, Any]:
family_rows: dict[str, list[dict[str, Any]]] = {}
for task_id, task in TASK_BY_ID.items():
family = str(task["family"])
family_rows.setdefault(family, []).append(OBSERVATIONS[(model_id, task_id)])
conditional_family_scores: dict[str, float] = {}
completed_by_family: dict[str, int] = {}
scheduled_by_family: dict[str, int] = {}
for family, rows in family_rows.items():
completed = [
row
for row in rows
if row["status"] == "completed" and bool(row.get("scoring", {}).get("parseable", True))
]
scheduled_by_family[family] = len(rows)
completed_by_family[family] = len(completed)
conditional_family_scores[family] = (
sum(float(row["scoring"]["score"]) for row in completed) / len(completed)
if completed
else 0.0
)
completed = sum(completed_by_family.values())
return {
"scheduled": len(TASK_BY_ID),
"completed": completed,
"failed": len(TASK_BY_ID) - completed,
"completion_rate": completed / len(TASK_BY_ID),
"conditional_family_scores": conditional_family_scores,
"completed_by_family": completed_by_family,
"scheduled_by_family": scheduled_by_family,
"conditional_equal_family_score": sum(conditional_family_scores.values())
/ len(conditional_family_scores),
}
def _frontier_html() -> str:
axis_floor = 55.0
axis_ceiling = 66.0
rows = []
for place, model in enumerate(LAB_CHAMPIONS[:10], start=1):
score = float(model["flavourbench_score"])
position = max(0.0, min(100.0, (score - axis_floor) / (axis_ceiling - axis_floor) * 100))
full_name = str(model["model_name"])
lab = _lab_name(model)
label = _model_label(full_name)
logo_url = LAB_LOGO_URLS.get(lab)
logo = (
f""
if logo_url
else ""
)
rows.append(
"
Epicure scores every legal answer first. Then {MODEL_COUNT} frontier endpoints face the same {TASK_COUNT} food decisions.
| Rank | Model | FlavourBench ScoreScore | Simultaneous 95% | Group | Rank 95% | Cells |
|---|---|---|---|---|---|---|
| No model matches this search. | ||||||
The crossed design's descriptive relative-decision generalizability is {generalizability:.3f}; the same variance model estimates {tasks_for_g_90} balanced tasks for 0.90. The table below repeatedly takes score-blind, balanced subsets and compares them with the complete point order.
| Tasks | Median rank ρ | Empirical 95% | Top-five overlap | Point leader kept |
|---|
This is a precision diagnostic relative to the complete release, not a post-hoc power claim. The point leader remains unstable in smaller subsets; the simultaneous score bands and rank intervals remain the inferential result.
Scores are out of 100. Red marks each column leader.
| Lab champion | SubstitutionSub | PairingPair | ConstraintRules |
|---|
| Family | Score | " "Cells |
|---|
| Selection | Ingredients | " "Score | Role |
|---|
{html.escape(str(observed))} and scored
{float(scoring["score"]):.2f}. The optimum is
{html.escape(optimum)}.
{row.get("shared_valid_tasks", TASK_COUNT)}).
{float(row["holm_p"]):.4g}, paired Cohen dz =
{cohen_text}.
{selection}All {MODEL_COUNT} models face the same {TASK_COUNT} tasks. Change the score view, filter the field, then inspect the uncertainty behind the overall rank.
The point order is real, but not every adjacent gap is resolved. Simultaneous bands and paired tests show where the evidence separates models.
Break the headline score into substitution, pairing, and constraint performance, then compare the two collection panels.
Every answer is traceable to the exact prompt, model response, and precomputed 56-choice reward surface.
Your endpoint key or checkpoint stays in your environment. The open runner fetches the exact task set, resumes interrupted jobs, and writes a verifiable report.
Paste one completion and query an anchor-disjoint development map. This is the same deterministic reward used by the local GRPO recipe.
Upload one JSON or JSONL response per task. Complete runs receive a FlavourBench Score; partial runs receive diagnostics only.
Submit the complete report, raw responses, exact route, decoding settings, and training disclosure. Maintainers verify the {TASK_COUNT}-task matrix before any leaderboard update.
Query any of the {PAIR_COUNT} paired model contrasts on the same tasks, with Holm control across the full comparison family.
The Space makes no provider calls. It reads released reward maps and returns deterministic scores.
A task score ranges from 0 to 100 on its released Epicure map. The complete release is a {MODEL_COUNT} by {TASK_COUNT} matrix with one valid response in every cell.
Results use {INDEPENDENT_CLUSTER_COUNT:,} ingredient-anchor clusters, 50,000 shared cluster bootstraps, simultaneous score bands, 100,000 cluster sign flips, Holm correction, exact tests against a random legal choice, bootstrap rank intervals, and an independently compiled second panel.
The 342 optimizer-facing SFT, DPO, and GRPO maps use anchors that do not occur in the 84-task transfer split or the {TASK_COUNT}-task leaderboard. Training cannot query either evaluation map through the reward endpoint.