67 lines
2.7 KiB
Markdown
67 lines
2.7 KiB
Markdown
|
|
---
|
|||
|
|
model: gpt-6
|
|||
|
|
service: codex
|
|||
|
|
timestamp: 2026-09-24T23:24:05.525363+00:00
|
|||
|
|
git_ref: 441358e2
|
|||
|
|
diff_cmd: git diff HEAD~1..HEAD
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
> `git diff HEAD~1..HEAD -- piker/brokers/ib/api.py`
|
|||
|
|
|
|||
|
|
> `git diff HEAD~1..HEAD -- tests/providers/test_ib_schedule.py`
|
|||
|
|
|
|||
|
|
> `git diff HEAD~1..HEAD -- docs/history_segment_backfill.rst`
|
|||
|
|
|
|||
|
|
Client.history_schedule() widens incomplete left coverage by doubling
|
|||
|
|
numDays up to 31 while preserving endDateTime and actual returned
|
|||
|
|
coverage. All attempts share an asyncio timeout. Missing right coverage
|
|||
|
|
returns unchanged because extending the lookback cannot repair it.
|
|||
|
|
Tests replay the captured MNQ schedules through the real client and
|
|||
|
|
reservation allocator, check bounded incomplete coverage and retry
|
|||
|
|
cancellation under one timeout. Documentation describes these limits.
|
|||
|
|
|
|||
|
|
## User-facing output
|
|||
|
|
|
|||
|
|
The captured MNQ case now passes through the real client method
|
|||
|
|
and allocator: the request widens from one day to two, then
|
|||
|
|
reserves 51,824 slots while leaving the venue closure compressed.
|
|||
|
|
|
|||
|
|
The tests also cover permanently incomplete replies and a timeout
|
|||
|
|
during the retry. I’m running the related regression suites now.
|
|||
|
|
|
|||
|
|
All 39 selected tests passed, and Ruff passed. The reservation
|
|||
|
|
suite needed a retry outside the sandbox because Trio’s local
|
|||
|
|
wakeup socket was blocked.
|
|||
|
|
|
|||
|
|
The fix and regression tests are ready for review. I’m recording
|
|||
|
|
the prompt provenance; live SHM and parquet remain unchanged.
|
|||
|
|
|
|||
|
|
## Validation commands and results
|
|||
|
|
|
|||
|
|
Worktree-local py313 in the existing Nix environment; import piker
|
|||
|
|
resolved inside this worktree.
|
|||
|
|
|
|||
|
|
- py313/bin/python -m pytest -p no:xonsh -q -x --tb=short --no-header tests/providers/test_ib_schedule.py tests/providers/test_history_reservations.py
|
|||
|
|
Sandbox: 11 passed then PermissionError creating Trio wakeup socket.
|
|||
|
|
Escalated rerun: 22 passed in 1.02s; fake IB, disposable test SHM.
|
|||
|
|
- py313/bin/python -m pytest -p no:xonsh -q -x --tb=short --no-header tests/test_ib_history.py
|
|||
|
|
17 passed in 0.69s.
|
|||
|
|
- ruff check piker/brokers/ib/api.py tests/providers/test_ib_schedule.py
|
|||
|
|
All checks passed (existing deprecated configuration warning).
|
|||
|
|
- git diff --check: passed.
|
|||
|
|
|
|||
|
|
No live service restart, live history repair, staging, or commit.
|
|||
|
|
|
|||
|
|
## Follow-up user review and generated changes
|
|||
|
|
|
|||
|
|
User: "feels like this same magic # from the prior commit should be
|
|||
|
|
factored and commented once? `num_days: int = max(1, ceil(seconds /
|
|||
|
|
86400))` other then that all looks decent"
|
|||
|
|
|
|||
|
|
> `git diff HEAD~1..HEAD -- piker/calc.py piker/tsp/_reserve.py`
|
|||
|
|
|
|||
|
|
Added SECONDS_PER_DAY for both consumers, with one comment explaining
|
|||
|
|
fixed elapsed days versus calendar days and trading sessions. Named
|
|||
|
|
the client's 31-day retry limit locally. After this change the
|
|||
|
|
schedule suite passed 11 tests and Ruff passed all four Python files.
|