--- model: gpt-5.6-sol service: opencode session: tractor-addr-unpacking timestamp: 2026-08-20T03:31:07Z git_ref: ba07e09d scope: code substantive: true raw_file: 20260820T033107Z_ba07e09d_prompt_io.raw.md --- ## Prompt The human requested canonical tagged transport addresses with a reader-first migration. TCP should decode `('tcp', host, port)`, Unix should decode `('unix', path)`, `uds` should remain an accepted input alias and internal transport key, and legacy tuple/list inputs must keep working before writers switch formats. ## Response summary Introduced canonical and compatibility address aliases, explicit tagged dispatch, transport-specific tagged readers, and focused serialization tests. Kept legacy pair inputs and native IPv6 socket values readable so this boundary can ship before tagged emission. ## Files changed - `tractor/discovery/_addr.py` - address aliases and tagged dispatch. - `tractor/ipc/_tcp.py` - tagged, legacy, and IPv6 TCP decoding. - `tractor/ipc/_uds.py` - canonical Unix and UDS-alias decoding. - `tests/discovery/test_address_serialization.py` - reader compatibility coverage. ## Human edits The human supplied the canonical `tcp` and `unix` forms, chose `uds` as an input-only serialization alias while preserving it as the runtime transport key, and required a reader-first commit boundary. The agent implemented those decisions; no direct manual source edits were observed.