--- model: openai/gpt-5.6-sol service: opencode timestamp: 2026-08-12T21:31:17Z git_ref: 51185487 diff_cmd: git diff HEAD~1..HEAD --- The user requested the fourth iterative refinement for Tractor PR 490: expose subscriber lag policy through the public `MsgStream.subscribe()` and `LinkedTaskChannel.subscribe()` wrappers, then stop for a complete commit plan. This enables piker to replace private receiver mutation. > `git diff HEAD~1..HEAD -- tractor/_streaming.py` Added `raise_on_lag: bool = True` to `MsgStream.subscribe()`. The first call passes the policy to the irreversibly allocated root broadcaster and its child; later calls configure each child independently while retaining the root's first-call policy. > `git diff HEAD~1..HEAD -- tractor/to_asyncio.py` Added equivalent lag-policy forwarding to `LinkedTaskChannel.subscribe()`. > `git diff HEAD~1..HEAD -- docs/guide/streaming.rst` > `git diff HEAD~1..HEAD -- docs/guide/asyncio.rst` Documented strict versus warn/drop/resume behavior, independent child policy, and first-call root policy for both wrapper types. > `git diff HEAD~1..HEAD -- tests/test_task_broadcasting.py` Added a parameterized wrapper-level regression using minimal receive-compatible handles. It verifies a first non-raising subscription configures root and child, then a later strict child does not mutate the sticky root policy. Verification output: ```text ................... [100%] 19 passed in 5.71s .................... [100%] 20 passed in 6.88s . [100%] 1 passed in 0.86s ``` The second and third runs cover actual `MsgStream` and infected-asyncio `LinkedTaskChannel` fan-out respectively. Python compilation and `git diff --check` passed. Adversarial review found no actionable issues.