anchor.diff:         end, rotateInterval, _),
        validate_integer(rotateSize, _),
        validate_range(rotateSize, 0, 500*1024*1024, _),
  -     validator_vulcan(_),
  +     validator_vulcan(Config, _),
        validate_unsupported_params(_)].
  
positive.code:               end
        end, Name, State).
  
  validator_vulcan(State) ->
      case cluster_compat_mode:is_cluster_vulcan() of
          false ->
              State;
          true ->
              functools:chain(State, validators_vulcan())
      end.
  
  validators_vulcan() ->
      Descriptors = orddict:from_list((ns_audit_cfg:get_descriptors(
                                         ns_config:latest()))),
      [validate_any_value(disabled, _),
       validate_events(disabled, Descriptors, _),
       validate_any_value(disabledUsers, _),
       validate_users(disabledUsers, _)].
  
  validators() ->
      [validate_has_params(_),
       validate_boolean(auditdEnabled, _),
       validate_any_value(logPath, _),
  
negative.code:             Props
      end.
  
  pre_process_post(Config, Props) ->
      case cluster_compat_mode:is_cluster_vulcan(Config) of
          true ->
              case proplists:get_value(disabled, Props) of
                  undefined ->
                      Props;
                  Disabled ->
                      Descriptors =
                          ns_audit_cfg:get_descriptors(Config),
  
                      %% all configurable events are stored either in enabled or
                      %% disabled list, to reduce an element of surprise in case
  