Need Help Understanding Protocols and Generics

What bothers me is that even if you add

extension Q {
  var id2: String { id }
}

(2 right) remains the same (I don't think it should). Q.id2 is used, but id in that context is still P witness, not Q. And I couldn't figure out the proper explanation. Since in this case (2 left) and (2 right) should have about the same amount of context.