piker/ai/prompt-io/claude/20260610T171142Z_119d2c04_p...

48 lines
1.4 KiB
Markdown
Raw Normal View History

Add `datad` daemon machinery to `.data` First half of the `brokerd` split: a new per-provider data-feed-only daemon-actor `datad.<broker>` to (soon) host all `validate._eps['datad']` eps (live quotes, history loading, symbology search) leaving `brokerd` for live order ctl only. Purely additive; nothing routes through it yet. Deats, - new `piker.data._daemon` mod mirroring the `.brokers._daemon` conventions (and the `samplerd` sub-daemon precedent): - `_setup_persistent_datad()` lifetime fixture owning the actor-global `_FeedsBus` alloc. - `datad_init()` building `enable_modules` from the backend's `_datad_mods` (falling back to `__enable_modules__` for not-yet-split backends) and copying `_spawn_kwargs` (critical for `ib`'s `infect_asyncio`). - `spawn_datad()`/`maybe_spawn_datad()` wrapping `Services` + `maybe_spawn_daemon()`. - add `piker.data._daemon` to `_root_modules` so `pikerd` can run `spawn_datad()` requests. - re-export the spawn eps from `piker.service`. - add `test_datad_spawn` verifying actor boot + service registration via `ensure_service('datad.kraken')`. Note the `Services`-based impl style deliberately mirrors `spawn_brokerd()` so the eventual `tractor.hilevel` `ServiceMngr` port (see the `service_mng_to_tractor` branch's d8c21d44 prep work) lands symmetrically on both. (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/20260610T171142Z_119d2c04_prompt_io.md
2026-06-10 17:12:26 +00:00
---
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.<broker>` is a
SIBLING of `brokerd.<broker>` under `pikerd`, spawned
via the existing `Services` + `maybe_spawn_daemon()`
machinery.
## Response summary
New `piker/data/_daemon.py` hosting the
`datad.<broker>` 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.