- table: userwallets
Третий уровень учёта (L3): пользовательские балансы на USER_SHARED-кошельках (ADR-002, ADR-010). Scope = coopname, payer = coopname (NFR11).
Запись существует только пока available + blocked > 0 (auto-create при первом ISSUE/TRANSFER/UNBLOCK на пару (wallet_name, username), auto-delete при обнулении). L3 разрешён только для kind == USER_SHARED — гарантируется walletop-логикой и реестром LEDGER2_WALLET_REGISTRY.
Инвариант (Story 3.2 / Эпик 3): Σ L3.available по wallet_name == L2.available для этого wallet_name; то же для blocked. Контрактный assert в walletop post-mutation; нарушение откатывает всю tx.