Description
The "Active Network" trend chart on the Dashboard page shows inaccurate data for the "Issues Opened" and "Issues Resolved" series. The current implementation uses the /issues API endpoint (IssueBounty[]), which only returns bounty-backed issues (33 total, 28 completed). This is a tiny fraction of the actual issue activity tracked across the network.
The miner aggregate data (MinerEvaluation) correctly shows 1,030 total issues (239 solved, 595 open, 196 closed) across 74 miners — but these are all-time totals without timestamps, so they cannot be used for time-series bucketing in the trend graph.
Current Behavior
- Issues Opened shows 33 (all-time) — only bounty-backed issues
- Issues Resolved shows 28 (all-time) — only completed bounties
- The Issue Discoveries overview cards correctly show 1,030 total issues (from miner aggregates)
- This creates a large discrepancy between the overview cards and the trend graph
Expected Behavior
The trend graph's issue series should reflect all discovered issues across the network, not just bounty-backed ones.
Root Cause
| Data Source |
Count |
Has Timestamps |
Scope |
/issues API (bounties) |
33 total (28 resolved) |
✅ createdAt, completedAt |
Bounty-backed only |
MinerEvaluation aggregates |
1,030 total (239 solved) |
❌ All-time totals only |
All mirror issues |
Mirror per-miner API (/miners/{id}/issues) |
~1,030 individual issues |
✅ created_at, closed_at |
Requires fan-out (74+ calls) |
PR issueMultiplier field |
Always null in /prs |
N/A |
Never populated globally |
PR labelMultiplier field |
ALL PRs match (>0) |
N/A |
Scoring bonus, not issue linkage |
The trend graph (buildDashboardTrendData in dashboardData.ts) currently uses IssueBounty[] from the /issues endpoint for time-series bucketing, which only captures bounty-backed issues.
Possible Solutions
- New backend endpoint — Expose a global issue discovery feed (e.g.
/dash/issues) that aggregates timestamped issues from all miners without requiring per-miner fan-out
- Mirror fan-out with caching — Aggregate issues client-side from
/miners/{id}/issues for all active miners, with caching to reduce API load
- Populate
issueMultiplier on /prs — If the global PR endpoint included issueMultiplier values, PRs could serve as a proxy for issue activity
Affected Files
src/pages/dashboard/dashboardData.ts — buildDashboardTrendData(), buildDashboardKpis()
src/pages/dashboard/useDashboardData.ts — data composition hook
src/api/IssuesApi.ts — /issues endpoint (bounty-only)
Description
The "Active Network" trend chart on the Dashboard page shows inaccurate data for the "Issues Opened" and "Issues Resolved" series. The current implementation uses the
/issuesAPI endpoint (IssueBounty[]), which only returns bounty-backed issues (33 total, 28 completed). This is a tiny fraction of the actual issue activity tracked across the network.The miner aggregate data (
MinerEvaluation) correctly shows 1,030 total issues (239 solved, 595 open, 196 closed) across 74 miners — but these are all-time totals without timestamps, so they cannot be used for time-series bucketing in the trend graph.Current Behavior
Expected Behavior
The trend graph's issue series should reflect all discovered issues across the network, not just bounty-backed ones.
Root Cause
/issuesAPI (bounties)createdAt,completedAtMinerEvaluationaggregates/miners/{id}/issues)created_at,closed_atissueMultiplierfieldnullin/prslabelMultiplierfieldThe trend graph (
buildDashboardTrendDataindashboardData.ts) currently usesIssueBounty[]from the/issuesendpoint for time-series bucketing, which only captures bounty-backed issues.Possible Solutions
/dash/issues) that aggregates timestamped issues from all miners without requiring per-miner fan-out/miners/{id}/issuesfor all active miners, with caching to reduce API loadissueMultiplieron/prs— If the global PR endpoint includedissueMultipliervalues, PRs could serve as a proxy for issue activityAffected Files
src/pages/dashboard/dashboardData.ts—buildDashboardTrendData(),buildDashboardKpis()src/pages/dashboard/useDashboardData.ts— data composition hooksrc/api/IssuesApi.ts—/issuesendpoint (bounty-only)