| Source blocker or conversion requirement | Inspect the exact source file/capability, fix it, save a managed version or push the GitHub commit, then plan that exact commit. |
progress.phase: waiting_for_mail | Read mail_status (same as mail_domain_status) with the Prod environment ID; apply its required records. |
reconciliation.state: required | Review the operation and perform one confirmed reconciliation. |
reconciliation.state: pending | Wait and inspect the existing operation; do not submit another attempt. |
error.code: build_failed | operation get names the failed deployment as deployment_id. Read its diagnostics: ohmyhost deployment logs --project "$PROJECT_ID" --deployment "$DEPLOYMENT_ID" --follow --json or MCP deployment_logs. The BUILD_FAILED item carries excerpt, the sanitized tail of your own install/build output (newest lines last; excerpt_truncated means earlier output was omitted). An ending ohmyho.st packaging: line names an output size/file limit. Fix that cause, save a managed version or push the GitHub commit, then plan that exact commit. Without an excerpt,the build may have printed nothing,hit the eight-minute deadline or failed inside the platform; plan the same commit once more,then report both IDs if it repeats. |
error.code: runtime_candidate_failed | The new deployment failed its health check. In the same deployment logs, the HEALTH_CHECK_FAILED item names the route, the status_code it answered and, for a project owner, an excerpt of the response. The check is a cookieless GET that follows no redirect, so a redirect fails too. Each probe has five seconds and follows no redirect; an ordinary login redirect fails. After promotion/rollback,first fix the target environment secret if that is the cause and plan again. For source errors, save the corrected managed version or push the GitHub commit, then plan that exact commit. If the probe throws or exceeds the timeout repeatedly,a diagnostic can be absent and the original operation may require reconciliation. A previous deployment keeps serving when the new candidate fails. |
error.code: runtime_candidate_rejected | The runtime refused the built Worker script. Check the default export and imports of src/ohmyhost/worker.ts, then plan the new commit. |
error.code: storage_jurisdiction_conflict | Match storage.jurisdiction to the immutable us/eu project region from project status, save a managed version or push the GitHub commit, then plan it; the project cannot move regions. |
error.code: database_migration_failed | Read DATABASE_MIGRATION_FAILED’s file/catalog reason; none of the new files applied. Preserve applied files and use later timestamps. Follow expand-only admission; never reset the database. |
CLI 0.1.24 init/plan managed_auth_mail_required | Upgrade to CLI 0.1.25 or later. Older clients incorrectly required managed mail for Better Auth. Preserve your auth and chosen sender; only calls through ohmyho.st Mail need its capability, Paid access and verified sender. |
App 402 Project execution paused | Resolve Stop budget,expired seven-day credit grace,or custom hostname lacking Paid/flag eligibility. Serving resumes within about five minutes; redeploying cannot fund it. |
App 429 Runtime limit exceeded | Reduce work to fit50msCPU/ten subrequests; use small batches. This is not a request rate limit. |
App 502 Upstream unavailable | The app threw or failed to run; read that deployment’s diagnostics. |
App 503 Service unavailable or Credit check unavailable | Address/credit/Dev check unavailable,or Dev passed about1,200requests/minute. Wait/retry; load-test Prod. |
Non-GET/HEAD 403 Forbidden | Verify Origin/cookies and the committed browser/CORS declarations. |
Server 403 Egress denied or 502 Egress upstream unavailable | For an external customer destination, add its exact HTTPS origin to runtime.egress.allow and deploy the corrected source; redirects require the final URL. 304 is preserved. Platform mail/storage gateway origins are allowed automatically; diagnose their errors below. |
| Cron absent or failed | Read function_runs_list or function runs with the actual environment ULID; state,attempt,status_code describe the outcome. Observe runs. |
response_contract_invalid,or old MCP client_request_failed with working login | Compare installed CLI/MCP with current release,upgrade both/reload MCP,then replay the original request/key. If current,report the request ID. |
| HTTP 429 | Respect Retry-After; do not fan out retries. |