What a controller writes is the contract everything else reads — the web UI, the CTFd plugin,
kubectl, your alerts. This page enumerates all of it, and is deliberately explicit about the
places where a combination is reachable but unspecified.
Healthy, Progressing, Degraded — a free-form string, not an enum
expiresAt
instance controller
TTL deadline, absent while an unclaimed pool member waits
conditions
instance controller
a single Ready condition
extendCount
nobody
declared in the API, never written
status.sync used to sit in this table for the same reason and has been removed from the API.
Phase
Reached when
Pending
accepted, first reconcile has not finished
Provisioning
Flux is installing — or the template has not yet proven its chart resolves
Ready
on-demand instance, release healthy
Available
pooled member, unclaimed
Claimed
pooled member bound to a claim
Failed
a reconcile gave up
Expiring
past TTL or being deleted, teardown under way
Ready condition reasons come straight from the HelmRelease when one exists, and otherwise from
the operator: TemplateNotFound, SourceError, HelmReleaseError, NamespaceError,
ValuesTemplateError, ValuesYAMLError, ConnectionURLTemplateError,
ConnectionMessageTemplateError, or the template’s SourceReady reason while the gate holds.