- RequireAuth: use setTimeout to defer clientReady=true until after hydration completes, preventing SSR/client mismatch - dashboard.tsx: add SSR guard to return empty div on server - playwright tests for dashboard role verification