---
model: claude-fable-5[1m]
service: claude
session: 32d15f9a-b2d3-4c26-bdc9-190219141a25
timestamp: 2026-06-10T17:12:59Z
git_ref: datad_service
diff_cmd: git log -1 -p --follow -- ai/prompt-io/claude/20260610T171259Z_59d5d9a6_prompt_io.md
scope: code
substantive: true
raw_file: 20260610T171259Z_59d5d9a6_prompt_io.raw.md
---

## Prompt

Same session-initiating `brokerd`-split instruction (see
`20260610T170859Z_75cefe10_prompt_io.md`); this is the
approved plan's "stage 3": the feed-layer hard cutover
(user-decided: no dual-mode runtime flag, each stage
lands fully working).

## Response summary

The topology flip: all data-feed consumers route to
`datad.<broker>`; the `brokerd` lifetime fixture slims
to trading-only; UI/CLI data-flavoured spawn sites
repointed; test expectations inverted incl. an explicit
negative assert that paper sessions spawn NO
`brokerd.<broker>`.

## Files changed

- `piker/data/feed.py` — `open_feed()` ->
  `maybe_spawn_datad()`; `open_feed_bus()` actor-name
  assert -> `'datad'`; `install_brokerd_search` ->
  `install_datad_search`; comment sweep
- `piker/brokers/_daemon.py` —
  `_setup_persistent_brokerd()` slimmed (feed-bus
  alloc moved to the datad fixture)
- `piker/ui/_app.py`, `piker/ui/cli.py`,
  `piker/brokers/core.py`, `piker/brokers/cli.py`,
  `piker/ui/kivy/option_chain.py` — spawn-site
  repoints
- `tests/test_services.py` — datad assertions + the
  no-`brokerd.kraken` negative check

## Human edits

None — committed as generated.
