checkId: check.servicegraph.sibling-reachability plugin: stellaops.doctor.servicegraph severity: fail tags: [servicegraph, gateway, router, services, connectivity]

Sibling Service Reachability

What It Checks

This check resolves the platform router/gateway host from Router:Gateways:0:Host (compose Router__Gateways__0__Host) and probes first-party sibling service health endpoints through the documented route roots. It covers Authority, Concelier, Scanner, Policy, Evidence Locker, Attestor, JobEngine, Notify, Release Orchestrator, VexLens, and VexHub.

ConditionResult
No router/gateway host configuredskip
Every sibling route returns HTTP 2xxpass
Any sibling route returns non-2xx or cannot be reachedfail

The evidence includes GatewayBaseUrl, SiblingCount, HealthyCount, FailedCount, UnhealthyServices, and per-service Url, Status, and StatusCode fields.

Why It Matters

The platform deployment reaches sibling services through the router/gateway instead of direct StellaOps:*Url settings. A direct-URL-only probe can skip on the real deployment while the catalog still needs proof that first-party service routes are reachable. This check closes that gap without publishing messages or mutating service state.

Common Causes

How to Fix

Docker Compose

# Identify the failed service route from Doctor evidence first:
stella doctor run --check check.servicegraph.sibling-reachability

# Inspect only the named failed service and the gateway; do not restart the full stack.
docker compose -f devops/compose/docker-compose.stella-ops.yml ps <failed-service>
docker compose -f devops/compose/docker-compose.stella-ops.yml logs --tail 100 <failed-service>
docker compose -f devops/compose/docker-compose.stella-ops.yml ps router-gateway

Bare Metal / systemd

# Probe the failed evidence URL directly from the Doctor host.
curl -fsS http://<gateway-host>:<gateway-port>/<failed-route>

# Check only the named failed service and the router/gateway unit.
systemctl status stellaops-<failed-service>
systemctl status stellaops-router-gateway

Kubernetes / Helm

# Check only the named failed service and gateway pods.
kubectl get pods -n stellaops -l app=<failed-service>
kubectl logs -n stellaops -l app=<failed-service> --tail=100
kubectl get pods -n stellaops -l app=router-gateway

Verification

stella doctor run --check check.servicegraph.sibling-reachability