Parte do épico #2048 (contrato comum preview → apply → verify → evidência). Plano: docs/plans/PLAN_REMEDIATION_INTERFACE.md; depende de #865.
Summary (EN): a per-format file writer for post-scan remediation: open the file at the mapped location, apply the plugin's transformation, write back atomically, and declare what it did not touch.
Contexto
O scan já acha o dado em arquivo (connectors/filesystem_connector.py, file_connector.py, smb_connector.py, nfs_connector.py, webdav_connector.py). A remediação "nas coordenadas mapeadas" (USE_CASE_SCAN_AND_REMEDIATE) não tem hoje um writer por formato. Planilha do financeiro é o caso típico.
Escopo
- xlsx / OOXML: valor da célula e os "ingredientes escondidos": tabela de strings compartilhadas, valores em cache das fórmulas, comentários, abas ocultas, nomes definidos, cache de pivot, links externos, propriedades do documento, miniatura.
- csv/texto: delimitador, encoding, BOM, fim de linha preservados.
- docx: runs, cabeçalho/rodapé, comentários, controle de alterações, propriedades.
- pdf: metadados e revisões incrementais (versões antigas dentro do mesmo arquivo), anexos embutidos.
- Execução segura: arquivo travado/aberto, ACL e mtime preservados, gravação atômica (temp + rename), re-scan do próprio arquivo.
- Texto livre (nome em célula de observação): sem domínio fixo, então pseudonimização ou redação, não FPE; dizer a precisão esperada.
- Arquivo inteiro de um titular: avaliar cripto-shred (cifrar e destruir a chave) como alternativa a editar célula.
Fora de escopo
Cópias fora do arquivo (versões, snapshots, backups, anexos de e-mail): declaradas como UNKNOWN, não tratadas aqui.
Critérios de aceite
Disciplina de PR
Esta issue não pede PR própria. A fila inteira (épico) produz no máximo 2 PRs (ver o épico); commits por assunto dentro de cada uma.
P: P3 · U: U3 (sem pressão) · G: G2 (altera dado real no lugar) · Sequenciamento e milestone: operador + auditor; backlog até haver decisão.
Aberta por Claude Code (auditor), recomendatório; implementação é do Cursor. Evidência, não conclusão jurídica.
Parte do épico #2048 (contrato comum preview → apply → verify → evidência). Plano:
docs/plans/PLAN_REMEDIATION_INTERFACE.md; depende de #865.Summary (EN): a per-format file writer for post-scan remediation: open the file at the mapped location, apply the plugin's transformation, write back atomically, and declare what it did not touch.
Contexto
O scan já acha o dado em arquivo (
connectors/filesystem_connector.py,file_connector.py,smb_connector.py,nfs_connector.py,webdav_connector.py). A remediação "nas coordenadas mapeadas" (USE_CASE_SCAN_AND_REMEDIATE) não tem hoje um writer por formato. Planilha do financeiro é o caso típico.Escopo
Fora de escopo
Cópias fora do arquivo (versões, snapshots, backups, anexos de e-mail): declaradas como UNKNOWN, não tratadas aqui.
Critérios de aceite
docs/plans/PLAN_REMEDIATION_INTERFACE.md(+.pt_BR.md), com<!-- plans-hub-summary: ... -->atualizado.python scripts/plans_hub_sync.py --writeexecutado; entry emdocs/plans/PLANS_TODO.md.Disciplina de PR
Esta issue não pede PR própria. A fila inteira (épico) produz no máximo 2 PRs (ver o épico); commits por assunto dentro de cada uma.
P: P3 · U: U3 (sem pressão) · G: G2 (altera dado real no lugar) · Sequenciamento e milestone: operador + auditor;
backlogaté haver decisão.Aberta por Claude Code (auditor), recomendatório; implementação é do Cursor. Evidência, não conclusão jurídica.