Spaces:
Running
Align user-facing labels with paper terminology
Browse filesSweeps every visible "Composite benchmark" / "Merged Benchmark" /
"Independently evaluated" / "Documentation gaps" label so the UI
uses the rollout-hierarchy and interpretive-signal vocabulary from
the paper (§3.2 and §4.2.1).
- "Composite benchmark" -> "Suite" (paper §3.2)
- "Merged Benchmark" -> "Suite"
- "N composite benchmarks" -> "N component benchmarks"
- "average of N composite scores" -> "average of N component scores"
- "Independently evaluated" -> "Third-party reported" (paper §4.2.1)
- "Documentation gaps" -> "Reproducibility gap"
- Provenance tooltips harmonized across both badge sites:
first-party / third-party / collaborative wording matches paper
- "Reading mode" / "Research-first reading mode" -> "Reader mode" /
"Research reader mode" (paper §4.2.2)
No backend or data-shape changes; internal fields like
composite_benchmark_name are unchanged.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- app/evals/[id]/page.tsx +5 -5
- components/benchmark-detail.tsx +6 -6
- components/eval-card.tsx +3 -3
- components/eval-detail.tsx +8 -8
- components/home-mode-label.tsx +1 -1
- components/navigation.tsx +1 -1
|
@@ -167,7 +167,7 @@ export default function EvalDetailPage() {
|
|
| 167 |
</Button>
|
| 168 |
<div className="text-center">
|
| 169 |
<h2 className="text-xl font-medium tracking-tight text-foreground/90 md:text-2xl">
|
| 170 |
-
{isComposite ? "
|
| 171 |
</h2>
|
| 172 |
</div>
|
| 173 |
<div />
|
|
@@ -178,7 +178,7 @@ export default function EvalDetailPage() {
|
|
| 178 |
</Button>
|
| 179 |
<div className="flex-1 text-center">
|
| 180 |
<h2 className="text-base font-medium tracking-tight text-foreground/90">
|
| 181 |
-
{isComposite ? "
|
| 182 |
</h2>
|
| 183 |
</div>
|
| 184 |
</div>
|
|
@@ -202,7 +202,7 @@ export default function EvalDetailPage() {
|
|
| 202 |
}
|
| 203 |
|
| 204 |
// ---------------------------------------------------------------------------
|
| 205 |
-
//
|
| 206 |
// ---------------------------------------------------------------------------
|
| 207 |
|
| 208 |
function CompositeEvalView({
|
|
@@ -225,7 +225,7 @@ function CompositeEvalView({
|
|
| 225 |
<CardContent className="p-5 sm:p-6 space-y-4">
|
| 226 |
<div className="flex flex-wrap items-center gap-2">
|
| 227 |
<Badge variant="outline" className="text-[11px] uppercase tracking-[0.18em]">
|
| 228 |
-
|
| 229 |
</Badge>
|
| 230 |
<Badge variant="secondary">
|
| 231 |
{summary.aggregate_sources?.length ?? 0} metrics
|
|
@@ -241,7 +241,7 @@ function CompositeEvalView({
|
|
| 241 |
</h1>
|
| 242 |
<p className="mt-2 max-w-3xl text-sm leading-6 text-muted-foreground">
|
| 243 |
{summary.benchmark_card?.purpose_and_intended_users?.goal
|
| 244 |
-
?? `
|
| 245 |
</p>
|
| 246 |
</div>
|
| 247 |
</CardContent>
|
|
|
|
| 167 |
</Button>
|
| 168 |
<div className="text-center">
|
| 169 |
<h2 className="text-xl font-medium tracking-tight text-foreground/90 md:text-2xl">
|
| 170 |
+
{isComposite ? "Suite" : "Single benchmark details"}
|
| 171 |
</h2>
|
| 172 |
</div>
|
| 173 |
<div />
|
|
|
|
| 178 |
</Button>
|
| 179 |
<div className="flex-1 text-center">
|
| 180 |
<h2 className="text-base font-medium tracking-tight text-foreground/90">
|
| 181 |
+
{isComposite ? "Suite" : "Single benchmark details"}
|
| 182 |
</h2>
|
| 183 |
</div>
|
| 184 |
</div>
|
|
|
|
| 202 |
}
|
| 203 |
|
| 204 |
// ---------------------------------------------------------------------------
|
| 205 |
+
// Suite view (paper §3.2 — composite reporting unit)
|
| 206 |
// ---------------------------------------------------------------------------
|
| 207 |
|
| 208 |
function CompositeEvalView({
|
|
|
|
| 225 |
<CardContent className="p-5 sm:p-6 space-y-4">
|
| 226 |
<div className="flex flex-wrap items-center gap-2">
|
| 227 |
<Badge variant="outline" className="text-[11px] uppercase tracking-[0.18em]">
|
| 228 |
+
Suite
|
| 229 |
</Badge>
|
| 230 |
<Badge variant="secondary">
|
| 231 |
{summary.aggregate_sources?.length ?? 0} metrics
|
|
|
|
| 241 |
</h1>
|
| 242 |
<p className="mt-2 max-w-3xl text-sm leading-6 text-muted-foreground">
|
| 243 |
{summary.benchmark_card?.purpose_and_intended_users?.goal
|
| 244 |
+
?? `Suite aggregating ${summary.aggregate_sources?.length ?? 0} metrics across ${summary.models_count.toLocaleString()} models.`}
|
| 245 |
</p>
|
| 246 |
</div>
|
| 247 |
</CardContent>
|
|
@@ -2859,11 +2859,11 @@ export function BenchmarkDetail({
|
|
| 2859 |
className={`inline-flex items-center rounded-full border px-2 py-0.5 text-[10px] font-semibold ${getRelationshipBadgeTone(relationship)}`}
|
| 2860 |
title={
|
| 2861 |
relationship === "first_party"
|
| 2862 |
-
? "
|
| 2863 |
: relationship === "third_party"
|
| 2864 |
-
? "
|
| 2865 |
: relationship === "collaborative"
|
| 2866 |
-
? "
|
| 2867 |
: undefined
|
| 2868 |
}
|
| 2869 |
>
|
|
@@ -5060,11 +5060,11 @@ function BenchmarkDeepDiveDialogPanel({
|
|
| 5060 |
className={`inline-flex items-center rounded-full border px-2 py-0.5 text-[10px] font-semibold ${getRelationshipBadgeTone(entry.relationship)}`}
|
| 5061 |
title={
|
| 5062 |
entry.relationship === "first_party"
|
| 5063 |
-
? "Reported by the model's developer."
|
| 5064 |
: entry.relationship === "third_party"
|
| 5065 |
-
? "
|
| 5066 |
: entry.relationship === "collaborative"
|
| 5067 |
-
? "
|
| 5068 |
: undefined
|
| 5069 |
}
|
| 5070 |
>
|
|
|
|
| 2859 |
className={`inline-flex items-center rounded-full border px-2 py-0.5 text-[10px] font-semibold ${getRelationshipBadgeTone(relationship)}`}
|
| 2860 |
title={
|
| 2861 |
relationship === "first_party"
|
| 2862 |
+
? "Reported by the model's developer (first-party)."
|
| 2863 |
: relationship === "third_party"
|
| 2864 |
+
? "Reported by an independent third party."
|
| 2865 |
: relationship === "collaborative"
|
| 2866 |
+
? "Collaborative report by the developer and a third party."
|
| 2867 |
: undefined
|
| 2868 |
}
|
| 2869 |
>
|
|
|
|
| 5060 |
className={`inline-flex items-center rounded-full border px-2 py-0.5 text-[10px] font-semibold ${getRelationshipBadgeTone(entry.relationship)}`}
|
| 5061 |
title={
|
| 5062 |
entry.relationship === "first_party"
|
| 5063 |
+
? "Reported by the model's developer (first-party)."
|
| 5064 |
: entry.relationship === "third_party"
|
| 5065 |
+
? "Reported by an independent third party."
|
| 5066 |
: entry.relationship === "collaborative"
|
| 5067 |
+
? "Collaborative report by the developer and a third party."
|
| 5068 |
: undefined
|
| 5069 |
}
|
| 5070 |
>
|
|
@@ -120,7 +120,7 @@ export function EvalCard({ summary, delayMs = 0 }: EvalCardProps) {
|
|
| 120 |
<div className="min-w-0">
|
| 121 |
<div className="text-xl font-bold">{summary.evaluation_name}</div>
|
| 122 |
<div className="mt-1 text-xs font-medium uppercase tracking-[0.18em] text-muted-foreground">
|
| 123 |
-
|
| 124 |
</div>
|
| 125 |
<div className="mt-1 text-sm text-muted-foreground line-clamp-2">
|
| 126 |
{overviewText ?? summary.metric_config.evaluation_description}
|
|
@@ -131,13 +131,13 @@ export function EvalCard({ summary, delayMs = 0 }: EvalCardProps) {
|
|
| 131 |
{summary.third_party_ratio > 0 && (
|
| 132 |
<Badge className="bg-emerald-600 text-white hover:bg-emerald-600">
|
| 133 |
<BadgeCheck className="mr-1 h-3 w-3" />
|
| 134 |
-
|
| 135 |
</Badge>
|
| 136 |
)}
|
| 137 |
{reproducibilityGapCount > 0 && (
|
| 138 |
<Badge className="bg-amber-500 text-amber-950 hover:bg-amber-500">
|
| 139 |
<AlertTriangle className="mr-1 h-3 w-3" />
|
| 140 |
-
|
| 141 |
</Badge>
|
| 142 |
)}
|
| 143 |
</div>
|
|
|
|
| 120 |
<div className="min-w-0">
|
| 121 |
<div className="text-xl font-bold">{summary.evaluation_name}</div>
|
| 122 |
<div className="mt-1 text-xs font-medium uppercase tracking-[0.18em] text-muted-foreground">
|
| 123 |
+
Suite: {summary.composite_benchmark_name}
|
| 124 |
</div>
|
| 125 |
<div className="mt-1 text-sm text-muted-foreground line-clamp-2">
|
| 126 |
{overviewText ?? summary.metric_config.evaluation_description}
|
|
|
|
| 131 |
{summary.third_party_ratio > 0 && (
|
| 132 |
<Badge className="bg-emerald-600 text-white hover:bg-emerald-600">
|
| 133 |
<BadgeCheck className="mr-1 h-3 w-3" />
|
| 134 |
+
Third-party reported
|
| 135 |
</Badge>
|
| 136 |
)}
|
| 137 |
{reproducibilityGapCount > 0 && (
|
| 138 |
<Badge className="bg-amber-500 text-amber-950 hover:bg-amber-500">
|
| 139 |
<AlertTriangle className="mr-1 h-3 w-3" />
|
| 140 |
+
Reproducibility gap
|
| 141 |
</Badge>
|
| 142 |
)}
|
| 143 |
</div>
|
|
@@ -629,10 +629,10 @@ export function EvalDetail({ summary }: EvalDetailProps) {
|
|
| 629 |
: "Not linked"
|
| 630 |
const leaderboardDescription = isResearchView
|
| 631 |
? summary.is_aggregated
|
| 632 |
-
? "Models ranked by average raw score across the
|
| 633 |
: "Models ranked by raw score for this benchmark."
|
| 634 |
: summary.is_aggregated
|
| 635 |
-
? "Averaged model results across the
|
| 636 |
: "Model results with benchmark context, source dataset detail, and optional instance-data links."
|
| 637 |
const reportingCompleteness = summary.evalcards?.annotations?.reporting_completeness
|
| 638 |
const benchmarkComparability = summary.evalcards?.annotations?.benchmark_comparability
|
|
@@ -695,15 +695,15 @@ export function EvalDetail({ summary }: EvalDetailProps) {
|
|
| 695 |
<div className="space-y-2.5">
|
| 696 |
<div className="flex flex-wrap items-center gap-2">
|
| 697 |
<Badge variant="outline" className="border-border/60 bg-background/80 text-[11px] uppercase tracking-[0.18em]">
|
| 698 |
-
{summary.is_aggregated ? "
|
| 699 |
</Badge>
|
| 700 |
{summary.is_aggregated ? (
|
| 701 |
<Badge variant="secondary" className="font-normal">
|
| 702 |
-
{summary.aggregate_sources?.length ?? 0}
|
| 703 |
</Badge>
|
| 704 |
) : (
|
| 705 |
<Badge variant="secondary" className="font-normal">
|
| 706 |
-
|
| 707 |
</Badge>
|
| 708 |
)}
|
| 709 |
<Badge variant="secondary" className="font-normal capitalize">
|
|
@@ -778,11 +778,11 @@ export function EvalDetail({ summary }: EvalDetailProps) {
|
|
| 778 |
<dl className="mt-3 grid gap-x-5 gap-y-3 text-sm sm:grid-cols-2 xl:grid-cols-5">
|
| 779 |
<div>
|
| 780 |
<dt className="text-[11px] font-semibold uppercase tracking-[0.16em] text-muted-foreground">
|
| 781 |
-
|
| 782 |
</dt>
|
| 783 |
<dd className="mt-1 break-words font-medium">
|
| 784 |
{summary.is_aggregated
|
| 785 |
-
? summary.aggregate_sources?.map((source) => source.composite_benchmark_name).join(", ") || "Multiple
|
| 786 |
: summary.composite_benchmark_name}
|
| 787 |
</dd>
|
| 788 |
</div>
|
|
@@ -1160,7 +1160,7 @@ export function EvalDetail({ summary }: EvalDetailProps) {
|
|
| 1160 |
<TableCell className="hidden md:table-cell">
|
| 1161 |
<div className="text-sm text-muted-foreground capitalize">
|
| 1162 |
{modelResult.aggregate_components && modelResult.aggregate_components.length > 1
|
| 1163 |
-
? `average of ${modelResult.aggregate_components.length}
|
| 1164 |
: datasetName ?? "Detailed result source"}
|
| 1165 |
</div>
|
| 1166 |
</TableCell>
|
|
|
|
| 629 |
: "Not linked"
|
| 630 |
const leaderboardDescription = isResearchView
|
| 631 |
? summary.is_aggregated
|
| 632 |
+
? "Models ranked by average raw score across the suite's component benchmarks."
|
| 633 |
: "Models ranked by raw score for this benchmark."
|
| 634 |
: summary.is_aggregated
|
| 635 |
+
? "Averaged model results across the suite's component benchmarks, with drill-down to each component score."
|
| 636 |
: "Model results with benchmark context, source dataset detail, and optional instance-data links."
|
| 637 |
const reportingCompleteness = summary.evalcards?.annotations?.reporting_completeness
|
| 638 |
const benchmarkComparability = summary.evalcards?.annotations?.benchmark_comparability
|
|
|
|
| 695 |
<div className="space-y-2.5">
|
| 696 |
<div className="flex flex-wrap items-center gap-2">
|
| 697 |
<Badge variant="outline" className="border-border/60 bg-background/80 text-[11px] uppercase tracking-[0.18em]">
|
| 698 |
+
{summary.is_aggregated ? "Suite" : "Single Benchmark"}
|
| 699 |
</Badge>
|
| 700 |
{summary.is_aggregated ? (
|
| 701 |
<Badge variant="secondary" className="font-normal">
|
| 702 |
+
{summary.aggregate_sources?.length ?? 0} component benchmarks
|
| 703 |
</Badge>
|
| 704 |
) : (
|
| 705 |
<Badge variant="secondary" className="font-normal">
|
| 706 |
+
Suite: {summary.composite_benchmark_name}
|
| 707 |
</Badge>
|
| 708 |
)}
|
| 709 |
<Badge variant="secondary" className="font-normal capitalize">
|
|
|
|
| 778 |
<dl className="mt-3 grid gap-x-5 gap-y-3 text-sm sm:grid-cols-2 xl:grid-cols-5">
|
| 779 |
<div>
|
| 780 |
<dt className="text-[11px] font-semibold uppercase tracking-[0.16em] text-muted-foreground">
|
| 781 |
+
Suite
|
| 782 |
</dt>
|
| 783 |
<dd className="mt-1 break-words font-medium">
|
| 784 |
{summary.is_aggregated
|
| 785 |
+
? summary.aggregate_sources?.map((source) => source.composite_benchmark_name).join(", ") || "Multiple suites"
|
| 786 |
: summary.composite_benchmark_name}
|
| 787 |
</dd>
|
| 788 |
</div>
|
|
|
|
| 1160 |
<TableCell className="hidden md:table-cell">
|
| 1161 |
<div className="text-sm text-muted-foreground capitalize">
|
| 1162 |
{modelResult.aggregate_components && modelResult.aggregate_components.length > 1
|
| 1163 |
+
? `average of ${modelResult.aggregate_components.length} component scores`
|
| 1164 |
: datasetName ?? "Detailed result source"}
|
| 1165 |
</div>
|
| 1166 |
</TableCell>
|
|
@@ -5,5 +5,5 @@ import { useAudienceMode } from "@/components/audience-mode-provider"
|
|
| 5 |
export function HomeModeLabel() {
|
| 6 |
const { mode } = useAudienceMode()
|
| 7 |
|
| 8 |
-
return <span>{mode === "research" ? "Research
|
| 9 |
}
|
|
|
|
| 5 |
export function HomeModeLabel() {
|
| 6 |
const { mode } = useAudienceMode()
|
| 7 |
|
| 8 |
+
return <span>{mode === "research" ? "Research reader mode" : "Policy reader mode"}</span>
|
| 9 |
}
|
|
@@ -183,7 +183,7 @@ export function Navigation() {
|
|
| 183 |
|
| 184 |
<div className="mt-3 border-t border-border/60 pt-3">
|
| 185 |
<div className="text-[10px] font-semibold uppercase tracking-[0.18em] text-muted-foreground">
|
| 186 |
-
|
| 187 |
</div>
|
| 188 |
<div className="mt-2 grid grid-cols-2 gap-2">
|
| 189 |
<button
|
|
|
|
| 183 |
|
| 184 |
<div className="mt-3 border-t border-border/60 pt-3">
|
| 185 |
<div className="text-[10px] font-semibold uppercase tracking-[0.18em] text-muted-foreground">
|
| 186 |
+
Reader mode
|
| 187 |
</div>
|
| 188 |
<div className="mt-2 grid grid-cols-2 gap-2">
|
| 189 |
<button
|