In BIP62, it was proposed to make a script invalid if there was more than one element left in the stack after execution. This proposal was eventually withdrawn.
From what I read, some people have suggested that this rule could eventually be enforced in the future. But the problem is that I think this would make segwit outputs non-valid with legacy nodes?
Take a P2TR for example. To a legacy node, the locking script of a P2TR output is seen as two non-zero data pushes. Together with the unlocking script (an empty byte array), this would leave the stack with two non-zero data pushes after execution, so a P2TR transaction would be rejected by legacy nodes.
Am I missing something?











