Hard-deletes a non-default environment after a typed-name confirmation. Cascade order: env row → CASCADE removes api_key / alert / deployment / template_snapshot / env_config_snapshot / annotation_queue; SET NULL preserves alert_history (denormalized name + epoch kept intact). Fly app destroy is attempted after the DB delete commits — on failure the env row is already gone and the response surfaces 500 env_fly_provisioning_failed for operator intervention.