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
- 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.
- 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.
- 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.
- 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.
- 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
| Dimension | Choice or evidence | How to interpret it |
|---|---|---|
| Synthetic fixture | Invented content with designed properties | Usually minimizes source disclosure; still review generated text and metadata. |
| Transformed real fixture | Approved source with documented changes | May retain useful task properties but can remain re-identifiable and needs controls. |
| Raw user sample | Original private input | Highest 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
| Layer | Record |
|---|---|
| Device | Manufacturer, model, chipset, RAM class, operating-system build |
| Software | Application version and git commit |
| Model | Family, variant, revision, format, file length, hash, quantization |
| Runtime | Name, revision, requested backend, observed backend evidence |
| Workload | Fixture revision, input hash, prompt hash, output policy |
| Outcome | Completed, 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
- Cove benchmark method
- FTC Mobile Health App Developers: Best Practices
- Android security and privacy overview
- Android app-specific storage
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.