Repository navigation
award the first past the single-participant return, and correct the pool figure - #2812
Merged
Merged
Conversation
…ool figure Two debts from #2809, now that #2811's counters can measure instead of infer. headLagFirst was incremented inside the winners loop, which runs BEFORE the providers < 2 return. A trade one feed alone reported therefore handed that feed a first while never entering the race count or the share history: a numerator moving without its denominator, the same defect that published OKX at 95.93% on Solana, and it survived the first fix. The lag recording stays inside the loop on purpose, since single-feed lags are deliberately kept and only the race is unscored. race_test.go gains the case. single_participant now also reaches the voided counter, which it did not before. And the number I published in #2809 is corrected. The bullet said roughly 1,200 trades on the Solana bench pool, read from head_lag_ref_matches_total{outcome="matched"} alone. That counter has a third outcome, ahead_of_reference, where every feed faster than the pool subscription lands on Solana. What the new counters say directly: pool observed solana 465/h bnb 2,903/h base 269/h races scored solana 254/h bnb 2,806/h base 316/h voided off_pool solana 576,530/h bnb 14,893/h base 11,707/h So the filter does bite, hard, and Solana is back inside the 100 to 900 races an hour it ran before the token-scoped feeds arrived. The 25,070/h I reported after deploying #2809 was a rate() window straddling the container restart, which is the artefact I had warned about in that same PR and then read anyway. The shares now agree with the latency column, which is the check that found the bug: base mobula 71.37% serialized 23.50% okx 5.13% bnb mobula 60.54% serialized 35.70% codex 10.36% okx 0.29% solana serialized 81.03% mobula 54.61% okx 0.00% Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Flotapponnier
added a commit
that referenced
this pull request
Oct 4, 2026
Carries #2811 and #2812 across: the three diagnostic counters, the first awarded past the single-participant return, and the corrected pool figure in the methodology. The worker clones dev at BUILD time, so the bullet only reaches the page from here. Verified on dev's base: go build ./..., the full go test ./cmd/script/ suite, and pnpm validate (235 specs valid). Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Flotapponnier
added a commit
that referenced
this pull request
Oct 5, 2026
It said Solana scores 254 races an hour. Five consecutive 15-minute windows read 203, 25, 46, 37 and 186, so 254 was one sample of something that swings by a factor of eight. A race needs two feeds to report the same pool trade, which is a sparse coincidence, so the jitter is the quantity's nature rather than a fault. Replaced with the order of magnitude and the comparison that actually carries the claim: it is back to the rate it ran at before the token-scoped feeds arrived. Two numbers from the #2809 commit message and PR body are also wrong, and recorded here since they are not in published copy and cannot be edited there: "Mobula was first on 85 of the 109 pool trades it reported, about 78%" used the matched-only denominator, which omits ahead_of_reference. On the actual races the figure is 114 of 415, about 27.5%, which is what the page publishes and what the fix was always about: it was 0.08%. "~1,200 trades on the bench pool" came from the same mistake and was already corrected in #2812. The defect and the fix are unaffected: OKX took 5 firsts in 415 Solana races after the filter, against 75,151 an hour before it. Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Two debts from #2809, now that #2811's counters can measure instead of infer.
The latent miscount
headLagFirstwas incremented inside the winners loop, which runs before theproviders < 2return. A trade one feed alone reported therefore handed that feed a first while never entering the race count or the share history: a numerator moving without its denominator, the same defect that published OKX at 95.93% on Solana, and it survived the first fix.The lag recording stays inside the loop on purpose, since single-feed lags are deliberately kept and only the race is unscored.
single_participantnow also reaches the voided counter, which it did not before, andrace_test.gogains the case.The number I published in #2809
The bullet said roughly 1,200 trades on the Solana bench pool, read from
head_lag_ref_matches_total{outcome="matched"}alone. That counter has a third outcome,ahead_of_reference, where every feed faster than the pool subscription lands on Solana.What the new counters say directly:
off_poolSo the filter does bite, hard, and Solana is back inside the 100-900 races/h it ran before the token-scoped feeds arrived (measured with
offset). The 25,070/h I reported right after deploying #2809 was arate()window straddling the container restart: the artefact I warned about in that same PR and then read anyway.The shares now agree with the latency column
Which is the check that found the bug in the first place:
Solana p50 for the same window: serialized 3 ms, mobula 8 ms, codex 98 ms, okx 249 ms, birdeye 678 ms, geckoterminal 8.1 s. Shares exceed 100% because a tie within 5 ms counts as first for each feed involved, which is documented.
Shares are computed over an in-memory 24 h window that reset at the redeploy, so they will firm up over the next day.
Gates
go build ./..., the fullgo test ./cmd/script/suite,pnpm validate(235 specs valid). The corrected bullet went over the 500 character cap on the first attempt and was shortened.🤖 Generated with Claude Code