Files
gerador-proposta/docs/gerador-propostas/adr/ADR-004-file-security-limits.md
T
2026-10-03 00:00:45 -03:00

2.1 KiB

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.