What is standard CL way to enforce these type conditions (apart from declaim)? Some spec library similar to the one Clojure has?
But then, the standard /is/ useless.
There are implementations which check these type constraints. So it is best to check the manual or ask the maintainers. IIRC there were implementations which added it on user requests.
But don't think all "Common Lisp" implementations will check those constraints, for example ABCL does not. Some don't and in others it can be turned off.