Skip to content

[P3][feature] feat(remediation): writer SharePoint/OneDrive (Microsoft Graph) — versões, lixeira e retenção #2050

Description

@FabioLeitao

Parte do épico #2048 (contrato comum preview → apply → verify → evidência). Plano: docs/plans/PLAN_REMEDIATION_INTERFACE.md; depende de #865.

Summary (EN): SharePoint/OneDrive remediation writer that accounts for version history, recycle bins and retention holds.

Contexto

Leitura existe (connectors/sharepoint_connector.py, microsoft_identity.py). Falta a escrita, e em SharePoint editar o arquivo não apaga o dado: cada versão guarda os valores antigos.

Escopo

  • Estratégia de escrita: nova versão × sobrescrita; expurgo de versões antigas (exige permissão própria) e esvaziar as lixeiras de 1º e 2º estágio.
  • Retenção e holds (rótulos de retenção, litigation hold): detectar e recusar em vez de agir (falha fechada), registrando o motivo.
  • Co-autoria e clientes de sincronização (a cópia local do usuário).
  • Escopo mínimo de permissão: leitura por padrão; escrita só com consentimento explícito e separado.
  • Limites de taxa/throttling e reentrada idempotente.
  • Reaproveitar o writer de arquivos para o conteúdo do arquivo.

Critérios de aceite

  • Seção desta família em docs/plans/PLAN_REMEDIATION_INTERFACE.md (+ .pt_BR.md), com <!-- plans-hub-summary: ... --> atualizado.
  • python scripts/plans_hub_sync.py --write executado; entry em docs/plans/PLANS_TODO.md.
  • Matriz "o que o writer toca × o que declara não tocar" (cópias, versões, lixeira, retenção/holds, backups), com o que fica UNKNOWN dito de forma explícita.
  • Contrato preview → apply → verify → evidência, com testes sintéticos (nunca dado real) e falha fechada quando o escopo não é provável.
  • Não reimplementa tokenização/pseudonimização: delega ao plugin de remediação (ADR-0059 / epic(sdk): formalizar Boar Plugin SDK — contrato agnóstico versionado + fronteira L1/L2/L3 + fail-graceful (plugin = superfície do sidecar) #865).

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.

Activity

  1. added this to the backlog milestone on Oct 10, 2026
  2. added
    P3Low — backlog / nice-to-have
    no-code-yetIssue tracked but no implementation started — audit finding, doc, or ops backlog
    plugin-surfacePlugin/extension surface (L1/L2/L3) — discovery, auth, sandboxing, panic-safety
    connectorData source connector (SQL/NoSQL/object storage/SaaS)
    on Oct 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    P3Low — backlog / nice-to-haveconnectorData source connector (SQL/NoSQL/object storage/SaaS)no-code-yetIssue tracked but no implementation started — audit finding, doc, or ops backlogplugin-surfacePlugin/extension surface (L1/L2/L3) — discovery, auth, sandboxing, panic-safety

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions