A problem I see with your suggested use of scoped SPECIAL proclamations is
that it works with "compiled" code and not "interpreted" code. In our
interpreter, at least, a variable is only considered globally special when
there is a global special declaration currently in effect.
Given that the language currently doesn't address the issue of
compiler/interpreter differences, it seems dangerous to implicitly mandate
a clear compiler/interpreter incompatibility.
I believe that it isn't feasible to define different compiler and
interpreter semantics. This means that "portable Common Lisp" must
restrict itself to constructs that work both in compiled and interpreted
code. Either the interpreter must do preprocessing to maintain the
"compiler" semantics, or compiled code must be constrained to do things
that work in the interpreter.
Rob