A specification that must be violated in order to ensure interoperability
is, in my opinion, broken. So is a specification which suggests to
implementors to do the wrong thing, particularly when those implementors
include Nathaniel and me.
I fear that I have to, somewhat reluctantly, agree with Mark on this
one. I would add one thing, to avoid getting into quibbles about
"violated" (which, as others have pointed out, if arguable). The
robustness doctrine is all very good and well, but a specification that
requires significant liberality on the part of the receiver in order to
ensure interoperability is broken, or, if not broken, at least an
accident waiting to happen.