On this page
Define the slice without relying on its filename
The source dates shown in this guide identify documentation checks on 22 October 2026, not original publication dates. Name the source dataset, immutable version or snapshot, source schema, subset purpose, and output artifact. Then state whether the selection is a row filter, column projection, temporal window, spatial boundary, stratified sample, or combination. Preserve parameter values without including raw personal or customer content.
| Evidence | Record | Stop if |
|---|---|---|
| Source identity | Dataset id, version, and snapshot | Only a mutable URL remains |
| Predicate | Canonical expression and parameters | Natural-language summary only |
| Null policy | Keep, exclude, or classify by field | Null behavior is implicit |
| Ordering | Stable keys and direction | Output order is accidental |
| Boundaries | Inclusive or exclusive limits | Date or spatial edge is unclear |
| Output | Schema, count, and artifact id | File name is the only evidence |
A filter such as “recent active records” hides at least three rules: which timestamp, what recent means, and how active is encoded. Write the machine-level predicate and a reader-friendly explanation, then compare them for drift.
Test boundaries, nulls, and exclusions
Use synthetic rows around every boundary. Include null, empty, malformed, duplicate, and out-of-range values. For a temporal filter, create rows exactly at start and end. For a spatial or category filter, include values that differ only by case or normalization if those transformations are allowed. Record excluded counts and reason classes, not just the number kept.
| Case | Synthetic row | Expected question |
|---|---|---|
| Start edge | Value exactly at lower bound | Inclusive or exclusive? |
| End edge | Value exactly at upper bound | Included in this release? |
| Null | Missing filter field | Excluded or separate state? |
| Duplicate | Same key twice | Deduplicated before or after filter? |
| Malformed | Invalid field representation | Rejected with reason? |
| Excluded class | Known out-of-scope category | Counted and documented? |
W3C recommends that users should be able to work with subsets without downloading a complete dataset. That usability goal does not remove the need to state selection rules. A smaller output without a predicate and source version cannot be meaningfully reproduced.
Reconcile counts and stable ordering
Record source count, candidate count, excluded counts by reason, output count, and any post-filter deduplication. If the output has a limit, state whether it is applied before or after ordering. A stable ordering key makes a rerun comparable; a database default order does not. If a source is mutable, capture retrieval time and snapshot evidence.
- Freeze source identity and snapshot evidence.
- Parse and canonicalize the predicate and parameters.
- Run boundary and null fixtures.
- Record candidate, excluded, duplicate, and output counts.
- Apply deterministic ordering and limit rules.
- Store the output artifact and derivation record.
Use a synthetic subset evidence sheet
Synthetic subset manifest
source=fixture-catalog@v3; predicate=status=active AND score>=0; order=key ASC; limit=3
row | status | score | stage
fixture-a | active | 2 | kept
fixture-b | inactive | 8 | excluded:status
fixture-c | active | blank | excluded:score-null
fixture-d | active | 1 | kept
fixture-e | active | 0 | kept
fixture-f | active | -1 | excluded:score
counts: source=6; status_candidates=5; excluded_status=1; excluded_score_null=1; excluded_score=1; eligible=3; output_before_limit=3; output=3| Assertion | Expected evidence | Hold condition |
|---|---|---|
| Boundary | Zero score is retained | Null and zero conflated |
| Null | Reason class recorded | Null silently dropped |
| Order | Key direction and limit stated | Output order unspecified |
| Counts | Each stage reconciles | Only final count retained |
| Version | Source snapshot is named | Mutable source rerun |
The count stages reconcile: five rows pass the status check, one of those has a null score, one has a negative score, and three satisfy both conditions. The inactive row is a separate status exclusion. The limit does not reduce this fixture because output_before_limit is already three.
The fixture contains invented records and no source text. Add duplicate keys and a changed source version to see whether the subset record detects drift. Keep the row identities synthetic even when the real subset must remain confidential.
Keep subset evidence separate from access or quality conclusions
Subset evidence can show how an output was selected and where the method is incomplete. It cannot establish data quality, ownership, permission, representativeness, or suitability for a downstream use. Preserve only the minimum metadata needed to reproduce and review the selection.
Pair this guide with dataset fingerprint and snapshot freeze for source identity and the data provenance log for derivation history. After a supported non-health scope, authority to describe the collection, and a controlled subset packet are established, the qualified appraisal request path may be a preparation step. It does not query data, expose rows, create a quote, match a buyer, or grant a license.
Takeaways
- Name source version, predicate, null policy, ordering, and boundaries.
- Test edge rows with synthetic fixtures.
- Reconcile source, candidate, excluded, duplicate, and output counts.
- Keep subset selection as a derivation from a named snapshot.
- Do not treat a small file as self-explanatory evidence.