Repository navigation
Conversation
3ec0126 to
cbf9c8c
Compare
cbf9c8c to
000c98b
Compare
000c98b to
8f563d0
Compare
Review reportUpdated: 2026-10-21. Direct predecessor: #4738.
What changes and why the diff is largeAdd an explicit offline recording converter for local SQLite and MCAP, plus migration/fidelity reporting. Historical decoding is confined to this command; this is separate from live transport compatibility. Review mapSuggested entry points: dimos/memory/convert_recording.py, dimos/memory/recording_migration.py, dimos/memory/cli/app.py, docs/development/convert-recordings.md. Complete file mapImplementation (3)
Tests (2)
Documentation and replay inputs (1)
Review focus and scope reductions
ValidationFresh checks on Reproduction commands, not executed here unless stated aboveRun from this PR's own checkout root after installing its documented test dependencies. These are selected review entry points, not a claim of full-stack coverage. uv run pytest dimos/memory/test_convert_recording.py dimos/memory/test_recording_migration.py
dimos mem convert OLD NEW --dry-runRemaining workInstalled-wheel converter execution and unsupported historical formats were not retested. Source/output protection and blocked pickle inputs remain intact. |
8f563d0 to
25dc750
Compare
What this adds
Add offline
dimos mem convertcommands for local MCAP and SQLite recordings. Conversion preserves timestamps and supported fields, writes a fidelity report and never overwrites the source or an existing destination.Base: #4738. The converter uses the standard MCAP writer and an explicit historical decode boundary.
How to test
Start with
dimos mem convert OLD NEW --dry-run. Follow the conversion guide for formats and expected output.All 35 local conversion tests passed again after restacking. Repository hooks passed on the cleaned stack tip. Installed-wheel tests were not rerun. Unsupported formats and pickle inputs remain blocked.
Review report: file map, scope and verification
Shared CDR foundation
Standard ROS definitions are fetched and verified through the existing source lock and generation pipeline in #4366. Native SDK support is included in #4722. Shared Python value implementations and regressions are reviewed in #4800–#4803 before the #4734 caller migration. SDK and consumers use the same generated Rust message crate, including
Time,TransformStampedandTFMessage; there is no separate TF schema package or generation command. Camera/depth callers migrate in #4734 and mapping/navigation callers in #4737.The external CDR and transforms library pins remain unchanged. Local verification passed 122 SDK tests, all existing native consumer suites, and all 24 real native/DimSim/port acceptance tests without skips. Seven staged Nix source layouts resolve exactly one message crate with locked Cargo metadata. This is not a full Nix build or hardware validation. Fresh CI runs verify #4722 independently and the combined stack tip.
Stack #4804 contains the 12 original feature PRs and four separately reviewed adapter/buffer PRs (#4800–#4803). The redundant #4774 is superseded by #4722. No feature PR has been merged into main; existing conflicts with main and the WIP cutover failures in #4739 remain.