ADR-008: Монорепозиторий
Status: Accepted · Date: 2026-07-03
Контекст
Section titled “Контекст”Компоненты: backend, agent, web, proto-контракт, деплой-артефакты. Контракт control plane связывает backend и агент; REST-контракт связывает backend и web.
Решение
Section titled “Решение”Один репозиторий (структура). Изменение контракта и обеих его сторон — один атомарный PR. Единое версионирование тегом; совместимость разных версий backend/агента обеспечивается правилами эволюции proto, а не матрицей совместимости.
Отклонённые альтернативы
Section titled “Отклонённые альтернативы”Мульти-репо (backend / agent / web / proto отдельно): каждое изменение контракта — 3–4 согласованных PR с зависимостями по порядку мержа; версия proto-модуля становится координационной точкой; CI не может проверить совместимость сторон до релиза.
Последствия
Section titled “Последствия”- (+) CI проверяет «сгенерируй из proto и сравни» для обеих сторон в одном прогоне.
- (+) Агент физически не может импортировать внутренности backend — граница по Go-модулям внутри монорепо.
- (−) Один репозиторий — один цикл релизов; независимый релиз только web-части неудобен (принято: web меняется вместе с API).