Skip to content

feat: build standalone message projects with shared type ownership (4/7) - #4362

Closed
TomCC7 wants to merge 8 commits into
feat/cdr-mcap-viewersfrom
feat/cdr-candidate-authoring
Closed

TomCC7 wants to merge 8 commits into
feat/cdr-mcap-viewersfrom
feat/cdr-candidate-authoring

Conversation

@TomCC7

@TomCC7 TomCC7 commented Oct 1, 2026 •

Copy link
Copy Markdown
Member

Custom message projects now share dependency types instead of generating duplicate Header identities. One project config drives dimos build and the Python PEP517/660 backend; built-ins are independently packaged. This authoring follow-up includes generator/distribution exports and package CI prerequisites. Runtime native SDK integration and the coordinator walkthrough belong to the next layer.

Base: #4254. This is layer 4/7, replacing the combined draft #4257 through the user-approved split. Original PR1–3 and the old feat/cdr-runtime-cutover branch/history are preserved. Reassembly uses selected files/hunks and forward merges, not a claim that the original commits cleanly cherry-pick.

Published HEAD: 130f4051b6a209a00696c83441b6b75c14fb2624.

Validation: 32 focused unit tests; compiled Python/C++/Rust cross-package identity and CDR/schema contract; clean isolated source/wheel/sdist/editable/rename installation; offline lock check and hooks passed. The backend wheel was built from candidate sources. GitHub CI is pending.

This remains a proposal with a deliberate old-message API/wire break. CDR replaces encoding; LCM/Zenoh remain transports. No old-recording fallback is promised. No merge or package registry release is requested. External gates remain M20 SDK, host multicast, Foxglove sign-in and human/full-pose visual acceptance. Benchmarks have not been waived or weakened.

Published replacement chain: #4247 → #4252 → #4254 → #4362 → #4363 → #4364 → #4365. Preserved full reference: #4257 at cb982817bde248baa70a6fa69cc9ecc275c43707.

Tutorial follow-up: the checkout workflow is documented in docs/development/messages-in-repository.md; the installed-runtime/custom-project workflow is in docs/development/messages-external-project.md (runtime layer onward); both share message-reference.md. Matching review wheels are required; pip does not resolve uv-only local sources. Clean isolated canonical .msg addition→uv build→wheel install→value/codec checks passed in 112 seconds without installing the DimOS runtime. Existing isolated external source/wheel/sdist/editable acceptance and exact three-language coordinator evidence are retained; embedded C++ includes are now checked correctly. Required toolchains, SDK artifacts and harness acquisition are explicit.

Initial authoring CI exposed a premature root Rust workspace join (lock/Nix source mismatch) and a cold docs build missing Fast CDR. The generated crate remains standalone in authoring and joins the root workspace at runtime cutover; the existing Fast CDR setup now precedes package installation. Locks/assertions/gates were not relaxed. New exact-HEAD CI remains pending.

Authoring namespace test runner now invokes python -m pytest so a clean checkout imports the lightweight message namespace; 11 focused project tests passed. Self-hosted setup now explicitly installs CMake before building Fast CDR, and rosbags==0.11.0 and mcap>=1.2.0 are declared in the shared test group with its locked dependency; eight focused ownership/MCAP cases and hooks passed. Exact updated-head checks remain pending.

Superseded by naming-only replacement #4368. Exact commit 130f4051b6a209a00696c83441b6b75c14fb2624, source tree and parent-relative diff are unchanged.

Verified native seven-layer stack #4372: #4247 → #4366 → #4367 → #4368 → #4369 → #4370 → #4371. Stack: #4247

All branches use cc/ and the ordered PR bases preserve the prior commit ancestry. Old branches/history are retained. Replacement PR checks are pending and prior CI retains its exact SHA/run/ref provenance. No merge, force push or release.

@codecov

codecov Bot commented Oct 1, 2026 •

Copy link
Copy Markdown

❌ 1 Tests Failed:

Tests completed Failed Passed Skipped
5956 1 5955 240
View the full list of 1 ❄️ flaky test(s)
dimos.e2e_tests.test_voice_browser::test_hold_to_talk_ships_a_decodable_recording[firefox]

Flake rate in main: 31.03% (Passed 40 times, Failed 18 times)

Stack Traces | 23s run time
voice_bridge = ('http://127.0.0.1:52471/', [])
fake_mic_page = <Page url='http://127.0.0.1:52471/'>

    def test_hold_to_talk_ships_a_decodable_recording(
        voice_bridge: tuple[str, list[AudioChunk]], fake_mic_page: Page
    ) -> None:
        url, chunks = voice_bridge
        chunks.clear()  # the module fixture is shared across both engines
        fake_mic_page.goto(url)
        mic = fake_mic_page.get_by_test_id("chat-audio_in-mic")
        # Enabled == transport connected; the manifest already placed the panel.
        expect(mic).to_be_enabled(timeout=120_000)
        expect(mic).to_have_attribute("data-state", "idle")
    
        mic.hover()
        fake_mic_page.mouse.down()
>       expect(mic).to_have_attribute("data-state", "recording", timeout=15_000)
E       AssertionError: Locator expected to have attribute 'recording'
E       Actual value: arming 
E       Call log:
E         - Expect "to_have_attribute" with timeout 15000ms
E         - waiting for get_by_test_id("chat-audio_in-mic")
E       
E       Aria snapshot:
E       - button "hold to talk": talk

chunks     = []
fake_mic_page = <Page url='http://127.0.0.1:52471/'>
mic        = <Locator frame=<Frame name= url='http://127.0.0.1:52471/'> selector='internal:testid=[data-testid="chat-audio_in-mic"s]'>
url        = 'http://127.0.0.1:52471/'
voice_bridge = ('http://127.0.0.1:52471/', [])

dimos/e2e_tests/test_voice_browser.py:104: AssertionError

To view more test analytics, go to the Test Analytics Dashboard
📋 Got 3 mins? Take this short survey to help us improve Test Analytics.

This branch was successfully deployed

1 active deployment
cachix — 130f4051 Deployed Oct 1, 2026 by TomCC7 via cachix-build #11294
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