--- model: claude-fable-5[1m] service: claude session: 32d15f9a-b2d3-4c26-bdc9-190219141a25 timestamp: 2026-06-10T17:11:42Z git_ref: datad_service diff_cmd: git log -1 -p --follow -- ai/prompt-io/claude/20260610T171142Z_119d2c04_prompt_io.md scope: code substantive: true raw_file: 20260610T171142Z_119d2c04_prompt_io.raw.md --- ## Prompt Same session-initiating `brokerd`-split instruction (see `20260610T170859Z_75cefe10_prompt_io.md`); this is the approved plan's "stage 1": introduce the `datad` daemon machinery additively (nothing routes through it yet). User-decided constraint applied: `datad.` is a SIBLING of `brokerd.` under `pikerd`, spawned via the existing `Services` + `maybe_spawn_daemon()` machinery. ## Response summary New `piker/data/_daemon.py` hosting the `datad.` feed-only daemon-actor: lifetime fixture owning the actor-global `_FeedsBus`, init/spawn fns mirroring `.brokers._daemon` conventions and the `samplerd` sub-daemon precedent, plus root-mod registration, `piker.service` re-exports and a spawn test. ## Files changed - `piker/data/_daemon.py` — NEW: `_setup_persistent_datad()`, `datad_init()`, `spawn_datad()`, `maybe_spawn_datad()`, `_datad_service_mods` - `piker/service/_actor_runtime.py` — add `piker.data._daemon` to `_root_modules` - `piker/service/__init__.py` — re-export spawn eps - `tests/test_services.py` — add `test_datad_spawn` ## Human edits None — committed as generated.