Skip to content

feat: add per-episode LeRobot manifest receipts - #387

Closed
victorwon2001 wants to merge 1 commit into
Hebbian-Robotics:mainfrom
victorwon2001:fix/issue-379
Closed

feat: add per-episode LeRobot manifest receipts#387
victorwon2001 wants to merge 1 commit into
Hebbian-Robotics:mainfrom
victorwon2001:fix/issue-379

Conversation

@victorwon2001

Copy link
Copy Markdown
Contributor

Summary

  • Upgrade prepared-manifest.json to schema version 3 and record filename, content_id, and size_bytes for every published LeRobot episode.
  • Reuse hflow.catalog.content_episode_id() on the staged canonical MCAP instead of introducing another hashing implementation.
  • Preserve the existing episodes_converted, dataset, camera, converter-version fields, public list[str] return contract, and manifest-last publication behavior.
  • Document the v3 receipt format. The verify command remains deferred as requested and can later consume this schema additively.

Fixes #379

Why

The previous manifest recorded only how many episodes were converted, so a delivered corpus had no per-file identity or size receipt. Recording those values at conversion time provides the required provenance without changing canonical MCAP bytes, CONVERTER_VERSION, transform behavior, or curation identity semantics.

Validation

  • uv run pytest -q tests/test_lerobot_converter.py tests/test_transform.py — 57 passed.
  • uv run ruff check --fix — passed with no changes.
  • uv run ruff format — passed; all 212 files unchanged.
  • uv run ty check — passed.
  • lychee --no-progress --include-fragments --exclude '^https://github\.com/Hebbian-Robotics/hflow/(issues|security/advisories/new)$' --exclude-path references/mcap-spec.md --exclude-path references/foxglove-CompressedVideo.proto . — 0 link errors.
  • uv run pytest -q — 1453 passed, 6 skipped, with one unrelated date-sensitive failure in test_preview_stats_render_timestamps_in_utc_on_a_non_utc_host: on 2026-09-04 the UTC timestamp itself contains the substring -04 that the test forbids.

Checklist

  • I added or updated outcome-focused tests for changed business logic.
  • I updated documentation for changed behavior, flags, formats, or requirements.
  • I ran uv run ruff check --fix, uv run ruff format, and uv run ty check.
  • I ran the relevant pytest suite.
  • I did not add recordings, generated media, credentials, private URLs, or runtime artifacts.
  • I preserved stored-data compatibility or documented an explicit version change.

@github-actions

github-actions Bot commented Sep 4, 2026

Copy link
Copy Markdown

👋 Hi @victorwon2001 — thanks for the contribution! To keep starter issues available
for other contributors and give every pull request a real review, we accept
1 open pull request per contributor at a time.

You already have #380 open, so this one is being closed automatically.
Once your open pull request is merged or closed, feel free to reopen this one —
no work is lost.

@github-actions github-actions Bot closed this Sep 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

prepared-manifest.json records how many episodes were converted but not which ones, so a corrupt or missing episode cannot be detected from the delivery

1 participant