Expected SFO runway assignment is listed on PDC or CPDLC. Actual runway assignment from ground, with readback. Verified once “above the line”. Verified twice on the callout approaching the runway. Reverified if we do a runway change, when we are supposed to reaccomplish “above the line”, if we have already gotten that far. What more could the company have us do procedurally? There’s not much to investigate here. Sometimes we just don’t pay attention…and then stuff like this happens.