Yeah, it is certainly very complex, and I know I'm trying to make both Hubitat and SharpTools do things they weren't really intended for (or at least not the way I want to do it).
Thanks for all the advice. The Simple Conditional is a good idea, that should minimize the risk. I've also eliminated the Wait and, so far, no problems. It all gets messy because the levels could change for so many reasons - from the dashboard, from the Hue app, from Google Home or from the dimmer in the room...
I will certainly look into splitting this up, that might make more sense. But yes, ultimately, Groovy is probably the right answer to do this "properly". If I do, I'll try to make it generic and publish, just in case anybody is daft enough to want to try to do the same.
Kudos to the Hubitat developers though, this is ridiculously complex (and there are another dozen or so rules not shown here) and I'm certainly using (abusing?) RM in ways it wasn't intended to work. But you know what, it actually does work. This is exactly what I love about Hubitat, the ability to be creative and not be limited by other people's ideas on what home automation "should" be, so thank you!
Oh, and don't worry, I'd hate to have to rewrite it all too! Trust me, I do routinely download backups! Now, proper source control for rules, there's an idea...