Thinking about the naming here - this command should be safe by default, so "repair" seems a bit scary.  I think the default behavior is "garbage collect" / "cleanup" / "sweep" / "repack".  The optional behavior would be --repair / --fix / --change.  So anything that is safe gets done, anything that is dangerous must be done.  So let's call this  "clean" or "cleanup" or "sweep", and make the default "only cleanup what is sane" and then have --repair.  I think --dry-run would still exist and do absolutely nothing.

I think I was confused in my earlier feedback because of the naming - we should fix the naming, then it'll be clear to an admin that --repair will resolve any ambiguous changes, whereas the default is to clean up safe things.  --