Just as we assume that structure accessors read data of the proper type from their slot - we do not check on a ref to an instance but we check on set - the same should be true of globaldb.

However the compiler macro doesn't know that such our preferred modus operandi.
This code, with safety on, generates a runtime type check.

(funcall (compiler-macro-function 'info) '(INFO :VARIABLE :KIND sym) nil)

  (VALUES #:VALUE2693 #:FOUNDP2694))

It should be instead:


Well, it would be that.  Except that somewhere we're missing the type check on putting a value.
If that macroexpansion looks good, I'll find where we're missing the check on insert/update and maybe fix both put that as item # 26 on my list of small pending checkins when I muster the courage.