[`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
);
        DiscoveryNodes nodes = builder.build();
        final Version maxNodeVersion = nodes.getMaxNodeVersion();
        final Version minNodeVersion = nodes.getMinNodeVersion();
        final Version tooLow = Version.fromId(maxNodeVersion.minimumCompatibilityVersion().id - 100);
        expectThrows(IllegalStateException.class, () -> {
            if (randomBoolean()) {
                NodeJoinExecutor.ensureNodesCompatibility(tooLow, nodes);
            } else {
                NodeJoinExecutor.ensureNodesCompatibility(tooLow, minNodeVersion, maxNodeVersion);
            }
        });
        final Version oldVersion = randomValueOtherThanMany(
            v -> v.onOrAfter(minNodeVersion),
            () -> rarely() ? Version.fromId(minNodeVersion.id - 1) : randomVersion(random())
        );
        expectThrows(IllegalStateException.class, () -> NodeJoinExecutor.ensureVersionBarrier(oldVersion, minNodeVersion));
        final Version minGoodVersion = maxNodeVersion.major == minNodeVersion.major ?
        
            minNodeVersion : maxNodeVersion.minimumCompatibilityVersion();
        final Version justGood = randomVersionBetween(random(), minGoodVersion, maxCompatibleVersion(minNodeVersion));
        if (randomBoolean()) {
            NodeJoinExecutor.ensureNodesCompatibility(justGood, nodes);
        } else {
            NodeJoinExecutor.ensureNodesCompatibility(justGood, minNodeVersion, maxNodeVersion);
        }
    }
    public void testPreventJoinClusterWithUnsupportedTransportVersion() {
        List<TransportVersion> versions = IntStream.range(0, randomIntBetween(2, 10))
            .mapToObj(i -> TransportVersionUtils.randomCompatibleVersion(random()))