feat(ui): slop-band calibration card on the analytics dashboard#5128
feat(ui): slop-band calibration card on the analytics dashboard#5128jeffrey701 wants to merge 1 commit into
Conversation
Add SlopBandCalibrationCard to the self-host analytics dashboard (JSONbored#2196): for each predicted slop band, how many PRs the gate put there and how they actually resolved (realized merge rate), so a maintainer can see whether the slop predictor is well-calibrated. Public-safe bands only -- no raw credibility scores. - slop-band-calibration-card-model.ts: SlopBandCalibrationReport / SlopBandCalibrationRow types + pure helpers (orderSlopBands cleanest -> highest, toneForSlopBand, formatMergeRate). - slop-band-calibration-card.tsx: a row per band (StatusPill band tone + Stat predicted count + Stat realized merge rate + MiniSparkbar), and a graceful EmptyState when the field is absent / there are no bands. - Wired into app.analytics.tsx behind an optional slopBandCalibration field, so it renders once the shape is present on the operator-dashboard payload and stays absent until then. Vitest: model ordering / tone / format helpers + the card's all-bands-present, one-empty-band, and no-data arms. Closes JSONbored#2196
|
Superagent didn't find any vulnerabilities or security issues in this PR. |
|
Caution 🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥 🛑 Gittensory review result - reject/close recommendedReview updated: 2026-07-11 21:12:45 UTC
🛑 Suggested Action - Reject/Close
Review summary Nits — 1 non-blocking
Why this is blocked
CI checks failing
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.
|
|
Gittensory is closing this pull request on the maintainer's behalf (CI is failing (validate, validate-code); Linked issue overlaps another open PR; duplicate of another open PR). This is an automated maintenance action — to pursue this change, please open a new pull request with the issues resolved. Closed PRs may be analyzed later to improve review accuracy, but they are not automatically reopened or re-reviewed. |
What & why
Closes #2196.
Adds a self-host analytics card visualizing slop-band calibration — for each predicted slop band (clean / low / elevated / high), how many PRs the gate put there and how they actually resolved (realized merge rate). It answers "is the slop predictor well-calibrated?" — cleaner bands should merge more, higher bands less. Public-safe bands only — no raw credibility scores.
slop-band-calibration-card-model.ts—SlopBandCalibrationReport/SlopBandCalibrationRowtypes + pure helpers:orderSlopBands(cleanest → highest, ignoring the payload's order),toneForSlopBand,formatMergeRate.slop-band-calibration-card.tsx— a row per band: aStatusPill(band tone), predicted-count and realized-merge-rateStats, and aMiniSparkbarof the band's outcome distribution; a gracefulEmptyStatewhen the field is absent or there are no bands.app.analytics.tsxgains an optionalslopBandCalibrationfield and renders the card when present, so it degrades to nothing until the stats slice lands.Tests (
slop-band-calibration-card.test.tsx): the model's ordering / tone / format helpers and the card's all-bands-present, one-empty-band, and no-data arms.ui:typecheck,ui:lint,vitest, and the Vite build all pass.Screenshots
/app/analytics)Captured against the local-preview analytics dashboard (
?preview=1); the card appears once aslopBandCalibrationslice is present on the operator-dashboard payload.