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
- Allowlist de MIME e extensão, com teto de tamanho, sem antivírus no MVP.
- Antivírus síncrono antes de persistir o arquivo.
- Abertura do arquivo só em sandbox, com timeout.
- 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.