You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The gateway boots cleanly and serves an empty entity tree when it cannot see the target ROS graph (wrong ROS_DOMAIN_ID, mismatched RMW_IMPLEMENTATION, container network isolation, ROS_LOCALHOST_ONLY, blocked multicast). Today there is no startup summary, no empty-graph warning, no environment echo, and no gateway self-entity (gateway_node.cpp logs its config but never the discovered entity count). The result is a silent dead end: the user sees a blank tree with no hint where to look.
Scope
Startup discovery summary: after the first discovery cycle, log the number of discovered nodes / topics / medkit entities, the gateway URL, and a sample curl.
Empty-graph diagnostics, surfaced to the USER (not console-only): when zero application entities are discovered, report the likely causes and echo the active environment (ROS_DOMAIN_ID, RMW_IMPLEMENTATION, ROS_LOCALHOST_ONLY) somewhere the UI/API can show it (for example on /health or as a gateway self-entity attribute), so a user staring at an empty tree sees "0 application nodes visible - domain X, rmw Y, localhost-only Z - check that the gateway shares the robot's domain / RMW / network" and knows where to look. Also log it loudly on the console.
Gateway self-entity: the gateway always registers itself as an entity, so the tree is never literally blank and the "0 application entities" state is explicit rather than empty.
Document the co-location requirement and multi-domain topology in the bringup quickstart (feat: single bringup launch for gateway + fault_manager + bridges #424): the gateway must share ROS_DOMAIN_ID + RMW_IMPLEMENTATION + network with the target stack; multiple domains run one gateway per domain federated by peer aggregation.
Acceptance
On startup the gateway logs discovered node / topic / entity counts plus the URL and a sample curl.
With no reachable application nodes, the gateway both logs a warning and exposes the same diagnostic via the UI/API (not console-only), including the active ROS_DOMAIN_ID / RMW_IMPLEMENTATION / ROS_LOCALHOST_ONLY and the likely causes.
The gateway self-entity is always present; the entity tree is never empty even before any application node is discovered.
The gateway boots cleanly and serves an empty entity tree when it cannot see the target ROS graph (wrong
ROS_DOMAIN_ID, mismatchedRMW_IMPLEMENTATION, container network isolation,ROS_LOCALHOST_ONLY, blocked multicast). Today there is no startup summary, no empty-graph warning, no environment echo, and no gateway self-entity (gateway_node.cpplogs its config but never the discovered entity count). The result is a silent dead end: the user sees a blank tree with no hint where to look.Scope
ROS_DOMAIN_ID,RMW_IMPLEMENTATION,ROS_LOCALHOST_ONLY) somewhere the UI/API can show it (for example on/healthor as a gateway self-entity attribute), so a user staring at an empty tree sees "0 application nodes visible - domain X, rmw Y, localhost-only Z - check that the gateway shares the robot's domain / RMW / network" and knows where to look. Also log it loudly on the console.ROS_DOMAIN_ID+RMW_IMPLEMENTATION+ network with the target stack; multiple domains run one gateway per domain federated by peer aggregation.Acceptance
ROS_DOMAIN_ID/RMW_IMPLEMENTATION/ROS_LOCALHOST_ONLYand the likely causes.