tractor/ai/prompt-io/opencode/20260828T172943Z_2ca8c570_p...

1.3 KiB

Raw output - transport bindspace FD through Trio spawn

The human approved the next WireGuard Layer C increment after landing pre-handshake child-death detection.

Generated code

git diff HEAD~1..HEAD -- tractor/_child.py tractor/runtime/_supervise.py tractor/spawn/_spawn.py tractor/spawn/_trio.py tractor/spawn/_mp.py tractor/to_actor/_api.py tests/test_netns_spawn.py

Thread an optional live Bindspace through actor spawn APIs. For the Trio backend, duplicate its namespace FD, append that temporary descriptor to existing pass_fds, and send the atomic descriptor/inode pair through the child CLI. Close the parent temporary duplicate as soon as open_process() returns, raises, or is cancelled, while the child consumes its inherited descriptor before runtime startup.

Reject bindspace transport explicitly in multiprocessing backends until their descriptor-reduction slice is implemented. Add privilege-free tests for CLI forwarding, merged pass-FD state, caller immutability, source/duplicate ownership, exec failure, cancellation, absent live authority, death-before-handshake cleanup, and MP rejection.

Scope boundary

Multiprocessing FD reduction and root-process namespace entry remain follow-up work.