GuideData VersioningData LineageResearch ReproducibilityData Governance

How to Manage Versioning and Data Lineage in Survey Research?

Starting from two conflicting satisfaction charts, establish a traceable chain linking questionnaire versions, raw snapshots, processing rules, analytical runs, and report visualizations, and provide an actionable checklist and validation methods for small teams.

Updated September 2, 2026 27 min read

The same survey, the same cutoff date: the monthly report states a "satisfaction rate of 48%," but the chart in the review meeting shows 43%. In this situation, the most dangerous move isn't choosing the file that looks newer; it's relying on email timestamps, "FINAL" in filenames, or a colleague's memory. The two numbers might have been derived using different response snapshots, valid denominators, cleaning rules, weights, or questionnaire versions; without tracing back through each layer, neither can be deemed the official conclusion.

The minimum standard for version management in survey data is ensuring every critical number in a report can be traced back to: which chart or table, generated by which analytical run, using which version of processing rules, reading which immutable raw snapshot, corresponding to which questionnaire version and collection batch. Versioning answers "what the object became and when," while lineage answers "what inputs and activities produced this result." They need to be designed together.

Start with Digital Forensics on 48% and 43%

The survey initially asked all completers about feature satisfaction. In the second week of collection, a screening question about "used the feature in the past 30 days" was added. The first analyst used all completers up to August 20th as the denominator, treating non-responses to satisfaction as dissatisfied. The second analyst used data up to August 22nd, included only actual users, excluded specific missing values, and applied calibration weights. Both charts are titled "Feature Satisfaction Rate," but the estimated populations differ.

To determine the source of the discrepancy, you need answers to at least:

  1. Were the numbers in the chart file copy-pasted, or generated by a specific query or script?
  2. Which analytical dataset did that run read, and what were its filtering conditions and weight parameters?
  3. Which raw response batches were merged to create the analytical data, and at what time point was the data cut off?
  4. How were duplicates, quality control failures, refusals, and logical skips handled during cleaning?
  5. Which version of questions, options, and skip logic did each batch of respondents see?

If these answers are scattered in chat logs, the team has individual memories, not data lineage. The final action might involve standardizing on the denominator of "actual users who saw the question and provided a valid scale response" and regenerating data for both periods. Alternatively, because the screening question was added midway, August 20th might need to be marked as a definitional breakpoint. Regardless of the chosen path, a new, documented output should be created, without overwriting old files and pretending the discrepancy never occurred.

An Auditable Survey Lineage Includes Six Types of Artifacts

The W3C's PROV Model Primer describes provenance using "entities, activities, and agents." Data files or charts are entities; cleaning and analysis are activities; people or systems are agents. Small teams don't need to deploy a specialized lineage platform to manage these six types of artifacts using this framework.

ArtifactMust Stably RecordTypical Relationship
Research & Analysis PlanResearch questions, metrics, population, exclusion & comparison rules, approved versionExplains why subsequent data was created
Questionnaire VersionQuestion text, options, logic, language, release time, substantive changesDetermines what each participant batch could see
Raw SnapshotExport time, batch scope, file identifier, row count, checksumServes as immutable input for processing activities
Processing RulesVersions of QC, deduplication, coding, derivation, linking, weightingTransforms raw snapshots into analytical data
Analytical RunInput IDs, script version, parameters, execution time, operatorGenerates the numbers used in tables and charts
DeliverableReport version, chart number, data cutoff, access levelReferences the output of specific analytical runs

Checksums only confirm whether file bytes are identical; they don't prove data content correctness. Version numbers only distinguish objects; they don't automatically indicate comparability. True lineage lies in the relationships between these identifiers. For example, chart [email protected] comes from run run_20260902_1045, which read analytical set [email protected], which in turn was generated from raw snapshot raw_batch_01_04 and processing rules [email protected].

Raw Layer is Immutable; Corrections Expressed Through New Artifacts

Raw responses should form read-only snapshots per batch or time period, retaining project, questionnaire, and collection IDs. If a coding error is found in a record, don't edit the raw Excel file directly. Instead, write a correction rule into the processing step and generate new cleaned data. This preserves both "what was originally received" and explains "why it might differ later."

Immutability doesn't mean permanently retaining all sensitive data. Deletion requests, retention policies, and anonymization requirements still take precedence. You can record "which policy, who, and when deletion occurred for a specific record" and its affected downstream artifacts, regenerating permissible analytical sets. You cannot privately retain personal data slated for deletion just for reproducibility. Lineage records themselves should minimize sensitive fields, using internal IDs rather than names or contact information.

Each raw snapshot should ideally have: project ID, questionnaire version, included collection batches, time range, export timezone, file format, record count, field count, generator, generation time, and checksum. For multi-channel collection, add channel and sample source. When merging external CRM or behavioral data, record the extraction time, link keys, non-match rates, and field definitions.

Version Upgrades Consider "Meaning and Comparability," Not the Number of Changes

Version numbers can be simple, but upgrade rules should focus on data semantics. Whether a change is "major" isn't determined by character count, but by whether it alters who can answer, how respondents understand the question, how values are encoded, or how metrics are calculated.

  • Cosmetic Revisions: Correcting typos or styles that don't affect meaning; can retain the primary data definitions but still log the release time and format version.
  • Measurement Revisions: Changing the reference period (e.g., 30 days to 90 days), shifting from a 5-point to a 7-point scale, or altering option meanings requires creating a new measurement version. Assess bridgeability; never combine trends directly.
  • Population Revisions: Changes to screening criteria, sample source, or quotas affect who the results represent. Reports must clearly mark this definitional breakpoint, even if the question text remains identical.
  • Processing Revisions: Changes to deduplication, QC, missing data handling, derivation, or weighting rules require generating a new analytical data version and listing all affected metrics and charts.
  • Appending Data: If questionnaires and rules remain unchanged, adding only new batches can create new snapshot versions; old snapshots are retained to reproduce previously published reports.

For every change, make three judgments: which records and variables are affected, whether new and old results are comparable, and whether already released deliverables need recalculation or correction. If the answer is temporarily unknown, mark compatibility as "pending validation," not automatically mergeable.

Turn Folders into an Evidence Chain with Run Manifests

The most practical approach for small teams is to have every formal processing or analysis step output a machine-readable or tabular run manifest. It doesn't need to be complex, but it can't rely on filename guessing. For example:

{
  "run_id": "run_20260902_1045",
  "purpose": "Generate formal August feature satisfaction charts",
  "inputs": ["raw_batch_01_04@sha256:…", "[email protected]"],
  "rules": ["[email protected]", "[email protected]", "[email protected]"],
  "parameters": {"cutoff": "2026-08-31T23:59:59+08:00"},
  "outputs": ["[email protected]", "[email protected]"],
  "owner": "research-analytics",
  "executed_at": "2026-09-02T10:45:00+08:00"
}

Scripts, queries, and rule files should be associated with the run ID. Even if some steps are temporarily manual, record the operator, inputs, actions taken, and reviewer in the manifest. Manual work isn't the original sin; untraceable manual work is. When later automating, start with these high-frequency, error-prone manual steps.

The UK Data Service's material on documenting and organising research data warns that without consistent naming conventions, identifying the correct file version is difficult. Naming can follow "project-object-date-version," but treat it as an entry point, not the sole mechanism; content IDs, change logs, and input/output relationships still need separate storage.

Report Charts Also Need Versions; Tracking to the Analysis Table Isn't Enough

Many teams can locate the cleaned data but cannot explain the numbers in a PPT deck because the analyst manually altered filters after copy-pasting cells. The solution is to assign stable IDs to key tables and figures and record the data cutoff, analysis population, weights, generating run, and update time in the caption or deliverables manifest. The title states the conclusion; the chart metadata makes the conclusion verifiable.

Don't silently replace report revisions. If new data only changes decimal places, upgrade the report version and note it. If the denominator, direction, or recommendations change, create a correction record listing old values, new values, reasons, affected pages, and notified parties. The purpose of versioning isn't to keep mistakes visible forever but to let others know why the same question might have yielded different answers.

A Ten-Minute Reverse Trace is the Most Practical Release Criterion

Before formal delivery, randomly select a chart influencing a decision and ask someone not involved in its creation to perform a reverse trace within ten minutes: locate the chart ID and report version, identify the analytical run that generated it, verify the filtering and weighting parameters, find the analytical dataset and processing rules, and finally confirm the raw snapshot, questionnaire version, and collection scope. Then, attempt to reproduce the numbers from the same run, with acceptable discrepancy limits defined beforehand.

When tracing fails, categorize the type of break: a missing stable identifier, a run without saved inputs, rules existing only in verbal explanations, an overwritten raw snapshot, or questionnaire versions that don't map to responses. Prioritize fixing breaks closest to the formal conclusion, then extend upstream. W3C's definition of provenance focuses on the entities, activities, and people or institutions involved in producing the data or digital object; this information is precisely what's needed to assess quality, reliability, and trustworthiness, not just to draw a nice flowchart.

In the survey context, projects, questionnaire versions, and collection batches form the starting point. As data enters the team's database, statistical software, or reporting system, preserve these IDs and log each export as a raw snapshot. If AI tools assist with cleaning explanations or report writing, also document the data scope used, key instructions, output versions, and human corrections; linguistic fluency cannot replace data lineage. Ultimately, you should ensure: any formal conclusion can be traced back to its evidence, and any rule change can trace forward to affected conclusions.

Sources for Versioning and Lineage Practices