Reference failures
A reference such as ${{ database.DATABASE_URL }} is resolved when Kuppit prepares a deployment. If it cannot be, the deployment fails before the build starts, the page says Check this service's variables, then deploy again, and Edit variables takes you there. Traffic was not moved.
Each message below names one variable's problem. A service can have more than one; fix them all before redeploying.
A variable references a database that no longer exists
The database the variable pointed at has been deleted. The reference is a dangling pointer, and the deployment cannot be prepared with a value that cannot exist.
On the Variables tab, remove the variable, or repoint it at a database that exists in this environment. If the database was deleted by mistake, create a new one and reference that: a deleted database's data is gone, and a new reference is the only way forward.
A variable references a database that is being deleted
The same, one step earlier: the database has a deletion in progress. It is not coming back, and Kuppit will not prepare a deployment against it.
Remove or repoint the variable as above. The deletion finishes on its own; nothing waits for it.
A variable references something the database does not expose
The variable names a value the database does not provide. A PostgreSQL database exposes exactly six: PGHOST, PGPORT, PGUSER, PGPASSWORD, PGDATABASE and DATABASE_URL. A web service exposes nothing.
On the Variables tab, edit the reference and choose one of the six. If you need a value that is not one of them, such as a connection string in a different shape, compose it in your application from the parts.
The referenced database is still being created
The database exists but has not finished provisioning, so it has no address or credentials to resolve to yet. This is the one message on this page that fixes itself.
Wait for the database's card on the environment's Overview to show Ready, then Redeploy. Provisioning takes a few minutes. A database that fails to provision says so on its own page instead, and the deployment reports a different failure.