Boot-progress / startup-phase probe.
curl --request GET \ --url https://stratum.example.com/startupzReports where the control plane is in its startup sequence, so a boot that hangs mid-init is visible. The full API server (and /healthz) only binds at the END of a long init, so an early listener serves this endpoint DURING startup: an operator can poll it to see which phase the boot is stuck on (currentPhase + currentPhaseElapsedMs climb on a hang).
Returns 503 with state=“starting” while still booting (the body still names the current phase), 200 with state=“ready” once serving. The full server also serves it after startup so the boot timeline (phases + readyAfterMs) stays queryable.
Per-node: each control plane reports its OWN boot. The HA status rollup (GET /v1/ha/status) aggregates this across nodes.
Responses
Section titled “Responses”Boot complete — control plane is serving.
Control-plane boot-progress report. Reports the current startup phase + per-phase timings so a stuck boot is visible.
object
“starting” until init completes, then “ready”.
The in-flight phase (e.g. postgres-wait, migrations, postgres-pool, openbao, seeding). Empty once ready.
How long the current phase has run — climbs on a hang.
Wall-clock since process start.
Total boot time, set once ready.
Ordered phase history (completed + the in-flight one).
object
Absent while the phase is in flight.
0 while in flight.
Example
{ "state": "starting", "currentPhase": "migrations", "phases": [ { "name": "migrations" } ]}Still booting — body names the current phase. Same shape as the 200, returned with the problem content-type (used for non-Problem structured results, as /dataplane does).
Control-plane boot-progress report. Reports the current startup phase + per-phase timings so a stuck boot is visible.
object
“starting” until init completes, then “ready”.
The in-flight phase (e.g. postgres-wait, migrations, postgres-pool, openbao, seeding). Empty once ready.
How long the current phase has run — climbs on a hang.
Wall-clock since process start.
Total boot time, set once ready.
Ordered phase history (completed + the in-flight one).
object
Absent while the phase is in flight.
0 while in flight.
Example
{ "state": "starting", "currentPhase": "migrations", "phases": [ { "name": "migrations" } ]}