--- model: gpt-5.6-sol service: opencode timestamp: 2026-08-28T17:29:43Z git_ref: 2ca8c570 diff_cmd: git diff HEAD~1..HEAD --- # 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.