The read only spec. has this text within the list of requirements:
- shall verify that the Authorization Code (section 1.3.1 of [RFC6749]) has not been previously used if possible
I would like us to remove 'if possible'. This requirement starts with 'shall' which, if I am not mistaken, refers to something that has to be supported. If that is true, 'if possible' is not valid.
Changing 'shall' to 'should' is better than removing 'if possible' (if we should change the sentence).
Authorization codes are short-lived tokens. "RFC 6749, 4.1.2. Authorization Response" says "A maximum authorization code lifetime of 10 minutes is RECOMMENDED". If 'if possible' were removed, authorization server implementations would have to keep the short-lived tokens in their databases forever only to ensure that they are not reused even after the tokens have expired. Garbage records would be accumulated. It would be impractical.