Skip to content

Integrate dev workflow hardening and runtime testability improvements - #921

Open
ll7 wants to merge 44 commits into
mainfrom
ll7/dev/fix_dev_workflow_2026-03-31
Open

Integrate dev workflow hardening and runtime testability improvements#921
ll7 wants to merge 44 commits into
mainfrom
ll7/dev/fix_dev_workflow_2026-03-31

Conversation

@ll7

@ll7 ll7 commented May 24, 2026

Copy link
Copy Markdown
Member

Summary

This PR integrates the development workflow hardening branch into main. It combines the accumulated devcontainer, CI, documentation, runtime, and host-testability work into one reviewable PR.

Development workflow and CI

  • Adds a CUDA-focused devcontainer setup with host bootstrap scripts, dependency sync/check tooling, and helper commands for local development.
  • Adds GitHub Actions for dependency doctor checks, host smoke unit tests, ROS-backed unit tests, and a scoped strict Ruff rollout for paf_common.
  • Updates existing GitHub workflows to newer action versions and improves checkout/label handling.
  • Adds .pre-commit-config.yaml, pytest.ini marker definitions, ruff-strict.toml, VS Code settings/tasks/extensions, and repo agent guidance.
  • Adds scripts for host Python bootstrapping, dependency diagnostics, .env updates, dev startup, smoke tests, and GNSS projection validation.

Runtime and subsystem changes

  • Adds deterministic startup/frame synchronization helpers in paf_common and agent.startup_coordinator.
  • Refactors vehicle and velocity control branch logic into pure helper modules to improve testability while keeping ROS node behavior focused on IO and orchestration.
  • Hardens route validation, lane context handoff, global planner alignment, and position stability handling.
  • Improves intersection, lane-change, overtake, and parking-space behavior logic with additional route/lane context handling.
  • Updates perception radar, LiDAR filtering, traffic-light, lane-position, and vision code paths, including pitch-aware LiDAR ground filtering and radar/ego-motion compensation support.
  • Updates mapping integration, map helpers, visualization behavior, and clustered point interface coverage.
  • Improves localization GNSS/OpenDRIVE projection handling, transform fallback, covariance fusion, odometry fusion, and position/heading publication paths.
  • Updates package metadata/descriptions and setup dependencies across ROS Python packages.

Tests and coverage

  • Adds host-side pure unit tests for control logic, deterministic sync, route metrics, launch manifest parsing, interface contracts, and planning regressions.
  • Adds subsystem tests for GNSS coordinate transformation, mapping anchor behavior, mapping common helpers, perception clustered point messages, ego-motion compensation, LiDAR ground filtering, radar compensation, and priority intersection cross-traffic behavior.
  • Adds test-support helpers in code/test/conftest.py and code/test/run_test.py.

Documentation

  • Adds contributor/developer documentation for quickstart, devcontainer usage, dependency management, testing strategy, linting, logging, performance iteration, documentation requirements, context retention, and developer contracts.
  • Adds ADR scaffolding and reasoning notes for deterministic simulation synchronization, development hardening, intersection prediction strategy, and Roboflow evaluation.
  • Adds PAF25 review/future-work/improvement assessment material and progress handoff notes.
  • Updates subsystem docs for control, mapping, perception, planning, execution, tests, and development workflows.

Minor cleanup done while preparing this PR

  • Removed one trailing-whitespace line from doc/perception/lidar_distance.md so the committed branch passes git diff --check.

Validation

  • scripts/run-host-smoke-tests.sh -q: passed, 42 tests.
  • scripts/run-host-smoke-tests.sh --collect-only -q: passed, 42 tests collected.
  • python -m py_compile on the new host-testable control/sync/route helper modules: passed.
  • git diff --check origin/main...HEAD: passed after the documentation whitespace cleanup.
  • Delegated PR-readiness pass via codex-agent-worker --provider opencode --model opencode-go/minimax-m2.7: completed successfully; no blocking findings.

Known validation limits

  • Direct host collection of broader ROS package tests through scripts/bootstrap-host-python.sh python -m pytest --collect-only -q code/perception/tests code/mapping/test code/localization/test code/planning/test is not expected to pass in the ambient host environment because those tests require ROS workspace/package imports and additional dependencies such as mapping_interfaces, mapping_common, shapely, and pyproj. The branch adds dedicated ROS/self-hosted and dependency workflows for that environment-dependent coverage.
  • CARLA/ROS end-to-end simulator validation was not run locally while preparing the PR.

ll7 and others added 30 commits February 20, 2026 08:03
- Introduced a new GitHub Actions workflow for dependency validation.
- Added a pre-PR quality check task in VS Code.
- Implemented a dependency doctor script to catch pinning issues.
- Updated README and documentation for performance iteration and dependency management.
- Added contract tests for ROS interface package manifests and launch files.
- Enhanced existing scripts and configurations for better development experience.
…or logic and tests

Co-authored-by: Copilot <copilot@github.com>
@coderabbitai

coderabbitai Bot commented May 24, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Too many files!

This PR contains 174 files, which is 24 over the limit of 150.

To get a review, narrow the scope:
• coderabbit review --type committed # exclude uncommitted changes
• coderabbit review --dir # limit to a subdirectory
• coderabbit review --base # compare against a closer base

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: c8b06ff9-8cee-4aa7-acbf-7a0a081dbb75

📥 Commits

Reviewing files that changed from the base of the PR and between 6340f07 and 097ab5c.

⛔ Files ignored due to path filters (1)
  • doc/mapping/generated/mapping_common/index.md is excluded by !**/generated/**
📒 Files selected for processing (174)
  • .agent/PLANS.md
  • .devcontainer/devcontainer.json
  • .github/instructions/docs-and-reasoning.instructions.md
  • .github/instructions/repo-consolidation.instructions.md
  • .github/pull_request_template.md
  • .github/workflows/dependency-doctor.yml
  • .github/workflows/drive.yml
  • .github/workflows/markdownlint.yml
  • .github/workflows/ros-unit-tests.yml
  • .github/workflows/ruff-strict-rollout.yml
  • .github/workflows/unit-tests.yml
  • .gitignore
  • .pre-commit-config.yaml
  • .vscode/extensions.json
  • .vscode/settings.json
  • .vscode/tasks.json
  • CLAUDE.md
  • README.md
  • agents.md
  • build/.env.sample
  • build/docker-compose.carla.base.yaml
  • build/docker-compose.carla.cuda.yaml
  • build/docker/agent-ros2/Dockerfile
  • build/docker/agent-ros2/scripts/dependency-sync.sh
  • build/docker/agent-ros2/scripts/devfunctions.bash
  • build/docker/agent-ros2/scripts/entrypoint-dev.sh
  • code/acting/acting/passthrough.py
  • code/acting/package.xml
  • code/acting/setup.py
  • code/agent/agent/data_management_node.py
  • code/agent/agent/startup_coordinator.py
  • code/agent/launch/agent.dev.persistent.xml
  • code/agent/package.xml
  • code/agent/setup.py
  • code/control/config/control.yaml
  • code/control/control/pure_pursuit_controller.py
  • code/control/control/vehicle_control_logic.py
  • code/control/control/vehicle_controller.py
  • code/control/control/velocity_control_logic.py
  • code/control/control/velocity_controller.py
  • code/control/launch/control.xml
  • code/control/setup.py
  • code/leaderboard_launcher/launch/ros_bridge.dev.xml
  • code/leaderboard_launcher/leaderboard_launcher/paf_agent_base.py
  • code/leaderboard_launcher/package.xml
  • code/leaderboard_launcher/scripts/launch_leaderboard.sh
  • code/leaderboard_launcher/scripts/launch_leaderboard.test.sh
  • code/leaderboard_launcher/setup.py
  • code/localization/localization/coordinate_transformation.py
  • code/localization/localization/ekf_state_publisher.py
  • code/localization/localization/gps_debug_node.py
  • code/localization/localization/gps_transform.py
  • code/localization/localization/kalman_filter.py
  • code/localization/localization/odometry_fusion.py
  • code/localization/localization/position_heading_publisher_node.py
  • code/localization/localization/sensor_covariance_fusion.py
  • code/localization/setup.py
  • code/localization/test/test_coordinate_transformation.py
  • code/mapping/mapping/data_integration.py
  • code/mapping/mapping/visualization.py
  • code/mapping/mapping_common/__init__.py
  • code/mapping/mapping_common/map.py
  • code/mapping/test/test_data_integration_tracking_anchor.py
  • code/mapping/test/test_mapping_common/test_entity.py
  • code/mapping/test/test_mapping_common/test_general.py
  • code/mapping/test/test_mapping_common/test_map.py
  • code/mapping/test/test_mapping_common/test_shape.py
  • code/mapping/test/test_mapping_common/test_shapely.py
  • code/mapping/test/test_mapping_common/test_transform.py
  • code/mapping_interfaces/msg/ClusteredPointsArray.msg
  • code/mapping_interfaces/package.xml
  • code/paf_common/paf_common/__init__.py
  • code/paf_common/paf_common/debugging.py
  • code/paf_common/paf_common/exceptions.py
  • code/paf_common/paf_common/logging_utils.py
  • code/paf_common/paf_common/parameters.py
  • code/paf_common/paf_common/route_metrics.py
  • code/paf_common/paf_common/sync.py
  • code/paf_common/setup.py
  • code/perception/launch/perception.xml
  • code/perception/package.xml
  • code/perception/perception/Lanedetection_node.py
  • code/perception/perception/lane_position.py
  • code/perception/perception/lidar_distance.py
  • code/perception/perception/lidar_filter_utility.py
  • code/perception/perception/perception_utils.py
  • code/perception/perception/radar_node.py
  • code/perception/perception/traffic_light_node.py
  • code/perception/perception/vision_node.py
  • code/perception/setup.py
  • code/perception/tests/test_clustered_points_message.py
  • code/perception/tests/test_ego_motion_compensation.py
  • code/perception/tests/test_lidar_ground_filter.py
  • code/perception/tests/test_radar_velocity_compensation.py
  • code/perception_interfaces/package.xml
  • code/planning/package.xml
  • code/planning/planning/behavior_agent/behavior_tree.py
  • code/planning/planning/behavior_agent/behaviors/intersection.py
  • code/planning/planning/behavior_agent/behaviors/lane_change.py
  • code/planning/planning/behavior_agent/behaviors/leave_parking_space.py
  • code/planning/planning/behavior_agent/behaviors/overtake.py
  • code/planning/planning/behavior_agent/bt_parameters.py
  • code/planning/planning/global_planner/global_plan_distance_publisher.py
  • code/planning/planning/global_planner/global_planner_node.py
  • code/planning/planning/global_planner/position_stability.py
  • code/planning/planning/global_planner/route_alignment.py
  • code/planning/planning/local_planner/ACC.py
  • code/planning/planning/local_planner/motion_planning.py
  • code/planning/setup.py
  • code/planning/test/test_intersection_priority_cross_traffic.py
  • code/planning_interfaces/package.xml
  • code/requirements.txt
  • code/requirements_infrastructure.txt
  • code/test/conftest.py
  • code/test/run_test.py
  • code/test/test_control_logic.py
  • code/test/test_deterministic_sync.py
  • code/test/test_interface_contracts.py
  • code/test/test_launch_manifests.py
  • code/test/test_planning_regression.py
  • code/test/test_route_metrics.py
  • doc/README.md
  • doc/adr/0000-template.md
  • doc/adr/README.md
  • doc/control/architecture_documentation.md
  • doc/control/vehicle_controller.md
  • doc/dev/README.md
  • doc/dev/progress/2026-04-29-agent-handoff-rules.md
  • doc/dev/progress/2026-04-29-route-validation-and-map-context-handoff.md
  • doc/dev/progress/2026-04-30-route-sync-bridge.md
  • doc/dev/progress/2026-05-01-build-validation.md
  • doc/dev/progress/2026-05-01-doc-consolidation-wp1.md
  • doc/dev/progress/2026-05-04-host-testability-and-control-logic.md
  • doc/dev_talks/paf25/future_work.md
  • doc/dev_talks/paf25/improvements_assessment.md
  • doc/dev_talks/paf25/paf25_review_by_ll7.md
  • doc/development/README.md
  • doc/development/build_action.md
  • doc/development/context_retention.md
  • doc/development/dependency_management.md
  • doc/development/devcontainer.md
  • doc/development/developer_contract.md
  • doc/development/distributed_simulation.md
  • doc/development/documentation_requirements.md
  • doc/development/drive_action.md
  • doc/development/first_steps.md
  • doc/development/installing_python_packages.md
  • doc/development/linting.md
  • doc/development/logging.md
  • doc/development/performance_iteration.md
  • doc/development/quickstart_contributor.md
  • doc/development/testing_strategy.md
  • doc/general/architecture_current.md
  • doc/general/execution.md
  • doc/general/tests.md
  • doc/mapping/README.md
  • doc/perception/lidar_distance.md
  • doc/perception/radar_node.md
  • doc/planning/Global_Planner.md
  • doc/planning/behaviors/Intersection.md
  • doc/reasoning/2026-04-28-deterministic-simulation-synchronization.md
  • doc/reasoning/2026-04-28-development-hardening.md
  • doc/reasoning/2026-04-28-intersection-prediction-strategy.md
  • doc/reasoning/2026-04-28-roboflow-evaluation.md
  • doc/reasoning/README.md
  • pytest.ini
  • ruff-strict.toml
  • scripts/bootstrap-host-python.sh
  • scripts/dependency-doctor.sh
  • scripts/dev-up.sh
  • scripts/run-host-smoke-tests.sh
  • scripts/update-dotenv.sh
  • scripts/validate-gnss-projection.sh
  • tmp/.gitignore

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch ll7/dev/fix_dev_workflow_2026-03-31

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant