Skip to content

fix(team): revogar e devolver acesso pintam a linha na hora - #719

Open
paulolimajr77 wants to merge 3 commits into
melgarafael:mainfrom
paulolimajr77:fix/revogacao-pinta-na-hora
Open

fix(team): revogar e devolver acesso pintam a linha na hora#719
paulolimajr77 wants to merge 3 commits into
melgarafael:mainfrom
paulolimajr77:fix/revogacao-pinta-na-hora

Conversation

@paulolimajr77

Copy link
Copy Markdown
Contributor

Achado pela tela, usando o produto: em Equipe › Membros, revogar o acesso de alguém — ou devolvê-lo — deixa a linha da pessoa parada até recarregar a página. Quem clica não vê nada acontecer e clica de novo.

Antes o defeito era invisível: o revogado sumia da lista (a rota o filtrava fora), então some-ou-não-some já era resposta suficiente. Desde que ele passa a ficar na lista com o estado mudado, uma linha que não muda é uma tela mentindo sobre o que acabou de acontecer.

Mesmo desenho de useChangeRole, que o produto já usa para troca de papel: pinta na hora, desfaz se o servidor recusar, reconcilia no fim. Sem o desfazer seria pior que não pintar — a tela ficaria dizendo "ativo" para quem o servidor recusou reativar.

O segundo commit fecha o par que faltava: revogar avisava, devolver não. É justamente a ação que se faz com receio de ter errado — sem confirmação, quem clicou não sabe se valeu.

O que medi

Nenhum teste cobria esses hooksuseRevokeMember e useReactivateMember não eram citados por arquivo de teste nenhum. Escrevi tests/unit/team-revogacao-pinta-na-hora.test.tsx (6 casos).

⚠️ O momento é o ponto. apiClient.post fica pendente de propósito nos casos de pintura: assertar o cache depois que a promessa resolve não distingue "pintou na hora" de "recarregou no fim" — que é exatamente o defeito. Quem tirar o onMutate e deixar só o invalidateQueries passaria numa asserção feita tarde demais.

O rollback é cobrado junto, e o caso de erro assere também que não houve comemoração.

Sabotagem conferida, com previsão escrita antes de rodar:

sabotagem previ caiu
onMutate fora de useRevokeMember 2 de 6 2 de 6
onSuccess (o aviso) fora de useReactivateMember 1 de 6 1 de 6

Cobre o cache, que é o que a linha lê. Não cobre pixel.

Gates na prévia do merge: typecheck 0, lint 0 erros, lint:channels ok, testes da área 29/29. Pré-voo do guia de contribuição: tudo verde.

O que NÃO medi

  • pnpm test:unit inteiro nesta branch
  • a prova em tela por Playwright — precisa de Supabase local e app buildado. O comportamento foi observado usando o produto numa VPS real, que foi como o defeito apareceu, mas isso não é uma spec.

🤖 Generated with Claude Code

paulolimajr77 and others added 3 commits September 11, 2026 14:42
Achado pela tela: a linha ficava parada ate alguem recarregar a pagina, e quem
clicava nao via nada acontecer.

Antes o defeito era INVISIVEL: o revogado sumia da lista (a rota o filtrava
fora), entao qualquer atraso parecia efeito. Agora que a linha FICA e so o
estado muda, a atualizacao precisa ser imediata — senao a tela mente sobre o
que acabou de acontecer.

Mesmo desenho de `useChangeRole`, que o produto ja usava para troca de papel:
pinta na hora, desfaz se o servidor recusar, reconcilia no fim. Sem o desfazer,
uma recusa deixaria a tela dizendo "ativo" para quem o servidor nao reativou —
pior que nao ter atualizado.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Revogar avisava; devolver nao. Achado pela tela: quem clicava ficava sem
confirmacao, e essa e justamente a acao que se faz com receio de ter errado.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
As duas correcoes deste PR mudam comportamento e nenhum teste cobria os
hooks — `useRevokeMember` e `useReactivateMember` nao eram citados por
arquivo de teste nenhum.

O momento e o ponto. `apiClient.post` fica PENDENTE de proposito nos casos
de pintura: assertar o cache depois que a promessa resolve nao distingue
"pintou na hora" de "recarregou no fim", que e exatamente o defeito. Quem
tirar o `onMutate` e deixar so o `invalidateQueries` passaria numa
asseracao feita tarde demais.

O desfazer e cobrado junto: pintar sem rollback e pior que nao pintar —
deixaria a tela dizendo "ativo" para quem o servidor recusou reativar.

Sabotado, com previsao antes de rodar:

  - `onMutate` fora de useRevokeMember    -> previ 2 de 6; caiu 2 de 6
  - `onSuccess` (o aviso) fora de
    useReactivateMember                   -> previ 1 de 6; caiu 1 de 6

Cobre o CACHE, que e o que a linha le. Nao cobre pixel.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@vercel

vercel Bot commented Sep 11, 2026

Copy link
Copy Markdown

@paulolimajr77 is attempting to deploy a commit to the rafael-maudibrasil's projects Team on Vercel.

A member of the Team first needs to authorize it.

@ecc-tools

ecc-tools Bot commented Sep 11, 2026

Copy link
Copy Markdown
Contributor

ECC Tools / Security Evidence

Commit: d1d5c3b8b7beb6ed3c012e96ca7c644d0b27aa05

Security scanner evidence required (action_required)

Detected 1 security-sensitive predictive risk signal(s) without scanner evidence.

Mode: enforce

Findings:

  • Security-sensitive changes may ship without scanner evidence: The PR touches billing, secrets, auth, webhooks, agent, or CI-sensitive surfaces without adding obvious security scanner, code scanning, or security-focused validation evidence. (2 security-sensitive paths changed; 0 security scanner or security-focused validation artifacts changed)

Touched security-sensitive paths:

  • hooks/team/useReactivateMember.ts
  • hooks/team/useRevokeMember.ts

Expected evidence:

  • Security scanner, code scanning, secret scanning, dependency/security review, or focused security regression output.
  • SARIF/code-scanning upload or equivalent pass/fail gate for the changed surface.

Check publication was denied or unavailable. An app owner must enable Checks: read and write, and the installation owner must approve the updated permission.

@ecc-tools

ecc-tools Bot commented Sep 11, 2026

Copy link
Copy Markdown
Contributor

ECC Tools / PR Risk Taxonomy

Commit: d1d5c3b8b7beb6ed3c012e96ca7c644d0b27aa05

PR taxonomy review recommended (neutral)

Detected 2 PR taxonomy bucket(s): Security Evidence, CI/CD Recommendation.

Scanned 5 changed file(s).

Roadmap taxonomy buckets:

Security Evidence

Security-sensitive changes should carry explicit scanner, code-scanning, or focused regression evidence.

Signals:

  • Security-sensitive changes may ship without scanner evidence
  • 0 security-sensitive path(s) changed

Paths:

  • .changes/revogar-e-devolver-acesso-pintam-na-hora.md
  • hooks/team/useReactivateMember.ts
  • hooks/team/useRevokeMember.ts

CI/CD Recommendation

CI, dependency, coverage, and contract signals should be routed into follow-up checks or verification work.

Signals:

  • 1 CI or workflow path(s) changed

Paths:

  • tests/unit/team-revogacao-pinta-na-hora.test.tsx

Check publication was denied or unavailable. An app owner must enable Checks: read and write, and the installation owner must approve the updated permission.

@ecc-tools

ecc-tools Bot commented Sep 11, 2026

Copy link
Copy Markdown
Contributor

ECC Tools / Reference Set Readiness

Commit: d1d5c3b8b7beb6ed3c012e96ca7c644d0b27aa05

Reference set readiness gaps detected (neutral)

Reference evidence present for 0/7 areas (0%) across 5 changed file(s).

This check is based on files changed in this PR. Repository-level readiness is still reported by /ecc-tools analyze comments and generated manifests.

Area Status Evidence / Next Step
Deep analyzer corpus Missing Add analyzer fixture, golden, benchmark, or reference-set files that can catch analyzer regressions.
RAG/evaluator comparison Missing Add retrieval or evaluator reference-set comparison fixtures with expected ranking behavior.
PR salvage/review corpus Missing Add stale-PR, review-thread, reopen-flow, or salvage reference cases for queue cleanup automation.
Discussion triage corpus Missing Add public discussion triage fixtures, golden cases, or reference sets for informational, answered, and no-response classifications.
Harness compatibility Missing Add cross-harness, adapter-compliance, or harness-audit evidence for Claude, Codex, OpenCode, Zed, dmux, and agent surfaces.
Security evidence Missing Attach security evidence such as SBOMs, SARIF, audit reports, or AgentShield evidence packs.
CI failure-mode evidence Missing Add captured CI failure logs, dry-run fixtures, or troubleshooting docs for common workflow failure modes.

Check publication was denied or unavailable. An app owner must enable Checks: read and write, and the installation owner must approve the updated permission.

@ecc-tools

ecc-tools Bot commented Sep 11, 2026

Copy link
Copy Markdown
Contributor

ECC Tools / Hosted Promotion Readiness

Commit: d1d5c3b8b7beb6ed3c012e96ca7c644d0b27aa05

Hosted promotion readiness passed (success)

No hosted promotion evidence gaps detected across 5 changed file(s); 0 corpus scenarios had matching evidence.

This check compares PR file changes against the evaluator/RAG promotion corpus in src/analyzers/fixtures/evaluator-rag-corpus.ts.
Hosted output scoring inspected 0 completed cached hosted job results.

No evaluator corpus scenarios matched this PR.

Check publication was denied or unavailable. An app owner must enable Checks: read and write, and the installation owner must approve the updated permission.

@github-actions

Copy link
Copy Markdown

Recebido, @paulolimajr77 — obrigado por isto.

Duas coisas que vão parecer erro seu e não são:

  • O check Vercel vermelho ("Authorization required to deploy") é esperado em PR de fork. A
    main faz deploy de produção e a Vercel se recusa a construir código de fora, o que está
    certo. Ele não entra no gate de merge.
  • No primeiro PR de quem nunca contribuiu aqui, os workflows ficam parados esperando
    liberação
    — política do GitHub, não sua. Enquanto isso o PR parece não ter check nenhum
    (nem o gh pr checks mostra os que estão nesse estado). Quem tria libera; você não precisa
    fazer nada.

Um mantenedor vai revisar de verdade — rodando os gates e reproduzindo o comportamento, não só
lendo o diff — e responde aqui em até um dia útil, com a medição junto, nunca com um "acho
que".

Esta mensagem é automática e não diz nada sobre o seu PR: ela é sobre o processo. O que vem
depois é pessoa.

@melgarafael

Copy link
Copy Markdown
Owner

Recebido — obrigado.

Duas coisas que vão parecer erro seu e não são:

  • O check Vercel vermelho ("Authorization required to deploy") é esperado em PR de fork. A main faz deploy de produção e a Vercel se recusa a construir código de fora, o que está certo. Ele não entra no gate de merge.
  • Os workflows ficam parados esperando liberação no primeiro PR de quem nunca contribuiu — política do GitHub, não sua. Acabei de liberar, o CI já está rodando.

Um aviso útil: a main andou doze PRs hoje e a v1.19.0 saiu. Se o seu ficar com conflito por causa disso, o conserto é do nosso lado — não precisa correr atrás. O mesmo vale para número de migration colidido e fragmento de release faltando.

Vou revisar de verdade — rodando os gates e reproduzindo o comportamento, não só lendo o diff — e volto com o resultado. Se eu achar algo, venho com a medição junto, nunca com um "acho que".

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants