Skip to content

Support generated CDR values in typed WebRTC transports - #4708

Closed
TomCC7 wants to merge 2 commits into
cc/feat/cdr-hosted-camerafrom
cc/feat/cdr-webrtc-typed
Closed

TomCC7 wants to merge 2 commits into
cc/feat/cdr-hosted-camerafrom
cc/feat/cdr-webrtc-typed

Conversation

@TomCC7

@TomCC7 TomCC7 commented Oct 20, 2026

Copy link
Copy Markdown
Member

Generated message types on the existing WebRTCTransport.spec(channel, Type) and CloudflareTransport APIs now use CDR inside the shared data-frame envelope. Type metadata demultiplexes a physical command channel; raw bytes and explicitly legacy types retain their separate codecs, without decoder fallback. No transport API or provider lifecycle change.

Parent: #4707. Part of Message encoding refactor.

The installed serializer accepts arbitrary encapsulation prefixes. Reviewed LCM/Zenoh, WebRTC, WebXR-frame, CdrCodec and explicit converter entrypoints now require plain XCDR1 (either endianness) before field decoding. This is a scoped boundary fix, not a claim that every registry caller has been audited.

Category Files Added Removed
Transport and message boundary validation 4 92 22
Storage/conversion validation 2 4 2
Behavioral regression tests 5 190 3
Existing CI and hosted documentation 2 24 0

Validation at this commit: 247 source +247 installed-wheel tests, six production files strict mypy, applicable hooks, wheel build. Nix lint unavailable (nix absent). Installed store APIs also read all 4,451 stairs and 2,546 Go2-short previously converted real observations. Full current wheel SHA256: bfff105d72cd06652837498ad3c8fc2bb9d2aa899cb76d5c6ad192791d2dde7a.

Offline manual check from a configured checkout (no broker or robot):

DIMOS_TRANSPORT=lcm LCM_DEFAULT_URL=memq:// uv run pytest --noconftest --import-mode=importlib -o addopts= -q \
  dimos/protocol/pubsub/impl/webrtc/test_transport.py \
  dimos/core/test_cdr_transport.py dimos/memory/codecs/test_codecs.py

The WebRTC tests mock only the external provider; typed framing, registry codecs, multiplexing, malformed-frame recovery, wrong-class rejection, pickle/config sharing and sequence ownership run normally. Existing WebXR regressions run the shipped browser encoder offline with pinned Foxglove parsers. This is not live SFU/operator or hardware acceptance. No CI polling or benchmark result is claimed. Remaining hosted Go2/map/stats/recorder, simulation/robot graph closure and Gate B dependency retirement follow independently.

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