# Revisão final contra o escopo V3 | Requisito | Status | Evidência | | --- | --- | --- | | Sem login, senha ou token próprio | OK | `src/server/auth`, ausência de tabela de senha | | Sessão Supabase e cookie de workspace | OK | `context.ts`, middleware | | Flag de módulo, padrão desligado | OK | `workspace_module_flags`, página de módulo desligado | | RLS e papéis | OK | `0003_rls.sql`, testes de RLS e jornada | | 10 modelos, nome único, soft delete provisório | OK | triggers, unique index, `status` | | XLSX/CSV, 10 MB, 50k, 10 fontes | OK | domínio + testes; 50k no caminho CSV | | Uma aba e linha de cabeçalho | OK | jornada e `updateSource` | | Mapeamento 1:1, obrigatórias, select e drag | OK | domínio, UI e testes | | Prévia antes de processar | OK | `previewSource` e passo da jornada | | Lock, idempotência, Redis obrigatório em produção | OK | coordinator e teste de indisponibilidade | | Modelo imutável | OK | SHA-256 e comparação de bytes na jornada | | Temporários e limpeza | OK | `cleanupExpired`; TTL de produto aberto | | Exclusão só owner/admin e bloqueio com job ativo | OK | jornada | | Auditoria sem células | OK | scrub e teste do token `=CMD()` | | Sentry sem planilha | OK | `beforeSend` e teste de scrub | | Saída XLSX, CSV e PDF | OK | jornada gera os três | | UI com tokens V3, Manrope, Lucide | PARCIAL | Componentes locais no token do escopo; biblioteca oficial do Elo Pro não estava no repo | | Acessibilidade básica | PARCIAL | Select, switch, dialog e foco visível cobertos; não houve auditoria WCAG formal | | E2E no browser do Elo Pro | PARCIAL | Jornada de API completa; browser do ecossistema inexistente aqui | | Performance 10 MB / 50k XLSX / 10 fontes paralelas | PARCIAL | 50k CSV e rejeição de arquivo acima de 10 MB; ExcelJS de 50k linhas não medido | | Job runner de produção | DECISÃO ABERTA | Worker no mesmo código; fila externa não escolhida | | Storage de produção | DECISÃO ABERTA | Interface pronta; local só fora de produção | | TTL, biblioteca XLSX, soft delete, SSO entre hosts | DECISÃO ABERTA | ADRs | ## Bloqueios de release para o piloto no ecossistema 1. Apontar `DATABASE_URL` do Postgres Elo Pro e não aplicar o shim de identidade se as tabelas já existirem com outro formato. 2. Aprovar bucket privado e preencher as envs de storage. 3. Definir TTL numérico em `SPREADSHEET_TEMP_TTL_SECONDS`. 4. Rodar `ADAPTER_JOB_MODE=worker` com Redis, não o modo inline, no ambiente de piloto. 5. Confirmar a biblioteca ExcelJS (MIT, provisória) ou trocar o codec em `src/infra/spreadsheet/parse.ts`. 6. Ligar a flag só no workspace piloto. ## Riscos residuais PDF truncado de propósito. Formatação do modelo não é reaproveitada. Conexão de serviço ignora RLS. Lock em memória não atravessa várias instâncias. ## Checklist de release - [x] Suíte Vitest, typecheck, lint e build de produção locais - [ ] Smoke no staging com Supabase, Redis e bucket reais - [ ] Smoke no staging com Supabase, Redis e bucket reais - [ ] Flag desligada para quem não é piloto - [ ] Sentry com DSN, sem anexo de arquivo