0.6.1
Accounting fixes measured on a live maker session (2026-07-06).
- trades_totals no longer misses maker fills: MAKER-role trade records carry the TAKER's side and asset at top level, so the old top-level side pre-filter skipped our fills whenever the counterparty was on the other side or on the complementary token (measured: 6 CONFIRMED maker fills, 16.97 shares for 16.19 USD, reported as zero). The requested side and token_id now apply per maker_orders slice using the slice's own side and asset_id; slices without a side derive it from the asset/outcome relation to the taker; the venue is queried by condition alone and taker records are filtered in-process on their top-level asset. The taker path is unchanged and locked by tests; the only-mine attribution gate applies to the recovered records exactly as before.
- cancel_order parses the response instead of trusting the HTTP 200: the CLOB can decline a cancel inside a 200 while the order is mid match. True only when the id is under canceled; not_canceled logs the venue reason and returns False; unrecognized bodies read as NOT canceled.
- get_order(order_id): single-order truth (status, size_matched) for harvesting the partial fill of an order right after it leaves the book; None on any error. Startup introspection now covers get_order.
179 offline tests pass; ruff and mypy --strict clean.