This matrix tracks runtime lifecycle semantics required by the Binance-first
Elixir CCXT Pro target. It is derived from lib/ccxt/pro_manifest.json
through Ccxt.ProLifecycleCoverage.
Summary
- required lifecycle features: 18
- covered required features: 18
- missing required features: none
- total feature rows: 21
- total evidence entries: 130
Required Feature Matrix
| Feature | Evidence | Owner Modules | Owner Functions | TS/Runtime Methods | Contract Kinds | Signals |
|---|---|---|---|---|---|---|
otp-registry-dynamic-supervisor | 1 | Ccxt.Pro | connection/1 | - | - | connection-process<br>dynamic-supervisor<br>registry |
websocket-process-reconnect | 1 | Ccxt.Pro.Connection | handle_disconnect/2 | - | - | reject-pending-waiters<br>websockex-reconnect |
message-hash-routing | 16 | Ccxt.Pro.Connection | dispatch/3<br>dispatch_private/2<br>handle_frame/2 | handleAcountUpdate<br>handleBalance<br>handleBidsAsks<br>handleFetchOHLCV<br>handleLiquidation<br>handleMarkPrices<br>handleMessage<br>handleMyLiquidation<br>handleMyTrade<br>handleOHLCV<br>handleOrder<br>handleOrderUpdate<br>handlePositions<br>handleTickers<br>handleTickersAndBidsAsks<br>handleTrade | event-dispatch-handler<br>private-stream-handler<br>public-stream-handler | channel<br>channel-message-hash<br>error<br>generated-parser<br>order-cache<br>order-trade-merge<br>private-cache<br>private-event<br>public-cache<br>request-id<br>symbol-id-index<br>waiter-resolution |
subscription-lifecycle | 19 | Ccxt.Pro.Connection | dispatch/3<br>dispatch_private/2<br>watch_private/3 | handleAcountUpdate<br>handleBalance<br>handleBidsAsks<br>handleFetchOHLCV<br>handleLiquidation<br>handleMarkPrices<br>handleMyLiquidation<br>handleMyTrade<br>handleOHLCV<br>handleOrder<br>handleOrderUpdate<br>handlePositions<br>handleTickers<br>handleTickersAndBidsAsks<br>handleTrade<br>loadBalanceSnapshot<br>loadPositionsSnapshot<br>setBalanceCache<br>setPositionsCache | cache-helper<br>private-stream-handler<br>public-stream-handler | array-cache<br>balance-delta<br>channel-message-hash<br>generated-parser<br>order-cache<br>order-trade-merge<br>position-cache<br>position-timestamp<br>private-cache<br>private-event<br>private-update<br>public-cache<br>snapshot-preload<br>symbol-id-index<br>waiter-resolution |
unwatch-lifecycle | 2 | Ccxt.Pro.Connection | resolve_request_message/3 | handleSubscriptionStatus<br>handleUnSubscription | unsubscribe-handler | request-id<br>unsubscribe-ack<br>waiter-resolution |
request-id-routing | 11 | Ccxt.Pro.Connection | handle_frame/2<br>request_message_hash/1<br>resolve_or_reject_request_message/3 | handleAccountStatusWs<br>handleBalanceWs<br>handleEditOrderWs<br>handleMessage<br>handleOrderWs<br>handleOrdersWs<br>handlePositionsWs<br>handleTickerWs<br>handleTradesWs<br>handleUserDataStreamSubscribe<br>requestId | auth-subscription-handler<br>event-dispatch-handler<br>request-id-helper<br>ws-api-response-handler | channel<br>error<br>generated-parser<br>listen-key<br>private-event<br>request-id<br>status-error<br>subscription-id<br>waiter-routing |
ws-api-response-routing | 8 | Ccxt.Pro.Connection | resolve_or_reject_request_message/3 | handleAccountStatusWs<br>handleBalanceWs<br>handleEditOrderWs<br>handleOrderWs<br>handleOrdersWs<br>handlePositionsWs<br>handleTickerWs<br>handleTradesWs | ws-api-response-handler | generated-parser<br>request-id<br>status-error |
listen-key-auth | 1 | Ccxt.Pro.Connection | resolve_or_reject_request_message/3 | handleUserDataStreamSubscribe | auth-subscription-handler | listen-key<br>request-id<br>subscription-id |
listen-key-keepalive | 1 | Ccxt.Pro.Binance | keep_alive_listen_key/3 | - | - | keepalive-endpoint<br>listen-key<br>raw-endpoint-routing |
array-cache | 5 | Ccxt.Pro.ArrayCache<br>Ccxt.Pro.Connection | append/3<br>watch_private/3 | loadBalanceSnapshot<br>loadPositionsSnapshot<br>setBalanceCache<br>setPositionsCache | cache-helper | array-cache<br>balance-delta<br>bounded-newest-first<br>limit<br>position-cache<br>position-timestamp<br>private-cache<br>private-update<br>snapshot-preload |
orderbook-cache | 7 | Ccxt.Pro.Connection | handle_orderbook_delta/3<br>watch_order_book/4 | fetchOrderBookSnapshot<br>handleDelta<br>handleDeltas<br>handleFetchOrderBook<br>handleOrderBook<br>handleOrderBookMessage<br>handleOrderBookSubscription | orderbook-cache | delta-cache<br>orderbook<br>sequence-check<br>snapshot |
balance-cache | 4 | Ccxt.Pro.Connection | watch_private/3 | loadBalanceSnapshot<br>loadPositionsSnapshot<br>setBalanceCache<br>setPositionsCache | cache-helper | array-cache<br>balance-delta<br>position-cache<br>position-timestamp<br>private-cache<br>private-update<br>snapshot-preload |
positions-cache | 5 | Ccxt.Pro.Connection<br>Ccxt.Pro.PositionCache | put_all/3<br>watch_private/3 | loadBalanceSnapshot<br>loadPositionsSnapshot<br>setBalanceCache<br>setPositionsCache | cache-helper | array-cache<br>balance-delta<br>event-timestamp<br>hashmap<br>position-cache<br>position-timestamp<br>private-cache<br>private-update<br>side-index<br>snapshot-preload<br>symbol-index<br>values |
order-trade-cache | 1 | Ccxt.Pro.OrderCache | put/3 | - | - | id-index<br>indexed-array-cache<br>order-update<br>trade-merge |
private-event-routing | 8 | Ccxt.Pro.Connection | dispatch_private/2<br>handle_frame/2 | handleAcountUpdate<br>handleBalance<br>handleMessage<br>handleMyLiquidation<br>handleMyTrade<br>handleOrder<br>handleOrderUpdate<br>handlePositions | event-dispatch-handler<br>private-stream-handler | channel<br>error<br>generated-parser<br>order-cache<br>order-trade-merge<br>private-cache<br>private-event<br>request-id<br>symbol-id-index<br>waiter-resolution |
public-event-routing | 9 | Ccxt.Pro.Connection | dispatch/3<br>handle_frame/2 | handleBidsAsks<br>handleFetchOHLCV<br>handleLiquidation<br>handleMarkPrices<br>handleMessage<br>handleOHLCV<br>handleTickers<br>handleTickersAndBidsAsks<br>handleTrade | event-dispatch-handler<br>public-stream-handler | channel<br>channel-message-hash<br>error<br>generated-parser<br>private-event<br>public-cache<br>request-id<br>waiter-resolution |
parser-output | 23 | Ccxt.Pro.Connection | dispatch/3<br>dispatch_private/2<br>resolve_or_reject_request_message/3 | handleAccountStatusWs<br>handleAcountUpdate<br>handleBalance<br>handleBalanceWs<br>handleBidsAsks<br>handleEditOrderWs<br>handleFetchOHLCV<br>handleLiquidation<br>handleMarkPrices<br>handleMyLiquidation<br>handleMyTrade<br>handleOHLCV<br>handleOrder<br>handleOrderUpdate<br>handleOrderWs<br>handleOrdersWs<br>handlePositions<br>handlePositionsWs<br>handleTickerWs<br>handleTickers<br>handleTickersAndBidsAsks<br>handleTrade<br>handleTradesWs | private-stream-handler<br>public-stream-handler<br>ws-api-response-handler | channel-message-hash<br>generated-parser<br>order-cache<br>order-trade-merge<br>private-cache<br>private-event<br>public-cache<br>request-id<br>status-error<br>symbol-id-index<br>waiter-resolution |
error-rejection | 3 | Ccxt.Pro.Connection | handle_frame/2<br>maybe_reject/2<br>private_message_hashes/1 | handleEventStreamTerminated<br>handleMessage<br>handleWsError | event-dispatch-handler | channel<br>error<br>eventStreamTerminated<br>private-event<br>private-waiter-reject<br>reject-all<br>request-id |
cache-new-updates | 3 | Ccxt.Pro.CacheUpdates<br>Ccxt.Pro.Connection | append_symbol/3<br>private_new_updates_payload/4<br>public_new_updates_payload/4 | - | - | all-new-updates<br>cached-payload-window<br>clear-updates<br>get-limit<br>nested-new-updates-by-symbol<br>new-updates-by-symbol<br>private-cache-updates<br>public-cache-updates<br>timestamp-new-updates<br>watch-any-new-updates<br>watch-private-new-updates |
indexed-array-cache | 1 | Ccxt.Pro.IndexedArrayCache | put/3 | - | - | hashmap<br>id-index<br>limit<br>move-to-newest<br>side-index<br>symbol-key-index |
timestamp-array-cache | 1 | Ccxt.Pro.TimestampArrayCache | put/3 | - | - | hashmap<br>limit<br>move-to-newest<br>replace-by-timestamp<br>timestamp-index |
Method Categories
| Category | Methods |
|---|---|
auth | 8 |
handler | 26 |
helper | 14 |
parser | 5 |
privateStream | 6 |
publicStream | 14 |
unsubscribe | 10 |
wsApi | 24 |
Drift Rule
test/ccxt_pro_binance_test.exs asserts that every required lifecycle
feature has manifest evidence and that key runtime owners remain wired to
the expected modules/functions. If upstream Binance Pro adds a new lifecycle
shape, the generator/runtime contract must add evidence here instead of
leaving it as implicit behavior.