This visibility check here ignores prepare written to the disk.
/*
* Check conflict against the on page value if there is no update on the update chain except
* aborted updates. Otherwise, we would have either already detected a conflict if we saw an
* uncommitted update or determined that it would be safe to write if we saw a committed update.
*/
if (!rollback && upd == NULL && cbt != NULL && CUR2BT(cbt)->type != BTREE_COL_FIX &&
cbt->ins == NULL) {
__wt_read_cell_time_window(cbt, cbt->ref, &tw);
if (tw.stop_txn != WT_TXN_MAX && tw.stop_ts != WT_TS_MAX)
rollback = !__wt_txn_visible(session, tw.stop_txn, tw.stop_ts);
else
rollback = !__wt_txn_visible(session, tw.start_txn, tw.start_ts);
}