--- model: claude-fable-5[1m] service: claude session: 32d15f9a-b2d3-4c26-bdc9-190219141a25 timestamp: 2026-06-10T17:11:05Z git_ref: datad_service diff_cmd: git log -1 -p --follow -- ai/prompt-io/claude/20260610T171105Z_bc6e18d7_prompt_io.md scope: code substantive: true raw_file: 20260610T171105Z_bc6e18d7_prompt_io.raw.md --- ## Prompt Same session-initiating `brokerd`-split instruction (see `20260610T170859Z_75cefe10_prompt_io.md`); this is the approved plan's "stage 0" prep. Plan-shaping user decisions captured via in-session Q&A: - `datad.` topology: sibling of `brokerd.` under `pikerd` (vs. child subactor). - migration: hard cutover, staged by layer (no dual-mode runtime flag). - post-split `brokerd` scope: trading-only + EMS-lazy-spawned (charts/CLI never touch it). ## Response summary Declare per-daemon-kind backend submod groups (`_datad_mods`/`_brokerd_mods`) in the split-style backends, keyed to the pre-existing `piker.data.validate._eps` contract; add a `validate.get_eps()` introspection helper; ws-import hygiene in `.kraken.broker`. Zero behavior change (`__enable_modules__` unions unchanged). ## Files changed - `piker/data/validate.py` — add `get_eps()` - `piker/brokers/kraken/__init__.py` — mod groups - `piker/brokers/binance/__init__.py` — mod groups (note: no `symbols.py`; search eps live in `.feed`) - `piker/brokers/deribit/__init__.py` — datad-only groups (no `broker.py` yet) - `piker/brokers/ib/__init__.py` — add `'api'` to the pre-existing `_datad_mods` - `piker/brokers/kraken/broker.py` — import `NoBsWs`/`open_autorecon_ws` from `piker.data._web_bs` directly ## Human edits None — committed as generated.