Thanks for your feedback, @sorceval. I will go through it with calm and see which of your suggestions I can incorporate.
But one thing, which is at the core of your whole proposal and probably invalidates most if not all of it, needs clarifying.
This is not possible, and indicates a lack of understanding of how masks (and especially parametric masks) work.
A parametric mask cannot be defined independently of a module. A parametric mask is a function defined over the input and the output of a module, plus a bunch of parameters. When you select a certain range of, say, exposure, you need to know at which point in the pipe you are measuring that level. Also raster masks are position dependent, because a module needs to compute and publish a mask before another module can use it.
The only masks that can be defined independently of modules are drawn ones. But then you would not want two completely differently workflows, one for drawn-only masks and one for everything else, right?
A lot of folks seem to have the idea that module-first masking (as opposed to mask-first masking) is just weird by design. It is not, it’s done like that for good reasons, the most notable one being that it’s extremely powerful and versatile. At the same time, it is not less generic, because whatever mask you define in any module can be rasterized and reused by other modules.










