In Kotlin, I almost wonder if you could use the continuations API to construct VkCommandBuffer procedurally using a DSL and have them automatically resolve resources used and map into a submittable VkCommandBuffer by evaluating the full continuation.