{{ message }}
fix(perps): handle inactive Lighter market metadata - #10110
Merged
Conversation
abretonc7s
force-pushed
the
fix/perps/lighter-inactive-market-metadata
branch
from
September 4, 2026 11:04
ef8dd5b to
445456c
Compare
abretonc7s
marked this pull request as ready for review
September 4, 2026 11:06
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 445456c. Configure here.
abretonc7s
enabled auto-merge
September 4, 2026 11:43
geositta
approved these changes
Sep 4, 2026
4 tasks
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.


Explanation
Lighter retains inactive markets for historical identity and can zero their order minimums and margin fractions. The strict response decoder rejected those retired rows, which prevented otherwise valid active markets from loading.
This change accepts zero constraints only for inactive rows, omits retired markets whose risk metadata cannot produce canonical market data, and preserves inactive rows with valid metadata as delisted. Positions left on retired markets remain readable using their current position leverage as a non-tradable cap. Active markets remain strict and fail closed on zero or malformed constraints.
Validated with:
@metamask/perps-controllertest suite and Core build16.1.0(yalc.sigee73aeec8330f58ce0a6e9c6b4cf42a3)mm-1: live markets loaded and the invalid inactive-market metadata error was absentReferences
Checklist
Note
Low Risk
Scoped to Lighter public market-metadata parsing and listing; active markets remain fail-closed on bad constraints, with no changes to signing, deposits, or position operations.
Overview
Fixes Lighter market loading when the venue returns inactive perp rows with zeroed minimum order sizes or margin fractions—metadata Lighter keeps for history but that previously made the strict HTTP decoder reject the whole response and block active markets.
LighterClientServicenow allows zero minimums and margin fractions only whenstatus === 'inactive', withrefinevalidators still requiring positive values for active markets.LighterProvideraddsisInactiveMarketWithoutUsableRiskMetadatato drop those retired rows fromgetMarketDataWithPricesand margin caching, skips them ingetMarketswhen leverage metadata is omitted (instead of throwing), and still surfaces inactive markets with valid risk data as delisted. Tests cover both omission and preservation paths.Reviewed by Cursor Bugbot for commit 445456c. Bugbot is set up for automated code reviews on this repo. Configure here.