TextEncoder always emits well-formed UTF-8, so truncation can strand at most a lead byte plus three continuations — one repair pass covers it. The C++ hub needs a loop because its input is raw bytes off the wire. Also drops a dead variable from the byte-boundary test. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>