The forward trace is the part everybody pictures when they imagine this system, and it is the easiest part to build and the easiest to overstate. Half of what it produces is observed and half is inferred, and a report that does not separate the two is worth less than one that reports less.
Key takeaways
Stock on hand is observed. Units sold from a batch is usually inferred.
First-in-first-out is the inference. Name it on the report.
A scanned batch at the till replaces the inference with a fact.
Overlapping batches on one shelf are normal and break clean arithmetic.
Report a range when you have one, not a midpoint.
Two questions, two kinds of answer
Fig 1. Three inputs, two answers, one of which is an estimate. Keeping them in separate boxes on the diagram is the same discipline as keeping them in separate columns on the report.
Compute
App integration
Machine learning
Analytics
Why first-in-first-out is only an assumption
The register knows two thousand one hundred and eighty units of the affected batches arrived between the fourth and the eleventh, and it knows how many units of that line sold each day since. It does not know that the units which sold on the twelfth were the ones that arrived on the fourth. It assumes it, because stock rotation is supposed to work that way and mostly does.
Mostly is the operative word. A case pushed to the back of a shelf, a second delivery stacked in front of the first, a site that received from two depots in the same week — each of these breaks the assumption in a direction the arithmetic cannot see. The result is not wrong so much as unfalsifiable, and the honest response is a range.
Where the guess disappears
Fig 2. Each step right replaces an inference with an observation, and the second step is the one that moves a recall from the whole line to a bounded window.
Machine learning
Security & identity
Analytics
Wholesale is easy and it matters most
If you sold cases on to another business, that transaction has a name, an address and an order number attached to it, and picking is usually done from a specific pallet. This is the one-step-forward half of the legal standard and it is the half that is genuinely achievable, because your customer is a company rather than a member of the public.
It also matters more, because those cases were broken down and sold again. One wholesale line in the affected batches can represent more end consumers than every direct sale you made that week, which is why the trace ranks by units rather than by lines.
What each row on the report has to carry
Observed or inferred. Never blend them into one count.
The basis. Scanned at till, picked from pallet, or FIFO estimate.
A range where there is one. Between 640 and 770 beats a confident 704.
Site and date. Because the quarantine is physical and somebody has to walk to it.
The query that produced it. Re-runnable, months later, unchanged.
Quarantine is a human action
The system marks sixty-one units as in scope at three sites. It does not move them, because it cannot, and a stock system that decrements a balance without anybody touching the shelf produces the worst possible outcome: a record saying the affected stock is isolated and a shelf on which it is still for sale.
So the quarantine list is a task with a person and a timestamp against it. Counted, moved, confirmed. The gap between the list being produced and the last site confirming is itself a number worth keeping, because it is the honest measure of how long you were still selling it.