dataset-reproduce
Deterministically rebuild a training dataset from a published manifest and verify that the rebuild matches the original via SHA-256 fixity comparison. Used to validate that a dataset published by dataset-version is genuinely reproducible, and to let third parties reconstruct a dataset from its manifest without access to the original artifacts.
Per the ML Reproducibility Checklist (REF-475), a dataset is "reproducible" only if an independent rebuild from the manifest produces byte-identical fixity hashes. This skill is the verifier.
When to Use
- Self-verification: immediately after
dataset-versionpublishes, rebuild and compare to catch non-determinism before the dataset is used for training - Third-party reproduction: an external consumer has the manifest and wants to rebuild the dataset from primary sources
- Regression check: when a pipeline config changes, rebuild an older dataset to confirm the change did not break determinism for prior versions
- Drift detection: a published dataset is suspected of drift — rebuild and identify which component (source, config, seed) diverged
Parameters
<manifest-path> (required)
Path to a datasets/<version>.yaml manifest published by dataset-version. The YAML is authoritative — sibling .json exports are ignored by this skill.
--compare-fixity (optional)
Compare rebuilt SHA-256 against the original fixity_manifest. Default: true. Disable only for partial rebuilds where comparison is not meaningful.
--workdir <path> (optional)
Scratch directory for the rebuild. Default: .aiwg/training/reproduce/<version>-<timestamp>/. Must be empty; the skill refuses to overwrite.
Operation
- Load manifest — parse
<manifest-path>as YAML; validate against the schema at@agentic/code/frameworks/training-complete/schemas/dataset-manifest.yaml. Resolvesources[],reproduction_recipe,seed, andsplit_counts. - Version compatibility check — compare manifest's
reproduction_recipe.aiwg_versionandtraining_complete_versionagainst the current runtime. On mismatch, emit aWARN— reproducibility across versions is not guaranteed. Proceeding is allowed but flagged in the report. - Acquire sources — for each entry in
sources[], invokeacquire-training-sourceusing the declaredref_id,license, and format. Fixity of each acquired source is checked against any upstream checksum; mismatch is a hard failure (the source has drifted). - Apply pipeline — replay the
reproduction_recipestep-for-step:generator_configsviasynthetic-data-generatorandexample-synthesizer;preference_configviapreference-generator;filter_thresholdsvia quality filters;decontamination_thresholdsviadecontamination-check. Format exports via the declaredformat_exportsadapters. - Seed determinism — every stochastic step (split assignment, shuffle, sampling, synthetic prompt sampling) uses the manifest's
seed. No new entropy is introduced. The same seed + same inputs + same configs MUST produce the same outputs. - Generate fixity — delegate to
integrity-verificationto emit a fresh SHA-256 manifest over the rebuilt dataset. - Compare and report — diff the rebuilt fixity manifest against the original
fixity_manifest. Emit per-file match/mismatch with a summary verdict (MATCH,PARTIAL,MISMATCH). Write the report.
Non-Determinism Sources
A mismatch does not always mean a bug. Known non-determinism sources to document in the report:
- Model API drift — synthesis or preference generation that called an external LLM may produce different tokens if the model was updated or quantization changed; pin to the exact model version declared in
reproduction_recipe.generator_configs. - External source drift — a web-scraped or HuggingFace source may have changed since the original publication; fixity of the acquired source catches this at step 3.
- Floating-point non-determinism — embedding generation on GPU is not bit-exact across hardware; quality filters that use embeddings may yield different accept/reject decisions on different GPUs.
- Filesystem ordering — implicit reliance on OS-specific directory iteration order; all pipeline steps MUST sort inputs before processing.
- Timestamp embedding — any field that records
created_atin a per-example record will always differ; these are excluded from fixity scope.
The report's "Mismatch Analysis" section classifies each divergence against this list.
Output
reports/reproduce-<version>-<timestamp>.md containing:
- Summary verdict (
MATCH/PARTIAL/MISMATCH) with example counts - Version compatibility block (manifest vs current runtime)
- Per-source acquisition fixity comparison
- Per-split rebuilt vs original fixity
- Mismatch analysis (classified against known non-determinism sources)
- Reproducibility block (seed used, configs loaded, adapter versions)
Delegation
- Source acquisition:
acquire-training-source(training-complete) - Synthesis replay:
example-synthesizer,synthetic-data-generator(training-complete) - Preference replay:
preference-generator(training-complete) - Format exports:
format-adapter-alpaca,format-adapter-sharegpt,format-adapter-chatml,format-adapter-jsonl,format-adapter-parquet - Decontamination check:
decontamination-check(training-complete) - Fixity generation:
@agentic/code/frameworks/media-curator/skills/integrity-verification/SKILL.md
Examples
# Self-verify a freshly-published dataset
dataset-reproduce datasets/2026.4.0.yaml
# Reproduce with explicit workdir and no fixity comparison (partial rebuild)
dataset-reproduce datasets/2026.4.0.yaml \
--workdir /tmp/repro-2026.4.0 \
--compare-fixity false
References
- REF-475 ML Reproducibility Checklist — authoritative reproducibility criteria
- REF-474 Dataset Versioning and Reproducibility
- ADR-022 — training-complete pipeline architecture
- Issue #844 — dataset-version skill (this skill's counterpart)
@agentic/code/frameworks/training-complete/schemas/dataset-manifest.yaml— manifest schema and validation rules