Measured (objectui#7249 dispatch, 2026-09-03, showcase @ main)
GET /api/v1/discovery on a stock showcase boot reports the realtime service as enabled: true but status: "degraded", handlerReady: false, message "In-process event bus only — no HTTP/WS realtime surface is mounted", and the routes map carries no realtime entry. RealtimeServicePlugin is listed among the 48 loaded plugins at boot.
So a console client has nothing to subscribe to, and the inbox bell / approvals badge stay on polling (10 s foreground, 60 s hidden). objectui#7249 asked the bell to "prefer the realtime channel when the server advertises it"; that half is unreachable from objectui until this repo advertises a channel, and was handed here (multi-repo rule 3, contract-first: the missing piece is a server transport, not a client).
What this card asks for
- Decide whether the open framework mounts an HTTP/WS (or SSE) realtime surface at all, or whether that stays a cloud/enterprise service — either way, say it in one place.
- If it mounts: advertise the route in
/discovery (ADR-0076 D12 — mount everything advertised, advertise only what is mounted) and expose a subscribe primitive in @objectstack/client, so the bell can subscribe and fall back to polling.
- AI-error note worth pinning whichever way this goes:
enabled: true is NOT the predicate a client may read as "a channel exists" — a client keying on it would subscribe to nothing and silently lose the bell. The honest predicate is handlerReady: true AND a route to connect to; discovery should make that shape unmistakable.
Source: os-dev report on objectui#7249 (open question 2, recommendation A).
Generated by Claude Code
Measured (objectui#7249 dispatch, 2026-09-03, showcase @
main)GET /api/v1/discoveryon a stock showcase boot reports the realtime service asenabled: truebutstatus: "degraded",handlerReady: false, message "In-process event bus only — no HTTP/WS realtime surface is mounted", and theroutesmap carries no realtime entry.RealtimeServicePluginis listed among the 48 loaded plugins at boot.So a console client has nothing to subscribe to, and the inbox bell / approvals badge stay on polling (10 s foreground, 60 s hidden). objectui#7249 asked the bell to "prefer the realtime channel when the server advertises it"; that half is unreachable from objectui until this repo advertises a channel, and was handed here (multi-repo rule 3, contract-first: the missing piece is a server transport, not a client).
What this card asks for
/discovery(ADR-0076 D12 — mount everything advertised, advertise only what is mounted) and expose a subscribe primitive in@objectstack/client, so the bell can subscribe and fall back to polling.enabled: trueis NOT the predicate a client may read as "a channel exists" — a client keying on it would subscribe to nothing and silently lose the bell. The honest predicate ishandlerReady: trueAND a route to connect to; discovery should make that shape unmistakable.Source: os-dev report on objectui#7249 (open question 2, recommendation A).
Generated by Claude Code