Skip to content

the rescored tail was a copy of the median, and the region tabs were untouched - #3057

Merged
Flotapponnier merged 2 commits into
devfrom
fix/tail-and-regions
Oct 19, 2026
Merged

Flotapponnier merged 2 commits into
devfrom
fix/tail-and-regions

Conversation

@Flotapponnier

Copy link
Copy Markdown
Collaborator

Both blockers of the re-run audit, both introduced by #3052 and #3053.

1. p90, p99 and mean were copies of the p50

Rescoring over the basket wrote the p50 mean into all four fields:

KyberSwap  220.265 ms in p50, p90, p99 and mean
           real p99: 931.8 on Robinhood, 610.0 on Arbitrum, 1572.5 from Singapore
CoW        1657.8 shown as p99
           real Arbitrum p99: 4961.5

A desk reading the p99 column saw a tail three to seven times shorter than the one measured. The per-chain fan-out now carries every percentile and each is averaged over the basket on its own.

2. Route still ranked first on US East and EU West

The rule only ran on the unfiltered view, so the claim #3052 was written to remove survived one click away from the page it was removed from.

The fan-out now also runs on a view filtered by something other than chain when the bench declares a score_scope. A chain tab needs nothing, being one chain already, so there is no cross-chain mix to correct. The extra loads are paid only by a bench that opted in.

Tests

The fixture now carries tails far from its medians, so a regression that copies the p50 into p90 and p99 fails loudly rather than passing on numbers that happen to sit close. The new case asserts KyberSwap's rescored p99 is the mean of its four per-chain p99s and more than twice its p50, and that CoW keeps its 4,961 ms Arbitrum tail.

Gates: 251 specs valid, tsc clean, 604 tests pass.

The re-run audit's pass A opened on it: Route published at exactly 0 ms
p50 on 717 samples. That is my own fix from #3052 and #3053. Taking a row
out of the order, I zeroed its value because the spec-declared unranked
path does, and the ledger rendered "0 ms" in p50, p90 and p99.

A wall-clock round trip of zero is impossible. A reader sees either a
broken row or Route being instant, and the second is worse than the claim
the fix was written to remove.

Nothing needed the zero. citation.ts picks the leader from rows filtered
on the label, the ledger pins labelled rows below the ranked field and
excludes them from ranks and the field mean, and capital-hub filters on
the label too. The label alone does the work.

Route now keeps its measured 215 ms and sits in its own block under
"Robinhood only", which is both true and useful: it is the number a
reader wants once they know what it covers.

Pass A also claimed the Robinhood explainer and badge named a 0 ms
leader. They did not: bestPerChain carries Route at 216.209 and the page
renders "at 217 ms". The finding was right about the ledger and wrong
about the explainer.
…untouched

Both blockers of the re-run audit, both introduced by #3052 and #3053.

1. Rescoring over the basket wrote the p50 mean into p90, p99 and mean
   alike, so the tail columns became copies of the median. KyberSwap read
   220 ms in all four while its measured p99 is 931, and CoW's 4,961 ms
   Arbitrum tail hid behind 1,658. A desk reads the p99 column precisely
   because it is not the median.

   The per-chain fan-out now carries every percentile, not just the p50,
   and each one is averaged over the basket on its own.

2. The rule only ran on the unfiltered view, so Route still ranked first
   on the US East and EU West tabs: the exact claim #3052 was written to
   remove, surviving one click away from the page it was removed from.

   The fan-out now also runs on a view filtered by something other than
   chain when the bench declares a score_scope. A chain tab needs nothing,
   being one chain already, and the extra loads are paid only by a bench
   that asked for the scope.

The test fixture carries tails far from its medians, so a regression that
copies the p50 into p90 and p99 fails loudly rather than passing on
numbers that happen to be close.
@Flotapponnier
Flotapponnier merged commit 3d81c82 into dev Oct 19, 2026
2 checks passed
@Flotapponnier
Flotapponnier deleted the fix/tail-and-regions branch November 3, 2026 11:51
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