Caps-sec tightening now that `brokerd` is trading-only: NO
`piker.data.*` (feed) mods are RPC-enabled in the (live,
credentialed) trading actor anymore.
Deats,
- drop `_data_mods` for a minimal `_brokerd_service_mods`
(just `piker.brokers._daemon`); dedup-compose with the
backend's set in `spawn_brokerd()`.
- `broker_init()` reads the backend's `_brokerd_mods`
(fallback: `__enable_modules__` for flat backends).
- fail fast in `spawn_brokerd()` via `validate.get_eps()`
when a backend offers NO live order-ctl eps (eg.
`kucoin`, `deribit`) -> tells the caller to use
paper-mode instead of booting a dead actor; analogous
warning in `datad_init()` for datad-ep-less backends.
- offset `ib`'s default `client_id` per daemon-kind in
`load_aio_clients()`: post-split BOTH `datad.ib` and
`brokerd.ib` connect to the same gw/tws endpoint and the
shared default (6116 + linear retry incrs) would collide
and burn the full conn-timeout retry cycle; datad gets
+16, ad-hoc (test/cli) actors +32.
- drop the import-cleanup leftovers (`exceptiongroup`,
`_FeedsBus` type-only import) and the now-resolved
"expose datad" TODO in `.cli`.
(this patch was generated in some part by [`claude-code`][claude-code-gh])
[claude-code-gh]: https://github.com/anthropics/claude-code
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Prompt-IO: ai/prompt-io/claude/20260610T171344Z_eee19de0_prompt_io.md