61 lines
2.3 KiB
Markdown
61 lines
2.3 KiB
Markdown
|
|
---
|
||
|
|
model: claude-fable-5[1m]
|
||
|
|
service: claude
|
||
|
|
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
|
||
|
|
---
|
||
|
|
|
||
|
|
NOTE: diff-ref mode entry (code committed in the same
|
||
|
|
commit as this log); backfilled from the live dev
|
||
|
|
session transcript per the `/prompt-io` skill rules.
|
||
|
|
|
||
|
|
> `git log -1 -p --follow -- piker/data/_daemon.py`
|
||
|
|
|
||
|
|
Generated symbols + key design decisions:
|
||
|
|
|
||
|
|
- `_datad_service_mods: list[str]` — datad-always
|
||
|
|
enabled mods, the data-side successor to the old
|
||
|
|
`piker.brokers._daemon._data_mods` set; kept minimal
|
||
|
|
per the caps-sec model.
|
||
|
|
- `_setup_persistent_datad()` — `@tractor.context`
|
||
|
|
lifetime fixture: console-log setup then allocates
|
||
|
|
the actor-global feed bus via
|
||
|
|
`feed.get_feed_bus(brokername, service_nursery)`
|
||
|
|
exactly as the old brokerd fixture did, pinned open
|
||
|
|
with `ctx.started()` + `sleep_forever()`.
|
||
|
|
- `datad_init()` — actor name `f'datad.{brokername}'`;
|
||
|
|
copies backend `_spawn_kwargs` (CRITICAL for `ib`'s
|
||
|
|
`infect_asyncio=True`); builds `enable_modules` from
|
||
|
|
`getattr(brokermod, '_datad_mods',
|
||
|
|
getattr(brokermod, '__enable_modules__', []))` as
|
||
|
|
the flat-backend fallback.
|
||
|
|
- `spawn_datad()` — `Services.actor_n.start_actor()` +
|
||
|
|
`Services.start_service_task()` exactly mirroring
|
||
|
|
`spawn_brokerd()`; dedup-composes enable mods via
|
||
|
|
`list(dict.fromkeys(...))`.
|
||
|
|
- `maybe_spawn_datad()` — wraps `maybe_spawn_daemon(
|
||
|
|
service_name=f'datad.{brokername}', ...)`.
|
||
|
|
|
||
|
|
> `git log -1 -p --follow -- piker/service/_actor_runtime.py`
|
||
|
|
> `git log -1 -p --follow -- piker/service/__init__.py`
|
||
|
|
> `git log -1 -p --follow -- tests/test_services.py`
|
||
|
|
|
||
|
|
Design rationale (verbatim from session):
|
||
|
|
|
||
|
|
- `_root_modules` must gain `piker.data._daemon` so
|
||
|
|
`pikerd_portal.run(spawn_datad, ...)` resolves in
|
||
|
|
the root.
|
||
|
|
- 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, surfaced by the
|
||
|
|
user-requested branch-overlap survey) lands
|
||
|
|
symmetrically on both spawn fns.
|
||
|
|
- mod placement (`piker/data/_daemon.py` vs.
|
||
|
|
generalizing `piker.brokers._daemon`) follows the
|
||
|
|
per-subsystem daemon-mod convention
|
||
|
|
(`.clearing._ems`, `.data._sampling`) and resolves
|
||
|
|
the existing TODO at `brokers/_daemon.py:49` ("move
|
||
|
|
this def to the `.data` subpkg").
|