···55- Local filesystem under `aldi/` (ALDI cache)
66- Local filesystem under `albertsons/` (Albertsons-family cache)
77- Local filesystem under `publix/` (Publix cache)
88+- Local filesystem under `wegmans/` (Wegmans cache)
89- Local filesystem under `heb/` (HEB cache)
910- Local filesystem under `publix/` (Publix cache)
1011- Local filesystem under `wholefoods/` (Whole Foods cache)
···1415- Azure Blob container `aldi` (ALDI cache when `AZURE_STORAGE_ACCOUNT_NAME` is set)
1516- Azure Blob container `albertsons` (Albertsons-family cache when `AZURE_STORAGE_ACCOUNT_NAME` is set)
1617- Azure Blob container `publix` (Publix cache when `AZURE_STORAGE_ACCOUNT_NAME` is set)
1818+- Azure Blob container `wegmans` (Wegmans cache when `AZURE_STORAGE_ACCOUNT_NAME` is set)
1719- Azure Blob container `heb` (HEB cache when `AZURE_STORAGE_ACCOUNT_NAME` is set)
1820- Azure Blob container `publix` (Publix cache when `AZURE_STORAGE_ACCOUNT_NAME` is set)
1921- Azure Blob container `wholefoods` (Whole Foods cache when `AZURE_STORAGE_ACCOUNT_NAME` is set)
···4446| `publix/stores/` | JSON `publix.StoreSummary` keyed by numeric Publix store ID | `cmd/publix` and `internal/publix` cache helpers | `internal/publix` location backend |
4547| `publix/store_url_map.json` | JSON object mapping numeric Publix store ID to canonical location URL | `cmd/publix` and `internal/publix` cache helpers | `cmd/publix` incremental sync |
4648| `publix/missing_store_ids.json` | JSON array of numeric Publix store IDs known to redirect back to `/locations` | `cmd/publix` and `internal/publix` cache helpers | `cmd/publix` incremental sync |
4949+| `wegmans/stores/` | JSON `wegmans.StoreSummary` keyed by numeric Wegmans store ID | `cmd/wegmans` and `internal/wegmans` cache helpers | `internal/wegmans` location backend |
4750| `wholefoods/stores/` | JSON `wholefoods.StoreSummaryResponse` keyed by Whole Foods store ID | `cmd/wholefoods` and `internal/wholefoods` cache helpers | `internal/wholefoods` location backend |
4851| `wholefoods/store_url_map.json` | JSON object mapping store URL to Whole Foods store ID | `cmd/wholefoods` and `internal/wholefoods` cache helpers | `cmd/wholefoods` when `-stores` is not provided |
4952···5356- Most app caches use the default cache created via `cache.MakeCache()` / `cache.EnsureCache("recipes")`.
5457- ALDI locations use a separate cache created via `cache.EnsureCache("aldi")`.
5558- Albertsons-family locations use a separate cache created via `cache.EnsureCache("albertsons")`.
5959+- Wegmans locations use a separate cache created via `cache.EnsureCache("wegmans")`.
5660- HEB locations use a separate cache created via `cache.EnsureCache("heb")`.
5761- Publix uses a separate cache created via `cache.EnsureCache("publix")`; it does not share the `recipes` container/directory.
5862- Recipe images use a separate cache created via `cache.EnsureCache("recipe-images")`; they do not share the main `recipes` container/directory.
5963- Whole Foods uses a separate cache created via `cache.EnsureCache("wholefoods")`; it does not share the `recipes` container/directory.
6060-- Local cache paths are `recipes/` for most app data, `recipe-images/` for recipe images, `aldi/` for ALDI data, `albertsons/` for Albertsons-family data, `heb/` for HEB data, `publix/` for Publix data, and `wholefoods/` for Whole Foods data when filesystem backend is used.
6464+- Local cache paths when filesystem backend is used. are
6565+ - `recipes/` for most app data,
6666+ - `recipe-images/` for recipe images,
6767+ - `aldi/` for ALDI data,
6868+ - `albertsons/` for Albertsons-family data,
6969+ - `heb/` for HEB data,
7070+ - `publix/` for Publix data,
7171+ - `wegmans/` for Wegmans data
7272+ - `wholefoods/` for Whole Foods data
6173- Blob names in Azure match the same key strings listed above inside their respective containers.
6274- Staple `ingredients/` cache keys derive from location ID, date, and a versioned backend staple signature (for example `kroger-staples-v1` or `wholefoods-staples-v1`), so Kroger and Whole Foods locations do not share staple caches and staple-definition changes can invalidate caches intentionally.
6375- Recipe image cache keys are stable per recipe hash, so prompt or model changes do not orphan previously generated images.