Проверяет навык проектирования API, важный в больших продуктах.
Нельзя переиспользовать номера полей, нельзя менять типы, нельзя убирать поля. Новые поля — только с новыми тегами. Используются reserved поля, wrapper-типы и расширяемые структуры.
Даже если поле удалено → отмечаем:
reserved 3;
reserved "old_field"Это ломает бинарную совместимость.
Старый клиент их игнорирует.
Чтобы различать “не передано” и “нулевое значение”.
Удобно эволюционирует.
my.service.v1, my.service.v2.
Нельзя «ломать» контракты без подготовки.