Workstation Logo
AI Solutions
AI WorkstationsAI SME PackagesPrivate AIGPU ClustersEdge AIEnterprise AI LabAI by IndustryWSL ProxyRing Promoter
Products
AI SME PackagesCRMMarketingOpenAI AgentsWSL ProxyRing Promoter
About Us
PartnersCustomer Stories
Articles
Documentation
Blog
Contact UsLogin
Workstation

AI workstations, AI Multi Agentic Software, GPU infrastructure, and intelligent agent solutions for modern businesses.

UK Office: 77-79 Marlowes, Hemel Hempstead HP1 1LF - Directions - Take Junction 20 off M25 Outer London
Company No: 11641870
Mon - Fri: 9:00 AM - 6:00 PM GMT
+44 7515 356 146

Belgium Office: Workstation SRL, Rue Vanderkindere 34, 1180 Uccle, Brussels
BE 0751.518.683
Mon - Fri: 9:00 AM - 6:00 PM CET
+32 492 45 67 46

AI Solutions

AI WorkstationsAI SME PackagesPrivate AIGPU ClustersEdge AIEnterprise AIWSL ProxyRing Promoter

Resources

ArticlesDocumentationBlogSearch

Company

About UsPartnersContact

© 2026 Workstation AI. All rights reserved.

PrivacyCookies
Home / Articles / Technology
DevOpsCI/CDAIKubernetesAutomation

Ring Promoter — QA Gates Before Production

Technical brief: promotion gates, per-ring auto_promote, health/version verification, acc→prod human gate, rollback, and AI-team policy

September 10, 2026Technology6 min read

Watch: QA gates before production

Ring Promoter — QA Gates Before Production (YouTube)

Video: youtu.be/Vs2Em0HPvoY · Product: ringpromoter.com

Ring Promoter is Workstation’s promotion control plane for ordered rings int → test → acc → prod. This article focuses on QA and quality gates in that pipeline: where they sit, how auto-promote interacts with human gates (especially before prod), health and version verification as first-class gates, rollback behaviour, and implications for AI platform teams. Product: ringpromoter.com · source: github.com/bwalia/ring-promoter. Companion blog: business brief · overview: modern CI/CD article · product page: /ring-promoter.

Ring Promoter QA Gates Before Production cover

Agent digest.
  • Problem: Auto-promoting everything into prod is YOLO; gating every hop by hand is too slow.
  • Model: Shared rings; one hop at a time; never skip; health (+ optional version) on every hop.
  • Policy: Optional auto_promote per ring for early hops; keep human gate on acc → prod.
  • Failure: Unhealthy target or version mismatch → automatic rollback + history.
  • Tagline: Don’t auto-promote to prod — earn production through QA gates.

1. Promotion process (recap)

Applications declare per-ring deploy targets (namespace, Deployment, image repo, health URL, deployer). Rings themselves are shared and ordered. Operators, CI, or agents call:

  • seed — land a version on int (or a configured entry ring).
  • promote — move the version from from_ring to the next ring only.
  • rollback — restore the previous version on a ring (also automatic on failed post-deploy health).

Concurrency: operations for the same app are serialized (Postgres session advisory lock across replicas). The operation context is detached from the HTTP request and bounded by operation_timeout, so a client disconnect cannot abort an in-flight promote or its rollback.

Operators / CI / Agents
    → Ring Promoter (UI + REST API)
        → seed / promote / rollback
        → Deployer (kubectl | GitHub Actions | k8sjob)
        → Health (HTTP + optional version verify)  ← quality gate
        → optional auto_promote to next ring       ← policy gate
        → Store (Postgres history + locks)
Rings: int → test → acc → prod

2. Where QA gates sit

QA gates diagram: auto hops early, human gate before prod

Hop Typical gate mix Notes
int → test Health + version; often auto_promote Fast feedback after seed
test → acc Health + version; optional auto after evals/smoke Strengthen health endpoints before enabling auto
acc → prod Health + version + human / QA approve Do not auto-promote into prod by default

Gates are layered. Auto-promote never bypasses health or version verification — it only removes the wait for a human click between hops when the previous landing is healthy.

3. Auto-promote flags per ring

Auto-promote is optional and per ring. When a version lands healthy on a ring that has auto-promote enabled, Ring Promoter continues to the next ring inside the same locked operation. Example policy sketch:

# Conceptual ring policy (illustrative)
rings:
  - name: int
    auto_promote: true      # healthy int → continue to test
  - name: test
    auto_promote: true      # healthy test → continue to acc
  - name: acc
    auto_promote: false     # HUMAN GATE — stop before prod
  - name: prod
    auto_promote: false     # terminal ring

App-level ring mappings still carry deploy and health details:

# Per-app ring mapping (illustrative)
apps:
  web-frontend:
    rings:
      acc:
        namespace: acc-apps
        deployment: web-frontend
        health_url: https://acc.example/healthz
        health_version_field: version
      prod:
        namespace: prod-apps
        deployment: web-frontend
        health_url: https://www.example/healthz
        health_version_field: version

Operational tip: enable auto-promote only after you trust the health contract for that app. A weak always-200 endpoint plus auto-promote will happily march a bad binary toward acceptance.

4. Health and version verification as quality gates

Every promote checks the source ring is healthy before deploy, then checks the target after deploy with configurable retries. If the target stays unhealthy, Ring Promoter rolls back the target to the previous version and records failure in history.

Version-verified health turns a plain liveness URL into a quality gate:

  • health_version_field — JSON field in the health body (e.g. version or build.version).
  • health_version_header — header such as X-App-Version.

The check requires the endpoint to report the exact version just deployed. That matters for AI stacks: an old inference sidecar or agent binary can still answer 200 OK while the new image never became ready. Version mismatch fails the gate and triggers rollback.

On ref-pinned rings (ref: release), the expected version may not be known up front — after a healthy deploy the control plane can record the version the endpoint reports instead of comparing to a pre-known tag.

5. The acc → prod human gate

Keeping auto_promote: false on acc means a successful test → acc (or chained auto from earlier rings) stops at acceptance. Production requires an explicit promote — UI click, approved API call, or change-ticket-backed automation that still calls promote deliberately.

  • Use this for change windows, compliance sign-off, stakeholder demo on staging, or multi-app “release trains.”
  • Pair with version-verified health so the human is approving the right build, not a stale healthy pod.
  • Document who owns the gate (SRE on-call, product owner, release manager) so the hop does not become an accidental queue.
Hard rule. Do not set auto-promote on the ring that feeds production unless you have an exceptional, audited reason — and even then prefer a separate approval mechanism outside the control plane’s auto chain.

6. Rollback as part of the gate story

  • Post-deploy health/version failure → automatic rollback of the target ring.
  • Manual rollback API/UI for operator-driven recovery.
  • History records seed / promote / rollback success and failure for audit.
  • Stored state updates as soon as a deploy lands, so cluster truth is not lost if a later health check fails.

Gates without rollback are theatre. Ring Promoter treats failed gates as actionable: reverse the bad hop, keep the audit trail, leave earlier rings intact.

7. API sketches (CI / agents)

# Seed int, then promote (auto-promote may chain further)
curl -s -H "Authorization: Bearer $TOKEN" -X POST \
  -d '{"ring":"int","version":"1.4.2"}' \
  $BASE/api/apps/web-frontend/seed

curl -s -H "Authorization: Bearer $TOKEN" -X POST \
  -d '{"from_ring":"int"}' \
  $BASE/api/apps/web-frontend/promote
# non-2xx = failed promotion (target auto-rolled back)

# Explicit human-gated hop into prod (after QA on acc)
curl -s -H "Authorization: Bearer $TOKEN" -X POST \
  -d '{"from_ring":"acc"}' \
  $BASE/api/apps/web-frontend/promote

CI builds and tests; Ring Promoter moves what CI produced. A non-2xx promote means the gate failed — curl --fail is enough for pipeline integration. Agents and release bots should treat acc → prod as a privileged action with an explicit approval step in their own workflow.

8. Implications for AI platform teams

AI estates promote inference services, agent runtimes, MCP gateways, RAG APIs, and classic services on different clocks and deployers (kubectl vs GitHub Actions vs k8sjob). Shared rings give one promotion language; gates keep that language honest:

  • Version-verified health catches “old agent still answering.”
  • Auto-promote keeps eval rings moving without babysitting every hop.
  • Human gate before prod protects customer-facing models and tools from silent cascade.
  • Multi-app promote still respects per-app health — one unhealthy service does not invent a skipped ring for others.

Workstation’s stance: treat AI shipping like production services — observability and promotion discipline first (see also LLM bottlenecks / OTEL), then speed.

9. Pros, cons, and recommended policy

Choice Pros Cons
Auto early rings Throughput, less toil Propagates weak health contracts
Human before prod Compliance, change control Needs clear owner / SLA
Version gates Stops fake-green deploys Requires instrumented health endpoints

Recommended default: auto_promote on int and test; human gate on acc; version-verified health on every customer-facing app; never skip rings; rely on auto-rollback when gates fail.

10. Getting started

  1. Watch youtu.be/Vs2Em0HPvoY.
  2. Visit ringpromoter.com and clone github.com/bwalia/ring-promoter.
  3. Read the business blog and Workstation product page.
  4. Configure per-ring auto_promote and health version fields; keep prod human-gated.
  5. Talk to Workstation via contact about CI/CD for AI platforms.

Published by Workstation. Upstream docs: README and design notes in the Ring Promoter repository.

Product site: https://www.ringpromoter.com/

Share this article

More in Technology

Health-Gated Promotions from int to prod: Inside Ring Promoter

Health-Gated Promotions from int to prod: Inside Ring Promoter

Technical deep dive: promotion protocol, version-verified health, deployers, gates, production password, auto-promote, and the CI REST API

Read more
Uncovering LLM Bottlenecks: Observability, OTEL & Cost Control

Uncovering LLM Bottlenecks: Observability, OTEL & Cost Control

Technical brief: OTEL span schemas, collectors, FinOps PromQL, agent budgets, scoring, and LLM platforms for production agents

Read more
Turbocharging LLMs

Turbocharging LLMs

Technical brief: OS-style KV paging, near-zero-waste serving, agent debug loops, workstation token generation, and embedding-gated latent attention

Read more