rosotacom-dev 2.5.dev60__tar.gz → 2.5.dev62__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/.github/workflows/image-scan.yml +13 -5
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/.github/workflows/nightly-e2e.yml +10 -4
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/.github/workflows/pr-merge-gate.yml +33 -15
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/.github/workflows/release.yml +5 -2
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/.pre-commit-config.yaml +1 -1
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/PKG-INFO +52 -4
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/README.md +50 -2
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/docs/ci.md +31 -16
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/install.sh +2 -2
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/justfile +2 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/pyproject.toml +1 -1
- rosotacom_dev-2.5.dev62/requirements.txt +1 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/cli.py +296 -19
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/cli_benchmark.py +1 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/README.md +17 -0
- rosotacom_dev-2.5.dev62/src/rosotacom/resources/examples/ros2docker.lyrical.json +37 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/scenarios/2_native_chatter/scenario-definition.yaml +4 -0
- rosotacom_dev-2.5.dev62/src/rosotacom/resources/examples/scripts/2_native_chatter/machine_a/external.lyrical.ros2docker.json +20 -0
- rosotacom_dev-2.5.dev62/src/rosotacom/resources/examples/scripts/2_native_chatter/machine_b/external.lyrical.ros2docker.json +19 -0
- rosotacom_dev-2.5.dev62/src/rosotacom/resources/ros2docker.lyrical.json.example +37 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_py/com_py/universal_decompressor.py +6 -5
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_py/com_py/universal_ota_unwrapper.py +4 -2
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_py/com_py/universal_ota_wrapper.py +4 -2
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/session/content/base/session_plugin_base.yaml +38 -33
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom_dev.egg-info/PKG-INFO +52 -4
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom_dev.egg-info/SOURCES.txt +6 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom_dev.egg-info/requires.txt +1 -1
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom_dev.egg-info/scm_file_list.json +6 -0
- rosotacom_dev-2.5.dev62/src/rosotacom_dev.egg-info/scm_version.json +8 -0
- rosotacom_dev-2.5.dev62/tests/contract/test_lyrical_runtime_compat.py +30 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/contract/test_packaged_resources.py +113 -19
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/contract/test_profile_covers_generated_commands.py +13 -3
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/contract/test_security_maintenance_config.py +12 -1
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/contract/test_workflow_contracts.py +24 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/unit/test_anonymize.py +17 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/unit/test_cli.py +47 -1
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/unit/test_concurrency.py +147 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/unit/test_image_cache.py +26 -0
- rosotacom_dev-2.5.dev62/tests/unit/test_ros_node_entity_ownership.py +40 -0
- rosotacom_dev-2.5.dev60/requirements.txt +0 -1
- rosotacom_dev-2.5.dev60/src/rosotacom_dev.egg-info/scm_version.json +0 -8
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/.devcontainer/devcontainer.json.template +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/.devcontainer/re_generate_devcontainer_json.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/.github/CODEOWNERS +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/.github/ISSUE_TEMPLATE/documentation-audit.md +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/.github/ISSUE_TEMPLATE/implementation-cleanup.md +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/.github/ISSUE_TEMPLATE/quality-workflow.md +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/.github/ISSUE_TEMPLATE/redesign.md +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/.github/ISSUE_TEMPLATE/release-process.md +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/.github/ISSUE_TEMPLATE/repository-diagnosis.md +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/.github/ISSUE_TEMPLATE/test-ci-audit.md +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/.github/ISSUE_TEMPLATE/work-item.md +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/.github/actions/setup-just/action.yml +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/.github/dependabot.yml +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/.github/workflows/benchmark-calibrate.yml +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/.github/workflows/benchmark-gate.yml +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/.github/workflows/dev-release.yml +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/.github/workflows/pr-lightweight.yml +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/AGENTS.md +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/CONCURRENCY.md +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/CONTRIBUTING.md +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/DEVELOPMENT_PRINCIPLES.md +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/LICENSE.txt +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/MANIFEST.in +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/budgets.jsonl +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/calibration/README.md +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/calibration/capacity-size-tight-cyclone.json +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/calibration/probe-loss-gop-tight-cyclone.json +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/calibration/probe-loss-nominal-cyclone.json +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/calibration/probe-loss-tight-cyclone.json +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/calibration/probe-loss-tight-fastdds.json +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/calibration/probe-loss-tight-zenoh.json +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/codecov.yml +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/deployment-configuration.md +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/docs/benchmark-ab.md +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/docs/benchmark-bag-as-load.md +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/docs/ffmpeg-keyframes.md +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/docs/findings/README.md +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/docs/findings/a-transport-element-doubles-every-fastdds-sample.md +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/docs/findings/cyclone-spdp-discovery-bursts.md +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/docs/findings/delay-alone-no-loss.md +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/docs/findings/fastdds-datagram-cap-drops-large-samples.md +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/docs/findings/graph-derived-types-block-a-non-graph-transport.md +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/docs/findings/head-of-line-irregularity.md +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/docs/findings/jitter-loss-bandwidth-latency.md +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/docs/findings/keyframe-loss-kills-the-next-deltas.md +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/docs/findings/lifespan-is-enforced-by-one-reader-and-not-the-other.md +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/docs/findings/lighter-message-loss.md +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/docs/findings/oversubscription-queues-not-losses.md +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/docs/findings/reorder-becomes-reader-loss.md +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/docs/findings/repro/decode_chain_repro.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/docs/findings/repro/reorder_drop_repro.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/docs/findings/sender-rows-make-a-dead-link-look-loss-free.md +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/docs/findings/zero-loss-boundaries-18kb-20hz.md +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/docs/forensics-report.md +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/docs/geo-link-map.md +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/docs/github-repository-settings.md +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/docs/link-bandwidth.md +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/docs/link-trace.md +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/docs/owner-runbook.md +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/docs/performance-bands.md +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/docs/playbooks/README.md +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/docs/quality-model.md +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/docs/release-notes/TEMPLATE.md +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/docs/release-notes/v2.1.md +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/docs/release-notes/v2.2.md +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/docs/release-notes/v2.3.md +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/docs/release-notes/v2.4.md +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/docs/release.md +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/docs/rfcs/0001-expectation-driven-test-suite.md +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/docs/rfcs/0002-expectation-concepts.md +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/docs/rfcs/0003-metric-backbone.md +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/docs/rfcs/0004-network-profiles.md +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/docs/rfcs/0005-benchmark-genres-and-ci.md +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/docs/rfcs/0006-dynamic-qos.md +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/docs/rfcs/0007-regression-gate.md +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/docs/rfcs/README.md +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/docs/testing.md +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/docs/work-items.md +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/media/control_center.png +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/media/echo_test.png +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/media/forensics-report-example.png +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/media/host.png +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/media/vehicle.png +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/rosotacom.yaml +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/session-configuration.md +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/setup.cfg +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/__init__.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/__main__.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/anonymize.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/bag_ground_truth.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/benched_set.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/benchmark.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/benchmark_delta.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/bundle_check.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/deployment.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/ffmpeg_packet.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/forensics.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/geomap.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/image_cache.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/netem_dist.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/network_preflight.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/network_profiles.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/network_shaper.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/plots.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/py.typed +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/benched-set.yaml +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/.gitignore +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/__init__.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/bags/8_drop_reference/metadata.yaml +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/deployment.example.yaml +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/dist/field-20260817.dist +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/profiles.yaml +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/ros2docker.json +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/rosotacom.yaml +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/scripts/1_heartbeat/run_machine_a.sh +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/scripts/1_heartbeat/run_machine_b.sh +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/scripts/2_native_chatter/machine_a/external.ros2docker.json +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/scripts/2_native_chatter/machine_a/run_communication.sh +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/scripts/2_native_chatter/machine_a/run_external.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/scripts/2_native_chatter/machine_a/wait_for_echo_topic.sh +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/scripts/2_native_chatter/machine_b/external.ros2docker.json +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/scripts/2_native_chatter/machine_b/run_communication.sh +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/scripts/2_native_chatter/machine_b/run_external.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_a/external.ros2docker.json +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_a/external_session.yaml +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_a/foxglove.json +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_a/run_communication.sh +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_a/run_external.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_b/costmap_1second/costmap_1second_0.mcap +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_b/costmap_1second/metadata.yaml +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_b/external.ros2docker.json +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_b/run_communication.sh +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_b/run_external.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_a/external.ros2docker.json +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_a/external_session.yaml +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_a/foxglove.json +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_a/run_communication.sh +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_a/run_external.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_b/costmap_1second/costmap_1second_0.mcap +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_b/costmap_1second/metadata.yaml +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_b/external.ros2docker.json +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_b/run_communication.sh +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_b/run_external.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/scripts/5_sized_payload/machine_a/external.ros2docker.json +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/scripts/5_sized_payload/machine_a/external_session.yaml +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/scripts/5_sized_payload/machine_a/run_communication.sh +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/scripts/5_sized_payload/machine_a/run_external.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/scripts/5_sized_payload/machine_b/external.ros2docker.json +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/scripts/5_sized_payload/machine_b/external_session.yaml +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/scripts/5_sized_payload/machine_b/run_communication.sh +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/scripts/5_sized_payload/machine_b/run_external.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/scripts/6_sized_payload_zen/machine_a/external.ros2docker.json +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/scripts/6_sized_payload_zen/machine_a/external_session.yaml +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/scripts/6_sized_payload_zen/machine_a/run_communication.sh +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/scripts/6_sized_payload_zen/machine_a/run_external.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/scripts/6_sized_payload_zen/machine_b/external.ros2docker.json +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/scripts/6_sized_payload_zen/machine_b/external_session.yaml +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/scripts/6_sized_payload_zen/machine_b/run_communication.sh +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/scripts/6_sized_payload_zen/machine_b/run_external.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/sessions/10_restamp/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/sessions/11_trickle/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/sessions/12_content_integrity/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/sessions/13_link_latency/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/sessions/14_remote_assist_anonymized/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/sessions/15_remote_assist_anonymized_costmap/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/sessions/16_remote_assist_anonymized_camera/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/sessions/17_synthetic_camera_quality/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/sessions/1_heartbeat/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/sessions/1_heartbeat_status/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/sessions/2_native_chatter/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/sessions/3_comp_occ_grid/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/sessions/4_comp_occ_grid_zen/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/sessions/5_sized_payload/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/sessions/6_sized_payload_zen/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/sessions/7_latched_static/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/sessions/8_drop/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/sessions/9_throttle/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/sessions/bench_1_1_capacity/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/sessions/bench_1_2_load_sweep/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/sessions/bench_1_3_ramp/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/sessions/bench_1_4_recovery/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/examples/sessions/bench_1_5_camera/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ros2docker.json.example +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/.vscode/c_cpp_properties.json +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/.vscode/settings.json +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ota_configs/archive/fastdds_easy_mode.xml.template +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ota_configs/archive/fastdds_initial_peer_list.xml.template +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ota_configs/archive/fastdds_v2.xml.template +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ota_configs/archive/fastdds_v3.xml.template +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ota_configs/archive/fastdds_v4.xml.template +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ota_configs/archive/fastdds_v5.xml.template +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ota_configs/create_zenoh_json5.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ota_configs/cyclonedds_local_participants.xml.template +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ota_configs/cyclonedds_minimal.xml.template +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ota_configs/cyclonedds_tuned.xml.template +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ota_configs/fastdds_easy_mode.xml.template +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ota_configs/fastdds_local.xml.template +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ota_configs/fastdds_tuned.xml.template +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ota_configs/fastdds_unicast.xml.template +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ota_configs/get_ota_xml.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ota_configs/utils.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ota_configs/zenoh.json5.template +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/.gitkeep +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_cpp/CMakeLists.txt +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_cpp/COLCON_IGNORE +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_cpp/LICENSE.txt +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_cpp/package.xml +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_cpp/src/hz_monitor.cpp +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_cpp/src/universal_compressor.cpp +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_cpp/src/universal_decompressor.cpp +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_msgs/CMakeLists.txt +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_msgs/LICENSE.txt +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_msgs/msg/CompressedData.msg +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_msgs/msg/EchoHeartbeat.msg +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_msgs/msg/OtaStamped.msg +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_msgs/msg/SizedPayload.msg +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_msgs/package.xml +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_py/LICENSE.txt +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_py/com_py/__init__.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_py/com_py/base_bridge_relay.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_py/com_py/bridge_in.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_py/com_py/bridge_out.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_py/com_py/ffmpeg_flags.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_py/com_py/heartbeat_echo.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_py/com_py/hz_monitor.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_py/com_py/image_bandwidth_reducer.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_py/com_py/image_pixel_capper.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_py/com_py/lanelet_saver.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_py/com_py/latch_relay.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_py/com_py/legacy/costmap_remapper.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_py/com_py/legacy/marker_remapper.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_py/com_py/legacy/speed_test.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_py/com_py/legacy/tf_remapper.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_py/com_py/legacy/traffic_monitor.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_py/com_py/legacy/wifi_network_analysis_1.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_py/com_py/link_bytes.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_py/com_py/link_trace.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_py/com_py/local_global_frame_bridge.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_py/com_py/localization_map_split_reduce_saver.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_py/com_py/msg_transform.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_py/com_py/pair_management.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_py/com_py/playout_pacer.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_py/com_py/playout_pacer_core.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_py/com_py/pub_sub_pair.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_py/com_py/qos.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_py/com_py/relay_in.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_py/com_py/relay_out.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_py/com_py/restamp.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_py/com_py/sized_publisher.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_py/com_py/stage_latency.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_py/com_py/stage_latency_core.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_py/com_py/status_overview.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_py/com_py/status_overview_core.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_py/com_py/tf_map_to_cart_saver.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_py/com_py/topic_monitor.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_py/com_py/topic_resolution.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_py/com_py/trickle.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_py/com_py/universal_compressor.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_py/package.xml +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_py/resource/com_py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_py/setup.cfg +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_py/setup.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_py/test/test_copyright.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_py/test/test_flake8.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/ros2src/com_py/test/test_pep257.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/session/content/network/up_connectivity.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/session/content/network/wifi_network_analysis_2.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/session/creation/anonymize_bag.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/session/creation/catmux_log_setup.sh +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/session/creation/create_session_yaml.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/session/creation/generate_session_files.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/session/creation/run_session.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/session/creation/run_session_in_external_terminal.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/resources/ws/session/creation/strip_ansi.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/status_eval.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/stream_stats.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/trace_profiles.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/transit.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom/video_quality.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom_dev.egg-info/dependency_links.txt +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom_dev.egg-info/entry_points.txt +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/src/rosotacom_dev.egg-info/top_level.txt +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/terminology.md +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/contract/test_benched_set_registry.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/contract/test_findings.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/contract/test_generated_topics_have_a_producer.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/contract/test_markdown_links.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/contract/test_ota_source_bundle.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/contract/test_package_metadata.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/contract/test_pytest_policy.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/contract/test_readme_examples.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/contract/test_session_configuration_doc.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/contract/test_session_template_substitution.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/e2e/conftest.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/e2e/test_anonymize_e2e.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/e2e/test_benchmark_ab.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/e2e/test_benchmark_capacity.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/e2e/test_benchmark_replay.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/e2e/test_parallel_smoke.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/e2e/test_smoke.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/e2e/test_timeline_stepping.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/e2e/test_video_quality_e2e.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/sessions/generate_rmw_matrix.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/sessions/rmw_matrix/1_heartbeat_cyclone-local_zenoh-ros2dds-ota/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/sessions/rmw_matrix/1_heartbeat_cyclone-ota/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/sessions/rmw_matrix/1_heartbeat_cyclone-ota-tuned/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/sessions/rmw_matrix/1_heartbeat_fastdds/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/sessions/rmw_matrix/1_heartbeat_fastdds-default/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/sessions/rmw_matrix/1_heartbeat_zen-endpoints/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/unit/test_bag_ground_truth.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/unit/test_benched_set.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/unit/test_benchmark.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/unit/test_benchmark_delta.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/unit/test_bundle_check.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/unit/test_catmux_pane_logging.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/unit/test_cli_benchmark.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/unit/test_container_shaping.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/unit/test_deployment.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/unit/test_ffmpeg_flags.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/unit/test_ffmpeg_packet.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/unit/test_field_profiles.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/unit/test_forensics.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/unit/test_geomap.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/unit/test_link_bytes.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/unit/test_link_trace.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/unit/test_netem_dist.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/unit/test_network_preflight.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/unit/test_network_profiles.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/unit/test_network_shaper.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/unit/test_ota_link_configs.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/unit/test_ota_unwrapper.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/unit/test_ota_wrapper.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/unit/test_ota_xml.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/unit/test_playout_pacer.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/unit/test_plots.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/unit/test_pub_sub_pair_types.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/unit/test_qos_fallback_logging.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/unit/test_relay_optional_parameters.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/unit/test_session_pipeline.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/unit/test_stage_latency.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/unit/test_status_eval.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/unit/test_status_overview.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/unit/test_status_overview_observer.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/unit/test_stream_stats.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/unit/test_trace_profiles.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/unit/test_transit.py +0 -0
- {rosotacom_dev-2.5.dev60 → rosotacom_dev-2.5.dev62}/tests/unit/test_video_quality.py +0 -0
|
@@ -14,11 +14,19 @@ concurrency:
|
|
|
14
14
|
|
|
15
15
|
jobs:
|
|
16
16
|
trivy-image:
|
|
17
|
-
name: trivy-image
|
|
17
|
+
name: trivy-image-${{ matrix.variant }}
|
|
18
18
|
runs-on: ubuntu-latest
|
|
19
19
|
timeout-minutes: 180
|
|
20
|
+
strategy:
|
|
21
|
+
fail-fast: false
|
|
22
|
+
matrix:
|
|
23
|
+
include:
|
|
24
|
+
- variant: kilted
|
|
25
|
+
config: src/rosotacom/resources/ros2docker.json.example
|
|
26
|
+
- variant: lyrical
|
|
27
|
+
config: src/rosotacom/resources/ros2docker.lyrical.json.example
|
|
20
28
|
env:
|
|
21
|
-
IMAGE_TAG: rosotacom:scan-${{ github.sha }}
|
|
29
|
+
IMAGE_TAG: rosotacom:scan-${{ matrix.variant }}-${{ github.sha }}
|
|
22
30
|
|
|
23
31
|
steps:
|
|
24
32
|
- name: Check out repository
|
|
@@ -41,10 +49,10 @@ jobs:
|
|
|
41
49
|
- name: Show Docker environment
|
|
42
50
|
run: docker info
|
|
43
51
|
|
|
44
|
-
- name: Build
|
|
52
|
+
- name: Build rosotacom image
|
|
45
53
|
run: |
|
|
46
54
|
.venv/bin/ros2docker build \
|
|
47
|
-
-f
|
|
55
|
+
-f "${{ matrix.config }}" \
|
|
48
56
|
-o "{\"image_name\":\"${IMAGE_TAG}\"}"
|
|
49
57
|
|
|
50
58
|
- name: Run Trivy vulnerability scanner
|
|
@@ -61,6 +69,6 @@ jobs:
|
|
|
61
69
|
if: always()
|
|
62
70
|
uses: actions/upload-artifact@v7
|
|
63
71
|
with:
|
|
64
|
-
name: trivy-image-report
|
|
72
|
+
name: trivy-image-report-${{ matrix.variant }}
|
|
65
73
|
path: trivy-image-report.txt
|
|
66
74
|
if-no-files-found: warn
|
|
@@ -32,12 +32,13 @@ jobs:
|
|
|
32
32
|
# nightly failed with nine "Timed out waiting for container readiness"
|
|
33
33
|
# errors after 1h12m on one runner, while the same tests on the same commit
|
|
34
34
|
# passed in the merge gate — where they were spread over six at the time.
|
|
35
|
-
name: smoke-e2e-${{ matrix.slice }}
|
|
35
|
+
name: smoke-e2e-${{ matrix.variant }}-${{ matrix.slice }}
|
|
36
36
|
runs-on: ubuntu-latest
|
|
37
37
|
timeout-minutes: 90
|
|
38
38
|
strategy:
|
|
39
39
|
fail-fast: false
|
|
40
40
|
matrix:
|
|
41
|
+
variant: [kilted, lyrical]
|
|
41
42
|
slice:
|
|
42
43
|
- heartbeat
|
|
43
44
|
- chatter
|
|
@@ -86,24 +87,27 @@ jobs:
|
|
|
86
87
|
run: docker info
|
|
87
88
|
|
|
88
89
|
- name: Run E2E slice
|
|
90
|
+
env:
|
|
91
|
+
ROSOTACOM_ROS2DOCKER_CONFIG: ${{ matrix.variant == 'lyrical' && format('{0}/src/rosotacom/resources/examples/ros2docker.lyrical.json', github.workspace) || '' }}
|
|
89
92
|
run: just test-e2e-slice ${{ matrix.slice }}
|
|
90
93
|
|
|
91
94
|
- name: Upload smoke session artifacts
|
|
92
95
|
if: failure()
|
|
93
96
|
uses: actions/upload-artifact@v7
|
|
94
97
|
with:
|
|
95
|
-
name: session-instances-smoke-${{ matrix.slice }}
|
|
98
|
+
name: session-instances-smoke-${{ matrix.variant }}-${{ matrix.slice }}
|
|
96
99
|
path: session-instances/
|
|
97
100
|
if-no-files-found: ignore
|
|
98
101
|
|
|
99
102
|
rmw-matrix:
|
|
100
|
-
name: rmw-${{ matrix.session }}
|
|
103
|
+
name: rmw-${{ matrix.variant }}-${{ matrix.session }}
|
|
101
104
|
runs-on: ubuntu-latest
|
|
102
105
|
timeout-minutes: 90
|
|
103
106
|
if: github.event_name != 'schedule' || github.event.inputs.full-rmw-matrix != 'false'
|
|
104
107
|
strategy:
|
|
105
108
|
fail-fast: false
|
|
106
109
|
matrix:
|
|
110
|
+
variant: [kilted, lyrical]
|
|
107
111
|
session:
|
|
108
112
|
- cyclone-local-zenoh-ros2dds-ota
|
|
109
113
|
- cyclone-ota
|
|
@@ -139,12 +143,14 @@ jobs:
|
|
|
139
143
|
run: docker info
|
|
140
144
|
|
|
141
145
|
- name: Run generated RMW matrix session
|
|
146
|
+
env:
|
|
147
|
+
ROSOTACOM_ROS2DOCKER_CONFIG: ${{ matrix.variant == 'lyrical' && format('{0}/src/rosotacom/resources/examples/ros2docker.lyrical.json', github.workspace) || '' }}
|
|
142
148
|
run: just test-e2e-rmw ${{ matrix.session }}
|
|
143
149
|
|
|
144
150
|
- name: Upload RMW session artifacts
|
|
145
151
|
if: failure()
|
|
146
152
|
uses: actions/upload-artifact@v7
|
|
147
153
|
with:
|
|
148
|
-
name: session-instances-rmw-${{ matrix.session }}
|
|
154
|
+
name: session-instances-rmw-${{ matrix.variant }}-${{ matrix.session }}
|
|
149
155
|
path: session-instances/
|
|
150
156
|
if-no-files-found: ignore
|
|
@@ -159,7 +159,8 @@ jobs:
|
|
|
159
159
|
quick-gate:
|
|
160
160
|
# Everything `e2e` waits for that is not the image, and deliberately no
|
|
161
161
|
# more. It exists to answer one question — is the tree obviously broken,
|
|
162
|
-
# such that seventeen slices would burn roughly
|
|
162
|
+
# such that two variants across seventeen slices would burn roughly 146
|
|
163
|
+
# runner-minutes to say so.
|
|
163
164
|
#
|
|
164
165
|
# It replaced a `needs: preflight-success` edge that made e2e wait for the
|
|
165
166
|
# whole five-version matrix. That barrier cost 2.15 min of every gate run
|
|
@@ -204,7 +205,8 @@ jobs:
|
|
|
204
205
|
# ROS base from Docker Hub, 40s exporting layers, 47s of apt and pip. A pull
|
|
205
206
|
# from GHCR — co-located with the runners, no Hub rate limit, one transfer
|
|
206
207
|
# instead of a transfer plus a build — replaces all of it. The benefit
|
|
207
|
-
# grows with the diagnostic matrix;
|
|
208
|
+
# grows with the diagnostic matrix; both distribution variants still build
|
|
209
|
+
# only once each.
|
|
208
210
|
#
|
|
209
211
|
# The tag is a hash of everything that decides the image (base digest,
|
|
210
212
|
# package lists, Dockerfile, entrypoint, ros2docker version, build UID):
|
|
@@ -255,18 +257,32 @@ jobs:
|
|
|
255
257
|
# artifacts that live beside the checkout in the private harness, so it
|
|
256
258
|
# does not resolve here.
|
|
257
259
|
project="$(.venv/bin/rosotacom resources path examples)/rosotacom.yaml"
|
|
258
|
-
.venv/bin/rosotacom
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
echo "present: $reference"
|
|
264
|
-
continue
|
|
260
|
+
lyrical_config="$(.venv/bin/rosotacom resources path ros2docker-lyrical)"
|
|
261
|
+
for variant in kilted lyrical; do
|
|
262
|
+
config=""
|
|
263
|
+
if [[ "$variant" == "lyrical" ]]; then
|
|
264
|
+
config="$lyrical_config"
|
|
265
265
|
fi
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
266
|
+
variant_references="references-${variant}.txt"
|
|
267
|
+
ROSOTACOM_ROS2DOCKER_CONFIG="$config" \
|
|
268
|
+
.venv/bin/rosotacom image references \
|
|
269
|
+
--project "$project" \
|
|
270
|
+
--repository "$repository" > "$variant_references"
|
|
271
|
+
|
|
272
|
+
while read -r reference; do
|
|
273
|
+
if docker manifest inspect "$reference" >/dev/null 2>&1; then
|
|
274
|
+
echo "present ($variant): $reference"
|
|
275
|
+
continue
|
|
276
|
+
fi
|
|
277
|
+
echo "missing ($variant), building: $reference"
|
|
278
|
+
ROSOTACOM_ROS2DOCKER_CONFIG="$config" \
|
|
279
|
+
.venv/bin/rosotacom image build --project "$project" --reference "$reference"
|
|
280
|
+
docker push "$reference" || echo "::warning::could not push $reference"
|
|
281
|
+
done < "$variant_references"
|
|
282
|
+
done
|
|
283
|
+
|
|
284
|
+
sort -u references-kilted.txt references-lyrical.txt > references.txt
|
|
285
|
+
cat references.txt
|
|
270
286
|
|
|
271
287
|
# Report the repository only when every reference resolves. A
|
|
272
288
|
# read-only GITHUB_TOKEN (a fork PR, Dependabot) can log in and pull
|
|
@@ -301,7 +317,7 @@ jobs:
|
|
|
301
317
|
# reaches the measured floor: #253 split the four overloaded themes along
|
|
302
318
|
# transport, stream, or concurrency semantics. Which tests a slice owns and
|
|
303
319
|
# what each costs is E2E_SLICES in tests/e2e/conftest.py.
|
|
304
|
-
name: e2e-${{ matrix.slice }}
|
|
320
|
+
name: e2e-${{ matrix.variant }}-${{ matrix.slice }}
|
|
305
321
|
runs-on: ubuntu-latest
|
|
306
322
|
timeout-minutes: 90
|
|
307
323
|
needs: [quick-gate, image]
|
|
@@ -312,6 +328,7 @@ jobs:
|
|
|
312
328
|
strategy:
|
|
313
329
|
fail-fast: false
|
|
314
330
|
matrix:
|
|
331
|
+
variant: [kilted, lyrical]
|
|
315
332
|
slice:
|
|
316
333
|
- heartbeat
|
|
317
334
|
- chatter
|
|
@@ -371,13 +388,14 @@ jobs:
|
|
|
371
388
|
# that tag itself and never accepts one, so it cannot be pointed at an
|
|
372
389
|
# image built from something else.
|
|
373
390
|
ROSOTACOM_IMAGE_CACHE: ${{ needs.image.outputs.repository }}
|
|
391
|
+
ROSOTACOM_ROS2DOCKER_CONFIG: ${{ matrix.variant == 'lyrical' && format('{0}/src/rosotacom/resources/examples/ros2docker.lyrical.json', github.workspace) || '' }}
|
|
374
392
|
run: just test-e2e-slice ${{ matrix.slice }}
|
|
375
393
|
|
|
376
394
|
- name: Upload session artifacts
|
|
377
395
|
if: failure()
|
|
378
396
|
uses: actions/upload-artifact@v7
|
|
379
397
|
with:
|
|
380
|
-
name: session-instances-e2e-${{ matrix.slice }}
|
|
398
|
+
name: session-instances-e2e-${{ matrix.variant }}-${{ matrix.slice }}
|
|
381
399
|
path: session-instances/
|
|
382
400
|
if-no-files-found: ignore
|
|
383
401
|
|
|
@@ -115,12 +115,13 @@ jobs:
|
|
|
115
115
|
# identical to nightly-e2e.yml's smoke-e2e job, so the release used to be
|
|
116
116
|
# the third sequential run of the same tests against the same tree; it
|
|
117
117
|
# dominated release wall-clock at roughly an hour. See issue #196.
|
|
118
|
-
name: e2e-${{ matrix.slice }}
|
|
118
|
+
name: e2e-${{ matrix.variant }}-${{ matrix.slice }}
|
|
119
119
|
runs-on: ubuntu-latest
|
|
120
120
|
timeout-minutes: 90
|
|
121
121
|
strategy:
|
|
122
122
|
fail-fast: false
|
|
123
123
|
matrix:
|
|
124
|
+
variant: [kilted, lyrical]
|
|
124
125
|
slice:
|
|
125
126
|
- heartbeat
|
|
126
127
|
- chatter
|
|
@@ -169,13 +170,15 @@ jobs:
|
|
|
169
170
|
run: docker info
|
|
170
171
|
|
|
171
172
|
- name: Run E2E slice
|
|
173
|
+
env:
|
|
174
|
+
ROSOTACOM_ROS2DOCKER_CONFIG: ${{ matrix.variant == 'lyrical' && format('{0}/src/rosotacom/resources/examples/ros2docker.lyrical.json', github.workspace) || '' }}
|
|
172
175
|
run: just test-e2e-slice ${{ matrix.slice }}
|
|
173
176
|
|
|
174
177
|
- name: Upload session artifacts
|
|
175
178
|
if: failure()
|
|
176
179
|
uses: actions/upload-artifact@v7
|
|
177
180
|
with:
|
|
178
|
-
name: session-instances-e2e-${{ matrix.slice }}
|
|
181
|
+
name: session-instances-e2e-${{ matrix.variant }}-${{ matrix.slice }}
|
|
179
182
|
path: session-instances/
|
|
180
183
|
if-no-files-found: ignore
|
|
181
184
|
|
|
@@ -7,7 +7,7 @@ repos:
|
|
|
7
7
|
- id: check-yaml
|
|
8
8
|
- id: check-toml
|
|
9
9
|
- id: check-json
|
|
10
|
-
exclude: ^src/rosotacom/resources/(examples/ros2docker
|
|
10
|
+
exclude: ^src/rosotacom/resources/(examples/ros2docker(?:\.lyrical)?\.json|ros2docker(?:\.lyrical)?\.json\.example)$
|
|
11
11
|
- id: check-merge-conflict
|
|
12
12
|
- id: debug-statements
|
|
13
13
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: rosotacom-dev
|
|
3
|
-
Version: 2.5.
|
|
3
|
+
Version: 2.5.dev62
|
|
4
4
|
Summary: Host CLI for ROS OTA communication sessions.
|
|
5
5
|
Author: develNor
|
|
6
6
|
License-Expression: BSD-3-Clause
|
|
@@ -27,7 +27,7 @@ Requires-Dist: argcomplete<4,>=3.6
|
|
|
27
27
|
Requires-Dist: mcap<2,>=1.4
|
|
28
28
|
Requires-Dist: Pillow<13,>=10
|
|
29
29
|
Requires-Dist: PyYAML>=6
|
|
30
|
-
Requires-Dist: ros2docker<0.2,>=0.1.5.
|
|
30
|
+
Requires-Dist: ros2docker<0.2,>=0.1.5.dev10
|
|
31
31
|
Provides-Extra: dev
|
|
32
32
|
Requires-Dist: build>=1.2; extra == "dev"
|
|
33
33
|
Requires-Dist: check-wheel-contents>=0.6; extra == "dev"
|
|
@@ -73,7 +73,7 @@ The ROS Communication DevContainer is a Docker-based solution designed to stream
|
|
|
73
73
|
- Git for configuration management
|
|
74
74
|
- Python 3 with virtual environment support (`python3-venv` on Debian/Ubuntu;
|
|
75
75
|
for versioned Python packages this may be named like `python3.14-venv`)
|
|
76
|
-
- `ros2docker` v0.1.
|
|
76
|
+
- `ros2docker` v0.1.5.dev10 or newer (below v0.2). The local installer below installs the pinned
|
|
77
77
|
supported range into this checkout's virtual environment.
|
|
78
78
|
- `tmux` for the optional `rosotacom scenario` orchestration commands
|
|
79
79
|
- Machines connected to the same network (VPN or local WLAN)
|
|
@@ -216,6 +216,7 @@ The copied packaged example project uses this layout:
|
|
|
216
216
|
```text
|
|
217
217
|
rosotacom.yaml
|
|
218
218
|
ros2docker.json
|
|
219
|
+
ros2docker.lyrical.json
|
|
219
220
|
deployment.example.yaml
|
|
220
221
|
sessions/
|
|
221
222
|
scenarios/
|
|
@@ -246,6 +247,7 @@ composes directly in a shell:
|
|
|
246
247
|
```bash
|
|
247
248
|
rosotacom resources path com_msgs # the ROS 2 message package
|
|
248
249
|
rosotacom resources path ws # the packaged runtime workspace
|
|
250
|
+
rosotacom resources path ros2docker-lyrical # the opt-in ROS 2 Lyrical image config
|
|
249
251
|
```
|
|
250
252
|
|
|
251
253
|
Use this wherever another project needs rosotacom's files on the host, for
|
|
@@ -253,6 +255,44 @@ example to bake `com_msgs` into its own container image. Ask for the resource by
|
|
|
253
255
|
name rather than reconstructing a path: the names are part of the CLI contract,
|
|
254
256
|
the layout behind them is not.
|
|
255
257
|
|
|
258
|
+
### ROS 2 distribution variants
|
|
259
|
+
|
|
260
|
+
ROS 2 Kilted remains the default. The packaged Lyrical/Ubuntu Resolute image is
|
|
261
|
+
an explicit opt-in and uses a separate image name, so trying it does not replace
|
|
262
|
+
the default image. To select it for one command, including the built-in example:
|
|
263
|
+
|
|
264
|
+
```bash
|
|
265
|
+
ROSOTACOM_ROS2DOCKER_CONFIG="$(rosotacom resources path ros2docker-lyrical)" \
|
|
266
|
+
rosotacom smoke
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
An example project copied with `rosotacom examples create` also contains
|
|
270
|
+
`ros2docker.lyrical.json`. To opt that project in persistently, select it in
|
|
271
|
+
`rosotacom.yaml`:
|
|
272
|
+
|
|
273
|
+
```yaml
|
|
274
|
+
ros2docker_config: ros2docker.lyrical.json
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
The Lyrical config keeps every available ROS dependency on the official binary
|
|
278
|
+
packages. `domain_bridge` is the current exception: because no Lyrical binary
|
|
279
|
+
package exists, ros2docker's `domain-bridge` profile builds a pinned upstream
|
|
280
|
+
commit with a pinned compatibility patch. The build fails closed outside
|
|
281
|
+
Lyrical or if that patch no longer applies. Replace this fallback with
|
|
282
|
+
`ros-lyrical-domain-bridge` once the official package is released.
|
|
283
|
+
|
|
284
|
+
The communication container and any scenario application with a matching
|
|
285
|
+
`ros2docker_config_by_distro` entry follow this variant selection together.
|
|
286
|
+
The packaged chatter scenario supplies Lyrical application configs, because
|
|
287
|
+
[ROS 2 does not guarantee cross-distribution communication](https://docs.ros.org/en/ros2_documentation/rolling/Releases.html#cross-distribution-communications).
|
|
288
|
+
Applications without a matching entry retain their explicit default config.
|
|
289
|
+
|
|
290
|
+
The default switch is intentionally not part of this change. Before promoting
|
|
291
|
+
Lyrical, keep the two-variant E2E and RMW matrices green, point the packaged
|
|
292
|
+
default and example project at the Lyrical configs, and recalibrate the
|
|
293
|
+
distribution-specific performance budgets. Existing copied projects continue
|
|
294
|
+
to name their own config and do not change when the package default changes.
|
|
295
|
+
|
|
256
296
|
### Reusing an image instead of rebuilding it
|
|
257
297
|
|
|
258
298
|
Somewhere that starts many rosotacom sessions from the same tree — CI above all
|
|
@@ -362,9 +402,13 @@ applications:
|
|
|
362
402
|
a:
|
|
363
403
|
- name: native_application
|
|
364
404
|
ros2docker_config: ../../scripts/2_native_chatter/machine_a/external.ros2docker.json
|
|
405
|
+
ros2docker_config_by_distro:
|
|
406
|
+
lyrical: ../../scripts/2_native_chatter/machine_a/external.lyrical.ros2docker.json
|
|
365
407
|
b:
|
|
366
408
|
- name: native_application
|
|
367
409
|
ros2docker_config: ../../scripts/2_native_chatter/machine_b/external.ros2docker.json
|
|
410
|
+
ros2docker_config_by_distro:
|
|
411
|
+
lyrical: ../../scripts/2_native_chatter/machine_b/external.lyrical.ros2docker.json
|
|
368
412
|
```
|
|
369
413
|
|
|
370
414
|
Start one identity's communication and local application together:
|
|
@@ -379,7 +423,11 @@ rosotacom scenario stop
|
|
|
379
423
|
`scenario list` shows both configured scenarios and currently active
|
|
380
424
|
scenario/identity pairs. `attach` and `stop` infer omitted values when exactly
|
|
381
425
|
one active choice exists; otherwise their completions and error messages show
|
|
382
|
-
the eligible active choices.
|
|
426
|
+
the eligible active choices. `ros2docker_config` is always the fallback;
|
|
427
|
+
`ros2docker_config_by_distro` selects a matching application image from the
|
|
428
|
+
communication config's `BASE_IMAGE` distro, so changing the project between
|
|
429
|
+
Kilted and Lyrical changes the complete scenario rather than creating an
|
|
430
|
+
unsupported mixed-distro data path.
|
|
383
431
|
|
|
384
432
|
The outer view uses an isolated host tmux server with one full window for
|
|
385
433
|
communication and one full window per local application. Its prefix remains
|
|
@@ -28,7 +28,7 @@ The ROS Communication DevContainer is a Docker-based solution designed to stream
|
|
|
28
28
|
- Git for configuration management
|
|
29
29
|
- Python 3 with virtual environment support (`python3-venv` on Debian/Ubuntu;
|
|
30
30
|
for versioned Python packages this may be named like `python3.14-venv`)
|
|
31
|
-
- `ros2docker` v0.1.
|
|
31
|
+
- `ros2docker` v0.1.5.dev10 or newer (below v0.2). The local installer below installs the pinned
|
|
32
32
|
supported range into this checkout's virtual environment.
|
|
33
33
|
- `tmux` for the optional `rosotacom scenario` orchestration commands
|
|
34
34
|
- Machines connected to the same network (VPN or local WLAN)
|
|
@@ -171,6 +171,7 @@ The copied packaged example project uses this layout:
|
|
|
171
171
|
```text
|
|
172
172
|
rosotacom.yaml
|
|
173
173
|
ros2docker.json
|
|
174
|
+
ros2docker.lyrical.json
|
|
174
175
|
deployment.example.yaml
|
|
175
176
|
sessions/
|
|
176
177
|
scenarios/
|
|
@@ -201,6 +202,7 @@ composes directly in a shell:
|
|
|
201
202
|
```bash
|
|
202
203
|
rosotacom resources path com_msgs # the ROS 2 message package
|
|
203
204
|
rosotacom resources path ws # the packaged runtime workspace
|
|
205
|
+
rosotacom resources path ros2docker-lyrical # the opt-in ROS 2 Lyrical image config
|
|
204
206
|
```
|
|
205
207
|
|
|
206
208
|
Use this wherever another project needs rosotacom's files on the host, for
|
|
@@ -208,6 +210,44 @@ example to bake `com_msgs` into its own container image. Ask for the resource by
|
|
|
208
210
|
name rather than reconstructing a path: the names are part of the CLI contract,
|
|
209
211
|
the layout behind them is not.
|
|
210
212
|
|
|
213
|
+
### ROS 2 distribution variants
|
|
214
|
+
|
|
215
|
+
ROS 2 Kilted remains the default. The packaged Lyrical/Ubuntu Resolute image is
|
|
216
|
+
an explicit opt-in and uses a separate image name, so trying it does not replace
|
|
217
|
+
the default image. To select it for one command, including the built-in example:
|
|
218
|
+
|
|
219
|
+
```bash
|
|
220
|
+
ROSOTACOM_ROS2DOCKER_CONFIG="$(rosotacom resources path ros2docker-lyrical)" \
|
|
221
|
+
rosotacom smoke
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
An example project copied with `rosotacom examples create` also contains
|
|
225
|
+
`ros2docker.lyrical.json`. To opt that project in persistently, select it in
|
|
226
|
+
`rosotacom.yaml`:
|
|
227
|
+
|
|
228
|
+
```yaml
|
|
229
|
+
ros2docker_config: ros2docker.lyrical.json
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
The Lyrical config keeps every available ROS dependency on the official binary
|
|
233
|
+
packages. `domain_bridge` is the current exception: because no Lyrical binary
|
|
234
|
+
package exists, ros2docker's `domain-bridge` profile builds a pinned upstream
|
|
235
|
+
commit with a pinned compatibility patch. The build fails closed outside
|
|
236
|
+
Lyrical or if that patch no longer applies. Replace this fallback with
|
|
237
|
+
`ros-lyrical-domain-bridge` once the official package is released.
|
|
238
|
+
|
|
239
|
+
The communication container and any scenario application with a matching
|
|
240
|
+
`ros2docker_config_by_distro` entry follow this variant selection together.
|
|
241
|
+
The packaged chatter scenario supplies Lyrical application configs, because
|
|
242
|
+
[ROS 2 does not guarantee cross-distribution communication](https://docs.ros.org/en/ros2_documentation/rolling/Releases.html#cross-distribution-communications).
|
|
243
|
+
Applications without a matching entry retain their explicit default config.
|
|
244
|
+
|
|
245
|
+
The default switch is intentionally not part of this change. Before promoting
|
|
246
|
+
Lyrical, keep the two-variant E2E and RMW matrices green, point the packaged
|
|
247
|
+
default and example project at the Lyrical configs, and recalibrate the
|
|
248
|
+
distribution-specific performance budgets. Existing copied projects continue
|
|
249
|
+
to name their own config and do not change when the package default changes.
|
|
250
|
+
|
|
211
251
|
### Reusing an image instead of rebuilding it
|
|
212
252
|
|
|
213
253
|
Somewhere that starts many rosotacom sessions from the same tree — CI above all
|
|
@@ -317,9 +357,13 @@ applications:
|
|
|
317
357
|
a:
|
|
318
358
|
- name: native_application
|
|
319
359
|
ros2docker_config: ../../scripts/2_native_chatter/machine_a/external.ros2docker.json
|
|
360
|
+
ros2docker_config_by_distro:
|
|
361
|
+
lyrical: ../../scripts/2_native_chatter/machine_a/external.lyrical.ros2docker.json
|
|
320
362
|
b:
|
|
321
363
|
- name: native_application
|
|
322
364
|
ros2docker_config: ../../scripts/2_native_chatter/machine_b/external.ros2docker.json
|
|
365
|
+
ros2docker_config_by_distro:
|
|
366
|
+
lyrical: ../../scripts/2_native_chatter/machine_b/external.lyrical.ros2docker.json
|
|
323
367
|
```
|
|
324
368
|
|
|
325
369
|
Start one identity's communication and local application together:
|
|
@@ -334,7 +378,11 @@ rosotacom scenario stop
|
|
|
334
378
|
`scenario list` shows both configured scenarios and currently active
|
|
335
379
|
scenario/identity pairs. `attach` and `stop` infer omitted values when exactly
|
|
336
380
|
one active choice exists; otherwise their completions and error messages show
|
|
337
|
-
the eligible active choices.
|
|
381
|
+
the eligible active choices. `ros2docker_config` is always the fallback;
|
|
382
|
+
`ros2docker_config_by_distro` selects a matching application image from the
|
|
383
|
+
communication config's `BASE_IMAGE` distro, so changing the project between
|
|
384
|
+
Kilted and Lyrical changes the complete scenario rather than creating an
|
|
385
|
+
unsupported mixed-distro data path.
|
|
338
386
|
|
|
339
387
|
The outer view uses an isolated host tmux server with one full window for
|
|
340
388
|
communication and one full window per local application. Its prefix remains
|
|
@@ -43,22 +43,28 @@ check is:
|
|
|
43
43
|
ci-success
|
|
44
44
|
```
|
|
45
45
|
|
|
46
|
-
The merge gate runs workflow lint, dependency/security review, runtime/build
|
|
46
|
+
The merge gate runs workflow lint, dependency/security review, runtime/build
|
|
47
|
+
asset lint, Python 3.10 through 3.14 non-Docker checks, package validation, and
|
|
48
|
+
the Docker single-machine smoke matrix: seventeen diagnostic slices for each of
|
|
49
|
+
the `kilted` and `lyrical` variants, 34 jobs in parallel. Scenario application
|
|
50
|
+
images follow the selected communication distro through
|
|
51
|
+
`ros2docker_config_by_distro`, so each variant is end-to-end rather than a
|
|
52
|
+
cross-distro combination.
|
|
47
53
|
|
|
48
54
|
Python 3.10–3.14 are supported for the host CLI; Python 3.12 is the reference
|
|
49
55
|
interpreter for packaging and Docker E2E jobs.
|
|
50
56
|
|
|
51
57
|
### What the e2e slices wait for
|
|
52
58
|
|
|
53
|
-
The only explicit barriers before the
|
|
54
|
-
wait for exactly two jobs:
|
|
59
|
+
The only explicit barriers before the 34 variant/slice jobs are their `needs`.
|
|
60
|
+
They wait for exactly two jobs:
|
|
55
61
|
|
|
56
62
|
- **`image`**, because a slice adopts the published image rather than building
|
|
57
63
|
it, so it cannot start before that image is known to exist. On a hit this is
|
|
58
64
|
two manifest inspections, and it is what sets the floor.
|
|
59
65
|
- **`quick-gate`**, `just lint && just typecheck` on one interpreter: the
|
|
60
|
-
cheapest signal that the tree is not obviously broken, so
|
|
61
|
-
|
|
66
|
+
cheapest signal that the tree is not obviously broken, so 34 runners do not
|
|
67
|
+
spend roughly 146 minutes discovering a syntax error. Four seconds of work,
|
|
62
68
|
sized to finish inside `image` and therefore free.
|
|
63
69
|
|
|
64
70
|
They used to wait for `preflight-success`, which meant the whole five-version
|
|
@@ -105,19 +111,23 @@ Docker E2E is not collected for coverage.
|
|
|
105
111
|
|
|
106
112
|
## Docker E2E
|
|
107
113
|
|
|
108
|
-
`just test-e2e-smoke` runs the entire local single-machine smoke matrix through
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
114
|
+
`just test-e2e-smoke` runs the entire local single-machine smoke matrix through
|
|
115
|
+
Docker using the selected config (Kilted by default). In the CI merge gate, the
|
|
116
|
+
same collection runs for both Kilted and Lyrical as 34 parallel jobs, one per
|
|
117
|
+
variant/slice pair, named `e2e-<variant>-<slice>`. Each smoke run writes
|
|
118
|
+
generated config, catmux pane logs, Docker logs when available, and the smoke
|
|
119
|
+
verification log under `session-instances/`; collect that directory as the
|
|
120
|
+
first debugging artifact when an E2E job fails.
|
|
113
121
|
|
|
114
122
|
### The e2e image is published once, not rebuilt per job
|
|
115
123
|
|
|
116
124
|
Every e2e job used to build the project image from scratch. #236 measured that
|
|
117
125
|
at 154s per job — 57s pulling the multi-GB ROS base from Docker Hub, 40s
|
|
118
126
|
exporting layers, 47s of apt and pip — which was 33 minutes of runner time and
|
|
119
|
-
thirteen Hub pulls with the matrix at that time.
|
|
120
|
-
|
|
127
|
+
thirteen Hub pulls with the matrix at that time. Each distribution-specific
|
|
128
|
+
communication image is now published once, despite the 17 consumers per
|
|
129
|
+
variant; scenario application images common to both variants are deduplicated
|
|
130
|
+
by their content-addressed references.
|
|
121
131
|
|
|
122
132
|
The `image` job now publishes those images to
|
|
123
133
|
`ghcr.io/<owner>/rosotacom-e2e` and each slice pulls instead of building. GHCR
|
|
@@ -161,6 +171,9 @@ Two properties are worth keeping in mind when changing this:
|
|
|
161
171
|
image from a different package list, so `rosotacom image references` walks the
|
|
162
172
|
project config *and* every scenario application. Publishing only the project
|
|
163
173
|
image would leave that slice adopting something nobody published.
|
|
174
|
+
- **Both ROS variants are published.** The publisher resolves the project once
|
|
175
|
+
with the default Kilted config and once with the opt-in Lyrical config. A
|
|
176
|
+
variant's reference is built under the same selection that derived it.
|
|
164
177
|
- **The release and nightly lanes still build from scratch**, as does the
|
|
165
178
|
nightly `image-scan`. That is deliberate: they are what would notice if a
|
|
166
179
|
published image and a fresh build ever stopped agreeing.
|
|
@@ -256,10 +269,12 @@ The deterministic benchmark rows gate against committed two-sided bands
|
|
|
256
269
|
## Nightly And Maintenance Checks
|
|
257
270
|
|
|
258
271
|
`.github/workflows/nightly-e2e.yml` runs the local smoke slice plus the generated
|
|
259
|
-
RMW matrix nightly on GitHub-hosted infrastructure
|
|
260
|
-
dispatch. It is not the private OTA promotion gate.
|
|
261
|
-
`.github/workflows/image-scan.yml` builds
|
|
262
|
-
uploads
|
|
272
|
+
RMW matrix for both Kilted and Lyrical nightly on GitHub-hosted infrastructure
|
|
273
|
+
and also supports manual dispatch. It is not the private OTA promotion gate.
|
|
274
|
+
`.github/workflows/image-scan.yml` builds both communication variants and
|
|
275
|
+
uploads one advisory Trivy report per image. The dedicated performance gate
|
|
276
|
+
remains on the default Kilted config because its committed budgets are
|
|
277
|
+
distribution-specific; switching the default requires a fresh calibration.
|
|
263
278
|
|
|
264
279
|
Dependabot is configured for weekly grouped GitHub Actions and Python dependency
|
|
265
280
|
updates.
|
|
@@ -9,13 +9,13 @@ set -euo pipefail
|
|
|
9
9
|
#
|
|
10
10
|
# Optional env vars:
|
|
11
11
|
# VENV_DIR=.venv
|
|
12
|
-
# ROS2DOCKER_SPEC='ros2docker==0.1.
|
|
12
|
+
# ROS2DOCKER_SPEC='ros2docker==0.1.5.dev10'
|
|
13
13
|
# BIN_DIR=~/.local/bin
|
|
14
14
|
|
|
15
15
|
SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
|
|
16
16
|
ROOT_DIR="$SCRIPT_DIR"
|
|
17
17
|
VENV_DIR="${VENV_DIR:-"$ROOT_DIR/.venv"}"
|
|
18
|
-
ROS2DOCKER_SPEC="${ROS2DOCKER_SPEC:-"ros2docker==0.1.
|
|
18
|
+
ROS2DOCKER_SPEC="${ROS2DOCKER_SPEC:-"ros2docker==0.1.5.dev10"}"
|
|
19
19
|
BIN_DIR="${BIN_DIR:-"$HOME/.local/bin"}"
|
|
20
20
|
|
|
21
21
|
INSTALL_GLOBAL_SYMLINKS=false
|
|
@@ -92,7 +92,9 @@ _package-smoke:
|
|
|
92
92
|
expected = (
|
|
93
93
|
"py.typed",
|
|
94
94
|
"resources/ros2docker.json.example",
|
|
95
|
+
"resources/ros2docker.lyrical.json.example",
|
|
95
96
|
"resources/examples/rosotacom.yaml",
|
|
97
|
+
"resources/examples/ros2docker.lyrical.json",
|
|
96
98
|
"resources/examples/sessions/1_heartbeat/session-definition.yaml",
|
|
97
99
|
"resources/examples/scenarios/2_native_chatter/scenario-definition.yaml",
|
|
98
100
|
"resources/ws/session/creation/run_session.py",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
ros2docker==0.1.5.dev10
|