ConstReadonlyArgument: "ARGUMENT"A caller argument was invalid (e.g. id out of range, empty array).
ReadonlyBufferFull: "BUFFER_FULL"The output buffer is full and no flush sink was provided.
ReadonlyIncomplete: "INCOMPLETE"The input being decoded ends inside a field (INCOMPLETE, MESSAGE_SPEC §7):
an unterminated varint, a payload shorter than its declared length, an array
that runs off the end, or a nested sequence never closed. Not a malformed
message — more bytes could complete it, and the caller owns end-of-input.
ReadonlyInvalidMsg: "INVALID_MSG"The input being decoded is malformed regardless of what follows (INVALID).
ReadonlyLimitExceeded: "LIMIT_EXCEEDED"A receiver-configured decode limit was exceeded — a dynamic array, string or
blob on the wire claims more elements / bytes than the caller's
DecodeLimits (maxArrayCount / maxStringLen / maxBlobLen)
allows. Deliberately distinct from SofabErrorCode.InvalidMsg:
exceeding a limit is policy, not wire malformation — the identical bytes
decode fine under a looser limit — so differential fuzzing must not read it
as a conformance divergence. The decoder never clamps or truncates; it
rejects, before the offending field is materialized.
The cause of a SofabError.
Argument,BufferFullandInvalidMsgmatch the C reference'ssofab_ret_tcodes;Incompleteis the finish-less INCOMPLETE decode outcome (MESSAGE_SPEC §7), a distinct, more-bytes-could-complete-it signal split out fromInvalidMsg.