51 lines
1.8 KiB
Markdown
51 lines
1.8 KiB
Markdown
|
|
---
|
||
|
|
model: openai/gpt-5.6-sol
|
||
|
|
service: opencode
|
||
|
|
timestamp: 2026-08-11T23:38:33Z
|
||
|
|
git_ref: 7cbd64ee
|
||
|
|
diff_cmd: git diff HEAD~1..HEAD
|
||
|
|
---
|
||
|
|
|
||
|
|
The user asked for a Tractor fix in a new isolated worktree after a live piker
|
||
|
|
failure reported:
|
||
|
|
|
||
|
|
```text
|
||
|
|
tractor.trionics._broadcast.Lagged:
|
||
|
|
Task `piker.brokers.ib.broker.handle_order_requests` overrun and
|
||
|
|
dropped `0` values
|
||
|
|
```
|
||
|
|
|
||
|
|
Inspection showed the lag exception was valid but its count was off by one.
|
||
|
|
`BroadcastReceiver.receive_nowait()` treats `seq` as a deque index. With a
|
||
|
|
one-entry queue, index zero is the only retained value and `seq == 1` already
|
||
|
|
means one value was displaced. The old `seq - maxlen` calculation therefore
|
||
|
|
reported zero instead of one.
|
||
|
|
|
||
|
|
> `git diff HEAD~1..HEAD -- tractor/trionics/_broadcast.py`
|
||
|
|
|
||
|
|
Adjusted the lag count to `seq - maxlen + 1` and documented why the first
|
||
|
|
invalid deque index must be included. The existing Tokio-style cursor reset
|
||
|
|
remains unchanged.
|
||
|
|
|
||
|
|
> `git diff HEAD~1..HEAD -- tests/test_task_broadcasting.py`
|
||
|
|
|
||
|
|
Added a deterministic parameterized regression covering a one-slot queue
|
||
|
|
with one dropped value and a three-slot queue with two dropped values. The
|
||
|
|
test keeps the root receiver idle while a child subscriber synchronously
|
||
|
|
drains each produced value, asserts the exact `Lagged` message, and proves the
|
||
|
|
next receive resumes at the oldest retained item.
|
||
|
|
|
||
|
|
Verification output:
|
||
|
|
|
||
|
|
```text
|
||
|
|
.. [100%]
|
||
|
|
2 passed in 0.04s
|
||
|
|
|
||
|
|
.......... [100%]
|
||
|
|
10 passed in 4.65s
|
||
|
|
```
|
||
|
|
|
||
|
|
The targeted import resolved to the new Tractor worktree. Python compilation
|
||
|
|
and `git diff --check` passed. Adversarial review found no actionable issues;
|
||
|
|
zero-capacity channels remain a pre-existing untested edge outside this fix.
|