Drop the ONE coupling that forces feed + trading eps into
the same actor: `Router.open_trade_relays()` pulling its
trades-dialog portal from `feed.portals[brokermod]`.
Instead `open_brokerd_dialog()` now (maybe) spawns/finds
`brokerd.<broker>` itself via `maybe_spawn_brokerd()` and
ONLY when a live trades-ep will actually be opened; the
paper-mode short-circuit never touches it, so post
feed-cutover paper sessions will run with zero `brokerd`
procs.
Pre-cutover this is a pure refactor: the registry lookup
just finds the same feed-spawned daemon.
Deats,
- new `open_brokerd_dialog()` sig: portal acquisition moves
inside via an `acquire_live_portal()` helper; keep an
explicit `portal: Portal|None` override for the
`piker ledger` cli which boots its own ad-hoc actor.
- `Router.maybe_open_brokerd_dialog()` drops its `portal`
param; `open_trade_relays()` drops the `feed.portals`
lookup entirely.
- `.accounting.cli`: pass `portal=` by keyword.
(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/20260610T171226Z_64181219_prompt_io.md