Mulligan dataset release plan
Inventory checked 2026-09-21; release copies verified 2026-09-22. All 246 existing HF repositories and two simulation evaluation bundles are public in mulligan. Per-repository receipts record pinned source revisions, payload checks, episode inventories and preserved Git history. The episode ancestry audit covers all 153 derived views, including six reconstructed by exact trajectory matching.
Release catalog · Policy Arena · Execution record.
The public Arena selects the mainline Marker D2, Square D2, Routing D2, Square-Narrow and Square-Broad results and their required training ancestry. The broader HF inventory also preserves explicitly named same-campaign ablation views. Standalone D1/pilot campaigns and unrelated simulations are excluded.
The canonical results decision selects the August 21 Square D2 R5 contemporaneous trio. The manuscript snapshots, tracker analyses, internal Arena classification and release export use that selection. Historical July studies remain explicitly labeled archives.
The full old-to-new mapping is mapping.csv. manifest.json adds commit pins, parent relationships, camera availability, licenses, file-inventory fingerprints, evidence, and repository-specific release checks. training-recipes.json translates all 46 locked simulation DIVL input lists and four declared final real-world critic train/eval lists. out-of-scope.csv accounts for the other 837 repositories returned by the source-namespace audit.
Organization
The organization is mulligan, display name
Mulligan. It was created on 2026-09-22. The dated namespace probes in
namespace-checks.json preserve the pre-registration
availability audit.
Inventory and release boundary
| Campaign | Raw collections | Training views | Policy rollouts | Eval recordings | Validation views | HF copies |
|---|---|---|---|---|---|---|
| Real Marker D2 | 6 | 17 | 15 | 11 | 1 | 50 |
| Real Square D2 | 6 | 17 | 20 | 9 | 1 | 53 |
| Real Routing D2 | 10 | 29 | 22 | 10 | 1 | 72 |
| Sim Square-Narrow | 4 | 13 | 17 | 0 | 0 | 34 |
| Sim Square-Broad | 4 | 17 | 16 | 0 | 0 | 37 |
| Total | 30 | 93 | 90 | 30 | 3 | 246 |
The release groups these into 110 mainline repositories, 103 supporting repositories, and 33 same-campaign ablation views. The ablation views include no-CF alternatives, simulation Sobol alternatives, and Broad R0 first100. They share recordings with mainline views and belong in a separate collection on the organization page. Keeping them reproduces the existing mainline comparisons without admitting unrelated experiments.
The audit examined all 1,116 publicly listed
ankile dataset repositories and pinned the metadata/file
trees of 279 campaign candidates. It excludes
33 candidates with explicit reasons in the mapping. Six
excluded candidates lack meta/info.json. The remaining
837 source repositories are listed separately. This is
an inventory of that namespace and the cited experiment contracts, not a
claim about unlisted data in other accounts or local-only
recordings.
| Campaign | Original recordings, excluding known derived views | Recorded episodes | Recorded trajectory hours |
|---|---|---|---|
| Real Marker D2 | 17 | 2,299 | 14.55 |
| Real Square D2 | 15 | 2,124 | 9.40 |
| Real Routing D2 | 20 | 3,184 | 25.26 |
| Sim Square-Narrow | 21 | 2,634 | 7.72 |
| Sim Square-Broad | 20 | 3,003 | 10.59 |
| Total | 93 | 13,244 | 67.51 |
These counts come from pinned meta/info.json, with known
split repositories removed using lineage or the cited split
configurations. They count recorded episodes, including repeated initial
states, and do not claim trajectory-content deduplication. Hours are
recorded frames divided by each dataset's FPS, not operator time. The
current trees to copy total 220.22 GB, including
derived views; this is neither git-history size nor a storage billing
estimate.
Names
All destination IDs use lowercase kebab case. Domain and task come first. Indexes have two digits so lexicographic order matches numeric order. Historical dates, seeds, checkpoints, quota details, and sampler parameters belong in the card and release metadata.
| Kind | Pattern | Example |
|---|---|---|
| Original teleop collection | {task}-cNN-teleop-mixed |
mulligan/real-marker-d2-c00-teleop-mixed |
| Original DAgger collection | {task}-cNN-dagger-mixed |
mulligan/real-routing-d2-c09-dagger-mixed |
| Teleop view | {task}-c00-teleop-{variant} |
mulligan/sim-square-broad-c00-teleop-sobol |
| DAgger view | {task}-cNN-dagger-{variant} |
mulligan/real-square-d2-c03-dagger-mulligan |
| Robot evaluation block | {task}-rNN-eval-bNN |
mulligan/real-marker-d2-r05-eval-b01 |
| Multi-round robot evaluation | {task}-rNN-rNN-eval-bNN |
mulligan/real-routing-d2-r00-r05-eval-b01 |
| Single-policy eval view | {eval-repo}-{method}-policy-rollouts |
mulligan/real-square-d2-r03-eval-b01-mulligan-dp-policy-rollouts |
| Sim production rollouts | {task}-cNN-{arm}-policy-rollouts |
mulligan/sim-square-narrow-c02-mulligan-policy-rollouts |
Task tokens are exactly real-marker-d2,
real-square-d2, real-routing-d2,
sim-square-narrow, and sim-square-broad.
DAgger variants are baseline, mulligan,
mining-no-cf, sobol-free-cf, and
sobol-no-cf. R0 treatment demos use sobol,
since no counterfactual collection occurred at R0.
validation is the held-out teleop view, not an autonomous
policy evaluation. The two Broad preview views retain the explicit
first100 suffix.
Robot policy-view method tokens are baseline-dp,
sobol-dp, mulligan-dp,
mulligan-idql, and mining-no-cf-dp. Simulation
autonomous comparator names retain auto-bc-n1-shared,
auto-filtered-bc-n1, auto-plain-il-n1,
auto-iql-n32, and auto-iql-success-bc-n32.
Their collection policy was historical scalar IQL even where the current
evaluated critic is DIVL. All autonomous rollout dataset names end in
policy-rollouts; the source names ending in
diagnostic-rollouts are normalized.
cNN identifies a collection increment. rNN
identifies an evaluated model round. bNN identifies a
distinct recorded evaluation session/block, never a dataset split. Block
numbers in the committed mapping are fixed release identities. If a
later block is added, append a number; do not rerun the original
ordering over a changed inventory and silently renumber existing
blocks.
Routing needs two round axes
| Public model round | Added original collection increments | Historical trained model round |
|---|---|---|
| R0 | C00 | R0 |
| R1 | C01 + C02 | R2 |
| R2 | C03 + C04 | R4 |
| R3 | C05 + C06 | R6 |
| R4 | C07 + C08 | R8 |
| R5 | C09 | R9 |
Do not merge those source repositories or relabel their collector policies. The earlier collections used the velocity lineage; C09 used UMI-relative collectors. The shared final evaluation contains 15 policies and 750 episodes in one original repository. It stays one repository with a policy/round lookup table. Source: Routing D2 lineage and executed analysis configuration.
Nine historical Routing evaluation parents and their 22 policy views
are included as dependencies. The final
critic input script uses 14 Ours rollout views for training and
eight baseline views for evaluation only. Their IDs use
legacy-rNN to retain their original evaluated model round.
This is the required Routing D2 training ancestry, not a release of the
retired Routing D1 campaign as a separate benchmark.
Evaluation identity and reuse
Marker R2 needs three source evaluation blocks; Square R3 needs
three. The current R5 headline uses
ankile/real01b-md2-r5-repeat-base-dp-filmtiidk4-c200k-n32-s2026070704
for Marker and the fresh-seed s2026081801 redo for Square.
Earlier R5 blocks stay supporting because their policy views exist in
the campaign. Source: the per-block summary paths in the manifest and line
configurations.
An evaluation recording can later become production evidence for
another critic. The Marker
R5 input script directly includes its earlier DP-versus-IQL
evaluation parent. Label a block's training eligibility per
consuming model, rather than promising global train/test
separation from its name. Preserve manifest_idx, seed,
visit/session identity, policy IDs, and original episode IDs. Same seed
alone does not make separate sessions the same physical reset. Keep
HU/Oracle diagnostic starts separate from production sampler fit.
Simulation evaluation bundles
Create mulligan/sim-square-narrow-r00-r03-eval and
mulligan/sim-square-broad-r00-r03-eval. These are result
datasets built from existing artifacts, not existing LeRobot
repositories to duplicate. evaluation-bundles.json enumerates
their cells, locked grids, source file patterns, and separate
probe-campaign roots. The production rollout datasets in the copy map
are not substitutes for held-out grids.
The authoritative inventory is full_protocol.yaml, with 46 cells and five seeds per cell. Include its dataset revision pins, cell/arm/filter definitions, original actor artifacts, current DIVL artifacts, state manifests, and manifest hashes. The result ledger names all 230 seed results. training-recipes.json maps every declared HF input.
For each cell/seed, package the exact files consumed by the ingestion code: the current locked-grid result or all required shards, plus the pinned parent comparison where released. Probe cells use the earlier probe campaign paths handled by that ingestion code. Add canonical N=1 and iterative-IL comparator records from grid.csv and the paper-baseline registry; mark scalar-IQL comparison results as historical. Archive the locked 8,000-state Narrow and 30,000-state Broad grids with their seeds and hashes. The mainline publication manifest supplies verified public artifact locations for the released aggregate outputs.
This audit verified the protocol, source paths, and aggregate result ledger, but did not hydrate and inspect every simulation grid shard. Before packaging, resolve each raw artifact through the S3 consumer, verify the grid hash and expected point count, and enumerate every missing file. Never substitute a CSV success rate for missing per-rollout records while calling the bundle full trajectories. The paper simulation evidence record explicitly documents missing historical speed/throughput episode records. Publish those as aggregate-only evidence if they cannot be recovered. Do not regenerate evaluations silently and present new outcomes as original recordings.
Copy and verify
- Register the organization, grant the publishing account write access, and fix the namespace in the manifest. Create an organization card and five HF Collections, one per task, with links to mainline, supporting, and ablation data.
- Freeze the selected source SHAs. Every selected source currently has
main == v3.0; all 52 distinct HF inputs pinned by the full simulation protocol match the audited current main. Recheck immediately before each copy. Execution uses the pinned cross-repository file-copy API and transfers source Git history tosource-main. Destinationmainhas its own release metadata commit. Require the source head and source payload fingerprint to match the audit before and after copying; compare payload identities rather than expecting source/destination main commit IDs to match. Copy into private staging repositories first. - Copy the 93 original repositories, then the 153 derived repositories
in parent-first order. Leave
ankilesources intact. Useexist_ok=False; an existing destination requires a content comparison, not automatic acceptance. Record source SHA, destination SHA, file inventory, tree bytes, and operation time per row. A pilot copy of one small state dataset and one real camera dataset must pass before batching the remaining copies. API behavior has been checked in installed source and official documentation; simulation and camera pilots passed on 2026-09-22; see the execution ledger. The duplicate endpoint was limited to 15 repositories/day, so the copier uses the documented file-copy API plus Git history transfer. - Verify the unmodified destination tree against the pinned source
using every path, byte size, Git blob ID, and LFS SHA-256. Verify
historical source commits and required tags remain accessible. Then make
one reviewed metadata-only release commit per repository. Archive
original lineage under
meta/source_dataset_lineage.jsonbefore normalizing current identity fields. Remaprepo_id,parent_repo_id,derived_repos,derived_repo_ids,mutually_exclusive_with, and repository prefixes inview_family_idusing the complete map. Keep original task/round/policy identity, embedded SHA-pinned manifests, episode IDs, and source references as provenance; add release aliases inmeta/release.json. Do not rename observation columns, transform actions, trim episodes, relabel outcomes, or re-encode video as part of copying. - For the 54 selected repositories without lineage JSON, build explicit release lineage from the cited split scripts and available split sidecars. Sim R0/R1 need particular care. Check every derived episode against its original parent; keep no-CF/free-CF mutual exclusion and CF donor links. Fail on an unresolved parent or an episode mapping gap. Counts alone cannot establish this mapping.
- Standardize dataset cards. Include task and reset distribution,
domain, collection/model round axes, data role, sampler, collection
policy and consumer policies, action convention, camera keys, FPS,
episode/frame totals, label revision/review coverage, license, source
SHA, parent/child links, and train/validation/test use per model. The
selected cards declare
apache-2.0; preserve that declaration. The repository's LeRobot push API defaults to that license, so the card string alone is not an independent release-rights review. Document the 25 two-camera real repositories accurately. Route serial-name mappings through verified station metadata if encountered; do not invent camera mappings. - Preserve Routing's frozen
4a7ea324753a6723dd83a9f8f0da91dd52dbe2d0label snapshot. It has 502 human-reviewed episodes plus 248 eval-time labels according to its committed provenance. It also remains the audited current main. Any subsequent review gets a new version and a separate result table. Distinguish machine stage predictions from reviewed labels. - Run a fresh-cache LeRobot read at the destination SHA. Validate active episode metadata references, episode/frame counts, source flags, CF links, outcome/timing fields, action/proprio schemas, and video frame alignment. Decode representative frames and inspect episodes from each recording schema and collection/eval family. Check payload hashes again after metadata edits so the data/video bytes remain unchanged. This audit did not download or visually inspect trajectory/video payloads; that is an execution gate.
- Point destination
v3.0at the release commit after metadata edits, and create a separate immutable release tag. Publish exact source-to-release SHA pairs. Thev3.0tag is loader compatibility, not the release version. Training/eval examples should use the immutable release revision. Keep the source repos and historical script references intact; update new release configs and the website through the mapping. - Package and verify both simulation evaluation bundles. Render the catalog from the final manifest, enable destination links only for verified public repositories, then make the staged datasets public and expose the task Collections. Check each public file anonymously, open the page, and test its task/role/round filters and parent links. If verification fails, keep that destination private and report it; never delete or redirect the source as rollback.
Copying is recommended because historical experiment scripts and caches already identify the source namespace. HF also supports transfers with redirects, documented in repository settings, but this plan makes independent release copies with explicit lineage.
Overview page
The generated page uses this manifest directly. It starts with the five task totals and a collection-to-evaluation explanation, then provides search and filters for task, role, tier, and model round. Every row shows its proposed release name, linked pinned source, episode count, parent, and any outstanding release checks. Proposed destination names stay plain text until publication is verified. Excluded candidates remain inspectable behind a filter.
The page is a planning catalog, not a claim that the release is live. Its generated HTML and downloadable manifests can be hosted on S3 for review and later linked from the paper website and HF organization card.
Reproduce the plan
Run from the repository root. Raw audit caches are disposable; the committed mapping is the review record. Refreshing against mutable source main produces a new proposed plan and requires a diff before adopting changes.
uv run python experiments/2026-08-27/01_audit_real_hf_datasets.py --author ankile --output /tmp/mulligan-release-audit/all_info.json --workers 8
uv run python experiments/2026-09-21/03_audit_mulligan_release.py --inventory /tmp/mulligan-release-audit/all_info.json --cache /tmp/mulligan-release-audit/details --workers 4
uv run python experiments/2026-09-21/04_build_mulligan_release_plan.py --audit /tmp/mulligan-release-audit/details/candidates.json --inventory /tmp/mulligan-release-audit/all_info.json --namespace-checks docs/mulligan-release/namespace-checks.json --output docs/mulligan-release
uv run python experiments/2026-09-21/05_render_mulligan_release.py --manifest docs/mulligan-release/manifest.json --output /tmp/mulligan-release-preview/index.htmlThe namespace-check file records the dated observations; these reproduction commands do not recheck or reserve the name. Keep the HF source data unchanged until the plan's copy, lineage, and payload-verification steps are executed.