PriceObservation has zero mutation methods, enforced by a reflection
test. Fixed a real bug found while writing the EF config: Product ->
PriceObservation was wired Cascade (copy-paste), which would let
deleting a Product silently destroy its price history. Changed to
Restrict.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Retailer/StoreLocation per AGENTS.md §5.5. DEC-011: store tracking is
optional everywhere (nullable FKs), so recording a purchase never
requires picking a store first.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Brand, Product (aggregate root for ProductIdentifier), ProductIdentifier,
and HouseholdProductPreference, per AGENTS.md §5.2/5.3. Built ahead of
MVP-tagged epics per DEC-010 (explicit founder direction to work epics
in strict numeric order).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Add toggle/skip/delete with optimistic concurrency handling and jQuery
progressive enhancement (CW-STORY-03.4), then a mobile-first touch-target
and quick-add polish pass (CW-STORY-03.5).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>