1.7 KiB
Prompt
After committing the foundational bindspace capability model, the human authorized the next incremental Layer C change.
Response summary
Added a borrow-only existing-netns context manager which pins stable identity through an open FD and always releases that local descriptor. The API does not create, enter or remove namespaces and rejects named path traversal. Staged review renamed the context to attach_netns(), introduced the readable CURRENT_NETNS alias and made key validation errors identify their exact owning field. Follow-up review made the empty-key error spell out that None is written as CURRENT_NETNS for BindspaceSpec.key declarations.
Files changed
tractor/discovery/_bindspace.py- existing-netns lifecycle and key validation.tractor/discovery/__init__.py- public lifecycle export.tests/discovery/test_bindspace.py- current, named, missing and traversal coverage.ai/tpt-backends/03_wg_tunnel_bindspace.md- borrow-only lifecycle contract.
Human edits
The human selected the previously deferred borrow-only netns lifecycle as the next incremental Layer C change. The agent implemented the source changes. During staged review, the human selected attach_netns() terminology, requested explicit BindspaceSpec.key = CURRENT_NETNS semantics and field-specific key validation. Follow-up review requested the validation error itself connect None to CURRENT_NETNS. The agent applied those human-directed edits; no direct manual source edits were observed.