# Inspeção Speed Live — escopo mínimo para aprovação

## Não instalado; sem autorização ou conexão

### Por que manter GET /api/users

Não descobre o filtro. É a evidência de autenticação protegida exigida pela sessão reutilizada: `createPanelSession.login` só termina após validar o JSON conhecido, sem entregar registros no relatório. HTTP 200/JSON redirect no login ou HTML de `/users/manage` não comprovam, por si, sessão autenticada. Remover essa chamada exigiria trocar o contrato de autenticação e comprovar outra evidência protegida; nenhuma está disponível. Mantê-la evita reconstruir login ou aceitar HTML como prova. Somente primeira página, sem paginação, cadastro ou contagem.

### Proteções e limitação real

- Destino literal fixo `https://speedlivem.painelr.top`; nenhum URL, host, porta, IP, query ou caminho arbitrário recebido do navegador.
- Consumo confere servidor cadastrado, origem exata, ADMIN, preview hospedado e impressão das credenciais AES-GCM atuais antes da rede.
- Ordem fechada: GET `/login`, POST `/login`, GET `/api/users`, GET `/users/manage`. POST exclusivamente login. Nenhuma submissão de filtro ou leitura de scripts externos.
- HTTPS com TLS nativo; `redirect: manual`, HTTP 200 obrigatório; qualquer 3xx ou resposta já redirecionada interrompe sem seguir o destino ou repetir.
- Cookies efêmeros privados; sem HTML/JS/valores pessoais no relatório; análise DOM inerte sem executar scripts.
- Cinco MB acumulados, dez segundos por pedido incluindo corpo, 45 segundos totais e nunca além da expiração original.
- **Não há resolução pública validada nem fixação do IP conectado neste executor.** A checagem de IPs públicos do módulo universal não é chamada por este fluxo. Origem fixa e TLS reduzem exposição, mas NÃO garantem prevenção completa de SSRF/DNS rebinding. A inspeção restrita requer aceitação explícita desse risco residual; universal continua desabilitado.

### Mudanças exatas previstas após aprovação de instalação

1. Consolidar o SQL local preparado contra as definições atuais: finalidade `speed_live_filter_inspection`; readiness/consumo exclusivos; auditoria fechada e encerramento transacional privados. Preservar históricos e não inserir autorizações na migração.
2. Isolamento local corrigido: readiness/consumo nativos por finalidade; trigger de ciclo de vida impede encerramento genérico sem relatório privado, mudança de finalidade/identidade e reutilização. Trigger sobre consumo das sondagens existentes obtém a mesma trava do servidor e rejeita execução enquanto uma tentativa Speed Live estiver pendente; no sentido inverso, o consumo da inspeção mantém a verificação existente das sondagens. Não substitui seus contratos de autenticação, vínculo ou importação; FLOW permanece intacta.
3. Revalidar ACLs, locks e esquema atual antes de aplicar uma única migração; o SQL de revisão existente ainda não é um pacote aprovado para instalação direta.
4. Criar adaptador servidor para readiness/consume/finish privilegiados; nunca retornar reserva, ciphertext ou identificador de autorização ao navegador. Falha/retorno falso no finish conserva bloqueio e informa auditoria indisponível.
5. Adicionar duas funções autenticadas: verificar autorização (sem conceder/consumir) e executar inspeção após confirmação. Ambas revalidam ADMIN e ambiente hospedado exato; sem endpoint público ou parâmetro de destino.
6. Acrescentar controle separado em Integrações, exclusivo ADMIN, com confirmação manual e relatório sanitizado. Não reutilizar ação de importação nem tornar FILTRAR/cadastro operantes nesta etapa.

### Autorização posterior — separada da instalação

- Uma única concessão privilegiada, vinculada ao ADMIN proprietário autenticado, `painelfoda-reference`/Speed Live, origem fixa, preview `https://id-preview--c65ba1a8-a777-44c6-a277-b5b4bfc21f87.lovable.app`, finalidade específica, versão do executor e SHA-256 das credenciais criptografadas atuais.
- Validade máxima cinco minutos desde criação; consumo durável atômico antes do primeiro pedido; bloqueio de simultaneidade e de reutilização após erro, timeout ou reinício.
- Execução somente pelo clique manual confirmado. Sem renovação, repetição automática, cadastro, cobranças ou submissão de filtro.
- Aprovação de instalação não concede essa autorização nem aceita automaticamente o risco residual DNS.

### Resultado esperado e bloqueios

O núcleo atual identifica apenas contratos HTML declarados de vocabulário fechado. Outros nomes/caminhos e scripts retornam desconhecido/pendência, sem exposição de valores. Ele ainda não analisa handlers JavaScript nem comprova filtro remoto, correspondência exata ou árvore MASTER. Se a página depender de scripts, será necessária preparação específica posterior, não leitura automática de recursos.

Nenhum teste repetido, migração aplicada, autorização gerada, conexão ou publicação nesta revisão.

## Correção local dos dois bloqueios — 21/10/2026

- Auditoria própria: evento `consumed` no mesmo commit do consumo, eventos `success`/`failure` e `closed` no mesmo commit do relatório e encerramento. Somente ID interno, categorias fechadas e horário do banco; relatório estrutural fechado existente continua sem credenciais/cookies/tokens/HTML.
- Falha na gravação impede o commit; uma falha no encerramento conserva consumo pendente e bloqueio. Nenhuma renovação/desbloqueio automático. Relatório inválido ou campo desconhecido é rejeitado.
- Permissões de escrita direta retiradas, RLS sem acesso do navegador; funções e triggers privilegiados, sem endpoint novo ou concessões.
- Dois casos SQL mínimos aprovados em PGlite isolado (sucesso/falha), incluindo bypass do encerramento genérico, troca de finalidade, sobreposição nos dois sentidos, retorno das sondagens após encerramento, rollback por falha de auditoria e leitura negada ao navegador. Os cinco testes anteriores de transporte/parser não foram repetidos.
- SQL consolidado para revisão em `tools/speed-live-filter-inspection/install.sql`, gerado do módulo canônico; **não aplicado**. Antes de aplicação autorizada, conferir definições/ACLs atuais e inexistência de mudanças divergentes; não inferir estado hospedado a partir dos testes locais.
- Não mudou o transporte: proteções de origem fixa/HTTPS/redirects/limites permanecem; ausência de validação e fixação DNS permanece uma limitação, não um risco aceito. Como o proprietário não aceita riscos adicionais, não ligar `fetch` real nem declarar inspeção totalmente segura sem resolver essa garantia ou obter decisão explícita futura compatível com os requisitos.
- Ainda faltam aprovação de instalação, ligação manual protegida ADMIN, comprovação de proteção de destino efetivamente conectado e, separadamente, uma autorização específica de uso único de até cinco minutos. Inspeção não autoriza filtro/cadastro ou análise automática de scripts.