Skip to content
Commit ec49f639 authored by Igor Matheus's avatar Igor Matheus
Browse files

MG-8: a primeira divergência real da migração



290 casos verdes no Firebase. Cobertura com o id em 281 de 420 (66%). Entram 30
casos de paridade de fluxo — criação, regras, convite, papel, saída e ciclo de
vida — com o id de origem preservado.

CV-4-01: quem saía do bolão continuava no ranking

No NestJS o ranking era somado na leitura a partir de quem estava ativo, então
sair tirava a pessoa da lista na hora. No Firestore ele é agregado materializado,
e a classificação só era reescrita na apuração — quem saía continuava aparecendo
até o próximo jogo terminar, que pode ser semana que vem ou nunca, porque bolão
encerrado não tem próximo jogo.

Eram dois defeitos empilhados, e o segundo é o que dá o susto: a mudança de
vínculo não disparava recálculo, e o recálculo não apagava a linha de quem saiu —
ele reescrevia a de cada ativo, e o que não é reescrito fica. Agregado
materializado só está correto quando alguém cuida do que sobra.

É o tipo de coisa que a migração introduz sem avisar: a regra não mudou, o lugar
mudou, e o lugar novo tem uma propriedade que o antigo não tinha — memória.

Duas armadilhas de cenário viraram regra do arquivo

Convidar depois do apito é recusado, corretamente. Então bolão com jogo já
começado e convidado dentro precisa ser montado na ordem da vida real: entra todo
mundo, e depois o jogo começa. E cada caso ganhou o seu próprio campeonato, porque
o calendário é global e sobrevive ao bolão — a mesma lição de 07/08, agora
estrutural em vez de anotada.

Co-Authored-By: default avatarClaude Opus 5 (1M context) <noreply@anthropic.com>
parent b595b538
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment