---
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.
