+
+ Recipe Comparison
+
+ Compare runtime knobs (speculative decoding, MTP layers, …) on the same deployment.
+ Speedup is computed against the variant whose techniques is empty within the
+ same (model × hw × precision × isl/osl × conc) group.
+
+
+
+ {error && (
+
+ {error.message}
+
+ )}
+
+ {loading && (
+ Loading benchmarks and evaluations…
+ )}
+
+ {!loading && rows.length === 0 && (
+
+ No data for {selectedModel || '(no model)'}
+ {selectedRunDate ? (
+ <>
+ {' '}
+ on {selectedRunDate}
+ >
+ ) : null}
+ . Pick a different model or date.
+
+ )}
+
+ {!loading && rows.length > 0 && (
+
+ )}
+
+ );
+}
diff --git a/packages/app/src/components/evaluation/recipe-data.test.ts b/packages/app/src/components/evaluation/recipe-data.test.ts
new file mode 100644
index 000000000..8f4840ece
--- /dev/null
+++ b/packages/app/src/components/evaluation/recipe-data.test.ts
@@ -0,0 +1,156 @@
+import { describe, expect, it } from 'vitest';
+
+import type { BenchmarkRow, EvalRow } from '@/lib/api';
+
+import { buildRecipeRows, describeTechniques } from './recipe-data';
+
+function bmk(overrides: Partial