The registry overwrites the generator verdict with INVALID + SwapGuardRestricted.selector when the swap guard blocks an order. This destroys the true verdict and makes INVALID non-uniform: terminal from handlers, owner-reversible from the guard — consumers need a hardcoded selector branch for control flow.
Make it structural: PollResult gains a registry-level Restriction restriction overlay (NONE | SWAP_GUARD), the generator verdict is never overwritten (a guarded POST stays visible, signature withheld), and INVALID becomes uniformly terminal as an invariant. Unpark is event-driven via the existing SwapGuardSet (clear = address(0)).
The registry overwrites the generator verdict with
INVALID+SwapGuardRestricted.selectorwhen the swap guard blocks an order. This destroys the true verdict and makesINVALIDnon-uniform: terminal from handlers, owner-reversible from the guard — consumers need a hardcoded selector branch for control flow.Make it structural:
PollResultgains a registry-levelRestriction restrictionoverlay (NONE | SWAP_GUARD), the generator verdict is never overwritten (a guardedPOSTstays visible, signature withheld), andINVALIDbecomes uniformly terminal as an invariant. Unpark is event-driven via the existingSwapGuardSet(clear =address(0)).