Мультимодульный репозиторий: когда делить и как расставлять теги
Один репозиторий может содержать несколько модулей, но по умолчанию этого делать не стоит: один go.mod в корне проще во всём — общие зависимости, один тег, одна сборка. Разделение оправдано в трёх случаях: часть кода публикуется наружу и должна версионироваться отдельно от приложения; у частей несовместимые требования к зависимостям; часть должна оставаться лёгкой и не тянуть тяжёлые зависимости соседа. Плата за разделение — теги с префиксом каталога: модуль в auth/ версионируется тегом auth/v1.2.0, и Go находит его именно так. Дальше начинается неприятное: модули внутри одного репозитория ссылаются друг на друга по опубликованным версиям, поэтому связанное изменение требует двух релизов подряд — сначала библиотеки, потом потребителя, — а локально это лечится go.work. Практический вывод: делить стоит по границе публикации, а не по границе каталогов.