- Added `users`, `households`, and `household_memberships` tables with OIDC identity key (`oidc_issuer`, `oidc_subject`) and one-household-per-user enforced via unique `household_memberships.user_id`. - Added `is_household_shared` to `product_inventory` with default `False` so sharing remains per-row opt-in. - Migration enforces ownership in two phases: nullable + backfill to bootstrap admin, then non-null constraints on all owned tables. - Correction: migration 4b7d2e9f1c3a applies a two-step ownership rollout (nullable user_id, bootstrap+backfill, then NOT NULL on owned tables). - Centralized tenant authorization in `innercontext/api/authz.py` and exposed wrappers in `api/utils.py` so routers can move from global `get_or_404` to scoped helpers.