U: U1 — primeiro deliverable concreto da parceria Enterprise — sem manifest, a POC de proteção/stealthização não pode ser validada
Context
PLAN_REMEDIATION_INTERFACE.md phase 1 + parceria Comercial (Fornecedor de tecnologia).
Data Boar é discovery + evidence. Remediação é plugin third-party (Enterprise tier). A ponte é um JSON manifest estruturado que o plugin lê — sem re-scan completo, sem código do plugin no core. (remeter a docs privados sobre possíveis parcerias comerciais)
Goal
Adicionar flag --export-remediation-manifest <output.json> ao main.py (mesmo padrão de --export-dsar e --export-audit-trail). Produz mapa legível por máquina de onde o PII foi encontrado e qual tipo, para o plugin de remediação saber exatamente onde aplicar proteção/stealthização forte, masking ou encriptação.
Manifest schema (v1 — mínimo para POC)
{
"schema_version": "1.0",
"generator": "data-boar",
"data_boar_version": "1.8.0-beta",
"session_id": "sess_abc123",
"exported_at": "2026-05-21T22:00:00-03:00",
"remediation_targets": [
{
"finding_id": "find_001",
"source_type": "postgresql",
"connection_ref": "primary_db",
"schema": "public",
"table": "customers",
"column": "cpf",
"pii_type": "cpf_br",
"suggested_profile": "TGCPF",
"confidence": 0.97,
"occurrence_count_estimated": 15000
}
]
}
Regras de design:
connection_ref → referencia chave do config do operador, nunca credenciais
suggested_profile → derivado do mapeamento canônico pii_type → profile (issue companion)
- Sem PII raw no manifest — arquivo seguro para compartilhar com operador do plugin
occurrence_count_estimated → do sampling, não full count
Acceptance criteria
Notes para Cursor
- Usar
--export-dsar como referência estrutural de implementação
- Campo
schema_version habilita evolução futura sem quebrar o parser do plugin
finding_id deve ser estável entre re-scans do mesmo source (derivar de hash de session_id + table + column + pii_type)
- Gate behind license check Enterprise tier (consistente com outros features Enterprise)
- Dev form:
uv run python main.py --config config.yaml --session <id> --export-remediation-manifest remediation.json
Related
docs/plans/PLAN_REMEDIATION_INTERFACE.md — plano ativo
docs/use-cases/USE_CASE_SCAN_AND_REMEDIATE.md — pipeline context
- Issues companion: [docs] pii_type→profile mapping, [decision] plugin config ADR
NÃO INICIAR ANTES DE #606 FECHADA — core/plugins/ e RemediationPlugin Protocol devem existir antes deste issue.
U: U1 — primeiro deliverable concreto da parceria Enterprise — sem manifest, a POC de proteção/stealthização não pode ser validada
Context
PLAN_REMEDIATION_INTERFACE.mdphase 1 + parceria Comercial (Fornecedor de tecnologia).Data Boar é discovery + evidence. Remediação é plugin third-party (Enterprise tier). A ponte é um JSON manifest estruturado que o plugin lê — sem re-scan completo, sem código do plugin no core. (remeter a docs privados sobre possíveis parcerias comerciais)
Goal
Adicionar flag
--export-remediation-manifest <output.json>aomain.py(mesmo padrão de--export-dsare--export-audit-trail). Produz mapa legível por máquina de onde o PII foi encontrado e qual tipo, para o plugin de remediação saber exatamente onde aplicar proteção/stealthização forte, masking ou encriptação.Manifest schema (v1 — mínimo para POC)
{ "schema_version": "1.0", "generator": "data-boar", "data_boar_version": "1.8.0-beta", "session_id": "sess_abc123", "exported_at": "2026-05-21T22:00:00-03:00", "remediation_targets": [ { "finding_id": "find_001", "source_type": "postgresql", "connection_ref": "primary_db", "schema": "public", "table": "customers", "column": "cpf", "pii_type": "cpf_br", "suggested_profile": "TGCPF", "confidence": 0.97, "occurrence_count_estimated": 15000 } ] }Regras de design:
connection_ref→ referencia chave do config do operador, nunca credenciaissuggested_profile→ derivado do mapeamento canônicopii_type→ profile (issue companion)occurrence_count_estimated→ do sampling, não full countAcceptance criteria
--export-remediation-manifest <file>adicionada aomain.py(argparse, mesmo padrão de--export-dsar)--sessionpara identificar qual sessão de scan exportarconnection_refpopulado com nome do connector no config (sem credenciais)suggested_profilepopulado do mapeamento canônicopii_type→ profile (ver issue companion)tests/test_remediation_manifest.pycobre: export válido, sessão inexistente, findings vazios, multi-targetPLAN_REMEDIATION_INTERFACE.mdPhase 1 status para 🔄python scripts/plans_hub_sync.py --writeexecutado após doc updateNotes para Cursor
--export-dsarcomo referência estrutural de implementaçãoschema_versionhabilita evolução futura sem quebrar o parser do pluginfinding_iddeve ser estável entre re-scans do mesmo source (derivar de hash desession_id+table+column+pii_type)uv run python main.py --config config.yaml --session <id> --export-remediation-manifest remediation.jsonRelated
docs/plans/PLAN_REMEDIATION_INTERFACE.md— plano ativodocs/use-cases/USE_CASE_SCAN_AND_REMEDIATE.md— pipeline contextNÃO INICIAR ANTES DE #606 FECHADA —
core/plugins/eRemediationPluginProtocol devem existir antes deste issue.