Why `upto`, not `exact`
The `exact` scheme requires the buyer to know the price in advance. We don’t — duration is whatever the call ends up being. With `upto`, the buyer signs a "I’ll spend at most $5" witness; the proxy contract enforces `amount <= permitted.amount` on-chain via `AmountExceedsPermitted`. Unspent allowance never moves; the chain doesn’t care that we asked for less than we authorized.