Seems reasonable to me. We'll have to figure out some edge cases, like how to snap values correctly for displays with a low number of brightness steps, and ideally (not currently implemented) how to best defer or ignore brightness change requests for a display that's currently turned off via DPMS. The extra protocol in between won't make this easier, but it seems directionally correct.
Also,
Some brightness control mechanisms are somewhat unstable, or require rootprivileges, so putting them inside of the compositor is not desired.
I still have my unpublished branch to use logind's SetBrightness
D-Bus API if available. So in some situations, determined at runtime of course, the same display can be adjusted without root access although the generic fallback still requires the KAuth helper. It'll be fun (?) to negotiate this with KWin.