[hero_router] /service/<svc> Diagnostics spec-compliance probe checks deprecated bare endpoints #119

Closed
opened 2026-06-14 15:00:52 +00:00 by sameh-farouk · 2 comments
Member

The service inspector's Diagnostics -> Spec compliance probe reports a healthy, fully-migrated oschema service as Non-compliant (screenshot). It probes the pre-migration bare endpoints on rpc.sockPOST /rpc, GET /openrpc.json, GET /health, GET /.well-known/heroservice.json — all 404.

Per the current hero_sockets.md, the mandated layout is now /api/{domain}/{rpc,openrpc.json,events} + /health.json + /heroservice.json + /api/domains.json + /api/ping, which the service serves correctly (all 200). The probe — and the "Unknown socket files (not in spec): admin.sock, web.sock" note — need updating to the current spec.

screenshot

The service inspector's **Diagnostics -> Spec compliance probe** reports a healthy, fully-migrated oschema service as **Non-compliant** (screenshot). It probes the pre-migration bare endpoints on `rpc.sock` — `POST /rpc`, `GET /openrpc.json`, `GET /health`, `GET /.well-known/heroservice.json` — all 404. Per the current `hero_sockets.md`, the mandated layout is now `/api/{domain}/{rpc,openrpc.json,events}` + `/health.json` + `/heroservice.json` + `/api/domains.json` + `/api/ping`, which the service serves correctly (all 200). The probe — and the "Unknown socket files (not in spec): admin.sock, web.sock" note — need updating to the current spec. ![screenshot](https://forge.ourworld.tf/attachments/328dba7e-2663-4d81-a16a-cbc788b91b55)
mahmoud self-assigned this 2026-06-14 16:41:17 +00:00
mahmoud added this to the ACTIVE project 2026-06-14 16:41:19 +00:00
mahmoud added this to the now milestone 2026-06-14 16:41:20 +00:00
Owner

This one is real outstanding work, the probe still checks the pre-migration bare endpoints, which is exactly what the issue reports:

  • probe_socket (routes.rs:3046-3155) probes POST /rpc, GET /openrpc.json, GET /health, GET /.well-known/heroservice.json — all deprecated. The current spec mandates /api/{domain}/{rpc,openrpc.json,events} + /health.json + /heroservice.json + /api/domains.json + /api/ping.
  • classify_socket (routes.rs:2925) only knows rpc.sock/ui.sock/rest.sock/openapi.sock/web_*.sock, so web.sock and admin.sock (current spec sockets) get flagged "Unknown socket files (not in spec)", the second symptom in the issue.
This one is real outstanding work, the probe still checks the pre-migration bare endpoints, which is exactly what the issue reports: - probe_socket (routes.rs:3046-3155) probes POST /rpc, GET /openrpc.json, GET /health, GET /.well-known/heroservice.json — all deprecated. The current spec mandates /api/{domain}/{rpc,openrpc.json,events} + /health.json + /heroservice.json + /api/domains.json + /api/ping. - classify_socket (routes.rs:2925) only knows rpc.sock/ui.sock/rest.sock/openapi.sock/web_*.sock, so web.sock and admin.sock (current spec sockets) get flagged "Unknown socket files (not in spec)", the second symptom in the issue.
Owner

Fix up in PR #123 (development_router_diag_probedevelopment): #123

Both symptoms addressed against the current hero_sockets.md contract:

  • probe_socket (rpc) now probes the canonical surface — /health.json, /heroservice.json, /api/domains.json, /api/ping, and per every domain /api/{domain}/openrpc.json + POST /api/{domain}/rpc — instead of the deprecated bare /rpc, /openrpc.json, /health, /.well-known/heroservice.json.
  • classify_socket recognizes admin.sock and the bare web.sock (plus resp.sock; legacy ui.sock → HTML UI), so they're no longer reported as "Unknown socket files (not in spec)".

Verified end-to-end against a live router + two-domain hero_fake_service:

compliant : True
required  : 8 pass / 0 fail
unknown   : []
rpc.sock: /health.json /heroservice.json /api/domains.json /api/ping
          /api/alpha/openrpc.json POST /api/alpha/rpc
          /api/beta/openrpc.json  POST /api/beta/rpc   — all 200
web.sock (type=web): /, /health.json, /heroservice.json — all 200 (optional)

Plus unit tests (classify/parse/validate) and a new live functional test. Will close on merge.

Fix up in **PR #123** (`development_router_diag_probe` → `development`): https://forge.ourworld.tf/lhumina_code/hero_router/pulls/123 Both symptoms addressed against the current `hero_sockets.md` contract: - `probe_socket` (rpc) now probes the canonical surface — `/health.json`, `/heroservice.json`, `/api/domains.json`, `/api/ping`, and per **every** domain `/api/{domain}/openrpc.json` + `POST /api/{domain}/rpc` — instead of the deprecated bare `/rpc`, `/openrpc.json`, `/health`, `/.well-known/heroservice.json`. - `classify_socket` recognizes `admin.sock` and the bare `web.sock` (plus `resp.sock`; legacy `ui.sock` → HTML UI), so they're no longer reported as "Unknown socket files (not in spec)". Verified end-to-end against a live router + two-domain `hero_fake_service`: ``` compliant : True required : 8 pass / 0 fail unknown : [] rpc.sock: /health.json /heroservice.json /api/domains.json /api/ping /api/alpha/openrpc.json POST /api/alpha/rpc /api/beta/openrpc.json POST /api/beta/rpc — all 200 web.sock (type=web): /, /health.json, /heroservice.json — all 200 (optional) ``` Plus unit tests (classify/parse/validate) and a new live functional test. Will close on merge.
Sign in to join this conversation.
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
lhumina_code/hero_router#119
No description provided.