Skip to content

primitives

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

Primitives

Active contributors: Douwe de Vries

Purpose

This section documents the domain primitives shared by detection, transformation, reports, frontend contracts, Tauri commands, and Local AI integration. These primitives are centered in csv-anonymizer-core.

Directory layout

Primitive Page Primary paths
Column facts and evidence Column metadata crates/csv-anonymizer-core/src/types.rs, metadata.rs, detection.rs
Transformation choice Transform strategy crates/csv-anonymizer-core/src/types.rs, strategies
Release evidence Privacy report crates/csv-anonymizer-core/src/types.rs, release_report.rs, report_notes.rs
Local AI replacement memory Smart replacement map crates/csv-anonymizer-core/src/smart.rs, src-tauri/src/local_ai/provider.rs

Key abstractions

  • Column metadata describes a detected field, including type, confidence, evidence, sample values, risk, selection state, and strategy.
  • Transform strategy describes how a selected value is transformed.
  • Privacy report summarizes release readiness and what happened during transformation.
  • Smart replacement map validates Local AI replacements and reuses accepted replacements during preview or output.

How it works

graph LR
    Input[CSV or pasted input] --> Metadata[Column metadata]
    Metadata --> Strategy[Transform strategy]
    Strategy --> Smart[Smart replacement map]
    Strategy --> Report[Privacy report]
    Smart --> Report
Loading

Metadata is created first by sampling input and running detectors. Strategy choices then determine how selected cells transform. Transform state and Smart replacement maps track reuse and fallback counts. Privacy reports consume selected metadata and transform counts to produce readiness, evidence, column reports, metrics, and notes.

Integration points

  • Frontend workflow state displays and edits these primitives through TypeScript DTOs.
  • Tauri command shell serializes these primitives across Tauri invoke calls.
  • csv-anonymizer-core owns the Rust definitions and behavior.
  • scripts/check-contracts.mjs checks important Rust and TypeScript contract alignment.

Entry points for modification

Change Start here
Add a detected data type, evidence field, or risk behavior Column metadata
Add or change transformation behavior Transform strategy
Add report counters, readiness evidence, or notes Privacy report
Change Local AI replacement validation or reuse Smart replacement map

Key source files

  • crates/csv-anonymizer-core/src/types.rs
  • crates/csv-anonymizer-core/src/metadata.rs
  • crates/csv-anonymizer-core/src/detection.rs
  • crates/csv-anonymizer-core/src/strategies/mod.rs
  • crates/csv-anonymizer-core/src/release_report.rs
  • crates/csv-anonymizer-core/src/smart.rs

Clone this wiki locally