48 lines
1.8 KiB
Markdown
48 lines
1.8 KiB
Markdown
|
|
---
|
||
|
|
model: openai/gpt-5.6-sol
|
||
|
|
service: opencode
|
||
|
|
session: pr490-landing-review
|
||
|
|
timestamp: 2026-08-28T01:42:47Z
|
||
|
|
git_ref: wkt/fix_broadcast_lag_count
|
||
|
|
scope: code
|
||
|
|
substantive: true
|
||
|
|
raw_file: 20260828T014247Z_d06ee34b_prompt_io.raw.md
|
||
|
|
---
|
||
|
|
|
||
|
|
## Prompt
|
||
|
|
|
||
|
|
Prime PR #490 for landing, review its concurrent broadcast changes,
|
||
|
|
fix valid findings, and keep the landing pass focused.
|
||
|
|
|
||
|
|
## Response summary
|
||
|
|
|
||
|
|
Rejected an invalid mutable-default finding under `msgspec.Struct`
|
||
|
|
semantics. Found and fixed a close-time race where concurrent receives
|
||
|
|
on one `BroadcastReceiver` could overwrite its sole cancellation scope
|
||
|
|
and strand an earlier waiter. The receiver now rejects overlapping
|
||
|
|
calls with `trio.BusyResourceError`. Public docs now define each
|
||
|
|
receiver as one logical subscription cursor and require one receiver
|
||
|
|
per concurrent lossless consumer. Busy errors identify the active Trio
|
||
|
|
task which owns the receiver.
|
||
|
|
|
||
|
|
## Files changed
|
||
|
|
|
||
|
|
- `tractor/trionics/_broadcast.py` - reject concurrent receives on one
|
||
|
|
receiver handle.
|
||
|
|
- `tests/test_task_broadcasting.py` - prove the second call fails while
|
||
|
|
the original receive remains usable.
|
||
|
|
- `docs/guide/streaming.rst` - document per-task receiver ownership and
|
||
|
|
explicit lag behavior.
|
||
|
|
|
||
|
|
## Human edits
|
||
|
|
|
||
|
|
The human selected PR #490 as the next landing target, rebased it onto
|
||
|
|
current `main`, directed the agent to continue the landing pass, and
|
||
|
|
required a faster, tightly scoped execution after the review expanded.
|
||
|
|
The human then confirmed the per-receiver guard and required the public
|
||
|
|
method, type, and surrounding guide to emphasize lossless per-consumer
|
||
|
|
semantics. The human also required the regression's checkpoint loop to
|
||
|
|
explain its synchronization and the busy error to report the active
|
||
|
|
consumer task. The agent applied the source, test, and documentation
|
||
|
|
changes; no direct manual edits to these files were identified.
|