Beagle SCM
JS-110: net bundle composes URIs by string concatenation, breaking IPv6
Proposed by the 2026-07-07 jab multi-agent review; confirmed by both skeptic verifiers. Manual URI composition is explicitly forbidden by the norms, and the concat form cannot frame IPv6 literals.
Input
Context
- Server.listen:
net._listen("tcp://" + host + ":" + port) (jab net.cpp:307); net.connect: same concat (net.cpp:326); Dgram.bind: "udp://" + addr + ":" + port (net.cpp:339).
- An IPv6 literal ("::1") yields "tcp://::1:8080", which the abc URI/NET parser cannot split into host/port (needs bracket framing) — net.connect(port, "::1") fails or mis-parses.
- uri._make/URI.make (uri.cpp) exists precisely for composition; meta/abc.mkd: never compose URIs manually.
Goals
- Repro first: connect/listen/bind with an IPv6 literal host.
- Compose via URI.make with proper bracketing/escaping in the bundle.
Constraints
- Keep Node argument shapes (port, host); loopback-default behavior unchanged.
WIP
TODOs