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
UsuarioLogadoRepositorynão foi completamente lido — comportamento de persistência de usuário logado é parcialmente inferido
repertorios/edge-cases EC-04
ordem_musicasdessincronizada — sem tratamento defensivo; IDs órfãos podem resultar em itensundefinede quebra de tela- Pergunta:
questions.md→ Pergunta 7 (respondida)
configuracoes
ConfiguracoesScreen.tsxnã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
carregarLivrorejeitado (GAP-05) - [ ] Prioridade Alta — Implementar sanitização defensiva para
ordem_musicascom IDs órfãos (GAP-06)
Próximos passos
- Revisar e priorizar os GAPs remanescentes em
docs/reversa/gaps.md - Se desejar, acionar
/reversa-codingpara transformar os GAPs priorizados em plano executável - Em re-extrações futuras, rodar o ciclo completo para acompanhar evolução da confiança