Skip to content

fix(u6c): a medição contradisse os três documentos - #247

Merged
melgarafael merged 2 commits into
mainfrom
fix/u6c-achados
Aug 13, 2026
Merged

fix(u6c): a medição contradisse os três documentos#247
melgarafael merged 2 commits into
mainfrom
fix/u6c-achados

Conversation

@melgarafael

Copy link
Copy Markdown
Owner

O ensaio U6-c rodou com a v1.3.0 e o stable publicados, e o resultado contradisse o que estava escrito no runbook, no CHANGELOG e na doutrina. Os três mudam aqui (R6).

O achado: com stable existindo, a primeira execução do update.sh troca o worker (digest bate com a release) mas o deixa sem pinAPP_IMAGE=…:1.3.0 e WORKER_IMAGE ausente. O app fica numa versão e o worker seguindo um canal móvel; na próxima release o stable se move e um up -d levaria o worker sozinho. É o que o invariante 3 existe para impedir.

A instrução ("rode duas vezes") sobrevive aos dois ensaios, mas por motivos diferentes — e a razão importa para quem lê.

O detector ganhou o aviso correspondente, provado em 3 casos (aviso só em tag móvel sem pin).

🤖 Generated with Claude Code

https://claude.ai/code/session_01RKm2XcTcfgi1vdMcDYSRWa

…aqui (R6)

O U6-c rodou com a v1.3.0 e o canal `stable` publicados. As quatro respostas:

1. O worker TROCOU numa execução só: local `7f53521f` → `deskcomm-worker:stable`,
   `sha256:3fe292cad2bd…`, `revision=9bd59e93`, `version=1.3.0`. O digest bate com
   o registrado no corte da release.
2. **Mas ficou SEM PIN.** `.env` com `APP_IMAGE=…:1.3.0` e `WORKER_IMAGE` ausente:
   o app pinado numa versão e o worker seguindo um canal móvel. Na próxima release
   o `stable` se move e um `up -d` — com `pull_policy: always`, o default de tag
   móvel — levaria o worker sozinho para a versão nova enquanto o app fica na
   antiga. É mistura de versões que acontece SOZINHA, e é o que o invariante 3
   existe para impedir.
3. Detector: exit 0.
4. O rollback NÃO produz mais a imagem local disfarçada de registry — com `stable`
   existindo o Compose puxa em vez de construir. O efeito colateral do U6-b some.

O que estava escrito e ficou errado, corrigido no mesmo commit:

- **runbook §5.0** dizia "a primeira execução NÃO conserta". Passou a mostrar as
  DUAS medições lado a lado: sem `stable` publicado ela não traz o worker; com
  `stable` ela traz mas não pina. A instrução ("rode duas vezes") sobrevive às
  duas, mas o motivo é diferente, e a razão importa para quem lê.
- **CHANGELOG** dizia "pode não trocar o agente". Passou a dizer o que o operador
  precisa saber: a primeira traz o agente e deixa a versão dele solta; a segunda
  fixa. Sem jargão de tag ou canal.
- **doutrina**, item 11 do checklist: registra que apagar tag de pacote exige
  `read:packages`/`delete:packages`, que o token padrão do `gh` não tem — medido
  no corte da 1.3.0, onde o item ficou pendente por 403.

E o detector ganhou o aviso que faltava: worker publicado mas em tag MÓVEL sem pin
no `.env` não é o incidente (exit continua 0), mas é o estado que a primeira
execução produz e que a doutrina proíbe. Um aviso em cinza-claro era pouco.
Provado nos três casos — aviso=1 só em `:stable` sem pin; 0 em tag imutável e 0
depois da segunda execução.

Uma correção de método: a primeira tentativa do U6-c foi invalidada por defeito do
MEU ambiente, não do produto — o baseline exige os schemas `auth`/`storage`/
`extensions` e o update abortava neles. Passei a usar o mesmo prelude de stubs que
`scripts/test-db.sh` aplica no job `invariants`; com ele o baseline da época aplica
com ON_ERROR_STOP=1 e zero erros. Sem isso, o ensaio estaria medindo o ambiente.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RKm2XcTcfgi1vdMcDYSRWa
@vercel

vercel Bot commented Aug 13, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
deskcomm-crm Error Error Aug 13, 2026 11:39pm

Request Review

@ecc-tools

ecc-tools Bot commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

ECC bundle files are already tracked in this repository. Skipping generation of another bundle PR.

…mpo mostrou

Primeira aplicação em instalação real. A produção reproduziu o U6-c com exatidão,
que é o que dá valor ao ensaio: worker de 31/07 (fb42e47c, local) → :stable na
1ª execução, sem pin, exatamente como previsto → 1.3.0 pinado na 2ª.

/api/v1/health saiu de "0.1.0" para "1.3.0, healthy". De fora da VPS: HTTP 307,
com supabase/redis/waha ok.

Nada se perdeu, medido item a item: 48.607 arquivos no volume WAHA antes e
depois, sessão noweb presente, 4 volumes, nenhuma chave do .env sumiu (39 → 43,
as 4 novas são as de imagem). O backup precedeu tudo e foi verificado ANTES de
qualquer escrita: 11 MB, gunzip -t íntegro, 69.523 linhas, 145 CREATE TABLE.

O código chegou, e a prova é por hash, não por data: os arquivos que os 9 commits
tocaram têm SHA-256 idêntico na tag v1.3.0 e dentro da imagem que a produção
roda. "A imagem é de hoje" seria proxy; hash é o artefato.

**O que só o campo mostrou:** o pin do WAHA não alcança instalação legada. O .env
do parque tem `WAHA_IMAGE='devlikeapro/waha'` — sem tag, gravado pelo install
antigo — e o .env vence o default do compose. O update.sh não reescreve essa
chave, então a instalação segue puxando :latest a cada dc pull, recebendo
qualquer versão que o upstream publique sem ninguém testar. É o invariante 4
sendo violado por um resíduo que a remediação não limpa, e é o MESMO padrão do
defeito que o install.sh já teve — o .env vencendo o compose —, agora do lado de
quem já instalou.

Deixado sem conserto de propósito: reescrever WAHA_IMAGE num .env alheio troca a
versão do WhatsApp de uma instalação em produção. Isso merece decisão e ensaio
próprios, não um remendo no fim de uma remediação que deu certo.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RKm2XcTcfgi1vdMcDYSRWa
@ecc-tools

ecc-tools Bot commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

ECC bundle files are already tracked in this repository. Skipping generation of another bundle PR.

@melgarafael
melgarafael merged commit c9f368d into main Aug 13, 2026
12 of 13 checks passed
@melgarafael
melgarafael deleted the fix/u6c-achados branch August 13, 2026 23:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant