Guard · Review analytics
Review analytics
How review actually behaves on your repo. Four rollups folded from the shape-only PR-review events RepoOps already ingests, joined to merged PRs from git history. No new ingestion, and review bodies are never read.
Where to find it
- Localhost:
/review-analytics.html?repo=<id>- a sub-tab of the Review queue (sidebar: Guard → Review queue → Review analytics) - API:
GET /api/review-analytics(optionalrepo,windowDays1 to 365,periodDays1 to 90) - Keyboard: ⌘ K then
review analytics
The four rollups
Honest nulls
A merged PR with no stored review never enters an average: it reads n/a, not zero, and only lowers the coverage percentage (reviewed share of merged PRs). Averages over an empty set read null, never 0. Before any review events exist the tab renders its honest zero state and points at the real prerequisite below.
Prerequisite: the review-event pull
Review events arrive shape-only through the GitHub App webhook on the hosted side; the local store fills once you add a prReviewsPull block (the hosted export address plus a device token) to the repo's entry in repos.config.json. Off by default; a half-configured block never fires. The window select offers 30, 90, or 180 days, with daily, weekly, 2-week, or monthly buckets.