> it's regularly too clever and makes it difficult to follow the flow of an application
Too much magic means nobody can understand the code anymore.
Most people who design DSLs don't understand this. It's a problem in ruby - ruby's syntax is so flexible that one ends up with kind of dialects in it.
I have something to learn here. How would you redesign the DSL to be less magical?