Thanks for the catch-up! Let me reach out to the author and check his status.
I think given that MLIR has mutable attributes, it could make sense to one day move over to mutable attributes for cyclic attributes to better match llvm. On the other hand, I also see advantages to expressing recursion explicitly for the cases that need it, since it allows native data structures to be “finite” (and generic infra to be simple), and recursion becomes a dialect-specific semantic that is handled explicitly by the dialect (or, a shared utility dialect if common enough). Since this seems reasonable to you too, I’ll give it a shot and we can discuss details in the PR. Happy to extend this to other use cases or move to mutable attributes if we get to that point though.