Every tuple in PostgreSQL carries a t_xmin and a t_xmax (the inserting and deleting transaction IDs). Two concurrent sessions looking at the same page can see different rows, because visibility isn't stored on the page, it's computed.

Drive the two sessions below: BEGIN, UPDATE, DELETE, COMMIT, or ROLLBACK. Watch the heap grow new tuple versions, the A✓/A✗ and B✓/B✗ badges flip as snapshots diverge, and VACUUM reclaim the dead versions only when no one still needs them. Click any tuple for the full visibility trace: which rule fired, which XID is still in flight, why this tuple is visible to A but not B.