Retracted: v1.36.21 does not compile: mcp.go calls networkOf, which was staged in a
file the commit left behind. It built locally because the working tree held
both halves, which is the whole lesson — verify the commit, not the
directory it came from.
The tag is not moved. A version is a permanent address, and a consumer that
already resolved to it must keep getting the same bytes. Retract is how Go
says "published in error" without rewriting history: the resolver stops
choosing it, `go list -m -versions` stops offering it, and anyone pinned to
it is told rather than silently moved. v1.36.22 is the re-cut.
go run ./examples/websocket
wscat -c ws://localhost:8080/ws
Untyped on purpose — the request never completes ¶
An upgrade hands the connection to another protocol: there is no response
body for a typed op's Out to be, and the exchange that follows is frames in
both directions for as long as the peer stays. A typed op is one decode, one
call, one serialize, so it cannot express this — which is why wsx.Upgrade
takes an untyped handler and not a TypedHandler.
The cost is the same one every untyped route pays: no OpenAPI entry, no MCP
tool, not reachable by zip.Call. Anything with a request-and-response shape
belongs in a typed op instead — see examples/hello.