Repository navigation
release: Gains and Lighter back on the perp boards (cherry-pick #2963, #3035, #3036) - #3037
Merged
Merged
Conversation
pairMinLeverage and pairMaxLeverage both read 500x on pairs 300 and 313, so 500x is their only legal value. The publisher refused only a leverage ABOVE the maximum, so the 10x, 25x, 50x, 100x and 200x tabs each carried a Gains row for a position that cannot be opened. The fix is also the more useful bench. A trader who wants 50x on BTC is not locked out of Gains, they use the standard pair: 1.1x to 200x, a 90 percent threshold interpolating to 75 between 25x and 60x, and a 0.035 percent fee a leg against the degen pair's 0.02. So Gains now reads both products per market and each leverage publishes the one a trader could actually open, taking the one that leaves more room where both qualify. What the tabs say now on BTC: 10x standard 8.9300% 25x standard 3.5300% 100x standard 0.6800% 200x standard 0.3050% 500x degen 0.1200% 1000x neither, so Gains is absent The max leverage column is the venue ceiling across its products, which is what that column means, and no longer the ceiling of whichever product happened to serve the tab. pairMinLeverage's selector is derived from the signature rather than guessed, and checked by deriving pairMaxLeverage the same way and matching the known good 0x281b693c. A failed read leaves the minimum at zero, which termsAt treats as no minimum, so a missing selector degrades to the previous behaviour rather than hiding every row. (cherry picked from commit e9a363a)
… is gone (#3035) * the max leverage tab printed Gains at 500x beside its 200x room #2963 lets each product answer the "Each venue at its max" tab at its own ceiling and keeps the larger room. Gains' standard pair at 200x leaves 0.305% and the degen pair at 500x 0.12%, so the tab published 500x in the max leverage column next to the standard pair's room. Only the product that reaches the venue's ceiling answers that tab now. * Gains and Lighter read their own markets: Mobula's perp pairs catalog is gone GET api.mobula.io/api/2/perp/pairs answers 404 since 2026-10-12; Mobula deprecated it. It was the only source of Gains' active market count and of the asset-class split for Gains and Lighter, so three boards (perp-active-markets, perp-asset-breadth, perp-capital-efficiency) have shown Gains, and perp-asset-breadth Lighter, as unresponsive for six days. Gains: backend-arbitrum.gains.trade/trading-variables. Gains delists a pair by setting its max leverage override to 1 (0.001x) and never removes it, so those are left out: 178 tradable pairs of 493 (Mobula listed 355). The pair groups give the class; an unknown group withholds the split. Gains also seeds the cohort's crypto and RWA symbol sets that Mobula used to seed for the HIP-3 dexes. Lighter: no class in the payload, so its symbols go through the router's cross-venue classification, with crypto as the default for a symbol no venue tags (it is a crypto-first venue, unlike a HIP-3 RWA dex). The copy of the three specs stops citing Mobula as the source. (cherry picked from commit 59c886b)
/info/markets returns about 1 MB and takes 4 to 15 s from the VPS. The client's 15 s budget expired mid-body, io.ReadAll's error was dropped, and the truncated JSON was logged as a parse error: perp_venue_health for Extended fell to 0.5 on those ticks. The budget is 45 s (sources run concurrently inside a 60 s tick) and a short read is reported as one. (cherry picked from commit f59ce7f)
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.
Cherry-picks (
-x) from dev, applied clean, tree identical to dev on the touched paths./api/2/perp/pairs(404 since 2026-10-12). Gains now reads its own Arbitrum trading variables (178 tradable pairs, delisted ones at 0.001x left out), Lighter goes through the cross-venue symbol classification. Gains was unresponsive on perp-active-markets, perp-asset-breadth and perp-capital-efficiency, and Lighter on perp-asset-breadth, since the 12th. Spec copy of the three benches stops citing Mobula. Also restricts the "Each venue at its max" tab of bench 295 to the product that reaches the ceiling.The harness already runs this code on the VPS (deployed from dev). On main this ships the spec copy of the three perp boards; the rest keeps main's harness source in step.
Gates:
go build,go test,pnpm validategreen.