Skip to content

Arch — Casos de Borda

Gerado pelo Writer (Reversa) em 2026-05-11

EC-01 — Duas chamadas simultâneas a Banco.instance() na inicialização

Descrição: Dois repositórios chamam Banco.execute() antes de database estar definido.

Comportamento esperado: 🟢 initializingPromise deduplication garante que apenas uma abertura ocorre; ambas as chamadas aguardam a mesma Promise.


EC-02 — Migration falha no meio da sequência

Descrição: SQL de migration v11 falha — user_version permanece em v10.

Comportamento esperado: 🟡 Próximo lançamento tentará v11 novamente. Sem rollback automático — tabela pode estar em estado parcial.

Risco: 🔴 Migrações não transacionais podem deixar schema inconsistente.


EC-03 — Asset database com schema mais antigo que o esperado

Descrição: cantaIgreja.db do bundle tem user_version = 7 mas o app espera executar a partir de v8.

Comportamento esperado: 🟢 runMigrations executa v8, v9, ..., v15 em sequência até atingir versão atual.


EC-04 — ATTACH com alias contendo caracteres inválidos (web)

Descrição: Código malicioso tenta usar '; DROP TABLE-- como alias.

Comportamento esperado: 🟢 assertSafeSqliteIdentifier lança Error: alias inválido — ATTACH bloqueado.

Rastreabilidade: Banco.tsWebBancoHooks.assertSafeSqliteIdentifier


EC-05 — DETACH não chamado após erro no import

Descrição: Erro dentro do bloco try de importarSugestoes ou BibliotecaRepository.

Comportamento esperado: 🟢 Ambos os repositórios usam finally para garantir detach — alias removido mesmo em caso de erro.


EC-06 — Web OPFS indisponível no browser

Descrição: Browser antigo sem suporte a OPFS (Origin Private File System).

Comportamento esperado: 🔴 openAsync falha silenciosamente ou lança erro não tratado — app não inicializa banco.

Rastreabilidade: Workaround em /memories/repo/op-sqlite-web-attach-workaround.md