Cross-domain packages shared by SubmitQueue, Stovepipe, and other services in this repository. Nothing under platform/ may depend on domain folders (submitqueue/, stovepipe/).
- errs/ — Error classification (
errstypes, classifiers, MySQL/generic helpers). - metrics/ — Tally helpers with error-aware tagging via
platform/errs. - consumer/ — Queue consumer framework (
consumer.Controller, registry, DLQ wiring). - http/ — Small HTTP client helpers (e.g. base-URL
RoundTripper). Go import path:github.com/uber/submitqueue/platform/http; package name ishttp. Callers that also importnet/httpshould import this package with an alias (for examplephttp "github.com/uber/submitqueue/platform/http") and usephttp.NewClient. - git/ — Git command environment (
exec) and local bare-repo plumbing (repo) shared by change providers and mergers. - hook/ — Consumer-side hook dispatch: turn queued hook events into
hook.Hookcalls, and reconcile events that dead-letter. - lifecycle/ —
Componentstart/stop interface and orderedGroupcomposition for runnable subsystems. - pipeline/ — Typed engine that assembles a service's queue topology into one lifecycle component.
- publish/ — Topic-key publish plumbing and the message-ID convention that controls deduplication.
- buildkite/, githubactions/ — Vendor CI clients over
platform/http: the REST calls and provider-specific vocabulary (state strings, id encoding) shared by every domain'sBuildRunnerbackend. They deliberately define no interface, so they are plumbing rather than extensions — each domain keeps its ownBuildRunnercontract under{domain}/extension/buildrunnerand adapts these clients to it. - base/ — Shared domain entities (
change,messagequeue, and related subpackages). Root packagebaseis documentation-only. - extension/ — Shared extension interfaces and implementations reused across domains (
counter,messagequeue, and backends such asmysql). A package belongs here only if it defines a behavioral interface with itsConfigandFactoryinterface; a vendor client with no interface belongs directly underplatform/.
Domain-scoped infrastructure and extensions stay under each domain (for example submitqueue/core/, submitqueue/extension/).