docs: FIX documentation + accuracy pass + release prep for 3.3.0#441
Conversation
Bump to 3.3.0 (pyproject + __init__) for the additive FIX subsystem (#402) and the decode-routing (#432) and drift-test (#437) follow-ups. No breaking changes. FIX documentation (the subsystem was entirely undocumented): - new docs/fix.md guide; FIX section in README; FIX in the docs landing page features + "where to go next" + mkdocs nav; FIX error hierarchy in errors.md; FIX reference autodoc in reference.md; FIX cross-references in authentication / configuration / environment-variables / perps / resources index. - re-export the FIX entry points (FixClient, MarginFixClient, FixConfig, FixEnvironment, FixSessionType) from the top-level kalshi package (consistent with PerpsClient); refresh the stale kalshi.fix package docstring. Documentation accuracy fixes (from a multi-agent docs audit): - fcm.md: document fcm.positions_all() (the page wrongly said it did not exist). - portfolio.md: document the subaccount parameter on the read methods. - markets.md: is_block_trade version corrected to SDK v3.1.0 (was v3.20.0 — the OpenAPI spec version, not the SDK version). - index.md: WebSocket channel count corrected to 11 (matches websockets.md). - types.md: document OrderPrice and MultiplierDecimal. - environment-variables.md: the key passphrase is read by from_env() too. Release metadata: CHANGELOG + ROADMAP 3.3.0 entries; CHANGELOG 3.1.0 date aligned to 2026-06-04 (matching the release tag / ROADMAP). ruff + mypy --strict clean; mkdocs build --strict clean; 4194 tests pass (the 4 from_env failures are the pre-existing full-run env-leak flake — they pass in isolation). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Code Review — PR #441: docs/FIX documentation + accuracy pass + 3.3.0 release prepSummary: Documentation-only release prep (453 additions, 14 deletions, 20 files). Core work is the new What's good
Issues1. Null propagation in settlement example — potential runtime error
async def on_message(raw):
complete = reasm.add(decode_app_message(raw)) # MarketSettlementReport | None until whole
async def on_message(raw):
msg = decode_app_message(raw)
if msg is None:
return
complete = reasm.add(msg)Users copying this verbatim will hit an error the first time a non-settlement frame arrives on the session. 2. Sessions table is missing
|
…ccuracy - fix.md settlement example: guard `decode_app_message` with `isinstance(msg, MarketSettlementReport)` — SettlementReassembler.add() expects a settlement report, so feeding it None / another message type would raise. - fix.md market-data example: replace the sync `lambda` on_message with an `async def` (the session awaits the callback; a sync callable fails at runtime) and note that on_message must be async. - Correct "six session types … order groups" → there is no order_groups() session factory; order groups are messages on the order-entry session. Now "five session types (order entry NR/RT, drop copy, market data, post-trade, RFQ) + order-group management over the order-entry session" across README, docs index, fix.md (table note), CHANGELOG, ROADMAP. (The fix.md sessions table was already correct with 5 rows.) - fix.md: note the illustrative `asyncio.sleep` should be an asyncio.Event in real code. Not changed: KALSHI_FIX_ALLOW_UNKNOWN_HOST is documented in prose in the FIX env section (a single FIX-only escape hatch; kept inline rather than a 1-row table). mkdocs build --strict clean; ruff clean. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Code Review — PR #441: FIX documentation + accuracy pass + release prep 3.3.0OverviewThis is a docs-and-release-prep PR: the only runnable code changes are five new re-exports in Overall quality is high. The new IssuesMissing env-var table entry (
|
Summary
Release prep for 3.3.0 — documents the FIX subsystem (which shipped to
mainafter 3.2.0 but was entirely undocumented), folds in a multi-agent documentation accuracy audit, and bumps the version. Additive release; no breaking changes.A 7-agent audit (→ verify high/critical) reviewed every doc file against the code: 52 findings (20 critical / 12 high), dominated by the FIX gap, plus several genuine accuracy bugs in existing docs.
Version → 3.3.0
pyproject.toml+kalshi/__init__.pybumped; CHANGELOG + ROADMAP entries added.FIX documentation (was a complete gap)
docs/fix.md— full guide: overview, auth (RSA-PSS reuse), clients (FixClient/MarginFixClient), the six session types, send/receive of typed messages,FixOrderBook,SettlementReassembler,on_decode_error, the FIX error hierarchy, and connectivity.docs/index.mdfeature + nav row;mkdocs.ymlnav; FIX error hierarchy inerrors.md(+ autodoc); FIX reference autodoc inreference.md; FIX cross-references in authentication / configuration / environment-variables / perps / resources index.FixClient,MarginFixClient,FixConfig,FixEnvironment,FixSessionTypere-exported fromkalshi(consistent withPerpsClient); stalekalshi.fixpackage docstring refreshed.Documentation accuracy fixes
fcm.md: documentfcm.positions_all()— the page wrongly stated it didn't exist.portfolio.md: document thesubaccountparameter on the read methods.markets.md:is_block_tradecorrected to SDK v3.1.0 (wasv3.20.0, the OpenAPI spec version).index.md: WebSocket channel count corrected to 11 (matchedwebsockets.md).types.md: documentOrderPriceandMultiplierDecimal.environment-variables.md: passphrase is read byfrom_env()too; CHANGELOG3.1.0date aligned to2026-06-04.Verification
uv run ruff check .— cleanuv run mypy kalshi/(strict) — clean (158 files)uv run mkdocs build --strict— clean (nav, links, anchors, autodoc all resolve)uv run pytest tests/— 4194 passed, 316 skipped (the 4from_envfailures are the pre-existing full-run env-leak flake; they pass in isolation)🤖 Generated with Claude Code