Observed live on os-2gv9x5.objectos.ai (prod tenant), HotCRM Executive Overview: every analytics widget shows
Analytics capability is not installed on this deployment — POST /analytics/dataset/query is unavailable. Install @objectstack/service-analytics and mount AnalyticsServicePlugin to enable it. (server said: Dataset "opportunity_metrics" not found.)
The banner's own parenthetical contradicts its headline. Verified against the live environment:
POST /api/v1/analytics/dataset/query → 401 UNAUTHENTICATED (not 404)
The route is mounted and answering; the analytics capability IS installed. The real condition was the named dataset does not exist in this environment — the installed app.objectstack.hotcrm was 1.3.0 while the datasets (opportunity_metrics, account_metrics, contact_metrics, lead_metrics) ship in 2.2.2. The fix for the environment is a package upgrade; the banner sends an operator to install a server plugin instead — the opposite corner of the system.
The defect
The widget's error mapping collapses two distinct server answers into the capability-missing message:
- route absent (
ROUTE_NOT_FOUND / 404) → "capability not installed" is correct; - route present, dataset unknown → should say "Dataset 'X' is not defined in this environment — the installed app may be outdated", ideally naming the app when the dashboard metadata knows it.
The evidence was in the payload the whole time — the code even prints the server's message in parentheses while overriding its meaning in the headline. Same failure shape the cloud-side epic kept finding: a diagnostic that does not observe its own subject.
Where to look
The analytics widget error path in the dashboard plugin (plugin-dashboard / analytics adapter) — wherever the "capability is not installed" copy is chosen. Map by the server's error code/status, not by the endpoint having errored.
Observed live on
os-2gv9x5.objectos.ai(prod tenant), HotCRM Executive Overview: every analytics widget showsThe banner's own parenthetical contradicts its headline. Verified against the live environment:
The route is mounted and answering; the analytics capability IS installed. The real condition was the named dataset does not exist in this environment — the installed
app.objectstack.hotcrmwas 1.3.0 while the datasets (opportunity_metrics,account_metrics,contact_metrics,lead_metrics) ship in 2.2.2. The fix for the environment is a package upgrade; the banner sends an operator to install a server plugin instead — the opposite corner of the system.The defect
The widget's error mapping collapses two distinct server answers into the capability-missing message:
ROUTE_NOT_FOUND/ 404) → "capability not installed" is correct;The evidence was in the payload the whole time — the code even prints the server's message in parentheses while overriding its meaning in the headline. Same failure shape the cloud-side epic kept finding: a diagnostic that does not observe its own subject.
Where to look
The analytics widget error path in the dashboard plugin (plugin-dashboard / analytics adapter) — wherever the "capability is not installed" copy is chosen. Map by the server's error code/status, not by the endpoint having errored.