--- model: claude-fable-5[1m] service: claude session: 32d15f9a-b2d3-4c26-bdc9-190219141a25 timestamp: 2026-06-10T17:13:44Z git_ref: datad_service diff_cmd: git log -1 -p --follow -- ai/prompt-io/claude/20260610T171344Z_eee19de0_prompt_io.md scope: code substantive: true raw_file: 20260610T171344Z_eee19de0_prompt_io.raw.md --- ## Prompt Same session-initiating `brokerd`-split instruction (see `20260610T170859Z_75cefe10_prompt_io.md`); this is the approved plan's final "stage 4": caps-sec slimming of the (live, credentialed) trading actor + the `ib` dual-daemon `client_id` collision mitigation flagged in the plan's risk register. ## Response summary `brokerd` loses ALL `piker.data.*` (feed) RPC mods; spawn fails fast for datad-only backends with a "use paper-mode" error; `ib`'s default api-gw `client_id` gets a per-daemon-kind offset so `datad.ib` + `brokerd.ib` don't collide on connect. ## Files changed - `piker/brokers/_daemon.py` — `_data_mods` -> minimal `_brokerd_service_mods`; `broker_init()` reads `_brokerd_mods` (fallback `__enable_modules__`); `spawn_brokerd()` fail-fast via `validate.get_eps()` - `piker/brokers/ib/api.py` — role-based `client_id` offset in `load_aio_clients()` - `piker/cli/__init__.py` — resolved "expose datad" TODO ## Human edits None — committed as generated.