Skip to content

chore: verify type hash parity between jazzy assets and kilted/lyrical live installations #211

Description

@YuanYuYuan

Background

hiroz-msgs uses a single canonical crates/hiroz-codegen/assets/jazzy/ directory as the bundled IDL source for all non-Humble distros (Jazzy, Rolling, Kilted, Lyrical). The build script (hiroz-msgs/build.rs) hardcodes this path regardless of which distro feature flag is active.

Type hashes (RIHS01_…) are derived from the IDL definitions. If any bundled package's .msg/.srv/.action files differ between Jazzy and a newer distro, hiroz and a native C++ node on that distro will compute different hashes, land on different Zenoh key expressions, and silently fail to connect.

What needs checking

For every package vendored in assets/jazzy/, confirm that the IDL files are byte-for-byte identical (or hash-equivalent) on Kilted and Lyrical live installations:

diff /opt/ros/jazzy/share/<pkg>/msg/ /opt/ros/kilted/share/<pkg>/msg/
diff /opt/ros/jazzy/share/<pkg>/srv/ /opt/ros/kilted/share/<pkg>/srv/
diff /opt/ros/jazzy/share/<pkg>/action/ /opt/ros/kilted/share/<pkg>/action/

Priority packages (added in PR #195, not previously verified against newer distros):
tf2_msgs, visualization_msgs, diagnostic_msgs, shape_msgs, stereo_msgs, trajectory_msgs, rosgraph_msgs, statistics_msgs, composition_interfaces, std_srvs, rosbag2_interfaces

Proposed fix

If any divergence is found, either:

  • Add assets/kilted/ (and assets/lyrical/) with the correct IDL snapshots and update build.rs to select the right directory per distro feature flag, or
  • Add a CI step that computes type hashes from the live /opt/ros/<distro>/ installation and asserts they match what hiroz generates from assets/jazzy/

The CI approach is more sustainable long-term since it catches future drift automatically.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions