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)

(MULTIPLE-VALUE-BIND (#:VALUE2693 #:FOUNDP2694)
    (SB-C::GET-INFO-VALUE SYM 13)
  (DECLARE (TYPE (MEMBER :SPECIAL :CONSTANT :MACRO :GLOBAL :ALIEN :UNKNOWN) #:VALUE2693))
  (VALUES #:VALUE2693 #:FOUNDP2694))

It should be instead:

(MULTIPLE-VALUE-BIND (#:VALUE2693 #:FOUNDP2694)
    (SB-C::GET-INFO-VALUE SYM 13)
  (VALUES (TRULY-THE (MEMBER :SPECIAL :CONSTANT :MACRO :GLOBAL :ALIEN :UNKNOWN) #:VALUE2693) #:FOUNDP2694))

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.

Doug