Add Code Review page + BridgeBench source; fix SWE-bench parser - #1
Add Code Review page + BridgeBench source; fix SWE-bench parser#1opencolin wants to merge 22 commits into
Conversation
- New /code-review page: 7 AI code reviewers ranked by F1 (sortable recall/precision/F1), sourced from Tenki's benchmark with the vendor-bias caveat front and center (Tenki authored it and leads only on recall). Stored as a dated snapshot — the page renders from a nested RSC payload, so no clean live-parse target. Added to the site nav. - New BridgeBench source (bridge-mind/bridgebench): vibe-coding benchmark read from the season snapshot in the public repo via GitHub raw, dodging the Cloudflare wall on bridgebench.ai. Rubric entry ranks it #5. - Fix SWE-bench: openlm.ai dropped the per-row Agent column, silently breaking the 7-column parser (0 rows). Reparsed as the new 6-column model-level table (59 models restored); benchmark kind agent -> model, rubric agentNative 100 -> 65. - Regenerated leaderboard snapshot (benchmarkCount now 10). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
Review Complete Files Reviewed: 8 By Severity:
This PR adds code-review benchmark data ingestion (BridgeBench, SWE-bench) and a leaderboard code-review page. One medium-severity issue found: BridgeBench URL hardcodes a season identifier that will silently go stale. Files Reviewed (8 files) |
There was a problem hiding this comment.
Risk: 🟡 Medium (35/100) — 1 medium finding · 5988 LOC across 8 files
Overview
This PR introduces a code-review benchmark leaderboard to the ensemble project, adding scraping infrastructure for BridgeBench and SWE-bench datasets, a new /code-review page, and a CodeReviewTable component.
Files Changed (8)
web/src/lib/scrape/sources/bridgeBench.ts— New: BridgeBench JSON scraperweb/src/lib/scrape/sources/swebench.ts— Modified: SWE-bench HTML table scraper (agent column removed)web/src/lib/scrape/build.ts— Data aggregation pipeline with percentile blendingweb/src/lib/codeReview.ts— Code-review leaderboard data massagingweb/src/app/code-review/page.tsx— New code-review leaderboard pageweb/src/components/CodeReviewTable.tsx— New table componentweb/src/components/SiteHeader.tsx— Navigation link addedweb/src/data/leaderboard.snapshot.json— Updated snapshot data
Key Finding
Medium — Hardcoded season URL (findings-001): In web/src/lib/scrape/sources/bridgeBench.ts:11, the BRIDGE_BENCH_URL hardcodes /snapshots/season-1/ in its path. The source documentation states the task set is rebuilt every 90 days. When a new season is published, this URL will return stale data or 404 without any detection mechanism. Recommendation: Either dynamically discover the current season via the GitHub API or add response validation with health-check warnings.
Risk Assessment
Overall low risk. The code-review pipeline is new infrastructure that doesn't affect existing leaderboard behavior. The scraping sources have inherent upstream dependency risks (schema drift, season rotation) that are partially mitigated by the existing ok:false failure handling in build.ts. The hardcoded season URL is the most actionable finding and should be addressed before going to production.
| // it straight from GitHub raw (no bot wall, and it auto-updates as models are run). | ||
| // Model-level benchmark; headline metric is `qualifiedRate` (% of tasks passed). | ||
| export const BRIDGE_BENCH_URL = | ||
| "https://raw.githubusercontent.com/bridge-mind/bridgebench/HEAD/snapshots/season-1/ui-bench-snapshot.json"; |
There was a problem hiding this comment.
🟡 Hardcoded snapshot season in BridgeBench URL will silently go stale on next season (bug)
The BRIDGE_BENCH_URL at web/src/lib/scrape/sources/bridgeBench.ts:11 hardcodes /snapshots/season-1/ in the GitHub raw URL. The source comment on line 9 states the task set is rebuilt every 90 days. When a new season is published, this URL will either return stale season-1 data indefinitely or 404, with no mechanism to detect or adapt. The ingestion pipeline in build.ts will treat a 404 as a fetch failure (source marked ok:false) or silently continue ingesting outdated data if the old URL still resolves.
💡 Suggestion: Either (a) fetch a season index or the latest tag from the GitHub repo to discover the current season dynamically, or (b) add a health-check assertion on a season/version field in the response and surface a warning when it drifts. If using a fixed season is intentional, document the refresh cadence and monitoring expectation.
📋 Prompt for AI Agents
In web/src/lib/scrape/sources/bridgeBench.ts around line 10-11, the BRIDGE_BENCH_URL hardcodes season-1 in the path. Modify the fetch logic to either dynamically discover the current season (e.g., fetch a manifest or list tags from the GitHub API/repo) or validate a season field in the JSON response against an expected value, logging a warning on mismatch. Add a comment explaining the season-rotation strategy and how it stays current.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…from nav Three agent-infrastructure boards fed live from ComputeSDK's open benchmark repo (daily CI, raw per-iteration JSON read via GitHub raw + aggregated to medians server-side): sandbox TTI (sequential/burst/staggered + $/hr), object-storage throughput (1-16MB), remote-browser session round-trip + actions/s. Nav labels Top Model/Agent/Team -> Model/Agent/Team; nav scrolls on narrow screens. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Empty the model exclude list — Fable 5 was dropped pre-release; it's usable now, so scraped rows (SWE-bench 95%, Arena coding Elo, AA, ARC-AGI, Arena Agent) list again. Ranks #3 overall; Anthropic's best on Top Team. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
First result from the Tenki backend (runner/tenki_env.py): Fable 5 solved all 3 hidden-test tasks (expr-eval, lru-ttl, csv-parse) blind from spec, each in its own Firecracker microVM, model served via Vercel AI Gateway. Also fixes the backend's cwd bug — Tenki exec drops its cwd param (commands land in $HOME), so every command now cds explicitly; pre-fix runs graded the stub and scored ~3%. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sandboxes / Storage / Browsers cards with live provider counts, linking each infra board + the ComputeSDK source. Listed below the ranking (they score providers, not models, so the agent-native/coverage rubric doesn't apply). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Gaps: mini-SWE-agent is now a priority row with its own gap card (it's our runner — cells are one command away); footnote rewritten from the old claude-code-proxy/Nebius-Responses-API story to the current pipeline (mini-SWE-agent in ConTree/Tenki microVMs, models via Token Factory or the Vercel AI Gateway). /team page stays, just not in the nav. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The overall model composite averaged percentiles with no regard for how many benchmarks backed them — a model with ONE tied-top score (Nemotron-3 Ultra, 1 benchmark) ranked #1 over six-benchmark breadth. Composite now shrinks toward the median with one phantom observation (k=1): a single perfect benchmark caps at ~75, broad excellence wins. New order: Fable 5 #1 (91.9, 6 benchmarks), Opus 4.8 #2, GPT-5.5 #3; Nemotron falls to #23. Homepage now shows the overall Top-10 models table (breadth-weighted) plus a leading 'Top model' highlight card, since the per-harness board can't list models nobody has paired with that harness. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The constant k=1 prior over-taxed new flagships: GPT-5.6 Sol (top percentile on all 3 of its benchmarks) ranked below GPT-5.5 (7 broad-but-weaker). Prior weight now decays 1/n — a lone benchmark still caps at ~75 (Nemotron artifact stays buried, #31), but by n>=3 the penalty is negligible. New top: Fable 5 97.6, GPT-5.6 Sol 94.9, Opus 4.8 94.3, GPT-5.5 93.6. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Two stacked ranked tables (overall Top Models vs per-harness board) with different #1s and scales read as rivals. The harness board is now the one table: an Overall column shows each row's all-benchmark rank+composite, overall composite breaks harness-score ties (the 100-clusters), and the top overall models with no row on the selected harness render as unranked 'unmeasured' ghost rows under the board instead of a second table. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…le 5 + Sol Unmeasured top-overall models now sit ABOVE the ranked rows (dimmed, 'unmeasured') instead of below — and the original top-3 gap is mostly gone: the Tenki head-to-head merged as real Claude Code rows (Fable 5 100%, GPT-5.6 Sol 100%, 3 hidden-test tasks each), so with the overall tie-break Fable 5 ranks #1 and Sol #2 on the board. Remaining ghosts: Opus 4.8, GPT-5.5, Grok 4.5. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Two new discriminator tasks (py-cron-next: 64 cases, cross-verified 3 ways; ts-semver-range: 51 cases incl. prerelease gating) + runs of real Claude Code in Tenki microVMs via the AI Gateway for Fable 5, GPT-5.6 Sol, Opus 4.8, GPT-5.5, Grok 4.5. merge_cc_runs.py aggregates per-task across run files so partial runs can't clobber full ones. Result: every model that completed the suite scored 100% — the board's 1-5 order comes from the Overall tie-break, stated plainly. Registry + make-up-chain runs for Tenki's 5-session cap. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Grok 4.5 and GPT-5.5 finish their remaining tasks (one infra-timeout retried). Every frontier model — Fable 5, GPT-5.6 Sol, Opus 4.8, GPT-5.5, Grok 4.5 — now has a full 5-task measured row. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…n the table
The big score + bar now show the breadth-weighted Overall composite (the
metric that actually ranks the board), the saturated ixio-runs column is
hidden in overall mode, and top-overall models without a row on the harness
sit IN the table ranked by the same metric — dimmed, tagged 'not run on
{harness}', cells em-dashed. Agent detail pages keep the legacy
harness-composite score (no overall prop).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Tier colors were still bucketed by the old harness-composite sort, so a #2 row could show yellow above a green #6. In overall mode tiers now derive from the table's current ranking (top 25% excellent, bottom 40% iffy); legacy boards keep entry tiers. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
OpenFilter gains a labels prop (default All/Open unchanged for Agent and Team pages); the model board passes Frontier / Open Weight. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Raw sequential-TTI medians crowned HopX at '0 ms' — its latest run recorded ttiMs 0 for all 100 iterations (degenerate data; their composite gives it 2.9 and their leaderboard delists it). The board now scrapes ComputeSDK's SSR leaderboard (composite = latency percentiles × reliability, plus median/P95/success) and joins burst/staggered medians + $/hr from the repo. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
mini-SWE-agent × Tenki/ConTree microVMs over all 5 hidden-test tasks. Kimi K2.7 Code sweeps 5/5 — first open model to ace both discriminators. MiniMax M3 posts the suite's first genuine non-100: 63/64 on cron-next (98.4%), verified with a live agent loop after two infra artifacts (Tenki EU DNS outage, one silent loop death that graded the stub) were retried. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Three TF models on the 472-case discriminator suite (regex-lite 289, markdown-lite 108, shell-split 75) via mini-SWE-agent in microVMs. First real separation: K2.7 98.9 (near-perfect everywhere), M3 96.3 (drops 11 markdown emphasis cases), GLM-5.2 66.7 — the only perfect regex score (289/289, reproduced) but 4x RepeatedFormatError on markdown's fence-dense prompt even at tolerance 20: an agent-protocol capability failure, published as an explained 0. Runner: TF models -> textbased interface, max_consecutive_format_errors=20, dir-safe seeding. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
New /deep-research page: 45 deep-research agents ranked by overall score with comprehensiveness / insight / instruction-following / readability / citation sub-scores. A distinct agent category (like Code Review) — sourced from the muset-ai HF Space, read from its leaderboard.csv via HF raw (no bot wall, auto-refreshes daily). Added to nav next to Code Review. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
| Option | What it gives users | What it costs | Effort to change later |
|---|---|---|---|
| Current: caveat box | Full picture for careful readers | Easy to miss on scroll | No structural change needed |
| More prominent conflict flag | Conflict is inescapable | Slightly noisy UI | One-line label change |
| Omit until a second benchmark exists | No conflict risk | No code-review page at all | Full page rebuild |
The current approach is correct so long as the conflict signal is impossible to miss — moving the caveat above the table rather than below it, or adding a persistent "⚠ vendor benchmark" badge next to the rank-1 row, would close this gap.
4. SWE-bench is reclassified from an agent-level benchmark to a model-level benchmark, because the source dropped the per-row harness column — so each score is now attributed to a model, not a (harness × model) pair.
The reclassification is forced by upstream data loss, not a product choice, so the decision itself is correct. The concern is downstream: SWE-bench's agentNative rubric score drops from 100 to 65, reducing its weight in the benchmark composite, even though SWE-bench measures exactly the agentic coding capability the site cares about most. Users who relied on SWE-bench scores appearing on agent harness detail pages will no longer see them there. This is an acceptable tradeoff but worth flagging in the benchmark's blurb rather than burying in code comments.
5. Agent infrastructure — sandbox cold-start, object storage throughput, and remote browser latency — is introduced as a first-class product category, with three new pages and nav entries, sourced from ComputeSDK's daily CI benchmarks.
Infrastructure rankings are genuinely useful to practitioners building agents, and the sourcing (daily open CI, raw data in a public repo) is the highest-quality approach on the site. But this is a meaningful scope expansion: the site previously answered "which model is best at coding?" and now also answers "which sandbox/storage/browser provider should you use?" These are different audiences and different decisions.
| Option | What it gives users | What it costs | Effort to change later |
|---|---|---|---|
| Current: three nav items at same level as Model/Agent | Infrastructure discoverable alongside model rankings | Nav grows to 8 items; blurs site identity | Moderate restructure |
| Infrastructure under a grouped sub-nav | Clean separation of concerns | Slightly more clicks | Nav component change only |
| Separate microsite | No identity dilution | Build and maintain a second domain | High |
The infrastructure pages are well-executed, but putting Sandbox/Storage/Browser at the same nav level as Model/Agent/Code-Review implies they answer the same kind of question. A grouped sub-nav or a clear "Agent Infrastructure" section header would preserve the model-ranking identity while surfacing the infrastructure data.
6. **Top-overall models that have never been run on a given harness appear as
The intent — showing users what could be benchmarked — is valuable as a gap-awareness feature. But placing unmeasured models inside the ranked table creates a category error: a user sees GPT-5 at rank 3 on the Claude Code board and may not notice the small "not run on Claude Code" badge. The row renders with empty benchmark cells, which is visually distinguishable, but the rank number and bar chart are live and meaningful-looking.
The correct approach is correct only if the ghost rows are visually loud enough that no user could mistake them for measured entries. The current 25% opacity reduction may not be sufficient — a "coverage gap" section below the measured table, with a clear heading, would remove the ambiguity entirely while still communicating the same information.
7. The main home board now ranks models by their breadth-weighted overall composite (across every benchmark the site tracks), rather than by per-harness composite — and the column header changes from "Score" to "Overall."
This is a fundamental change to what the home page leaderboard answers. Previously: "which model performs best on the Claude Code harness?" Now: "which model is best overall across all benchmarks?" The change is coherent with the site's expansion beyond a single harness, but it means the board no longer cleanly answers the question implied by the harness-switcher pill above it. A user who selects the "Claude Code" harness view but sees overall scores in the right column may be confused about what they're looking at. The harness-specific composite should remain accessible (it is, as a tiebreaker) but the primary ranking column should either match the selected harness or be clearly labeled "all benchmarks" in the harness header rather than just in the column tooltip.
8. The "All" filter label is renamed to "Frontier" on the main harness board.
Frontier" is not a synonym for "all models including open-weight ones.
9. A new evidence-weighted composite formula penalizes models with few benchmarks: one benchmark caps at ~75 composite; three or more benchmarks face negligible penalty.
This directly addresses a real artifact: a model that tops a single niche benchmark could otherwise outrank models measured broadly. The 1/n prior approach is principled — it's a standard Bayesian shrinkage toward the population median, and the penalty is transparent (a flagship model topping three major benchmarks scores normally). The formula change will re-rank existing models, so users may be confused if scores change without an explanation, but the change is correct.
10. Deep research agents are introduced as a distinct category — separate from coding agents and code review — with their own page sourced from DeepResearch-Bench on HuggingFace.
Multi-step web investigation → cited report is a genuinely distinct agent capability. The sourcing (HF raw CSV, auto-updates) is clean and the "A different axis" explanatory card correctly positions it as completeness-of-landscape rather than a core coding metric. No concerns.
11. FrontierMath (Epoch AI Tier 4) is added as a model benchmark despite having agentNative: 0 and realism: 60 — meaning it measures math reasoning on a private held-out set, not coding agent behavior.
FrontierMath's contamination resistance is genuinely valuable signal, and Epoch AI's scoring methodology (private set, verified answers) is among the most rigorous on the site. The low agentNative weight will keep it from distorting the composite. The concern is user perception: a user browsing the benchmarks page will see FrontierMath alongside SWE-bench and coding evaluations and may infer it measures coding ability. The blurb ("exceptionally difficult research-level math") is accurate but its placement in a coding-agent leaderboard without a clear "math reasoning" category tag could mislead.
12. The main navigation drops "Top Team" and adds Code Review, Deep Research, Sandbox, Storage, and Browser — growing from 6 items to 9 items across substantially different product categories.
Each individual addition is defensible, but the aggregate effect is a nav with 9 items spanning model rankings, agent rankings, code review, research agents, sandboxes, storage, and browsers — with no grouping or hierarchy. This creates navigation that is hard to scan and no longer communicates a clear site identity. Users arriving for the first time will not immediately understand what the site is about. A two-level nav (or at minimum visual grouping: "Rankings" | "Infrastructure" | "Benchmarks/Gaps/Method") would restore scannability without removing any content.
Open questions
-
Is the caveat about the Tenki-authored benchmark visible enough to users who land directly on /code-review from search? (Would moving the caveat above the table change behavior?)
-
Does the ghost-row feature need a user study or A/B test before the home board ships it? Specifically: do test users read the 'not run on [harness]' badge as a warning, or do they treat the rank number as a real harness ranking?
-
What is the intended audience hierarchy — practitioners choosing models, practitioners choosing infrastructure, or benchmark researchers? The navigation now serves all three without prioritizing any.
-
The PR description says it's adding BridgeBench, but the RUBRIC comment says BridgeBench was removed in 2026-07. Is the PR description outdated, or is there a version of BridgeBench integration being removed in the same PR it was added?
-
For the Sandbox/Storage/Browser pages sourced from ComputeSDK benchmarks: is ComputeSDK a neutral third party with no financial relationship to the providers it ranks? (Same conflict-of-interest concern as Tenki.)
-
The 'Frontier' filter label implies open-weight models are not frontier. As open-weight models approach closed-weight quality, will this label require revisiting, and if so how soon?
Recommendation
Ship with changes
The SWE-bench fix, new tasks, and composite formula change are clearly correct and should ship. The code review page, infrastructure pages, and deep research page are well-executed additions. However, two decisions need changes before shipping: the 'Frontier' filter label is semantically wrong (rename back to 'All' or find a more accurate term), and ghost rows need stronger visual differentiation from measured entries — the 25% opacity reduction is insufficient to prevent users from treating inferred overall ranks as harness-specific benchmark results.
FrontierMath: epoch.ai is client-rendered, but every chart reads open CSVs — we parse benchmarks.csv (RFC4180: their notes fields carry commas, quotes AND newlines) and take Tier 4 v2 PRIVATE, the hardest tier and what epoch.ai/frontiermath resolves to. Public subsets are ±50pp noise, excluded; best run per model kept. 38 models; Fable 5 tops at 87.8%. Ranked #8 — top-tier openness/verification, but it measures math, not the coding stack. BridgeBench removed: they restructured to an 'arena' architecture and pulled all derived leaderboard data from the repo (site stays Cloudflare-walled), so the season-1 snapshot path 404s permanently. Restore from git history if they publish an open v3 results path. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
New artificialAnalysis source reads artificialanalysis.ai/models — an App-Router app with no __NEXT_DATA__, so we reassemble the streamed RSC flight payload (self.__next_f chunks) and pull the initialModels array (28 models, clean fields). Emits two benchmarks: artificial-analysis (Intelligence Index, now direct from AA instead of openlm.ai's mirror) and a new AA Coding Index — AA's composite of coding evals, top: GPT-5.6 Sol 77.4, Terra 76.7, Fable 5 76.5. Dropped the AAII column from the openlm chatbot-arena source to avoid double-emitting. benchmarkCount 11. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
What
/code-reviewpage — ranks 7 AI code reviewers (Tenki, Devin, Cursor, CodeRabbit, Greptile, Copilot, Graphite) on 122 real production bugs. Default sort is F1, not recall — with a prominent caveat box: the benchmark is Tenki's own, and its Add Code Review page + BridgeBench source; fix SWE-bench parser #1 spot holds only on recall (29.9% precision); by F1 it's a near three-way tie. Sortable columns let readers flip the story themselves.snapshots/season-1/ui-bench-snapshot.jsonvia GitHub raw. Auto-updates as they run more models.agent→model.Why one PR
The SWE-bench breakage was found while integrating BridgeBench (both touch
build.tsBENCHMARKS/SOURCES/rubric), and the snapshot regen bakes in all three together.Verification
tscclean,next buildclean, deployed to production and spot-checked live (/code-reviewrenders, sort works, benchmark count shows 10, SWE-bench shows 59 models).🤖 Generated with Claude Code