tractor/ai/prompt-io/opencode/20260822T042026Z_29141f0b_p...

2.6 KiB
Raw Blame History

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 msgspecs 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.