feat(core): make ncaValidator a provider and make the validation rules configurable in run() and config() phase