Puzzler 3, to me, implies the author assumed both sides come to know of the state of a single duplex connection, rather than both having their own state of a simplex connection. TCP has always been designed to allow one side to continue receiving after indicating to the other side they are finished sending, and it requires both sides to close before the whole connection can end.
I have felt for a long time that this half closed state was a mistake. It fails to match naive expectations and can be hard to handle correctly even if you know about it. And as far as I can see there is no real benefit to having it. Is there some real use case for it (i.e. not just a minor convenience)?
https://www.rfc-editor.org/rfc/rfc793#section-3.5