Skip to content

feat(gateway): startup discovery summary + empty-graph diagnostics + self-entity #427

@mfaferek93

Description

@mfaferek93

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions