rosotacom-dev 2.5.dev26__tar.gz → 2.5.dev29__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.dev29/.github/actions/setup-just/action.yml +34 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/.github/workflows/benchmark-calibrate.yml +11 -10
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/.github/workflows/benchmark-gate.yml +11 -10
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/.github/workflows/dev-release.yml +1 -3
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/.github/workflows/image-scan.yml +1 -3
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/.github/workflows/nightly-e2e.yml +41 -13
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/.github/workflows/pr-lightweight.yml +1 -3
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/.github/workflows/pr-merge-gate.yml +88 -62
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/.github/workflows/release.yml +30 -12
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/PKG-INFO +1 -1
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/docs/ci.md +72 -30
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/docs/testing.md +14 -9
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/justfile +1 -1
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/cli.py +17 -2
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/image_cache.py +5 -5
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom_dev.egg-info/PKG-INFO +1 -1
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom_dev.egg-info/SOURCES.txt +1 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom_dev.egg-info/scm_file_list.json +1 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom_dev.egg-info/scm_version.json +2 -2
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/tests/contract/test_benched_set_registry.py +3 -2
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/tests/contract/test_security_maintenance_config.py +13 -9
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/tests/contract/test_workflow_contracts.py +68 -15
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/tests/e2e/conftest.py +46 -28
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/tests/unit/test_cli.py +42 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/.devcontainer/devcontainer.json.template +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/.devcontainer/re_generate_devcontainer_json.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/.github/CODEOWNERS +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/.github/ISSUE_TEMPLATE/documentation-audit.md +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/.github/ISSUE_TEMPLATE/implementation-cleanup.md +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/.github/ISSUE_TEMPLATE/quality-workflow.md +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/.github/ISSUE_TEMPLATE/redesign.md +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/.github/ISSUE_TEMPLATE/release-process.md +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/.github/ISSUE_TEMPLATE/repository-diagnosis.md +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/.github/ISSUE_TEMPLATE/test-ci-audit.md +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/.github/ISSUE_TEMPLATE/work-item.md +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/.github/dependabot.yml +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/.pre-commit-config.yaml +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/AGENTS.md +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/CONCURRENCY.md +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/CONTRIBUTING.md +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/DEVELOPMENT_PRINCIPLES.md +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/LICENSE.txt +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/MANIFEST.in +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/README.md +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/budgets.jsonl +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/calibration/README.md +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/calibration/capacity-size-tight-cyclone.json +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/calibration/probe-loss-gop-tight-cyclone.json +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/calibration/probe-loss-nominal-cyclone.json +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/calibration/probe-loss-tight-cyclone.json +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/calibration/probe-loss-tight-fastdds.json +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/calibration/probe-loss-tight-zenoh.json +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/codecov.yml +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/deployment-configuration.md +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/docs/benchmark-ab.md +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/docs/benchmark-bag-as-load.md +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/docs/ffmpeg-keyframes.md +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/docs/findings/README.md +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/docs/findings/cyclone-spdp-discovery-bursts.md +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/docs/findings/delay-alone-no-loss.md +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/docs/findings/head-of-line-irregularity.md +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/docs/findings/jitter-loss-bandwidth-latency.md +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/docs/findings/lighter-message-loss.md +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/docs/findings/zero-loss-boundaries-18kb-20hz.md +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/docs/forensics-report.md +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/docs/geo-link-map.md +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/docs/github-repository-settings.md +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/docs/link-trace.md +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/docs/owner-runbook.md +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/docs/performance-bands.md +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/docs/playbooks/README.md +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/docs/quality-model.md +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/docs/release-notes/TEMPLATE.md +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/docs/release-notes/v2.1.md +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/docs/release-notes/v2.2.md +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/docs/release-notes/v2.3.md +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/docs/release-notes/v2.4.md +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/docs/release.md +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/docs/rfcs/0001-expectation-driven-test-suite.md +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/docs/rfcs/0002-expectation-concepts.md +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/docs/rfcs/0003-metric-backbone.md +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/docs/rfcs/0004-network-profiles.md +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/docs/rfcs/0005-benchmark-genres-and-ci.md +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/docs/rfcs/0006-dynamic-qos.md +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/docs/rfcs/0007-regression-gate.md +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/docs/rfcs/README.md +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/docs/work-items.md +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/install.sh +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/media/control_center.png +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/media/echo_test.png +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/media/forensics-report-example.png +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/media/host.png +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/media/vehicle.png +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/pyproject.toml +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/requirements.txt +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/rosotacom.yaml +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/run_session_in_container.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/session-configuration.md +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/setup.cfg +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/__init__.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/__main__.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/anonymize.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/bag_ground_truth.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/benched_set.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/benchmark.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/benchmark_delta.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/bundle_check.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/cli_benchmark.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/deployment.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/ffmpeg_packet.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/forensics.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/geomap.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/network_profiles.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/network_shaper.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/plots.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/py.typed +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/benched-set.yaml +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/.gitignore +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/README.md +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/__init__.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/bags/8_drop_reference/metadata.yaml +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/deployment.example.yaml +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/profiles.yaml +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/ros2docker.json +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/rosotacom.yaml +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/scenarios/2_native_chatter/scenario-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/scripts/1_heartbeat/run_machine_a.sh +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/scripts/1_heartbeat/run_machine_b.sh +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/scripts/2_native_chatter/machine_a/external.ros2docker.json +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/scripts/2_native_chatter/machine_a/run_communication.sh +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/scripts/2_native_chatter/machine_a/run_external.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/scripts/2_native_chatter/machine_a/wait_for_echo_topic.sh +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/scripts/2_native_chatter/machine_b/external.ros2docker.json +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/scripts/2_native_chatter/machine_b/run_communication.sh +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/scripts/2_native_chatter/machine_b/run_external.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_a/external.ros2docker.json +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_a/external_session.yaml +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_a/foxglove.json +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_a/run_communication.sh +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_a/run_external.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_b/costmap_1second/costmap_1second_0.mcap +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_b/costmap_1second/metadata.yaml +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_b/external.ros2docker.json +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_b/run_communication.sh +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_b/run_external.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_a/external.ros2docker.json +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_a/external_session.yaml +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_a/foxglove.json +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_a/run_communication.sh +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_a/run_external.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_b/costmap_1second/costmap_1second_0.mcap +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_b/costmap_1second/metadata.yaml +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_b/external.ros2docker.json +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_b/run_communication.sh +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_b/run_external.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/scripts/5_sized_payload/machine_a/external.ros2docker.json +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/scripts/5_sized_payload/machine_a/external_session.yaml +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/scripts/5_sized_payload/machine_a/run_communication.sh +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/scripts/5_sized_payload/machine_a/run_external.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/scripts/5_sized_payload/machine_b/external.ros2docker.json +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/scripts/5_sized_payload/machine_b/external_session.yaml +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/scripts/5_sized_payload/machine_b/run_communication.sh +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/scripts/5_sized_payload/machine_b/run_external.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/scripts/6_sized_payload_zen/machine_a/external.ros2docker.json +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/scripts/6_sized_payload_zen/machine_a/external_session.yaml +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/scripts/6_sized_payload_zen/machine_a/run_communication.sh +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/scripts/6_sized_payload_zen/machine_a/run_external.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/scripts/6_sized_payload_zen/machine_b/external.ros2docker.json +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/scripts/6_sized_payload_zen/machine_b/external_session.yaml +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/scripts/6_sized_payload_zen/machine_b/run_communication.sh +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/scripts/6_sized_payload_zen/machine_b/run_external.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/sessions/10_restamp/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/sessions/11_trickle/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/sessions/12_content_integrity/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/sessions/13_link_latency/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/sessions/14_remote_assist_anonymized/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/sessions/15_remote_assist_anonymized_costmap/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/sessions/16_remote_assist_anonymized_camera/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/sessions/17_synthetic_camera_quality/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/sessions/1_heartbeat/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/sessions/1_heartbeat_status/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/sessions/2_native_chatter/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/sessions/3_comp_occ_grid/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/sessions/4_comp_occ_grid_zen/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/sessions/5_sized_payload/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/sessions/6_sized_payload_zen/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/sessions/7_latched_static/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/sessions/8_drop/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/sessions/9_throttle/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/sessions/bench_1_1_capacity/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/sessions/bench_1_2_load_sweep/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/sessions/bench_1_3_ramp/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/sessions/bench_1_4_recovery/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/examples/sessions/bench_1_5_camera/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ros2docker.json.example +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/.vscode/c_cpp_properties.json +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/.vscode/settings.json +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ota_configs/archive/fastdds_easy_mode.xml.template +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ota_configs/archive/fastdds_initial_peer_list.xml.template +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ota_configs/archive/fastdds_v2.xml.template +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ota_configs/archive/fastdds_v3.xml.template +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ota_configs/archive/fastdds_v4.xml.template +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ota_configs/archive/fastdds_v5.xml.template +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ota_configs/create_zenoh_json5.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ota_configs/cyclonedds_minimal.xml.template +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ota_configs/cyclonedds_tuned.xml.template +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ota_configs/fastdds_unicast.xml.template +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ota_configs/get_ota_xml.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ota_configs/utils.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ota_configs/zenoh.json5.template +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/.gitkeep +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/com_cpp/CMakeLists.txt +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/com_cpp/COLCON_IGNORE +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/com_cpp/LICENSE.txt +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/com_cpp/package.xml +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/com_cpp/src/hz_monitor.cpp +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/com_cpp/src/universal_compressor.cpp +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/com_cpp/src/universal_decompressor.cpp +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/com_msgs/CMakeLists.txt +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/com_msgs/LICENSE.txt +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/com_msgs/msg/CompressedData.msg +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/com_msgs/msg/EchoHeartbeat.msg +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/com_msgs/msg/OtaStamped.msg +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/com_msgs/msg/SizedPayload.msg +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/com_msgs/package.xml +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/com_py/LICENSE.txt +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/com_py/com_py/__init__.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/com_py/com_py/base_bridge_relay.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/com_py/com_py/bridge_in.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/com_py/com_py/bridge_out.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/com_py/com_py/heartbeat_echo.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/com_py/com_py/hz_monitor.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/com_py/com_py/image_bandwidth_reducer.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/com_py/com_py/image_pixel_capper.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/com_py/com_py/lanelet_saver.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/com_py/com_py/latch_relay.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/com_py/com_py/legacy/costmap_remapper.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/com_py/com_py/legacy/marker_remapper.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/com_py/com_py/legacy/speed_test.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/com_py/com_py/legacy/tf_remapper.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/com_py/com_py/legacy/traffic_monitor.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/com_py/com_py/legacy/wifi_network_analysis_1.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/com_py/com_py/link_bytes.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/com_py/com_py/link_trace.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/com_py/com_py/local_global_frame_bridge.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/com_py/com_py/localization_map_split_reduce_saver.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/com_py/com_py/msg_transform.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/com_py/com_py/pair_management.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/com_py/com_py/pub_sub_pair.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/com_py/com_py/qos.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/com_py/com_py/relay_in.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/com_py/com_py/relay_out.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/com_py/com_py/restamp.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/com_py/com_py/sized_publisher.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/com_py/com_py/stage_latency.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/com_py/com_py/stage_latency_core.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/com_py/com_py/status_overview.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/com_py/com_py/status_overview_core.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/com_py/com_py/tf_map_to_cart_saver.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/com_py/com_py/topic_monitor.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/com_py/com_py/topic_resolution.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/com_py/com_py/trickle.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/com_py/com_py/universal_compressor.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/com_py/com_py/universal_decompressor.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/com_py/com_py/universal_ota_unwrapper.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/com_py/com_py/universal_ota_wrapper.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/com_py/package.xml +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/com_py/resource/com_py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/com_py/setup.cfg +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/com_py/setup.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/com_py/test/test_copyright.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/com_py/test/test_flake8.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/ros2src/com_py/test/test_pep257.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/session/content/base/session_plugin_base.yaml +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/session/content/network/up_connectivity.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/session/content/network/wifi_network_analysis_2.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/session/creation/anonymize_bag.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/session/creation/catmux_log_setup.sh +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/session/creation/create_session_yaml.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/session/creation/generate_session_files.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/session/creation/run_session.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/session/creation/run_session_in_external_terminal.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/resources/ws/session/creation/strip_ansi.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/status_eval.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/stream_stats.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/trace_profiles.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/transit.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom/video_quality.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom_dev.egg-info/dependency_links.txt +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom_dev.egg-info/entry_points.txt +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom_dev.egg-info/requires.txt +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/src/rosotacom_dev.egg-info/top_level.txt +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/stop_session_in_container.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/terminology.md +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/tests/contract/test_findings.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/tests/contract/test_markdown_links.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/tests/contract/test_ota_source_bundle.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/tests/contract/test_package_metadata.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/tests/contract/test_packaged_resources.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/tests/contract/test_profile_covers_generated_commands.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/tests/contract/test_pytest_policy.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/tests/contract/test_readme_examples.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/tests/contract/test_session_configuration_doc.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/tests/e2e/test_anonymize_e2e.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/tests/e2e/test_benchmark_ab.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/tests/e2e/test_benchmark_capacity.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/tests/e2e/test_benchmark_replay.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/tests/e2e/test_parallel_smoke.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/tests/e2e/test_smoke.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/tests/e2e/test_timeline_stepping.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/tests/e2e/test_video_quality_e2e.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/tests/sessions/generate_rmw_matrix.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/tests/sessions/rmw_matrix/1_heartbeat_cyclone-local_zenoh-ros2dds-ota/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/tests/sessions/rmw_matrix/1_heartbeat_cyclone-ota/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/tests/sessions/rmw_matrix/1_heartbeat_cyclone-ota-tuned/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/tests/sessions/rmw_matrix/1_heartbeat_fastdds/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/tests/sessions/rmw_matrix/1_heartbeat_zen-endpoints/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/tests/unit/test_anonymize.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/tests/unit/test_bag_ground_truth.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/tests/unit/test_benched_set.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/tests/unit/test_benchmark.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/tests/unit/test_benchmark_delta.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/tests/unit/test_bundle_check.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/tests/unit/test_cli_benchmark.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/tests/unit/test_concurrency.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/tests/unit/test_deployment.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/tests/unit/test_ffmpeg_packet.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/tests/unit/test_forensics.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/tests/unit/test_geomap.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/tests/unit/test_image_cache.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/tests/unit/test_link_bytes.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/tests/unit/test_link_trace.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/tests/unit/test_network_profiles.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/tests/unit/test_network_shaper.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/tests/unit/test_ota_xml.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/tests/unit/test_plots.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/tests/unit/test_stage_latency.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/tests/unit/test_status_eval.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/tests/unit/test_status_overview.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/tests/unit/test_stream_stats.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/tests/unit/test_trace_profiles.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/tests/unit/test_transit.py +0 -0
- {rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/tests/unit/test_video_quality.py +0 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
name: Set up just
|
|
2
|
+
description: >
|
|
3
|
+
Install a pinned just release, verified by checksum.
|
|
4
|
+
|
|
5
|
+
Nineteen jobs used to reach it with `apt-get update && apt-get install -y
|
|
6
|
+
just`, and almost all of that step's 9-15s was the index refresh — in every
|
|
7
|
+
job, including all thirteen e2e slices, where it sat on the merge gate's
|
|
8
|
+
critical path. A release tarball is ~2s.
|
|
9
|
+
|
|
10
|
+
It also stops the CI toolchain drifting: apt gave whatever noble currently
|
|
11
|
+
ships (1.21.0 at the time of writing), which changes without anything here
|
|
12
|
+
saying so.
|
|
13
|
+
|
|
14
|
+
runs:
|
|
15
|
+
using: composite
|
|
16
|
+
steps:
|
|
17
|
+
- name: Install just
|
|
18
|
+
shell: bash
|
|
19
|
+
run: |
|
|
20
|
+
set -euo pipefail
|
|
21
|
+
JUST_VERSION="1.58.0"
|
|
22
|
+
CHECKSUM="4a5cc2f53e6f0f8c59092a6cc38291eb729d46a7dd95d3ae582008881b84931d"
|
|
23
|
+
URL="https://github.com/casey/just/releases/download/${JUST_VERSION}/just-${JUST_VERSION}-x86_64-unknown-linux-musl.tar.gz"
|
|
24
|
+
# Unpacked outside the checkout: a stray tarball in the working tree is
|
|
25
|
+
# a thing every later step has to not trip over.
|
|
26
|
+
workdir="$(mktemp -d)"
|
|
27
|
+
# --fail, or a transient HTTP error body is saved as the tarball and
|
|
28
|
+
# reported as a checksum mismatch, which reads like a tampered release.
|
|
29
|
+
curl -sSLf --retry 3 --retry-all-errors -o "$workdir/just.tar.gz" "$URL"
|
|
30
|
+
echo "${CHECKSUM} $workdir/just.tar.gz" | sha256sum --check
|
|
31
|
+
tar -xzf "$workdir/just.tar.gz" -C "$workdir" just
|
|
32
|
+
sudo mv "$workdir/just" /usr/local/bin/just
|
|
33
|
+
rm -rf "$workdir"
|
|
34
|
+
just --version
|
{rosotacom_dev-2.5.dev26 → rosotacom_dev-2.5.dev29}/.github/workflows/benchmark-calibrate.yml
RENAMED
|
@@ -44,9 +44,7 @@ jobs:
|
|
|
44
44
|
cache: pip
|
|
45
45
|
|
|
46
46
|
- name: Install just
|
|
47
|
-
|
|
48
|
-
sudo apt-get update
|
|
49
|
-
sudo apt-get install -y just
|
|
47
|
+
uses: ./.github/actions/setup-just
|
|
50
48
|
|
|
51
49
|
- name: Set up local environment
|
|
52
50
|
run: just setup
|
|
@@ -87,10 +85,15 @@ jobs:
|
|
|
87
85
|
python-version: "3.12"
|
|
88
86
|
cache: pip
|
|
89
87
|
|
|
90
|
-
- name: Install just
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
88
|
+
- name: Install just
|
|
89
|
+
uses: ./.github/actions/setup-just
|
|
90
|
+
|
|
91
|
+
- name: Ensure tmux
|
|
92
|
+
# Preinstalled on the GitHub-hosted image, so this is a probe
|
|
93
|
+
# rather than an install — but the dependency is named, so a
|
|
94
|
+
# runner image that drops it fails here instead of inside a
|
|
95
|
+
# session.
|
|
96
|
+
run: command -v tmux >/dev/null || { sudo apt-get update && sudo apt-get install -y tmux; }
|
|
94
97
|
|
|
95
98
|
- name: Set up local environment
|
|
96
99
|
run: just setup
|
|
@@ -132,9 +135,7 @@ jobs:
|
|
|
132
135
|
cache: pip
|
|
133
136
|
|
|
134
137
|
- name: Install just
|
|
135
|
-
|
|
136
|
-
sudo apt-get update
|
|
137
|
-
sudo apt-get install -y just
|
|
138
|
+
uses: ./.github/actions/setup-just
|
|
138
139
|
|
|
139
140
|
- name: Set up local environment
|
|
140
141
|
run: just setup
|
|
@@ -50,9 +50,7 @@ jobs:
|
|
|
50
50
|
cache: pip
|
|
51
51
|
|
|
52
52
|
- name: Install just
|
|
53
|
-
|
|
54
|
-
sudo apt-get update
|
|
55
|
-
sudo apt-get install -y just
|
|
53
|
+
uses: ./.github/actions/setup-just
|
|
56
54
|
|
|
57
55
|
- name: Set up local environment
|
|
58
56
|
run: just setup
|
|
@@ -87,10 +85,15 @@ jobs:
|
|
|
87
85
|
python-version: "3.12"
|
|
88
86
|
cache: pip
|
|
89
87
|
|
|
90
|
-
- name: Install just
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
88
|
+
- name: Install just
|
|
89
|
+
uses: ./.github/actions/setup-just
|
|
90
|
+
|
|
91
|
+
- name: Ensure tmux
|
|
92
|
+
# Preinstalled on the GitHub-hosted image, so this is a probe
|
|
93
|
+
# rather than an install — but the dependency is named, so a
|
|
94
|
+
# runner image that drops it fails here instead of inside a
|
|
95
|
+
# session.
|
|
96
|
+
run: command -v tmux >/dev/null || { sudo apt-get update && sudo apt-get install -y tmux; }
|
|
94
97
|
|
|
95
98
|
- name: Set up local environment
|
|
96
99
|
run: just setup
|
|
@@ -142,9 +145,7 @@ jobs:
|
|
|
142
145
|
cache: pip
|
|
143
146
|
|
|
144
147
|
- name: Install just
|
|
145
|
-
|
|
146
|
-
sudo apt-get update
|
|
147
|
-
sudo apt-get install -y just
|
|
148
|
+
uses: ./.github/actions/setup-just
|
|
148
149
|
|
|
149
150
|
- name: Set up local environment
|
|
150
151
|
run: just setup
|
|
@@ -19,25 +19,43 @@ concurrency:
|
|
|
19
19
|
|
|
20
20
|
jobs:
|
|
21
21
|
smoke-e2e:
|
|
22
|
-
# The same
|
|
22
|
+
# The same diagnostic slices the merge gate and the release run, instead of one
|
|
23
23
|
# sequential `just test-e2e-smoke` over the whole suite (#198). Keeping the
|
|
24
24
|
# monolith here was deliberate while the slices were hand-maintained `-k`
|
|
25
25
|
# expressions that had silently stopped covering three files; #197's
|
|
26
26
|
# test_e2e_slices_partition_the_whole_suite closed that, so the union is
|
|
27
27
|
# now guaranteed to be the monolith.
|
|
28
28
|
#
|
|
29
|
-
# The gain is diagnosis: a red monolith says "e2e broke"
|
|
30
|
-
# which area
|
|
29
|
+
# The gain is diagnosis: a red monolith says "e2e broke"; a named slice says
|
|
30
|
+
# which area and, where relevant, which transport or behavior failed. It
|
|
31
|
+
# also removes a load-induced flake. On 2026-08-11 the
|
|
31
32
|
# nightly failed with nine "Timed out waiting for container readiness"
|
|
32
33
|
# errors after 1h12m on one runner, while the same tests on the same commit
|
|
33
|
-
# passed in the merge gate — where they
|
|
34
|
+
# passed in the merge gate — where they were spread over six at the time.
|
|
34
35
|
name: smoke-e2e-${{ matrix.slice }}
|
|
35
36
|
runs-on: ubuntu-latest
|
|
36
37
|
timeout-minutes: 90
|
|
37
38
|
strategy:
|
|
38
39
|
fail-fast: false
|
|
39
40
|
matrix:
|
|
40
|
-
slice:
|
|
41
|
+
slice:
|
|
42
|
+
- heartbeat
|
|
43
|
+
- chatter
|
|
44
|
+
- occupancy-grid-dds
|
|
45
|
+
- occupancy-grid-zenoh
|
|
46
|
+
- sized-payload-fastdds
|
|
47
|
+
- sized-payload-zenoh
|
|
48
|
+
- remote-assist
|
|
49
|
+
- remote-assist-costmap
|
|
50
|
+
- remote-assist-camera
|
|
51
|
+
- runtime-tools
|
|
52
|
+
- media
|
|
53
|
+
- concurrency-parallel
|
|
54
|
+
- concurrency-conflict
|
|
55
|
+
- benchmark-ab
|
|
56
|
+
- benchmark-replay
|
|
57
|
+
- benchmark-capacity
|
|
58
|
+
- benchmark-capacity-cases
|
|
41
59
|
|
|
42
60
|
steps:
|
|
43
61
|
- name: Check out repository
|
|
@@ -51,10 +69,15 @@ jobs:
|
|
|
51
69
|
python-version: "3.12"
|
|
52
70
|
cache: pip
|
|
53
71
|
|
|
54
|
-
- name: Install just
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
72
|
+
- name: Install just
|
|
73
|
+
uses: ./.github/actions/setup-just
|
|
74
|
+
|
|
75
|
+
- name: Ensure tmux
|
|
76
|
+
# Preinstalled on the GitHub-hosted image, so this is a probe
|
|
77
|
+
# rather than an install — but the dependency is named, so a
|
|
78
|
+
# runner image that drops it fails here instead of inside a
|
|
79
|
+
# session.
|
|
80
|
+
run: command -v tmux >/dev/null || { sudo apt-get update && sudo apt-get install -y tmux; }
|
|
58
81
|
|
|
59
82
|
- name: Set up local environment
|
|
60
83
|
run: just setup
|
|
@@ -98,10 +121,15 @@ jobs:
|
|
|
98
121
|
python-version: "3.12"
|
|
99
122
|
cache: pip
|
|
100
123
|
|
|
101
|
-
- name: Install just
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
124
|
+
- name: Install just
|
|
125
|
+
uses: ./.github/actions/setup-just
|
|
126
|
+
|
|
127
|
+
- name: Ensure tmux
|
|
128
|
+
# Preinstalled on the GitHub-hosted image, so this is a probe
|
|
129
|
+
# rather than an install — but the dependency is named, so a
|
|
130
|
+
# runner image that drops it fails here instead of inside a
|
|
131
|
+
# session.
|
|
132
|
+
run: command -v tmux >/dev/null || { sudo apt-get update && sudo apt-get install -y tmux; }
|
|
105
133
|
|
|
106
134
|
- name: Set up local environment
|
|
107
135
|
run: just setup
|
|
@@ -71,9 +71,7 @@ jobs:
|
|
|
71
71
|
cache: pip
|
|
72
72
|
|
|
73
73
|
- name: Install just
|
|
74
|
-
|
|
75
|
-
sudo apt-get update
|
|
76
|
-
sudo apt-get install -y just
|
|
74
|
+
uses: ./.github/actions/setup-just
|
|
77
75
|
|
|
78
76
|
- name: Set up local environment
|
|
79
77
|
run: just setup
|
|
@@ -102,9 +100,7 @@ jobs:
|
|
|
102
100
|
cache: pip
|
|
103
101
|
|
|
104
102
|
- name: Install just
|
|
105
|
-
|
|
106
|
-
sudo apt-get update
|
|
107
|
-
sudo apt-get install -y just
|
|
103
|
+
uses: ./.github/actions/setup-just
|
|
108
104
|
|
|
109
105
|
- name: Set up local environment
|
|
110
106
|
run: just setup
|
|
@@ -152,9 +148,7 @@ jobs:
|
|
|
152
148
|
cache: pip
|
|
153
149
|
|
|
154
150
|
- name: Install just
|
|
155
|
-
|
|
156
|
-
sudo apt-get update
|
|
157
|
-
sudo apt-get install -y just
|
|
151
|
+
uses: ./.github/actions/setup-just
|
|
158
152
|
|
|
159
153
|
- name: Set up local environment
|
|
160
154
|
run: just setup
|
|
@@ -162,44 +156,55 @@ jobs:
|
|
|
162
156
|
- name: Validate package
|
|
163
157
|
run: just package
|
|
164
158
|
|
|
165
|
-
|
|
166
|
-
|
|
159
|
+
quick-gate:
|
|
160
|
+
# Everything `e2e` waits for that is not the image, and deliberately no
|
|
161
|
+
# more. It exists to answer one question — is the tree obviously broken,
|
|
162
|
+
# such that seventeen slices would burn roughly 73 runner-minutes to say so.
|
|
163
|
+
#
|
|
164
|
+
# It replaced a `needs: preflight-success` edge that made e2e wait for the
|
|
165
|
+
# whole five-version matrix. That barrier cost 2.15 min of every gate run
|
|
166
|
+
# and had fired once in sixty runs, on `workflow-lint`, which takes 0.12
|
|
167
|
+
# min; the 2.0 min of `merge-lightweight` that set its height has never
|
|
168
|
+
# stopped an e2e round, and its expensive part is `test-nondocker-cov`
|
|
169
|
+
# (38s of 45s), which is a test suite rather than a tripwire.
|
|
170
|
+
#
|
|
171
|
+
# `lint` and `typecheck` are 4s together. The rest of this job is the fixed
|
|
172
|
+
# cost every job pays, which is also what `image` pays — so sizing the
|
|
173
|
+
# tripwire this way makes it free: e2e could not start before `image`
|
|
174
|
+
# finished anyway. Nothing merges on a weaker check than before, because
|
|
175
|
+
# `ci-success` still requires every preflight job.
|
|
176
|
+
name: quick-gate
|
|
167
177
|
runs-on: ubuntu-latest
|
|
168
|
-
|
|
169
|
-
if: always() && (github.event_name != 'pull_request' || github.event.pull_request.draft == false)
|
|
178
|
+
if: github.event_name != 'pull_request' || github.event.pull_request.draft == false
|
|
170
179
|
steps:
|
|
171
|
-
- name: Check
|
|
180
|
+
- name: Check out repository
|
|
181
|
+
uses: actions/checkout@v6
|
|
182
|
+
|
|
183
|
+
- name: Set up Python
|
|
184
|
+
uses: actions/setup-python@v6
|
|
185
|
+
with:
|
|
186
|
+
python-version: "3.12"
|
|
187
|
+
cache: pip
|
|
188
|
+
|
|
189
|
+
- name: Install just
|
|
190
|
+
uses: ./.github/actions/setup-just
|
|
191
|
+
|
|
192
|
+
- name: Set up local environment
|
|
193
|
+
run: just setup
|
|
194
|
+
|
|
195
|
+
- name: Is the tree obviously broken
|
|
172
196
|
run: |
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
exit 1
|
|
176
|
-
fi
|
|
177
|
-
if [[ "${{ github.event_name }}" == "pull_request" && "${{ needs.dependency-review.result }}" != "success" ]]; then
|
|
178
|
-
echo "dependency-review failed: ${{ needs.dependency-review.result }}"
|
|
179
|
-
exit 1
|
|
180
|
-
fi
|
|
181
|
-
if [[ "${{ needs.build-lint.result }}" != "success" ]]; then
|
|
182
|
-
echo "build-lint failed: ${{ needs.build-lint.result }}"
|
|
183
|
-
exit 1
|
|
184
|
-
fi
|
|
185
|
-
if [[ "${{ needs.merge-lightweight.result }}" != "success" ]]; then
|
|
186
|
-
echo "merge-lightweight failed: ${{ needs.merge-lightweight.result }}"
|
|
187
|
-
exit 1
|
|
188
|
-
fi
|
|
189
|
-
if [[ "${{ needs.package.result }}" != "success" ]]; then
|
|
190
|
-
echo "package failed: ${{ needs.package.result }}"
|
|
191
|
-
exit 1
|
|
192
|
-
fi
|
|
193
|
-
echo "All preflight checks passed"
|
|
197
|
+
just lint
|
|
198
|
+
just typecheck
|
|
194
199
|
|
|
195
200
|
image:
|
|
196
201
|
# Publish the images the e2e suite builds, once per set of build inputs,
|
|
197
|
-
# instead of rebuilding them in
|
|
198
|
-
#
|
|
199
|
-
# 40s exporting layers, 47s of apt and pip. A pull
|
|
200
|
-
# with the runners, no Hub rate limit, one transfer
|
|
201
|
-
# plus a build — replaces all of it
|
|
202
|
-
#
|
|
202
|
+
# instead of rebuilding them in every job. #236 measured that build at
|
|
203
|
+
# 154s per job when the matrix had thirteen jobs: 57s pulling the multi-GB
|
|
204
|
+
# ROS base from Docker Hub, 40s exporting layers, 47s of apt and pip. A pull
|
|
205
|
+
# from GHCR — co-located with the runners, no Hub rate limit, one transfer
|
|
206
|
+
# instead of a transfer plus a build — replaces all of it. The benefit
|
|
207
|
+
# grows with the diagnostic matrix; seventeen jobs still build only once.
|
|
203
208
|
#
|
|
204
209
|
# The tag is a hash of everything that decides the image (base digest,
|
|
205
210
|
# package lists, Dockerfile, entrypoint, ros2docker version, build UID):
|
|
@@ -208,8 +213,9 @@ jobs:
|
|
|
208
213
|
# is stale" is not a state this can reach — which is the objection #226
|
|
209
214
|
# raised against caching the image inline.
|
|
210
215
|
#
|
|
211
|
-
# Runs beside preflight rather than after
|
|
212
|
-
# manifests and stops
|
|
216
|
+
# Runs beside the preflight jobs rather than after them: on a hit it
|
|
217
|
+
# inspects two manifests and stops. It is what sets when `e2e` can
|
|
218
|
+
# start, which is why `quick-gate` is sized to finish inside it.
|
|
213
219
|
name: image
|
|
214
220
|
runs-on: ubuntu-latest
|
|
215
221
|
timeout-minutes: 60
|
|
@@ -231,9 +237,7 @@ jobs:
|
|
|
231
237
|
cache: pip
|
|
232
238
|
|
|
233
239
|
- name: Install just
|
|
234
|
-
|
|
235
|
-
sudo apt-get update
|
|
236
|
-
sudo apt-get install -y just
|
|
240
|
+
uses: ./.github/actions/setup-just
|
|
237
241
|
|
|
238
242
|
- name: Set up local environment
|
|
239
243
|
run: just setup
|
|
@@ -291,24 +295,41 @@ jobs:
|
|
|
291
295
|
# tests/contract/test_workflow_contracts.py keeps the three workflows and
|
|
292
296
|
# the justfile agreeing.
|
|
293
297
|
#
|
|
294
|
-
#
|
|
295
|
-
#
|
|
296
|
-
#
|
|
297
|
-
#
|
|
298
|
-
#
|
|
299
|
-
# tests/e2e/conftest.py
|
|
298
|
+
# Slice names are diagnostic boundaries, not cost buckets. Costs tell us
|
|
299
|
+
# when a theme needs another runner; they never justify packing unrelated
|
|
300
|
+
# tests together. Seventeen is the smallest theme-preserving partition that
|
|
301
|
+
# reaches the measured floor: #253 split the four overloaded themes along
|
|
302
|
+
# transport, stream, or concurrency semantics. Which tests a slice owns and
|
|
303
|
+
# what each costs is E2E_SLICES in tests/e2e/conftest.py.
|
|
300
304
|
name: e2e-${{ matrix.slice }}
|
|
301
305
|
runs-on: ubuntu-latest
|
|
302
306
|
timeout-minutes: 90
|
|
303
|
-
needs: [
|
|
304
|
-
if: always() && !cancelled() && needs.
|
|
307
|
+
needs: [quick-gate, image]
|
|
308
|
+
if: always() && !cancelled() && needs.quick-gate.result == 'success' && needs.image.result == 'success'
|
|
305
309
|
permissions:
|
|
306
310
|
contents: read
|
|
307
311
|
packages: read
|
|
308
312
|
strategy:
|
|
309
313
|
fail-fast: false
|
|
310
314
|
matrix:
|
|
311
|
-
slice:
|
|
315
|
+
slice:
|
|
316
|
+
- heartbeat
|
|
317
|
+
- chatter
|
|
318
|
+
- occupancy-grid-dds
|
|
319
|
+
- occupancy-grid-zenoh
|
|
320
|
+
- sized-payload-fastdds
|
|
321
|
+
- sized-payload-zenoh
|
|
322
|
+
- remote-assist
|
|
323
|
+
- remote-assist-costmap
|
|
324
|
+
- remote-assist-camera
|
|
325
|
+
- runtime-tools
|
|
326
|
+
- media
|
|
327
|
+
- concurrency-parallel
|
|
328
|
+
- concurrency-conflict
|
|
329
|
+
- benchmark-ab
|
|
330
|
+
- benchmark-replay
|
|
331
|
+
- benchmark-capacity
|
|
332
|
+
- benchmark-capacity-cases
|
|
312
333
|
|
|
313
334
|
steps:
|
|
314
335
|
- name: Check out repository
|
|
@@ -322,10 +343,15 @@ jobs:
|
|
|
322
343
|
python-version: "3.12"
|
|
323
344
|
cache: pip
|
|
324
345
|
|
|
325
|
-
- name: Install just
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
346
|
+
- name: Install just
|
|
347
|
+
uses: ./.github/actions/setup-just
|
|
348
|
+
|
|
349
|
+
- name: Ensure tmux
|
|
350
|
+
# Preinstalled on the GitHub-hosted image, so this is a probe
|
|
351
|
+
# rather than an install — but the dependency is named, so a
|
|
352
|
+
# runner image that drops it fails here instead of inside a
|
|
353
|
+
# session.
|
|
354
|
+
run: command -v tmux >/dev/null || { sudo apt-get update && sudo apt-get install -y tmux; }
|
|
329
355
|
|
|
330
356
|
- name: Set up local environment
|
|
331
357
|
run: just setup
|
|
@@ -364,7 +390,7 @@ jobs:
|
|
|
364
390
|
- build-lint
|
|
365
391
|
- merge-lightweight
|
|
366
392
|
- package
|
|
367
|
-
-
|
|
393
|
+
- quick-gate
|
|
368
394
|
- image
|
|
369
395
|
- e2e
|
|
370
396
|
if: always() && (github.event_name != 'pull_request' || github.event.pull_request.draft == false)
|
|
@@ -392,8 +418,8 @@ jobs:
|
|
|
392
418
|
echo "package failed or was skipped: ${{ needs.package.result }}"
|
|
393
419
|
exit 1
|
|
394
420
|
fi
|
|
395
|
-
if [[ "${{ needs.
|
|
396
|
-
echo "
|
|
421
|
+
if [[ "${{ needs.quick-gate.result }}" != "success" ]]; then
|
|
422
|
+
echo "quick-gate failed or was skipped: ${{ needs.quick-gate.result }}"
|
|
397
423
|
exit 1
|
|
398
424
|
fi
|
|
399
425
|
if [[ "${{ needs.image.result }}" != "success" ]]; then
|
|
@@ -35,9 +35,7 @@ jobs:
|
|
|
35
35
|
cache: pip
|
|
36
36
|
|
|
37
37
|
- name: Install just
|
|
38
|
-
|
|
39
|
-
sudo apt-get update
|
|
40
|
-
sudo apt-get install -y just
|
|
38
|
+
uses: ./.github/actions/setup-just
|
|
41
39
|
|
|
42
40
|
- name: Set up local environment
|
|
43
41
|
run: just setup
|
|
@@ -67,9 +65,7 @@ jobs:
|
|
|
67
65
|
cache: pip
|
|
68
66
|
|
|
69
67
|
- name: Install just
|
|
70
|
-
|
|
71
|
-
sudo apt-get update
|
|
72
|
-
sudo apt-get install -y just
|
|
68
|
+
uses: ./.github/actions/setup-just
|
|
73
69
|
|
|
74
70
|
- name: Set up local environment
|
|
75
71
|
run: just setup
|
|
@@ -114,7 +110,7 @@ jobs:
|
|
|
114
110
|
retention-days: 30
|
|
115
111
|
|
|
116
112
|
e2e:
|
|
117
|
-
# The same
|
|
113
|
+
# The same diagnostic slices the merge gate runs, in parallel, instead of one
|
|
118
114
|
# sequential `just test-e2e-smoke` over the whole suite. That target is
|
|
119
115
|
# identical to nightly-e2e.yml's smoke-e2e job, so the release used to be
|
|
120
116
|
# the third sequential run of the same tests against the same tree; it
|
|
@@ -125,7 +121,24 @@ jobs:
|
|
|
125
121
|
strategy:
|
|
126
122
|
fail-fast: false
|
|
127
123
|
matrix:
|
|
128
|
-
slice:
|
|
124
|
+
slice:
|
|
125
|
+
- heartbeat
|
|
126
|
+
- chatter
|
|
127
|
+
- occupancy-grid-dds
|
|
128
|
+
- occupancy-grid-zenoh
|
|
129
|
+
- sized-payload-fastdds
|
|
130
|
+
- sized-payload-zenoh
|
|
131
|
+
- remote-assist
|
|
132
|
+
- remote-assist-costmap
|
|
133
|
+
- remote-assist-camera
|
|
134
|
+
- runtime-tools
|
|
135
|
+
- media
|
|
136
|
+
- concurrency-parallel
|
|
137
|
+
- concurrency-conflict
|
|
138
|
+
- benchmark-ab
|
|
139
|
+
- benchmark-replay
|
|
140
|
+
- benchmark-capacity
|
|
141
|
+
- benchmark-capacity-cases
|
|
129
142
|
|
|
130
143
|
steps:
|
|
131
144
|
- name: Check out repository
|
|
@@ -139,10 +152,15 @@ jobs:
|
|
|
139
152
|
python-version: "3.12"
|
|
140
153
|
cache: pip
|
|
141
154
|
|
|
142
|
-
- name: Install just
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
155
|
+
- name: Install just
|
|
156
|
+
uses: ./.github/actions/setup-just
|
|
157
|
+
|
|
158
|
+
- name: Ensure tmux
|
|
159
|
+
# Preinstalled on the GitHub-hosted image, so this is a probe
|
|
160
|
+
# rather than an install — but the dependency is named, so a
|
|
161
|
+
# runner image that drops it fails here instead of inside a
|
|
162
|
+
# session.
|
|
163
|
+
run: command -v tmux >/dev/null || { sudo apt-get update && sudo apt-get install -y tmux; }
|
|
146
164
|
|
|
147
165
|
- name: Set up local environment
|
|
148
166
|
run: just setup
|