Noob question: how does soft/offchain cancellation work?

I understand how hard/onchain cancellation works (atomics :-P), and I even understand the soft/offchain cancellation “race condition” where a solver just barely solves milliseconds before the cancellation can be processed… BUT what prevents a solver from just completely ignoring your cancellation request in the first place??? I mean you’ve already given them signed permission to execute the trade… and solvers have an incentive to ignore your cancellation request for: (1) more solver rewards (2) more liquidity to match against (3) more surplus capture)… and as we all know solvers/MEV will do anything they can to get more profits (such as overbidding). Do soft cancellations really just rely on the good graces of solvers to not execute the trade? I don’t see how that would ever work (I guess that’s what onchain cancellation is for…)