feat(analytics): add slop + duplicate signal to the maintainer quality dashboard (#2202)#5260
feat(analytics): add slop + duplicate signal to the maintainer quality dashboard (#2202)#5260dhgoal wants to merge 1 commit into
Conversation
…y dashboard (JSONbored#2202) Fold a slop + duplicate aggregate into MaintainerQualityDashboard: how many of the maintainer's open PRs carry an elevated/high deterministic slop band and how many sit in a high-risk duplicate cluster, each as a rate of the open-PR total (null when there are no open PRs, guarding the divide). Pure in-memory aggregation over data the shaping loop already produces (no new IO). Adds SlopDuplicateCard rendering the two rates with proportional bars + low/watch/ high bands, wired into MaintainerPanel; empty states for a clear queue and an absent field. Current-window rates; a time-series trend is a follow-up.
|
🚨 Contributor flagged. Click here for more info: Superagent Dashboard |
|
Superagent didn't find any vulnerabilities or security issues in this PR. |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #5260 +/- ##
=======================================
Coverage 94.36% 94.36%
=======================================
Files 474 474
Lines 40081 40085 +4
Branches 14614 14617 +3
=======================================
+ Hits 37821 37825 +4
Misses 1585 1585
Partials 675 675
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
|
Warning 🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨 ⏸️ Gittensory review result - manual review recommendedReview updated: 2026-07-12 19:05:55 UTC
⏸️ Suggested Action - Manual Review
Review summary Nits — 6 non-blocking
Flagged checks (non-blocking)
Review context
Contributor next steps
Signal definitions
[BETA] Chat with GittensoryAsk Gittensory a question about this PR directly in a comment — grounded only in the same cached, public-safe facts shown above, never a new claim.
Full command reference: https://gittensory.aethereal.dev/docs/gittensory-commands Visual preview
Click any thumbnail to open the full-size screenshot. Before = production · After = this PR's preview deploy. 🟩 Safe / merged · 🟦 Advisory · 🟨 Held for review · 🟥 Blocked / closed 💰 Earn for open-source contributions like this. Gittensor lets GitHub contributors earn for the work they already do — register to start earning →. Checked by Gittensory, a quiet PR intelligence layer for OSS maintainers.
|
What
Adds a slop + duplicate signal to the maintainer quality dashboard (Closes #2202): the share of the maintainer's open PRs carrying an elevated/high deterministic slop band and the share sitting in a high-risk duplicate cluster, each as a rate of the open-PR total.
Surfaces real data — the shaping loop already computes each repo's collisions and reads each PR's slop band; this folds those into a dashboard-level
slopDuplicateaggregate. Pure in-memory aggregation over data already produced (no new IO). Rates + bands only, never raw scores.Changes
Backend (
src/services/maintainer-quality-dashboard.ts, +20)slopBandiselevated/highin the existing loop; exposeslopDuplicateon the payload:openPullRequests,slopFlaggedPullRequests,duplicateFlaggedPullRequests(reusing the high-risk-cluster count), andslopRate/duplicateRate(null-guarded when there are no open PRs).test/unit/maintainer-quality-dashboard.test.ts— a flagged case (rate = 0.5) and a no-open-PR case (both rates null), covering both arms of the divide-guard.Frontend
slop-duplicate-card.tsx(new) —SlopDuplicateCard: two rate rows (slop, duplicate) with proportional bars +flagged of totalcounts + low/watch/high band pills. ReusesAnalyticsCardShell; empty states for a clear queue and an absent field.slop-duplicate-card.test.tsx(new) — populated, null-rate, queue-clear, and absent-field branches.maintainer-panel.tsx— optionalslopDuplicate?on the dashboard type + renders the card below queue-health.Verification
test/unit/maintainer-quality-dashboard.test.tsgreen (12 tests); card tests green (4);tscclean on the changed backend; eslint clean on the UI files; pure-aggregation diff (+219).Screenshots
Maintainer quality dashboard, populated and empty, desktop + mobile, light + dark.
light
dark
mobile
light
dark
mobile
Closes #2202