Two fault-bridge robustness issues found together.
1. action_status_bridge fails to start with its own default config
Same empty-untyped-list crash as #444 (log_bridge), but in action_status_bridge - the #444 fix did not cover this package.
config/action_status_bridge.yaml ships exclude_actions: [] and include_only_actions: []. Empty YAML lists are untyped, so launching the node with this file aborts at startup:
terminate called after throwing an instance of 'rclcpp::exceptions::InvalidParameterValueException'
what(): parameter_value_from failed for parameter 'exclude_actions': No parameter value set
[ros2run]: Aborted
The node code is correct (declare_parameter<std::vector<std::string>>("exclude_actions", {}) / include_only_actions in action_status_bridge_node.cpp); only the shipped YAML breaks it. Reproduced live: with the shipped config the node aborts (exit 250); commenting the two lines out, it starts clean (ActionStatusBridge started ... Watching action ...).
Fix: comment out the two empty-list lines in action_status_bridge.yaml with non-empty examples - the same fix applied to log_bridge in #444 / PR #449.
2. log_bridge promotes the medkit stack's own logs (self-noise)
log_bridge only self-excludes its own node and /log_bridge (log_bridge_node.cpp:98-99: source_id == own_node_name_ || source_id == "/log_bridge"). It does not exclude the rest of the medkit stack, so when fault_manager (or the gateway) logs to /rosout, log_bridge promotes those lines into faults - medkit reporting on medkit, a noise/feedback loop.
Lower priority than the crash (robustness/noise, not a hard failure).
Fix: by default also skip the medkit stack's own nodes (e.g. fault_manager, the gateway) from promotion, or document a recommended exclude_nodes for them.
Two fault-bridge robustness issues found together.
1. action_status_bridge fails to start with its own default config
Same empty-untyped-list crash as #444 (log_bridge), but in
action_status_bridge- the #444 fix did not cover this package.config/action_status_bridge.yamlshipsexclude_actions: []andinclude_only_actions: []. Empty YAML lists are untyped, so launching the node with this file aborts at startup:The node code is correct (
declare_parameter<std::vector<std::string>>("exclude_actions", {})/include_only_actionsinaction_status_bridge_node.cpp); only the shipped YAML breaks it. Reproduced live: with the shipped config the node aborts (exit 250); commenting the two lines out, it starts clean (ActionStatusBridge started ... Watching action ...).Fix: comment out the two empty-list lines in
action_status_bridge.yamlwith non-empty examples - the same fix applied to log_bridge in #444 / PR #449.2. log_bridge promotes the medkit stack's own logs (self-noise)
log_bridgeonly self-excludes its own node and/log_bridge(log_bridge_node.cpp:98-99:source_id == own_node_name_ || source_id == "/log_bridge"). It does not exclude the rest of the medkit stack, so whenfault_manager(or the gateway) logs to/rosout, log_bridge promotes those lines into faults - medkit reporting on medkit, a noise/feedback loop.Lower priority than the crash (robustness/noise, not a hard failure).
Fix: by default also skip the medkit stack's own nodes (e.g.
fault_manager, the gateway) from promotion, or document a recommendedexclude_nodesfor them.