Skip to content

refactor(navigation): migrate native follower streams to CDR - #4684

Closed
TomCC7 wants to merge 2 commits into
cc/feat/cdr-native-plannerfrom
cc/feat/cdr-native-follower
Closed

TomCC7 wants to merge 2 commits into
cc/feat/cdr-native-plannerfrom
cc/feat/cdr-native-follower

Conversation

@TomCC7

@TomCC7 TomCC7 commented Oct 20, 2026

Copy link
Copy Markdown
Member

The native trajectory follower now receives generated Path/TFMessage CDR and publishes generated Twist/Bool values, sharing the native planner's boundary codecs. The existing law, goal latch, deadman, rates, configuration and port names remain unchanged. Profile deltas are computed from integer nanoseconds before conversion to seconds.

Project: https://linear.app/dimensional/project/message-encoding-refactor-05a3ddb4af3e/overview

Parent: #4683. The complete consumer/default/retirement migration remains in progress.

Files Count Change
Python/native ports and codecs 2 Canonical generated identities and shared CDR/TF adapters
Build/dependencies 4 Locked generated crate/SDK dependencies; fixed-hash planner source artifact, self-contained workspace layout
Acceptance/CI 2 CDR endian/nanosecond/latch regressions and actual native process lifecycle

From this checkout with Python development dependencies and Rust installed:

python -m pip install -e .
cargo build --locked --manifest-path dimos/navigation/trajectory_follower/fancy/rust/Cargo.toml --features module --bin trajectory_follower --jobs 2
DIMOS_NATIVE_FOLLOWER_BINARY="$PWD/dimos/navigation/trajectory_follower/fancy/rust/target/debug/trajectory_follower" python -m pytest --noconftest --import-mode=importlib -o addopts='' -q dimos/navigation/trajectory_follower/fancy/test_generated_native.py

The synthetic test sends Python CDR TF/path values to a real follower binary over discovery-disabled 127.0.0.1 Zenoh: drive → arrival Bool → new-goal drive → empty-path zero Twist. It owns cleanup and does not operate hardware. Supplying the binary variable is required to run the binary case.

Local evidence: 63 Rust tests (15 module unit tests plus 48 law/profile/integration tests), all-target Clippy with warnings denied, standalone artifact-only Cargo assembly passed the same 63 tests, 2 actual Python/native acceptance tests, and the same 2 with the wrapper loaded from the installed main wheel. Strict Python typing, applicable hooks, main wheel build and the existing 198-package environment's dependency check passed. Main-wheel SHA256: f85f0140989aa196f33e808c1b640f90af34cc3f24f1686252aadd8a2f40cebe.

Standalone validation found and fixed nested Cargo workspace membership in the exported layout. The flake now excludes the dependency artifacts' own workspace roots. Nix itself is absent locally, so this Cargo proof does not count as a Nix build. The main Python wheel contains the wrapper and SDK, not a precompiled follower binary: installed consumers supply an external executable with source_dir=None, build_command=None; default Nix source builds remain a checkout workflow. No automatic native binary distribution is claimed. SDK legacy dependencies, final default/cleanup and other consumers remain separate work. CI was not polled; no hardware or human acceptance claim.

@TomCC7 TomCC7 closed this Oct 20, 2026
@TomCC7
TomCC7 deleted the cc/feat/cdr-native-follower branch October 20, 2026 18:11
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.

1 participant