There are two non-normative comments starting at Line 1122 which could be interpreted as conflicting guidance. It certainly made me pause ...
It reads like:
1. The client can avoid implementing its own session expiry by relying on Session Present.
2. But if the client does implement its own session expiry, then it needs to store the time when the session state will be deleted.
3. But the clocks might drift, so the client should always rely on Session Present rather than calculate ...
Why not simply recommend that clients use Session Present?
Non-Normative comment
The Client can avoid implementing its own Session expiry and instead rely on the Session Present flag returned from the Server to determine if the Session had expired. If the Client does implement its own Session expiry, it needs to store the time at which the Session State will be deleted as part of its Session State.
Non-Normative comment
The Client and Server clocks might drift and not measure time intervals accurately. The Client should always rely on the Session Present flag in the CONNACK packet rather than try to calculate whether the Server did keep its Session State.