SubmitQueue — это высокопроизводительная спекулятивная очередь слияния, которая держит trunk стабильно зелёным даже в масштабе. Вместо проверки изменений по одному, она спекулятивно перебазирует и валидирует несколько изменений параллельно, ориентируясь на предсказанные будущие состояния HEAD. Когда валидация проходит, изменения автоматически попадают в основную ветку. Когда падает, SubmitQueue изолирует проблемное изменение и повторяет остальные — без участия человека.
Инструмент рассчитан на большие монорепозитории и быстрые команды, где параллельные изменения могут создавать незаметные конфликты и ломать сборку.
В кодовой базе кросс-доменный Go-код (ошибки, метрики, consumer framework, HTTP-хелперы, общие сущности и контракты расширений) лежит в platform/. У каждого продуктового домена своё дерево: submitqueue/, stovepipe/ и так далее. Домен растёт в gateway/, orchestrator/, entity/, extension/ и domain-local core/. Но может начинаться и с меньшего: например, Stovepipe сейчас — единственный Ping-only сервис с одним controller/. Конвенции и import paths описаны в CLAUDE.md.
Для работы нужны Docker и Docker Compose. Полный список требований — в Development Setup. Основные команды: make build собирает всё, make test гоняет юнит-тесты, make local-submitqueue-start поднимает полный стек локально — Gateway, Orchestrator и MySQL через Docker Compose. Проверить API можно через grpcurl: grpcurl -plaintext -d '{"message": "hello"}' localhost:8081 uber.submitqueue.gateway.SubmitQueueGateway/Ping. Останавливается всё командой make local-stop. Больше примеров, включая запуск отдельных сервисов и клиентов, — в service/README.md.
В документации есть Development Setup, Contributing, Testing Guide, Architecture Guide, Examples и RFCs. SubmitQueue активно развивается, и разработчики ждут вклада и обратной связи: подробности в CONTRIBUTING.md. Код распространяется под Apache License 2.0.