Contexto
O br_danfe usa o Qlty Cloud no CI (.github/workflows/config.yml) desde f738479 ("Setup Qlty", PR #254, 2025-07-08): o job rspec instala o CLI (curl https://qlty.sh | sh) e publica a cobertura gerada pelo SimpleCov (qlty coverage publish coverage/coverage.json), autenticado.
No facil123, o qlty seguiu um caminho parecido e foi descontinuado:
616520a9c5 (PR #17877, 2025-06-02) — setup inicial (linters + publish de cobertura pro dashboard externo qlty.sh).
014793d10c (PR #20352, 2026-01-30) — linters do qlty (rubocop/eslint/prettier) desativados por serem redundantes com o que já rodava nativamente no CI.
197daebe8d (PR #23291, 2026-07-04) — remoção completa. Motivo, na própria descrição da PR: "O gate de cobertura e o comentário na PR já são feitos pelo couve no bloco Coverage (--fail-on-low-coverage + relatório em Markdown). O qlty apenas publicava os mesmos dados no dashboard externo qlty.sh."
Ou seja: no facil123 o qlty foi cortado porque o couve (gem interna, usada desde 2023) já fazia o gate de cobertura de arquivos alterados e o comentário na PR — o qlty só duplicava a publicação de dados num dashboard que ninguém mais consultava.
O problema real
Com o ecossistema qlty sem uso ativo, o projeto br_danfe no Qlty Cloud foi pausado. qlty coverage publish trata "paused project" como erro fatal (HTTP 400), e isso quebra o job rspec inteiro mesmo quando a suíte passa 100%.
Confirmado ao rerodar as PRs #280 e #281:
Ou seja: os testes estão passando, o CI está vermelho só por causa do step de publish do qlty.
O mesmo padrão de config (curl https://qlty.sh | sh + qlty coverage publish no mesmo bloco do bundle exec rspec) foi encontrado em outros repositórios do ecossistema:
nf-e — quebrado direto na branch master desde 2026-07-23 (mesma assinatura: instala o CLI, falha no publish, exit code 99).
br_documents — mesmo padrão de config, sem push desde 2026-04-09 (antes da pausa), deve quebrar no próximo push.
facil123-connect (Java) — já migrou para mvn clean test + madrapps/jacoco-report, comentando cobertura na PR sem depender do qlty.sh (commit e5e17ac, ver docs/decisoes/0002-gate-de-cobertura-de-linha-no-maven.md).
Objetivo
Remover a integração com o qlty do CI do br_danfe, restaurando o CI verde sem depender de um serviço externo pausado/sem manutenção.
O que muda
.github/workflows/config.yml — remover os dois steps do job rspec que instalam e publicam no qlty (curl https://qlty.sh | sh e ~/.qlty/bin/qlty coverage publish coverage/coverage.json), voltando o step para rodar só bundle exec rspec.
- Remover o secret
QLTY_COVERAGE_TOKEN do repositório (settings do GitHub), já que deixa de ser usado.
- Avaliar se
spec/spec_helper.rb ainda precisa do formatter JSON do SimpleCov (simplecov-json, adicionado em af3540d só para alimentar o qlty coverage publish) ou se pode voltar a gerar só HTML.
O que NÃO muda
- Decisão sobre implementar um substituto tipo
couve (gate de cobertura por arquivo alterado + comentário na PR) fica para uma discussão/issue separada — este issue é só a remoção do qlty para destravar o CI.
nf-e e br_documents não são tratados aqui; abrir issues equivalentes nesses repositórios depois.
- Nenhuma mudança de comportamento nos testes em si —
rubocop e rspec continuam rodando como hoje.
Contexto
O
br_danfeusa o Qlty Cloud no CI (.github/workflows/config.yml) desdef738479("Setup Qlty", PR #254, 2025-07-08): o jobrspecinstala o CLI (curl https://qlty.sh | sh) e publica a cobertura gerada pelo SimpleCov (qlty coverage publish coverage/coverage.json), autenticado.No
facil123, o qlty seguiu um caminho parecido e foi descontinuado:616520a9c5(PR #17877, 2025-06-02) — setup inicial (linters + publish de cobertura pro dashboard externo qlty.sh).014793d10c(PR #20352, 2026-01-30) — linters do qlty (rubocop/eslint/prettier) desativados por serem redundantes com o que já rodava nativamente no CI.197daebe8d(PR #23291, 2026-07-04) — remoção completa. Motivo, na própria descrição da PR: "O gate de cobertura e o comentário na PR já são feitos pelo couve no bloco Coverage (--fail-on-low-coverage+ relatório em Markdown). O qlty apenas publicava os mesmos dados no dashboard externo qlty.sh."Ou seja: no
facil123o qlty foi cortado porque ocouve(gem interna, usada desde 2023) já fazia o gate de cobertura de arquivos alterados e o comentário na PR — o qlty só duplicava a publicação de dados num dashboard que ninguém mais consultava.O problema real
Com o ecossistema qlty sem uso ativo, o projeto
br_danfeno Qlty Cloud foi pausado.qlty coverage publishtrata "paused project" como erro fatal (HTTP 400), e isso quebra o jobrspecinteiro mesmo quando a suíte passa 100%.Confirmado ao rerodar as PRs #280 e #281:
remove-nfce-pdf-renderer-from-br-danfe):292 examples, 0 failures→ depoisHTTP Error 400: https://qlty.sh/api: "Coverage uploads are not allowed for paused projects"→exit code 99.remove-nfce-pdf-renderer-contract):261 examples, 0 failures, 99.51% de cobertura → mesmo erro →exit code 99.Ou seja: os testes estão passando, o CI está vermelho só por causa do step de publish do qlty.
O mesmo padrão de config (
curl https://qlty.sh | sh+qlty coverage publishno mesmo bloco dobundle exec rspec) foi encontrado em outros repositórios do ecossistema:nf-e— quebrado direto na branchmasterdesde 2026-07-23 (mesma assinatura: instala o CLI, falha no publish,exit code 99).br_documents— mesmo padrão de config, sem push desde 2026-04-09 (antes da pausa), deve quebrar no próximo push.facil123-connect(Java) — já migrou paramvn clean test+madrapps/jacoco-report, comentando cobertura na PR sem depender do qlty.sh (commite5e17ac, verdocs/decisoes/0002-gate-de-cobertura-de-linha-no-maven.md).Objetivo
Remover a integração com o qlty do CI do
br_danfe, restaurando o CI verde sem depender de um serviço externo pausado/sem manutenção.O que muda
.github/workflows/config.yml— remover os dois steps do jobrspecque instalam e publicam no qlty (curl https://qlty.sh | she~/.qlty/bin/qlty coverage publish coverage/coverage.json), voltando o step para rodar sóbundle exec rspec.QLTY_COVERAGE_TOKENdo repositório (settings do GitHub), já que deixa de ser usado.spec/spec_helper.rbainda precisa do formatter JSON do SimpleCov (simplecov-json, adicionado emaf3540dsó para alimentar oqlty coverage publish) ou se pode voltar a gerar só HTML.O que NÃO muda
couve(gate de cobertura por arquivo alterado + comentário na PR) fica para uma discussão/issue separada — este issue é só a remoção do qlty para destravar o CI.nf-eebr_documentsnão são tratados aqui; abrir issues equivalentes nesses repositórios depois.rubocoperspeccontinuam rodando como hoje.