My read of the spec is that either
behaviour is allowable.
The two behaviors are so different that I have a hard time accepting this.
The issue is not the degree of behavior difference, the issue is the degree to which the language of the spec constrains an implementor.
Did Peter miss this, or am I missing something completely (I am just a simple application programmer): "The slot default init forms are evaluated in the lexical environment in which the defstruct form itself appears and in the dynamic environment in which the call to the constructor function appears.