Privacy and data boundary

Anonymize Test Fixtures for Local AI

Replace private content while preserving task properties and documenting the transformation.

Review status: Fact and editorial QA complete; owner review pending · 2026-10-04 · Fact IDs: PRIVACY-01, BENCHMARK-01

Direct answer

A privacy-safe fixture is not merely a real conversation with names deleted. The transformation must preserve the task properties needed for the test, remove unnecessary identifying detail, and document what changed. `PRIVACY-01` distinguishes local inference from other network and storage paths, while `BENCHMARK-01` requires retained raw test records for benchmark claims. These facts imply two different responsibilities: protect the fixture itself and keep enough provenance to understand the evaluation, without retaining private originals by default. Start from a test question. If the test checks negation handling, preserve the negation. If it checks entity extraction, use synthetic names and identifiers with known labels. If it checks a long audio boundary, generate or record approved audio with the needed duration and segmentation pattern rather than copying a user's private recording. Replacing a name with a token may change grammar, tokenization, or context; record the transformation and validate that the behavior under test remains comparable. Avoid claim of equivalence unless that property was measured. Prefer synthetic fixtures authored for the task. When real data is necessary, obtain an approved basis to use it, limit fields, replace direct identifiers, remove unnecessary metadata, and store the source separately under controlled access. A redacted location, rare event, timestamp, or unusual phrase can still identify someone when combined with other data. Do not call a dataset anonymous merely because names, faces, or account numbers were removed. If the fixture could be linked back to a person, treat it as sensitive and apply access, retention, and deletion controls. Maintain a transformation manifest: fixture ID, source category, permission or approved provenance, transformation steps, retained task properties, removed fields, reviewer, and version. Keep labels and expected outcomes aligned with the transformed input. If a transformation changes length, punctuation, language mix, audio timing, or image layout, mark that characteristic and avoid comparing it as if unchanged. Run an equivalence review focused on the actual test objective, not broad semantic similarity. Never store the original in source control for convenient regeneration. Test the fixture pipeline itself. Search repositories, build logs, crash reports, snapshots, analytics, and exports for canary values. Verify that removal of the original is effective across developer workspaces and automated artifacts. Check whether the transformed sample contains residual EXIF, embedded text layers, hidden transcript segments, filenames, or metadata. For generated synthetic material, retain its generation recipe only if it contains no private source; validate that it does not reproduce real user text. Separate fixture privacy from benchmark validity. A sanitized sample can be private but no longer represent the task; a realistic sample can be useful but carry unacceptable disclosure risk. State what population and conditions the set does and does not represent. Keep failures and rejected examples instead of selecting only outputs that support a claim. Any published accuracy or generalization needs its own documented corpus, scoring, and raw records. This guide is a stewardship process, not a legal standard or guarantee of anonymity.

A team needs a regression test for private transcription text

A developer wants a reproducible regression case from a user-reported misspelling in a transcript. The original contains a person name, a small-town location, and an unusual phrase that together could identify the speaker, so the fixture must preserve the typo behavior without retaining those clues.

Decision

Create a synthetic phrase preserving the misspelling behavior under test, document the transformation, and remove the original from fixtures and logs under the approved process.

Expected outcome

The regression test keeps the relevant linguistic property while limiting retained personal content and avoiding an unsupported anonymity claim.

Evidence to collect

The claim becomes reviewable only when the following evidence is attached to the same artifact and test run:

  • Fixture provenance
  • Transformation log
  • Property equivalence review

A privacy claim needs a data inventory and traffic evidence. A local-model label by itself is not proof.

Implementation workflow

  1. State the property the fixture must preserve. Write a narrow test question such as negation, punctuation, segmentation, or parser behavior. Avoid keeping more source context than the assertion needs.
  2. Create synthetic or approved input. Prefer invented names and content. If using real material, record approved provenance, minimize fields, replace identifiers, and restrict access to the source.
  3. Document every transformation. Store a fixture ID, version, changed/removed fields, retained task properties, labels, and reviewer. Mark changes to length, script, timing, or layout.
  4. Review comparability and residual data. Check whether transformation altered the behavior under test. Inspect EXIF, hidden text, filenames, source-control history, logs, snapshots, and exports for canaries.
  5. Apply retention and reporting controls. Delete or separately protect originals, keep rejected cases, and describe what the fixture set represents without claiming broad anonymity or accuracy.

Keep each transition observable. A failure should identify the stage, artifact, runtime, and recovery action without logging private user content.

Acceptance criteria

  • Each fixture has a specific test objective and transformation record that identifies retained and removed properties.
  • Synthetic or approved data is used; canary searches find no unintended original content in repositories, logs, screenshots, or exports.
  • The report distinguishes privacy protection from representativeness and does not claim anonymization or accuracy without supporting review.

Decision table

DimensionChoice or evidenceHow to interpret it
Synthetic fixtureInvented content with designed propertiesUsually minimizes source disclosure; still review generated text and metadata.
Transformed real fixtureApproved source with documented changesMay retain useful task properties but can remain re-identifiable and needs controls.
Raw user sampleOriginal private inputHighest fidelity may carry highest disclosure risk; do not retain by default.

Failure patterns to prevent

  • Calling simple deletion anonymization
  • Keeping originals in the repository

Also prevent silent fallback, unpinned artifacts, missing cancellation, and conclusions that combine unlike configurations. Store unsuccessful runs alongside successful ones.

Minimum reproducibility record

LayerRecord
DeviceManufacturer, model, chipset, RAM class, operating-system build
SoftwareApplication version and git commit
ModelFamily, variant, revision, format, file length, hash, quantization
RuntimeName, revision, requested backend, observed backend evidence
WorkloadFixture revision, input hash, prompt hash, output policy
OutcomeCompleted, failed, cancelled, fallback, and privacy-safe diagnostics

Release checklist

  • ☐ The primary query is answered without an unsupported number.
  • ☐ Every artifact and runtime is pinned.
  • ☐ The representative task and failure policy are explicit.
  • ☐ Lifecycle, cancellation, cleanup, and fallback are tested.
  • ☐ User-content and network boundaries are documented.
  • ☐ Result wording applies only to the recorded configuration.
  • ☐ The page links to raw method or evidence when results are added.

Sources and related evidence

Chinese deployment and troubleshooting content is organized in the .奇连 AI 端侧专题.

Frequently asked questions

Does removing names make a fixture anonymous?

Not necessarily. Rare phrases, dates, locations, and combinations of attributes can identify someone. Review re-identification risk and treat uncertain material as sensitive.

Can a synthetic replacement stand in for the original?

Only for the specific property it preserves. Record transformations and check that they did not alter tokenization, grammar, timing, or layout relevant to the test.

Should raw failures be deleted from a benchmark?

Do not silently discard them. Preserve privacy-safe failure records and report exclusions; otherwise the evaluation can become biased toward successful examples.