Skip to content

Relatório de Confiança — canta-igreja

Gerado pelo Revisor (Reversa) em 2026-05-11 doc_level: detalhado | Revisão cruzada: não realizada (Codex indisponível) 38 unidades de spec revisadas (28 sub-units + 10 módulo-raiz)


Resumo Geral

Nível Quantidade Percentual
🟢 CONFIRMADO 143 84%
🟡 INFERIDO 23 13%
🔴 LACUNA 5 3%
Total 171 100%

Confiança geral: 90% (soma: 🟢 + metade dos 🟡 ÷ total)


Por Módulo

Módulo 🟢 🟡 🔴 Confiança Observação
musicas 30 4 1 91% EC-01 FTS5 string vazia não confirmado
repertorios 35 4 1 93% EC-04 sem sanitização defensiva
livros 15 3 2 83% EC-02 sem handler rejected confirmado
biblioteca 20 3 2 86% fluxo de exemplar corrigido; risco crc32 segue
sugestao-repertorio 13 1 1 90% navegação pós-criação confirmada
liturgia 7 2 1 80% estados loading/error/empty confirmados
auth 9 0 1 90% UsuarioLogadoRepository não lida
configuracoes 12 2 1 87% ConfiguracoesScreen não lida
youtube-player 10 2 0 92% resetPosition e YoutubeBarPlayerView parciais
arch 8 2 0 90% aliases simultâneos inferidos

Lacunas Críticas 🔴

Itens que seguem críticos após processar todas as respostas do usuário:

auth

  • UsuarioLogadoRepository não foi completamente lido — comportamento de persistência de usuário logado é parcialmente inferido

repertorios/edge-cases EC-04

  • ordem_musicas dessincronizada — sem tratamento defensivo; IDs órfãos podem resultar em itens undefined e quebra de tela
  • Pergunta: questions.md → Pergunta 7 (respondida)

configuracoes

  • ConfiguracoesScreen.tsx não foi lido — a tela de configurações do usuário (UI) é 🟡

Reclassificações desta sessão

De Para Afirmação Evidência
🟡 🟢 importar-repertorio: "API de leitura de repertórios é pública" Api.getRepertorio — chamada GET sem token (src/util/Api.ts:130-133)
🔴 🟢 disableExemplarObra com bind correto de id_obra BibliotecaRepository.registrarObra ([obra.id_obra])
🔴 🟢 LivrosSelect.allIds apontando para o slice correto LivrosSelect.allIds (it.livros.ids)
🔴 🟢 Estados de liturgia confirmados em LeituraDiaView isLoading skeleton, isError retry, liturgia===null empty state
🔴 🟡 ordem_musicas órfã sem tratamento defensivo repertorio.ordem_musicas.map(it => rowById[it])

Inconsistências detectadas

Contradição interna — livros/listar-livros

  • RF-04 (Should): "Não recarregar lista se livros já estão no store"
  • Critério Gherkin: "dispatch de carregar é re-executado (não há guard de idempotência)"
  • O RF descreve o comportamento desejado; o Gherkin descreve o comportamento atual. A distinção deve ser explicitada.
  • Ver: gaps.md → GAP-04

Units com cobertura estrutural incompleta

As seguintes units têm conteúdo correto mas estão abaixo do padrão detalhado (sem tabela RF + Gherkin):

Unit Situação
auth/autenticar Apenas regras de negócio e rastreabilidade
auth/deslogar Apenas regras de negócio e rastreabilidade
configuracoes/alterar-tema Apenas regras de negócio e rastreabilidade
configuracoes/alterar-configuracoes-musica Apenas regras de negócio e rastreabilidade
youtube-player/modo-mini Apenas regras de negócio (sem RF completo)
arch/inicializar-banco Apenas regras de negócio e rastreabilidade
arch/attach-detach Apenas regras de negócio e rastreabilidade

Recomendações

  • [ ] Prioridade Média — Expandir as 7 units com cobertura estrutural incompleta com tabelas RF e Gherkin (GAP-07)
  • [ ] Prioridade Baixa — Confirmar tratamento de carregarLivro rejeitado (GAP-05)
  • [ ] Prioridade Alta — Implementar sanitização defensiva para ordem_musicas com IDs órfãos (GAP-06)

Próximos passos

  1. Revisar e priorizar os GAPs remanescentes em docs/reversa/gaps.md
  2. Se desejar, acionar /reversa-coding para transformar os GAPs priorizados em plano executável
  3. Em re-extrações futuras, rodar o ciclo completo para acompanhar evolução da confiança