MG-8 (parcial): o mapa que impede esta story de ser fingida
228 casos verdes no Firebase (16 arquivos). Entram 34 casos de paridade com o id
de origem preservado e a medição de custo.
O mapa é script, não tabela
docs/cobertura.py varre os planos da fase 1 e diz onde cada caso é verificado
hoje. Existe como script porque o risco escrito na própria story é "é a story
mais fácil de fingir que foi feita", e tabela escrita à mão envelhece em silêncio.
O critério é rigoroso de propósito: só conta como verificado quando o id aparece
num teste da stack nova. Resultado honesto: 188 de 420 (44%).
Os 231 restantes não são um bloco só, e tratá-los como um seria o erro que a
story avisa: casos de tela cujo teste existe e passa mas não cita o id; casos cujo
mecanismo deixou de existir (rotação de refresh, rate limit de login, "não há
recuperação de senha") — reescritos e registrados um a um no mapa, nunca
descartados em silêncio; e o grupo que falta reexecutar, onde CV-2 e PP-8 estão em
zero.
34 casos reexecutados com o id original
PP-7-05 continua sendo PP-7-05. Foi escolhido primeiro o grupo de sigilo, prazo,
papel e autorização — o que sumiria primeiro se "os testes passam" bastasse como
prova. Onde o meio mudou, o caso diz qual é: no NestJS recusava um if num service,
aqui recusa o banco ou a callable. Para quem chama a API direto a diferença é
grande — não existe mais resposta para filtrar.
Custo medido, não estimado
Contador em volta do Firestore, rodando os fluxos de verdade. O ranking geral
custa 50 leituras para uma página de 50 num bolão de 60: uma por linha, não por
participante nem por palpite. Somar na leitura seria 60 x 10 x 38 documentos por
abertura de tela. Um bolão de 60 pessoas gasta ~5.150 leituras por rodada, com
folga de 10x no free tier.
Dois testes meus dependiam de banco recém-criado: contavam avisos e participantes
em bolão de id fixo, e o emulador que fica de pé para o teste em device acumula a
execução anterior. Passaram a criar bolão e participante novos a cada rodada.
Seguem travando a paridade de AC-2 as duas decisões do dono: email enumeration
protection e Identity Platform.
Co-Authored-By:
Claude Opus 5 (1M context) <noreply@anthropic.com>
parent
ec68ccd5
Please register or sign in to comment