Skip to content

Latest commit

 

History

History
32 lines (23 loc) · 3.93 KB

File metadata and controls

32 lines (23 loc) · 3.93 KB

RFCs (Request for Comments)

Design documents and technical proposals, grouped by scope. Shared/cross-cutting RFCs live at this level; service-specific RFCs live under a per-service subdirectory (e.g. submitqueue/).

Shared

  • SQL-Based Distributed Queue - MySQL-based distributed message queue with partition leasing and at-least-once delivery (used by SubmitQueue, Stovepipe, and other repo-local services)
  • Message Queue Contract - How queue payloads are defined (Protobuf, serialized as protobuf JSON), located by audience (external in api/{domain}/messagequeue/, internal in {domain}/core/messagequeue/), bound to topics (the topics proto option), and enforced by Bazel visibility
  • Consumer Gate - Stopping and starting individual queue controllers at runtime via a consumer-side check: blocked deliveries are recorded as parked and postponed back to the queue (re-checked on redelivery), gate state as a separate extension with a file-based first implementation shared by tests and operators
  • Consumer Hold - Fourth delivery outcome letting a controller postpone its delivery: the message becomes a partition barrier that pauses consumption for a chosen delay, redelivers in order, and does not count as a failure toward dead-lettering
  • Change URIs - Identity of a code change: scheme://{host[:port]}/{path} per provider (GitHub PR, Phabricator Diff, git ref/commit) and canonical-form rules
  • Hooks Framework - Fire-and-forget side effects off pipeline lifecycle events: one shared HookEvent contract (api/base/hook/) published to a durable per-domain hook topic, dispatched by a per-domain stage to a pluggable hook extension (platform/extension/hook/) for integrations like warehouse export and code-review notifications

SubmitQueue

  • Orchestrator Workflow - Queue-driven controller pipeline from gateway entry through batching, scoring, build, merge, and conclude
  • Gateway History APIs - Request lifecycle history exposed through separate request ID and change ID endpoints
  • Build Runner - Vendor-agnostic BuildRunner interface, provider-neutral BuildStatus lifecycle, and how the orchestrator wires it into the build stage
  • Extension Contract - When extensions take orchestrator identity (request/batch) and resolve granular content themselves vs. take controller-resolved data; revises the BuildRunner base/head contract
  • Gateway Status and List APIs - Gateway-owned request context, materialized current status, sqid or change-URI status lookup, and queue admission listing
  • Speculation - Why SubmitQueue speculates, the path/tree model, and the two pluggable seams: speculation-tree enumeration and path selection
  • Best-First Speculation Path Generation - The default Generator: per-head lazy streams of flip subsets merged best-first across heads, log-probability ranking, and the strict snapshot contract
  • Modular Queue Wiring - Declare-don't-assemble engine (pipeline.Construct) that unifies topic registry, controller registration, DLQ pairing, and lifecycle ordering into one typed call; services self-declare via Deps struct + Stages slice, hosts own per-queue profiles and transport

Stovepipe

  • Stovepipe Workflow - Post-merge validation pipeline overview: ingest, process, build, record greenness, analyze projects, notify downstream
  • Process stage - Build-strategy decision, per-queue concurrency gate, backlog coalescing, entity model, platform prerequisites

Runway

  • Runway Workflow - Landing service: merge-conflict checking and merging on behalf of SubmitQueue