Skip to content

WIP: audit remaining CDR graph boundaries before legacy cleanup - #4740

Draft
TomCC7 wants to merge 27 commits into
cc/feat/cdr-unit-defaultfrom
cc/feat/cdr-unit-cleanup
Draft

TomCC7 wants to merge 27 commits into
cc/feat/cdr-unit-defaultfrom
cc/feat/cdr-unit-cleanup

Conversation

@TomCC7

@TomCC7 TomCC7 commented Oct 20, 2026 •

Copy link
Copy Markdown
Member

What this adds

WIP audit of remaining legacy message imports and typed ports before deleting old APIs.

Base: #4739. No legacy implementation is removed here.

How to check

python scripts/audit_cdr_boundaries.py --output /tmp/cdr-boundaries.json
python scripts/audit_cdr_boundaries.py --check

The audit reports 312 legacy port declarations and 998 imports. These are static candidates, not confirmed runtime failures. --check returns nonzero while candidates remain.

Repository hooks passed. Cleanup remains blocked on the four failures in #4739 and remaining graph migrations. Current status.

Review report: file map, scope and verification

This final layer also assembles the complete native/DimSim interoperability workflow after all dependent consumers exist. Lower feature layers run the available SDK checks.

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, TransformStamped and TFMessage; 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.

@TomCC7

TomCC7 commented Oct 21, 2026 •

Copy link
Copy Markdown
Member Author

Review report

Updated: 2026-10-21. Direct predecessor: #4739.

  • Head: 71c08893f7a770990f8c3bb7d8c95b2da6f624b5
  • Named base branch: cc/feat/cdr-unit-default at 75cfb7e8182eaea011f1fefd0f119ae54744a4a4
  • PR-recorded base: 75cfb7e8182eaea011f1fefd0f119ae54744a4a4; diff merge base: 75cfb7e8182eaea011f1fefd0f119ae54744a4a4

What changes and why the diff is large

Add a static legacy-boundary scanner and an explicit WIP status document. No legacy code is deleted by this PR.
1 audit script and 1 status document. This is an audit checkpoint, not implementation cleanup.

Review map

Suggested entry points: scripts/audit_cdr_boundaries.py, docs/development/cdr-cutover-status.md.
All 2 changed files are accounted for below. Grouping is by file role, not a claim that the implementation is minimal.

Complete file map

Implementation (1)

File Change Purpose
scripts/audit_cdr_boundaries.py added AST-only scan of legacy imports and typed In/Out declarations; optionally fail while candidates remain.

Documentation and replay inputs (1)

File Change Purpose
docs/development/cdr-cutover-status.md added Document unfinished graph/recording boundaries; does not remove legacy code.

Review focus and scope reductions

  • The scanner counts syntax candidates, not confirmed live wire failures. Internal driver values require graph-level review before deletion.
  • The status document now matches the fresh scan: 312 legacy typed-port candidates and 998 imports. No legacy message class was removed by this cleanup.
  • Caller migration and working capture/replay remain prerequisites for deletion. Keep the explicit historical decode boundary in the offline converter.

Validation

Fresh audit at 71c08893f7a770990f8c3bb7d8c95b2da6f624b5: 312 legacy port candidates, 998 legacy imports, status unfinished. --check returned 1 as designed. All-files repository hooks passed with cargo/native lint excluded. Installed-wheel helper imports, region CDR roundtrip, legacy Image import and the reviewer Rerun/MCAP example passed at this stack tip. Hardware and complete robot graphs were not run.

Reproduction commands, not executed here unless stated above

Run 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.

python scripts/audit_cdr_boundaries.py --output /tmp/cdr-boundaries.json
python scripts/audit_cdr_boundaries.py --check

Remaining work

The four documented #4739 blockers and remaining business graphs prevent cleanup. Static candidate counts must not be presented as 312 confirmed runtime failures. Actual legacy removal is still absent.

@TomCC7
TomCC7 force-pushed the cc/feat/cdr-unit-cleanup branch from 7c6eb9d to 71c0889 Compare October 22, 2026 02:34
@TomCC7
TomCC7 removed this pull request from stack #4743 October 22, 2026 18:51
@TomCC7
TomCC7 added this pull request to stack #4776 October 22, 2026 18:52
@TomCC7
TomCC7 removed this pull request from stack #4776 October 23, 2026 08:47
@TomCC7
TomCC7 added this pull request to stack #4799 October 23, 2026 08:47
@TomCC7
TomCC7 removed this pull request from stack #4799 October 23, 2026 09:19
@TomCC7
TomCC7 added this pull request to stack #4804 October 23, 2026 09:19

This branch has not been deployed

No deployments
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