Permet aux contributeurs confirmés d'inviter de nouvelles personnes par email. L'invité reçoit un lien, choisit son mot de passe, et son compte est créé avec la moitié de la réputation de l'inviteur. L'inviteur reçoit +50 pts.
Domain : entité Invitation (Effect Schema), use cases inviteUser et acceptInvitation, permissions invite_user, ContributorRepository et InvitationRepository, extraction de DatabaseError dans errors.ts.
Infra : repositories Supabase, migration table invitations avec index unique partiel, RPC get_user_id_by_email, template email personnalisé.
UI : page /inviter avec formulaire, page /accepter-invitation avec choix de mot de passe (token consommé uniquement à la soumission), lien Inviter dans AuthSection, NoticeBanner pour les redirections avec message.
Correctifs issus de la revue de code : rollback de l'invitation si l'envoi d'email échoue, try/catch + Sentry dans inviteUserAction, ignoreDuplicates dans le callback auth pour ne pas écraser la réputation, exclusion de .direnv dans vitest.