Decision: public C-FFI varint accelerator

PLAN.md section 7 asks whether to expose a public C-FFI varint accelerator. Deferred until benchmarks prove pure-Lua varint code is the bottleneck. Capture benchmark threshold, API surface, and fallback behavior before implementation.


Decision: deterministic map encoding option

PLAN.md section 7 asks whether map encoder should be deterministic by sorting keys. Spec does not require deterministic map order, but some users may need byte-stable output. Decide API shape, likely pb.encode_deterministic or an encode option, and document perf/canonicalization tradeoffs.


Testing: add malformed-input and random-valid fuzz harnesses

PLAN.md section 5 lists fuzz harnesses as not yet automated. Add durable fuzz coverage for malformed wire inputs plus random-valid generated messages. Goal: catch decoder crashes, infinite loops, overlong varints, invalid LEN boundaries, unknown-field preservation bugs, and encode/decode round-trip mismatches beyond fixed fixtures.


Protobuf editions support (deferred)

We advertise FEATURE_PROTO3_OPTIONAL only, not FEATURE_SUPPORTS_EDITIONS. protoc errors out on edition='2023' files with our plugin today. See PLAN.md section 4.6 for the full design — editions replaces proto2-vs-proto3 with per-field FeatureSet annotations (field_presence, repeated_field_encoding, enum_type, utf8_validation, json_format). Practical win is modest: the only knob proto3 doesn't expose today is per-field packed opt-out. Revisit when (a) someone needs per-field packed control, (b) conformance suite gates on editions, or (c) protoc deprecates proto3 syntax hard enough that real users hit the error.


Proto2: MessageSet wire format (deferred)

protobuf-go's protoreflect refuses to load a FileDescriptor declaring 'option message_set_wire_format = true;', calling it a removed proto1 feature. We strip the four MessageSet-flavored nested messages from our vendored test/conformance/proto/test_messages_proto2.proto so the rest of the schema compiles. Real support would require forking protoreflect; deferred until a real Tarantool consumer asks. Track here so we don't lose the context.