# IB recovery qualification, 2026-11-06 This records human-operated qualification of the bounded #94 landing on `wkt/land_ib_recovery`, starting from `495c0915` plus the narrow history catch described below. It supplements the historical evidence in `ai/ib-recovery-candidate.md`. ## Runtime and dependency source The evaluated environment uses Python 3.13, Trio 0.34.0 and Tractor `8fe574c1e447358dafd8ebf5ada3b0714c688f78`. Tractor was an editable local checkout during evaluation. The human subsequently published that exact commit as GitHub's `goodboy/tractor:piker_pin`; a read-only remote query confirmed the published OID before restoring Piker's Git source and recording the same OID in `uv.lock`. Offline lock validation resolves 126 packages successfully. No environment sync was performed. This validates the lock metadata; it does not claim a fresh installation from the published source. ## Manual observations The human operated Gateway, chart windows and paper orders. The agent did not operate live services or the account. - Same-feed overlap, close/reopen and paper order submit/cancel worked after the existing order-dialog guard was imported. - Different-feed overlap originally exposed a timed-out one-second MNQ March 2027 gap query. PDB showed `timedout=True` and `out is None`. Its uncaught `NoData` canceled sibling history and quote tasks even though `pikerd` remained alive. - After the narrow catch, the human reported the overlap journeys working, then confirmed cases 5 and 6 with Ctrl+Alt+F: overlapping live feeds survived the Gateway data reset; closing all charts and reopening with `pikerd` left running restored live updates. - Earlier Ctrl+Shift+R attempts left feeds live, but do not prove that the intended Gateway data reset was triggered. These are manual observations, not automated timing or latency measurements. Ctrl+Alt+R was not qualified here; Piker's utility labels it a connection reset. ## Narrow history backport Only the `NoData`/`DataUnavailable` catch around `get_hist()` in `maybe_fill_null_segments()` is copied from `0846cbd4a4197e47415689cf5e9d146ba3174c32`, authored by `goodboy `. The existing gap fallback remains in place; this does not import broader history repair. The new regression uses real null detection and checks that a sibling in the same nursery still runs after either provider exception. Both cases failed before the catch. With it, the two focused history files passed: 17 tests. Earlier bounded-recovery and Tractor qualification results remain separate evidence, not fresh test runs of the final dependency commit tree. ## Remaining recovery limits A full Gateway restart was triggered accidentally through its auto-restart settings dialog. The disconnect delivered the string `Peer closed connection.` to `deliver_trade_events()`. The string branch then reached `err['reqid']`, raising `TypeError`; its `code` local can also retain an earlier event's value. Full Gateway restart recovery is outside this bounded landing. The earlier history-failure teardown also exposed a separate Tractor completion-callback assertion after `BrokenResourceError`. The history catch does not establish that this callback race is fixed. Broader history recovery and these disconnect paths remain downstream work.