Introducing fine grainier way to organize jobs in our CI. Before we had only two modes: - Stable -> where all jobs are run - Pull Request -> where only triaged jobs are run The problem was that there were no fluent way of composing modes (how we are picking up job) and stage ( is it PR, Stable, NIghtly etc.) My refactoring had a two outcomes. First I detached mode and introduced JobSelection constant which defines if we are triaging or not. Second, I introduced list of scope for each test instead of enum. Now each job can define what is the scope of this test. Available are: - Pull Request - Nightly - Mainline Nightly (daily run on master,compatible.develop) - Stable - pre release checks