The lowest price in 30 days is a history query, not a column
EU rules say a discount must show the lowest price the product had in the previous thirty days. Most stores bolt on a price-history table after the first complaint, and the table starts empty on the day it's created.
If prices live in hoody-sqlite's KV store, every PUT to price:sku-4471 is already an operation in the log. GET /api/v1/sqlite/kv/price:sku-4471/history?db=catalog.db&limit=1000 returns each change with its timestamp and value. The product page filters to the last thirty days and takes the minimum. The flash-sale price and its revert are two more PUTs in the same log, so the "was" figure is never a number a marketer typed into a field.
The disclosure needed no migration and no backfill. The storage had been keeping it since the first write.
The prior price isn't a column you remembered to add; it's the storage's own memory.