Skip to content

Spec drift: gemini-titan — WebSocket depth stream @depth20 not in current docs; depth snapshot reads wrong field data.symbol vs data.s #419

@realfishsam

Description

@realfishsam

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}@depth20this stream name does not appear in current docs

And handleDepthSnapshot reads data.symbolcurrent 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

  1. The @depth20 subscription likely fails or returns no data since the stream name doesn't exist in current docs.
  2. 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions