If an application is using the stable_timestamp API correctly, then it should always be the case that oldest_timestamp <= stable_timestamp. However, a checkpoint first reads stable_timestamp and (sometime later) starts a transaction. During that interval, the oldest_timestamp could move forward, leading to this error.
That appears to have happened in testing:
Checkpoint needs to prevent the oldest_timestamp moving forward until its transaction has started.