There's currently a check in `TransportService.HandshakeResponse.isIncompatibleBuild` to stop ES with the same Version but different build hashes from joining a cluster. This needs to be relaxed for cloud deployments where Version is not applicable
server/src/main/java/org/elasticsearch/transport/TransportService.java
} catch (Exception e) {
                processException(handler, wrapInRemote(new ResponseHandlerFailureTransportException(e)));
            }
        }
        @Override
        public void sendResponse(Exception exception) throws IOException {
            service.onResponseSent(requestId, action, exception);
            try (var shutdownBlock = service.pendingDirectHandlers.withRef()) {
                if (shutdownBlock == null) {
                    
                    return;
                }
                final TransportResponseHandler<?> handler = service.responseHandlers.onResponseReceived(requestId, service);
                if (handler == null) {
                    
                    return;
                }
                final RemoteTransportException rtx = wrapInRemote(exception);
                final String executor = handler.executor();
                if (ThreadPool.Names.SAME.equals(executor)) {
                    processException(handler, rtx);
                } else {
                    threadPool.executor(executor).execute(new ForkingResponseHandlerRunnable(handler, rtx) {
                        @Override
                        protected void doRun() {
                            processException(handler, rtx);
                        }
                        @Override
                        public String toString() {
                            return "delivery of failure response to [" + requestId + "][" + action + "]: " + exception;