24 set 2026
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_vagaestá 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.yamlvirou
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.
vagaganhoupublicado_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_invalidoedetails: 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_TOKENvencido, e com ele o advisor de segurança dofrila-dev
segue sem ser verificado por ninguém. O conserto é supabase login, que abre navegador.
FRILA_DOCS_TOKENnã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-devficou seis migrações atrás domaine 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
mainjuntos. 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-branchfecha 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 resetantes:supabase test dbcom 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—avaliareperfil_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-devas migrações que entraram hoje: ele ficou bem para trás.