1. Will Retain is not named "Will Retain Flag" in Connect Flags although it's referenced as that below (895). There's inconsistent naming of fields in Connect Flags.
2. How is the "MUST be set to zero" enforced?
867 If the Will Flag is set to 0, the Will QoS and Will Retain fields in the Connect Flags MUST be set to zero
868 and the Will Topic and Will Message fields MUST NOT be present in the payload.
887 If the Will Flag is set to 0, then the Will QoS MUST be set to 0 (0x00).
895 If the Will Flag is set to 0, then the Will Retain Flag MUST be set to 0.