Exchange
gemini-titan
Drift Type
changed_response (WebSocket)
Severity
HIGH — WebSocket order book subscriptions are broken: wrong stream name subscribed, and depth snapshot messages fail symbol routing.
Their Docs
Current Gemini prediction markets WebSocket documentation lists these depth stream variants:
{symbol}@depth10@100ms — partial depth (10 levels), 100ms updates
{symbol}@depth@100ms — full depth, 100ms updates
{symbol}@bookTicker — best bid/ask ticker (not implemented in PMXT)
Source: https://docs.gemini.com/prediction-markets/
For depth snapshot messages, the symbol is carried in field s (same as delta messages), not in a top-level symbol field.
Our Cached Spec / Implementation
core/src/exchanges/gemini-titan/websocket.ts subscribes using:
{symbol}@depth20 — this stream name does not appear in current docs
And handleDepthSnapshot reads data.symbol — current depth snapshot messages use data.s, not data.symbol.
There is no OpenAPI spec for this exchange (see issue #408).
callApi() References at Risk
None — WebSocket, not REST.
Hardcoded URL Bypasses
wss://ws.gemini.com at websocket.ts (WebSocket URL, from config.ts)
Impact
- The
@depth20 subscription likely fails or returns no data since the stream name doesn't exist in current docs.
- Even if a snapshot message arrives,
handleDepthSnapshot checks data.symbol which will be undefined — the order book promise never resolves, causing a timeout for any depth subscription.
Found by automated spec drift audit
Exchange
gemini-titan
Drift Type
changed_response (WebSocket)
Severity
HIGH — WebSocket order book subscriptions are broken: wrong stream name subscribed, and depth snapshot messages fail symbol routing.
Their Docs
Current Gemini prediction markets WebSocket documentation lists these depth stream variants:
{symbol}@depth10@100ms— partial depth (10 levels), 100ms updates{symbol}@depth@100ms— full depth, 100ms updates{symbol}@bookTicker— best bid/ask ticker (not implemented in PMXT)Source: https://docs.gemini.com/prediction-markets/
For depth snapshot messages, the symbol is carried in field
s(same as delta messages), not in a top-levelsymbolfield.Our Cached Spec / Implementation
core/src/exchanges/gemini-titan/websocket.tssubscribes using:{symbol}@depth20— this stream name does not appear in current docsAnd
handleDepthSnapshotreadsdata.symbol— current depth snapshot messages usedata.s, notdata.symbol.There is no OpenAPI spec for this exchange (see issue #408).
callApi() References at Risk
None — WebSocket, not REST.
Hardcoded URL Bypasses
wss://ws.gemini.comat websocket.ts (WebSocket URL, from config.ts)Impact
@depth20subscription likely fails or returns no data since the stream name doesn't exist in current docs.handleDepthSnapshotchecksdata.symbolwhich will beundefined— the order book promise never resolves, causing a timeout for any depth subscription.Found by automated spec drift audit