Pular para conteúdo

v0.3.0 — a origem declarada, e a barra que não mente

Decidida por: pessoa alocada ao papel de Product Owner, em 2026-09-01 PR de release: a abrir (development → main) · Merge/deploy: pendente Aceitação que a sustenta: sprint 026, confirmada em 2026-09-01

Por que esta release existe agora

Porque o domínio próprio não pode ser ligado sem ela. A v0.2.0 não conhece THE_BAND_ORIGENS_EXTRAS: publicar app.theband.dev contra ela entregaria um endereço que responde 200 no HTTP e recusa a conexão viva — a página abre, nenhuma tela atualiza, e não aparece erro. É a pendência P1 da 050, e é exatamente o defeito que a 054 existe para não introduzir.

A ordem, então, é: esta release primeiro, o §9 do runbook depois.

O que embarca

Entregável PR Estado na aceitação
A barra de /syncs deixa de dizer 100% durante a coleta, e a fase de quadros ganha linha na tela #642 defeito de produção (osdef.defect), fora do escopo do sprint 026 — registrado, não classificado por critérios
A origem das telas vivas passa a ser declarada; o runbook ganha a ordem do domínio; a medida do socket vira script #647 feature 054 — aceitação PENDENTE, ver abaixo

Documentação, sem efeito em produção: o fechamento do sprint 026 (#645), o back-merge com a regra do bump (#646), o RETOMAR (#643) e duas specs de backlog (#644).

A exceção, declarada

O modelo de registro de release diz que só entregáveis aceitos embarcam. A 054 embarca sem aceitação, e a razão é estrutural, não pressa:

Dois dos critérios dela — o socket aceito nos dois endereços (SC-002) e a origem estranha recusada (SC-003) — só podem ser medidos em produção, com o domínio no ar. E o domínio só pode subir contra uma versão que conheça a variável nova. Exigir aceitação antes do release deixaria a feature permanentemente inavaliável.

É a mesma forma da 050, que também mediu depois de publicar. O que torna a exceção legítima é estar escrita, com o que a fecha:

A aceitação da 054 acontece depois do §9, com scripts/medir-enderecos.sh rodado nos dois endereços. Enquanto isso não acontecer, esta release carrega código cujo comportamento em produção não foi observado — e o que está provado é o lado testável: 23 testes, incluindo os que reprovam se a ausência de declaração passar a liberar.

O que ficou de fora, e por quê

O que Por quê
050/US1 — o endereço estável não aceita: AS4, AS5 e SC-001 sem evidência. Os três se resolvem cronometrando esta release com uma sessão aberta
050/US2 — os dados sobrevivem não aceita: o ensaio de restauração em produção nunca aconteceu, e o destino do backup não foi conferido. Primeira da fila do sprint 027
054/T011, T012, T014 marcos de pessoa — DNS, painel, e o encerramento da P1 depois de medir

Como medir esta release quando ela subir

Esta é a oportunidade de fechar a 050/US1, que caiu por falta exatamente destas três medidas:

  1. abrir uma sessão antes do deploy e conferir, depois, que ela continua valendo (AS4);
  2. cronometrar a janela entre a última resposta da versão antiga e a primeira da nova (AS5, SC-002 da 050);
  3. cronometrar o percurso de abrir o endereço, entrar e ver um painel, de uma rede que não é a de desenvolvimento (SC-001).

Sem alguém com um relógio no momento do merge, a 050/US1 continua não aceita — não por defeito, por falta de medida.

O que o CD fez

Merge/deploy: 2026-09-01, com merge commit (b0fe177) — e não squash, que é a correção da L92 aplicada já nesta release.

Passo Evidência
imagem ghcr.io/the-band-solution/theband:v0.3.0, publicada pelo CD com conclusão success
tag git v0.3.0 → b0fe177
delivery webhook aceito; contêiner novo de pé às 20:04, antigo encerrado às 20:10

Do log do boot, que confirma três coisas de features anteriores:

migrações aplicadas.
já existe administrador — nada a criar.        ← 052, idempotência em produção
base de conhecimento carregada: 120 artefatos
Running TheBandWeb.Endpoint with Bandit 1.12.5 at :::4000 (http)

O domínio próprio, no ar

https://app.theband.dev passou a atender em 2026-09-01, não pelo Let's Encrypt: a emissão falhou sem causa diagnosticada, e o caminho usado foi o certificado de origem do Cloudflare com Full (strict). Está registrado no §9-B do runbook, inclusive o que ele deixa em aberto — a renovação deixa de ser automática.

A medida que fecha o SC-002 da 054, com os dois endereços conferidos separadamente:

endereço tela http simples socket, origem própria socket, origem estranha
https://app.theband.dev 200 em 0,96s 301 400 (aceita) 403
https://theband.5.189.161.85.sslip.io 200 em 0,85s 301 400 (aceita) 403

scripts/medir-enderecos.sh saiu 0 nos dois.

E o certificado que o navegador vê em app.theband.dev: CN=theband.dev, emissor Google Trust Services — o Universal SSL do intermediário, publicamente confiável.

A P1 da 050 foi encerrada por esta release (pendencias.md).

O que esta release NÃO mediu

As três medidas que a 050/US1 espera — sessão sobrevivendo ao release (AS4), janela de indisponibilidade (AS5) e percurso de menos de dois minutos (SC-001) — continuam sem evidência. O merge aconteceu sem alguém com um relógio, que era a condição escrita aqui antes de ele acontecer. A #620 segue não aceita, e a próxima release é a próxima chance.