1.9 KiB
Prompt
The human approved the next WireGuard Layer C implementation step after committing child-side network namespace bootstrap.
Response summary
Restore and harden the boot-race design originally implemented by 3b0724eba85b4014170ed95773e1e41a60d5c513 before transferring namespace FDs. Race the initial peer handshake against child-process death so a pre-connection bootstrap failure surfaces instead of parking ActorNursery.start_actor() forever.
Files changed
tractor/spawn/_spawn.py- provide the generic handshake/process death race.tractor/spawn/_trio.py- use the race during Trio child startup.tests/test_spawning.py- cover handshake-first and death-first schedules, simultaneous outcomes, waiter errors, and backend cleanup.
Human edits
The human approved continued Layer C implementation. The agent narrowed the next slice to failure detection after analysis showed FD transfer would otherwise introduce a parent hang. The human then identified the earlier wait_for_peer_or_proc_death() implementation and required explicit credit; the source docstring and commit message now cite its original commit rather than a later cherry-pick. The human directly reflowed _trio.py to the project line limit and normalized nearby quotes. The human also required naming the race helper in its lifecycle comment, explicit trio.Cancelled handling in waiter tests, expected cancellation diagnostics, and a trio.Process-constrained test double. After mainline portability verification, the human chose to commit the fix on the current WireGuard branch and require its cherry-pick onto main as a blocker in the eventual WireGuard pull request.