Tenant isolation
- Every workspace is a tenant. The GraphQL layer (Hasura) filters every row by the tenant in your signed session.
- Postgres row-level security enforces the same boundary a second time, underneath.
- Both layers run in CI against real databases with tokens for different tenants and roles.