[`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
);
    }
    public void testPerNodeLogging() {
        final AllocationService allocationService = createAllocationService();
        when(allocationService.adaptAutoExpandReplicas(any())).then(invocationOnMock -> invocationOnMock.getArguments()[0]);
        final RerouteService rerouteService = (reason, priority, listener) -> listener.onResponse(null);
        final NodeJoinExecutor executor = new NodeJoinExecutor(allocationService, rerouteService);
        final DiscoveryNode masterNode = TestDiscoveryNode.create(UUIDs.base64UUID());
        final ClusterState clusterState = ClusterState.builder(ClusterName.DEFAULT)
            .nodes(DiscoveryNodes.builder().add(masterNode).localNodeId(masterNode.getId()).masterNodeId(masterNode.getId()))
            .build();
        final MockLogAppender appender = new MockLogAppender();
        final ThreadPool threadPool = new TestThreadPool("test");
        try (
            var ignored = appender.capturing(NodeJoinExecutor.class);
            var clusterService = ClusterServiceUtils.createClusterService(clusterState, threadPool)
        ) {
            final var node1 = TestDiscoveryNode.create(UUIDs.base64UUID());
            appender.addExpectation(
                new MockLogAppender.SeenEventExpectation(
                    "info message",
                    LOGGER_NAME,
                    Level.INFO,
                    "node-join: [" + node1.descriptionWithoutAttributes() + "] with reason [" + TEST_REASON.message() + "]"
                )
            );
            assertNull(
                PlainActionFuture.<Void, RuntimeException>get(
                    future -> clusterService.getMasterService()
                        .createTaskQueue("test", Priority.NORMAL, executor)