Post (datad|brokerd)-split the trading actor's
`Client._contracts` cache is never warmed by in-proc
feed setup (that now happens in the `datad.ib` sibling)
so ALL live submissions failed with "no live feed?" at
`Client.submit_limit()`; `brokerd` must be able to
submit orders without any feed registered in its own
subactor.
Deats,
- thread the acct `proxies` table into
`handle_order_requests()` and, on a `_contracts`
cache-miss for the req's fqme, lazily run the same
`get_mkt_info(fqme, proxy=...)` symbology ep the
feed-side uses; it writes the `mkt.bs_fqme` key
`submit_limit()` looks up (and warms `_cons2mkts`
which the position-audit path also needs) on exactly
the same aio `Client` instance.
- guard `submit_limit()` w/ a try/except ->
`BrokerdError` relay so a single bad submission
degrades to an EMS error msg instead of crashing the
dialog (and causing the `TrioTaskExited` teardown
storm seen in testing).
- fix the (non-f-string..) raise msg in
`Client.submit_limit()` and doc the new lazy-qualify
contract; the bug was foretold by the TODO in
`.symbols.get_mkt_info()` B)
(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/20260610T213549Z_f084e899_prompt_io.md