A WAL record's LSN is the *end* of the record (exclusive), not the beginning. The WAL receiver and redo code were confused on that, and sometimes returned wrong page version because of that.