Skip to content

the ranked chart ranked the rows the ledger refuses to rank - #3345

Merged
Flotapponnier merged 1 commit into
devfrom
fix/chart-ranks-unranked
Oct 28, 2026
Merged

Flotapponnier merged 1 commit into
devfrom
fix/chart-ranks-unranked

Conversation

@Flotapponnier

Copy link
Copy Markdown
Collaborator

Florent spotted this on the chart: RouteMesh was sitting at #5 in the ranked bars, among the providers it forwards to, while the ledger three inches below showed it as unranked with a —.

Two surfaces on one screen contradicting each other, and the louder one was wrong.

The gap

ledger-table.tsx puts an unranked row in a labelled block below the field and never numbers it. ranked-bar-chart.tsx filtered on score and success rate only:

const scored = benchmark.results.filter(
  (r) => (r.ms.p50 > 0 || ...) && (r.successRate ?? 100) >= MIN_DISPLAY_SUCCESS_PCT
);

No unrankedLabel check, so every unranked row on the site was being ranked on the first surface a reader sees. distribution-chart.tsx:83 and public-endpoints-section.tsx:37 already filter the same way; this one did not.

Excluded from the ranking, not from the page

The ledger keeps the row and its number. Not being ranked is a statement about comparability, not a reason to hide a measurement — the same distinction as #3343, which stopped the ledger rendering those numbers as zero.

surface before after
ranked chart #5 RouteMesh 61 ms absent
ledger — RouteMesh 64 ms unchanged
region table 123 / 41 / 27 ms unchanged

Verified locally

Chart now ranks QuickNode, GetBlock, Chainstack, Dwellir, BlockMachine, and nothing else. RouteMesh keeps its ledger row with the region breakdown. Nova keeps its 493 on perp-active-markets.

Gates: tsc --noEmit clean, bun test src/ 745 pass 0 fail.

The ledger puts an unranked row in a labelled block below the field and
never gives it a number. The ranked bar chart, which sits above the ledger
and is the first thing anyone reads, ranked them anyway.

So RouteMesh came out "#5" against the very providers it forwards to,
which is exactly the comparison the unranked flag exists to refuse, while
the table three inches below showed it as unranked. The two surfaces
contradicted each other on the same screen, and the louder one was wrong.

distribution-chart.tsx and public-endpoints-section.tsx already filter on
unrankedLabel. This surface was the one that did not.

Excluded from the ranking, not from the page: the ledger keeps the row and
its number, because not being ranked is a statement about comparability,
not a reason to hide a measurement. Same distinction as the fix two
commits ago, which stopped the ledger printing those numbers as zero.

Verified locally: the chart now ranks QuickNode, GetBlock, Chainstack,
Dwellir and BlockMachine, RouteMesh is absent from it, and the ledger row
still reads 64 ms with its region breakdown.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@Flotapponnier
Flotapponnier merged commit 719ed5a into dev Oct 28, 2026
2 checks passed
Flotapponnier added a commit that referenced this pull request Oct 29, 2026
#3347)

* every unranked row on the site publishes 0 in its headline column (#3343)

The ledger renders unranked rows with `value={0}` hard-coded, the same prop
the unresponsive rows get. For an unresponsive row that is right: there is
no value. For an unranked row it throws away a measured number that the
loader took deliberate care to preserve.

In production right now: Nova reads 0 on /benchmarks/perp-active-markets
while its own row carries 493, and CoW and Bebop read 0 on
evm-quote-output against 3.17 and 163.75.

The data half of this was already fixed once, and load.ts:395 records what
it cost: "zeroing them published 0.00 bps for a venue giving up a hundred".
The loader now blanks ms only when the spec asks with
`unranked_hides_value`. The component kept zeroing regardless, so the
correct value arrived at the browser and was discarded on the way to the
cell.

Unranked is a statement about comparability, not about whether the number
exists. A row that genuinely has nothing to show asks for that explicitly,
and for it the loader has already zeroed ms before the component sees it,
so that case is unchanged.

Found by reading the rendered page instead of the API: the API said 61 for
the new RouteMesh row and the cell said 0 ms, with p90, p99 and mean from
the same row all correct.

Verified locally: Nova 0 -> 493, RouteMesh 0 -> 64 ms, and a ranked row
left alone as the control.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
(cherry picked from commit a02560c)

* the ranked chart ranked the rows the ledger refuses to rank (#3345)

The ledger puts an unranked row in a labelled block below the field and
never gives it a number. The ranked bar chart, which sits above the ledger
and is the first thing anyone reads, ranked them anyway.

So RouteMesh came out "#5" against the very providers it forwards to,
which is exactly the comparison the unranked flag exists to refuse, while
the table three inches below showed it as unranked. The two surfaces
contradicted each other on the same screen, and the louder one was wrong.

distribution-chart.tsx and public-endpoints-section.tsx already filter on
unrankedLabel. This surface was the one that did not.

Excluded from the ranking, not from the page: the ledger keeps the row and
its number, because not being ranked is a statement about comparability,
not a reason to hide a measurement. Same distinction as the fix two
commits ago, which stopped the ledger printing those numbers as zero.

Verified locally: the chart now ranks QuickNode, GetBlock, Chainstack,
Dwellir and BlockMachine, RouteMesh is absent from it, and the ledger row
still reads 64 ms with its region breakdown.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
(cherry picked from commit 719ed5a)

---------

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
@Flotapponnier Flotapponnier mentioned this pull request Oct 29, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant