CLHS for System Class FUNCTION says "Thus, an ftype declaration for a function describes calls to the function, not the actual definition of the function."
Earlier in the same page, it says "The list form of the function type-specifier can be used only for declaration and not for discrimination."
On the whole, the MOST that I would expect here is an error that (128) is not of type STRING, signaled from FOO, and that's more a matter of not intrinsically believing FTYPE declarations than (SETF FDEFINITION) or (SETF SYMBOL-FUNCTION) not being typesafe.
CLHS for System Class FUNCTION says "Thus, an ftype declaration for a function describes calls to the function, not the actual definition of the function."
Earlier in the same page, it says "The list form of the function type-specifier can be used only for declaration and not for discrimination."
On the whole, the MOST that I would expect here is an error that (128) is not of type STRING, signaled from FOO, and that's more a matter of not intrinsically believing FTYPE declarations than (SETF FDEFINITION) or (SETF SYMBOL-FUNCTION) not being typesafe.