In a situation where you define a protocol, and then define a class that extends that protocol (e.g., reify, defrecord, deftype) and then later, re-define the protocol (typically, by reloading the namespace that defines the protocol), then the existing instances are no longer valid.
However, the exception that gets generated can be confusing:
The confusing part is that (in the above example) AuthService does extend MicroService, just not the correct version of it.
The exception message should be extended to identify that this is "possibly because the protocol was reloaded since the class was defined."
A patch will be ready shortly.
Patch with tests