61 lines
2.0 KiB
Markdown
61 lines
2.0 KiB
Markdown
---
|
|
model: claude-fable-5[1m]
|
|
service: claude
|
|
session: 32d15f9a-b2d3-4c26-bdc9-190219141a25
|
|
timestamp: 2026-06-10T21:35:49Z
|
|
git_ref: datad_service
|
|
diff_cmd: git log -1 -p --follow -- ai/prompt-io/claude/20260610T213549Z_f084e899_prompt_io.md
|
|
scope: code
|
|
substantive: true
|
|
raw_file: 20260610T213549Z_f084e899_prompt_io.raw.md
|
|
---
|
|
|
|
## Prompt
|
|
|
|
User bug report from live `ib` testing of the
|
|
(datad|brokerd)-split branch:
|
|
|
|
> ok doing some testing and noticing live orders do not
|
|
> work otb, pikerd show this on live submission,
|
|
> [pdb traceback: `RuntimeError("Can not order
|
|
> {symbol}, no live feed?")` at `ib/api.py:1152`
|
|
> `submit_limit()` with `self._contracts == {}` in the
|
|
> `brokerd.ib` actor + a `TrioTaskExited` teardown
|
|
> cascade]
|
|
|
|
Follow-up user direction fixing the design intent:
|
|
|
|
> i think the main thing here is that [brokerd] should
|
|
> be able to always submit orders without a live feed
|
|
> being up and registered in the same subactor right?
|
|
|
|
## Response summary
|
|
|
|
Root cause: pre-split the feed code populated the
|
|
actor-local `Client._contracts` cache (via
|
|
`get_mkt_info()` writing `mkt.bs_fqme` keys) in the
|
|
SAME process as order submission; post-split the
|
|
trading actor's client is never warmed. Fix: lazily
|
|
qualify + cache the contract per order request in
|
|
`handle_order_requests()` by running the same
|
|
`get_mkt_info(fqme, proxy=...)` ep the feed side uses,
|
|
plus per-order error relay (`BrokerdError`) so one bad
|
|
submission can't crash the whole trades dialog (the
|
|
`TrioTaskExited` storm was teardown cascade from the
|
|
original raise).
|
|
|
|
## Files changed
|
|
|
|
- `piker/brokers/ib/broker.py` — thread `proxies` into
|
|
`handle_order_requests()`; lazy contract qualify on
|
|
cache-miss; guard `submit_limit()` w/ `BrokerdError`
|
|
relay; uncomment the (anticipatory) `get_mkt_info`
|
|
import
|
|
- `piker/brokers/ib/api.py` — fix the non-f-string
|
|
raise msg + document the new qualification contract
|
|
|
|
## Human edits
|
|
|
|
None — committed as generated. Live `ib` order retest
|
|
performed by the human post-commit.
|