My application has 3 shipping methods, the cheapest of which is free. The free shipping option is only available for orders totaling over $100.
As soon as I built it, I thought of a way a user could easily circumvent this. Add items to the cart totaling over $100, then select your free shipping, then edit your cart to be less then $100 and maintain the free shipping.
I fixed my application to not allow this. I started wondering though, what do you call this sort of design flaw? I know you can call it a bug, but is there a better description that I can use so that someone will understand what I am talking about?
Internally, we call it a Z-Axis error or temporal error -- basically forgetting to account that states change over time or another dimension so you need to revalidate certain things and otherwise guard against it.
It's a sequencing or timing bug. As originally written, you checked the total at one of the time-points you needed to check (when first summarizing the order) but not all of them (after every edit or just before the final confirmation.) In addition to the bug you imagined, there could also be one where I order $99 of stuff, realize how much I have to pay for shipping, and then add something to my cart to get over the $100 mark, but the shipping doesn't become free, making me unhappy and possibly abandoning the order.
If you wanted to show off you could tell someone you "misidentified the invariants" for the problem.