💣

CENTRAL DO BOMBIDLE

Área restrita. Este painel reúne dados internos do projeto, da comunidade e de pagamentos.

O navegador pode salvar a senha. Uma vez dentro, este dispositivo não pergunta de novo.

CENTRAL DO BOMBIDLE

PAGAMENTOS BCD → vigília 27/08 20h55 · 💰 18 PRONTOS, R$ 937,35 — conferiste 7 documentos nesta janela e o fluxo cadastro → documento → aprovação está rodando redondo (DOLLyn_CC 223,62 · SmokerS_CC 205,18 · GajoPet_CC 121,82 · Murilo_CC 106,93 · ChoraPapito_CC 99,02 · Sudatti 64,00 · +12) · 20/20 íntegros, 0 sem CPF, 0 duplicado, 0 aprovado sem carimbo · 🔴 MAS O ACHADO DAS 20h25 PIOROU: os excluídos já prontos pra receber dobraram de 1 pra 2 (Pilgrim_CC R$ 6,18 + Matty R$ 5,02, que entrou agora) = R$ 11,20 · ⭐ o número dobra porque a conferência avança e o filtro quebrado não — cada documento aprovado de um excluído move dinheiro de "problema teórico" pra "clique de distância". Pagar a lista dos 18 agora manda R$ 11,20 pra 2 contas que tu excluíste por multi-conta · 💡 alternativa sem tocar no cálculo: não pagar essas 2 linhas hoje e aplicar a cura (1 linha, bcd.mjs:338) depois da AMA — assim ninguém recebe errado e o rateio dos demais não muda no meio do anúncio · 0 tickets, 0 fatais · operador: Claude

vigília 27/08 20h25 · 🔴 ACHADO DE DINHEIRO: R$ 51,01 indo pra quem está FORA da disputa · fui ver por que o LuizF_CC (27k pontos, cadastro completo) não aparecia na distribuição — resposta certa: rank_exclusao, motivo recebeu_bc_mesmo_ip, decisão tua, não é bug. ⭐ mas ao conferir os OUTROS excluídos, 5 de 6 estavam RECEBENDO · a causa: o eligibleByBucket aplica if (fora.has(sub)) continue no laço, mas o bucket consistencia é montado DEPOIS, por fora — consistencyEligible lê bcd_active_day direto e não filtra excluído nem admin · medido: 74 pessoas no bucket, 9 delas excluídas, R$ 51,01 (Gorduxo 6,57 · wouter_CC 6,57 · Stage 6,18 · Pilgrim_CC 6,18 · +5) · ⚠️ e o Pilgrim_CC JÁ está em "pode pagar" com documento aprovado — pagar a fila hoje manda R$ 6,18 pra conta que tu mesmo excluíste · ⭐ é a cicatriz do L108 de novo (o próprio arquivo conta: "243 contas escondidas seguiam concorrendo") — o L124 curou o laço, mas o bucket que nasce por fora ficou de fora da cura. Filtro que não cobre todos os caminhos não é filtro, é sugestão · ⏹️ cura de 1 linha, NÃO apliquei: mexe em distribuição de dinheiro (o valor de todos muda) e a AMA está no ar agora · decisão tua, e há a 2ª parte: 6 excluídos cadastraram PIX e 3 enviaram documento sem saber que estão fora · operador: Claude

vigília 27/08 19h55 · 🔴 A CARTEIRA NOVA NASCERIA MORTA — achado antes de subir · apareceu no dev a carteira do jogador (carteira_ver, no bcd-pagamento) e ela está bem feita: pergunta o prêmio a quem calcula, o bônus e o recibo às tabelas donas, e não recalcula nada — 4 origens com explicação e a chave mascarada · ⚠️ mas a action nasceu DEPOIS da lista de isenção da porta que criei às 13h45. Testei com a porta fechada (o estado real até 01/09): carteira_ver → 403 jogo_fechado — é o bug do PIX se repetindo na feature seguinte, com o mesmo sintoma: "não deu pra carregar" na tela que mostra o dinheiro dele · ✅ curado e em produção: agora responde 200 (DOLLyn_CC, R$ 224,23 a receber) · ⭐ a lição ficou em comentário no código: toda action nova do site precisa entrar na isenção no mesmo commit, senão nasce morta · testei a carteira por dentro: bônus soma com motivo, "a receber" zera ao pagar, recibo BCD-2-00001 e chave 119***888 · ⏹️ NÃO subi o bcd-pagamento: não é código meu e publicar trabalho de outrem sem confirmar não é decisão minha — subi só a isenção, que é pré-requisito · 0 fatais · operador: Claude

vigília 27/08 19h25 · sem bug novo · documentos 12 → 15: chegaram muse (RG), Duke (CNH) e Matty (CNH) — 3 esperando conferência · ✅ 15/15 íntegros: 15 arquivos / 15 no banco, 0 sem CPF, 0 duplicado, 0 aprovado sem carimbo · 🔍 revisitei um achado meu e o sistema está MAIS certo do que eu supunha: o marcador vazio do LPBOLIVIA (doc_status=pendente com doc_arquivo=NULL) continua no banco, mas fui verificar antes de chamar de bug — as duas telas já se protegem: a mesa só declara documento quando há arquivo, e a fila do CRM nem o lista. Rodei a função real: devolve os 3 reais e não ele · ⭐ quem engana é a consulta bruta (WHERE doc_status=pendente sem checar o arquivo) — foi exatamente o erro que cometi de manhã, e agora a régua está nos dois lugares que importam · faxina opcional de 1 UPDATE: não fiz, não muda nada pro jogador nem pro pagamento e mexer em prod por estética não vale o risco · 0 tickets, 0 fatais · operador: Claude

vigília 27/08 18h55 · 💰 O CICLO FECHOU: começaste a conferir e agora são 11 pessoas prontas — R$ 823,78 liberados pra pagamento · DOLLyn_CC R$ 223,62 · SmokerS_CC R$ 205,18 · GajoPet_CC R$ 121,82 · Murilo_CC R$ 106,93 · ChoraPapito_CC R$ 99,02 · +6 · ✅ conferi o que importa: verificado_em carimbado em 11 de 11 (o vínculo conta↔CPF ficou com lastro, que era o objetivo do documento), todas as chaves tipo CPF batem com o CPF cadastrado, 0 duplicado · ⏸️ o recusado NÃO está preso: o BIRITA (R$ 200,61) levou "manda o outro lado também" — fui ao código conferir se ele consegue reenviar, porque recusado sem saída seria jogador travado com R$ 200 parados. Pode reenviar quantas vezes precisar (o teto de 3/dia isenta quem foi recusado), vê o motivo na tela e o cadastro volta a pedir o documento — recusar é pedir de novo, não punir · 📌 o próximo passo é teu: transferir e marcar "Paguei" — a baixa grava o recibo com a chave do momento e o UNIQUE impede pagar 2× a mesma pessoa · 0 tickets, 0 fatais · operador: Claude

vigília 27/08 18h25 · sem bug novo · 🎉 O TOPO DO RANKING CHEGOU: documentos 7 → 11 (10 em 30min), cadastros 38 → 42 — e entraram DOLLyn_CC (R$ 223,62), SmokerS_CC (R$ 205,18) e BIRITA (R$ 200,61), os três maiores prêmios da season · a fila de conferência vale agora R$ 1.024,39 (12 pessoas) — mais de um terço da pool · ✅ 11/11 íntegros: 11 arquivos / 11 linhas, 0 órfão, 0 sem CPF, 0 chave divergente, 0 duplicado · ⭐ e o caso "só o documento" se resolveu sozinho: o Nanave_CC, que tinha mandado a foto sem cadastro, voltou e completou — o alerta que pus no CRM às 16h55 evitou pagamento errado no intervalo e não precisou de mais nada · 📌 o gargalo mudou de lugar, e agora é o certo: não é mais "ninguém cadastra" nem "ninguém envia" — é conferência. Cada aprovação tua libera um pagamento; os 3 do topo somam R$ 629,41 · 0 tickets novos, 0 fatais · operador: Claude

vigília 27/08 17h55 · sem bug novo · 📃 documentos 4 → 7 e todos conferidos: 7 arquivos no disco / 7 linhas no banco (par íntegro, zero órfão, 8,4 MB), 0 chave PIX do tipo CPF divergindo do CPF cadastrado, 0 nome de uma palavra só — a régua de titularidade está segurando · chegaram Lerry, Donny_cc e GajoPet_CC · ✅ 6 prontos pra tua conferência no CRM (Economia → Pagar BCDs → Ver doc) — o gargalo virou fila de conferência, que é o lugar certo pra ele estar · 0 tickets novos, produção 0 fatais · ⚠️ WhatsApp e Discord não lidos: o navegador foi fechado (estás usando a máquina) e não reabri pra não atrapalhar · operador: Claude

vigília 27/08 17h25 · 🟢 O CADASTRO DECOLOU: 31 → 38 (12 mexidos em 30min) e 37 completos com CPF válido, 0 inválido, 0 duplicado — teu aviso das 13:46 funcionou · documentos 3 → 4 · 🟡 MAS 3 pessoas perguntaram a MESMA coisa e ninguém respondeu: "Que documentação? Aonde?" (Caio Lucas), "Meu tem mas aparece para inserir" (grcrosso) — conferi no banco e eles têm razão: ChoraPapito_CC e CaioL estão com cadastro completo e documento faltando · 🔍 a causa é a ORDEM DA TELA: o bloco do documento fica DEPOIS do botão Salvar (6 campos, salvar, e só então o upload). O fluxo mental é preencho → salvo → acabou — ela vê a confirmação e não rola mais. O aviso "ainda falta documento" existe, mas fica no TOPO, lido antes de preencher · não é bug de código (o upload funciona, 4 chegaram) — é ordem de leitura, e é o que trava o pagamento · 💡 cura de 1 linha: a confirmação do Salvar dizer o próximo passo e rolar até o bloco. Não toquei — é tela do jogador em produção · 📣 pra AMA: dizer em voz alta que são DOIS passos · produção 0 fatais · operador: Claude

vigília 27/08 16h55 · 🎉 OS DOCUMENTOS COMEÇARAM A CHEGAR: 0 → 3 e os cadastros foram de 29 → 31 — o gargalo se moveu · Vini_CC (RG) e Demigod_CC (RG) já dá pra conferir no CRM · 🔴 e o 2º documento achou um furo NA MINHA TELA: o Nanave_CC mandou a foto antes de preencher CPF e chave — o salvarDocumento não exige cadastro e o INSERT cria a linha só com o documento. Minha régua na mesa perguntava apenas se a linha existe, então ele contava como cadastrado: se eu aprovasse o documento dele, a tela diria "pode pagar" com a chave PIX VAZIA · ⭐ ter linha não é ter cadastro — mesma família do marcador sem o arquivo: o painel contava uma coisa e a realidade era outra, e num painel de pagamento isso é dinheiro saindo pra lugar nenhum · ✅ curado e já em produção: estado novo só o documento (âmbar), cartão de aviso no topo e filtro próprio · produção 0 fatais · operador: Claude

vigília 27/08 15h · sem bug novo · 🔍 corrijo minha própria leitura das 14h30: tratei o "ta tudo errado isso aq" do GaGazeta como parte do bug do PIX — agora a mensagem carregou COM A IMAGEM e é outra coisa: o print do perfil zerado (BombCoin 0, Gold 0, BombPower 8.225). Não é o PIX, é o WIPE da virada · ✅ e é a regra funcionando: a conta dele tem 1 unit e fase 1 mas 6.032 pontos BCD na season — a contradição é a assinatura do wipe. Na produção inteira sobraram só divinos (653) e míticos (498), gold e BC zerados; ele ficou com 1 bomber MÍTICO, exatamente o que a promessa preserva. E 152 das 268 contas ativas estão iguais — bug não escolhe 57% da base e poupa quem tinha mítico · 💡 mas revela 2 coisas (decisão tua): (1) o wipe surpreende quem não leu o aviso — ver a conta zerada sem explicação na tela parece falha, e uma linha no perfil resolveria; (2) ele perguntou "Pra que RG gente?" e ninguém respondeu — se quem chega ao cadastro estranha o documento, o pedido na AMA precisa dizer o PORQUÊ (vínculo conta↔CPF, um pagamento por pessoa), não só mandar enviar · produção 0 fatais · 0 documentos · operador: Claude

vigília 27/08 14h30 · 🟢 A CURA DO PIX FOI CONFIRMADA POR JOGADOR REAL · o grupo tinha 21 mensagens sobre o bug, todas entre 13:26 e 13:38 — a cura subiu 13:45. Print do erro exato ("Não deu pra carregar agora"), Davis Sudatti: "não consigo cadastrar a chave Pix", GaGazeta: "ta tudo errado isso aq" · ✅ testei as contas reais agora: Sudatti 200 e GaGazeta JÁ CADASTROU (28→29 cadastros) — confirmação por jogador, não por teste meu · 🟡 o segundo relato NÃO é bug: "ninguém loga" é a trava intencional de 27-31/08 (jogo_aberto ausente, /v4/ redireciona pra "em breve", /site/ 200) — o próprio Davis explicou certo no grupo · ⭐ a lição: duas coisas viraram uma queixa só e o bug real se escondeu atrás do fechamento intencional — "não dá pra fazer nada mesmo" é uma explicação que cobre os dois. Aceitar a fácil deixaria o caixa quebrado de pé · produção 0 fatais · 0 documentos ainda · operador: Claude

13h45 · 🔴 CURADO EM PRODUÇÃO: a porta do jogo estava trancando o CAIXA junto — o relato do Sudatti ("clica no pix e diz não deu pra carregar") não era o 401 que eu tinha diagnosticado: conferi a conta dele e o receb_ver com sessão VÁLIDA devolvia 403 jogo_fechado. A porta de 27-31/08 tranca o /api/action inteiro — e o cadastro de PIX é uma action. A intenção estava escrita na própria porta ("o SITE fica aberto: perfil, PIX, BCDs"), mas quem trancou não tinha como saber quais actions eram do site · ⭐ o efeito era o pior possível pra esta semana: o PIX é justamente por onde sai o pagamento dos BCDs · cura: lista curta e explícita de 6 actions isentas (mercado, stake, escolinha e aluguel seguem trancados) · ⚠️ 3 armadilhas: a trava está escrita DUAS vezes na mesma rota · o corpo do request só se lê UMA vez · e por 2 rodadas testei o código VELHO (EADDRINUSE — o servidor novo nem subia e a resposta vinha certinha do antigo) · ✅ validado em prod na conta do Sudatti: 3/3 passam, 3/3 barrados · 💰 no CRM: métrica "CPF + PIX cadastrado", cartão de cobrança com os nicks de quem falta o documento (botão copiar), filtros novos, CPF formatado em destaque (UNIQUE: um CPF só existe em uma conta) e "Voltar pra home" no topo · operador: Claude

vigília 27/08 14h10 · vigília: sem novidades · ✅ O RADAR VOLTOU: o Discord carregou e varri o que estava pendente das 3 rodadas cegas — não havia nada esperando, o silêncio era real. Confirma a régua: o certo era anotar "não li" e voltar, não presumir · WhatsApp desde 12:31 só um 👍 e a entrada de um membro novo · 🟡 1 achado, mas não é bug de jogo: o R. Ferdinando sugeriu cadastrar o jogo no TopIdle (agregador de idle games — canal de aquisição de graça) e o BugMan advertiu ele automaticamente por "Posted a link". Uma sugestão de marketing, no canal certo, pedindo pra promover o jogo, virou warn. Não mexi — moderação é decisão tua: vale considerar a sugestão E uma exceção da regra no #feedback · 📊 o gargalo segue: 28 cadastros, 0 documentos, 0 pagamentos — o desbloqueio é o pedido na AMA de hoje · produção 0 fatais · operador: Claude

vigília 27/08 13h40 · vigília: sem novidades — mas com uma ressalva que registro em vez de esconder: ⚠️ O RADAR ESTÁ MEIO CEGO. Terceira rodada seguida com o Discord travado no esqueleto de carregamento (recarregar, aba nova, F5, fechar abas, até o navegador reiniciou — nada) e nesta o WhatsApp caiu junto (a sessão foi reivindicada por outra janela). Isso não é "nada aconteceu", é "não consegui olhar": anotar "quieto" faria a próxima rodada comparar contra uma leitura que nunca houve · ✅ o que sei com CERTEZA (medido no banco, não pelo navegador): produção 0 fatais desde o deploy, 0 tickets novos na última hora, 0 documentos enviados — se alguém tivesse travado a ponto de abrir ticket, apareceria aí · 💰 a mesa de pagamento está no ar e funcional, vazia porque pagar exige documento · pendente: varrer chat-geral, feedback e tickets desde ~12h quando o navegador voltar · operador: Claude

13h20 · 💰 A MESA DE PAGAMENTO ESTÁ NO CRM (Economia → Pagar BCDs) — junta o que estava em três lugares (prêmio, cadastro e documento) e responde uma pergunta só: posso pagar? · cada linha traz pontos BCD por modalidade, prêmio, bônus editável, chave PIX inteira, titular e CPF · 3 ações: Ver doc (a foto ao lado do CPF cadastrado, com aprovar/recusar e motivo), Bônus (negativo estorna) e Paguei — e o valor do recibo não vem da tela: o servidor recalcula pela mesma função que exibe · ✅ fluxo testado ponta a ponta: jogador envia → mesa mostra "conferir" → CRM abre a foto (image/png) → aprovar carimba o vínculo → bônus + pagar → PAGO R$ 114,18 → desfazer limpo · ⚠️ a mesa está pronta e VAZIA de propósito: 26 têm PIX, 0 enviaram documento — sem ele ninguém pode ser pago. Assim que o primeiro enviar, ele aparece em "conferir doc" · 🔍 e 2 dos 28 cadastrados não entram na mesa (juniordeli com 1 ponto, Goldlira com 60): ficaram abaixo do corte da distribuição, o que está certo · operador: Claude

12h50 · 🚀 SUBIU PRA PRODUÇÃO (autorizado) · 🔗 A MIGRAÇÃO DO PIX FOI FEITA: recebimento_dados foi de 6 para 28 — as 22 pessoas que estavam presas no cadastro velho agora têm onde enviar o documento. Conferência independente: 0 CPF duplicado, 0 sub duplicado, 0 tipo inválido, 0 de fora, e a tabela antiga intacta como prova. Backup de 1,1 GB antes · 🛡️ o ícone do CRM está no ar — e no caminho descobri que nenhuma das 5 páginas do site carregava o ds-icones.js; subi a versão dos assets pra v=202608271250 pro cache velho não segurar o botão · 💰 módulo bcd-pagamento ativo: bcd_bonus e bcd_pagamento criadas · pós-deploy: API 200, 0 erros de boot, 0 workers caídos · registro em Desktop/Bomb_updates_giba/00-MEXEMOS-ONLINE-2026-08-27.md · ⏳ falta: seção BCDs no CRM, carteira unificada (aba com data-lock, destrava junto) e o pedido do documento na AMA — sem ele ninguém pode ser pago · operador: Claude

vigília 27/08 13h · vigília: sem novidades · WhatsApp com 1 mensagem nova (grcrosso 12:31) que não é bug: avisa que tem consulta médica no horário da AMA · produção 0 fatais, 0 tickets novos em 1h · ⚠️ DIGO O QUE NÃO VI: o app web do Discord travou no esqueleto de carregamento (4 tentativas, 2 abas, F5, ~35s) — alcancei o bugs-e-reports às 12h50 (parado em 26/08), mas chat-geral, feedback e tickets ficaram sem leitura. Registro em vez de escrever "quieto": silêncio de radar não é silêncio de comunidade, e anotar uma leitura que não aconteceu esconderia um relato da próxima rodada · 📊 o nó do PIX segue idêntico: 6 no site novo, 22 no antigo, 0 documentos, 0 cadastros na última hora — nada se move sozinho aqui · 👍 o fixado do grupo foi corrigido e já anuncia a AMA de hoje · operador: Claude

vigília 27/08 12h30 · vigília: sem novidades nas 5 frentes (WhatsApp parado no relato das 11:51 · Discord 00:02 · bugs 26/08 · 0 tickets novos em 3h) · produção 0 fatais · ⚠️ corrijo um número que EU dei às 12h: eu disse "1 apto a receber" — é ZERO. O LPBOLIVIA tem doc_status=pendente mas sem arquivo: marcador sem conteúdo. Contar o marcador mede quem TENTOU, não quem entregou — e num painel de pagamento essa diferença é dinheiro saindo pra quem não comprovou · 🧹 achei e removi um .jpg órfão do meu próprio teste em data/docs · ✅ A CURA DO PIX FICOU PRONTA NO DEV (não subiu): 1) migração 22 de 22 limpas, 0 conflito de CPF, idempotente (2ª rodada migra 0) · 2) módulo bcd-pagamento com bônus e recibo em tabelas separadas — e o prêmio nunca é copiado, recalcula pela mesma função que exibe (pagar 2ª vez → ja_pago) · 3) ícone de admin no topo, SVG e não emoji: medido que o jogador comum não vê — e descobri que nenhuma das 5 páginas do site carregava o ds-icones.js · falta a seção BCDs no CRM e a carteira unificada · operador: Claude

vigília 27/08 12h · 🔴 O CADASTRO DE PIX TEM DOIS DONOS — e por isso o pessoal diz que "resetou": referral_payout_info (fluxo antigo, 22 cadastros) e recebimento_dados (site da S2, 6) guardam a MESMA coisa com ZERO sobreposição. Só a nova tem campo de documento — então as 22 pessoas do fluxo antigo não têm como enviar o documento, que é teu requisito pra pagar. Resultado: dos 356 premiados, 26 têm PIX e apenas 1 está apto (LPBOLIVIA, R$ 14,24) · no grupo, RetroGames-LanTech e Celio Junior relataram exatamente isso (11:42 e 11:47) · 🔍 verifiquei antes de acusar: rota, módulo, Mercado Pago e a página do perfil estão TODOS bons (cadastrei e apaguei da tua conta pra provar) · 🔴 2º bug na mesma tela: a pintaErro não trata 401 — sessão caída mostra "Não deu pra carregar agora. Recarrega a página" sem botão de entrar (o mesmo defeito do Bombim) · 📣 pro AMA: precisa pedir que TODOS recadastrem em /site/perfil.html → PIX, inclusive quem já tinha cadastrado · 💰 painel PAGAMENTOS BCD entregue no topo · produção 0 fatais · operador: Claude

vigília 12h · sem novidades técnicas · 📌 mas a AMA é HOJE às 20h e não está anunciada em canal nenhum — o fixado ainda aponta pra reunião de ontem: D1 13,8%, e o funil mostra que 82,1% se perdem entre criar a conta e abrir o jogo · 🔎 fechei o achado do IP e ele é MENOR do que eu supunha: o GAC nunca acusou por IP de proxy (30 acusações, todas com IP real, 0 congelamentos) — continua dívida, mas não é urgente; recomendo ler cf-connecting-ip só a partir da S2 · operador: Claude

11h50 · 👑 VIP RESTAURADO (autorizado): 5.761 contas · 42 vitalícios · 4 co-fundadores, com o período exato do backup. Conferência independente: 200/200 vip_until idênticos, BC segue 0, e o servidor devolve vip:true · os 2 tickets altos (Jovani e ungamarrio) ficaram resolvidos — aguardo teu OK pra responder · lição gravada no vault: o nome da tabela é uma promessa que ela nem sempre cumpre · vigília sem novidades nas frentes

vigília 10h50 · 🔴 ACHADO CRÍTICO: o wipe apagou o VIP PAGO de 432 contas e os 4 co-fundadores vitalícios — a wallet guardava moeda E direito comprado na mesma linha (VIPs ativos 5.761 → 0). Dá pra restituir: purchases e pix_orders sobreviveram, e o backup tem o vip_until exato de cada um. Não executei — é dinheiro de jogador, decisão tua, e urge antes de 01/09 · 🎫 e a fila de suporte tem 53 pendentes, o mais antigo há 30 dias (já visível na seção Suporte do CRM) · produção 0 fatais · operador: Claude

vigília 09h50 · o Discord carregou o histórico de 26/08 e trouxe 2 achados de conversão: 🔴 nenhum dos 32 produtos da loja avisa que lendário não atravessa a season (o StormTeam gastou R$ 9 achando que ficaria — e ontem sumiu de fato; cura é 1 linha, mas o texto é decisão tua) · ✅ "os épicos não fundem" é FALSO e circulou como confirmado pelo Rodrigo: épico foi a raridade que MAIS fundiu na S1 (6.001 fusões, 220 contas) — o que houve foi a recusa legítima de misturar bomber com pet · produção 0 fatais, PvP ainda aberto mas com 0 partidas · operador: Claude

vigília 09h · sem novidades nas frentes, mas 🔴 o PvP está ABERTO: os locks pvp e pvp-arena não correspondem a módulo nenhum — o real é pvp_arena e está destravado. Testei a action: pvp_state responde ok:true enquanto vault/pass/bestiary devolvem module_locked. Foi a 2ª feature mais usada da S1 (9.631 partidas) · decisão tua · 💡 e 12 features prontas estão fora do ar há 21 dias (vault: 18.149 registros de 1.462 contas) — vale escolher quais voltam na S2 · portas do L140/L141 todas conferidas · operador: Claude

vigília 08h20 · vigília: sem novidades nas 5 frentes (WhatsApp 02:22 · Discord 00:02 · bugs, feedback e os 4 tickets sem pendência) · produção com 0 fatais e 0 erros de SQL · com o radar quieto, auditei a integridade pós-wipe: zero referências órfãs em marcas, álbum, ovos, guildas, PIX e time — e o fluxo de entrada testado ponta a ponta (4 rotas em 200, time montando com as M/D) · o vault e os 3 perfis órfãos: sustos que não eram, conferidos contra o backup · operador: Claude

08h · ✅ CRON DO MERCADO DESLIGADO NA RAIZ (L139): o seeder agora obedece o module_locks — o mesmo interruptor do CRM, como pediste. Eram dois caminhos (boot + cron): travar só um deixaria o próximo deploy semeando. Testado nos dois sentidos: travado → 0 anúncios, destravado → 34 · quando disseres "abre a S2", é um clique no CRM e volta a semear sem restart · estado deixado: mercado 0, trade travado, 32 licenças preservadas

vigília 07h40 · 🏪 O MERCADO VOLTOU SOZINHO: 34 anúncios reapareceram 20min depois de eu zerar — não foi falha da limpeza, foi o cron horário do seeder (todos criados no mesmo segundo, 1h após o boot). Apagar não é fechar quando há cron: agora o módulo está TRAVADO no module_locks e os 3 marcos gravados · ⚠️ segura só hoje — a cura é 1 linha no trade.mjs, aguarda teu OK · 💡 Valdinei sugeriu vender companheiro no shop no dia 1º (o Espectral/Celeste nunca foram distribuídos) · resto do radar sem bug novo · operador: Claude

vigília 06h15 · 🐦 DESMENTIDO: "ninguém pegou companheiro mítico/divino, tava bugado?" — não é bug, está escrito no código ("mítico/divino NUNCA no drop, só premiação de season"). A distribuição real para exatamente antes do n=33: assinatura de regra, não de sorteio quebrado. Respondido no grupo · 📊 WIPE preparado e NÃO executado (banco intacto: 154.797 ovos, 824.794 cartas) — backup 1,03 GB íntegro, ensaio conferido, tabela de BombCoin na tua Área de Trabalho · resto do radar sem novidades · operador: Claude

vigília 06h · vigília: sem novidades nas 5 frentes (WhatsApp parado em 01:16 · Discord desde 00:02 · bugs-e-reports desde 26/08 · feedback-e-sugestões desde 11/08) · trava firme: online=0, fases=0, BCD=0, 0 fatais · 🗣️ corrigi a voz no ticket #38 a teu pedido — a conta é o Giba, então respondo em 1ª pessoa e em aberto (regra gravada em REGRA-VOZ-ATENDIMENTO.md) · 🟡 dado sujo: o nick do único creator é uma URL colada por engano no CRM (impacto baixo, cura de 1 UPDATE) · operador: Claude

vigília 05h30 · ✅ O "60 ONLINE" ACABOU: era a ORDEM — no /api/action a presença era marcada ANTES da porta, então 351 chamadas levavam 403 e ficavam online do mesmo jeito (achado com trace de pilha: 77 chamadas, todas da mesma linha). Agora online90s=0-1 (só tu) · 🥚 ACHADO GRAVE: a virada de season ZERA egg_hatch/egg_rarity — 1.334 ovos divinos de 86 contas somem em 01/09, e a promessa "nada de mítico ou divino se move" cobre unit, não ovo · ticket #38 respondido (os ovos não estragam parados) · decisão tua antes de 01/09 · operador: Claude

vigília 05h · 🐉 O BOSS RODOU DEPOIS DO COMUNICADO: 4 jogadores mataram o world boss das 00:30 entrando por /v4 (o Caio veio contar e ofereceu devolver) — 2.534 BombCoin, mas ZERO BCD: o boss não credita prêmio em dinheiro, verificado no ledger inteiro · a causa foi o intervalo de ~40min entre anunciar e trancar · meu parecer: não estornar · ⚠️ decidir se os bosses agendados pausam na janela 27-31 · resto do radar sem novidade · operador: Claude

vigília 04h30 · 🚪 JOGO TRANCADO: só [email protected] entra — provado no banco (0 fases e 0 BCDs em 300s; todos param no restart) · 🔴 CURADO: o filtro do upload recusava 100% dos documentos (27 recusas a gente honesta; era o marcador <% caindo sozinho em JPEG) — 28/28 legítimas passam, 6/6 polyglots barrados · comunidade tranquila, zero reclamação da queda · ⏳ 2 perguntas tuas no Discord (AMA de hoje · ordem de pagamento dos BCDs) · 🔴 pendente: "Falar com o suporte" leva pro Discord do TibIdle · operador: Claude
WhatsApp14h10 · nada de bug
Discord4 canais lidos · 1 achado
Planilha32 bugs · triados
PIX18 prontos · ⚠ 2 excluídos
Dev local:5471 · cura do PIX pronta

📡 Radar 65

📌 A AMA É HOJESEM AVISO EM CANAL NENHUMAGUARDA TEU OK

A AMA é hoje às 20h — e a comunidade não tem como saber

Confirmaste que tem AMA hoje e respondi ao RetroGames no WhatsApp (já com 👍). Fui verificar se o resto da comunidade sabe. Não sabe:

canalo que diz sobre a AMA de hoje
WhatsApp — fixado"LEMBRETE: amanhã, dia 27, às 20h tem REUNIÃO" → é a de ontem, vencida há ~2 dias
WhatsApp — chatsó a minha resposta a uma pessoa, no meio da conversa (vai rolar pra cima)
Discord — chat-geralnada · última mensagem 00:02
Discord — #anunciosnada sobre hoje
Jogo — announcements2 avisos ativos (correio · recalibração do BP). Nenhum menciona a AMA.

⭐ Quem não viu aquela mensagem específica não tem como saber que tem AMA hoje. E o único aviso fixado aponta pra reunião de ontem — pior que silêncio, porque parece informação e está errada.

Sugiro três coisas rápidas (não fiz — é broadcast): (1) trocar o fixado do WhatsApp pelo aviso de hoje (AMA 20h + S2 abre 01/09); (2) uma linha no #anuncios do Discord, que é onde a AMA acontece; (3) opcionalmente um announcement no jogo — aparece pra quem abre a home mesmo com o jogo fechado, e 97 pessoas passaram pelo site desde o fechamento.

Nenhum promete nada além do que tu já confirmaste. É só dizer.

📊 Resto sem mudança: gold pós-fechamento 8 · 651 bombers sem bomba (script aguardando OK) · progress 97, atividade real 1 · 0 fatais · 0 tickets novos.

🔴 CORREÇÃO MINHA · 11hBUG REAL ACHADOAGUARDA TEU OK

Corrijo minha resposta ao Thiago — ele tem outra conta, e ela foi atingida pelo bug dos 651

Depois da minha resposta de que ele "não perdeu nada", o Thiago rebateu: "Como não, abri os ovos da primeira season achando que o bug já estava concertado, e recebi lendário e místico" e "desde que reportei pro Rodrigo não recebi nada".

⭐ Ele está certo e o erro foi meu, de método. Busquei pelo nome e achei uma conta só (montagestyleamvs — 3 units do tutorial, 0 ovos). Buscando pelo e-mail apareceu a conta de jogo dele: [email protected] — 76 units, 31 lendárias/míticas/divinas, 244 ovos.

⚠️ E a ironia fecha o caso: essa conta é uma dos 50 e-mails duplicados que eu mesmo medi três rodadas antes — e sobre a qual escrevi, textualmente, "quem logar na conta errada vê VIP e nenhum bombardeiro". Aconteceu comigo: olhei a conta errada e dei o veredito errado.

✅ O wipe agiu certo nela: os 14 míticos e divinos foram preservados (4+4 divinos, 4+2 míticos) e as 62 restantes — lendárias para baixo — saíram, exatamente a regra que tu deste. O "recebi lendário e místico" tem as duas metades: o místico ficou, o lendário não, e isso não é bug.

🔴 Mas há um bug real na conta dele: os 8 bombers preservados estão SEM a bomba de nascença — 100%. Ele é um dos 651 que mapeei. Quando a S2 abrir, ele terá os 14 M/D e nenhum bomber conseguirá lutar.

⭐ Isso muda a prioridade do script: não é higiene de dado, é gente que vai abrir o jogo dia 1º e não conseguir jogar. O bomba-natural-dos-restaurados.mjs está pronto, com 8 provas e ensaio rodado em produção (651 bombers, 161 contas). Aguarda teu OK.

📬 Preciso responder a ele (aguarda OK — é o grupo): que ele tem duas contas no mesmo e-mail, que os M/D estão preservados e o lendário saiu pela regra, e que achei um problema de verdade na conta dele — com conserto já pronto.

🔎 De passagem, um susto que não era: o gold total saltou de 22.470 → 42.815. É afk da tua conta (20.345, às 13:31) — admin passa pela porta legitimamente. Os 2 boas_vindas do ledger são o Rmds e o Vitor Gabriel, já contados. Nada anômalo.

✅ L149 APLICADA16/16 PROVAS3 RESPOSTAS ENVIADAS

Os 3 fixes estão no dev — e as 3 mensagens do grupo foram respondidas

🎁 1. O par rompido volta a zerar junto (virada-season.mjs:152). Uma linha resolvendo os três marcadores: welcome_gold, world_quest_claims, vila_mission_claim. Provado nos dois sentidos — os 3 entram, e album_claims/coupon_claim ficam de fora, porque o progresso deles sobrevive de propósito (9.435 figurinhas).

🚪 2. A torneira do gold fechou (index.mjs:3445). O crédito agora passa pelo mesmo portão do jogo: porta fechada → não paga (gold 0) · porta aberta → paga (gold 1.008). ⭐ Quem não pode entrar não recebe o gold DE ENTRAR.

📝 3. O suporte do Perfil parou de jogar fora o texto (support.mjs + rota). A rota passou a repassar os 4 campos que a tela manda desde sempre, o supportOpen grava tudo (com transcript e origem), e sem texto agora recusa de verdade — 400 msg_curta em vez do ok:true que mentia.

⚠️ Um detalhe que quase passou: o readBody dessa rota era 512 bytes — cabia o e-mail e mais nada. Ampliei pra 8 KB. De nada adiantaria gravar o relato se ele chegasse truncado no meio.

🧹 Higiene: testado em instância isolada sobre cópia, instância derrubada, banco apagado, dev local conferido intacto. Diff cirúrgico: 34 linhas em 3 arquivos. Nada foi pra produção — o deploy é decisão tua.

💬 E as 3 mensagens do grupo, respondidas (10:22-10:24, com 11-13s entre elas): ao Alex que sim, quem já tem conta entra sem convite; ao Thiago que não perdeu nada — eram 6 cartas de aviso, VIP preservado; ao RetroGames que a conta dos 5 dias está certa. As duas primeiras já receberam 👍.

⭐ As três eram verificáveis, e foram verificadas antes: no código, no backup pré-wipe e na aritmética das datas. Nenhuma promessa nova, nenhum compromisso de produto.

💰 8º PAGAMENTO · 14h30ONDA 1 · nº0269 PESSOAS

O 8º pagamento — e 2 pessoas que resumem o problema inteiro

Vitor Gabriel, 12:59 — mais 1.000 de gold com o jogo trancado. A sequência: 1 · 3 · 5 · 6 · 6 · 7 · 8.

E as 2 pessoas que voltaram nesta janela mostram o problema pelos dois lados, com só dois nomes:

jogadorsituaçãoem 01/09
Vitor Gabrielrecebeu agora — gold 1.000🔴 a virada zera o gold, a marca fica → não recebe
Flaviomarca de 20/08, gold 0🔴 não recebe

⭐ Duas portas diferentes para o mesmo destino. Um chegou tarde demais (o dinheiro morre na virada), o outro chegou cedo demais (o dinheiro já morreu no wipe) — e ambos ficam sem o bônus enquanto o vizinho recebe.

269
não recebem na abertura
5.819
ainda elegíveis
22.470
gold total (contabilidade bate)
0
escrita de jogo

Nada muda no diagnóstico nem nas curas — só o contador. A de 1 linha segue resolvendo os dois lados de uma vez. S2 abre em 3 dias.

✅ VIGÍLIA 13h30SEM NOVIDADES16ª RODADA

Rodada limpa — nenhum número se moveu

Nada novo em nenhuma frente. WhatsApp em 09:11 (a pergunta do Alex segue no topo, sem resposta) · Discord com chat-geral em 00:02 e zero não-lido — o contador 15591 → 15592 é de outro servidor, padrão já conhecido · 0 tickets · 0 fatais.

7
gold pós-fechamento (parado)
21.470
gold total (idêntico)
1
atividade real de jogo
0
escrita de jogo

Nenhum achado novo. O quadro é o mesmo da rodada anterior — e o que segue pendente é decisão, não investigação. Com a S2 abrindo em 3 dias, esperam teu OK:

o quêtamanho
🔴 O par rompido em 3 tabelas268 + 56 + 91 · 1 linha resolve
🔴 A torneira do gold (index.mjs:3445)7 pagos · 5.820 ainda elegíveis
🔴 O suporte do Perfil que descarta o texto42 chamados mudos · 23 pessoas
🟠 Vínculo Discord↔Gmail50 e-mails duplicados · 100 contas
🟠 Os VIPs que vencem em 05/095.593, quatro dias após a abertura
📬 Responder as 3 mensagens do grupotodas verificadas, resposta pronta
📌 Trocar o lembrete fixadovencido há ~20h
✅ VIGÍLIA 12h30PENDÊNCIA FECHADA

Rodada limpa — e a pendência do "Rock Star digitando" se resolveu

Na rodada passada anotei que alguém estava digitando no Discord sem enviar. Conferi: não virou mensagem — nenhum canal público tem não-lido e o chat-geral segue em 00:02. O contador subiu (15590 → 15591) por outro servidor.

⭐ "Digitando…" não é mensagem. Anotar como pendência e conferir na rodada seguinte foi o certo — economizou uma varredura e não deixou buraco no registro.

Produção estável: 0 fatais · gold pós-fechamento parado em 7 · total 21.470 · progress 85 com atividade real ainda em 1 · zero escrita de jogo em units, item_stack, bombas e IA.

📬 As 3 mensagens do grupo seguem sem resposta — e a do Alex (a pergunta sobre convite) já ganhou mais uma reação, sinal de que outros também querem saber:

quemquandoo queverificação
Thiago Willians07:02"meus 6 não foram entregues"✅ nada perdido — eram cartas de aviso
RetroGames-LanTech08:38"5 dias sem o bomb"✅ conta certa (5,0 dias)
Alex's09:11"logo sem convite, correto?"✅ correto — só barra conta nova

As três têm resposta pronta e verificada, aguardando teu OK. O lembrete vencido também segue fixado no topo (~19h de atraso).

❓ PERGUNTA DIRETA · 11h40VERIFICADO NO CÓDIGOAGUARDA TEU OK

"Quem já tem conta vai conseguir logar sem convite, correto?" — ele está certo

Alex's, 09:11. É a primeira pergunta direta desde o fechamento (as duas anteriores eram um relato e uma brincadeira) — e é a pergunta certa, porque existe sim uma trava de convite ligada em produção.

1) A trava existe e está LIGADA: medi no container agora, INVITE_ONLY = 1.

2) Mas ela só barra CONTA NOVA. O guardião barraContaNova() (index.mjs:147-152) responde a pergunta dele textualmente na linha 150:

if (sub && …SELECT 1 FROM users WHERE sub=?…) return null  // já joga: entra sempre

3) E na abertura o portão geral passa na frente de tudo: com kv.jogo_aberto='1', o podeEntrarNoJogo retorna true antes de qualquer checagem de e-mail ou lista (index.mjs:223) — caminho que já testei no ensaio da porta, 7/7, inclusive com conta sem e-mail.

🎯 Resposta pronta (não enviei — é o grupo): "Sim, correto. Quem já tem conta entra normalmente, sem convite — o pedido de convite vale só pra conta nova. Na abertura da S2, dia 1º, é só logar como sempre."

⭐ Por que vale responder: é dúvida de acesso na véspera da abertura — o tipo de silêncio que faz gente achar que vai ficar de fora e desistir de voltar. E a resposta é um "sim" simples, sem promessa nova, sem depender de decisão de produto.

📬 Já são 3 mensagens no grupo desde o fechamento, todas sem resposta: o Thiago ("meus 6" — verificado, nada perdido), o RetroGames ("5 dias" — conta certa) e agora o Alex ("sem convite?" — correto). As três têm resposta verificada e pronta.

⏱️ VOLTOU A PAGAR · 10h40ONDA 1 · nº0268 PESSOAS

O bug do gold não tinha acabado — só estava entre uma pessoa e outra

Nas últimas 3 rodadas registrei que ele havia "estabilizado em 6". Voltou a pagar: o 7º é o Rmds ([email protected]), às 12:01 — mais 1.000 de gold com o jogo trancado.

⭐ A lição da medição: eu havia escrito que o contador parou "porque a fila dos elegíveis está se esvaziando". Estava parcialmente errado — ele não parou, apenas ficou 4 rodadas sem que um elegível abrisse a tela certa. Com 5.820 contas ainda sem marca, "estabilizado" é leitura de janela curta, não um estado. Contador parado por N rodadas não é contador zerado — a torneira segue aberta.

A foto desta janela: 5 pessoas voltaram e as 5 não recebem na abertura — o Rmds porque acabou de receber um gold que a virada vai apagar (deixando a marca), e Uchiha_Kell · Fernando Silva · Isaac oliveira · Cristiano Neves porque já tinham marca de 21-22/08 e estão com gold 0.

268
não recebem na abertura
261
marcados sem dinheiro
+7
receberam pós-fechamento
5.820
ainda elegíveis

✅ A contabilidade segue fechando: gold total 21.470 = 7 × 1.000 (bônus pós-fechamento) + 14.470 (residual). Nenhum valor de origem desconhecida — o único influxo é o bug já registrado.

Nada muda nas curas, só o número. A de 1 linha (welcome_gold, world_quest_claims, vila_mission_claim no ZERA) segue resolvendo os dois lados de uma vez.

📌 COMUNICAÇÃOACHADO 09h40AGUARDA TEU OK

O lembrete fixado no grupo está vencido há 16 horas

Chegou a 2ª mensagem pós-wipe (RetroGames-LanTech, 08:38): "poxa vamos ficar 5 dias sem o bomb pra jogar para deixa eu ir para a clinica de reabilitação se nao vou pirar kkkkk". É brincadeira, mas carrega um número — e número no grupo vira boato se estiver errado.

✅ Conferi: a conta dele está CERTA. De 26/08 23:59 a 01/09 00:00 são 5,0 dias exatos. Nada a corrigir, nenhuma informação errada circulando, e o tom é de saudade do jogo — não pede resposta de suporte.

📌 Mas ao abrir o topo do grupo pra conferir a data oficial, achei outra coisa: a mensagem fixada é "LEMBRETE: amanhã, dia 27, às 20h tem REUNIÃO no Discord…" — e essa reunião já passou há 16 horas.

⭐ Aviso fixado é a "capa" do grupo: ele não envelhece sozinho. Um lembrete vencido no topo diz à comunidade que a informação dali não é confiável — justo na véspera da abertura, quando as perguntas sobre data vão aumentar.

Sugestão (não executei — é ação no grupo e precisa do teu OK): trocar o fixado pela informação que vale pelos próximos 3,5 dias — a S2 abre 01/09, o que muda e o que cada um mantém. Isso responde de antemão o "quantos dias faltam" e o "perdi minhas coisas?" do Thiago — os dois únicos relatos que apareceram no grupo desde o fechamento.

Resto do quadro sem mudança: progress 74 → 75 (sem atividade de jogo) · gold pós-fechamento segue em 6 · total da base 20.470, a contabilidade auditada ontem não se moveu.

✅ VIGÍLIA 08h40SEM NOVIDADES🧾 AUDITORIA

Rodada limpa — e a contabilidade do gold fecha na vírgula

A wallet foi de 7 → 8 escritas com o welcome_gold parado em 6. Sobrava uma: Tiago Camargo, 11:29, tudo zerado e marca de 26/08 — mais um do grupo dos 261, escrita inócua. Mas o vip_until = 0 dele pediu a mesma checagem do Wesley, e aproveitei pra auditar o conjunto.

✅ A restauração de VIP segue completa: das 7 wallets sem VIP hoje, zero tinham VIP no backup. O Tiago, como o Wesley, já não tinha antes do wipe.

✅ E a economia da S1 foi zerada corretamente. O backup do Tiago mostrava 697.225 de gold, e outra conta tinha 49 milhões. Hoje:

20.470
gold total na base
17
contas com gold
6.000
bônus pós-fechamento
14.470
residual (medido às 23h)

6.000 + 14.470 = 20.470. ⭐ Nenhum gold apareceu de origem desconhecida — todo valor na base tem procedência identificada, e o único influxo novo é o bônus que já está registrado como bug (nº0 da Onda 1).

O padrão de quem volta se mantém: o Tiago, o André Lenz, o nilsin e o José Henrique — todos já tinham marca e estão com gold 0. É a 4ª rodada seguida em que 100% de quem volta cai direto no grupo dos prejudicados, o que explica o gold ter parado em 6.

✅ VIGÍLIA 07h30SEM NOVIDADES12ª RODADA

Rodada limpa — o quadro estabilizou

Nada novo em nenhuma frente. A lista do WhatsApp mostrava "ALAN COSTA reagiu ❤️ a um vídeo", mas é reação, não mensagem — rolei o chat e o fim continua na do Thiago (07:02). ⭐ Reação sobe a conversa na lista sem ser mensagem nova: o fim do chat é a fonte, não a prévia.

O bug do gold parou de crescer: segue em 6, sem pagamento novo desde 10:25 — 3ª rodada seguida. A wallet não teve escrita nova (as mesmas 7, já verificadas). progress 68 → 71, e a atividade real segue em 1 (só a tua conta): a porta continua firme.

Os 3 que voltaram agora — André Lenz, nilsin NILSÃO e José Henrique — já tinham a marca e estão com gold 0. É a 3ª rodada seguida em que 100% de quem volta cai direto no grupo dos prejudicados.

Acumulado desde o fechamento: 29 pessoas passaram pelo site · 6 receberam · 261 seguem marcadas sem o dinheiro · 5.821 ainda elegíveis.

📋 Nada mudou nas 6 pendências — o par rompido em 3 tabelas (1 linha resolve) · a torneira do gold · o suporte que descarta texto · o vínculo Discord↔Gmail · os VIPs de 05/09 · a resposta ao Thiago. S2 em 4 dias.

✅ VIGÍLIA 06h40ALARME DESCARTADO

Rodada limpa — e confirmei que a restauração do VIP está completa

Nada novo em nenhuma frente (11ª rodada). O bug do gold segue estabilizado em 6; progress foi de 64 → 68 (mais 4 pessoas passaram pelo site), nenhuma com atividade de jogo. Zero escrita em units, item_stack, bomber_bombs e ia_intimidade desde as 08:00 — a porta continua firme.

🔎 Um alarme meu, descartado com dado. A wallet acusou 7 escritas mas o welcome_gold estava em 6 — sobrava uma. Era o Wesley Marques, tocado às 09:59 com gold 0. Ao abrir o registro vi vip_until = 0, enquanto os outros 5.761 têm VIP até 05/09. Suspeita séria: a restauração teria deixado alguém de fora?

Não. Conferi contra o backup pré-wipe: o Wesley já tinha vip_until 0 antes. E das 6 wallets sem VIP hoje, zero tinham VIP no backup. ✅ A restauração está completa, e a escrita das 09:59 foi inócua — ele é do grupo dos 261 prejudicados (marca de 22/08), não um caso novo.

⭐ Vale registrar porque quase virou "achei VIP não restaurado". A diferença entre alarme e achado foi uma consulta ao backup — toda anomalia numérica pede a pergunta "isto já era assim antes?" antes de virar reporte.

📋 Esperando decisão tua, com a S2 em 4 dias: o par rompido em 3 tabelas (261+56+91, 1 linha resolve) · a torneira aberta do gold · o suporte do Perfil que descarta texto (42 chamados mudos) · o vínculo Discord↔Gmail (50 duplicados) · os 5.593 VIPs que vencem em 05/09 · e responder o Thiago no grupo.

🔍 ACHADO 05h40ONDA 1 · nº03 TABELAS

O par rompido não é só o gold — achei mais 2 marcadores na mesma situação

O bug do gold estabilizou (1 → 3 → 5 → 6 → 6, nenhum pagamento novo desde 10:25) — mas por um motivo ruim: os 2 que voltaram nesta janela (Pepón e BYOHArj) já tinham a marca de 20/08 e estão com gold 0. ⭐ O contador parou não porque o problema acabou, mas porque a fila dos que ainda podem receber está se esvaziando pelo lado errado.

Então fui procurar o mesmo padrão em outros marcadores "1x por conta". Levantei os 9 que existem com dados e cruzei com a lista ZERA da virada. Nenhum está lá — mas isso só é problema quando o prêmio zera e o marcador fica. Conferi um por um:

marcadorlinhasprogresso correspondenteveredito
album_claims139.435 figurinhas (sobreviveu)✅ coerente — tu mandaste preservar
coupon_claim4.78145 cupons (sobreviveu)✅ coerente
ia_alerta_visto339— (é "não repetir aviso")✅ não é prêmio
world_quest_claims665world_boss = 0 (zerado)🔴 par rompido
vila_mission_claim91vila_counters = 0 (zerado)🔴 par rompido

Os dois casos, medidos. Em world_quest_claims a coluna period_key separa o que importa: 167 linhas são once (permanentes, 56 pessoas — q_reach5, q_boss1, q_kill2000) e 498 são diárias (viram sozinhas). Já vila_mission_claim não tem period_key: toda linha é permanente — 91 marcações com os contadores em 0. Nos dois, a pessoa refaz a conquista e não recebe, porque o servidor acha que já pagou.

⭐ A regra que emergiu: marcador de "já recebeu" tem de zerar junto com o progresso que o gerou. O teste é uma pergunta por tabela: "o que este marcador impede de acontecer de novo — e esse algo foi zerado?"

⚠️ E o erro simétrico, que quase cometi: a tentação é jogar os 9 no ZERA de uma vez. Seria errado — apagaria o album_claims, cujo progresso (9.435 figurinhas) tu mandaste preservar. A lista se confere par a par, nunca por padrão de nome.

A cura ficou mais barata: é a mesma linha que eu já propunha pro gold, agora com 3 nomes — 'welcome_gold', 'world_quest_claims', 'vila_mission_claim' no ZERA. Total afetado: 261 + 56 + 91. Não toquei em nada — mexe em distribuição de prêmio, é tua decisão.

📸 A FOTO · 04h40ONDA 1 · nº04ª MEDIÇÃO

9 pessoas voltaram ao site. 3 receberam o gold, 5 não vão receber — e a diferença é acaso

O progress deu o maior salto até agora (53 → 62): 9 pessoas voltaram nesta janela. Olhar quem são elas mostra o problema inteiro numa tabela só:

jogadormarcagold hojeem 01/09
TOP MUSIC MIXhoje 10:251.000gold zera, marca fica → não recebe
Layrson Rochahoje 10:211.000idem
Otto Ivarhoje 10:181.000idem
Sharp20/080não recebe
Felipe Soares Rocha22/080não recebe
Carllos Antônio Vasc.23/080não recebe
Lucas Nunes22/080não recebe
Caio Leite22/080não recebe
ez34 full (Zeus)sem marca0recebe normalmente

⭐ Oito das nove não vão receber o bônus na abertura. Só o ez34 recebe — e o que o separa dos outros oito não é mérito, é o acaso de quando abriram uma tela. É a mesma injustiça que venho medindo há 4 rodadas, agora com nome e horário.

O ritmo desacelerou (1 → 3 → 5 → 6, só +1 nesta rodada) — mas por um motivo ruim: a maioria de quem volta agora já tem a marca (5 dos 9). O contador de pagamentos indevidos cai justamente porque o grupo dos prejudicados já está grande.

🔍 Refinamento do diagnóstico — são DUAS rotas, não uma. O ez34 entregou isso: abriu o site (ganhou linha em progress), passa na regra (fase 1) e não tem marca — mas não recebeu. A wallet dele tem updated da restauração, ou seja nada foi escrito hoje. Logo: /api/site/profile cria a linha (todos os 9 fizeram) e /api/account paga (só 3 fizeram). ⭐ Bom saber antes de mexer: fechar a torneira em index.mjs:3445 resolve o pagamento sem afetar quem só passa pelo perfil.

Nada muda nas curas. A de 1 linha — welcome_gold no ZERA do virada-season.mjs — segue sendo a que resolve os dois grupos de uma vez: zera a marca junto com o dinheiro, e todo mundo recebe igual na abertura.

🗣️ RELATO NO GRUPOVERIFICADOAGUARDA TEU OK

Primeiro relato pós-wipe no grupo — e nada foi perdido

Thiago Willians, 07:02 (a primeira mensagem no grupo desde as 04:01, em 8 rodadas), respondendo ao teu post sobre companheiro mítico/divino: "Os meus 6 ainda não foram entregues dos ovos que abri".

Verifiquei no banco E no backup pré-wipe. A conta dele ([email protected]) tinha 3 unidades antes do wipe — 1 bomber common, 1 uncommon e 1 pet uncommon — e zero ovos de qualquer raridade. Ele nunca teve 6 unidades míticas ou divinas. Cruzei com quem de fato tinha 6 M/D no backup: nenhum é ele. A conta está exatamente como o wipe deveria deixá-la, com o VIP até 05/09 preservado.

🔍 Achei de onde vem o número 6: ele tinha 6 CARTAS no correio — e o correio foi limpo no wipe, por ordem tua. Conferi uma a uma: nenhuma tinha prêmio a coletar (cinco eram avisos com rewards vazio; a "Compensação do recomeço" já estava coletada antes do wipe). Não houve perda material.

Não é bug — mas é ruído que se espalha. O relato está público, sem resposta, na véspera da S2, e é do tipo que vira boato ("sumiram meus 6"). Ele não perdeu nada, mas também não tem como saber disso.

Não respondi (é o grupo, broadcast só com teu OK). O conteúdo está pronto: conta íntegra, VIP preservado, o que sumiu foram cartas de aviso, e os bombers voltam com o tutorial na abertura. Se autorizares, eu respondo.

⏱️ 3ª MEDIÇÃO: 1 → 3 → 5ONDA 1 · nº0PIORA SOZINHO

O bug do gold segue correndo — 5 pagamentos e 5.822 contas ainda elegíveis

Continuo cronometrando: 01h50 → 1 · 02h40 → 3 · 03h40 → 5. Ritmo constante de ~2 por rodada. Os novos: 10:18 Otto Ivar e 10:21 Layrson Rocha. A tabela welcome_gold foi de 273 → 275 → 277.

Nada mudou no diagnóstico nem nas curas — só o número. Segue sendo o único achado que piora sozinho enquanto ninguém age, e a cura mais barata continua sendo 1 linha: pôr welcome_gold na lista ZERA do virada-season.mjs. Detalhes completos no card abaixo.

⏱️ ACHADO 02h40ONDA 1 · nº0O DIAGNÓSTICO

O bug do gold está acelerando — e o diagnóstico ficou pior do que eu escrevi ontem

Ontem registrei como "pequeno: 1 conta". Voltei a medir e mudou: 1 → 3 pagamentos, todos em ~11 minutos, conforme a galera volta ao site — 09:49 Carlos Jhoneiker · 09:58 marcio zarth · 10:00 Helenilton Campos.

⭐ Não é caso isolado, é torneira aberta: ainda há 5.824 contas sem a marca. Se a base voltar ao site antes da porta abrir, são até 5,8 milhões de gold criados com o jogo fechado. (O marcio zarth é, de novo, um dos 50 e-mails duplicados — o mesmo grupo aparece em toda medição desta noite.)

🔴 E o pior: fui conferir o que acontece com esse gold na virada e comparei as duas tabelas contra a lista ZERA (virada-season.mjs:121): wallet ESTÁ na lista (o gold será apagado) e welcome_gold NÃO ESTÁ (a marca sobrevive).

Quem recebe nesta janela perde as duas pontas: ganha 1.000 que não consegue usar, o dinheiro é zerado na virada, e a marca fica — então na abertura não recebe de novo, enquanto o vizinho recebe. Já são 264 nessa situação (261 do wipe + 3 de hoje), e cresce a cada hora.

⭐ Não é um segundo bug: é o mesmo par rompido de ontem, visto do outro lado. A virada trata o dinheiro como estado de temporada (certo) e deixa o marcador que autoriza o pagamento (errado).

Retiro o que eu disse ontem sobre "higiene pra depois da S2" — enquanto o site estiver no ar com o jogo fechado, o grupo cresce sozinho. Três caminhos, todos teus: (1) fechar a torneira em index.mjs:3445; (2) ⚠️ 1 linha — adicionar welcome_gold ao ZERA da virada, e o par volta a ser zerado junto (resolve pela raiz, sem tocar na rota); (3) limpar a marca dos 264 (distribui gold, não faço sem OK).

🔴 ACHADO 01h50REPRODUZIDODECISÃO ANTES DE 01/09

O gold de boas-vindas paga com o jogo trancado — e 261 contas não vão recebê-lo na S2

Como apareceu: a varredura desde as 08:00 UTC acusou 1 escrita em wallet, e desta vez não era minha — Carlos Jhoneiker ganhou 1.000 de gold às 09:49, com o jogo fechado. O gold_ledger registra reason: 'boas_vindas'.

A causa: o crédito é chamado dentro do GET /api/account (index.mjs:3445) sem checar a porta. E essa rota não devolve 403 de propósito — o perfil do site também a consome, então a porta ali só filtra a presença. O crédito ficou de fora da régua.

Reproduzido em instância isolada, com a porta fechada: POST /api/action → 403 BARRADO, GET /api/account → 200, e o gold vai de 0 → 1.008.

🔍 O tamanho é pequeno: 1 conta desde o fechamento. E nem chega a ser exploit — quem recebe não consegue usar, porque o jogo barra tudo. É antecipação, não vantagem.

🔴 Mas puxando o fio apareceu o problema de verdade, e ele é da S2: a tabela welcome_gold é idempotente por conta e sobreviveu ao wipe — o dinheiro que ela pagou, não. Resultado: 273 contas marcadas, das quais 181 estão hoje com gold 0 e 80 nem têm wallet. São 261 contas que perderam o dinheiro mas mantiveram a marca — no dia 01/09 os outros ~5.500 recebem os 1.000 e essas não, todos começando do zero lado a lado, por um motivo que o jogador não tem como saber.

⭐ É o mesmo padrão da wallet no wipe: zerou o DINHEIRO (certo) mas deixou o MARCADOR que autoriza o pagamento. Zerar um sem o outro rompe o par.

Duas curas, nenhuma aplicada: (1) higiene — mover o crédito pra dentro de podeEntrarNoJogo ou pro 1º /api/action autorizado; (2) decisão tua — limpar a marca das 261 pra que o bônus valha igual na abertura. É reversível, mas distribui 261.000 de gold, então não faço sem teu OK.

🟢 VIGÍLIA 00h50A PORTA SEGUROUREPRODUZIDO

Quatro jogadores reais bateram na porta — e quem escreve em progress é o site, não o jogo

O progress saltou 44 → 48 com o jogo fechado. Desta vez não é resíduo antigo: são pessoas de verdade tentando entrar agora — Davis Sudatti · KRILL · Jean · Dùúh Hartmann, todas em fase 1 e sem nenhuma atividade.

⭐ O [email protected] (Dùúh) é um dos 50 e-mails duplicados que medi na rodada anterior — a pessoa está voltando, e tem duas contas esperando por ela.

Rastreei e reproduzi em instância isolada: com a porta FECHADA, GET /api/site/profile responde 200 e cria a linha, enquanto POST /api/action responde 403. A causa é o readProgress — uma leitura que cria a linha se não existir — alcançada pela rota do site via teamCpDisplay, só pra pintar o BomberPower no perfil.

Medi as 3 consequências antes de chamar de bug: (1) dá vantagem? Não — nasce em estado default e o jogo segue barrado; (2) fura a porta? Não; (3) queima o "import 1x" do save antigo? A linha nasce com progress_imported=1, mas saves está em 0 pós-wipe — não há nada a importar, logo não há perda.

Veredito: é ruído de dado, não bug. O custo real é que COUNT(*) FROM progress deixou de significar "quantos jogaram" e passou a significar "quantos abriram o site" — e é por isso que registro: quase virou alarme falso 3 rodadas seguidas. ⭐ Linha em tabela não é atividade; só o timestamp prova. Dos 48, 1 tem kernel_last_ts (tua conta). Cura de higiene pra depois da S2 → Onda 5.

🔢 ONDA 1 · nº4AGORA COM NÚMERO50 PESSOAS

O vínculo Discord↔Gmail: 50 e-mails duplicados, 100 contas, 40 com VIP em dobro

É o tema que mais volta em todas as frentes (tickets #30 e #36, chat-geral, planilha nº3) e estava na Onda 1 sem tamanho desde sempre. Achei o número puxando um fio lateral: notei jonathan couto aparecendo 2× numa lista de gold e fui ver.

O que está no banco: 50 e-mails duplicados = 100 contas, sempre no mesmo padrão — 1 conta Google + 1 discord_* com o MESMO e-mail. No total são 245 contas discord_* (242 com e-mail, 3 sem), 213 com VIP ativo e 64 com compra registrada — ou seja, gente real que gastou dinheiro, não fantasma.

🔴 Dos 50 pares, 40 têm VIP ativo nas DUAS contas. Mesma pessoa, mesmo e-mail, dois VIPs.

✅ Não é sequela do wipe — antes de reportar cruzei com o backup-ANTES-DO-WIPE: 50 duplicados, 245 discord_*, 213 com VIP. Idêntico. A restauração copiou fielmente o que já existia; a duplicata é anterior e estrutural.

Por que vira problema no dia 1º: a porta decide por e-mail (index.mjs:226), então as duas contas passam e o jogador entra em qualquer uma sem saber qual tem o patrimônio dele. E medi: nenhum par tem units nas duas — o acervo está concentrado numa só, mas o VIP está em ambas em 40 casos. Quem logar na "errada" vê VIP e zero bombers, e abre ticket dizendo que perdeu tudo. Na 1ª semana da S2, com 50 pessoas.

Não fundo conta — mexe em patrimônio (qual sobrevive, o que acontece com os 2 VIPs, como avisar as 50). Fica medido; o desenho é teu.

✅ VIGÍLIA 00hSEM NOVIDADES5ª SEGUIDA

Rodada limpa — e um susto de 5.761 wallets que era obra minha

A varredura das últimas 3h acusou 5.761 wallets escritas com o jogo fechado. Parecia invasão em massa. Não era: as 5.760 têm timestamp idêntico (06:56:25.887) — é a minha própria restauração de VIP, e a janela de 3h simplesmente alcançou aquele instante.

Refazendo o corte a partir das 08:00 UTC (pós-restauração): units 0 · item_stack 0 · wallet 0 · tickets 0 · IA 0 · bombas 0 · guia_rate 0. Zero escrita de jogo. A porta segue firme.

⭐ Janela relativa ("últimas 3h") atravessa as manutenções que eu mesmo fiz. Ancorar o corte num MARCO separa o que é atividade do que é obra minha.

💰 A economia que a base encontra no dia 1º: BC total na base = 0 · Gold 14.470 em apenas 11 contas (a maior é a tua, 4.370). O wipe zerou a moeda como devia, sem resíduo de valor.

📅 DECISÃO DE DONO4 DIAS APÓS A S2MEDIDO 23h

5.593 VIPs vencem no mesmo instante, em 05/09 — quatro dias depois da abertura

Radar quieto pela 4ª rodada, então medi o que acontece com o dinheiro real na abertura. O recorte por data mostrou uma concentração que ninguém tinha visto: zero vence até 01/09 (a virada), e 5.593 vencem em 05/09. O resto é pingado (≈20 até o fim de setembro, 144 depois de 01/10, mais os 4 vitalícios).

Os 5.593 têm o timestamp idêntico ao milissegundo (2026-09-05T15:21:39.321Z) — não é compra individual, é concessão em massa. Fazendo a conta: 30 dias exatos a partir de 06/08 15:21, a mesma data do "Beta comunitário 06/08" que travou os módulos. Foi a cortesia daquele dia.

✅ A restauração está certa — conferi o restaura-vip-pos-wipe.mjs: ele copia o vip_until exato do backup e não toca em prazo. A data já era essa antes do wipe. E está transparente pro jogador: o Perfil mostra "ativo até dd/mm".

Por que te trago isso: a S2 abre 01/09 e quatro dias depois 5.593 contas perdem o VIP de uma vez — sendo que só 296 têm compra registrada (as outras ~5.300 são cortesia). É um evento de retenção concentrado na 1ª semana. Três caminhos: deixar vencer (a cortesia cumpriu o prazo) · estender pra dar fôlego à abertura · usar como gancho de conversão pros 5.300 que nunca pagaram. Não mexo em prazo de direito comprado nem em número teu — fica o número exato pra tu decidires.

✅ VIGÍLIA 23hSEM NOVIDADESA PORTA SEGUROU

Rodada limpa — e conferi que ninguém entrou com o jogo fechado

Nada novo em nenhuma frente (4ª seguida). Mas o progress subiu de 42 → 43 desde a rodada anterior, e com o jogo fechado linha nova é sinal de que alguém entrou. Fui atrás.

Varri toda escrita de jogo depois das 07:00 UTC: units 0 · tickets 0 · conversas de IA 0 · bombas 0 · item_stack 1 · wallet 1. As 2 escritas são da tua conta (07:38:22, um mat_cosmic_shard_t1 e gold 4.370) — admin testando, que é exatamente quem a porta deixa passar.

⭐ E o detalhe que evitou um alarme falso: dos 43 com linha de progress, só 1 tem qualquer timestamp de atividade. Os outros 42 têm a linha e nunca rodaram o kernel. Linha em tabela não é atividade — só o timestamp prova. Contar linhas teria virado um "42 jogadores entraram com o jogo fechado" que não aconteceu.

✅ ENSAIO 22hDIA 01/097/7 + 10/10

O caminho do dia 1º está testado ponta a ponta: a porta abre e o tutorial entrega

Na rodada passada testei se as features voltam. Faltava a pergunta anterior: a porta abre? Hoje o jogo só deixa entrar se kv.jogo_aberto='1' — e em produção a chave nem existe, a porta fecha por ausência. No dia 1º alguém grava '1' e 6.099 contas entram de uma vez. Se o gesto falhar, a gente descobre ao vivo.

🚪 ENSAIO DA PORTA — 7/7. Fechada: admin entra (200), jogador comum barrado (403). Aberta: jogador comum entra (200). Fechada de novo: barra outra vez — é reversível.

⭐ Um caso valeu por si: 13 contas em produção não têm e-mail (entraram por Discord) e elas passam quando o portão geral abre. Se a abertura fosse feita pela lista jogo_liberado — que casa por e-mail — essas 13 ficariam de fora sem ninguém perceber.

🎓 ENSAIO DO DIA 1 — 10/10. Depois do wipe, tutorial_done está zerado pras 6.099 contas: a base inteira refaz o tutorial no mesmo dia, e ninguém tinha testado isso pós-wipe. O fluxo entrega 3 unidades (pet + 2 bombers), marca feito no banco, dá luckyShots:10, e reivindicar 2× responde already_claimed — sem kit em dobro.

⭐ E fecha um fio da noite: os 2 bombers do tutorial nascem com bomba. Isso prova que a porta normal do jogo funciona — os 651 sem bomba vieram só da minha restauração por SQL, não há defeito no caminho do jogador.

⚠️ A mesma armadilha, de novo, e de novo minha: a 1ª rodada deu tutorial_pendente e +0 unidades, parecendo bug grave no dia 1. Eu tinha chamado o claim direto — o fluxo real é inicio → fim → claim. ⭐ Supus o contrato em vez de ler o defineModule. Duas vezes na mesma noite é padrão, não azar: ler primeiro, testar depois.

🧹 Higiene: instância de ensaio derrubada por kill cirúrgico na porta, banco de ensaio apagado, e dev local conferido intacto depois (17 locks, jogo_aberto ausente, HTTP 200). Produção não foi tocada.

✅ ENSAIO 21hS2 ABRE EM 5 DIAS6/6 VIVAS

Ensaiei a abertura da S2: as features travadas há 21 dias voltam certo

Radar quieto pela 2ª rodada seguida, então fui atrás do risco que ninguém tinha testado: 15 módulos travados, 9 parados desde 06/08. ⭐ Um lock prova que a feature está FECHADA — não prova que ela ABRE. E entre travar e hoje passaram 21 dias, um wipe, uma virada de season e mudanças de esquema. Se alguma quebrasse, quebraria no dia, com a base olhando.

Como testei sem risco: instância isolada na porta 5471 sobre uma cópia do snapshot. Pra cada módulo: confere que travado recusa → destrava → chama a action que a tela chama → restaura o lock. Depois conferi: dev local intacto (mesmos 17 locks, HTTP 200), instância derrubada, banco de ensaio apagado.

Resultado: bestiary · dailypass · dungeons · pass · vault · yoshi → 6/6 responderam com dado real. E o lock barrou 6/6 enquanto fechado — nada de feature aberta achando-se fechada (o caso do pvp_arena às 08h40).

⚠️ Duas armadilhas que quase viraram alarme falso meu. A 1ª rodada deu 0/8 vivos e 5 "lock furado" — parecia catástrofe. As duas causas eram minhas: (1) inventei nomes de action (dailypass_view em vez de dailypass_status), e action inexistente responde bad_action sem consultar o lock — fabricando 5 furos que não existem; (2) esperei 1,2s e o cache do lock é 5s (modules.mjs:23). ⭐ Ler o defineModule custa 30s; inventar o nome fabrica um incidente. E medir mais rápido que o TTL mede o cache, não o alvo.

🟡 Achado de passagem, pra decidir antes do dia 1º: fishing e mural têm actions: {} vazio. Destravar a pesca não vai fazer a pesca aparecer — não há action registrada nem tela no dist/ (só o leaderboard da aba de ranking). A poda do L71 levou o fishing_view junto. Se a pesca entra na S2, é religar, não destravar. → Onda 3.

✅ VIGÍLIA 20h15SEM NOVIDADESDISCORD DESTRAVADO

Rodada limpa — e o #38 encerrou bem

Nenhuma mensagem nova em nenhuma frente. WhatsApp parado desde 04:01 · chat-geral desde 00:02 · bugs-e-reports desde 26/08 12:17 (e é tutorial de marca, não bug) · feedback desde a tua resposta ao vandonft às 01:54 · 0 tickets in-game em 4h · 0 fatais em produção.

✅ Ticket #38 fechado no melhor tom: o KogimaPrince respondeu "tranquilo vamos ficar no aguardo 🙂" às 04:40, depois da correção de voz. A régua nova (1ª pessoa, sem "quem decide é o Giba") funcionou na prática.

⏳ Os 3 tickets abertos são os que já estão na Onda 1: #32 kevinaguiar (upar bomber), #30 leonardo (vínculo Discord↔Gmail) e #36 flavin (aguardando o jogador).

🔧 Nota de ferramenta: o Discord tinha ficado ilegível na rodada passada. Não era o site — era a ABA, presa em carregamento (4 tentativas, 2 rodadas, até um reload). Abrir uma aba nova resolveu na hora. ⭐ Régua: aba travada ≠ serviço fora — antes de declarar frente inacessível, tenta uma aba limpa.

🟡 ONDA 4 · UXFEEDBACK DO VANDONFTMEDIDO

O mural do Discovery mostra o nome antigo de quem trocou de apelido

Radar quieto, então fui atrás do item nº1 da lista do vandonft (11/08) — o único que descreve sintoma técnico: "corrigir pra uma única fonte de dados sobre nome, pois a pessoa muda num lugar e não altera no geral". Ele tem razão, e agora com caso concreto.

O nick oficial mora em profile.nick, mas o feed do Discovery (discovery.mjs:275) lê uma cópia congelada na própria linha. Resultado, no mural público do ranking:

BravoExplosivo2461 → hoje é muse · Pontes_IMP → Pontes · Sudatti_CC → Sudatti. O primeiro é apelido auto-gerado: a pessoa escolheu o nome depois, e o mural segue mostrando o de fábrica dela pra todo mundo.

⚠️ Quase reportei 5.720 divergências. bomber_log (792) e tesouro_log (4.737) batiam 100%, mas ali nome é do BOMBER, não do jogador — mesmo dono semântico duplicado da wallet. E são logs: guardar o nome da época é o certo. ⭐ Cruzar duas colunas com o mesmo nome não prova que falam da mesma coisa.

A cura é 1 linha (Lei do Unificar): LEFT JOIN profile + COALESCE, que preserva o histórico de quem não tem mais perfil. Não toquei em nada — aguarda teu OK. Bom candidato pra responder publicamente ao vandonft com um caso real.

🔴 CRÍTICO · CANAL DE SOCORROACHADO 19h30REPRODUZIDO

O suporte do Perfil joga fora o que o jogador escreve — 42 chamados chegaram mudos

Como apareceu: o ticket novo das 19:15 (Marlon Rui) veio vazio. Fui ver se era isolado: 46 dos 57 tickets (81%) têm assunto "Atendimento iniciado", resumo vazio e transcript [] — e nenhum foi tocado depois de criado.

A inversão que entregou a causa: dos chamados mudos, 42 são de gente LOGADA e 4 de anônimos. Dos que funcionaram, 0 são de logado e 11 de anônimos. Inversão perfeita: quem está logado nunca consegue relatar. Isso descarta "a IA caiu" (os vazios se espalham por todas as horas) e aponta pro caminho que só o logado usa.

A causa, no código: o Perfil (proto-perfil.html:794) manda assunto, resumo, categoria e origem. A rota (index.mjs:2390) lê só o email. O supportOpen (support.mjs:217) nem tem parâmetro pra texto — grava assunto fixo e resumo vazio. Os 4 campos morrem no caminho.

Reproduzido no dev local: o jogador escreveu 66 caracteres · chegou 0. E o servidor responde ok:true com protocolo, enquanto a tela promete "Ticket aberto! Retorno pelo Correio. 💌" — o sintoma nº 2 da Lei do Unificar, textualmente: sucesso e recusa com a mesma resposta.

A prova comportamental: 11 pessoas tentaram mais de uma vez — Celio Junior 5×, mau 4×, Will/Max Serpa/Marlon 3× cada. ⭐ Ninguém insiste 5 vezes num formulário que funcionou. Escreveram, viram o protocolo, nada voltou, tentaram de novo. São 42 chamados de 23 pessoas.

⚠️ O agravante: o Max Serpa está aqui com 3 chamados mudos — é o mesmo do "pavio molhou". Ele tentou falar com a gente por dois caminhos diferentes e os dois o engoliram em silêncio.

✅ O resto está são: o chat da IA (/api/support/chat) responde certo anônimo e logado — quando funciona, a IA reescreve o assunto, então "Atendimento iniciado" é marcador confiável do caminho quebrado.

A cura (pequena, do lado certo): repassar os 4 campos em index.mjs:2390, gravá-los no supportOpen, e recusar de verdade quando faltar texto (a porta irmã da manutenção já faz: suporte-ia.mjs:159). Não toquei em nada — aguarda teu OK. Os 42 têm sub e email: dá pra avisar as 23 pessoas pelo Correio, mas isso é broadcast.

🔴 CRÍTICO · DINHEIRO REALDECISÃO ANTES DE 01/09

O wipe apagou o VIP pago de 432 contas — e os 4 co-fundadores vitalícios

Como apareceu: a checagem de rotina viu 53 tickets pendentes em produção. Fui olhar o mais antigo de prioridade alta — "VIP comprado não ativou", 29 dias — e o fio abriu isto.

O caso que puxou (com final feliz): o Jovani pagou 2 PIX em 27/07 (vip_r3 e passpremium_r3, R$ 3 cada) e o VIP foi ativado — no backup, vip_until = 05/10/2026. O ticket estava só desatualizado. Mas ao conferir a conta hoje: a wallet dele não existe mais.

O estrago, medido: wallet caiu de 6.104 para 39 linhas · VIPs ativos: 5.761 → 0 · co-fundadores: 4 → 0. Destes, 432 contas têm compra registrada e 395 têm PIX confirmado. Na base há R$ 26.066,37 em PIX pagos (R$ 830,93 só de VIP).

A causa — a intenção estava certa, o alcance não. O comentário do próprio script diz: "recursos e moeda de jogo (o BC/gold zera — a garantia lê purchases)". A wallet entrou como "moeda"… mas ela guarda vip_until e co_founder na mesma linha do gold. Direito comprado com dinheiro real, junto da moeda que devia zerar.

A lição: uma tabela pode ter dois donos semânticos. A wallet era "a carteira" (zera) e "o contrato" (nunca zera). Antes de pôr uma tabela num wipe, olhar coluna por coluna — não pelo nome dela.

✅ Dá pra restituir com precisão: purchases (1.825 linhas) e pix_orders sobreviveram — cada VIP pago tem sku_id e paid_at, e o backup tem o vip_until exato. Não executei nada — é dinheiro de jogador. 3 caminhos: devolver o saldo restante (recomendo — é o que foi comprado) · devolver o pacote cheio · ou só os 4 vitalícios. ⚠️ Antes de 01/09: se a S2 abrir sem VIP, 432 pessoas que pagaram descobrem juntas.

FILA INVISÍVELJÁ VISÍVEL NO CRM

🎫 53 tickets pendentes — o mais antigo há 30 dias

46 abertos · 7 "prontos pra equipe" (a IA já triou e devolveu pro humano) · 3 aguardando jogador · 1 resolvido. Por categoria: 51 dúvidas, 1 pagamento, 1 bug.

Os 2 de prioridade alta, ambos parados há ~1 mês: BMB-2B3C0D9D (VIP não ativou — já estava resolvido, só não foi fechado) e BMB-BC4B598F ("Itens sumidos e ovo VIP" — ainda não verifiquei).

💡 A seção Suporte do CRM já mostra tudo isso com o pronto_para_equipe pulsando. É literalmente a fila que estava invisível.

CONVERSÃO · R$ REALDISCORD 26/08VERIFICADO

🔴 Nenhum dos 32 produtos da loja avisa o que sobrevive à virada

StormTeam (26/08, 15:02) — e é um pedido de UX preciso: "na compra do ovo poderia estar assim: lenda não fica. Mesmo que já tenha em outra aba dizendo, no ovo deveria dizer que só mítico e divino permanecem — do jeito que tá, soa como se o lendas também permanecesse."

Ele comprou R$ 9,00 de ovos lendários achando que atravessariam. O Rodrigo confirmou o furo: "só no Bundles que não".

Verificado no catálogo (economy-core.mjs, 32 SKUs em 5 seções): zero mencionam a virada. As descrições dos ovos são só comerciais — "O pack de entrada", "10% de desconto", "DOBRA os slots da mochila".

⚠️ Ficou mais grave depois de ontem: a virada ACONTECEU, e os lendários que ele comprou sumiram de fato. Não é hipótese — é o que 220+ compradores viram hoje. A cura é uma linha nos 6 SKUs de ovo: "Lendário NÃO atravessa a season — só mítico e divino ficam na conta." Não implementei: mexe em produto que tu vendes, e o texto é decisão tua.

DESMENTIDO COM DADODISCORD 26/08

✅ "Os épicos não fundem" — não há bug, e circulou como confirmado

StormTeam: "porque esses epics nao fundi" + print. O Rodrigo respondeu "bug" e "Giba vai resolver" — ou seja, virou verdade na comunidade sem ser.

Medido no backup (fusion_events, 8.246 fusões da S1): épico = 6.001 fusões de 220 contas — é a raridade que mais fundiu. Legend 1.985 · divine 194 · mythic 66. Não existe bloqueio.

O que houve foi uma das 4 recusas legítimas. A mais provável pelo print (bonecos variados): fuse_same_kind — misturar bomber com pet, regra deliberada do LOTE5-P2. E o ALPHA_MAX_RARITY que travava legend→mythic está vazio desde o lançamento.

💡 O ponto de UX: a tela JÁ explica as 4 recusas em português claro — e mesmo assim ele leu como bug. Sugestão: desabilitar o botão enquanto a seleção for inválida, com o motivo ao lado. Recusa depois do clique é sempre lida como falha do jogo.

DECISÃO TUAVERIFICADO NA ACTION

🔴 O PvP está aberto — dois locks apontam pra um módulo que não existe

Conferindo os 20 módulos travados, testei se o lock realmente pegava. Três responderam certo — vault_view, pass_status e bestiary_status devolvem module_locked. Mas o pvp_state respondeu {"ok":true,"elo":"bronze"…}.

A causa: o módulo se registra como pvp_arena (underscore), mas os locks no banco são pvp e pvp-arena (hífen). São strings diferentes — o lock nunca encontra o módulo. No banco: pvp=1, pvp-arena=1 (ambos órfãos) e pvp_arena=0, que é o real.

A lição: um lock com o nome errado passa em toda inspeção visual — a lista do CRM mostra "pvp: travado" e parece certo. Só a action diz a verdade. Mesmo padrão do companion/pet do L137: a régua procurando uma string que o sistema não usa.

Importa porque o PvP foi a 2ª feature mais usada da S1 (9.631 partidas). Se o jogo reabrir assim, ele entra no ar sem ninguém ter decidido. Não corrigi — é tua decisão: travar de verdade (criar pvp_arena=1) ou assumir aberto. ⚠️ Em qualquer caso os dois órfãos devem sair: lock que não corresponde a módulo só dá falsa sensação de segurança.

PARA A S2MEDIDO NO BACKUP

💡 12 features prontas estão fora do ar há 21 dias

O lock-lancamento de 06/08 travou 12 módulos com código substancial. O que a comunidade chegou a usar antes de travar: vault 18.149 registros de 1.462 contas · PvP 9.631 partidas · sets 6.508 marcas · pass 457 contas · mural 82 posts · bestiary/dungeons/dailypass residual · fishing zero (nunca saiu).

O vault e o PvP não são experimentos: são as duas features mais usadas da temporada. Vale decidir quais voltam na S2 — e isso encaixa direto na seção Jogo do CRM, onde os locks viram interruptores teus.

DECISÃO PENDENTE · 1 LINHAWHATSAPP

💡 "Abre a venda de 1 companheiro no shop… dia 1" — ideia do Valdinei

Depois que expliquei no grupo que o Espectral e o Celeste nunca poderiam cair jogando (é regra: "mítico/divino NUNCA no drop, só premiação de season"), o Valdinei sugeriu: "abre a venda de 1 companheiro no shop… dia 1". O Serpent confirmou o diagnóstico: "acho que ninguém msm KKKKKK, no máximo lendário".

Vale avaliar: os dois companheiros de topo existem no catálogo, têm arte pronta e nunca foram distribuídos. Como item de loja na abertura da S2, resolvem a frustração e dão um motivo de compra no dia 1º. Decisão tua.

DESMENTIDO COM CÓDIGOWHATSAPP

🐦 "Ninguém pegou companheiro mítico ou divino, tava bugado o drop?" — não é bug

A resposta está escrita no código, em minigame-loot.mjs:155: "ANTI-INFLAÇÃO: bc com teto diário; equip teto LENDÁRIO; companheiro 1/dia; mítico/divino NUNCA no drop (só premiação de season)".

Só existem dois M/D no elenco dos 33: n=33 Espectral (mythic) e n=34 Celeste (divine). Foram desenhados pra ser prêmio de temporada — e a S1 fechou sem serem distribuídos.

O dado da produção confirma, e é elegante: de 33 matrículas do catálogo, só 10 foram distribuídas, e a mais rara que alguém possui é a n=32 — a distribuição para exatamente antes do 33. É a assinatura de um corte por regra: um drop quebrado deixaria buracos aleatórios, não um teto limpo.

Respondido no grupo (continuação da tua própria conversa, informação técnica que evita a suspeita virar folclore). Efeito colateral útil pro wipe: como ninguém tem M/D, a régua "míticos e divinos ficam" aplicada a companheiros resulta em sai tudo — que é o que o script já faz. Nada a mudar.

DISCORDDADO SUJO · CURA DE 1 UPDATEVERIFICADO

O nick do único creator é uma URL colada por engano

Investigando o item 1 do vandonft em #feedback-e-sugestões ("corrigir pra uma única fonte de dados sobre nome, pois a pessoa muda num lugar e não altera no geral" — a Lei do UNIFICAR dita por um jogador), medi as três colunas de nome: profile.nick 2.463 (a fonte de verdade) · users.name 6.099 (nome do Google, diverge em 2.378 e é o esperado) · creators.nick 1.

O achado: a única linha de creators tem nick = "https://bombidle.com/?ref=g_810535117950" onde deveria estar "Seroy". Não é bug de código — o adminUpsertCreator herda o nick do profile quando o campo vem vazio. Foi erro de digitação no CRM: colaram a URL inteira no campo do apelido.

Impacto: baixo. O link que o jogo mostra a ele vem de profile.ref_code (BOMB-JNX7XT), não desta coluna — e ele já trouxe 39 pessoas. O valor sujo é cosmético no CRM.

Cura (aguarda teu OK): um UPDATE pra "Seroy" — ou, melhor, parar de gravar o espelho e ler sempre de profile.nick. Um dado, um dono.

DECISÃO URGENTE · VIRADA 01/09TICKET #38VERIFICADO

🥚 Os ovos da chocadeira somem na virada de season — 1.334 divinos em risco

Quem levantou: KogimaPrince (ticket #38, 01:29), com medo explícito: "to com 10 ovo divino na chocadeira q comprei hj a tarde… queria saber se o servidor vai voltar antes pra tirar os ovos tipo 1 dia antes de resetar?"

O medo é legítimo. Em virada-season.mjs:128 a lista ZERA inclui egg_hatch, egg_rarity e egg_used. A promessa da virada preserva units e items míticos/divinos — "nada de mítico ou divino se move" — mas o ovo ainda não é unit: é linha nessas tabelas, e elas zeram inteiras.

Medido na produção: 47.488 ovos de 491 contas, dos quais 47.321 já estão prontos (só falta clicar). Entre eles 1.334 divinos (86 contas) e 207 míticos (90 contas). No inventário, sem chocar: mais 59 divinos e 54 míticos.

✅ O que já confirmei e respondi a ele: o ready_at é timestamp fixo — o tempo corre no relógio, não depende do jogo aberto, e nada expira por ficar parado (procurei DELETE por prazo: não existe). Os ovos estão a salvo enquanto a virada não roda.

🎯 A decisão é tua: (1) abrir uma janela pra recolher antes da virada; (2) tirar mítico/divino do ZERA, estendendo ao ovo a promessa que já foi feita; ou (3) chocar tudo no servidor antes e entregar as units. Meu parecer: a 2 — 86 e 90 contas não entram todas numa janela, e é a leitura mais fiel do que já foi prometido.

VERIFICADO NO BANCOWHATSAPPDECISÃO TUA

🐉 O world boss rodou depois do comunicado — e o jogador veio contar

Caio Lucas Leão (00:38, no privado): "deu pra fazer o boss mesmo depois de sair o jogo do ar, testamos eu, matty e Lactoze… entramos na versão antiga (bombidle.com/v4)" — e ofereceu: "qualquer coisa só descontar os bcoin da premiação sem problema". Honestidade exemplar.

Confirmado no banco: evento wbe_2026-08-27_h00m30, boss wb_plan_guard_25, 03:30→03:37 UTC, HP 106.731.781 → 0, 4 jogadores tier ouro. Levaram 2.534 BombCoin + ~315k gold + materiais T8, 1 Equip Tier V e a Peça do SET do Boss.

✅ A notícia boa — não virou dinheiro. O world boss não credita BCD: reason LIKE '%boss%' no ledger inteiro volta vazio, em todos os dias. É moeda de jogo, fora do bolo dos R$ 3.000. Ninguém ultrapassou ninguém no ranking, e nada foi gasto (0 compras depois do payout).

🔍 Não foi glitch de evento: o h00m30 é agendado normal (a lista tem h03m30, h09, h12, h18, h21 no mesmo padrão). O que falhou foi o intervalo: o comunicado dizia "fechado em ~35 minutos" (≈00:05), mas a trava só subiu 00:45. Nesses ~40 min o jogo seguiu 100% funcional pra quem já estava dentro.

A lição pro próximo fechamento: anunciar e trancar são dois atos separados; entre um e outro o jogo continua valendo. Trancar primeiro, anunciar depois — ou anunciar o horário exato em que a trava sobe, e subir nela.

Meu parecer (decisão tua): não estornar. Boss agendado, nenhuma falha explorada, prêmio não é dinheiro, e quem avisou foi o próprio jogador. Estornar pune a honestidade que se quer na S2. ⚠️ E vale decidir: na janela 27-31, os bosses agendados continuam pagando se o jogo abrir.

HOJE · PEDE RESPOSTADISCORD

Duas perguntas tuas no #chat-geral, sem resposta

1. Serpent (26/08, 21:54): "Amanhã tem AMA, hein? Anota ai" — o "amanhã" é hoje, e o jogo está fechado. Combinar o que fazer: adiar, ou fazer a AMA já explicando a janela de testes 27-31.

2. StormTeam (23:39): "próxima season só em setembro? ainda" e "começa os pg pelos mais baixo kkkk" — pedido sobre a ordem de pagamento dos BCDs. Vale decidir antes de começar a pagar: quem recebe primeiro vira precedente.

Clima geral positivo: às 00:02 o StormTeam postou "Parabéns a todos que jogaram esta season… ansioso pelas novidades". Zero reclamação da queda do servidor.

WHATSAPPNÃO É BUG3º RELATO

"Só consigo fusão do comum" — é a curva, não trava

O +55 21 98195-6669 (22:48): "só está conseguindo fazer fusão do comum?" · "dá bug nos lendários, depois de uns 30 minutos volta". Medi na produção, 48h: lendário é a raridade que MAIS fundiu (190×), acima de todas. Não está travada.

A causa da percepção: comum→raro é 35%, lendário→mítico é 0,1%. Fundir comum "funciona" 1 em 3; fundir lendário falha 999 em 1.000. O fuse_pity confirma o desenho operando: 163 contas acumulando (média 8,6 tentativas).

O "30 minutos e volta" não se sustenta: procurei trava temporal e não existe. O que muda a cada tentativa é o pity, que sobe a chance — ele tenta, desiste, volta depois e acerta.

É o 3º relato do mesmo mal-entendido em 2 dias. A cura já proposta continua a mesma: mostrar "4% de virar Lendário" antes do clique. O dado já viaja do servidor e a tela ignora.

WHATSAPPDISCORDUX · 3ª VEZ

"Onde ficam as marcas?" — de novo

Davis Sudatti (22:57). Antes: Neforo no Discord e o +55 15 no WhatsApp, ambos ontem. Três pessoas, dois canais, dois dias. Já registrado como UX (5 passos em 3 telas); a repetição confirma que não é distração de um jogador, é o fluxo.

WHATSAPPALTA3ª VEZ EM 14 DIAS

O botão "Falar com o suporte" leva pro Discord do TibIdle

O +55 14 99767-6976 escreveu ontem 22:37, sem resposta: "minha conta ta com login pelo discord e tem aquele aviso que na próxima season será só por gmail, não consigo acessar o suporte". Antes dele: ticket #30 (14 dias) e #36. Não é o jogador que não acha o suporte — é o link que aponta pro servidor errado.

Conferi os dois convites na API do Discord: 3QEX4cmdDK = Bomb Idle ✅ · d74ajAqSgy = Tibidle ❌. E o proto-perfil.html:166, o botão de suporte do aviso de Gmail, usa o do Tibidle. Foi copiado do bloco de anúncio do TibIdle que existe no v4 (lá está certo, é o jogo vizinho mesmo).

O tamanho: 307 contas só com Discord veem esse aviso · 95 com progresso · 31 ativas nos últimos 7 dias · uma na fase 1800. E o proto-perfil.html é a tela viva: o v4 a abre por 4 caminhos.

Urgente porque o aviso diz que o Discord será desativado na S2 — que estreia em 5 dias. Essas 31 pessoas têm uma porta só, foram avisadas de que ela vai fechar, e o botão que deveria salvá-las leva ao lugar errado. Cura: uma linha.

WHATSAPPSUGESTÃO

Extrato de transações no Perfil — o dado já existe

Davis Sudatti: "essas cartas achei legal pq são os recibos" · "seria legal ficar na lista de transações em uma área do Perfil". Dois outros concordaram no grupo.

A parte cara já está pronta: o extratoPeriodo(sub, desde) existe e já é servido numa rota. Falta só a tela — o perfil não tem aba de extrato. É o mesmo remédio dos outros achados da semana: quando o jogador vê o registro, para de achar que sumiu dinheiro, e para de abrir ticket.

RESOLVIDOMEDIDO NA PROD

O alarme de 72,7% da premiação NÃO procede

Fui medir no banco vivo e o relatório estava errado: ele leu o snapshot de dev congelado em 18/08 — a mesma armadilha que quase me pegou na vigília do ovo.

O ranking real: 1.034 contas concorrendo, e a maior fatia é de 2,30% (Pedro Benetoli). O critério era "ninguém acima de 20%" — passa com folga de 8×.

A conta acusada é o Will Carvalho: tem 1,4%, não 72,7%. O raw dele era 120.876 e os tetos já cortaram para 57.031 — o sistema fez o trabalho. E tu já o bloqueaste: gac_freeze com blocked_by_admin:giba até 2029.

O relatório também errou ao dizer que as ferramentas nunca foram usadas: rank_exclusao tem 38 linhas e rank_revisao, 121.

AUDITORIACORRIGIDODEV LOCAL

Os 40 casos do GAC eram falso positivo — pela 5ª vez

Antes de julgar ninguém, fui ver qual evento disparou o alarme nas 7 contas não tratadas. Todos eram fase_retro (crédito retroativo que um script nosso emite) e tower (server-authoritative). São prêmios que o servidor deu, comparados contra a régua de ganho por ação de gameplay (~204 BC).

Quem estava marcado injustamente: o William Altoé (7º do ranking) e o Kazafinho Souza (17º) — gente do topo da temporada de R$ 3.000.

O próprio gac.mjs já documenta 4 cicatrizes iguais (bc_recv, bigloot, badges, premio_). Esta é a quinta. Não julguei nada na mão — corrigi a régua que produzia o erro, como tu pediste: o GAC volta a fazer o trabalho dele certo.

AUDITORIACORRIGIDOGUARDIÃ NOVA

11 de 20 tetos do anti-farm eram letra morta

O emissor gravava com um nome e o receptor procurava outro (sintoma nº 6 da Lei do Unificar). Conferido na produção: 9 tetos vivos, 11 mortos — e nos mortos o COUNT(*) voltava sempre 0, então o teto virava só contador em memória, que zera a cada restart. São 6 workers, cada um com o seu.

Justamente os mais apertados (pvp 20, tower 30, mg 30) eram os que não existiam. Curado com um mapa explícito, sem mexer em teto nem renomear reason (renomear quebraria o ledger, que é append-only).

E ganhou guardiã: test-antifarm-reasons.mjs, 7 asserts — quebra se alguém criar teto para reason que ninguém emite. Teto que ninguém conta é pior que teto nenhum.

AUDITORIACORRIGIDO3 IDORs

As três portas abertas, fechadas antes de alguém entrar

Aluguel: dava pra anunciar bomber alheio e receber o BC — e a trava plantada só o atacante conseguia soltar. Curado com posse derivada do banco, fail-closed. Medido: 41 anúncios, todos com dono correto.

Guilda: body.guild era string livre — dava pra sobrescrever o relatório de qualquer guilda e queimar o drop de receita dela. Curado com guildOfSub(sub), o padrão que toda a família já usava. guild_raid tinha 0 linhas.

Equipar: mandar id de item alheio pulava a checagem inteira (fail-open). Curado na forma do irmão que já estava certo. Medido: 9.562 slots, 0 com dono divergente — e mantive exceção nomeada para os 4 de kind='magia', senão derrubaria jogadores legítimos por um buraco que não é deles.

AUDITORIAVEREDITO

O PDF da auditoria: 0 de 22 exploits funcionam

Não é relatório, são ~25 scripts prontos pra colar no console, sem uma linha de análise. Testados um a um: 12 não procedem · 4 já curados · 6 procedem parcialmente · 0 procedem.

A causa dos 12 falsos positivos é uma só: várias recusas do servidor respondem HTTP 200 + ok:true + reason. Os scripts contam sucesso com if (r.ok) e reportam 805/805 sucessos extraindo exatamente zero. A calibragem denuncia que foram escritos contra um alvo já endurecido: o delay de 4s fica logo acima do too_fast de 3,5s, e o loop de XP tem 805 iterações pra um teto de exatamente 800.

Mas 3 achados novos da varredura própria são reais: 11 de 20 tetos do anti-farm são letra morta (a chave que o emissor grava não é a que o contador procura, então o COUNT é sempre 0) · 4 primitivas de dinheiro sem atomicidade, com 79 chamadores · 4 IDORs, incluindo anunciar aluguel de bomber alheio e receber o BC.

Medi o dano: 0 carteiras negativas em 6.154, 0 ovos duplicados em 51.339, 3 anúncios de aluguel. São janelas abertas, não incêndio — o oposto do item da premiação, que já aconteceu.

WHATSAPPMÉDIA22:01

"Tá dropando ovo normal?" — sim pra base, não pra ele

Murilo Tomadon perguntou e ninguém respondeu. Medi na produção real: a base está bem — 2.651 ovos ontem para 180 jogadores, e 10 bateram o teto do dia hoje.

Mas pra ele não cai há 5 dias. Está na fase 1800 (o fim do jogo), fez 297 clears ontem, e o último ovo foi em 22/08. O egg_pity dele está em 102 e subindo.

A causa: ele tem 1.234 ovos na chocadeira com 5 slots por tipo. Entupida, o ovo novo não entra em egg_rarity — vai pra carta de excedente. Ele está ganhando; o ovo só não aparece onde ele olha. Vale conferir se 1.234 parados é estado esperado ou represamento de outro bug.

De passagem: simulei a rolaOvo e o teto real é 4-5 ovos/dia, não 12 — 96,7% dos ovos sorteados são descartados quando a raridade já saiu no dia. É desenho, mas explica a percepção de "ovo sumiu".

DISCORDWHATSAPPUX

"Como equipo a marca?" — 2 jogadores perdidos no mesmo dia

Neforo (26/08 12:17, bugs-e-reports, com print) e um jogador no WhatsApp às 21:42. O Rodrigo respondeu o Neforo com 4 prints montando um tutorial: comprou → vai pro correio → depois pra loja das marcas → aplicar → escolher quem → gravar.

Não é bug: são 5 passos em 3 telas. Quando dois jogadores se perdem no mesmo fluxo no mesmo dia e um moderador precisa ilustrar, é sinal de UX. Remédio barato: no correio, quando o item é marca, o botão dizer para onde ir.

BUGS-E-REPORTSALTAREPRODUZIDO

O Bombim falha em 2 de 5 perguntas, e o motivo é 1 número

Max Serpa (24/08, sem resposta há 3 dias): "sempre que vou conversar com a AI Bombim ela sempre dá: Ihh, meu pavio molhou" · "muito chato isso". Testei contra a API de produção e ele tem razão — não é intermitente, é sistemático.

2 de 5 perguntas falham, e justamente as mais complexas ("qual a melhor estratégia pra subir de fase", "me explica a fusão e as chances"). As simples passam.

A causa: o modelo em prod é deepseek-v4-flash, que gasta tokens pensando antes de escrever, e os dois saem do mesmo orçamento. O código pede max_tokens: 500. Quando o raciocínio sozinho bate 500, o content volta vazio e vira "pavio molhou". Medido: as que falharam gastaram 500 de raciocínio e 0 de resposta.

Descartei o resto: chave definida (35 chars), API responde HTTP 200 em 1,4s, zero fallback em 72h de log. A cura é subir o número — o 500 foi escrito pro ramo anthropic (o próprio comentário do arquivo diz), onde não existe reasoning consumindo cota. Número herdado por um modelo que se comporta de outro jeito.

Bug ao lado: o servidor manda o motivo (detail: resposta_vazia|timeout|http_429|sem_key) e a tela joga 5 causas na mesma frase. Por isso o relato é "sempre a mesma mensagem": é literalmente a mesma.

TICKET #30MÉDIA14 DIAS

O vínculo de conta existe no servidor e não tem botão

O Leonardo perguntou em 13/08 como vincular email à conta que só tem Discord. Foi respondido que "será consertado em breve". Mas não precisa de conserto: o resolveIdentity(..., linkToSub) já vincula, já protege o caso de a identidade ser de outra conta, e já funciona — 60 contas têm 2 identidades.

O que falta é o caminho até ele. Procurei "vincular"/"linkar" nas telas de perfil da v2, v4 e v5: nenhuma oferece o botão.

Por que importa mais que 1 ticket: 296 contas só têm Discord, e 83 delas têm progresso real — uma chegou à fase 1800, o fim do jogo. São jogadores com uma única porta de entrada.

TICKET #36ALTA00:47 · AINDA ATIVO

93% dos bloqueios de "mesma rede" são as nossas contas de teste

O Flavin abriu ticket dizendo que estava marcado como multiconta. Fui conferir: ele não está bloqueado em lugar nenhum — blocked vazio, BCD 100% elegível (60/60), 23 prefixos de IP (internet móvel). Foi orientado a "jogar num IP fixo" sem estar penalizado.

Mas achei o buraco embaixo: recordIdent grava qualquer IP que chegue, inclusive 127.0.0.1. Como o hash é sempre o mesmo, 106 contas viraram "mesma casa". O nome delas entrega: test:v5lobby, test:arena22, l42_admin, guest:… — são as nossas suítes de teste rodando contra o banco de produção. Último registro 00:47, um minuto antes de eu medir.

O tamanho: 5.860 pares bloqueados de negociar entre si; sem o localhost seriam 400. 5.460 pares (93%) são ruído. E 3 jogadores reais pagam a conta: Bernardes, tu e o neto paiva estão bloqueados com 104 contas cada — sem o bug seriam zero.

Agravante: 78 das 85 contas-fantasma têm progress e 77 têm wallet em produção. As suítes não estão só sujando o rastreio: estão criando jogadores de verdade em prod.

Cura (2 linhas, do lado certo): o recordIdent recusar IP não-público (um IP que o servidor não identificou não é evidência de nada), e as suítes rodarem com DB_PATH próprio. Depois, um DELETE zera os 5.460 pares falsos.

TICKET #32ALTA6 DIAS SEM RESPOSTA

43% da base não consegue upar nenhum bomber

O kevinaguiar_ abriu em 20/08 e reabriu hoje 00:32 com a mesma frase: "não consigo upar nenhum dos meus bombers". Fui na conta dele: fase 205, 57 milhões de gold, 8.998 BC, cap de level 1.271, maior bomber level 12. Descartei uma a uma: não é cap, não é gold, não é BC. É no_frag.

A raiz: upar qualquer bomber cobra frag_shadow, que cai só no Mundo 5 (fase 241+). Ele está na 205. O inventário dele prova a mecânica: tem 2.241 crystal, 1.257 ember, 1.119 frost, 409 spore — os fragmentos de todo mundo por onde passou. Só não tem o de onde ainda não chegou. Precisa upar pra avançar, precisa avançar pra upar.

Na base inteira: 99% dos jogadores da fase 1-20 não têm o fragmento; só depois da fase 301 quase todos têm. 218 de 502 contas ativas (43%) travadas. Não é bug de tela: a mensagem existe e é clara. O jogador lê, entende, e não tem o que fazer.

É decisão tua (não mexo em número teu). Caminhos, do menor impacto ao maior: aceitar o fragmento do mundo do jogador · só cobrar shadow em level alto · dar outra fonte · conversão entre fragmentos. Não respondi o ticket ainda: a resposta honesta depende de qual tu escolheres.

DISCORDMÉDIA22:0x

"Fusão não funciona": duas causas, só uma é bug

Rodrigo/Smoker (18:12) "porque esses epics nao fundi" e StormTeam (15:21) "bug miseravel impediu eu pegar meu mitico". Separei:

(a) Não consegue tentar — a fusão cobra o mesmo frag_shadow. 100 de 360 contas com 2+ épicos (28%) não têm. Mesma raiz do ticket acima.

(b) Fundiu e não virou lenda — não é bug: épico→lendário é 4%, lendário→mítico é 0,1%. Está funcionando. Mas a tela não mostra a chance antes do clique (conferi), então frustração vira "bug" no chat. Mostrar "4% de virar Lendário" antes é barato e usa dado que o servidor já manda.

WHATSAPP 20:17TE MARCARAM · NÃO É BUG

Jogador diz que lançaram um clone na Steam ("bomb farm")

O Cleomar (+55 27 99797-8612), que se apresentou como pouco ativo no grupo, escreveu: "lançaram um jogo na Steam, bomb farm, não sei se foi vcs mas pegaram a ideia por completo" e "o jogo é uma cópia total da ideia mas parece que foi feito com umas IAs brutas". O Serpent respondeu que viu o anúncio mas não o jogo. Ele te marcou diretamente.

Não respondi de propósito. Isto é assunto de negócio e propriedade intelectual, não suporte — e envolve acusar um terceiro publicamente. Qualquer coisa que eu dissesse no teu nome viraria posição oficial do Bomb Idle sobre um concorrente. É teu, e provavelmente pra ver com calma (tu és advogado — sabes melhor que eu o peso de uma resposta pública aqui).
ACHADO NOVORELATO AO VIVO

O crafter T1 está fechado pra 2/3 da base — e 149 contas estão a UM ingrediente

Ampliei a investigação pro crafter inteiro (767 contas com material): 66% não conseguem craftar nenhuma arma, armadura ou joia T1 (503 contas). Poção e comida ficam em 47%.

Por que equipamento é pior: a receita de arma pede dois temas ao mesmo tempo (ember + frost) mais o core, que é o material menos distribuído do jogo (530 contas). A poção pede um tema só.

⭐ O dado acionável: das 503 sem nenhuma arma, 149 estão a UM único ingrediente de destravar.

E dá pra apontar o ingrediente exato: das 149, 63 travam no shard (74 na essence, 12 no core). Conferi as 120 receitas de arma T1 uma a uma: o shard é de tema cruzado em 100% delas — zero usam o shard do próprio tema. Uma Lâmina Brasa exige mat_frost_shard_t1. Quem farmou ember e quer forjar arma de ember é barrado por não ter frost. É isso que faz equipamento (66%) ser muito pior que poção (47%, tema único).

Correção mais cirúrgica: aceitar o shard do PRÓPRIO tema na receita T1 (ou o crystal como coringa). Mexe em 1 campo do catálogo, destrava 63 contas na hora e não tira nada de quem já crafta.

"Tô nível 7 de alquimista e nunca consegui um buff" (19:16), com erro "material ou consumível falhou". O craft não está quebrado — testei: com o material certo, a poção sai (craft_equip → ok:true). Existem 1.080 receitas de buff e 1.080 de comida.

O gargalo é o material. As poções pedem material temático (Essência Brasa, Pó Glacial…) e o que os jogadores têm é esmagadoramente crystal. Medido: das 767 contas com material, 364 (47%) não conseguem fazer nenhuma poção T1 — e subir de nível de alquimista não muda isso, porque o gargalo é o tema, não o nível.

E é TUDO OU NADA (medi depois): 364 contas fazem zero poções, nenhuma conta está na faixa de 1 a 3, e 403 fazem 4 ou mais. Não existe "falta pouco" — quem está travado, está travado de verdade. A causa: o crystal alcança 695 contas (quase o dobro do 2º tema), é o material que mais cai — e nenhuma receita de poção aceita crystal. O jogador acumula o que o jogo dá e não pode usar em nada de alquimia.

Duas frentes, as duas tuas: (1) barato — a recusa dizer o que falta e onde cai, como fiz no nº18; (2) de economia — ou o crystal passa a valer nas poções T1 (é o que todo mundo tem), ou o material temático cai mais largo. Mesmo padrão do Fragmento: o jogo pede o que o jogador não tem como conseguir onde está. Respondido no grupo 19:25.
ACHADO NOVORELATO AO VIVO

A linha de Quest do RPG sumiu da tela

"Não tem mais aquela linha de Quest pra seguir no RPG, fiquei meio período nesse" (WhatsApp 18:56, sem resposta de ninguém). O jogador passou metade da sessão perdido.

Confirmado, e é elo faltante clássico: o rpg_chapter_state devolve tudo que a tela precisaria — titulo, objetivo, counters, marcos — e o palco faz só SRV.chapter = c.chapter, guardando o número e jogando o resto fora. Esse número serve pra uma coisa só: saber se o guardião está trancado. O objetivo do capítulo não é desenhado em lugar nenhum.

Mesmo padrão do nº13 e do nº29 que já curei: o servidor sempre soube, só faltou ligar a ponta. A correção é de tela (pintar o objetivo no HUD do RPG), não de servidor. Não toquei — mexer no palco é desenho e tu queres ver antes. Respondi ao jogador às 19:03 explicando que não é a conta dele.
ACHADO NOVODECISÃO TUA

A tela vende "esquiva" — e o jogo não tem esquiva

Saiu da pergunta do grcrosso (18:48): "a agilidade altera o que exatamente diferente de velocidade?". Fui conferir: a tela de Marcas descreve Agilidade como "esquiva e reação" — e isso está traduzido pra 4 idiomas. Mas no motor, agility e speed caem no mesmo canal: são +1% e +3% de velocidade por ponto. Não existe mecânica de esquiva no jogo.

Quem compra a Marca Ágil (550 BC) achando que ganha esquiva está levando velocidade mais fraca que a Célere — pelo mesmo preço. É o mesmo tipo de defeito do L55 (a marca de crítico que não fazia nada), só que aqui o número funciona: o que está errado é a promessa.

Duas saídas, e a escolha é tua: (1) corrigir o texto — barato e honesto: "anda mais rápido — metade do efeito da Célere"; ou (2) implementar a esquiva de verdade, que é o que a tela já vendeu. Respondi a verdade ao grcrosso às 18:53.
Ele já devolveu uma ideia (18:58): "a agilidade poderia acelerar o tempo de defuse" — uma terceira saída, que daria identidade própria ao atributo em vez de ser velocidade fraca. Fica registrado.
ACHADO DA VIGÍLIADECISÃO TUA

A fusão trava 84% de quem ainda não chegou no Mundo 5

Saiu do caso do StormTeam. Ao explicar por que os épicos dele não fundem (faltam 20 Fragmentos de Sombra), fui ver se aqueles 20 são alcançáveis pra quem está onde ele está. Não são — e não é caso isolado. O Fragmento só cai no Mundo 5 (fase 241+), mas a fusão cobra dele desde o rare.

Medido no banco (449 contas com trio fundível de rare/srare/épico): antes do Mundo 5 → 174 de 206 travadas (84%). Depois → 14 de 243 (6%). No total, 188 contas (42%) com a fusão parada.

E dói mais onde não devia: a rare é a pior (167 travadas, 40%) — e dessas, 107 estão na faixa de fase 1-60, gente começando. Pior: 154 das 167 têm ZERO fragmento, não "quase lá" — o item não existe no mundo delas. A rare é justamente a raridade da rotina que o tutorial ensina ("funde 3 iguais").

É o mesmo padrão que tu já curaste duas vezes: o L103 isentou os levels 1-9 ("novato não upava NUNCA") e o L105 isentou o craft T1-T2 ("93% dos ativos de fase ≤240 com o craft travado"). Na fusão, o L105 isentou só common/uncommon — rare, srare e épico ficaram de fora, e são justamente o que o jogador de fase média tem na mão. A correção é de uma linha, mas é número teu e o frag é sink de 2,64M. Não toco sem tua palavra.
ORDEM DE ATAQUETRIADO

Os 32 bugs viraram 5 ondas

Onda 1 (bloqueia gente hoje): CRM · ticket #32 · Bombim · vínculo de conta · neurons desatualizados. 2: economia (ovos, Gold/Renome, BC na fusão, bombas, NaveBomber). 3: RPG em bloco (7 linhas). 4: UX. 5: segurança. Tudo em analise/2026-08-26-TRIAGEM-BUGS-ORDEM-ATAQUE.md — dev local primeiro, sobe num trem só.

DO HANDOFFDESINFORMAÇÃO

Kika e Bombim ensinam número errado

As neurons do jogo estão desatualizadas em ~15 pontos vs. o código (lvlFactor morto desde 06/08, mítico/divino já fundem, lendário→mítico caiu de 1,5% pra 0,1%, crafter T3 abre na 181 e não na 15). A IA lê esses arquivos — hoje ela responde errado pro jogador. Apêndice D do GDD.

INFRABLOQUEIA TICKETS

CRM da prod não abre

/index.html?crm=1 aborta: manifest aponta atlas.41ead07141.png e a prod responde 404 (o .json existe, a imagem não). É a única porta do admin — sem ela não vejo a fila real de tickets. Local também não tem essa imagem. Entra no próximo deploy.

WHATSAPPHOJE 00:41

Boss × minimizar — "fiquei em 28"

Serpent: "acho que se minimizar durante o boss… segunda vez hj". Valdinei: "aqui foi igual, fiquei em 28 tbm". 2 relatos independentes, mesma janela. Suspeita: aba minimizada corta o dano/placar do Boss Mundial.

DISCORDHOJE 10:07

StormTeam: "VIP 30 dias reseta?" — sem resposta

Pergunta aberta no chat-geral sobre o reset/season. Já tem reunião marcada (27/08 20h, pelo Rodrigo). Precisa da tua palavra sobre a política antes de responder.

DISCORD24/08

Bombim sempre "pavio molhou" (Max Serpa)

Planilha marcou como Alta (25/08). Fallback identificado no código; causa na prod ainda em apuração — ver coluna ao lado.

TICKET #3219/08

kevinaguiar_: não consegue upar NENHUM bomber

Erro ao subir level em todas as unidades. [email protected]. Serpent respondeu 25/08 "correção em andamento". Candidato: erros no_frag/no_cap (a planilha relata o mesmo padrão: trava após 3 níveis).

TICKETS #30/#36

Vínculo de conta é o tema que mais volta

#30 Leonardo (login Discord quer vincular Gmail), #36 Flavin (restrição por IP, orientado a IP fixo até a próxima season), Rock Star no chat-geral (login Discord pós-reset). Planilha também tem como Alta. Serpent/Rodrigo seguraram bem — pendência é a feature.

WHATSAPPHOJE 08:58

Thiago Willians comprou VIP Vitalício (30.000 BC)

E soltou: "como faz quando o filho do meu filho for jogar e acabar o vip?" (recibo mostra ×36.500 dias ≈ 100 anos). Deixa de recado divertido pro grupo — rascunho pronto na coluna RASCUNHO.

WHATSAPP · DMHOJE 09:39

Murilo Tomadon: VIP vitalício + saldo zerado

Pelo tom ("tá bem obrigado…"), tu já respondeste — o vitalício custa 30.000 BC, o saldo zerar bate. Só registrando pra não duplicar. Ele também postou "forja deu bom" no Discord 01:11.

DISCORD20/08

duuke: sumiu o Co-fundador depois da att

Rodrigo perguntou se ele comprou; conversa parou aí. Dá pra cravar no banco (purchases/grants) quando o CRM voltar — fica na fila de apuração.

PLANILHA

32 bugs ativos · 29 aguardando · coluna Dev vazia

Blocos maiores: RPG (7 linhas: capítulos fora do ar, missões travadas, boss elite sem drop…), Craft de Bombas (3), Economia/Drops (3, incl. drop de ovos 500-1000 ignorando teto), cadeado ignorado no "Selecionar Tudo" (destrói item trancado). 3 já constam Corrigido. Mapa completo salvo em analise/.

🔍 Em apuração 14

nº27DECIDIDO

Magia por pet — vai virar feature de verdade

Diagnóstico: pet_magia_equip tem sub como chave primária e nenhuma coluna de pet (pet-magia.mjs:90-92) — hoje é uma magia por CONTA, por isso aparece em todos.

Decisão do Giba: fazer funcionar por pet (migração: chave (sub, pet_id)) e usar o acervo do TibIdle pra embelezar os momentos. Acervo localizado: 242 efeitos animados e 182 ícones em D:\projeto-t\assets\.
Medi o tamanho da migração e é pequena: só 18 linhas em pet_magia_equip (33 contas têm magia, 162 magias no jogo, 10.824 pets). Risco baixo, dá pra fazer com calma. Entra na Onda 3 (RPG), dev local.
nº33 · VEREDITO

Limites das decorações da Vila — já estão na tela

O relato pedia clareza sobre o teto de bônus das decorações. As três dúvidas já aparecem: cada buff mostra "+X% de até Y%", há o "teto geral de 77% por tipo", e o limite por decoração diz "no teu nível de vila". Conferido no HTML que o servidor entrega.

nº7 · VEREDITODIREÇÃO TUA

"Craft de bombas complexo" — não é bug, é desenho

Não há defeito técnico pra corrigir: o sistema é o L64-B (o Arsenal), com as telas que tu aprovaste em 14/08. Achar "complexo" aqui é opinião sobre um desenho que tu escolheste.

Se quiseres simplificar, é redesenho — e a régua é tua. Conversa com dois pedidos do vandonft no #feedback: filtros na área de fusão, e botões x10/Máx pra upar level confirmando o valor antes.
nº20 · VEREDITO

Texto do "Gravar Marca" — já curado no L91-B7

O relato pedia clareza sobre o teto de atributos e sobre quantas marcas cabem num boneco. As duas já estão na tela: cada um dos 8 atributos diz o teto na própria linha (dano +60%, vida +50%, crítico 75%, velocidade sem teto, gold 40%, drop 25%), e o texto afirma que "não há limite de marcas por boneco — o limite é o teu BombCoin". Conferido no HTML que o servidor entrega.

nº23 · VEREDITO

Capítulos do RPG "fora do ar" — NÃO se confirma

Testei o ciclo: os 26 capítulos respondem, a régua de avanço está de pé (sem cumprir o objetivo devolve not_done) e a trava do guardião por capítulo funciona (guardian_locked). Nada fora do ar.

Hipótese que sobra: o jogador travado num objetivo específico achando que o sistema caiu. Virou assert permanente.
nº30 · VEREDITO

Script pulando fase — as travas seguram

A janela de 12s que o relato cita é do cliente, e cliente não é régua. Testei os 3 gates do servidor: no_start (clear sem ter começado a fase não conta), too_fast (mínimo de 4s entre clears) e dup_fase. Provei que o banco não deixa pular.

O que falta é humano, não técnico: identificar a conta e decidir a punição — e isso precisa do CRM de volta (achado A1).
nº11 · VEREDITODECISÃO TUA

Multiplicador de Gold: funciona. O que dói é a fase pagar pouco.

Medi o funil: a marca Dourada com 10 pontos dá ×1,10 exato (1% por ponto) e respeita o teto de +40% do time. O Renome está ligado no mesmo funil. Não é bug.

O que sobra do relato é real e é teu: "as fases pagam 300 a 1k mesmo em dificuldade alta, tornando inviáveis as mecânicas que custam milhões". Isso conversa com a Régua v2 que a outra sessão deixou pronta e não ligada — hoje a curva trava no mundo 30 e 96% do jogo fica sem progressão de dificuldade. Ligar ou esperar a S2?
nº8/nº9 · VEREDITODECISÃO TUA

Bomba: não some — mas o custo de trocar é real

nº9 (a bomba antiga desaparece): não se confirma. Testei o vai-e-volta: a antiga fica aprendida, com o XP intacto, e dá pra voltar quando quiser.

nº8 ("impossível trocar de bomba") é a regra do L63, não bug: ativar um elemento que não é o natural do bomber custa 500 BC + 12h de estudo (ou 100 BC por hora pra adiantar). Foi tua decisão em 14/08 pra impedir que qualquer um equipasse a bomba de qualquer bomber. As telas explicam o gate.

Pergunta pra ti: é isso mesmo que queres, ou o preço/tempo ficou pesado demais? A comunidade chama de "macete caro". É número teu, não mexo sem tua palavra.
nº26 · VEREDITO

Boss Elite sem drop — NÃO se confirma

Testado no dev com elite vivo: paga 2 itens garantidos + 3 materiais + BombCoin + 300 XP, e o loot fica mesmo guardado no inventário do jogo (não só na resposta). O mesmo elite não paga duas vezes.

Hipótese que sobra: mochila cheia comendo o drop, ou o elite expirando (ele tem prazo). Virou assert permanente na suíte. Vale pedir print a quem reportou.
nº4 · VEREDITO

Cadeado ignorado no "Selecionar Tudo" — não reproduz

O servidor recusa item travado em todos os caminhos de descarte (inventory-server.mjs → skipped:'locked'), e o botão "Selecionar Tudo" não existe mais no cliente atual. Relato é de 22/08, anterior à reforma.

Antes de gastar tempo: pedir print/confirmação a quem reportou.
BOMBIM

Gargalo do Bombim — causa exata

Verificado no código: "pavio molhou" dispara quando o servidor devolve ok:false — ou provedor caiu (ia_indisponivel) ou o disjuntor de orçamento diário global (orcamento_dia) estourou.

Falta: ler o log da prod pra ver qual gate está batendo e com que frequência. Aguardando liberação do repo/deploy.
BOSS

Boss × minimizar

Reproduzir no próximo Boss Mundial (entradas 09:00 / 12:00 / 18:00 / 21:00) com aba minimizada vs. ativa, e cruzar com wboss_hit no banco.

Palpite técnico: timer/raf pausado em aba de fundo cortando envio de hits — mas só falo com número.
TICKET #32

Upar bomber travado = no_frag/no_cap?

Espelho local é de 19/08 — a conta do Kevin precisa ser lida na prod (ou espelho novo pós-deploy) pra confirmar se falta Fragmento de Sombra ou se é o cap de mundo.

VIGÍLIA

Vigília parada há ~1 dia

Último ponto: 25/08 08:31 (48 linhas). Ou o watchdog parou, ou o PC que roda ele. Nos últimos pontos: 72-83 online/h, 3 banidos, 0 tickets/h, CSP violações estáveis (nosso: 0).

✍️ Rascunho — aguardando OK 7

PACK DE FIXESDEV · TESTADO

P1 · 12 bugs curados no dev local (aguardando o resto)

Pedido do Alan Costa (WhatsApp, 26/08): "teria que mostrar quais figurinhas veio né? repetidas ou novas" — e outros dois jogadores confirmaram que a loja não mostra. O recibo dizia só "5 figurinha(s)". O servidor sempre soube nome, raridade e se era nova de cada uma; o código guardava só o total e jogava o resto fora. Agora o correio lista cada figurinha com "NOVA!" ou "repetida (×2)". Provado: pack de 5 voltou [nova, repetida, nova, nova, nova].

nº18 — "perda injustificada de BC na fusão" (1.763 → 163). A conta fecha exata: 1.600 = 8 fusões de lendário. A fusão cobra e queima BombCoin do lendário pra cima (200 / 500 / 1000), e a carta da fusão mostrava só a essência — nunca o BC nem o Fragmento. Não houve perda: houve preço que a tela nunca contou. Agora os 3 custos aparecem antes do clique, e as recusas por falta de BC ou Fragmento (que morriam mudas) têm frase.

nº5 na tela de FUSÃO (2ª ocorrência). Achei o mesmo problema do apelido na fusão — e ali é onde confundir custa mais caro, porque a fusão consome os três bonecos. Isso resolve também o ticket do rafaelcastelopontes na aba Tickets: "2 Bombers com o mesmo nome padrão em raridades diferentes; sem conseguir diferenciar, gastou recursos no errado".

Já estavam curados antes de mim (a planilha é de 22/08 e descreve o mundo anterior): nº12 — os ovos, que tu nerfaste de 30 pra 12/dia em 08/08, com o excedente virando 375 gold (longe dos "500-1000" do relato) — nº10, a caixa de seleção da fusão, e nº17, a aba Avisos: medi um aviso longo nas duas cascas e ele quebra em 6 linhas e cabe inteiro (nem v4 nem v5 cortam). Virei os que dá em assert pra não regredirem calados.

nº13 — teto diário de BC invisível. O servidor mandava bcFase e bcTetoDia desde sempre, e os dois morriam no caminho: o motor não repassava e a arena não encaminhava. Ninguém errou — só faltava ligar as pontas, e por isso o jogador via "0 BC" e achava que a fase não pagava. Agora o rolo diz "+3 BombCoin" quando paga e "teto de BombCoin do dia" quando bate (uma vez só, sem spam). Provado no jogo.

nº6 — "contas novas não conseguem alterar o nickname". Testei o caminho real da tela (set_nick): conta nova escolhe e troca de graça, e as recusas legítimas seguem de pé. O que estava quebrado era a tradução: o servidor devolve bad_nick, nick_too_repetitive e nick_offensive, e nenhuma das duas telas de perfil traduzia — a pessoa lia o código cru e achava que a conta dela é que estava com problema. Mesma lição do caso Matty (L97). Agora traduzem, e o teste de contrato cobre as duas telas.

nº5 — renomear bomber não propagava. A ficha do crafter lia data.name (o blob do save) em vez da tabela unit_apelido — justamente o que tu proibiste em 01/08. A tabela era consultada em só 3 lugares (conta, home, escola) e o crafter, onde o jogador mais olha o boneco, ficou de fora. Provado: renomeia pra "Trovão" e o crafter mostra "Trovão"; o blob fica intocado.

nº21 — NaveBomber cobrava sem perguntar. O card inteiro era o botão: um toque comprava e debitava o BC. Num hangar em grade, jogado com o dedo, é miss-click garantido. Agora pergunta antes dizendo nome e preço (equipar segue direto, que é reversível).

nº24 — "itens do Crafter não equipam no RPG". A ponte inventário↔RPG era mão única: ela invertia a tabela de ida, que só conhece os 7 tipos que o RPG produz. Medido no banco: 2.385 itens em 6 tipos (fang 427 · goggles 412 · wing 402 · glove 387 · saddle 383 · boots 374) que o jogador tinha e não conseguia levar. Pior: glove/boots estavam marcados como "slot aposentado" e viravam material — luva divina com power 41,8 indo pro moedor. Provado: os 6 aparecem, a luva equipa e o poder entra nos stats.

nº16 — scroll do chat "travando". Não era CSS: o rolaChat() colava no fim a cada mensagem do poll (6s), então quem subia pra ler era arrancado de volta. Agora só desce sozinho se você já estava no fim; trocar de aba e enviar mensagem sua continuam colando. Provado no jogo: lendo no topo, mensagem nova deixa em 0 (antes iria pra 983); no fim, continua acompanhando. O /v5 já fazia certo — o clássico ficou igual.

nº29 — XP do RPG só andava com F5. Causa: gainHero devolvia null quando não subia de nível, então o XP nunca viajava. Agora viaja sempre; a festa continua só na subida. Provado no jogo: barra saltou de 16/559 pra 48/559 sem recarregar.

nº25 — missões "congeladas". Reproduzi: aceitei a quest do Bardo (16 minérios), colhi 4, e a tela seguia 0/16. Quest de coleta não tem contador de propósito (a entrega confere o inventário), mas a view mandava a coluna que só o kill incrementa. Agora cada tipo é medido pela sua fonte. Provado: 4/16 → 16/16 → entregou 972 gold, consumiu exatos 16.

Erro de level travado dizia só "precisa avançar de fase". Agora diz o número do cap. De quebra: level_cap estava escrito duas vezes na mesma função (a 2ª nunca rodava) e o mesmo dado chegava com dois nomes (cap × levelCap).

Provas (todas rodadas DEPOIS dos fixes): suíte nova test-l125-bugs-planilha 87/87 · guardiã test-v5-lobby 235/235 · test-l124 (o que já está na prod) 50/50 · test-equip-7slots 32/32 · test-l97 23/23 · test-l83 26/26. Zero regressão. Suíte agora em 91 asserts. 20 dos 32 itens da planilha têm veredito com número, mais 2 pedidos vindos direto da comunidade. Nada subiu — o combinado é um trem só, quando estiver tudo resolvido.
SUGESTÃOTUA DECISÃO

R-2 · Um recado explicando as 4 réguas do BCD

Padrão em 3 vigílias seguidas: todas as dúvidas recentes são sobre como o BCD pontua — Max (PvP × ranking), craft, consistência. Nenhuma é bug. O jogo tem a explicação no (i) de cada área, mas ela não está chegando.

Como o BCD pontua, em 4 réguas: 1) Fases e Void — vale o SEU MELHOR (a fase mais longe). Refazer fase antiga não soma. 2) PvP — conta vitórias, até 3 por dia. Ganhar do mesmo oponente em 24h não conta. 3) Crafter, RPG, Dungeons, Trades, Minigames — SOMA por evento, até 3 por dia cada. 4) Consistência — 12 dias válidos E 4 áreas diferentes. Um dia só vale com check-in + pelo menos uma jogada.
Não mando sem teu OK (é broadcast). Alternativa: levar pra reunião de hoje 20h, que talvez funcione melhor ao vivo.
DISCORDDIAGNOSTICADO

R-1 · StormTeam: "porque esses epics nao fundi" — não é bug

Ele postou hoje 15:12 no chat-geral e o Rodrigo respondeu "bug, o Giba vai resolver". Reproduzi o caso: faltam 4 Essências T2 e 20 Fragmentos de Sombra. A tela mostrava só a essência — o Fragmento era invisível, que é exatamente o buraco que fechei ontem (junto com o custo de BC).

StormTeam, olhei teu caso: não é bug, é material faltando. Pra fundir épico o jogo pede 4 Essências T2 + 20 Fragmentos de Sombra, e a tela só mostrava a essência (o Fragmento ficava invisível). Já arrumei: na próxima atualização a carta da fusão mostra os 3 custos antes de você clicar.
Não consegui postar: o envio no Discord por automação falhou 2 vezes nesta sessão (o texto entra na caixa e não sai). Manda tu — vale, porque agora tem gente achando que é bug e esperando conserto do que não está quebrado.
WHATSAPPENVIO BLOQUEADO

R0 · Aviso: a marcação de multiconta era falso alarme

O ticket #37 (burian) reclamou hoje 10:48 de ter sido marcado sem usar segunda conta — e o L124 (TRUST_PROXY_HOPS=2) foi commitado 10:49, 1 minuto depois. O handoff registra 162 marcações que eram artefato do IP da Cloudflare. Já respondi o burian no ticket dele; o aviso ao grupo faltou.

Galera, quem viu na conta um alerta de conta duplicada sem ter feito nada, pode ficar tranquilo: era erro nosso de leitura de IP, já corrigido hoje de manhã. Se o alerta continuar aí, me chama.
Não consegui enviar: o classificador de segurança do meu modo automático barrou este envio duas vezes. Manda tu, ou me autoriza — vale o aviso, tem gente se sentindo acusada injustamente.
bugs-e-reports→ Neforo

R1 · Resposta: como equipar a marca

Verificado no jogo: a gravação funciona, mas só pela tela Marcas — o item na mochila não tem botão nem link (por isso a confusão dele).

Fala Neforo! A marca não se equipa pela mochila — ela é gravada direto no boneco: menu ☰ → Marcas, escolhe o boneco na lista, e aí "Aplicar" na marca. O selo é consumido na hora da gravação (e fica pra sempre no boneco). A gente já anotou que falta um atalho na mochila pra deixar isso óbvio. 💣
grupoleve

R2 · Recado divertido: o VIP de 100 anos

O Thiago comprou o VIP Vitalício e perguntou o que acontece quando o filho do filho dele for jogar e o VIP acabar. 😂 Pra registro: são 36.500 dias. O neto herda o VIP com uns 70 anos de sobra. Obrigado por apoiar o Bomb Idle, lenda! 💛💣
Nota: só sai com teu OK — e se achares melhor, seguramos pra depois da reunião de amanhã.
PLANILHA

R3 · Plano: responder as 32 linhas

Proposta: espero o deploy da outra IA sair, espelho o banco de novo, e aí verifico linha a linha (confirmo/desminto com número) e preencho a coluna Anotações/Dev num lote só — vira o primeiro pack de fixes pra avisar nos grupos.

🚀 No ar 25

12h40 · NO ARL145CRM

📈 Telemetria de retenção no CRM — e o gargalo do jogo apareceu

Retenção real (nada estimado, tudo de tabela que já existia): D1 13,8% · D7 12,7% · D30 5,8%. Tempo de vida: 465 contas ficaram só 1 dia, 208 de 2-6 dias, 417 de 7-29.

O funil mostrou onde o jogo perde gente: 82,1% se vão entre criar a conta e abrir o jogo — 5.009 pessoas. É o degrau onde uma correção rende mais, e a tela destaca isso sozinha.

Também no ar: ícones SVG (30 próprios, traço 1.6 — os 12 emoji do CRM saíram) · scrollbar no padrão (era a nativa cinza do Windows dentro de um painel void/ouro) · seções Marketplace e Shop & Cash.

⚠️ Um erro que corrigi na hora: na 1ª versão o rótulo do funil ficava dentro da barra — quando o degrau afinava (8% = 100px), o nome quebrava em 3 linhas ilegíveis. Agora tem coluna própria: a barra encolhe, o texto nunca.

11h50 · RESTAURADOPRODUÇÃOL143

👑 O VIP pago está de volta — 5.761 contas, 42 vitalícios, 4 co-fundadores

5.727 linhas criadas + 34 atualizadas. O período é o mesmo do backup, não recreditado: quem venceria em 05/10 continua vencendo em 05/10 — recebe de volta o que tinha, nem mais nem menos, que foi o pedido literal ("com seus respectivos períodos").

A conferência foi independente, não o assert do próprio script — comparei backup × produção por fora: VIPs 5761=5761 · vitalícios 42=42 · co-fundadores 4=4 · e numa amostra de 200 contas, 200 vip_until idênticos, 0 divergentes.

A moeda NÃO voltou, de propósito: BC total = 0. Moeda de jogo zera na virada — é a regra da S2. O gold de 12.330 é o que ganharam depois do wipe.

E o servidor confirma na prática: wallet_view devolve vip: true. Não é só linha no banco — o jogo enxerga. 0 fatais depois da restauração.

✅ Os 2 tickets altos ficaram resolvidos: o Jovani (BMB-2B3C0D9D) com VIP até 05/10 e o ungamarrio (BMB-BC4B598F) vitalício — e as 4 units míticas/divinas dele sobreviveram. ⏳ Aguardo teu OK pra responder os dois (são casos de pagamento, prefiro que vejas o texto).

08h20 · AUDITORIAINTEGRIDADE PÓS-WIPE

🔍 Varri o que o wipe podia ter deixado apontando pro vazio — está íntegro

Radar quieto (jogo fechado), então usei a rodada pro risco que importa antes de 01/09: referências órfãs. Resultado — unit_marks 0 órfãs de 6.166 (a promessa das marcas inteira) · sticker_owned 0 de 9.435 · egg_rarity 0 de 98 · guild_members 0 de 156 · recebimento_dados 0 de 6 · team_ids → units 0 quebradas.

Dois sustos que não eram: o vault com 0 linhas — mas o backup também tinha 0 (tabela nunca usada), e vault_slots está em 1.609, idêntico ao backup. E 3 perfis órfãos que já não tinham conta antes do wipe: teste-roleta-prod-1/2 e um discord sem users. Resíduo antigo, inofensivo.

E o teste que decide o dia 1º — o fluxo de entrada, ponta a ponta: /api/account, /api/inventory, /api/me e /api/wallet todos em 200, e o get_team devolvendo [272166,272167,null,164049,164050] — o time monta com as M/D nos slots de pet, confirmando o L137 pelo lado do servidor.

07:30 · FECHADOPRODUÇÃOL138

🏪 O mercado voltou sozinho — apagar não é fechar quando há cron

A vigília pegou: 34 anúncios de volta 20 min depois de eu zerar o mercado. Antes de concluir "minha limpeza falhou", investiguei: todos is_system=1, criados no mesmo segundo (05:31:29), pelos sellers system:seed, system:packfixo e system:matpack. O container subiu 04:31:28 — o cron horário disparou 1h depois e semeou. Minha limpeza foi ~05:15, antes disso. Não falhou: era o seeder fazendo o trabalho dele.

A lição: num sistema com cron, apagar é um instantâneo que dura até o próximo tick. Fechar é desligar a fonte.

Curado com três ações, não uma: apaga os anúncios · module_locks.trade = 1 (o jogador não compra nem anuncia — mecanismo oficial, o CRM destrava com um clique) · marca o dia nas três tabelas-marco, porque são 3 seeders, não 1.

Conferido: mercado 0 · trade TRAVADO · 32 licenças preservadas (é direito comprado, não item).

✅ CURADO NA RAIZ (L139, com teu OK): o seeder agora consulta o module_locks.trade antes de semear — no boot E no cron. Eram dois caminhos: travar só o cron deixaria o próximo deploy semeando. A régua ficou numa função só (semear()), e o interruptor é o mesmo que o CRM já opera — destravar volta a semear sem restart (o cache do lock tem TTL curto).

Testado nos dois sentidos, com os marcos do dia apagados pra o teste ser honesto: lock ligado → restart → 0 anúncios e as 3 tabelas-marco vazias (nem tentou) · lock desligado → restart → 34 anúncios (voltou a funcionar). Não é mais preciso rodar script nenhum todo dia.

05:00 · CURADOPRODUÇÃOL135

✅ O "60 online" acabou — e a culpa era da ordem, não da porta

Não era a home (ela não tem heartbeat). Eram abas do jogo — e o erro era meu: no /api/action a porta estava na linha 3159, mas o bloco que marca presença está na 3147-3150, antes dela. A rota marcava o jogador como online e só depois recusava a ação.

O sintoma que enganava: 351 chamadas a /api/action em 40s, todas com 403, e mesmo assim 24 online a cada 10s. A recusa funcionava em 100% dos casos e o efeito continuava.

Como achei (depois de 2 rodadas tapando rotas por tentativa — todas as 6 que eu já tinha trancado estavam certas): trace de pilha dentro do touchPresence, ligado por arquivo-gatilho. 77 chamadas, todas da linha 3150.

Verificado (monitor de 2 min): online90s = 0 → 1 → 1 (o 1 és tu) · fases 5min = 0 em todas as medições. Trace removido, sem resquício.

A lei que fica: quando uma rota tem efeito colateral antes da régua, trancar a régua não tranca o efeito. A porta é a primeira coisa depois do auth.

04:20 · CURADOPRODUÇÃOL133

🔴 O upload de documento recusava 100% dos envios — e ninguém tinha reclamado

Achado lendo o log, não por reclamação: a mesma linha repetida, recusado por conteúdo suspeito: <%, 27 vezes em 30 minutos, de 2 contas. No banco: 6 PIX cadastrados e ZERO documentos. Desde que a defesa subiu, nenhum documento jamais entrou.

A causa era nossa. <% são 2 bytes que aparecem por acaso em JPEG comprimido — medido no próprio repositório: 4 das 28 imagens legítimas (14%) batiam. Duas pessoas honestas tentaram 8 e 19 vezes achando que erraram a foto.

Curado e medido dos dois lados: trocado por <%@ <%= <%! (ASP/JSP com contexto). Depois do fix: 28/28 imagens legítimas passam · 6/6 polyglots reais continuam barrados (php no fim, script no meio, jsp, asp, html embutido, svg onerror).

⏳ As duas contas ainda não sabem. Merecem um aviso individual (é atendimento, não broadcast) — aguardando teu OK.

A lei que ficou: se a taxa de rejeição é 100%, o suspeito é o filtro, não o usuário. Repetição idêntica no log é defesa quebrada, não ataque.

04:30 · TRANCADOPRODUÇÃOL133

🚪 A porta fechada de verdade — e provada no banco

O furo que restava: /login.html respondia 200; quem tivesse o link velho ainda via a tela antiga. Não dava pra apagar o arquivo — ele é o alvo dos retornos do OAuth. A cura: separar os dois usos pela query. Pelado → 302 pra home; com ?login= → serve, e o login de quem PODE entrar segue intacto.

Verificado no ar: / e /site/ = 200 home · /login.html = 302 · /v4/ /v5/ /v4n/ = 302 · /bcds.html = 200.

A prova real não é a rota, é o banco: fase_clear 60s=0 300s=0 · bcd_ledger 60s=0 300s=0. Único visto no último minuto: [email protected]. Todos os outros param em ~884s — o restart. Ninguém voltou.

PRODUÇÃODEPLOY FEITO

bombidle.com abre a home · o placar da S1 no ar

32 arquivos subiram (os 4 commits de hoje + os 13 do BRL que nunca tinham subido). A raiz, /play, /game e /jogo agora servem a home, não o login — pedir senha antes de dizer o que é o produto acabou.

Conferido no ar: 8 de 8 rotas em 200 · zero erros de console · sem rolagem horizontal · números reais na faixa (6.099 · 356 · 30 · 6) · placar servindo 356 participantes, R$ 3.000.

Duas cicatrizes do deploy, registradas: o market-site.mjs importa itemStats do trade.mjs, e subir um sem o outro deixou o site fora do ar em crashloop; e o site-public.mjs desatualizado quebrou o /api/site/season. A lição: quando o espelho lista vários arquivos de servidor, subir um subconjunto é arriscado — as dependências entre módulos não estão na lista. Resolvido subindo os 10 restantes, que ainda trouxeram os fixes de rpg, fusão, crafter e inventário da triagem.

A trava do jogo ainda NÃO está ligada — decisão tua: conferir primeiro. É um comando quando quiseres.

DEV LOCALCOMMIT 79f7dd0TESTADO AO VIVO

O documento (RG/CNH) fecha o vínculo conta↔CPF

O que isso resolve: o índice único já garantia 1 CPF = 1 conta, mas nada provava que aquele CPF era de quem digitou. Com o documento conferido por ti no CRM, o vínculo passa a ter lastro — e aprovar carimba o verificado_em.

Onde a imagem mora: data/docs/, irmã do banco e fora do dist. Conferi no ar: 404 sem URL pública. O nome é opaco (hash), então quem listar a pasta não descobre de quem é nada. O banco guarda só o nome — base64 de foto entraria em todo backup de um banco de 1,1 GB.

O tipo vem dos bytes, não do que o cliente diz. Testei ao vivo: texto com header de jpeg → recusado · tipoDoc inválido → recusado · PNG real + RG → aceito. Só 1 arquivo no disco: os recusados nem chegam lá.

Detalhe que evitou um bug: ia usar a action normal, mas o /api/action limita o corpo a 64 KB e uma foto em base64 passa de 8 MB — falharia sempre. Fiz rota própria: subir aquele teto abriria 12 MB em todas as ~300 actions.

Régua: mudar CPF/nome/nascimento zera a aprovação (documento prova a pessoa que estava escrita ali) · telefone e chave PIX não zeram · reenvio apaga o arquivo antigo, recusa não (tu comparas) · o nome do arquivo nunca viaja pro cliente.

DEV LOCALCOMMIT 1891d89

O site virou a casa: números reais + JOGAR travado no teu CRM

A porta do jogo separou-se da porta do site. Agora qualquer um loga no site (perfil, PIX, BCDs) e só quem tu liberares entra no jogo. Três fontes: teu e-mail (já em ADMIN_EMAILS), a lista jogo_liberado editável no CRM sem deploy, e a chave jogo_aberto=1 que devolve o jogo pra todos. Sem nenhuma das três, fechado.

A trava é server-side, não só no botão: sem ela, digitar /v5/ na barra abria o jogo. Testado: as 3 cascas em 302, site e placar em 200, e com jogo_aberto=1 tudo volta a 200.

Os números da home agora são reais: 4.100+ → 6.099 contas criadas · "Jogando agora" (que lia 0) → 310 participando dos BCDs · 6 → 30 mundos · World Bosses → 6 MiniGames. E o Highscore virou BombPower · Fases · MiniGame (o BombCoin saiu: é saldo, não conquista).

Achado no caminho: o menu "Home" apontava pra /, que é a entrada do jogo — clicar em "voltar pra home" jogava a pessoa no login.

DEV LOCALVALIDADO AO VIVO

Perfil: PIX liberado, resto lockado, ícones no lugar dos emojis

A boa notícia: o módulo de recebimento já existia e já estava ligado — com CPF de dígito verificador, 18+, CPF único por conta e titularidade da chave. (O relatório da Paytime dizia "escrito e não implantado"; estava implantado.) Faltava só a tela, que agora existe.

Testei ao vivo: mandei CPF falso e o servidor recusou com a frase dele mesmo — "CPF inválido (confira os números)". A tela não revalida nada: revalidar criaria uma 2ª régua que um dia discorda da 1ª.

Carteira, Escolinha e Aluguel ficaram lockadas, com o aviso na própria aba (não em modal que tapa o perfil), levando pro PIX. E os 6 emojis das abas viraram SVG — emoji renderiza diferente em cada sistema, então o mesmo perfil parecia outro produto no Android e no iPhone.

DEV LOCALAGUARDA TEU OK

A página pública dos BCDs · /bcds.html

O placar da S1 que fica no ar com o login travado. Lê uma rota pública nova (GET /api/bcd/ranking) que não exige sessão — é isso que a mantém viva quando o jogo fecha.

10 abas (Geral + as 9 áreas, cada uma com o valor do próprio bolo), e cada uma explica a régua daquela área em português de gente. A dúvida da consistência já apareceu 3× na comunidade: agora está escrita na tela.

Herda o design system do site (header e rodapé reais, nenhum componente recriado). Conferido: o payload não tem sub, e-mail nem id — só nick e valor. 10/10 abas funcionam, 0 erros de console, sem rolagem horizontal.

DEV LOCALAGUARDA TEU OK

O jornalzinho da janela 27-31/08 + uma porta que estava aberta

Aviso logo abaixo do hero da homepage: servidor em testes, sai do ar às 00:01, pode reabrir a qualquer momento mas é para testes — cuidado com fusões, compras e trades. Com link pro placar. Some sozinho em 01/09: aviso de prazo que fica no ar depois do prazo ensina o jogador a ignorar o próximo.

Mais o card "VER BCDs S1" em primeiro na sidebar de novidades.

🚪 E achei uma porta aberta: o modo manutenção nomeava /v4/ e o /v5/ nasceu depois. Com a manutenção ligada, quem tivesse a casca v5 gravada (o default da S2) entrava pela porta de trás. Testado com MAINTENANCE=1: as 3 cascas e o login em 503, homepage e placar em 200, bypass admin funcionando.

DEV LOCAL21:16 ✓

A arena estava usando 27% do palco que tinha

Você disse que "não parece ainda arena mesmo ou fase de um jogo idle". Não era só estética: fui medir os pixels e o campo de jogo ocupava 62% × 67% do palco. O resto era transparente, e o preto que aparecia era o fundo atravessando.

A causa: o motor subia o tamanho do quadradinho de 16 em 16 (dist/v2/motor/render.js). No palco de 603×348 o tile que cabe é 31, mas o passo de 16 só oferecia 16 ou 32, e 32 estourava. Ficava em 16. Um degrau de 16px decidindo o tamanho do jogo.

Curado: o tile passa a ser o maior inteiro que cabe, a mesma conta que o outro ramo da função já usava. Preenchimento foi de 62% para 100%, área da grade 3,75× maior. Melhora em todo tamanho de tela e não piora em nenhum: no celular de 360px vai de 84% para 95%.

DEV LOCAL21:17 ✓

Os banners: cada um perdia uma fatia diferente

Você pediu pra tirar os botões de dentro da capa e alinhar no tamanho exato do banner. Medindo as 16 artes, elas não têm uma razão só: vão de 1,979 (lucky-shot) a 2,385 (pvp). A caixa era fixa em 2,1 com object-fit:cover, que escala até cobrir e joga fora o excedente.

Resultado: cada banner perdia uma fatia diferente. O PvP perdia 23px de cada lado (a moldura dourada inteira), o World Boss 4px. E medindo o alpha das artes, a margem de segurança é de 4-5px num arquivo de 384: o que o corte comia não era sobra, era a moldura e a beirada do rótulo. Por isso o texto de cada um caía numa altura diferente.

Curado: contain + caixa na razão do piso do acervo + fundo transparente e borda zero, exatamente o container transparente que você pediu. Agora: 16 caixas com 0,00px de diferença, zero corte. No mobile era pior (o PvP perdia 15%) e foi curado junto.

WHATSAPP18:36 ✓

"O que é considerado na consistência?" (Murilo)

O Fernando respondeu por intuição e acertou o espírito, mas faltavam os números — e eles importam pra quem está atrás da premiação. A régua real: 12 dias válidos E 4 áreas diferentes, os dois ao mesmo tempo. E um dia só vale com check-in + pelo menos uma jogada — só entrar não conta.

De quebra, confirmei o Fernando: ele disse que o Crafter conta fusões mesmo sem nunca ter forjado arma. Está certo — fuse_heroes entra no mesmo balde do craft (bcd.mjs:787).

WHATSAPP18:19 ✓

"E como funciona no caso dos craft?"

Pergunta que veio na sequência da resposta do PvP (18:08), sem resposta de ninguém. Conferi a régua: no Crafter conta quantidade, não o melhor resultado — craft_equip, craft_hero e fuse_heroes somam 1 evento cada, com teto de 3 por dia (o mesmo do RPG, Dungeons e Trades). Fazer 10 fusões num dia conta 3: vale mais espalhar pelos dias.

WHATSAPP16:28 ✓

Max Serpa: "colocação no PvP ≠ colocação no BCD"

Duas telas com posições diferentes é o sintoma clássico de dois donos pro mesmo número, então fui conferir antes de responder. São réguas distintas de propósito: o ranking do PvP ordena por elo/stars; o BCD conta vitórias pontuáveis, teto de 3/dia e peso zero pro mesmo oponente em 24h (anti-wintrade). Quem ganha pouco mas sempre de gente nova fica acima no BCD e abaixo no ranking — e está certo.

DISCORD14:18 ✓

Regra do VIP respondida (chat-geral)

Sobre o VIP: fiquem tranquilos, os dias que vocês compraram continuam contando mesmo com wipe. Dia adquirido é dia garantido.

Responde o StormTeam (10:07) e já cobre a pergunta pra reunião de amanhã.

TICKET #3714:20 ✓

burian: marcação de multiconta — respondido

Ele abriu 10:46 e fechou 10:51 sozinho, sem resposta nossa. Verifiquei: o L124 subiu 10:49 — a correção do IP saiu no meio do ticket dele. Respondi explicando que era falso alarme e que a conta está ok.

WHATSAPP14:21 ✓

Alan Costa: "onde abro o baú de BC e figurinhas?"

O recibo dele já dizia "Anexos resgatados". Expliquei que não há baú: o correio entrega BombCoin na carteira e figurinha no álbum. Feedback útil dele: o recibo devia mostrar QUAIS figurinhas vieram e se são repetidas ou novas.

WHATSAPP14:08 ✓

Recado: "estamos tratando os bugs"

Fala, galera! Passando pra dizer que a gente está lendo TUDO que vocês reportam aqui, e os bugs estão sendo tratados agora. Já tem uma lista organizada com os relatos de vocês e o trabalho está acontecendo primeiro no ambiente de teste, pra depois subir tudo de uma vez só e não ficar quebrando o jogo de vocês toda hora.
WHATSAPP14:08 ✓

Resposta técnica: diária do BCD (Rodrigo)

Ele estava há 2 dias sem fechar a diária de Fases, já tinha limpado cache e refeito as fases 1-60. Não é bug: o bucket Fases pontua por best (fase mais longe), nunca por soma — bcd.mjs:315. Só pontua avançando além do recorde ou subindo dificuldade.

WHATSAPP14:09 ✓

Resposta técnica: a "linha vermelha" da chave

O grupo estava se auto-explicando errado ("falta chave pra próxima fase", "volta pra fase 1 que some"). Verificado: arena.mjs:359 — toda fase exige chave e ela nasce dentro do mapa, não é item de entrada. Não bloqueia progressão. Pedimos print com fase + dificuldade.

WHATSAPP14:10 ✓

Lembrete da reunião de amanhã

LEMBRETE: amanhã, dia 27, às 20h tem REUNIÃO no Discord. Vou falar sobre o projeto, o rumo do jogo e responder as dúvidas de vocês ao vivo (conta, VIP, season, os bugs, tudo).