Allow periodic checkpoints to be persisted by writing out their meta data. This is what we currently do for savepoints, but in the future checkpoints and savepoints are likely to diverge with respect to guarantees they give for updatability, etc.
This means that the difference between persistent checkpoints and savepoints in the long term will be that persistent checkpoints can only be restored with the same job settings (like parallelism, etc.)
Regular and persisted checkpoints should behave differently with respect to disposal in globally terminal job states (FINISHED, CANCELLED, FAILED): regular checkpoints are cleaned up in all of these cases whereas persistent checkpoints only on FINISHED. Maybe with the option to customize behaviour on CANCELLED or FAILED.