29 lines
1.1 KiB
Markdown
29 lines
1.1 KiB
Markdown
|
|
---
|
||
|
|
model: gpt-5.6-sol
|
||
|
|
service: opencode
|
||
|
|
timestamp: 2026-08-26T02:24:34Z
|
||
|
|
git_ref: 2245f094
|
||
|
|
diff_cmd: git diff HEAD~1..HEAD
|
||
|
|
---
|
||
|
|
|
||
|
|
# Raw output - compose WireGuard bindspace lifecycles
|
||
|
|
|
||
|
|
After committing the owned WireGuard interface lifecycle, the human
|
||
|
|
requested the next incremental 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 `open_wg_bindspace()` to compose one declared bindspace with an
|
||
|
|
ordered sequence of WireGuard interface layers. The context enters the
|
||
|
|
bindspace first, enters interfaces outermost-first through
|
||
|
|
`AsyncExitStack`, yields the live `BindspaceHandle`, and removes
|
||
|
|
interfaces inside-out before releasing or removing the namespace.
|
||
|
|
|
||
|
|
The caller's layer sequence is snapshotted before the first checkpoint,
|
||
|
|
so concurrent mutation cannot alter resource entry or unwind order.
|
||
|
|
Fake lifecycle tests clear a mutable input list during bindspace entry,
|
||
|
|
cancel from the yielded scope, and prove the original stack unwinds in
|
||
|
|
dependency-safe order.
|
||
|
|
|
||
|
|
Ruff passed and focused bindspace/WireGuard coverage passed 39 tests.
|