The javadoc of the isComplete() method states: -
Determines whether the authentication exchange has completed. This method is typically called after each invocation of evaluateResponse() to determine whether the authentication has completed successfully or should be continued.
Also getAuthorizationID() states: -
_Reports the authorization ID in effect for the client of this session. This method can only be called if isComplete() returns true.
_
Although the former is very vague there just seem to be a suggestion that complete means successfully complete, our mechs are setting complete very early and other wrappers such as AuthenticationCompleteCallbackSaslServerFactory are using complete as a flag to report failures.