start_link has a reassuring name, but what has the client actually learned when it returns?
In a hypothetical cache service, init returns {:ok, state, {:continue, :warm_cache}}. The startup call waits for init to return. The continuation then does the additional work in handle_continue. That startup acknowledgement alone does not establish that the cache is warm. Client requests do not run concurrently with the continuation inside this GenServer.
Picture a client seeing a healthy startup indicator and immediately requesting a cached value. If that indicator means only that initialization returned, the word ready promises too much. Should the service delay readiness until warming finishes, or expose Warming and bound the requests allowed to wait? For the waiting option, what should a timeout remove from the service's pending work?
A supervised restart needs the same decision again. Restarting the process and restoring a usable cache are separate promises. I would reserve ready for the condition those clients actually require.