Protocol Buffers Schema Evolution - Breaking
The breaking proto3 Customer message for field-number and wire-compatibility testing. Breaking relative to baseline: field number 2 is reused with a different name and wire type.
syntax = "proto3";
package novus.p6.customer.v2;
message Customer {
string id = 1;
int32 age = 2;
}
Specifications
- Schema Family
- Protocol Buffers
- Version Role
- breaking
- Expected Compatibility
- invalid
- Syntax
- proto3
- Messages
- 1
- Fields
- 3
Testing contract
Expected to fail- Scenario
- Compare the breaking Protocol Buffers contract against the baseline member using a compatibility checker.
- Expected result
- Breaking relative to baseline: field number 2 is reused with a different name and wire type.
What is a .proto file?
Proto files define Protocol Buffers schemas, Google's language-neutral interface definition language for serializing structured data. They declare typed messages, fields, and services that a compiler turns into efficient binary serialization code in many languages. They underpin gRPC and high-performance data interchange.
How to use this file
Use an example proto file to test schema parsers, code generation across languages, and gRPC service or message-definition tooling.
How to use this file for testing
“Protocol Buffers Schema Evolution - Breaking” is a deterministic Novus Examples fixture for Schema / OpenAPI testing, Schema validation, API testing, Conversion testing. Valid and intentionally invalid OpenAPI/JSON Schema documents plus request/response examples for schema validators and API tooling.
Documented properties for this file: 1 messages · 3 fields. Compare results against paired or grouped companions on this page when present (clean↔damaged, searchable↔scanned, or format twins) so scores stay reproducible across runs.
Download the file once, keep the path stable in CI or local scripts, and treat the spec table as the contract: dimensions, seeds, field lists, and roles are intentional. Corrupt or invalid samples are labelled as such — expect parsers to fail loudly rather than silently accept them.
Data fixtures document their exact quirks — delimiters, encodings, null handling, schema, and row counts — in the spec table. Point your parser or importer at the file and assert it handles the documented edge cases; clean and deliberately-messy siblings make before/after diffs straightforward.
Valid and intentionally invalid siblings are labelled in title and description. Assert parsers accept the valid twin and fail loudly on the invalid one; for time series, check DST gaps and duplicate keys against the spec table.
Related files
- jsonAvro Schema Evolution - Backward-CompatibleThe compatible Avro record schema for reader/writer compatibility tests. Backward compatible for old records: nullable email is added with a null default.

- jsonAvro Schema Evolution - BaselineThe baseline Avro record schema for reader/writer compatibility tests. Reference writer schema: id and name are strings.

- jsonAvro Schema Evolution - BreakingThe breaking Avro record schema for reader/writer compatibility tests. Breaking relative to baseline: id changes to long and tenantId has no default.

- jsonJSON Schema Schema Evolution - Backward-CompatibleThe compatible member of a JSON Schema 2020-12 customer contract. Backward compatible: existing instances remain valid because email is optional.

- jsonJSON Schema Schema Evolution - BaselineThe baseline member of a JSON Schema 2020-12 customer contract. Reference contract: id and name are required strings.

- jsonJSON Schema Schema Evolution - BreakingThe breaking member of a JSON Schema 2020-12 customer contract. Breaking relative to baseline: id changes from string to integer and tenantId becomes required.

Generated by generation/p6_core.py. Free for any use, no attribution required — license.