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/test/java/org/elasticsearch/transport/TransportServiceHandshakeTests.java
"",
            transportServiceB.getLocalNode().getAddress(),
            emptyMap(),
            emptySet(),
            Version.CURRENT.minimumCompatibilityVersion()
        );
        expectThrows(ConnectTransportException.class, () -> {
            try (
                Transport.Connection connection = AbstractSimpleTransportTestCase.openConnection(
                    transportServiceA,
                    discoveryNode,
                    TestProfiles.LIGHT_PROFILE
                )
            ) {
                PlainActionFuture.get(fut -> transportServiceA.handshake(connection, timeout, fut.map(x -> null)));
            }
        });
        
        assertFalse(transportServiceA.nodeConnected(discoveryNode));
    }
    public void testNodeConnectWithDifferentNodeId() {
        Settings settings = Settings.builder().put("cluster.name", "test").build();
        TransportService transportServiceA = startServices(
            "TS_A",
            settings,
            TransportVersion.CURRENT,
            Version.CURRENT,
            TransportService.NOOP_TRANSPORT_INTERCEPTOR
        );
        TransportService transportServiceB = startServices(