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:
- abrir uma sessão antes do deploy e conferir, depois, que ela continua valendo (AS4);
- cronometrar a janela entre a última resposta da versão antiga e a primeira da nova (AS5, SC-002 da 050);
- 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.