[BUG]: Governance "Issue Resolution Rate" counts pull requests as issues
Los mantenedores suelen responder en 3 días
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 1/5
- Tiempo estimado
- Menos de una hora
- Aptitud para principiantes
- 86/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- github, javascript, react
Línea de trabajo
En src/pages/GovernancePage.jsx, inspecciona el cálculo de Issue Resolution Rate alrededor de las líneas 338–343 y compara su filtrado con las comprobaciones de gobernanza citadas en el issue. Excluye las pull requests de la lista de issues del repo y luego verifica que el denominador y la tasa de la tarjeta usen solo issues; el ejemplo de OrgExplorer indicado debería contar 44 issues en lugar de 100 elementos obtenidos.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Bug Description
The Governance "Issue Resolution Rate" card computes each repo's rate from GitHub's
/issues data without excluding pull requests. GitHub's /issues?state=all returns PRs as
well as issues (every PR is also an issue object, identified by a pull_request key), so
merged/closed PRs are counted as resolved issues and the rate is wrong.
In src/pages/GovernancePage.jsx (~lines 338-343):
const repoIssues = allIssues.filter(i => i.repoName === r.name)
const closed = repoIssues.filter(i => i.state === 'closed').length
const total = repoIssues.length
const rate = total ? Math.round(closed / total * 100) : null
allIssues (built ~lines 107-114) includes PRs and is never filtered with !i.pull_request.
Every other governance check DOES filter PRs out — Dead Issues (line 126), Zombie PRs
(line 144), and the stale-issues stats (AppContext.jsx line 422) — so this widget is the
outlier.
Verified on live data for AOSSIE-Org/OrgExplorer (first 100 of state=all): 56 of the 100
"issues" are actually PRs, so the denominator is inflated 44 -> 100 and the rate reads 42%
instead of the correct 39%.
Steps to Reproduce
- Explore any active org (e.g. AOSSIE-Org) and open the Governance page.
- Click "Run Audit".
- Look at the "Issue Resolution Rate" bars — closed/total includes pull requests.
- Compare any repo's number with GitHub's real issue count and it won't match.
Deterministic check (same logic as the page, on live data):
node f1_resolution.mjs
# fetched items (issues + PRs): 100 (PRs among them: 56)
# CURRENT (buggy, counts PRs) : 42/100 closed -> 42%
# CORRECT (issues only) : 17/44 closed -> 39%
Logs and Screenshots
Reproducible script output (replicates GovernancePage.jsx:338-343 on live GitHub data):
=== F1 Issue Resolution Rate — AOSSIE-Org/OrgExplorer (first 100 of state=all) ===
fetched items (issues + PRs): 100 (PRs among them: 56)
CURRENT (buggy, counts PRs) : 42/100 closed -> 42%
CORRECT (issues only) : 17/44 closed -> 39%
=> PRs inflate the denominator by 56 and skew the rate by 3 points.
📎 Image file:
Environment Details
- OS: macOS (also reproduces on the live site, any OS/browser)
- Browser: Chrome
- Site: https://orgexplorer.aossie.org/ and local dev (npm run dev), main @ d91d2b8
- Node.js: v20 (for the repro script)
- Suggested fix: add
&& !i.pull_requestto the repoIssues filter. - Related but separate: #302's open PR #304 rewrites this exact line for org-scoping
(issuesData?.[${r.orgLogin}/${r.name}] || []) but still counts PRs — so this defect
survives #304 and should be fixed on top of / within that change.
Impact
Medium - Feature works but has issues
Code of Conduct
- I have joined the Discord server and will post updates there
- I have searched existing issues to avoid duplicates
- Lenguaje dominante
- JavaScript
- Estrellas
- 45
- Forks
- 148
- Merge medio
- 5 d 20 h
- PR fusionados (30 d)
- 27
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de AOSSIE-Org/OrgExplorer
-
[BUG]: Overview "Language Distribution" percentages are relative to the top-7 languages, not all reposPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
AOSSIE-Org/OrgExplorer#402 ·
Los mantenedores suelen responder en 3 días
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
AOSSIE-Org/OrgExplorer#401 ·
Los mantenedores suelen responder en 3 días
-
[BUG]: Overview wrongly lists a successfully-loaded org as "could not be loaded" (case / duplicate)Abiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
AOSSIE-Org/OrgExplorer#400 ·
Los mantenedores suelen responder en 3 días
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
AOSSIE-Org/OrgExplorer#399 ·
Los mantenedores suelen responder en 3 días
-
[BUG]: Eliminate render-blocking CDN stylesheet for SocialShareButton in index.htmlPosiblemente ocupada @garv3143 la tomó hace 1 día. Abiertobug enhancement
Dificultad 1/5 1-3 horas Aptitud para principiantes 72/100
AOSSIE-Org/OrgExplorer#395 · 1 comentario ·
Los mantenedores suelen responder en 3 días
Todos los issues de AOSSIE-Org/OrgExplorer
Issues similares
-
type/bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 66/100
Los mantenedores suelen responder en 1 día
-
Update to mocha 12.xAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 67/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
rescript-lang/rescript#8996 ·
Los mantenedores suelen responder en 1 día
-
Add: Ministerstvoidey.ruAbiertocheck:passed logos:add
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100