Add client-perf-diagnosis skill#5599
Open
habdelra wants to merge 2 commits into
Open
Conversation
A mode-based diagnostic guide for the client performance telemetry: how to
turn a field complaint ("user XYZ said their card was slow to load", "my tab
froze") into a measured, user-attributed story from the boxel:client-perf Loki
stream and the Client Performance Grafana dashboard.
Leads with the user-attributed drill-down (pivot to a matrix_user_id, pin the
session, find the slow card-load, then spider into the sibling events that
explain it), documents each of the six event types and the LogQL that reads
them, frames realm-event as the causal upstream of rebuild/card-load churn,
and cross-references indexing-diagnostics for the server-side join via the
logging correlation id.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Corrects several descriptions to match the instrument exactly: - `loading_ms`/`settle_ms` are both measured from the card-load window open and differ by one event-loop turn — neither is a first-paint metric; drop the "first content vs fully loaded" framing. - `env` is a hidden per-deployment constant baked at apply time, not an operator-facing drill control; only `matrix_user_id`/`session_id` are. - The wedge filter drops backgrounded-tab gaps outright and screens a foreground gap against an OS sleep/suspend wake by requiring a corroborating LoAF/longtask entry across a short grace window — not "timer coalescing". - The instrument beacons six signal event types plus a keepalive. - The By-user row surfaces signal-event volume, not a retry count. - `retried` is a reauth retry past a transient 401, not exponential backoff. - `profiler_stacks` is also absent where the self-profiler API/policy is unavailable, and `realm`/`env` are JSON fields too. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Background
The client performance telemetry adds an always-on browser instrument that beacons six event types to Loki and a Grafana dashboard, so real client behavior is measurable and attributable to a specific user or session. This adds the operator-facing counterpart: a diagnostic skill that turns a field complaint into a measured investigation against that telemetry.
The motivating shape of the complaint is concrete — "user XYZ said the app was slow loading their card" — and the whole reason attribution is in the pipeline is to answer it. So the skill leads with the user-attributed drill-down: pivot to the account's
matrix_user_id, pin the session, find the slowcard-load(the "Loading card…" window) and itssettle_ms, then spider into the sibling events in that same session that explain the cost.What the skill covers
A mode per investigation, all sharing the
matrix_user_id/session_iddrill-down:wedgeevents and theirfn @ url:charblocking-frame breadcrumb (source-map-resolvable for minified builds), plus profiler stacks where sampled.server-requestlatency by endpoint, joined to the realm-server's ownrealm:requests/realm:search-timingstage breakdown via the logging correlation id.It documents the pipeline, the Loki label-vs-JSON-field split, the six event schemas, the working LogQL for each mode (lifted from the dashboard so they match the instrument), the local-dev bring-up, and the seam to
indexing-diagnosticsfor the server-side half of a request.Notes
mainonce the base merges.🤖 Generated with Claude Code