# CDN / borda Multi-CDN

| Campo | Valor |
|---|---|
| **Prioridade** | Médio |
| **Status** | Aberto |
| **Origem** | `pesquisa-infra-cdn/` (Fase 1) + `v6-hardening` (A2/A3/A4) |
| **ADR provável** | ADR própria (borda) |
| **Relaciona** | ADR-022, plano 18, ADR-020 |

## Objetivo

Avaliar a contratação/ativação de **borda Multi-CDN** para cachear HTML/assets, failover
geográfico e purge. O `v6-hardening` provou que **todo o lado da origem** já pode ser otimizado
(FPC, ETag/304, `Vary` limpo, assets imutáveis) — a borda é o **único salto externo restante**
(`cache_hit` era 0 sem CDN).

## Escopo (o que fazer)

- [ ] Decidir se a borda é necessária (o v7 é single-container; medir primeiro o ganho de origem).
- [ ] Cache de HTML/assets + origin shield + WAF/TLS idênticos; chave de cache normalizada
      (`utm_*`/`gclid`/`fbclid` ignorados).
- [ ] Failover geográfico (health checks) e **purge síncrono** multi-provedor.
- [ ] Monitoramento/RUM e medição A1–A4 (harness de 24 indicadores).
- [ ] Coabitação com CSP: a borda **nunca** deve servir HTML com nonce fixo (ADR-022).

## Fora de escopo

- Reescrever a aplicação para a borda (deve funcionar sem CDN — degradação graciosa).

## Dependências

- ADR-022 (HTML cacheável) e plano 18 (origem otimizada) concluídos antes.
- Decisão comercial (contratação).

## Critérios de promoção (backlog → ADR/plano)

- [ ] `kd write` + ADR (provedor, cache, purge, CSP) + plano.
- [ ] Atualizar `00-index`/`AGENTS.md`; remover este item.

## Notas

- Sem CDN, o v7 já é rápido (Laravel 12 + `optimize` + Valkey + assets imutáveis). A borda é
  **otimização de alcance geográfico**, não requisito de correção.
