[`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/main/java/org/elasticsearch/common/settings/Setting.java
checkPropertyRequiresNodeScope(propertiesAsSet);
            this.properties = propertiesAsSet;
        }
    }
    private void checkPropertyRequiresIndexScope(final EnumSet<Property> properties, final Property property) {
        if (properties.contains(property) && properties.contains(Property.IndexScope) == false) {
            throw new IllegalArgumentException("non-index-scoped setting [" + key + "] can not have property [" + property + "]");
        }
    }
    private void checkPropertyRequiresNodeScope(final EnumSet<Property> properties) {
        if (properties.contains(Property.Consistent) && properties.contains(Property.NodeScope) == false) {
            throw new IllegalArgumentException("non-node-scoped setting [" + key + "] can not have property [" + Property.Consistent + "]");
        }
    }
    /**
     * Creates a new Setting instance
     * @param key the settings key for this setting.
     * @param defaultValue a default value function that returns the default values string representation.
     * @param parser a parser that parses the string rep into a complex datatype.
     * @param properties properties for this setting like scope, filtering...
     */
    public Setting(Key key, Function<Settings, String> defaultValue, Function<String, T> parser, Property... properties) {
        this(key, defaultValue, parser, v -> {}, properties);
    }
    /**
     * Creates a new {@code Setting} instance.
     *
     * @param key          the settings key for this setting
     * @param defaultValue a default value function that results a string representation of the default value
     * @param parser       a parser that parses a string representation into the concrete type for this setting