Timestamped corruption backup: write the failed-to-parse content to a .json.corrupted.YYYYMMDD_HHMMSS sibling so several recovery attempts in a row don’t clobber each other. Pure side-effect; never fails the caller.
.json.corrupted.YYYYMMDD_HHMMSS