# ADR-004 — Limites e segurança de arquivo - Status: Proposed - Data: 2026-10-02 - Pendência: P-006 - Decisão: nenhuma ## Contexto O upload do modelo aceita PDF, PPTX e DOCX. A especificação deixa abertos tamanho máximo, antivírus, sandbox e o que fazer com extração parcial. P-012 também deixa abertas as metas numéricas de tempo e tamanho. Este ADR não preenche nenhum desses números. ## Alternativas 1. Allowlist de MIME e extensão, com teto de tamanho, sem antivírus no MVP. 2. Antivírus síncrono antes de persistir o arquivo. 3. Abertura do arquivo só em sandbox, com timeout. 4. Rejeitar qualquer extração parcial. A alternativa simétrica, aceitar documento parcial, também fica registrada e não foi escolhida. Nenhuma combinação foi aprovada. Não há valor padrão de megabytes, timeout ou lista de assinaturas. ## Critérios para sair de Proposed - Tamanho máximo por arquivo e por workspace, ou a decisão explícita de não ter teto. - Varredura: obrigatória, adiada ou dispensada no MVP, com o risco aceito. - Onde o arquivo é aberto e o que acontece se o conversor não terminar. - Extração parcial: rejeita o upload ou segue com o que foi lido. Isso altera o rascunho de modelo e precisa estar explícito. - Falha de política não cria rascunho de modelo nem dispara o motor do ADR-002. ## Impacto no código desta fase `FileSecurityPolicy` só tem `unapproved` ou `approved` com uma referência de decisão. Não há campos `maxBytes` nem `timeoutMs`. A ingestão bloqueia em P-006 enquanto a política estiver `unapproved`. ## Impacto no prompt 02 Pode existir referência de storage privado para o arquivo de origem. Não criar check de tamanho, coluna de status de antivírus com fornecedor escolhido, nem job de varredura. Signed URL e bucket entram quando o fluxo de upload existir, com isolamento por workspace. ## Relação com os outros ADRs P-010 escolhe como ler o arquivo. P-006 escolhe se ele pode ser aceito. Os dois precisam estar Approved antes do upload real do prompt 06. O checklist humano pede essa revisão antes do Pacote B.