Runbook: Release Orchestrator Required Evidence Is Missing

Audience: Platform and Security on-call engineers.

Current implementation

Verified against src/ReleaseOrchestrator on 2026-07-31. The old Promotion/Gate/Security/SecurityGate and its SEC_* violation vocabulary were unregistered dark code and have been removed. Do not diagnose a current release from those deleted types or configuration flags.

The live promotion decision is composed through the WebApi gate-plugin registry:

The live sources are under src/ReleaseOrchestrator/__Apps/StellaOps.ReleaseOrchestrator.WebApi/GatePlugins/ and are composed by PluginBackedGateDecisionEvaluator.

Diagnose

  1. Run the implemented promotion-gate health check:

    stella doctor --check check.release.promotion.gates
    
  2. Read the persisted gate trace for the approval:

    curl -s "$ORCH_URL/api/v1/approvals/<approval-id>/gates" \
      -H "Authorization: Bearer $TOKEN" \
      -H "X-Tenant-Id: $TENANT"
    

    The endpoint requires release:read. Use the returned gate type, status, message, and details as the diagnosis; do not infer a deleted SEC_* code.

  3. Inspect the durable evidence reference set and registered release evidence:

    curl -s "$ORCH_URL/api/v1/approvals/<approval-id>/evidence" \
      -H "Authorization: Bearer $TOKEN" \
      -H "X-Tenant-Id: $TENANT"
    
    curl -s "$ORCH_URL/api/release-orchestrator/evidence?releaseId=<release-id>" \
      -H "Authorization: Bearer $TOKEN" \
      -H "X-Tenant-Id: $TENANT"
    
  4. For sbom-readiness, match the message to the live states:

    • waiting on SBOM results means the component digest is absent, pending, or still scanning;
    • SBOM scan failed is a deny and includes Scanner’s failure detail when available;
    • when external attachment is required, waiting on external registry attachment waits and SBOM generated but registry attachment failed denies.

Resolve and verify