[`Setting.versionSetting`](https://github.com/elastic/elasticsearch/blob/0652a5915586abbcdfdfffa91a391740f0147752/server/src/main/java/org/elasticsearch/common/settings/Setting.java#L1275) (only used by index compatibility setting) does not use the `Validator` passed in - its just discarded. Looks like it's been like this since it was introduced by https://github.com/elastic/elasticsearch/pull/83264 in 8.2.0.

Enabling this causes some tests to fail. Enabling this may cause problems for indexes that have a wonky setting already applied.
server/src/test/java/org/elasticsearch/cluster/coordination/NodeJoinExecutorTests.java
final RerouteService rerouteService = (reason, priority, listener) -> listener.onResponse(null);
        final var executor = new NodeJoinExecutor(allocationService, rerouteService);
        final var actualizedDesiredNodes = randomList(1, 5, this::createPendingDesiredNode);
        final var pendingDesiredNodes = randomList(0, 5, this::createPendingDesiredNode);
        final var clusterState = DesiredNodesTestCase.createClusterStateWithDiscoveryNodesAndDesiredNodes(
            actualizedDesiredNodes,
            pendingDesiredNodes,
            Collections.emptyList(),
            false,
            false
        );
        final var desiredNodes = DesiredNodes.latestFromClusterState(clusterState);
        final var completingElectionTask = JoinTask.completingElection(
            clusterState.nodes()
                .stream()
                .map(node -> new JoinTask.NodeJoinTask(node, TransportVersion.CURRENT, TEST_REASON, NOT_COMPLETED_LISTENER)),
            1L
        );
        final var updatedClusterState = ClusterStateTaskExecutorUtils.executeAndAssertSuccessful(
            clusterState,
            executor,
            List.of(completingElectionTask)
        );
        final var updatedDesiredNodes = DesiredNodes.latestFromClusterState(updatedClusterState);
        assertThat(updatedDesiredNodes, is(notNullValue()));
        assertThat(updatedDesiredNodes.nodes(), hasSize(desiredNodes.nodes().size()));
        assertDesiredNodesStatusIsCorrect(
            updatedClusterState,
            actualizedDesiredNodes.stream().map(DesiredNodeWithStatus::desiredNode).toList(),
            pendingDesiredNodes.stream().map(DesiredNodeWithStatus::desiredNode).toList()