Pular para o conteúdo
Challenge 18
Live
DIÁRIODIÁRIO DE BORDO

24 set 2026

Equipe BlendOps
Cauê Carneiro, Fabrício Tosta, João Paulo, Júlia Clovandi, Matheus Silva
Data
Versão
v1.1
Contexto
FrilaChallenge 18 (Apple Developer Academy)

O dia foi de desatolar e depois de andar. Os nove PRs que estavam parados desde 23/09 entraram, o Sprint 0 de Backend fechou, e o ciclo principal do Sprint 1 passou a fechar de ponta a ponta: publicar, listar, candidatar, acompanhar, pedir o contato, registrar presença e cancelar.

O que foi feito

  • Os nove PRs foram mergeados: frila-docs #2, #3 e #4, que levam o contrato de

0.2.2 a 0.2.4, e frila-backend #4, #5, #7, #9, #11, #12 e #13. Ao fim da sessão não havia PR aberto em nenhum dos dois repositórios.

  • publicar_vaga está no ar (PR #16). A RPC grava a vaga, cria uma posição por

unidade pedida e deixa a mensagem na fila; quem decide quem é notificado é o motor do Sprint 2, que lê a fila. O contrato correspondente saiu como 0.2.5.

  • Nove cartões de Backend foram para Concluído: Cc2XYCi0 (cenários), oUwDEP8Q

(contrato), jSOAe6OL (perfil profissional), wtITHAPo (publicar_vaga), H6OOKVqK (lista e detalhe da vaga), 6ITEQC9v (candidatar), VxUae8ot (meus_turnos), rDkJ1ipX (contato_do_turno) e PHIf2fpu (check-in, check-out e confirmação). O 4qwQF0w6, do João Paulo, também fechou; o wSoltQDy (cancelamentos) está em revisão.

  • Dezoito RPCs no ar e o contrato em 0.2.11. A suíte foi de 232 para 540

asserções, em 22 arquivos.

  • O contrato mudou de endereço no frila-docs: Documentos/API/openapi.yaml virou

api/openapi.yaml. As referências do backend foram atualizadas (PR #15).

Decisões

  • O despacho não sai de dentro da transação da publicação. O cartão pedia também

net.http_post para disparar o despacho na hora; ficou de fora, porque a Edge Function despachar é do Sprint 2 e não existe, e pg_net numa transação de escrita falha em silêncio. A fila é durável: quando o motor existir, ele consome o que já estiver enfileirado, sem migração de dados.

  • vaga ganhou publicado_por, coluna que não está na Modelagem de Banco. Um

estabelecimento tem vários membros, e RF04 pergunta quem publicou; sem a coluna, o painel não sabe responder e o cancelamento não tem o que auditar. Quem precisa reconciliar é o documento.

  • Na v1.0 o modo seleção é recusado com campo_invalido e details: modo, e não com

selecao_sem_antecedencia, que é a regra das 24 horas e só volta a fazer sentido na v1.1. O contrato 0.2.5 passou a dizer isso por escrito, porque a 0.2.4 descrevia só a regra das 24 h e um cliente leria o erro errado.

Bloqueios

  • O push desta Bancada continua preso no Touch ID. Esperando: as notas de 22, 23 e

24/09 e a T-0025 atualizada. Enquanto ele não sair, o site não republica.

  • SUPABASE_ACCESS_TOKEN vencido, e com ele o advisor de segurança do frila-dev

segue sem ser verificado por ninguém. O conserto é supabase login, que abre navegador.

  • FRILA_DOCS_TOKEN não existe como secret do repositório. Na máquina o portão do

contrato compara com o original de verdade; na CI, confere só a integridade do espelho.

  • A lista de termos bloqueados espera a revisão da Júlia. É o que falta para o

ggEzge6h fechar — o código já está no main.

  • O frila-dev ficou seis migrações atrás do main e precisa ser atualizado.

Aprendizados

  • A máquina de desenvolvimento não reproduz corrida de commit; a CI reproduz. No

candidatar, as duas últimas confirmações simultâneas contavam as posições abertas cada uma no próprio instantâneo, nenhuma enxergava a escrita da outra, e a vaga terminava aberta com zero posições livres. RN19 estava certa e o fechamento não — as cinco primeiras asserções do teste de corrida passaram, e só a sexta falhou. O que salvou foi o teste checar também o efeito colateral, e não só a regra principal.

  • Dois PRs que passam sozinhos podem quebrar o main juntos. Os cenários de

desenvolvimento e o teste de cadastrar_estabelecimento escolheram o mesmo CPF válido. Depois do merge, o cadastro que o teste esperava aceitar passou a receber 409 documento_ja_cadastrado, e o arquivo terminava com 20 dos 27 testes planejados.

  • **A suíte roda duas vezes na CI, e a segunda é depois dos scripts que gravam de

verdade.** ciclo-completo.sh e corrida-cadastrar-estabelecimento.sh falam por HTTP e não têm rollback. Uma contagem absoluta sobre a tabela inteira passa na primeira execução e falha na segunda — e quem paga é mutacao.sh, que exige linha de base verde e se recusa a rodar. As contagens passaram a ser por id do cenário.

  • Mergear uma pilha de PRs com --delete-branch fecha os filhos. Apagar o branch-base

de um PR aberto o fecha, e PR fechado não pode ser reaberto nem ter a base trocada. Um deles não se perdeu porque o PR seguinte descendia dele; o outro teve de virar PR novo.

  • Portões medidos na máquina, com db reset antes: supabase test db com 540

asserções em 22 arquivos e resultado PASS; mutacao.sh com 74 regras cobertas e nenhuma sem cobertura; lint-conhecido.sh sem achado novo; ciclo-completo.sh com 52 asserções, cada recusa com o status HTTP conferido.

Próximos passos

  • zdCpLEVs — avaliar e perfil_publico, que está com o João Paulo. É a última peça

do ciclo antes do despacho.

  • O Sprint 2, o despacho. A fila já recebe as duas mensagens que o motor vai consumir.
  • 7gpPBgTH — contas de demonstração. A marca no banco e o isolamento nas leituras já

existem; falta a Edge Function, o segredo e as notas da revisão.

  • Aplicar no frila-dev as migrações que entraram hoje: ele ficou bem para trás.