Customer: I’m getting a result that could only occur if I did something stupid.
Me: did you do something stupid?
Customer: We’re testing your latest version and our workflow now throws an error in the event log instead of importing our data.
Me: Yes, in your old work flow you didn’t do X which would silently lead to data corruption. Now, instead, it noisily warns and stops working until you’ve done X.
Customer: Well it didn’t used to throw an error so could you change it back?
Customer: I’m getting an error saying I need to update my dependencies.
Me: have you tried updating your dependencies?
Customer: why would I want to do that?
Customer: We only want data from the involved companies
Me: But you… you haven’t involved any companies though?
Customer: The companies that would have been involved if we involved any companies.
Customer: Let’s schedule a meeting early next week to talk about this. We need to decide how to solve this before you put in any more work.
Me: *calling Monday the next week*
Secretary: Sorry, X is out of office for the next three weeks and said to just do everything as agreed.
Customer: The guy you promised that feature has quit, and his replacement has quit, and nobody else needs anything that even looks like that feature.
Me: That sounds good because we’ve found better ways to do it. We’ll cut the feature.
Customer: CUT the FEATURE? But you’ve promised to deliver it!
Customer: Oh, yeah, we have a ticket for that. Just do what the ticket says.
Me: The ticket’s name is “Deployment” and there’s no description or acceptance criteria or estimation.
Customer: Exactly! Should be easy as pie then!
In response, you should do fuck-all and close the ticket. If they complain, insist your solution had no failures on any acceptance criterias.
EDIT: Or ignore it. If people complain it hasn’t been done, tell them you won’t hear any complaints until you’ve used up more than the estimated time.