--- model: claude-fable-5[1m] service: claude 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 --- 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/feed.py` Generated: `open_feed()` spawn cutover with the `maybe_spawn_datad` import done "relative-direct" from `._daemon` — NOT via `piker.service` — to dodge a partial-init cycle: when `piker.data.feed` loads as part of `piker.service.__init__` executing its own `piker.data._daemon` import, the service pkg is mid-init and its `maybe_spawn_datad` binding does not exist yet. The `open_feed_bus()` local-state sanity assert flips `'brokerd' in servicename` -> `'datad' in servicename` (the only actor-name assert in the tree, verified by grep). > `git log -1 -p --follow -- piker/brokers/_daemon.py` Generated: `_setup_persistent_brokerd()` slimmed to console-log setup + pinned-open ctx; drops the bus alloc, the `assert not feed._bus`, the service nursery (backend `open_trade_dialog()` ctxs own their task trees) and the `eg.ExceptionGroup` handler. The `piker ledger` ad-hoc actor enters this same slimmed fixture — exactly what it needs. > `git log -1 -p --follow -- piker/ui/_app.py` > `git log -1 -p --follow -- piker/ui/cli.py` > `git log -1 -p --follow -- piker/brokers/core.py` > `git log -1 -p --follow -- piker/brokers/cli.py` > `git log -1 -p --follow -- piker/ui/kivy/option_chain.py` > `git log -1 -p --follow -- tests/test_services.py` Verification (from session): per-suite gates green at this commit (services 5-passed incl. the new negative assert, feeds 3-passed); a headless live smoke (`maybe_open_pikerd` + `open_feed(['xbtusdt.kraken'])` on an alt registry port) confirmed quotes flowing via `datad.kraken` + `samplerd` with `check_for_service( 'brokerd.kraken') is None`. Known pre-existing flake documented: `test_multi_fill_positions`' second in-proc runtime boot wedges ~50% (zombie subactor w/ unread parent-IPC bytes); reproduced with the split fully reverted so NOT a regression of this work.