Files
admin-platform-v3/values.yaml
Claude aefcac742a tower 0.61.13 / tower-ui 0.61.13 — substrate readiness gate
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.
2026-04-30 14:15:29 +03:00

2.0 KiB