protomojo · differential compliance run

Protobuf data judged by the reference implementation

92/92checks passed2026-08-25 21:02 UTC

No self-grading: Python protobuf judges seeded binary and JSON messages in both directions. Google’s suite defines the Any edge cases and covers the supported proto3 binary and JSON formats.

proto vs Python protobuf + Google conformance

Python protobuf checks seeded binary and JSON messages in both directions. Malformed input must be rejected in agreement, and Google's conformance_test_runner drives the proto3 binary and JSON groups.

CheckResult
differential decode/re-encode scalars (n=300)PASS
byte-identical re-encoding scalars (300/300)PASS
differential decode/re-encode nested (n=150)PASS
recursion depth limit agrees with protobuf (60 ok, 150 rejected)PASS
malformed-input agreement with protobuf (6/6)PASS
proto3 JSON parse differential, flat primitives (n=300)PASS
proto3 JSON print differential, flat primitives (n=300)PASS
proto3 JSON parse differential, singular nested messages (n=200)PASS
proto3 JSON print differential, singular nested messages (n=200)PASS
proto3 JSON parse differential, repeated primitives and enums (n=200, seed=20260825)PASS
proto3 JSON print differential, repeated primitives and enums (n=200, seed=20260825)PASS
proto3 JSON repeated accepted-edge agreement (10/10)PASS
proto3 JSON repeated rejection agreement (10/10)PASS
proto3 JSON repeated unknown enum name handlingPASS
proto3 JSON parse differential, repeated messages (n=200, seed=20260825)PASS
proto3 JSON print differential, repeated messages (n=200, seed=20260825)PASS
proto3 JSON repeated message accepted-edge agreement (6/6)PASS
proto3 JSON repeated message rejection agreement (6/6)PASS
proto3 JSON repeated message unknown field handlingPASS
proto3 JSON parse differential, string-key maps (n=200, seed=20260825)PASS
proto3 JSON print differential, string-key maps (n=200, seed=20260825)PASS
proto3 JSON string-key map accepted-edge agreement (8/8)PASS
proto3 JSON string-key map rejection agreement (8/8)PASS
proto3 JSON string-key map unknown enum name handlingPASS
proto3 JSON parse differential, integer and boolean map keys (n=200, seed=20260825)PASS
proto3 JSON print differential, integer and boolean map keys (n=200, seed=20260825)PASS
proto3 JSON integer and boolean map key accepted-edge agreement (8/8)PASS
proto3 JSON integer and boolean map key rejection agreement (8/8)PASS
proto3 JSON parse differential, message-valued maps (n=200, seed=20260825)PASS
proto3 JSON print differential, message-valued maps (n=200, seed=20260825)PASS
proto3 JSON message-valued map accepted-edge agreement (6/6)PASS
proto3 JSON message-valued map rejection agreement (6/6)PASS
proto3 JSON message-valued map unknown field handlingPASS
proto3 JSON parse differential, oneof fields (n=200, seed=20260825)PASS
proto3 JSON print differential, oneof fields (n=200, seed=20260825)PASS
proto3 JSON oneof accepted-edge agreement (10/10)PASS
proto3 JSON oneof rejection agreement (8/8)PASS
proto3 JSON oneof unknown enum name handlingPASS
proto3 JSON parse differential, optional fields (n=200, seed=20260825)PASS
proto3 JSON print differential, optional fields (n=200, seed=20260825)PASS
proto3 JSON optional accepted-edge agreement (10/10)PASS
proto3 JSON optional rejection agreement (8/8)PASS
proto3 JSON optional unknown enum name handlingPASS
proto3 JSON google.protobuf.Empty direct agreement (4/4)PASS
proto3 JSON google.protobuf.Empty field parse agreement (3/3)PASS
proto3 JSON google.protobuf.Empty field print agreement (2/2)PASS
proto3 JSON google.protobuf.Empty rejection agreement (4/4)PASS
proto3 JSON wrapper direct agreement (6/6)PASS
proto3 JSON parse differential, wrapper fields (n=200, seed=20260825)PASS
proto3 JSON print differential, wrapper fields (n=200, seed=20260825)PASS
proto3 JSON wrapper accepted-edge agreement (12/12)PASS
proto3 JSON wrapper rejection agreement (10/10)PASS
proto3 JSON Timestamp direct agreement (10/10)PASS
proto3 JSON parse differential, Timestamp fields (n=200, seed=20260825)PASS
proto3 JSON print differential, Timestamp fields (n=200, seed=20260825)PASS
proto3 JSON Timestamp accepted-edge agreement (15/15)PASS
proto3 JSON Timestamp rejection agreement (14/14)PASS
proto3 JSON Duration direct agreement (12/12)PASS
proto3 JSON parse differential, Duration fields (n=200, seed=20260825)PASS
proto3 JSON print differential, Duration fields (n=200, seed=20260825)PASS
proto3 JSON Duration accepted-edge agreement (12/12)PASS
proto3 JSON Duration rejection agreement (10/10)PASS
proto3 JSON FieldMask direct agreement (11/11)PASS
proto3 JSON parse differential, FieldMask fields (n=200, seed=20260825)PASS
proto3 JSON print differential, FieldMask fields (n=200, seed=20260825)PASS
proto3 JSON FieldMask accepted-edge agreement (12/12)PASS
proto3 JSON FieldMask rejection agreement (10/10)PASS
proto3 JSON parse differential, recursive messages (n=200, seed=20260825)PASS
proto3 JSON print differential, recursive messages (n=200, seed=20260825)PASS
proto3 JSON recursive accepted-edge agreement (8/8)PASS
proto3 JSON recursive rejection and depth-limit agreement (10/10)PASS
proto3 JSON parse differential, Struct family fields (n=200, seed=20260825)PASS
proto3 JSON print differential, Struct family fields (n=200, seed=20260825)PASS
proto3 JSON Struct, Value, and ListValue direct agreement (18/18)PASS
proto3 JSON Struct family accepted-edge agreement (17/17)PASS
proto3 JSON Struct family rejection agreement (18/18)PASS
proto3 JSON parse differential, descriptor message fields (n=200, seed=20260825)PASS
proto3 JSON print differential, descriptor message fields (n=200, seed=20260825)PASS
proto3 JSON descriptor message accepted-edge agreement (10/10)PASS
proto3 JSON descriptor message rejection agreement (10/10)PASS
proto3 JSON parse differential, Any messages (n=200, seed=20260825)PASS
proto3 JSON print differential, Any messages (n=200, seed=20260825)PASS
proto3 JSON Any accepted-edge agreement (12/12)PASS
proto3 JSON Any rejection agreement (9/9)PASS
proto3 JSON accepted-edge agreement (31/31)PASS
proto3 JSON rejection agreement (36/36)PASS
proto3 JSON parse differential, singular enums (n=200, seed=20260824)PASS
proto3 JSON print differential, singular enums (n=200, seed=20260824)PASS
proto3 JSON enum accepted-edge agreement (7/7)PASS
proto3 JSON enum rejection agreement (6/6)PASS
proto3 JSON unknown enum name handlingPASS
Google conformance, proto3 binary wire format and JSON (1476 passed, 0 failed; 1303 proto2 cases skipped, declared unsupported)PASS

Environment

mojoMojo 1.0.0 (ed45d567)
python3.14.7
protobuf (reference for proto)7.35.1
platformDarwin 27.0.0 arm64

Known gaps (tracked, not silent)