Skip to content

feat(action_status_bridge): add aborted-goal to faults bridge#423

Merged
mfaferek93 merged 2 commits into
mainfrom
feat/421-action-status-bridge
Jun 16, 2026
Merged

feat(action_status_bridge): add aborted-goal to faults bridge#423
mfaferek93 merged 2 commits into
mainfrom
feat/421-action-status-bridge

Conversation

@mfaferek93

Copy link
Copy Markdown
Collaborator

Adds ros2_medkit_action_status_bridge, a generic drop-in adapter that discovers every action via its */_action/status topic and turns terminal ABORTED goal states into FaultManager faults, healing the code on SUCCEEDED.

This captures the authoritative failure channel for the core stacks (Nav2, MoveIt 2, ros2_control), where an aborted goal reaches neither /rosout nor /diagnostics.

  • source_id is the action name; fault_code is <PREFIX>_<ACTION>_ABORTED.
  • Per-goal dedup on goal_id so a latched terminal status reports once.
  • New actions appearing later are picked up by a periodic rescan.

Unit tests cover action-name extraction, fault_code generation, and dedup.

Closes #421

Copilot AI review requested due to automatic review settings June 15, 2026 16:53
@mfaferek93 mfaferek93 marked this pull request as draft June 15, 2026 16:55

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new ROS 2 package, ros2_medkit_action_status_bridge, that discovers action */_action/status topics at runtime and converts terminal goal states into FaultManager faults (with optional healing on SUCCEEDED). This complements existing log/diagnostic-based fault sources by capturing failures that only appear on the action status channel.

Changes:

  • Introduces ActionStatusBridgeNode that periodically rescans the graph, subscribes to action status topics, deduplicates terminal events per goal, and reports/heals faults via ros2_medkit_fault_reporter.
  • Adds launch + YAML configuration, plus package/build metadata for installation.
  • Adds GTest unit tests for topic parsing, fault-code formatting, UUID hex conversion, and node construction.

Reviewed changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
src/ros2_medkit_action_status_bridge/test/test_action_status_bridge.cpp New unit tests for helper logic and node creation
src/ros2_medkit_action_status_bridge/src/main.cpp Node entrypoint (init/spin/shutdown)
src/ros2_medkit_action_status_bridge/src/action_status_bridge_node.cpp Core bridge implementation: discovery, subscriptions, dedup, fault reporting
src/ros2_medkit_action_status_bridge/README.md Package overview and configuration docs
src/ros2_medkit_action_status_bridge/package.xml New ROS package manifest and dependencies
src/ros2_medkit_action_status_bridge/launch/action_status_bridge.launch.py Launch file to run the bridge with YAML params
src/ros2_medkit_action_status_bridge/include/ros2_medkit_action_status_bridge/action_status_bridge_node.hpp Public node API + documentation
src/ros2_medkit_action_status_bridge/config/action_status_bridge.yaml Default parameters for the bridge
src/ros2_medkit_action_status_bridge/CMakeLists.txt Build, install, and unit-test wiring
src/ros2_medkit_action_status_bridge/CHANGELOG.rst Initial changelog entry

Comment thread src/ros2_medkit_action_status_bridge/CMakeLists.txt
Comment thread src/ros2_medkit_action_status_bridge/src/action_status_bridge_node.cpp Outdated
Comment thread src/ros2_medkit_action_status_bridge/src/action_status_bridge_node.cpp Outdated
Comment thread src/ros2_medkit_action_status_bridge/CMakeLists.txt
@mfaferek93 mfaferek93 force-pushed the feat/421-action-status-bridge branch from 6614b45 to 53d1a91 Compare June 15, 2026 19:36
@mfaferek93 mfaferek93 self-assigned this Jun 15, 2026
@mfaferek93 mfaferek93 marked this pull request as ready for review June 15, 2026 19:56
@mfaferek93 mfaferek93 requested a review from bburda June 15, 2026 20:22

@bburda bburda left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review findings inline (severity tagged per comment).

Comment thread src/ros2_medkit_action_status_bridge/src/action_status_bridge_node.cpp Outdated
Comment thread src/ros2_medkit_action_status_bridge/CMakeLists.txt Outdated
Comment thread src/ros2_medkit_action_status_bridge/CHANGELOG.rst
Comment thread src/ros2_medkit_action_status_bridge/CMakeLists.txt
@mfaferek93 mfaferek93 marked this pull request as draft June 16, 2026 07:13
@mfaferek93 mfaferek93 force-pushed the feat/421-action-status-bridge branch 2 times, most recently from 9fb6844 to 3b61f5d Compare June 16, 2026 11:10
@mfaferek93 mfaferek93 marked this pull request as ready for review June 16, 2026 11:33
@mfaferek93 mfaferek93 force-pushed the feat/421-action-status-bridge branch from 3b61f5d to 5969e86 Compare June 16, 2026 11:33
bburda
bburda previously approved these changes Jun 16, 2026

@bburda bburda left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

New ros2_medkit_action_status_bridge: watches */_action/status and turns
terminal ABORTED goal states into FaultManager faults, healing on SUCCEEDED.
Catches action-result failures that never reach /rosout or /diagnostics
(MoveIt, Nav2, ros2_control).

Refs #421
Attribute faults to the action server node FQN (from the status publisher) so they associate with the SOVD entity; heal a still-failed action before pruning it. Per-action lifecycle, sanitized prefix, param validation, CANCELED codes. Unique test domain range, docs-build wiring, and a launch_testing integration test.
@mfaferek93 mfaferek93 force-pushed the feat/421-action-status-bridge branch from 5969e86 to b27f1b6 Compare June 16, 2026 12:23
@mfaferek93 mfaferek93 requested a review from bburda June 16, 2026 12:35
@mfaferek93 mfaferek93 merged commit 575ece8 into main Jun 16, 2026
14 checks passed
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.

feat(fault_pack): promote aborted action goals to faults

3 participants