--- model: openai/gpt-6-astra service: opencode scope: code substantive: true git_ref: efa72980 raw_file: 20260924_ib_idle_timer.raw.md --- ## Prompt The human reported silent IB roaming and requested an immediate fix after investigation found the custom nanosecond timestamps incompatible with ib_async's datetime-based idle timeout arithmetic. ## Response summary Override NonShittyWrapper._setTimer to accept integer nanosecond packet timestamps while delegating datetime/sentinel states upstream. Keep the packet timestamp unchanged on integer-path expiry, clear the timer before timeoutEvent emission, and preserve reentrant listener rearming. No default heartbeat, reconnect, or idle-timeout arming is introduced. ## Files changed - piker/brokers/ib/api.py: compatible idle timer arithmetic/lifecycle. - tests/test_ib_wrapper_timeout.py: three deterministic offline tests. ## Verification Nineteen tests passed: new wrapper-timeout regressions and existing IB history/method-proxy tests. Restoring the upstream method in memory reproduced datetime-minus-int TypeError. No IB service or live network was contacted; installed dependencies and original user work were unchanged. The isolated worktree index remains unchanged. ## Human contributions The human supplied rfkill/suspend/roam evidence, requested a session health design, and prioritized fixing the discovered timestamp mismatch. The implementation deliberately preserves their nanosecond feed schema. Acceptance and live validation remain pending.