tractor/ai/prompt-io/opencode/20260812T213117Z_51185487_p...

1.9 KiB
Raw Blame History

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 roots 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:

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