Complete all 25 checks before marking a deployment go_live_verified.
VPC layout, ALB placement, ECS task networking, and security group rules.
VPC has ≥2 Availability Zones
CriticalALB is in public subnets (≥2 AZs)
CriticalECS tasks are in private subnets (no public IP)
CriticalEach private subnet has a NAT gateway or VPC endpoint
CriticalALB SG: inbound 443 from 0.0.0.0/0, outbound 3000 → ECS SG
ECS SG: inbound 3000 from ALB SG (source = SG ID, not CIDR)
CriticalACM certificate issuance, region alignment, and Route 53 alias records.
ACM certificate status: Issued (not Pending)
CriticalACM cert is in the same region as the ALB
CriticalACM cert domain matches the app domain (wildcard or exact)
Route 53 A (Alias) record points to ALB DNS name
Environment variables, health endpoint, and Supabase connectivity.
ALB health check path is /api/health (NOT /healthz)
CriticalNEXT_PUBLIC_SUPABASE_URL is set correctly
CriticalSUPABASE_SERVICE_KEY and NEXT_PUBLIC_SUPABASE_ANON_KEY are configured
CriticalNEXT_PUBLIC_APP_URL matches the external URL
APP_VERSION matches the pinned image tag
Supabase migrations applied for this app version
CriticalECS execution role permissions, clock sync, log retention, and image pinning.
ECS task execution role has all required IAM permissions
CriticalECS tasks use Amazon Time Sync Service (169.254.169.123)
CloudWatch log group retention set to 7–30 days
Production image pinned to sha-... tag (not latest)
Final smoke tests before marking go_live_verified.
GET /api/health → {"status":"ok"} with HTTP 200
CriticalLogin page renders at /login without errors
/login → workspace selection redirects correctly
CCC loads with products and dashboards visible
Direct API call to /api/products/... without auth → 403
The most frequent root causes of failed or broken deployments.
ALB targets show Unhealthy immediately after deploy
503 from /api/health even though ECS task is running
Users get 401 errors and are stuck in login loops
App works in one AZ but fails randomly
CCC tabs are empty or show silent 500 errors
ACM certificate stuck on Pending Validation
Quick health check command:
curl -si https://YOUR-APP-DOMAIN/api/health | head -20