Two tasks could receive through one `BroadcastReceiver` and race its single `_wait_scope`. A later call could replace the scope, leaving the first blocked through `.aclose()`. Track the active `trio.lowlevel.Task` per receiver and reject an overlapping call with `trio.BusyResourceError`. Include the owner's task name and repr in the error, then clear ownership in `finally`. Define each receiver as one logical subscription cursor. Concurrent consumers must use separate `.subscribe()` receivers so each retains an independent cursor and lag policy. Strict mode reads every retained value or raises `Lagged`; `raise_on_lag=False` explicitly permits drops. Cover the regression with a checkpoint loop synchronized on `recv_ready`; explain the interleaving inline, assert the error names the active consumer, then release the source and prove the original receive remains usable. Prompt-IO: ai/prompt-io/opencode/20260828T014247Z_d06ee34b_prompt_io.md (this patch was generated in some part by `opencode` using `gpt-5.6-sol` (`openai`)) |
||
|---|---|---|
| .. | ||
| conc-anal | ||
| prompt-io | ||
| tooling-todos | ||