Skip to content

feat(stereo-split): emit archebase topic layout in output MCAP - #234

Merged
shark0F0497 merged 2 commits into
main-v2from
feat/stereo-split-archebase-topic-layout
Oct 23, 2026
Merged

shark0F0497 merged 2 commits into
main-v2from
feat/stereo-split-archebase-topic-layout

Conversation

@shark0F0497

Copy link
Copy Markdown
Collaborator

Pull Request Checklist

  • Code follows the style guidelines
  • Tests pass locally
  • Code is formatted
  • Documentation updated if needed
  • Commit messages follow conventional commits
  • PR description is complete and clear

Summary

Make the stereo-split job write the Archebase Ego topic layout (/archebase/<part>/<data_stream>[/<transport>]) in its output MCAP instead of mirroring the legacy DECXIN topic names.


Motivation

The topic naming specification requires normalized topic names such as /archebase/cam_0/image_raw/h264, not just an /archebase prefix on /decxin/.... See the Feishu spec: https://archebase.feishu.cn/wiki/RWnrw7cPQiqqL1kqUE4csUeGngh

The existing prefix-compatibility work (PR #232) only preserved an optional /archebase prefix and still emitted /archebase/decxin/left_rgb/h264-style names. This PR implements the actual rename.


Changes

Output mapping:

Role Output topic
Left eye /archebase/cam_0/image_raw/h264
Right eye /archebase/cam_1/image_raw/h264
IMU /archebase/imu_0/imu
Device serial /archebase/device/serial_number

Modified Files

  • jobs/stereo-split/convert_mcap_stereo_h264.py - separate input topics from output topics; rename copied channels in both the joined-conversion and split-H.264 timestamp-repair paths; detect rename collisions.
  • jobs/stereo-split/run_processing.py - build the converter config with canonical output topics, update metadata.yaml, and add topic_layout: archebase_v1 to the processing manifest.
  • internal/services/stereosplit/reconciler.go - select the QA topic contract from topic_layout (legacy/absent vs archebase_v1) and reject unknown layouts.
  • internal/services/stereosplit/manager_test.go - cover the new layout, explicit legacy layout, and unknown layout rejection.
  • jobs/stereo-split/tests/test_run_processing.py - assert canonical topics for joined and split-H.264 inputs, including the renamed serial topic.
  • jobs/stereo-split/README.md - document the new output layout.

Type of Change

  • Bug fix
  • New feature
  • Breaking change
  • Documentation update
  • Refactoring
  • Performance improvement
  • Test changes

Impact Analysis

Breaking Changes

Consumers of newly generated stereo-split output MCAPs must use the new topic names. Existing derivatives and in-flight generations are unaffected because each generation stays pinned to its immutable image digest.

Backward Compatibility

  • Keystone continues to validate legacy manifests that omit topic_layout or use topic_prefix.
  • New images advertise topic_layout: archebase_v1 explicitly, so Keystone can support both layouts during rollout.
  • Deployment order must be: Keystone first, then switch the stereo-split image digest. Rolling the image digest back restores the legacy layout.

Follow-up coordination

The following consumers still hardcode legacy /decxin/... names and must be updated before the new image is enabled for their workflows:

  • motion-store / hilbert-store E40KDescriptor
  • color_aberration_fix/calibrate_stereo.py
  • imu_dedup.py

Testing

Test Environment

  • Local Go 1.24 and Python 3.12 with jobs/stereo-split/requirements.txt

Test Cases

  • Unit tests pass locally
  • Integration tests pass locally
  • E2E tests pass (if applicable)
  • Manual testing completed

Manual Testing Steps

  1. Run go test ./internal/services/... (passes).
  2. Run the full stereo-split Python suite: 91 passed.
  3. Run the job against the real 310 MB ego-portal-stereo_ep-200534_20260922T065845Z.mcap; the output MCAP contains exactly the four canonical topics above, and the manifest reports topic_layout: archebase_v1.

Test Coverage

  • New tests added
  • Existing tests updated
  • Coverage maintained or improved

@shark0F0497
shark0F0497 merged commit f7547fc into main-v2 Oct 23, 2026
2 of 4 checks passed
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