Summary
Fix dedicated ACA provisioning so it actually works:
- Missing env vars on sidekyk-admin:
AZURE_SUBSCRIPTION_ID, AZURE_RESOURCE_GROUP, AZURE_ACR_LOGIN_SERVER, AZURE_WORKER_IMAGE — provisioner couldn't initialize
- Corrupted
AZURE_ACA_ENVIRONMENT_ID: Git Bash mangled /subscriptions/... → C:/Program Files/Git/subscriptions/...
- Incomplete
baseWorkerEnv: Only passed OPENAI_API_KEY + DATABASE_URL — now passes WhatsApp, Service Bus, Redis, and admin API vars
- No retry logic: Provisioning was fire-and-forget with no retries — now 3 attempts with exponential backoff
- Stuck org recovery: New
POST /api/admin/isolation/retry-stuck endpoint to retry all orgs stuck in error or provisioning state
Changes
admin/src/index.ts: Expanded baseWorkerEnv with all required dedicated worker env vars
admin/src/routes/users.ts: Added provisionWithRetry() with 3 retries, exponential backoff (5s, 10s, 20s)
admin/src/routes/isolation.ts: Added retry loop in PUT handler + POST /api/admin/isolation/retry-stuck endpoint
scripts/deploy-azure.sh: Added pass-through env vars for dedicated workers
- Tests: 4 user tests + 12 isolation tests
- Smoke tests updated for Phase 10
Acceptance Criteria
Summary
Fix dedicated ACA provisioning so it actually works:
AZURE_SUBSCRIPTION_ID,AZURE_RESOURCE_GROUP,AZURE_ACR_LOGIN_SERVER,AZURE_WORKER_IMAGE— provisioner couldn't initializeAZURE_ACA_ENVIRONMENT_ID: Git Bash mangled/subscriptions/...→C:/Program Files/Git/subscriptions/...baseWorkerEnv: Only passedOPENAI_API_KEY+DATABASE_URL— now passes WhatsApp, Service Bus, Redis, and admin API varsPOST /api/admin/isolation/retry-stuckendpoint to retry all orgs stuck inerrororprovisioningstateChanges
admin/src/index.ts: ExpandedbaseWorkerEnvwith all required dedicated worker env varsadmin/src/routes/users.ts: AddedprovisionWithRetry()with 3 retries, exponential backoff (5s, 10s, 20s)admin/src/routes/isolation.ts: Added retry loop in PUT handler +POST /api/admin/isolation/retry-stuckendpointscripts/deploy-azure.sh: Added pass-through env vars for dedicated workersAcceptance Criteria
AZURE_SUBSCRIPTION_IDset on sidekyk-admin → AzureProvisioner initializesbaseWorkerEnvpasses all required env vars to dedicated workerserrorPOST /api/admin/isolation/retry-stuckrecovers stuck orgs