tractor/tractor/msg
Gud Boi bedb3ea300 Widen `UnwrappedAddress` to admit proto-keyed addrs
`SpawnSpec.reg_addrs`/`.bind_addrs` pinned the wire shape to
a 2-tuple, so a `tipc` addr (`('tipc', stype, inst, scope)`)
died at the child w/ `msgspec.ValidationError: Expected array
of length 2, got 4` -> `invalid SpawnSpec IPC msg`.

Point those fields at `UnwrappedAddress` (which `SpawnSpec`s
own TODO already asked for) and widen the alias.

XXX VARIADIC (`tuple[str|int, ...]`) rather than a union of
the two concrete shapes, bc `msgspec` refuses a union holding
more than one array-like type.

?TODO, the real fix is the full proto-key migration (contract
§1.1) after which this becomes a tagged union keyed off elem
0 and per-proto validation comes back.

Note the alias is declared TWICE — `.msg.types` re-declares it
to dodge a circular import (`._addr` -> `.ipc._tcp` -> `.msg`)
and *that* copy is what actually validates the wire msg.

(this patch was generated in some part by `claude-code` using `claude-opus-5` (`anthropic`))
2026-08-29 22:55:38 -04:00
..
__init__.py Finally get type-extended `msgspec` fields workinn 2025-03-27 15:58:02 -04:00
_codec.py Fix send-side `MsgTypeError` rendering 2026-08-20 11:57:39 -04:00
_exts.py Offer a `mods: list` to `dec_type_union()`; drop importing this-mod 2025-03-27 15:58:02 -04:00
_ops.py Guard hot-path log calls to avoid payload rendering when disabled 2026-08-11 20:41:20 -04:00
pretty_struct.py Hide private fields in `Struct.pformat()` output 2026-03-10 00:33:32 -04:00
ptr.py Clarify pointer and IPC cancellation contracts 2026-08-25 01:38:17 -04:00
types.py Widen `UnwrappedAddress` to admit proto-keyed addrs 2026-08-29 22:55:38 -04:00