openbot-data 0.0.2__tar.gz → 0.0.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- openbot_data-0.0.3/CHANGELOG.md +103 -0
- {openbot_data-0.0.2 → openbot_data-0.0.3}/PKG-INFO +104 -11
- {openbot_data-0.0.2 → openbot_data-0.0.3}/README.md +99 -8
- openbot_data-0.0.3/VERSION +1 -0
- openbot_data-0.0.3/docs/README.md +36 -0
- openbot_data-0.0.3/docs/api-reference.md +426 -0
- openbot_data-0.0.3/docs/audit-findings.md +99 -0
- openbot_data-0.0.3/docs/examples/audit.json +96 -0
- openbot_data-0.0.3/docs/examples/v0.0.3/README.md +23 -0
- openbot_data-0.0.3/docs/examples/v0.0.3/audit.json +296 -0
- openbot_data-0.0.3/docs/examples/v0.0.3/catalog-evidence.json +1064 -0
- openbot_data-0.0.3/docs/examples/v0.0.3/diff.json +32 -0
- openbot_data-0.0.3/docs/examples/v0.0.3/merge-plan.json +410 -0
- openbot_data-0.0.3/docs/examples/v0.0.3/merge-receipt.json +4780 -0
- openbot_data-0.0.3/docs/examples/v0.0.3/readiness.json +363 -0
- openbot_data-0.0.3/docs/examples/v0.0.3/repair-plan.json +1088 -0
- openbot_data-0.0.3/docs/examples/v0.0.3/repair-receipt.json +2158 -0
- openbot_data-0.0.3/docs/examples/v0.0.3/snapshot.json +604 -0
- openbot_data-0.0.3/docs/getting-started.md +280 -0
- openbot_data-0.0.3/docs/reference-libraries.md +520 -0
- {openbot_data-0.0.2 → openbot_data-0.0.3}/docs/version-0.0.2.md +5 -5
- openbot_data-0.0.3/docs/version-0.0.3.md +1143 -0
- openbot_data-0.0.3/openbot_data/__init__.py +102 -0
- openbot_data-0.0.3/openbot_data/adapters/__init__.py +381 -0
- openbot_data-0.0.3/openbot_data/adapters/_common.py +453 -0
- openbot_data-0.0.3/openbot_data/adapters/base.py +235 -0
- openbot_data-0.0.3/openbot_data/adapters/lerobot_v21.py +606 -0
- openbot_data-0.0.3/openbot_data/adapters/lerobot_v30.py +1097 -0
- openbot_data-0.0.3/openbot_data/audit/__init__.py +47 -0
- openbot_data-0.0.3/openbot_data/audit/models.py +279 -0
- openbot_data-0.0.3/openbot_data/audit/registry.py +939 -0
- openbot_data-0.0.3/openbot_data/audit/rules/__init__.py +5 -0
- openbot_data-0.0.3/openbot_data/audit/rules/media.py +144 -0
- openbot_data-0.0.3/openbot_data/audit/runner.py +664 -0
- openbot_data-0.0.3/openbot_data/catalog.py +137 -0
- openbot_data-0.0.3/openbot_data/catalog_evidence.py +580 -0
- openbot_data-0.0.3/openbot_data/cli.py +758 -0
- openbot_data-0.0.3/openbot_data/diff.py +667 -0
- {openbot_data-0.0.2 → openbot_data-0.0.3}/openbot_data/extract.py +18 -6
- openbot_data-0.0.3/openbot_data/hub.py +1612 -0
- openbot_data-0.0.3/openbot_data/hub_audit.py +377 -0
- openbot_data-0.0.3/openbot_data/merge.py +2322 -0
- {openbot_data-0.0.2 → openbot_data-0.0.3}/openbot_data/models.py +28 -0
- openbot_data-0.0.3/openbot_data/official.py +69 -0
- openbot_data-0.0.3/openbot_data/preflight.py +1678 -0
- openbot_data-0.0.3/openbot_data/profiles/__init__.py +1 -0
- openbot_data-0.0.3/openbot_data/profiles/hf-publication-v1.json +28 -0
- openbot_data-0.0.3/openbot_data/profiles/lerobot-act-v1.json +58 -0
- openbot_data-0.0.3/openbot_data/profiles/lerobot-core-v1.json +31 -0
- openbot_data-0.0.3/openbot_data/profiles/lerobot-smolvla-v1.json +65 -0
- openbot_data-0.0.3/openbot_data/profiles/training-common-v1.json +45 -0
- openbot_data-0.0.3/openbot_data/readiness.py +1824 -0
- openbot_data-0.0.3/openbot_data/repair.py +1788 -0
- {openbot_data-0.0.2 → openbot_data-0.0.3}/openbot_data/schema.py +9 -0
- openbot_data-0.0.3/openbot_data/schemas/catalog-evidence-v1.schema.json +241 -0
- openbot_data-0.0.3/openbot_data/schemas/dataset-audit-v1.schema.json +176 -0
- openbot_data-0.0.3/openbot_data/schemas/dataset-catalog-v1.schema.json +75 -0
- openbot_data-0.0.3/openbot_data/schemas/dataset-diff-v1.schema.json +78 -0
- openbot_data-0.0.3/openbot_data/schemas/dataset-merge-plan-v1.schema.json +156 -0
- openbot_data-0.0.3/openbot_data/schemas/dataset-merge-receipt-v1.schema.json +163 -0
- openbot_data-0.0.3/openbot_data/schemas/dataset-readiness-v1.schema.json +219 -0
- openbot_data-0.0.3/openbot_data/schemas/dataset-repair-plan-v1.schema.json +317 -0
- openbot_data-0.0.3/openbot_data/schemas/dataset-repair-receipt-v1.schema.json +255 -0
- openbot_data-0.0.3/openbot_data/schemas/dataset-snapshot-v1.schema.json +449 -0
- {openbot_data-0.0.2 → openbot_data-0.0.3}/openbot_data/serialization.py +10 -5
- openbot_data-0.0.3/openbot_data/snapshot.py +757 -0
- openbot_data-0.0.3/openbot_data/triage.py +715 -0
- openbot_data-0.0.3/openbot_data/validation.py +2770 -0
- {openbot_data-0.0.2 → openbot_data-0.0.3}/pyproject.toml +5 -2
- openbot_data-0.0.3/scripts/generate_v003_examples.py +256 -0
- {openbot_data-0.0.2 → openbot_data-0.0.3}/scripts/test_matrix.sh +5 -1
- openbot_data-0.0.3/tests/fixtures/competitor-outcomes-v003.json +98 -0
- {openbot_data-0.0.2 → openbot_data-0.0.3}/tests/test_acceptance_v002.py +185 -1
- openbot_data-0.0.3/tests/test_audit_rules.py +354 -0
- openbot_data-0.0.3/tests/test_catalog.py +142 -0
- openbot_data-0.0.3/tests/test_catalog_evidence.py +327 -0
- openbot_data-0.0.3/tests/test_cli_v003.py +585 -0
- openbot_data-0.0.3/tests/test_competitor_outcomes.py +144 -0
- openbot_data-0.0.3/tests/test_examples_v003.py +59 -0
- openbot_data-0.0.3/tests/test_hub.py +731 -0
- openbot_data-0.0.3/tests/test_hub_audit.py +294 -0
- openbot_data-0.0.3/tests/test_layered_validation.py +825 -0
- openbot_data-0.0.3/tests/test_lerobot_adapters.py +627 -0
- openbot_data-0.0.3/tests/test_merge.py +819 -0
- openbot_data-0.0.3/tests/test_official_lerobot_conformance.py +153 -0
- {openbot_data-0.0.2 → openbot_data-0.0.3}/tests/test_openbot_data.py +1 -0
- openbot_data-0.0.3/tests/test_p01_correctness.py +687 -0
- openbot_data-0.0.3/tests/test_readiness.py +866 -0
- openbot_data-0.0.3/tests/test_repair.py +587 -0
- openbot_data-0.0.3/tests/test_snapshot_contract_v003.py +198 -0
- openbot_data-0.0.3/tests/test_snapshot_diff.py +482 -0
- openbot_data-0.0.2/CHANGELOG.md +0 -38
- openbot_data-0.0.2/VERSION +0 -1
- openbot_data-0.0.2/docs/README.md +0 -25
- openbot_data-0.0.2/docs/api-reference.md +0 -203
- openbot_data-0.0.2/docs/audit-findings.md +0 -32
- openbot_data-0.0.2/docs/examples/audit.json +0 -11
- openbot_data-0.0.2/docs/getting-started.md +0 -161
- openbot_data-0.0.2/openbot_data/__init__.py +0 -51
- openbot_data-0.0.2/openbot_data/catalog.py +0 -92
- openbot_data-0.0.2/openbot_data/cli.py +0 -185
- openbot_data-0.0.2/openbot_data/preflight.py +0 -859
- openbot_data-0.0.2/openbot_data/schemas/dataset-audit-v1.schema.json +0 -37
- {openbot_data-0.0.2 → openbot_data-0.0.3}/.gitignore +0 -0
- {openbot_data-0.0.2 → openbot_data-0.0.3}/LICENSE +0 -0
- {openbot_data-0.0.2 → openbot_data-0.0.3}/docs/examples/manifest.json +0 -0
- {openbot_data-0.0.2 → openbot_data-0.0.3}/examples/local_preflight.py +0 -0
- {openbot_data-0.0.2 → openbot_data-0.0.3}/openbot_data/errors.py +0 -0
- {openbot_data-0.0.2 → openbot_data-0.0.3}/openbot_data/py.typed +0 -0
- {openbot_data-0.0.2 → openbot_data-0.0.3}/openbot_data/schemas/__init__.py +0 -0
- {openbot_data-0.0.2 → openbot_data-0.0.3}/openbot_data/schemas/dataset-manifest-v1.schema.json +0 -0
- {openbot_data-0.0.2 → openbot_data-0.0.3}/openbot_data/video.py +0 -0
- {openbot_data-0.0.2 → openbot_data-0.0.3}/scripts/check_version.py +0 -0
- {openbot_data-0.0.2 → openbot_data-0.0.3}/tests/fixtures/lerobot-v2/meta/episodes.jsonl +0 -0
- {openbot_data-0.0.2 → openbot_data-0.0.3}/tests/fixtures/lerobot-v2/meta/info.json +0 -0
- {openbot_data-0.0.2 → openbot_data-0.0.3}/tests/fixtures/lerobot-v3/meta/episodes/chunk-000/file-000.jsonl +0 -0
- {openbot_data-0.0.2 → openbot_data-0.0.3}/tests/fixtures/lerobot-v3/meta/info.json +0 -0
- {openbot_data-0.0.2 → openbot_data-0.0.3}/tests/test_preflight.py +0 -0
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 0.0.3 - 2026-07-28
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
- Explicit immutable LeRobot v2.1 and v3.0 adapters, including read-only v2.1
|
|
7
|
+
migration guidance and direct stable-contract validation without importing
|
|
8
|
+
the full LeRobot package.
|
|
9
|
+
- Layered collect-all metadata, schema, data, media, alignment, statistics, and
|
|
10
|
+
provenance validation with declared capability coverage.
|
|
11
|
+
- Portable `openbot.dataset_snapshot.v1` identities and strict semantic
|
|
12
|
+
`openbot.dataset_diff.v1` classification.
|
|
13
|
+
- Revision-pinned Hugging Face resolution with hard byte/shard/episode/media
|
|
14
|
+
budgets and explicit metadata/sample/full coverage.
|
|
15
|
+
- Built-in LeRobot core, common training, Hub publication, ACT, and SmolVLA
|
|
16
|
+
readiness profiles plus strict policy-config overrides and deterministic
|
|
17
|
+
JSON/Markdown gates.
|
|
18
|
+
- Actionable-location triage and raw advisory evidence for flatline actions,
|
|
19
|
+
zero-variance state, duplicate episodes, and camera/task imbalance, including
|
|
20
|
+
non-executing synchronized idle-trim plans and no aggregate dataset score.
|
|
21
|
+
- Deterministic repair plans, copy-on-write allowlisted metadata repair, and
|
|
22
|
+
verified receipts with stale-source and partial-destination protection.
|
|
23
|
+
- Four-way merge compatibility plans and post-operation verification for the
|
|
24
|
+
pinned official `lerobot-edit-dataset` merge.
|
|
25
|
+
- Optional pinned official LeRobot loader smoke tests in repair and merge CLI
|
|
26
|
+
verification.
|
|
27
|
+
- Pinned `lerobot-doctor==0.2.0` and `robovet==0.2.2` outcome-comparison
|
|
28
|
+
evidence for the critical stale-frame-counter workflow.
|
|
29
|
+
- Python 3.9–3.12 CI and local matrix coverage for the Parquet and Hub extras,
|
|
30
|
+
preventing optional-feature tests from being silently skipped.
|
|
31
|
+
- A separate Python 3.12 conformance job that creates and finalizes a real
|
|
32
|
+
shared-shard video dataset with `lerobot[dataset]==0.6.0`, then proves full
|
|
33
|
+
audit, ACT/SmolVLA readiness, quantile/unknown-field compatibility, and
|
|
34
|
+
official first/middle/last loader access.
|
|
35
|
+
- `build_catalog_evidence()` and the `catalog-evidence` CLI command for a
|
|
36
|
+
score-free, versioned handoff from one prepared local audit to OpenBot
|
|
37
|
+
Catalog.
|
|
38
|
+
- The packaged `catalog-evidence-v1` JSON Schema, deterministic cross-language
|
|
39
|
+
typed-tree fingerprint, portable source identity, coverage, evidence maturity,
|
|
40
|
+
facts, findings, and unresolved-check reporting.
|
|
41
|
+
- A versioned `openbot.dataset_catalog.v1` JSON catalog schema and shared
|
|
42
|
+
immutable-snapshot rendering across inspect, audit, and catalog output.
|
|
43
|
+
- Structured findings for malformed episode lengths, duplicate indexes, invalid
|
|
44
|
+
video relations and paths, segment bounds/overlap/duration, and explicit
|
|
45
|
+
symlink skip/broken states.
|
|
46
|
+
|
|
47
|
+
### Changed
|
|
48
|
+
- V3 data-shard episode ranges are validated as dataset-global offsets, matching
|
|
49
|
+
the official multi-shard LeRobot 0.6.0 writer and merge tool.
|
|
50
|
+
- Canonical video features are no longer incorrectly required as data-Parquet
|
|
51
|
+
columns; LeRobot v3 stores them in `videos/**`.
|
|
52
|
+
- Snapshot Schema accepts the official writer's `names: null` standard-column
|
|
53
|
+
contract while retaining strict component and top-level fingerprints.
|
|
54
|
+
- `sample` integrity now probes deterministic start, middle, and end positions
|
|
55
|
+
while preserving the existing manifest v1 decoded-count projection and
|
|
56
|
+
fingerprint behavior.
|
|
57
|
+
- LeRobot v2.1 and v3 discovery now checks every declared camera for every
|
|
58
|
+
episode and validates shared-video segment bounds with a one-frame duration
|
|
59
|
+
tolerance.
|
|
60
|
+
- Caller-supplied snapshots are validated against the requested root, resolved
|
|
61
|
+
input format, checksum coverage, integrity coverage, and symlink policy before
|
|
62
|
+
any renderer writes output.
|
|
63
|
+
|
|
64
|
+
### Documentation
|
|
65
|
+
- Defined the complete `0.0.3` feature and release contract, including the
|
|
66
|
+
canonical P0 feature map, public artifacts and commands, implementation
|
|
67
|
+
checkpoint, integrity/coverage semantics, uniform exit classes, scope
|
|
68
|
+
boundaries, implementation order, and release acceptance criteria.
|
|
69
|
+
|
|
70
|
+
## 0.0.2
|
|
71
|
+
|
|
72
|
+
### Added
|
|
73
|
+
- Single-source package versioning with CI and release-tag validation.
|
|
74
|
+
- Versioned, reproducible `openbot.dataset_manifest.v1` output with relative paths,
|
|
75
|
+
dataset fingerprints, and optional SHA-256 checksums.
|
|
76
|
+
- Read-only local LeRobot v2.1/v3 discovery for episodes and video streams.
|
|
77
|
+
- Deterministic dataset audit findings, duplicate detection, and `audit` CLI command.
|
|
78
|
+
- Runnable local preflight demo, developer documentation, API/CLI reference, and
|
|
79
|
+
shipped LeRobot acceptance fixtures.
|
|
80
|
+
- Acceptance scenarios for every documented finding code and a local Python
|
|
81
|
+
3.9–3.12 test-matrix command.
|
|
82
|
+
|
|
83
|
+
### Changed
|
|
84
|
+
- `inspect` now supports `--format auto|video|lerobot` and optional checksums.
|
|
85
|
+
- Unreadable media now continues through the specific FPS, duration, dimensions,
|
|
86
|
+
and preview-decode audit rules instead of stopping at the generic finding.
|
|
87
|
+
|
|
88
|
+
## 0.0.1.post2
|
|
89
|
+
|
|
90
|
+
### Added
|
|
91
|
+
- `export_catalog()` Python API and `openbot-data catalog` CLI command for JSON/CSV catalog export.
|
|
92
|
+
- SEO-optimized README and `pyproject.toml` keywords (`robot data`, `ego data`, `egocentric data`, `embodied AI`, etc.).
|
|
93
|
+
- GitHub Actions CI workflow for Python 3.9–3.12.
|
|
94
|
+
- This changelog.
|
|
95
|
+
|
|
96
|
+
## 0.0.1.post1
|
|
97
|
+
|
|
98
|
+
### Added
|
|
99
|
+
- Initial preview release.
|
|
100
|
+
- Video directory scanning and metadata extraction.
|
|
101
|
+
- Preview frame extraction.
|
|
102
|
+
- Manifest and report generation.
|
|
103
|
+
- `openbot-data` CLI with `scan`, `inspect`, and `version` commands.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: openbot-data
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.3
|
|
4
4
|
Summary: Inspect robot video datasets and generate manifests, previews, and catalogs.
|
|
5
5
|
Project-URL: Homepage, https://openbot.ai/data
|
|
6
6
|
Project-URL: Documentation, https://openbot.ai/api/docs#data-recipe
|
|
@@ -22,17 +22,19 @@ Classifier: Programming Language :: Python :: 3.12
|
|
|
22
22
|
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
23
23
|
Classifier: Topic :: Scientific/Engineering :: Image Processing
|
|
24
24
|
Requires-Python: >=3.9
|
|
25
|
+
Requires-Dist: jsonschema>=4.18.0
|
|
25
26
|
Requires-Dist: numpy>=1.24.0
|
|
26
27
|
Requires-Dist: opencv-python>=4.8.0
|
|
27
28
|
Requires-Dist: tqdm>=4.65.0
|
|
28
29
|
Requires-Dist: typer>=0.9.0
|
|
29
30
|
Provides-Extra: dev
|
|
30
31
|
Requires-Dist: build>=1.0.0; extra == 'dev'
|
|
31
|
-
Requires-Dist: jsonschema>=4.18.0; extra == 'dev'
|
|
32
32
|
Requires-Dist: mypy<1.19,>=1.11.0; extra == 'dev'
|
|
33
|
-
Requires-Dist: pytest>=
|
|
33
|
+
Requires-Dist: pytest>=8.2.0; extra == 'dev'
|
|
34
34
|
Requires-Dist: ruff>=0.6.0; extra == 'dev'
|
|
35
35
|
Requires-Dist: twine>=6.2.0; extra == 'dev'
|
|
36
|
+
Provides-Extra: hub
|
|
37
|
+
Requires-Dist: huggingface-hub>=0.27.0; extra == 'hub'
|
|
36
38
|
Provides-Extra: lerobot
|
|
37
39
|
Requires-Dist: pyarrow>=17.0.0; extra == 'lerobot'
|
|
38
40
|
Description-Content-Type: text/markdown
|
|
@@ -58,7 +60,9 @@ evaluation.
|
|
|
58
60
|
pip install openbot-data
|
|
59
61
|
```
|
|
60
62
|
|
|
61
|
-
|
|
63
|
+
PyPI currently installs the released `0.0.2` package. The source tree is the
|
|
64
|
+
`0.0.3` release candidate: its P0 interfaces and local release gates pass, but it
|
|
65
|
+
has not been published. Requires Python 3.9+.
|
|
62
66
|
|
|
63
67
|
## Runnable demo
|
|
64
68
|
|
|
@@ -87,6 +91,13 @@ one immutable `DatasetSnapshot` across both renderers.
|
|
|
87
91
|
- **Export dataset catalogs** — JSON or CSV for dataset registries, documentation, and SEO-friendly catalog pages.
|
|
88
92
|
- **Discover local LeRobot data** — read-only episode and video-stream discovery for v2.1/v3 layouts.
|
|
89
93
|
- **Audit before training or upload** — stable error/warning codes without an uncalibrated quality score.
|
|
94
|
+
- **Snapshot and diff datasets** — portable component fingerprints and semantic change classes.
|
|
95
|
+
- **Gate ACT and SmolVLA readiness** — distinguish `READY`, `BLOCKED`, and incomplete `PARTIAL` evidence.
|
|
96
|
+
- **Audit pinned Hub revisions** — resolve branches/tags to immutable commits under hard download budgets.
|
|
97
|
+
- **Repair conservatively** — plan and apply only unambiguous derived metadata changes to a new copy.
|
|
98
|
+
- **Verify official merges** — check compatibility before merge, then reconcile lineage, loader, audit, and diff evidence.
|
|
99
|
+
- **Hand off score-free Catalog evidence** — emit versioned facts, coverage,
|
|
100
|
+
findings, and unresolved checks for server-side evaluation.
|
|
90
101
|
|
|
91
102
|
## CLI
|
|
92
103
|
|
|
@@ -128,11 +139,59 @@ openbot-data catalog ./robot_videos --out ./catalog.csv --format csv
|
|
|
128
139
|
The catalog is designed to be checked into GitHub or linked from a dataset registry
|
|
129
140
|
page such as [OpenBot.ai Datasets](https://openbot.ai/datasets).
|
|
130
141
|
|
|
142
|
+
### Build Catalog evidence from a completed local audit
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
openbot-data catalog-evidence ./robot_videos \
|
|
146
|
+
--dataset-id org/dataset \
|
|
147
|
+
--checked-at 2026-07-28T12:00:00Z \
|
|
148
|
+
--out ./catalog-evidence.json
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
The artifact contains no Overall score or normalized dimension score. OpenBot
|
|
152
|
+
Catalog remains responsible for evaluation, review, and publication.
|
|
153
|
+
|
|
154
|
+
### Snapshot, diff, and readiness
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
openbot-data snapshot ./lerobot_dataset \
|
|
158
|
+
--format lerobot --integrity full --out ./dataset.snapshot.json
|
|
159
|
+
|
|
160
|
+
openbot-data diff ./baseline.snapshot.json ./dataset.snapshot.json \
|
|
161
|
+
--out ./dataset.diff.json --fail-on breaking
|
|
162
|
+
|
|
163
|
+
openbot-data readiness ./lerobot_dataset \
|
|
164
|
+
--profile lerobot-smolvla --integrity full \
|
|
165
|
+
--out ./readiness.json --markdown ./readiness.md
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
### Repair and merge verification
|
|
169
|
+
|
|
170
|
+
```bash
|
|
171
|
+
openbot-data repair plan ./dataset --integrity full --out ./repair.plan.json
|
|
172
|
+
openbot-data repair apply ./dataset \
|
|
173
|
+
--plan ./repair.plan.json --output ./dataset.repaired
|
|
174
|
+
|
|
175
|
+
openbot-data merge-check ./dataset-a ./dataset-b --out ./merge.plan.json
|
|
176
|
+
openbot-data verify-merge ./merged \
|
|
177
|
+
--input ./dataset-a.snapshot.json \
|
|
178
|
+
--input ./dataset-b.snapshot.json \
|
|
179
|
+
--operation-record ./official-operation.json \
|
|
180
|
+
--out ./merge.receipt.json
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
Physical merge stays with `lerobot-edit-dataset` from
|
|
184
|
+
`lerobot[dataset]==0.6.0`; OpenBot only plans and verifies it.
|
|
185
|
+
|
|
131
186
|
## Python API
|
|
132
187
|
|
|
133
188
|
```python
|
|
134
189
|
from openbot_data import (
|
|
135
190
|
audit_dataset,
|
|
191
|
+
build_catalog_evidence,
|
|
192
|
+
build_dataset_snapshot,
|
|
193
|
+
diff_dataset_snapshots,
|
|
194
|
+
evaluate_dataset_readiness,
|
|
136
195
|
export_catalog,
|
|
137
196
|
inspect_dataset,
|
|
138
197
|
prepare_dataset,
|
|
@@ -168,6 +227,27 @@ audit = audit_dataset("./robot_videos", snapshot=snapshot)
|
|
|
168
227
|
# Discover episodes and camera streams in a local LeRobot repository
|
|
169
228
|
lerobot = read_lerobot("./lerobot_dataset")
|
|
170
229
|
|
|
230
|
+
# Produce score-free evidence for server-side Catalog evaluation
|
|
231
|
+
evidence = build_catalog_evidence(
|
|
232
|
+
"./robot_videos",
|
|
233
|
+
dataset_id="org/dataset",
|
|
234
|
+
checked_at="2026-07-28T12:00:00Z",
|
|
235
|
+
output_path="./catalog-evidence.json",
|
|
236
|
+
)
|
|
237
|
+
|
|
238
|
+
portable = build_dataset_snapshot(
|
|
239
|
+
"./lerobot_dataset",
|
|
240
|
+
input_format="lerobot",
|
|
241
|
+
integrity="full",
|
|
242
|
+
)
|
|
243
|
+
readiness = evaluate_dataset_readiness(
|
|
244
|
+
"./lerobot_dataset",
|
|
245
|
+
profile="lerobot-act",
|
|
246
|
+
integrity="full",
|
|
247
|
+
dataset_snapshot=portable,
|
|
248
|
+
)
|
|
249
|
+
change = diff_dataset_snapshots(portable, portable)
|
|
250
|
+
|
|
171
251
|
# Packaged JSON Schemas are stable independently of the package version
|
|
172
252
|
with schema_path("manifest") as manifest_schema:
|
|
173
253
|
print(manifest_schema)
|
|
@@ -200,11 +280,14 @@ and `CHANGELOG.md`, verify locally, then publish a GitHub Release whose tag is
|
|
|
200
280
|
|
|
201
281
|
## Status
|
|
202
282
|
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
the
|
|
283
|
+
The released PyPI package is `0.0.2`; the current source version is `0.0.3` and
|
|
284
|
+
its local release gate passes. No tag, GitHub Release, or PyPI publication has
|
|
285
|
+
been performed. OpenBot Data remains an early local Python toolkit. Hosted upload,
|
|
286
|
+
annotation, review, export, billing, Workers, and Container infrastructure
|
|
287
|
+
belong to the main [OpenBot](https://github.com/openbotai/OpenBot) product
|
|
288
|
+
repository. Use the separate
|
|
289
|
+
[`openbot-sdk`](https://github.com/openbotai/openbot-sdk) package to call the
|
|
290
|
+
hosted API.
|
|
208
291
|
|
|
209
292
|
## Roadmap
|
|
210
293
|
|
|
@@ -214,10 +297,20 @@ the hosted API.
|
|
|
214
297
|
- [x] JSON/CSV catalog export
|
|
215
298
|
- [x] [`0.0.2`: local dataset preflight](docs/version-0.0.2.md), including a
|
|
216
299
|
versioned manifest, deterministic audit findings, and local LeRobot discovery
|
|
217
|
-
- [
|
|
218
|
-
|
|
300
|
+
- [x] [`0.0.3`: LeRobot compatibility and dataset change control](docs/version-0.0.3.md),
|
|
301
|
+
with correctness closure, explicit v2.1/v3 adapters, layered validation,
|
|
302
|
+
portable snapshots, semantic diff, revision-pinned Hub audit, readiness
|
|
303
|
+
profiles, evidence triage, conservative repair, and merge verification.
|
|
304
|
+
P0 interfaces, the package version, clean install, Python matrix,
|
|
305
|
+
artifacts, official conformance, and local release checks pass. Public
|
|
306
|
+
release remains a separate explicit action.
|
|
307
|
+
- [ ] Later: read-only robomimic/HDF5 and RLDS/Open X adapters
|
|
308
|
+
- [ ] Later: advanced episode-quality signals and any aggregate score only after
|
|
309
|
+
labeled downstream validation exists
|
|
219
310
|
|
|
220
311
|
Audit codes are documented in [`docs/audit-findings.md`](docs/audit-findings.md).
|
|
312
|
+
The research and differentiation decisions behind `0.0.3` are documented in
|
|
313
|
+
[`docs/reference-libraries.md`](docs/reference-libraries.md).
|
|
221
314
|
Canonical manifests use explicit `path_base`/`path_bases` fields; they never
|
|
222
315
|
serialize private source paths. Symlinks are skipped by default, and even when
|
|
223
316
|
`follow_symlinks=True` a target outside the dataset root is rejected.
|
|
@@ -19,7 +19,9 @@ evaluation.
|
|
|
19
19
|
pip install openbot-data
|
|
20
20
|
```
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
PyPI currently installs the released `0.0.2` package. The source tree is the
|
|
23
|
+
`0.0.3` release candidate: its P0 interfaces and local release gates pass, but it
|
|
24
|
+
has not been published. Requires Python 3.9+.
|
|
23
25
|
|
|
24
26
|
## Runnable demo
|
|
25
27
|
|
|
@@ -48,6 +50,13 @@ one immutable `DatasetSnapshot` across both renderers.
|
|
|
48
50
|
- **Export dataset catalogs** — JSON or CSV for dataset registries, documentation, and SEO-friendly catalog pages.
|
|
49
51
|
- **Discover local LeRobot data** — read-only episode and video-stream discovery for v2.1/v3 layouts.
|
|
50
52
|
- **Audit before training or upload** — stable error/warning codes without an uncalibrated quality score.
|
|
53
|
+
- **Snapshot and diff datasets** — portable component fingerprints and semantic change classes.
|
|
54
|
+
- **Gate ACT and SmolVLA readiness** — distinguish `READY`, `BLOCKED`, and incomplete `PARTIAL` evidence.
|
|
55
|
+
- **Audit pinned Hub revisions** — resolve branches/tags to immutable commits under hard download budgets.
|
|
56
|
+
- **Repair conservatively** — plan and apply only unambiguous derived metadata changes to a new copy.
|
|
57
|
+
- **Verify official merges** — check compatibility before merge, then reconcile lineage, loader, audit, and diff evidence.
|
|
58
|
+
- **Hand off score-free Catalog evidence** — emit versioned facts, coverage,
|
|
59
|
+
findings, and unresolved checks for server-side evaluation.
|
|
51
60
|
|
|
52
61
|
## CLI
|
|
53
62
|
|
|
@@ -89,11 +98,59 @@ openbot-data catalog ./robot_videos --out ./catalog.csv --format csv
|
|
|
89
98
|
The catalog is designed to be checked into GitHub or linked from a dataset registry
|
|
90
99
|
page such as [OpenBot.ai Datasets](https://openbot.ai/datasets).
|
|
91
100
|
|
|
101
|
+
### Build Catalog evidence from a completed local audit
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
openbot-data catalog-evidence ./robot_videos \
|
|
105
|
+
--dataset-id org/dataset \
|
|
106
|
+
--checked-at 2026-07-28T12:00:00Z \
|
|
107
|
+
--out ./catalog-evidence.json
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
The artifact contains no Overall score or normalized dimension score. OpenBot
|
|
111
|
+
Catalog remains responsible for evaluation, review, and publication.
|
|
112
|
+
|
|
113
|
+
### Snapshot, diff, and readiness
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
openbot-data snapshot ./lerobot_dataset \
|
|
117
|
+
--format lerobot --integrity full --out ./dataset.snapshot.json
|
|
118
|
+
|
|
119
|
+
openbot-data diff ./baseline.snapshot.json ./dataset.snapshot.json \
|
|
120
|
+
--out ./dataset.diff.json --fail-on breaking
|
|
121
|
+
|
|
122
|
+
openbot-data readiness ./lerobot_dataset \
|
|
123
|
+
--profile lerobot-smolvla --integrity full \
|
|
124
|
+
--out ./readiness.json --markdown ./readiness.md
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### Repair and merge verification
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
openbot-data repair plan ./dataset --integrity full --out ./repair.plan.json
|
|
131
|
+
openbot-data repair apply ./dataset \
|
|
132
|
+
--plan ./repair.plan.json --output ./dataset.repaired
|
|
133
|
+
|
|
134
|
+
openbot-data merge-check ./dataset-a ./dataset-b --out ./merge.plan.json
|
|
135
|
+
openbot-data verify-merge ./merged \
|
|
136
|
+
--input ./dataset-a.snapshot.json \
|
|
137
|
+
--input ./dataset-b.snapshot.json \
|
|
138
|
+
--operation-record ./official-operation.json \
|
|
139
|
+
--out ./merge.receipt.json
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
Physical merge stays with `lerobot-edit-dataset` from
|
|
143
|
+
`lerobot[dataset]==0.6.0`; OpenBot only plans and verifies it.
|
|
144
|
+
|
|
92
145
|
## Python API
|
|
93
146
|
|
|
94
147
|
```python
|
|
95
148
|
from openbot_data import (
|
|
96
149
|
audit_dataset,
|
|
150
|
+
build_catalog_evidence,
|
|
151
|
+
build_dataset_snapshot,
|
|
152
|
+
diff_dataset_snapshots,
|
|
153
|
+
evaluate_dataset_readiness,
|
|
97
154
|
export_catalog,
|
|
98
155
|
inspect_dataset,
|
|
99
156
|
prepare_dataset,
|
|
@@ -129,6 +186,27 @@ audit = audit_dataset("./robot_videos", snapshot=snapshot)
|
|
|
129
186
|
# Discover episodes and camera streams in a local LeRobot repository
|
|
130
187
|
lerobot = read_lerobot("./lerobot_dataset")
|
|
131
188
|
|
|
189
|
+
# Produce score-free evidence for server-side Catalog evaluation
|
|
190
|
+
evidence = build_catalog_evidence(
|
|
191
|
+
"./robot_videos",
|
|
192
|
+
dataset_id="org/dataset",
|
|
193
|
+
checked_at="2026-07-28T12:00:00Z",
|
|
194
|
+
output_path="./catalog-evidence.json",
|
|
195
|
+
)
|
|
196
|
+
|
|
197
|
+
portable = build_dataset_snapshot(
|
|
198
|
+
"./lerobot_dataset",
|
|
199
|
+
input_format="lerobot",
|
|
200
|
+
integrity="full",
|
|
201
|
+
)
|
|
202
|
+
readiness = evaluate_dataset_readiness(
|
|
203
|
+
"./lerobot_dataset",
|
|
204
|
+
profile="lerobot-act",
|
|
205
|
+
integrity="full",
|
|
206
|
+
dataset_snapshot=portable,
|
|
207
|
+
)
|
|
208
|
+
change = diff_dataset_snapshots(portable, portable)
|
|
209
|
+
|
|
132
210
|
# Packaged JSON Schemas are stable independently of the package version
|
|
133
211
|
with schema_path("manifest") as manifest_schema:
|
|
134
212
|
print(manifest_schema)
|
|
@@ -161,11 +239,14 @@ and `CHANGELOG.md`, verify locally, then publish a GitHub Release whose tag is
|
|
|
161
239
|
|
|
162
240
|
## Status
|
|
163
241
|
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
the
|
|
242
|
+
The released PyPI package is `0.0.2`; the current source version is `0.0.3` and
|
|
243
|
+
its local release gate passes. No tag, GitHub Release, or PyPI publication has
|
|
244
|
+
been performed. OpenBot Data remains an early local Python toolkit. Hosted upload,
|
|
245
|
+
annotation, review, export, billing, Workers, and Container infrastructure
|
|
246
|
+
belong to the main [OpenBot](https://github.com/openbotai/OpenBot) product
|
|
247
|
+
repository. Use the separate
|
|
248
|
+
[`openbot-sdk`](https://github.com/openbotai/openbot-sdk) package to call the
|
|
249
|
+
hosted API.
|
|
169
250
|
|
|
170
251
|
## Roadmap
|
|
171
252
|
|
|
@@ -175,10 +256,20 @@ the hosted API.
|
|
|
175
256
|
- [x] JSON/CSV catalog export
|
|
176
257
|
- [x] [`0.0.2`: local dataset preflight](docs/version-0.0.2.md), including a
|
|
177
258
|
versioned manifest, deterministic audit findings, and local LeRobot discovery
|
|
178
|
-
- [
|
|
179
|
-
|
|
259
|
+
- [x] [`0.0.3`: LeRobot compatibility and dataset change control](docs/version-0.0.3.md),
|
|
260
|
+
with correctness closure, explicit v2.1/v3 adapters, layered validation,
|
|
261
|
+
portable snapshots, semantic diff, revision-pinned Hub audit, readiness
|
|
262
|
+
profiles, evidence triage, conservative repair, and merge verification.
|
|
263
|
+
P0 interfaces, the package version, clean install, Python matrix,
|
|
264
|
+
artifacts, official conformance, and local release checks pass. Public
|
|
265
|
+
release remains a separate explicit action.
|
|
266
|
+
- [ ] Later: read-only robomimic/HDF5 and RLDS/Open X adapters
|
|
267
|
+
- [ ] Later: advanced episode-quality signals and any aggregate score only after
|
|
268
|
+
labeled downstream validation exists
|
|
180
269
|
|
|
181
270
|
Audit codes are documented in [`docs/audit-findings.md`](docs/audit-findings.md).
|
|
271
|
+
The research and differentiation decisions behind `0.0.3` are documented in
|
|
272
|
+
[`docs/reference-libraries.md`](docs/reference-libraries.md).
|
|
182
273
|
Canonical manifests use explicit `path_base`/`path_bases` fields; they never
|
|
183
274
|
serialize private source paths. Symlinks are skipped by default, and even when
|
|
184
275
|
`follow_symlinks=True` a target outside the dataset root is rejected.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.0.3
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# OpenBot Data documentation
|
|
2
|
+
|
|
3
|
+
OpenBot Data is a local, open-source Python library. It inspects robot-video
|
|
4
|
+
directories and local LeRobot v2.1/v3 repositories before training or upload. It
|
|
5
|
+
does not call the Hosted OpenBot API.
|
|
6
|
+
|
|
7
|
+
## Start here
|
|
8
|
+
|
|
9
|
+
- [Getting started](getting-started.md): installation, CLI, Python workflow, and
|
|
10
|
+
the runnable demo.
|
|
11
|
+
- [API reference](api-reference.md): public Python functions, CLI commands,
|
|
12
|
+
parameters, return values, and failure behavior.
|
|
13
|
+
- [Audit finding codes](audit-findings.md): stable machine-readable validation
|
|
14
|
+
codes and severities.
|
|
15
|
+
- [0.0.2 release contract](version-0.0.2.md): scope and acceptance criteria.
|
|
16
|
+
- [0.0.3 feature and release contract](version-0.0.3.md): the complete required
|
|
17
|
+
feature map, public artifacts and commands, LeRobot compatibility, readiness,
|
|
18
|
+
remediation, merge safety, snapshots, semantic diff, current implementation
|
|
19
|
+
checkpoint, and release acceptance criteria.
|
|
20
|
+
- [Reference libraries and differentiation](reference-libraries.md):
|
|
21
|
+
LeRobot, `lerobot-doctor`, `robovet`, and adjacent-library decisions.
|
|
22
|
+
- [Canonical manifest](examples/manifest.json) and
|
|
23
|
+
[canonical audit](examples/audit.json): released v1 examples without local
|
|
24
|
+
machine paths.
|
|
25
|
+
- [0.0.3 artifact examples](examples/v0.0.3/README.md): generated snapshot,
|
|
26
|
+
diff, readiness, Catalog evidence, repair, and merge contracts.
|
|
27
|
+
|
|
28
|
+
## Capability boundary
|
|
29
|
+
|
|
30
|
+
This repository owns local and revision-pinned Hub preflight, media inspection,
|
|
31
|
+
deterministic manifests/audits/snapshots/diffs, readiness gates, conservative
|
|
32
|
+
copy-on-write metadata repair, official-operation verification, catalog export,
|
|
33
|
+
and the score-free Catalog evidence handoff. Catalog scoring, candidate review,
|
|
34
|
+
publication, uploads, API keys, asynchronous processing, hosted artifacts,
|
|
35
|
+
retention, and billing belong to the main OpenBot service and are called through
|
|
36
|
+
`openbot-sdk`.
|