1.2 KiB
Raw output - own WireGuard interface lifecycle
After committing explicit peer configuration, the human authorized the next incremental lifecycle change.
git diff HEAD~1..HEAD -- tractor/discovery/_tunnel.py tractor/discovery/__init__.py tests/discovery/test_wg_iface_lifecycle.py ai/tpt-backends/03_wg_tunnel_bindspace.md
Added owned async open_wg_iface() lifecycle with role-policy validation before side effects. Listen bearer ports configure the local listener; dial bearers fill omitted endpoints only for the selected maddr peer.
Pyroute2 worker code creates the WireGuard link, assigns local addresses, configures private key/listen port and every explicit peer, raises the link, and removes it on exit. Partial create failures clean up synchronously; async create/remove calls are cancellation-shielded.
Privileged operations are faked in tests. Ruff and lock checks passed; focused WG lifecycle/config/inspection coverage passed 22 tests. A broad unrelated registrar cancellation parameter timed out after 76 passes and 2 xpasses; its isolated rerun passed.