Good news: Pulumi is also entirely declarative. The model is what matters in this regard, not the syntax used to express it.
To add to this, having the full expressive power of a programming language for syntax is the way to go. When you have to add explicit looping in your DSL, it’s time to not use a DSL.
HCL is my least favorite part of the hashicorp ecosystem.
Also it’s not like you have to take my word for it — the trend towards CDKs shows that pulumis approach was right. They were just early