Overview
Public-facing user profiles. The RS user table holds auth-bearing
data we never expose; user_profiles holds the
display-layer fields (display_name, bio, avatar_url, social_links).
Reads merge both tables and substitute defaults when no profile
row exists. Federation: the profile is the unit that gets
mirrored to peer sites.