O gap que resistiu à verificação (checado no repo antes de afirmar)
Verifiquei: o --diff (#521) está completo, e o PLAN_SCAN_RUN_MANIFEST já mede columns_sampled vs columns_skipped + reasons. Isso é coverage do espaço conhecido (das colunas que o Boar achou nas fontes conectadas, quantas amostrou). O que não existe e é o diferencial: coverage do espaço declarado vs. alcançado — a pergunta que assombra todo auditor LGPD: "e as fontes que você NÃO viu? como sabe que viu todas?"
A ideia (simples, e a doutrina anti-overclaim virada feature)
Um input --expected-sources <manifest> onde o operador declara o inventário esperado ("meus sistemas são estes 12"). O Boar cruza com o que efetivamente alcançou e emite um coverage attestation assinado:
- declarado: 12 · alcançado: 10 · não-alcançado: 2 (X = sem credencial · Y = fora da rede)
- e o Boar NÃO afirma nada sobre as 2 não-alcançadas (o negative-space explícito).
Transforma "escaneei tudo, confie em mim" (o que todo concorrente entrega, e é inútil pro auditor) em "escaneei 83% do declarado, eis os 17% que não alcancei e por quê" (auditável, honesto, defensável).
Por que é diferencial (cabe no jeitinho)
- É a doutrina anti-overclaim aplicada ao próprio escopo do scanner — o scanner que se recusa a superestimar a própria cobertura.
- BigID/Securiti nunca fariam (coverage-honesto expõe limitação); o Boar ganha por expor.
- Simples: um set difference assinado. Cabe no min-spec, offline, determinístico.
- Fecha venda com CISO sério — é a honestidade que compra confiança.
Delta vs. o que já existe (não duplica)
PLAN_SCAN_RUN_MANIFEST: sampled-vs-skipped dentro das fontes alcançadas. ← existe.
- Este: declared-vs-reached no nível de FONTE (o antes: você chegou em todas as fontes?). ← novo.
- Reusa
config_hash, run_id, o padrão de "campo vazio explícito nunca ausente" do run-manifest.
Rascunho detalhado (MD pronto pra incluir como housekeeping)
Spec completa proposta em docs/plans/PLAN_COVERAGE_ATTESTATION.md — entregue pelo operador na sessão de auditoria (rascunho; operador ratifica, Cursor materializa). Slices, schema, invariante de honestidade e critérios de aceite no MD.
Slices (resumo)
Alinha: ADR-0037 (self-audit log), ADR-0048 (taxonomy), ADR-0049 (no brittle mitigations). Liga run-manifest + tidy-tortoise#8 (o coverage entra no evidence-pack).
— claude.ai · Auditor R.O. externo (steering/altitude) · Sonnet 5 · A.I.I.D.C.O.B.P.P. v1.4
O gap que resistiu à verificação (checado no repo antes de afirmar)
Verifiquei: o
--diff(#521) está completo, e oPLAN_SCAN_RUN_MANIFESTjá medecolumns_sampledvscolumns_skipped+ reasons. Isso é coverage do espaço conhecido (das colunas que o Boar achou nas fontes conectadas, quantas amostrou). O que não existe e é o diferencial: coverage do espaço declarado vs. alcançado — a pergunta que assombra todo auditor LGPD: "e as fontes que você NÃO viu? como sabe que viu todas?"A ideia (simples, e a doutrina anti-overclaim virada feature)
Um input
--expected-sources <manifest>onde o operador declara o inventário esperado ("meus sistemas são estes 12"). O Boar cruza com o que efetivamente alcançou e emite um coverage attestation assinado:Transforma "escaneei tudo, confie em mim" (o que todo concorrente entrega, e é inútil pro auditor) em "escaneei 83% do declarado, eis os 17% que não alcancei e por quê" (auditável, honesto, defensável).
Por que é diferencial (cabe no jeitinho)
Delta vs. o que já existe (não duplica)
PLAN_SCAN_RUN_MANIFEST: sampled-vs-skipped dentro das fontes alcançadas. ← existe.config_hash,run_id, o padrão de "campo vazio explícito nunca ausente" do run-manifest.Rascunho detalhado (MD pronto pra incluir como housekeeping)
Spec completa proposta em
docs/plans/PLAN_COVERAGE_ATTESTATION.md— entregue pelo operador na sessão de auditoria (rascunho; operador ratifica, Cursor materializa). Slices, schema, invariante de honestidade e critérios de aceite no MD.Slices (resumo)
--expected-sources sources.yaml(declaração: id + tipo + label por fonte)._Coveragesheet + JSON.config_hash.Alinha: ADR-0037 (self-audit log), ADR-0048 (taxonomy), ADR-0049 (no brittle mitigations). Liga run-manifest + tidy-tortoise#8 (o coverage entra no evidence-pack).
— claude.ai · Auditor R.O. externo (steering/altitude) · Sonnet 5 · A.I.I.D.C.O.B.P.P. v1.4