Skip to content

Evidence methods guide

Dataset Fingerprint and Snapshot Freeze: Make a Snapshot Mean One Known Thing

Review what a dataset fingerprint covers, how a snapshot was captured, and which mutable inputs remain outside the freeze.

A checksum or object id identifies bytes under a particular hashing contract; it does not automatically identify a dataset’s members, schema, source query, or external dependencies. Git documents object hashing and filter behavior, while DVC documents freezing stages so they are not considered changed for reproduction. Build a snapshot record with a canonical manifest, algorithm, input versions, capture time, and mutable-source caveats. A fingerprint is evidence of identity under that contract, not proof of completeness or rights.

Updated

On this page

Define what the fingerprint covers

The source dates shown in this guide identify documentation checks on 22 October 2026, not original publication dates. Name the identity target: one file, a directory manifest, a logical dataset, a query result, or a pipeline snapshot. Record algorithm, encoding, object type, path normalization, line-ending policy, and whether metadata is included. A digest of one archive is not automatically a digest of the files it contains.

Define what the fingerprint covers (table)
Identity inputRecordStop if
MembersStable member ids and inclusion ruleDirectory order is implicit
BytesHash algorithm and exact bytesText normalization is unknown
MetadataSchema, manifest, or sidecars includedMetadata scope is unstated
SourceVersion, query, and capture pointRemote source is mutable
OrderingCanonical sort and separatorsManifest can reorder
ResultFingerprint and creation recordOnly a short label remains

The Git, (opens in a new tab) documentation is a useful reminder that object type, path filters, and content affect an object id. Choose a simpler explicit contract for a dataset manifest if that is what the consumer needs, and write the contract beside the fingerprint.

Freeze the source boundary before hashing

A snapshot is a statement about what was observed at a capture boundary. Record retrieval time, source version or generation, query parameters, pagination completion, and any source-side consistency guarantee. If a source can change while files are being read, the fingerprint can still be repeatable for the bytes captured while failing to represent one coherent source state.

Freeze the source boundary before hashing (table)
BoundaryEvidenceOpen risk
File setManifest and member hashesMember changed during read
API resultCursor completion and queryConcurrent mutation
Object storeGeneration or version idLatest pointer moved
Pipeline stageInputs and config versionDependency not frozen
ArchiveArchive bytes and extracted manifestArchive metadata changes

The Data Version Control, (opens in a new tab) command describes a reproducibility workflow state. It can help a team avoid rerunning a stage, but it does not replace the input manifest or prove that the source itself stopped changing. Keep “workflow frozen,” “source versioned,” and “bytes fingerprinted” as separate fields.

Reconcile members, schema, and derived outputs

Produce a manifest with one row per included member, stable logical path or id, byte length, content fingerprint, source version, and exclusion reason for anything omitted. Hash the manifest itself after canonical ordering. If a transformed table or subset is part of the package, give it its own derivation record and fingerprint rather than implying that the source fingerprint covers it.

  1. Capture the source boundary and immutable identifiers.
  2. Enumerate members with explicit inclusion and exclusion rules.
  3. Hash exact bytes under a named algorithm and encoding policy.
  4. Canonicalize and fingerprint the manifest.
  5. Record schema and transformation artifacts separately.
  6. Repeat the check and compare every identity input.

Use a synthetic snapshot fixture

Synthetic manifest and freeze record

Use a synthetic snapshot fixture code example, Plain text
snapshot=fixture-2026-01; source_generation=G7; algorithm=fixture-hash; order=logical_id ASC
member | bytes | included | reason
fixture-a | 12 | yes | in scope
fixture-b | 7 | yes | in scope
fixture-c | unknown | no | excluded:temporary
manifest_fingerprint=fixture-digest
workflow_frozen=yes; source_mutability=unknown; query=fixture-filter-v2
Use a synthetic snapshot fixture (table)
TestExpected resultHold condition
OrderSame logical order on rerunFilesystem order used
Excluded memberReason retainedOmission is silent
Source generationGeneration recordedLatest pointer only
Schema outputSeparate derived fingerprintCovered by source digest
Freeze stateWorkflow and source fields distinctFreeze called completeness

Every identifier and digest in this fixture is synthetic. Add a changed byte, changed manifest order, a new source generation, and a query-version change. Each should alter the identity or produce a visible unresolved finding under the chosen contract.

Keep snapshot identity separate from rights or quality conclusions

Fingerprint review can show what bytes and metadata a package claims to contain. It cannot establish completeness, ownership, authorization, quality, security, or suitability for a use. Keep source authority, access decisions, and quality findings in separate records.

Pair this guide with dataset file manifest and checksums for member-level evidence and dataset subset filter evidence for selection provenance. After a supported non-health scope, authority to describe the collection, and a controlled snapshot packet are established, the qualified appraisal request path may be a preparation step. It does not hash files, freeze sources, create a quote, match a buyer, or grant a license.

Takeaways

  • Define fingerprint scope, algorithm, ordering, filters, and metadata inputs.
  • Capture source generation or query boundary before reading members.
  • Keep member, manifest, schema, and derived-output fingerprints distinct.
  • Record workflow freeze separately from source immutability.
  • Do not treat a stable digest as proof of completeness or rights.

Sources

  1. Git: git-hash-object Documentation (opens in a new tab)
  2. Data Version Control: freeze: Freeze stages until unfreeze (opens in a new tab)

Use the appraisal path after the snapshot identity evidence is organized.

It does not hash files, freeze sources, create a quote, match a buyer, or grant a license.