[draft] Auth — под капотом

Заглушка. Содержание будет наполняться постепенно.

Серверные actions используют admin-client + явный ownership-check вместо сложных RLS-выражений на write — это контракт из AGENTS.md. RLS включён на всех таблицах как страховка от программных ошибок. requireAuth() в lib/auth.ts бросает redirect на /login. getMembership(campaignId) возвращает роль или null. Spec-006 миграции 024, 027–028, 031 — auth infra.

Что планируется в статье

  • Server-action auth contract (формула из AGENTS.md)
  • RLS как страховка: что проверяет, что нет
  • requireAuth / getMembership — контракт и use-cases
  • Membership table: схема, индексы, FK
  • Onboarding migrations и что они сидят