Launch Cutover Runbook — Stella Ops

Audience: DevOps Guild, module guild reps, and the cutover team running a full-platform launch. Purpose: Drive a staged staging-to-production cutover of the Stella Ops release control plane, with rehearsal, smoke tests, rollback, and approvals.

Document owner: DevOps Guild (2025-10-26). Scope: full-platform launch from staging to production for release 2025.09.2.

Historical record. This runbook captures the original launch cutover. The procedure and command samples below reflect the platform’s state at that time and have not been re-run against the current stack. Two material changes have landed since:

  • Storage and data engines changed. MongoDB was fully removed (Sprint 4400) in favour of PostgreSQL; MinIO references are now RustFS; Redis references are now Valkey. The mongodump/mc mirror/runtime_events steps below are kept only as historical context.
  • Kubernetes and Helm are unsupported (product decision, 2026-05-01). Active cutovers must use Docker Compose, the Offline Kit, and signed release manifests for non-Kubernetes container estates.

For an active cutover, follow the current Deployment & Upgrade runbook and the up-to-date deployment profiles under deploy/.

1. Roles and Communication

RolePrimaryBackupContact
Cutover leadDevOps Guild (on-call engineer)Platform Ops lead#launch-bridge (Mattermost)
Authority stackAuthority Core guild repSecurity guild rep#authority
Scanner / QueueScanner WebService guild repRuntime guild rep#scanner
StorageDatabase/object-store operatorsBackup DB adminPager escalation
ObservabilityTelemetry guild repSRE on-call#telemetry
ApprovalsProduct owner + CTODevOps leadApproval recorded in change ticket

Set up a bridge call 30 minutes before start and keep #launch-bridge updated every 10 minutes.

2. Timeline Overview (UTC)

TimeActivityOwner
T-24hChange ticket approved, prod secrets verified, offline kit build status checked (DEVOPS-OFFLINE-18-005).DevOps lead
T-12hRun deploy/tools/validate-profiles.sh; capture logs in ticket.DevOps engineer
T-6hFreeze non-launch deployments; notify guild leads.Product owner
T-2hExecute rehearsal in staging (Section 3) using the Compose stage profile and signed release manifest.DevOps + module reps
T-30mFinal go/no-go with guild leads; confirm monitoring dashboards green.Cutover lead
T0Execute production cutover steps (Section 4).Cutover team
T+45mSmoke tests complete (Section 5); announce success or trigger rollback.Cutover lead
T+4hPost-cutover metrics review, notify stakeholders, close ticket.DevOps + product owner

3. Rehearsal (Staging) Checklist

  1. docker network create stellaops_frontdoor || true (if not present on staging jump host).
  2. Run deploy/tools/validate-profiles.sh and archive output.
  3. Apply staging secrets to the Compose environment file/host secret store; do not create Kubernetes secrets.
  4. Deploy the staging Compose profile and verify containers with docker compose ps.
  5. Verify health endpoints: curl https://authority.stage.../healthz, curl https://scanner.stage.../healthz.
  6. Execute smoke CLI: stellaops-cli scan submit --profile staging --sbom samples/sbom/demo.json and confirm report status in UI.
  7. Document total wall time and any deviations in the rehearsal log.

Rehearsal must complete without manual interventions before proceeding to production.

4. Production Cutover Steps

4.1 Pre-flight

4.2 Apply Updates (Compose)

  1. On each compose node, pull updated images for release 2025.09.2:
    docker compose --env-file prod.env -f devops/compose/docker-compose.prod.yaml pull
    
  2. Deploy changes:
    docker compose --env-file prod.env -f devops/compose/docker-compose.prod.yaml up -d
    
  3. Confirm containers healthy via docker compose ps and docker logs <service> --tail 50.

4.3 Unsupported Kubernetes/Helm Updates

Kubernetes and Helm updates are unsupported. Do not run helm upgrade, kubectl, or Kubernetes rollout commands for Stella Ops.

4.4 Configuration Validation

5. Smoke Tests

TestCommand / ActionExpected Result
API healthcurl https://scanner.prod.../healthzHTTP 200 with {"status":"Healthy"}
Scan submitstellaops-cli scan submit --profile prod --sbom samples/sbom/demo.jsonScan completes < 5 minutes; report accessible with signed DSSE
Runtime event ingestPost sample event from the Zastava observer fixture/runtime/events responds 202 Accepted; record visible in the runtime_events store
Signingstellaops-cli signer sign --bundle demo.jsonReturns DSSE with matching SHA256 and signer metadata
Attestor verifystellaops-cli attestor verify --uuid <uuid>Verification result ok=true
Web UIManual login, verify dashboards render and latency within budgetUI loads under 2 seconds; policy views consistent

Log results in the change ticket with timestamps and screenshots where applicable.

6. Rollback Procedure

  1. Assess failure scope; if systemic, initiate rollback immediately while preserving logs/artifacts.
  2. For Compose:
    docker compose --env-file prod.env -f devops/compose/docker-compose.prod.yaml down
    docker compose --env-file stage.env -f devops/compose/docker-compose.stage.yaml up -d
    
  3. Kubernetes/Helm rollback is unsupported; use the Compose rollback profile only.
  4. Restore Mongo snapshot if data inconsistency detected: mongorestore --uri "$MONGO_BACKUP_URI" --drop /backups/launch-<timestamp>.
  5. Restore MinIO mirror if required: mc mirror minio-backup/stellaops-<timestamp> minio/stellaops.
  6. Notify stakeholders of rollback and capture root cause notes in incident ticket.

7. Post-cutover Actions

8. Approval Matrix

StepRequired ApproversRecord Location
Production deployment planCTO + DevOps leadChange ticket comment
Cutover start (T0)DevOps lead + module reps#launch-bridge summary
Post-smoke successDevOps lead + product ownerChange ticket closure
Rollback (if invoked)DevOps lead + CTOIncident ticket

Retain all approvals and logs for audit. Update this runbook after each execution to record actual timings and lessons learned.

9. Rehearsal Log

Date (UTC)What We ExercisedOutcomeFollow-up
2025-10-26Dry-run of Compose validation via deploy/tools/validate-profiles.sh (dev/stage/prod/airgap/mirror). Network creation simulated (docker network create stellaops_frontdoor planned) and stage CLI submission reviewed.Validation script succeeded; Compose profiles validated cleanly. Stage deployment apply deferred pending staging host access.Schedule full stage rehearsal once staging cluster credentials are available; reuse this log section to capture timings.