What do you swap when the shelf is short?
Seven staples, one Mumbai DMart, sixty-three mornings of Bhav's recorded shelf prices. Three of the seven were missing on 4 October — recorded out of stock, with a time — and the list still had to be bought. The page is that morning: a shelf you can re-plan by hand, a budget on a brass wire, and a receipt for every substitution it makes. Nothing is fetched and nothing is guessed: a missing price stays missing.

A gap is a record, not a blank
The tempting shortcut is to read a missing price as an empty shelf, and it is wrong twice: the page would claim a stockout nobody recorded, and it would hide the days when the archive simply did not look. The record carries three states and the page keeps them apart — IN_STOCK and OUT_OF_STOCK stamped with the count and the time of the look, NOT_OBSERVED as fog with no ticket and no claim. Across 29 SKUs and 63 days there are 1,825 recorded SKU-days, 161 of them out of stock, and not one NOT_LISTED. Two rows have no observation at all; the page names the one that falls inside the week's list.
The shelf is the input; the budget is the instrument
Every control is an object on the counter: a notched brass gate that sets how many of the seven lines the list will allow to change, a counterweight on a brass wire that carries the weekly budget, a mechanical till whose digits roll from the old total to the new one, and a receipt that prints the reasoning line by line. The plan is solved in the browser against the embedded archive, so the same seven packets are priced the same way on every morning, and moving the date re-observes the shelf rather than re-inventing it.
Four changes was the first complete basket, not the cheapest
On 4 October three recorded stockouts left ₹530 of shelf against a list worth ₹1,119. Three substitutions filled the gaps and cost ₹1,020 — complete, and ₹20 over budget. The fourth change filled no gap: it replaced a ₹246 tea with a ₹130 one and took the basket to ₹904. Allowing six changes only reaches ₹894, so the frontier is the finding, and the page says it: one more change saves ₹8, two save ₹10. What it will not do is call a day a stockout the record did not.