Repository navigation
feat(platform): mark incomplete PR data on compare and dashboard - #283
Merged
cpenaforte-clickbus merged 17 commits intoOct 8, 2026
Merged
cpenaforte-clickbus merged 17 commits into
cpenaforte-clickbus merged 17 commits into
Conversation
When the PR reviews read degrades, the engine omits single_pass_rate and median_review_rounds from each acceptance_by_origin / acceptance_by_tool group. The org PR health and tool comparison aggregations multiplied those fields by a weight, so a missing value would have become NaN and poisoned the whole org-level number. Both fields are now optional and a group is only summed when the values are numbers, so the result equals that of a run without the group. Refs #236 Assisted-by: Claude Code <noreply@anthropic.com> Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…hboard The badge on the repo page was the only place a degraded PR read showed; the compare table and the org dashboard rendered such a run like a complete one. The compare table now shows an amber marker (with the same tooltip text, also as screen-reader text) per repo, read through prDegradedSteps from the repo_metric_summaries payload. The select falls back to the pre-023 column list when the view has no payload, so the table stays populated, just unmarked. The dashboard shows an amber note above the PR-driven panels listing the affected repos, computed from the payloads it already loads. es-ES falls back to en-US. Refs #236 Assisted-by: Claude Code <noreply@anthropic.com> Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The amber dot on the compare table only had a `title` on a non-focusable span, so keyboard and touch users could not learn what it meant. When at least one visible row is marked, a one-line legend under the table now shows the dot and the existing "PR data incomplete" text. The per-row `title` is dropped since the sr-only text already carries the detail. The pt-BR dashboard note said "no run mais recente"; every other pt-BR string says "execução". Refs #236 Assisted-by: Claude Code <noreply@anthropic.com> Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
This was referenced Oct 5, 2026
cpenaforte-clickbus
marked this pull request as ready for review
October 5, 2026 19:17
cpenaforte-clickbus
requested review from
clickmatos,
lucastribioliclickbus,
rafaeldearaujop and
trentas
October 5, 2026 19:27
Selecting payload->pr_enrichment_degraded makes repo_metric_summaries aggregate every run's payload, and it was requested by all callers (repos, ai-exposure, dashboard, compare). It is now an option that only the compare page turns on; other callers get pr_degraded_steps: []. The retry without the field now happens only when the error says the column is missing (code 42703, or a message naming payload), so a timeout is logged and surfaced instead of being silently masked. SummaryRow becomes an interface of the selected columns instead of Record<string, any>. Refs #236 Assisted-by: Claude Code <noreply@anthropic.com> Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Degraded steps showed as raw ids ("enrichment") in the repo badge and
the compare marker. They now go through a localized label
(repos.detail.prData.steps.*, en-US and pt-BR; es-ES falls back) via
formatPrSteps.
prDegradedSteps drops repeated steps, so a payload listing one twice no
longer prints it twice.
The dashboard note listed every degraded repo; it now names at most 5
and collapses the rest into "and N more" / "e mais N".
anyPrDataIncomplete was a one-line wrapper; the compare view checks
inline instead. The repo page comment claimed the flow and merge panels
are absent exactly when the read degraded, which is false when only
"basic" failed.
Refs #236
Assisted-by: Claude Code <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The amber marker and its legend only existed in the desktop table, so the md:hidden card stack gave no sign a repo's PR read degraded. The marker is now one component used by both layouts, and the legend sits below both so either one explains it. The dot gains a title (hover for sighted users) next to its sr-only text; the legend keeps the meaning off colour and off the tooltip. Refs #236 Assisted-by: Claude Code <noreply@anthropic.com> Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The amber dot is the only per-row cue on the compare page, and amber-500 sits near 2.1:1 on the light card, below the 3:1 WCAG 1.4.11 asks of it. The dot and its legend now use amber-600 on light (about 3.2:1) and keep amber-500 on dark (well above 3:1). The PR-data tooltip said merge strategy isn't classified "when enrichment fails"; the engine only skips it when enrichment fails for merged PRs, so the copy now says so, in both locales. Refs #236 Assisted-by: Claude Code <noreply@anthropic.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The failed PR-read steps lived only in a hover title and screen-reader text, on the compare dot and on the repo-page badge, so touch and keyboard users could see that the read was incomplete but not where. The mobile compare card now shows the localized steps as muted text next to the dot, and the repo page shows them next to the badge. On the card the visible steps replace the dot's sr-only sentence, so screen readers read them once, after a short sr-only "PR data incomplete:" prefix. The card marker also drops its ml-2: the row already spaces its items with gap-2. The desktop table is unchanged. Refs #236 Assisted-by: Claude Code <noreply@anthropic.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The reason for the `as unknown as` cast in getOrgReposSummary sat two lines above the query, away from the cast it explains. The query result is now bound first and the cast returned on its own line, with the reason right above it. No behavior change. Refs #236 Assisted-by: Claude Code <noreply@anthropic.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Renders the compare view with one degraded and one clean repo and checks what the last fixes changed: the mobile card shows the failed steps as text after an sr-only prefix, the full sentence stays screen-reader text only in the table, the card marker has no margin, and the dot is amber-600 with amber-500 only on dark. All four fail against the previous marker. Refs #236 Assisted-by: Claude Code <noreply@anthropic.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A failed open list, or a failed enrichment or reviews pass for open PRs, leaves open-PR fields out of the run, and the engine's report caveat now says so. The tooltip on the PR-data badge and marker listed only flow, review and in-PR metrics; it now names open-PR metrics too, in both locales. Refs #236 Assisted-by: Claude Code <noreply@anthropic.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A failed merged list omits the PR lifecycle fields (counts, time to merge, cycle time), and a partial read skews them. The engine's report caveat now says so; the PR-data tooltip mirrors it in both locales. Refs #236 Assisted-by: Claude Code <noreply@anthropic.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The repo-page badge now has the failed steps as visible text beside it, yet kept a title with the same steps in a sentence. Screen readers may read a title as a description, so the steps could be announced twice. The title goes; the visible text carries the steps. Refs #236 Assisted-by: Claude Code <noreply@anthropic.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The desktop compare table kept the failed PR-read steps in a hover title and screen-reader text only, so sighted keyboard users could not see them, and on the mobile card the steps sat inline with the truncating repo name, where a long list squeezed it. Both layouts now put the amber dot and the localized steps on a line of their own under the repo name. The dot and the steps are aria-hidden, carrying the full sentence as their hover title, and screen readers read that sentence once as sr-only text, in both layouts alike (the card's short sr-only prefix gives way to it). Refs #236 Assisted-by: Claude Code <noreply@anthropic.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
3 tasks done
The label for the `fetch` step read "PR read" / "leitura de PRs", so the step sentence said "This run's PR read failed at: PR read." It now says "entire read" / "leitura inteira". Found in a manual end-to-end check. Refs #236 Assisted-by: Claude Code <noreply@anthropic.com> Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
4 tasks
fix(platform): make the PR-data marker readable on touch and keyboard
fix(platform): make the PR-data query opt-in and localize its steps
cpenaforte-clickbus
merged commit Oct 8, 2026
84386c6
into
feat/pr-data-incomplete-badge
3 of 4 checks passed
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Contexto e Motivação
O badge de dados de PR incompletos (#282) só aparece na página do repositório. Na tabela de comparação e no dashboard da organização, um run cuja leitura de PRs degradou aparece igual a um completo — e o dashboard agrega PR de todos os repositórios, então um só degradado distorce os números da organização sem aviso.
Há também uma dependência de ordem: com o passo
reviewsdegradado, o engine vai deixar de emitirsingle_pass_rateemedian_review_roundsnos grupos deacceptance_by_*(#284), eorg-summary.tsetool-comparison.tsmultiplicam esses valores por peso — campo ausente virariaNaN%no dashboard.Refs #236
Mudanças
single_pass_rateemedian_review_roundspassam a opcionais emAcceptanceMetrics, eorg-summary.tsetool-comparison.tssó somam um grupo quando o valor é número. É o que precisa estar em produção antes do fix(engine): omit review-derived metrics when the reviews read fails #284.payload->pr_enrichment_degradedna viewrepo_metric_summaries(migração 023), sem trazer o payload inteiro. Em banco sem essa coluna, a consulta repete sem ela e a tabela segue preenchida, sem marcador — o mesmo fallback queorg-summary.tsjá usa.en-USept-BR; oes-EScai noen-US.Plano de Teste
npx vitest run tests/pr-degraded-repos.test.ts tests/compare-pr-degraded.test.ts tests/org-summary.test.ts tests/tool-comparison.test.ts— a lista de repositórios degradados a partir dos payloads; o mapeamento da comparação com campo válido, ausente e lixo, inclusive o fallback sempayload; e as agregações com um grupo semsingle_pass_rate, semNaNe iguais às de quem não tem o grupo — rodado em237e3b5: 29 passednpm run lint,npx tsc --noEmit,npm run test:coverage,npm run build— os passos do jobplatformdo CI — rodado em237e3b5: lint 0 erros,tscok,test:coverage417 passed, build ok4911e6d, com o rótulo corrigido conferido depois em8e83ca4), que contém este PR: plataforma rodando sobre as migrações reais e um PostgREST, com payloads do engine em sete cenários de falha, no Playwright em desktop, celular (390 px), só teclado, leitor de tela, tema escuro, pt-BR, en-US e es-ES; marcador, legenda e nota do dashboard presentes nos 7 repositórios degradados e ausentes no limpoA verificação roda fora da máquina de quem construiu: o job
platformdo CI (RFC 0029, PM-4).Impacto e Risco
NaN.prDegradedSteps, que ignora o que não reconhece.role="note"; o marcador da comparação tem texto para leitor de tela e uma legenda visível. Limitação conhecida: a lista em cards da comparação, no mobile, não mostra o marcador; ali o aviso fica no badge da página do repositório.Sobre o tamanho (RFC 0028 §2.4): 424 linhas, faixa 251–500. A tolerância e as marcas formam a parte de plataforma da mesma mudança de engine; separar a tolerância deixaria a comparação e o dashboard sem o aviso que explica os números ausentes. Este PR já é a divisão do PR de plataforma original, que passava de 500.
Plano de Rollback
git revertdo merge. Se o #284 já estiver em produção, reverter este PR traz de volta oNaN%para repositórios comreviewsdegradado — reverta os dois juntos.Referências
Autoria Assistida
🤖 Generated with Claude Code