Skip to content

feat(digitalocean): guided readiness before deploy#2

Open
scott wants to merge 1 commit intomainfrom
pr/digitalocean-guided-readiness
Open

feat(digitalocean): guided readiness before deploy#2
scott wants to merge 1 commit intomainfrom
pr/digitalocean-guided-readiness

Conversation

@scott
Copy link
Copy Markdown
Collaborator

@scott scott commented Apr 15, 2026

Summary

Goal: Run a guided readiness check before region/size and Droplet creation so users fix account issues early and avoid failed or wasteful deploys.

What changed

  • Pre-flight gate (DO only): After cloud auth, ensureReadyBeforeSizing runs evaluateDigitalOceanReadiness (account snapshot via GET /v2/account, SSH on DO, OpenRouter key, droplet limit). Blockers are fixed in order; payment-related account state is handled before SSH registration (DO often blocks keys until billing is OK).
  • Checklist UI: Clear READY / BLOCKED / not checked yet, one guided step at a time; re-check after browser or token fixes until READY.
  • Billing: Detect locked/warning account status up front; deep link to add payment (…billing?defer-onboarding-for=or&open-add-payment-method=true); shared handleBillingError path.
  • Orchestration: Readiness runs before sizing so fast/parallel paths don’t boot while the account is still blocked.
  • Non-interactive: Fail fast; optional --json-readiness / SPAWN_JSON_READINESS with SPAWN_NON_INTERACTIVE=1.
  • DO OAuth: After 120s, interactive sessions keep waiting (or Escape → manual token); non-interactive still fails at 120s.
  • Also: Exported verifyOpenRouterApiKey, DO helpers/tests, reset-local-state.sh, and DO README updates.

How to test

  • Interactive: incomplete account → checklist → READY → then region/size.
  • Billing: warning / no card → deep link → return → re-check.
  • CI-style: SPAWN_NON_INTERACTIVE=1 → clean exit + JSON if enabled.

Other clouds unchanged.

Pre-flight gate, checklist UI, billing deep-link, DO OAuth escape hatch,
orchestration ordering (readiness before sizing), tests and DO README updates.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant