Skip to content

primitives privacy report

Douwe de Vries edited this page Jul 1, 2026 · 1 revision

Privacy report

Active contributors: Douwe de Vries

Purpose

Privacy report is the release-facing summary produced after a transform or during preflight. It explains what was selected, which strategies ran, how many values were reused or tokenized, Local AI replacement quality, readiness status, evidence, utility metrics, and review notes.

Directory layout

Path Role
crates/csv-anonymizer-core/src/types.rs Defines PrivacyReport, ReleaseReadiness, ReleaseEvidenceItem, ColumnReleaseReport, UtilityMetric, and related status enums.
crates/csv-anonymizer-core/src/release_report.rs Builds readiness, evidence, per-column reports, utility metrics, standard notes, and action labels.
crates/csv-anonymizer-core/src/report_notes.rs Adds notes about unselected columns and high/medium risk columns written unchanged.

Key abstractions

  • PrivacyReport stores identifier counts, strategy counts, pseudonym and token counts, Smart replacement counts, readiness, evidence, column reports, utility metrics, and notes.
  • ReleaseReadiness is verified, review, or blocked, with blockers, review items, and verified items.
  • ReleaseEvidenceItem captures named evidence such as column coverage, detector-risk review, and Local AI validation.
  • ColumnReleaseReport records per-column action, status, selected flag, detected type, PII risk, and strategy.
  • UtilityMetric adds compact release metrics such as selected-column coverage, repeat reuse, and Local AI accepted values.
  • TransformReport from Transform strategy supplies operational counters used by PrivacyReport.

How it works

graph LR
    Metadata[Selected column metadata] --> Builder[build_privacy_report]
    Transform[TransformReport counters] --> Builder
    Builder --> Readiness[ReleaseReadiness]
    Builder --> Evidence[ReleaseEvidenceItem]
    Builder --> Columns[ColumnReleaseReport]
    Builder --> Metrics[UtilityMetric]
    Builder --> Notes[Notes]
Loading

service.rs creates a PrivacyReport after CSV output by combining selected metadata with TransformReport. release_report.rs then checks whether high or medium detector-risk columns were left unselected, labels each column action, summarizes Smart replacement rejections, and adds utility metrics. report_notes.rs adds user-facing notes when columns were written unchanged.

Preflight uses the same readiness and evidence primitives through PreflightData, but preflight can also add blockers for missing selected columns, invalid output paths, or Local AI readiness before a transform starts.

Integration points

  • Column metadata supplies detected type, risk, selected state, and strategy.
  • Transform strategy supplies transform counters and strategy action semantics.
  • Smart replacement map supplies Smart replacement request, acceptance, rejection, and fallback counts.
  • Frontend workflow state displays preview warnings, preflight blockers, final result data, and report panels.
  • Tauri command shell serializes PreflightData, AnonymizeData, PasteTransformData, and QuickTransformData to the frontend.

Entry points for modification

  • Add report fields or status enums in crates/csv-anonymizer-core/src/types.rs and mirror DTO changes in frontend/src/types.ts.
  • Change readiness, evidence, column action, utility metrics, or Smart rejection summaries in crates/csv-anonymizer-core/src/release_report.rs.
  • Change notes for unselected columns in crates/csv-anonymizer-core/src/report_notes.rs.
  • Change CSV report assembly in crates/csv-anonymizer-core/src/service.rs.
  • Update frontend report rendering when adding fields.

Key source files

  • crates/csv-anonymizer-core/src/types.rs
  • crates/csv-anonymizer-core/src/release_report.rs
  • crates/csv-anonymizer-core/src/report_notes.rs
  • crates/csv-anonymizer-core/src/service.rs

Clone this wiki locally