The W6800 was already in the live DB (id 24) but missing from the
canonical seeder, so a fresh would drop it. Bringing the
seeder in sync with reality.
When a suite filter is active, the per-band view now shows only the
selected suite rows instead of all suites in the band. Category total
strips (Devlogic/Sysops) are hidden during suite filtering since they
aggregate over all suites and would be misleading for cross-band
comparison.
Clearing the suite filter restores all suite rows and totals.
Remove the free-text search input (exact-string LIKE was misleading) and
the single-value Model/Suite selects. Replace with five checkbox
multi-select dropdowns in display order: GPU, Model, Quant, Inference
engine, Suite.
Matching semantics:
- OR within each filter control (selecting two GPUs shows either)
- AND across controls (GPU + Model + Quant + Engine + Suite)
- Suite selection is inclusive: a band running any selected suite
matches, including incomplete bands missing some selected suites
Each dropdown shows a count badge when active and a checkmark per selected
item. Pagination resets on every filter change. The cache key already
includes the filters array so filtered results are cached independently.
Each category now renders as a self-contained section: its colored
total strip, its own column headings, and its suite rows directly
beneath. Empty categories are omitted entirely. Removes the old
single-column-header layout that sat above all rows regardless of
category.
Replace side-by-side layout with stacked rows. Devlogic gets a sky-blue
left border and label tint; Sysops gets an amber left border and label
tint. Removes the | separator since the stacked rows establish clear
visual hierarchy.
The headline totals were using a per-task geometric mean, which gave
disproportionate weight to short responses with low effective user_tps
(e.g. 2-token SoftBench answers at ~1.2 tok/s). This produced misleadingly
low Devlogic totals (20.5 for asus_210w) when the displayed suite speeds
were all in the 40-50 tok/s range.
Replace geo-mean accumulators (ln_sum/ln_n) with token-weighted
accumulators (rate_token_sum = sum(user_tps × tokens)). The headline total
is now rate_token_sum / total_tokens, matching the methodology already used
by each displayed suite row.
For ScenarioBench, the suite aggregate gen_tps (sum(gen_tokens)/sum(wall))
is weighted by the suite's total generated tokens, keeping the headline
total consistent with the displayed ScenarioBench row.
Results for the 210W bands:
asus_210w: devlogic 20.5 → 47.0, sysops 19.5 → 10.6
sapphire_210w: devlogic 19.6 → 43.7, sysops 8.3 → 8.8
Replace the single Band total with two adjacent metric groups:
- Devlogic total: softbench, prosebench, psychbench, depthsweep
(all non-infra, non-scenario suites)
- Sysops total: infrabench + scenariobench
Each group independently shows geo-mean tok/s, total tokens, and
pass/fail counts. Scenariobench contributes per-observation
gen_tokens/wall rates to the sysops geo-mean.
Remove the server-config badge (e.g. 'llama.cpp DFlash spec-decode,
131k ctx, fa on') from the front-page card header. Label, quant, and
engine badges remain.
Migration drops the old total_* columns and adds devlogic_* and
sysops_* columns to session_summaries.
Labels now define distinct sessions — different power-cap configs
(asus_210w, sapphire_210w, asus_uncapped) render as separate bands
instead of merging into one. The label badge displays alongside
quant/engine/config badges rather than replacing them.
Scenario drilldown filters by label to prevent cross-band mixing.
Data fix: runs 22-32 (asus_210w) and 43-46 (asus_uncapped) reassigned
from Sapphire (gpu_id=11) to ASUS (gpu_id=12) — they were run on the
ASUS card but imported with the Sapphire GPU identity.
The stored blob is the inference server invocation, and it is no longer only
a local server's: a hosted provider is addressed rather than configured.
Display text only -- the table, routes and relations keep their names, so
there is no migration and no broken links.