There should be a place (places due to RC vs. watchlist issue) on the backend where you can configure:
* What filters there are
* Whether they are available on new RC page, or both old and new.
* The default value (may be based on a preference, can vary by watchlist vs. RC, e.g. 'hideminor' vs. 'watchlisthideminor' preferences) (the default can vary for non-preference cases too)
* The actual modification this makes to the DB query
* Prioritization (where it appears in the filter list)
* Filters that imply/control other filters (e.g. if you select "Likely have problems", it should also find edits that are "Very likely have problems"). See T151873 and T149452 .
This needs to extensible by extensions (we already have a need for this, e.g. ORES, Wikidata, Translate).
I suggest hooks would be a good option for extensibility, but @mooeypoo points out having extensions modify a wg could work.
Potentially pass in callbacks to a registration method, and disable if there are any missing (e.g. {T152797}).
In output for new rcfilters UI:
* If possible, backend converts 'all' to actual default values (e.g. comma-sep).
* Doesn't need to redirect 'all' URL, but does if it's all *and* other stuff.
* Don't need to omit default: false. This will mean filter is not active.
* Numeric values (e.g. rcdays) to be solved later.