Captura de UTMs agora roda server-side no root loader (app/root.tsx). Antes, a captura era apenas client-side em useEffect — UTMs se perdiam quando um loader fazia redirect(...) antes do hydrate. Ex: landing /?utm_source=X&ref=AFIL1 que dispara redirect para /register agora preserva os parâmetros via Set-Cookie na própria response do redirect. Resolve o report "Rastreamento perde-se após o login/redirecionamento".
Política de atribuição alinhada com legado: last-touch. Cada nova URL com UTM sobrescreve o cookie anterior, igual ao middleware global do Nuxt antigo. A versão anterior (first-touch) divergia silenciosamente da atribuição calibrada nos dashboards de BI.
Captura também re-executa em toda navegação SPA via useLocation() no TrackingCapture — antes corria só 1x no mount.
Deposit (POST /wallet/add-credit): removido o campo src do body em buildDepositPayload. Nenhum dos quatro projetos legado (base, 7k-bet-br, cassino-bet-br, vera-bet-br) jamais enviou src no deposit — só no signup. Manter paridade evita surpresas em dashboards de BI.
Signup (POST /bff/register-simplified / POST /auth/register): payload continua enviando utm_source, utm_campaign, utm_content, utm_medium, src, ga_client_id, app_source, affiliation_code — já era assim antes, agora com cobertura de testes end-to-end (FormData → action → body do POST).
X-ORIGIN-ACCESS agora é derivado do User-Agent no api.server.ts (mobile vs desktop). Antes, todo request server enviava Desktop fixo; agora bate com a segmentação de device do BI legado.
X-LOG-INFO já era enviado em todo request, mas a documentação do SDK descrevia o formato errado ({tenant, version, locale, isAuth, originAccess}) — corrigido para o formato real 1-{timestamp}-{buildId}.
Nova doc docs-internal/architecture/marketing-tracking.md cobrindo captura em 3 camadas, política last-touch, parâmetros e aliases, sanitização, storage (cookie_tracking + cookie_referrer), payloads finais por endpoint, headers automáticos, feature flag keepTrackingParamsInUrl e checklist anti-padrões.
sdk/api-client.md atualizado: tabela de headers automáticos completa (X-ORIGIN-REFERRER family); tipo ReferrerInfo corrigido (era declarado com campos UTM fictícios); tipo RequestDebugInfo corrigido (estava descrevendo um shape inexistente).
sdk/auth.md: RegisterSimplifiedPayload agora documenta os campos de tracking (utm_*, src, ga_client_id).
sdk/payments.md: shape completo do DepositPayload documentado, incluindo a regra "NÃO enviar src" como callout reforçado por teste automatizado.
Suite nova app/utils/__tests__/tracking.test.ts (15 casos): parser de URL com todos os aliases, sanitização, merge last-touch, casos edge.
Suite nova app/utils/__tests__/tracking.server.test.ts (9 casos): captura server-side, Set-Cookie serialization, strip de URL pela feature flag.
Suite nova app/modules/register/__tests__/flow.tracking.test.ts (4 casos): valida o pipeline FormData → parseRegisterFormData → buildRegisterPayload ponta-a-ponta — garante que o que o browser submete chega ao body do POST que vai pro BFF.
packages/payments/src/__tests__/transform.test.ts: novo caso confirma que src não sai no deposit.