Engineering · Stock · Reliability

One supplier said no, and five never heard

A kitchen sent its week of orders to six suppliers. The second one refused, and the four behind it were never contacted — with nothing on screen to say so.


A kitchen building a week of purchase orders sends them in one go. You pick what you need, you press the button once, and the order leaves for each supplier that has something on the list. Six suppliers, one press.

If the second supplier's order was refused — a bad email address, a price that no longer exists, anything — the loop stopped. Suppliers three to six were never contacted. The screen said what went wrong with supplier two. It did not say that four more had not been tried, because as far as the code was concerned there was nothing to report about them: nothing had happened.

What that looks like on a Monday

It looks like a delivery not arriving. Not immediately — three days later, when the kitchen that thought it had ordered its vegetables discovers it has not. The error message that appeared on the day was true, specific, and about a different supplier. Nobody reads an error about dairy and concludes that the greengrocer was skipped.

This is the worst shape a failure can take: a partial action that reports itself as a single failure. A total failure is obvious — nothing arrives, you try again. A clean partial is fine — you are told which ones worked. A partial that reports like a total is the one that costs you a service.

The fix, and the thing underneath it

Each supplier is now its own attempt. One refusal costs that supplier and nothing else, every order that can go does go, and the screen says both halves: what was sent, and what was not, by name. The confirmation and the warning appear together, because that is the truth of what happened.

We found this by applying a rule we had already written down for ourselves to the place we had not looked. We had spent a release making a shared helper keep every failure rather than throwing them away on the first one. Then we checked who was calling it — and found three callers that took the full list of failures it handed back and used only the first. The helper had been right for a week. The callers quietly undid it.

If you are ever told a batch action "failed", the question worth asking is how much of it failed. In our experience the answer is often some, and the software frequently does not know.


Try it on tonight’s service.

Nothing to install, no card. Not better by the weekend? Close the tab.