Introduce persistence::open_all so domain stores (invitation, targeted, blocked) are constructed once. Extract TargetedTransferStore and own it on CoreInner; soft-close raw pool access for new callers. Co-authored-by: Cursor <cursoragent@cursor.com>