In fact, on subsequent consideration, I'm inclining more strongly
towards SyntaxError, due to the difficulty of explaining the actual
semantics. Changing the PEP accordingly.
Your PEP, so your choice. I now think that if implemented, your PEP adds to the Python compiler (and also runtime?) tools for detecting and well-ordering Directed Acyclic Graphs (DAG).
Here's another problem. Suppose
def puzzle (*, a=>..., z>=...)
gives rise to a directed acyclic graph, and all the initialisation functions consume and use a value from a counter. The semantics of puzzle will now depend on the linearization you choose for the DAG.
(This consumption and use of the value from a counter could be internal to the initialisation function.)
--
Jonathan