aefcac742aeb5f394b7e17c6fef2668aa13d7a34
Servers connected via the URL-token flow take ~5 min for the
cluster-platform-v3 chart to install. Without a gate, an over-eager
operator could click Deploy on a fresh server and land an instance
on a half-built cluster — Argo sync errors on missing CRDs, Pod
ImagePullBackOff on the in-cluster registry that doesn't exist yet.
Two layers, both shipped here:
Backend (defensive, non-bypassable):
- argoCluster gains substrateStatus enum (ready | preparing |
degraded | unknown) and substrateETA (RFC3339, when preparing)
derived from the per-cluster <name>-platform Argo App's
health+sync + the App's createdAt + 5min budget.
- handleCreateInstance + handleApplyMigration refuse with 409 +
"server still preparing — please wait" when the gate fails.
Same posture as the in-flight-delete check we shipped in 0.61.11.
Frontend (visible UX, prevents the user reaching the gate):
- DeployInstanceDrawer + MigrateDrawer server pickers disable
rows where substrateStatus !== ready/unknown. Disabled rows
show "Preparing · ~Xm" with a live countdown.
- Default-server selection prefers a deployable row.
- PlatformAppBadge shows the same countdown on the server card +
detail vitals panel — operator can watch it tick down without
leaving the Servers list.
- Drawers auto-poll listServers() while a preparing server is
visible — rows enable themselves the moment the chart lands.
admin-platform-v3
Tower platform Helm chart
Description
Languages
Smarty
100%