@mhoye Once a program has started emitting json, it's now locked into doing that in future versions in a compatible way.
My approach has been that all json output be self-describing. Ie, a given (sub)command's json output always has the same objects with the same fields in all circumstances.
(Except for the one subcommand that I messed up and its output was not self-describing and now I'm stuck with it.)
This has all felt nontrivial to me. Worth it tho.