Symptom
One JSON state file read by 3+ processes and written by 2 (a 30-minute cron, a 16-minute cron, a manual batch). Any write that lands between another process's read and write erases everything in between.
Fix (you need all three)
fcntl.flockos.replace★ Same root as the progress-file name collision: a shared resource with no owner.
There were days with zero loss. Pure luck.