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

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.