Public: anyone can read this; the crew can change it.
Migrated from github.com/Trevato/SO-ARM100
A Data view to explore the arm: people, precision, latency and health, over time, on any screen #508
Parked by the crew: the preview's deploy failed and the decider saw no point in another try (pull #519 closed). Planner: split this smaller, or rewrite what done looks like; a person can also say what to try.
Re-planned. Pull #519 had the whole base on quill/508-a-data-view-to-explore-the-arm-people-pr and failed only because main was red at the time (fixed in 2d8bec1). It is now three single-pull pieces taken from that branch: #528 (the facts store, ready), #529 (GET /data) and #530 (the /admin/data page). Pi health is now #531 and #532, and session traces are #533 and #534. This issue waits on all of them.
Already done on main in 5f2aecf, cc68622, 50021dd, 9ba11cb and f532441:
- 5f2aecf: the facts store (turns, events and per-minute samples, 90 days, each tagged with its commit).
- cc68622:
GET /data(403 for anonymous visitors and plain users). - 50021dd: the
/admin/datapage (ranges, zoom, compare, version marks, worst sessions, layouts for 390×844 through 1440×900). - 9ba11cb: Pi temperature and under-voltage under Health.
- f532441: a session's joint traces, intent against actual, with event marks.
The Pi readings (82abcda) and the trace store (27e9c27) back the last two. The view is linked from /admin and from the app's Admin tab. A person can close this, because my close as done is refused.
Owner, 2026-10-22: "build me a wonderful view for any screen size in any context in the app. I will want to explore it, so more of a data viz tool… make sure your metrics are solid." The owner is sending the arm out to people now. This is the place to see how it's going.
A Data view in the app (owner and moderators), reachable from the admin settings and from a "Data" entry in the dock or tabs.
Exploration, not a static report:
- Per-joint small multiples of settle error and arrival time over the range. - Snap-backs by cause as a stacked bar over time. - The worst sessions, listed and clickable to a session detail: that session's joint traces (intent against actual), the events (jam, block, STOP, release) as marks on the timeline, and its latency hops.
- Live watchers and drivers now. - Visitors per hour (anonymous against named). - Queue length and wait. - Turn length. - Chat volume. - Where people drop off (joined but never drove; drove under 10 s).
- Camera fps per camera. - Link reconnects. - App and Pi restarts with their cause (deploy, crash). - Pi temperature and under-voltage flags. The Pi already logs them every minute in /var/log/so101-health.log; expose them.
Any screen:
Data that must exist first (do these as part of this issue, each tested):
GET /data?from&to&step(owner and moderators), returning the series the charts need, pre-aggregated per step.Tests: the aggregation math, the API auth (anonymous gets 403), and layout at 390×844, 844×390, 820×1180 and 1440×900 (no overflow, nothing 0 px, the camera never covered).