Skip to content

feat: add offline launch migration verifier - #1075

Draft
jaagut wants to merge 8 commits into
mainfrom
feature/launch-equivalence-verifier
Draft

feat: add offline launch migration verifier#1075
jaagut wants to merge 8 commits into
mainfrom
feature/launch-equivalence-verifier

Conversation

@jaagut

@jaagut jaagut commented Sep 12, 2026

Copy link
Copy Markdown
Member

The ROS launch to better-launch migration needs a way to compare resolved launch instructions without starting robot processes. This adds a disposable verifier that captures native process preparation, component load requests, timers, generated files, and nested launchers in Linux-contained workers, then produces typed, grouped diffs with reproducing inputs and source provenance.

The checker enumerates declared finite domains, merges only supported identical default bindings, and caches repeated process normalization. It does not perform general dependency-based subtree pruning or claim runtime equivalence. Missing resources, unknown executable-default node names, unsupported actions, and preparation failures remain explicit unresolved results. No launch files, imported libraries, or dependency declarations are changed by the verifier commit.

This draft is stacked on #1015 and targets main according to the repository instructions. The verifier itself is commit 544f8b4; the inherited migration changes should be reviewed in #1015.

Validation:

  • pixi run -e default pytest -q scripts/launch_equivalence/tests — 19 passed, including native capture, typed parameters, include conversion, timers, components, nested launchers, and containment.
  • pixi run -e default ruff check scripts/launch_equivalence and pixi run -e default ruff format --check scripts/launch_equivalence — passed.
  • Exercised all 55 migrated entrypoints with omitted arguments: 33 reported differences and 22 had unresolved portions.
  • Exercised a separate 50-case boolean matrix: 2 equivalent, 18 different, 30 unresolved. These are checker results, not a passing equivalence verdict for the migration.
  • The teamplayer plan reduces 14,348,907 omitted/false/true assignments to 32,768 distinct bindings. The full teamplayer matrix was not run.

Usage, input-domain format, report files, requirements, and coverage limits are documented in scripts/launch_equivalence/README.md.

Flova and others added 7 commits July 8, 2026 16:19
…ib/better_launch

subrepo:
  subdir:   "src/lib/better_launch"
  merged:   "99aea1704"
upstream:
  origin:   "https://github.com/dfki-ric/better_launch.git"
  branch:   "main"
  commit:   "99aea1704"
git-subrepo:
  version:  "0.4.9"
  origin:   "https://github.com/ingydotnet/git-subrepo"
  commit:   "ea10886"
Ports all bitbots launch files (XML .launch and the existing ROS2
python .launch.py files) to better_launch, replacing the ROS2 launch
system entirely. Old launch files are removed; new ones keep the same
name with a .launch.py extension and preserve all original arguments,
conditionals, includes, and node configuration.

Also:
- Reorganizes pixi.toml: moves the 5 new better_launch pypi deps
  (click, docstring_parser, osrf_pycommon, prompt_toolkit,
  setproctitle) into their alphabetical spots with a comment on why
  each was added.
- Updates setup.py launch-file globs (*.launch -> *.launch.py).
- Updates scripts/ros.plugin.sh (rl alias) and
  scripts/deploy/tasks/launch.py to use the new `bl` CLI instead of
  `ros2 launch`.
- Updates docs referencing `ros2 launch` commands.

Packages under src/lib/ are left untouched; their existing ROS2
launch files are included transparently via bl.include().

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Preserve the existing PR commits and better_launch migration while bringing
in current main. Carry upstream launch settings into the converted Python
launch files and regenerate the lockfile for the combined dependencies.

Keep the PR calibration values and kick communication rate where both
branches changed the same settings. Retain upstream DSD changes, which
already include the PR behavior changes.
Capture native ROS launch and better-launch instructions before process execution in contained workers. Compare finite input matrices with conservative default reduction, cached normalization, and grouped typed diffs. Report unsupported or missing evaluation inputs explicitly.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: 🆕 New

Development

Successfully merging this pull request may close these issues.

2 participants