checkId: check.release.promotion.gates plugin: stellaops.doctor.release severity: warn tags: [release, promotion, gates, policy, attestation]

Promotion Gate Health

This check reads persisted gate evaluations from pending approvals at GET /api/v1/release-orchestrator/approvals?statuses=pending. There is no global /api/v1/promotion-gates read model.

What it checks

Doctor reports pending approval, total gate, blocking gate, advisory gate, and unevaluated approval counts. Malformed approval envelopes return Warn; they never become a false “no gates configured” pass.

Diagnose

# List pending approvals and their gateResults
curl -s -H "Authorization: Bearer $TOKEN" \
  "https://<gateway>/api/release-orchestrator/approvals?statuses=pending"

# Inspect one approval, including gate evidence
curl -s -H "Authorization: Bearer $TOKEN" \
  https://<gateway>/api/release-orchestrator/approvals/<approval-id>

Remediate the failing gate’s evidence or policy input. Use the signed gate-exception workflow only when the operator has intentionally accepted the risk; Doctor treats a persisted exception as non-blocking because the Release Orchestrator truth guard does.

Verification

stella doctor run --check check.release.promotion.gates