Replace assertions with descriptive errors for conditions reachable via
network input (ID space exhaustion, fd limits, role violations, handler
state). Validate string/array lengths in message parsing to catch
overflow or null-where-non-null. Handle Queue.Empty in get_fd. Guard
Unix.close during cleanup so one failure doesn't leak remaining fds.
Replace Option.get with match in fd receive path. Add explicit
parentheses around land expressions for clarity. Document connection.mli,
fixed.mli, and the Obj.repr identity check in proxy.ml.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>