65 lines
2.6 KiB
Markdown
65 lines
2.6 KiB
Markdown
|
|
---
|
||
|
|
model: gpt-5.6-sol
|
||
|
|
service: opencode
|
||
|
|
session: tractor-addr-unpacking
|
||
|
|
timestamp: 2026-08-22T04:20:26Z
|
||
|
|
git_ref: 29141f0b
|
||
|
|
scope: code
|
||
|
|
substantive: true
|
||
|
|
raw_file: 20260822T042026Z_29141f0b_prompt_io.raw.md
|
||
|
|
---
|
||
|
|
|
||
|
|
## Prompt
|
||
|
|
|
||
|
|
After committing endpoint namespace visibility, the human authorized
|
||
|
|
continued Layer C implementation.
|
||
|
|
|
||
|
|
During staged review, the human requested Literal-derived validation,
|
||
|
|
ownership documentation, stable-inode clarification, explicit
|
||
|
|
non-serialization rationale and consolidated invalid-model tests.
|
||
|
|
|
||
|
|
## Response summary
|
||
|
|
|
||
|
|
Added the foundational bindspace model: serializable declarations and
|
||
|
|
stable identities are separated from a process-local live capability.
|
||
|
|
The handle validates names, ownership and FD identity. A global
|
||
|
|
`ProcessLocal` sentinel blocks default encoding while retaining
|
||
|
|
msgspec struct behavior.
|
||
|
|
Review fixes require a positive inode for every realized netns,
|
||
|
|
derive runtime choices from the Literal aliases and clarify that an FD
|
||
|
|
integer is not transferable capability authority.
|
||
|
|
The human then clarified that msgspec structs are useful generic
|
||
|
|
storage independently of serialization policy, so the live handle now
|
||
|
|
uses a struct while remaining process-local by contract.
|
||
|
|
The human first selected an opaque FD wrapper, then recognized that
|
||
|
|
future process-local handles need the same guard and directed a global
|
||
|
|
marker under `tractor.msg` instead.
|
||
|
|
|
||
|
|
## Files changed
|
||
|
|
|
||
|
|
- `tractor/discovery/_bindspace.py` - declaration, identity and live
|
||
|
|
capability models.
|
||
|
|
- `tractor/discovery/__init__.py` - public bindspace exports.
|
||
|
|
- `tractor/msg/_local.py` - reusable process-local struct marker.
|
||
|
|
- `tractor/msg/__init__.py` - public `ProcessLocal` export.
|
||
|
|
- `tests/discovery/test_bindspace.py` - serialization and capability
|
||
|
|
invariant coverage.
|
||
|
|
- `tests/msg/test_process_local.py` - direct and nested wire rejection.
|
||
|
|
- `ai/tpt-backends/03_wg_tunnel_bindspace.md` - concrete initial model
|
||
|
|
contract.
|
||
|
|
|
||
|
|
## Human edits
|
||
|
|
|
||
|
|
The human selected the foundational Layer C capability model, then
|
||
|
|
reviewed the staged patch and directed all eight follow-up changes:
|
||
|
|
remove distracting ownership variation, consolidate invalid-model
|
||
|
|
tests, derive containment checks from Literal aliases, require a
|
||
|
|
stable inode and explain why the live handle is not a msgspec struct.
|
||
|
|
The human subsequently corrected that last design choice: struct use
|
||
|
|
does not imply IPC authorization, so `BindspaceHandle` should retain
|
||
|
|
msgspec's generic storage benefits. The agent applied those
|
||
|
|
human-directed edits. The human first chose an opaque process-local FD
|
||
|
|
wrapper, then refined that decision to a reusable global marker under
|
||
|
|
`tractor.msg` for future local handles. No direct manual source edits
|
||
|
|
were observed.
|