Tenancy & data isolation
Row-Level Security (RLS) on every table across every tenant schema. RLS policies match organization_id against the caller's JWT claim via current_user_org_id(); on routes that run under the restricted database role, cross-tenant reads and writes are blocked by the database itself, and every server-side query is additionally filtered by organization_id β verified by an org-scoping CI lint across every tenant schema. The browser anon-key client returns zero rows from every multi-tenant schema. New tables require RLS in the same migration (CI guardrail).
PROOF βJWT-backed RLS via current_user_org_id() Β· anon SELECT revoked Β· org-scoping CI lint