Part 1 left one question open: does the RLS timing oracle survive the network? Against a live Supabase PostgREST API it does. Paired requests cancel jitter, and the network path only sets the price in requests.
Postgres row-level security guarantees the result set, not the execution time. LEAKPROOF operators let the planner visit withheld rows before the policy runs, and range predicates turn that timing difference into a binary search. Auto-generated REST layers hand ordinary clients exactly those predicates.
Encryption secures the ciphertext. The schema answers questions the privacy contract never considered — sharing graphs, behavioral timelines, search-token frequency maps. How to read a database the way an attacker does.