The gate blocked a venue over work that did not exist
Our go-live worklist counted a hidden dish and a box of gloves as menu items, raised three blocking jobs over them, and held a venue back from trading.
When a venue signs up with us, a readiness screen lists what stands between it and taking money: something on the menu, a description and an allergen answer on every dish, a price on everything that can be sold. Some of those jobs block trading and some are merely important. The screen is a gate, and a gate is only as honest as the thing it counts.
It counted menu items with its own copy of the menu rule. Three copies, in fact, in one file, and all three had drifted the same way. None of them asked whether the item was shown to guests, whether it was a real product rather than a prep component, or whether it had a price. So a venue with one real dish, one deliberately hidden dish and a box of nitrile gloves on its purchasing list read as a venue with three menu items.
Jobs you can follow to the end and never finish
We seeded exactly that venue and asked the gate. A guest could order one thing. The worklist said three. It then raised three blocking jobs over the two that are not on the menu: write a description, answer the allergens, set a price. Each one linked to the menu screen, where neither row appears, because the menu screen asks the real rule. An operator could work that list to the bottom and never clear it, and the venue sat at blocked over work that does not exist.
The inverse is worse. Delete the one real dish and the venue has nothing a guest can order. The first and most blocking check of all, nothing can be sold until there is something on the menu, vanished from the list entirely, because the count was still two. The one step that matters most in onboarding ticked itself off on the strength of a hidden stew and a box of gloves.
On the live estate this was not hypothetical. Thirteen rows across three trading venues were being counted that way: twelve hidden, one with no product behind it, nearly all of them with no description and none with an allergen answer. That is up to twelve phantom description jobs and thirteen phantom allergen jobs sitting on real worklists, each pointing at a screen where the row cannot be found.
The fix is an import, not a sixth copy
The menu rule already exists as one function, and its own comment is a casualty list of the hand-written copies that drifted before this: a photo plan that counted six dishes where the photo screen showed four, a hall listing that told guests a kitchen had 169 items when the menu they opened had 69, a hundred supplier purchasing lines offered to guests at nothing each. The gate now asks that function. We split it so the price test can be left off for the one check that is specifically about missing prices, and derived the other variants from the same statement, so there is nothing left to drift.
The missing-price check kept firing, and its count on the live estate went from eleven to zero. That is correct rather than lost coverage. All eleven were hidden or had no product, so not one of them could ring through a till as free, and the check's stated reason, they will ring through the till as free, was false for every one. It still fires for the shape it was written for: a visible dish with a product behind it and no price, which the till really does accept.
The test that found the two copies I had not
We added a test that reads the gate's source and refuses to find the rule restated by hand. It was written for the first copy and failed immediately on two more further down the same file, which is how they were found. The rest of the tests are controls, because a guard that counted nothing would pass every other assertion and quietly switch the worklist off: a live dish with no description still raises a blocking job; a dish whose only ingredient is free is still flagged as uncosted; a venue with no recipes at all answers zero rather than nothing; and a box of gloves is not counted as a dish waiting for a price, because with no product behind it, it is not being withheld from anyone.
If your software's checklist tells you to do work you cannot find, the counter is wrong, not you. Ask who wrote the rule it counts by, and whether that rule is the same one the menu screen uses. Ours was not, three times, in one file.