Missed to ask: why do we allow fee < min fee? Probably because it’s not a security issue? Any reason to not assert fee == min fee?
Also, fee <= min fee or fee == min fee would fail if the transaction has a calculated fee (size * fee per byte) and it’s > min fee, how to handle that?